From a308955c05fbff51d4c8cdf2496ed39c0fd07e2f Mon Sep 17 00:00:00 2001
From: 1gtm <1gtm@appscode.com>
Date: Wed, 18 Dec 2024 07:16:17 +0000
Subject: [PATCH] Prepare for release 0.1.0-v16

ProductLine: Stash

Release: v2024.12.18

Release-tracker: https://github.com/stashed/CHANGELOG/pull/77
Signed-off-by: 1gtm <1gtm@appscode.com>
---
 go.mod                                        |   22 +-
 go.sum                                        |   46 +-
 vendor/github.com/ghodss/yaml/.gitignore      |   20 +
 vendor/github.com/ghodss/yaml/.travis.yml     |    7 +
 vendor/github.com/ghodss/yaml/LICENSE         |   50 +
 vendor/github.com/ghodss/yaml/README.md       |  121 +
 vendor/github.com/ghodss/yaml/fields.go       |  501 ++++
 vendor/github.com/ghodss/yaml/yaml.go         |  277 ++
 .../gorilla/websocket/.editorconfig           |   20 +
 .../github.com/gorilla/websocket/.gitignore   |    1 +
 .../gorilla/websocket/.golangci.yml           |    3 +
 vendor/github.com/gorilla/websocket/LICENSE   |   27 +
 vendor/github.com/gorilla/websocket/Makefile  |   34 +
 vendor/github.com/gorilla/websocket/README.md |   36 +
 vendor/github.com/gorilla/websocket/client.go |  444 +++
 .../gorilla/websocket/compression.go          |  153 +
 vendor/github.com/gorilla/websocket/conn.go   | 1267 +++++++++
 vendor/github.com/gorilla/websocket/doc.go    |  227 ++
 vendor/github.com/gorilla/websocket/join.go   |   42 +
 vendor/github.com/gorilla/websocket/json.go   |   60 +
 vendor/github.com/gorilla/websocket/mask.go   |   59 +
 .../github.com/gorilla/websocket/mask_safe.go |   16 +
 .../github.com/gorilla/websocket/prepared.go  |  102 +
 vendor/github.com/gorilla/websocket/proxy.go  |   86 +
 vendor/github.com/gorilla/websocket/server.go |  389 +++
 .../gorilla/websocket/tls_handshake.go        |   18 +
 vendor/github.com/gorilla/websocket/util.go   |  298 ++
 vendor/github.com/rancher/norman/LICENSE      |  177 ++
 .../rancher/norman/clientbase/common.go       |  407 +++
 .../rancher/norman/clientbase/ops.go          |  377 +++
 .../rancher/norman/httperror/error.go         |  129 +
 .../rancher/norman/types/condition.go         |  121 +
 .../rancher/norman/types/convert/convert.go   |  280 ++
 .../rancher/norman/types/convert/ref.go       |   11 +
 .../rancher/norman/types/convert/transform.go |   45 +
 .../norman/types/convert/value_set_string.go  |   18 +
 .../norman/types/definition/definition.go     |   45 +
 .../rancher/norman/types/encoder.go           |   32 +
 vendor/github.com/rancher/norman/types/id.go  |   24 +
 .../github.com/rancher/norman/types/mapper.go |  178 ++
 .../rancher/norman/types/reflection.go        |  510 ++++
 .../rancher/norman/types/schema_funcs.go      |   73 +
 .../rancher/norman/types/schemas.go           |  407 +++
 .../rancher/norman/types/server_types.go      |  238 ++
 .../rancher/norman/types/slice/contains.go    |   22 +
 .../github.com/rancher/norman/types/types.go  |  171 ++
 .../rancher/norman/types/values/values.go     |  111 +
 .../rancher/rancher/pkg/client/LICENSE        |  178 ++
 .../v3/zz_generated_aci_network_provider.go   |  238 ++
 .../management/v3/zz_generated_action.go      |   12 +
 .../zz_generated_active_directory_config.go   |   86 +
 ...d_active_directory_test_and_apply_input.go |   16 +
 .../management/v3/zz_generated_adfs_config.go |   52 +
 .../v3/zz_generated_aes_configuration.go      |   10 +
 .../management/v3/zz_generated_affinity.go    |   14 +
 ...enerated_agent_deployment_customization.go |   14 +
 .../zz_generated_aks_cluster_config_spec.go   |   76 +
 .../v3/zz_generated_aks_node_pool.go          |   42 +
 .../management/v3/zz_generated_aks_status.go  |   14 +
 .../v3/zz_generated_alidns_provider_config.go |   14 +
 .../management/v3/zz_generated_answer.go      |   16 +
 .../v3/zz_generated_app_condition.go          |   20 +
 .../v3/zz_generated_attached_volume.go        |   10 +
 .../management/v3/zz_generated_audit_log.go   |   12 +
 .../v3/zz_generated_audit_log_config.go       |   20 +
 .../management/v3/zz_generated_auth_config.go |  128 +
 .../v3/zz_generated_auth_config_conditions.go |   20 +
 .../v3/zz_generated_auth_config_status.go     |   10 +
 .../v3/zz_generated_auth_webhook_config.go    |   12 +
 .../v3/zz_generated_authn_config.go           |   14 +
 .../v3/zz_generated_authz_config.go           |   12 +
 .../v3/zz_generated_aws_cloud_provider.go     |   12 +
 ...d_aws_elastic_block_store_volume_source.go |   16 +
 .../v3/zz_generated_azure_adconfig.go         |   54 +
 ...zz_generated_azure_adconfig_apply_input.go |   12 +
 ...zz_generated_azure_adconfig_test_output.go |   10 +
 .../v3/zz_generated_azure_cloud_provider.go   |   74 +
 .../zz_generated_azure_disk_volume_source.go  |   20 +
 .../zz_generated_azure_file_volume_source.go  |   14 +
 .../v3/zz_generated_backup_config.go          |   20 +
 .../v3/zz_generated_bastion_host.go           |   26 +
 ..._generated_block_storage_openstack_opts.go |   14 +
 .../zz_generated_calico_network_provider.go   |   10 +
 .../v3/zz_generated_canal_network_provider.go |   10 +
 .../v3/zz_generated_capabilities.go           |   18 +
 .../management/v3/zz_generated_catalog.go     |  164 ++
 .../v3/zz_generated_catalog_condition.go      |   20 +
 .../v3/zz_generated_catalog_refresh.go        |   10 +
 .../v3/zz_generated_catalog_secrets.go        |   10 +
 .../v3/zz_generated_catalog_spec.go           |   24 +
 .../v3/zz_generated_catalog_status.go         |   18 +
 .../v3/zz_generated_catalog_template.go       |  166 ++
 .../zz_generated_catalog_template_version.go  |  158 ++
 .../v3/zz_generated_ceph_fsvolume_source.go   |   20 +
 .../v3/zz_generated_cert_expiration.go        |   10 +
 .../v3/zz_generated_change_password_input.go  |   12 +
 .../v3/zz_generated_cinder_volume_source.go   |   16 +
 .../management/v3/zz_generated_client.go      |  124 +
 .../v3/zz_generated_cloud_credential.go       |  122 +
 .../v3/zz_generated_cloud_credential_spec.go  |   14 +
 .../v3/zz_generated_cloud_provider.go         |   24 +
 ...zz_generated_cloudflare_provider_config.go |   16 +
 .../management/v3/zz_generated_cluster.go     |  318 +++
 .../v3/zz_generated_cluster_catalog.go        |  168 ++
 .../zz_generated_cluster_component_status.go  |   12 +
 .../v3/zz_generated_cluster_condition.go      |   20 +
 ...zz_generated_cluster_registration_token.go |  144 +
 ...nerated_cluster_registration_token_spec.go |   10 +
 ...rated_cluster_registration_token_status.go |   24 +
 ...generated_cluster_role_template_binding.go |  132 +
 .../v3/zz_generated_cluster_secrets.go        |   40 +
 .../v3/zz_generated_cluster_spec.go           |   72 +
 .../v3/zz_generated_cluster_spec_base.go      |   36 +
 .../v3/zz_generated_cluster_status.go         |   86 +
 .../v3/zz_generated_cluster_template.go       |  124 +
 ...rated_cluster_template_questions_output.go |   10 +
 .../zz_generated_cluster_template_revision.go |  186 ++
 ...ted_cluster_template_revision_condition.go |   20 +
 ...enerated_cluster_template_revision_spec.go |   18 +
 ...erated_cluster_template_revision_status.go |   40 +
 .../v3/zz_generated_cluster_template_spec.go  |   16 +
 ...nerated_cluster_trust_bundle_projection.go |   18 +
 .../zz_generated_cluster_upgrade_strategy.go  |   16 +
 .../management/v3/zz_generated_cmek_config.go |   12 +
 .../v3/zz_generated_component_condition.go    |   16 +
 .../v3/zz_generated_compose_condition.go      |   20 +
 .../v3/zz_generated_compose_config.go         |  128 +
 .../v3/zz_generated_compose_spec.go           |   10 +
 .../v3/zz_generated_compose_status.go         |   10 +
 .../management/v3/zz_generated_condition.go   |   20 +
 .../zz_generated_config_map_key_selector.go   |   14 +
 ...generated_config_map_node_config_source.go |   18 +
 .../v3/zz_generated_config_map_projection.go  |   14 +
 .../zz_generated_config_map_volume_source.go  |   16 +
 .../v3/zz_generated_container_image.go        |   12 +
 .../zz_generated_container_resource_limit.go  |   16 +
 .../management/v3/zz_generated_cpu_info.go    |   10 +
 .../v3/zz_generated_csi_volume_source.go      |   18 +
 .../v3/zz_generated_custom_config.go          |   24 +
 .../v3/zz_generated_daemon_endpoint.go        |   10 +
 ...zz_generated_daemon_set_update_strategy.go |   12 +
 .../v3/zz_generated_deployment_strategy.go    |   12 +
 .../v3/zz_generated_disk_vsphere_opts.go      |   10 +
 .../management/v3/zz_generated_dns_config.go  |   28 +
 .../management/v3/zz_generated_docker_info.go |   48 +
 .../v3/zz_generated_downward_apiprojection.go |   10 +
 .../zz_generated_downward_apivolume_file.go   |   16 +
 .../zz_generated_downward_apivolume_source.go |   12 +
 .../management/v3/zz_generated_duration.go    |    8 +
 .../v3/zz_generated_dynamic_schema.go         |  152 +
 .../v3/zz_generated_dynamic_schema_spec.go    |   34 +
 .../v3/zz_generated_dynamic_schema_status.go  |   10 +
 .../v3/zz_generated_ecr_credential_plugin.go  |   14 +
 .../zz_generated_eks_cluster_config_spec.go   |   42 +
 .../management/v3/zz_generated_eks_status.go  |   24 +
 .../zz_generated_empty_dir_volume_source.go   |   12 +
 .../zz_generated_encryption_configuration.go  |   14 +
 .../management/v3/zz_generated_env_var.go     |   14 +
 .../v3/zz_generated_env_var_source.go         |   16 +
 .../zz_generated_ephemeral_volume_source.go   |   10 +
 .../management/v3/zz_generated_etcd_backup.go |  136 +
 .../v3/zz_generated_etcd_backup_condition.go  |   20 +
 .../v3/zz_generated_etcd_backup_spec.go       |   16 +
 .../v3/zz_generated_etcd_backup_status.go     |   14 +
 .../v3/zz_generated_etcd_service.go           |   48 +
 .../v3/zz_generated_event_rate_limit.go       |   12 +
 .../v3/zz_generated_export_output.go          |   10 +
 .../management/v3/zz_generated_extra_env.go   |   14 +
 .../v3/zz_generated_extra_volume.go           |   68 +
 .../v3/zz_generated_extra_volume_mount.go     |   22 +
 .../v3/zz_generated_fc_volume_source.go       |   18 +
 .../management/v3/zz_generated_feature.go     |  128 +
 .../v3/zz_generated_feature_spec.go           |   10 +
 .../v3/zz_generated_feature_status.go         |   16 +
 .../management/v3/zz_generated_field.go       |   40 +
 .../management/v3/zz_generated_file.go        |   12 +
 .../management/v3/zz_generated_filter.go      |   10 +
 .../zz_generated_flannel_network_provider.go  |   10 +
 .../v3/zz_generated_fleet_workspace.go        |  120 +
 ...zz_generated_fleet_workspace_permission.go |   12 +
 .../v3/zz_generated_fleet_workspace_status.go |    8 +
 .../v3/zz_generated_flex_volume_source.go     |   18 +
 .../v3/zz_generated_flocker_volume_source.go  |   12 +
 .../v3/zz_generated_free_ipa_config.go        |   84 +
 ...generated_free_ipa_test_and_apply_input.go |   14 +
 ...rated_gce_persistent_disk_volume_source.go |   16 +
 ...z_generated_generate_kube_config_output.go |   10 +
 .../zz_generated_generic_oidcapply_input.go   |   14 +
 .../v3/zz_generated_generic_oidcconfig.go     |   62 +
 .../zz_generated_generic_oidctest_output.go   |   10 +
 .../v3/zz_generated_git_repo_volume_source.go |   14 +
 .../v3/zz_generated_github_config.go          |   46 +
 .../zz_generated_github_config_apply_input.go |   14 +
 .../zz_generated_github_config_test_output.go |   10 +
 .../v3/zz_generated_gke_autopilot_config.go   |   10 +
 .../v3/zz_generated_gke_cidr_block.go         |   12 +
 .../v3/zz_generated_gke_cluster_addons.go     |   14 +
 .../zz_generated_gke_cluster_config_spec.go   |   58 +
 ...d_gke_master_authorized_networks_config.go |   12 +
 .../v3/zz_generated_gke_node_config.go        |   32 +
 .../zz_generated_gke_node_pool_autoscaling.go |   14 +
 .../v3/zz_generated_gke_node_pool_config.go   |   22 +
 .../zz_generated_gke_node_pool_management.go  |   12 +
 .../v3/zz_generated_gke_node_taint_config.go  |   14 +
 ...zz_generated_gke_private_cluster_config.go |   14 +
 .../management/v3/zz_generated_gke_status.go  |   12 +
 .../zz_generated_gkeip_allocation_policy.go   |   24 +
 .../v3/zz_generated_global_aws_opts.go        |   28 +
 .../management/v3/zz_generated_global_dns.go  |  152 +
 .../v3/zz_generated_global_dns_provider.go    |  128 +
 .../zz_generated_global_dns_provider_spec.go  |   18 +
 .../v3/zz_generated_global_dns_spec.go        |   20 +
 .../v3/zz_generated_global_dns_status.go      |   12 +
 .../v3/zz_generated_global_openstack_opts.go  |   30 +
 .../management/v3/zz_generated_global_role.go |  134 +
 .../v3/zz_generated_global_role_binding.go    |  124 +
 .../v3/zz_generated_global_role_status.go     |   16 +
 .../v3/zz_generated_global_vsphere_opts.go    |   32 +
 .../zz_generated_glusterfs_volume_source.go   |   14 +
 .../v3/zz_generated_google_oauth_config.go    |   46 +
 ...nerated_google_oauth_config_apply_input.go |   14 +
 ...nerated_google_oauth_config_test_output.go |   10 +
 .../management/v3/zz_generated_group.go       |  118 +
 .../v3/zz_generated_group_member.go           |  122 +
 .../zz_generated_harvester_cloud_provider.go  |   10 +
 .../v3/zz_generated_health_check.go           |   10 +
 .../zz_generated_host_path_volume_source.go   |   12 +
 .../v3/zz_generated_identity_configuration.go |    8 +
 .../zz_generated_import_cluster_yaml_input.go |   16 +
 .../v3/zz_generated_import_yaml_output.go     |   10 +
 .../v3/zz_generated_imported_config.go        |   10 +
 .../management/v3/zz_generated_info.go        |   26 +
 .../v3/zz_generated_ingress_capabilities.go   |   12 +
 .../v3/zz_generated_ingress_config.go         |   42 +
 .../v3/zz_generated_internal_node_spec.go     |   18 +
 .../v3/zz_generated_internal_node_status.go   |   30 +
 .../v3/zz_generated_iscsi_volume_source.go    |   30 +
 .../management/v3/zz_generated_k3s_config.go  |   12 +
 .../management/v3/zz_generated_key.go         |   12 +
 .../v3/zz_generated_key_cloak_config.go       |   52 +
 .../v3/zz_generated_key_cloak_oidcconfig.go   |   62 +
 .../management/v3/zz_generated_key_to_path.go |   14 +
 .../v3/zz_generated_kms_configuration.go      |   18 +
 .../v3/zz_generated_kontainer_driver.go       |  163 ++
 .../v3/zz_generated_kontainer_driver_spec.go  |   20 +
 .../zz_generated_kontainer_driver_status.go   |   16 +
 .../v3/zz_generated_kube_apiservice.go        |   42 +
 .../zz_generated_kube_controller_service.go   |   30 +
 .../v3/zz_generated_kubelet_service.go        |   36 +
 .../v3/zz_generated_kubeproxy_service.go      |   26 +
 .../v3/zz_generated_kubernetes_info.go        |   12 +
 ...z_generated_kubernetes_services_options.go |   20 +
 .../v3/zz_generated_label_selector.go         |   12 +
 ...zz_generated_label_selector_requirement.go |   14 +
 .../v3/zz_generated_launch_template.go        |   14 +
 .../management/v3/zz_generated_ldap_config.go |  180 ++
 .../management/v3/zz_generated_ldap_fields.go |   60 +
 .../zz_generated_linear_autoscaler_params.go  |   18 +
 ...zz_generated_load_balancer_capabilities.go |   16 +
 ..._generated_load_balancer_openstack_opts.go |   30 +
 ...z_generated_local_cluster_auth_endpoint.go |   14 +
 .../v3/zz_generated_local_config.go           |   34 +
 .../v3/zz_generated_local_object_reference.go |   10 +
 .../v3/zz_generated_management_secret.go      |  126 +
 .../management/v3/zz_generated_map_delta.go   |   12 +
 .../management/v3/zz_generated_member.go      |   14 +
 .../management/v3/zz_generated_memory_info.go |   10 +
 .../zz_generated_metadata_openstack_opts.go   |   12 +
 .../v3/zz_generated_metadata_update.go        |   12 +
 .../v3/zz_generated_monitoring_config.go      |   22 +
 .../v3/zz_generated_multi_cluster_app.go      |  165 ++
 ...zz_generated_multi_cluster_app_revision.go |  122 +
 ...erated_multi_cluster_app_rollback_input.go |   10 +
 .../v3/zz_generated_multi_cluster_app_spec.go |   26 +
 .../zz_generated_multi_cluster_app_status.go  |   14 +
 .../zz_generated_namespace_resource_quota.go  |   10 +
 .../v3/zz_generated_network_config.go         |   30 +
 .../v3/zz_generated_network_vshpere_opts.go   |   10 +
 .../v3/zz_generated_nfs_volume_source.go      |   14 +
 .../management/v3/zz_generated_node.go        |  231 ++
 .../v3/zz_generated_node_address.go           |   12 +
 .../v3/zz_generated_node_affinity.go          |   12 +
 .../v3/zz_generated_node_condition.go         |   20 +
 .../v3/zz_generated_node_config_source.go     |   10 +
 .../v3/zz_generated_node_config_status.go     |   16 +
 .../v3/zz_generated_node_daemon_endpoints.go  |   10 +
 .../v3/zz_generated_node_drain_input.go       |   18 +
 .../management/v3/zz_generated_node_driver.go |  160 ++
 .../v3/zz_generated_node_driver_spec.go       |   28 +
 .../v3/zz_generated_node_driver_status.go     |   16 +
 .../management/v3/zz_generated_node_group.go  |   48 +
 .../management/v3/zz_generated_node_info.go   |   16 +
 .../management/v3/zz_generated_node_plan.go   |   14 +
 .../management/v3/zz_generated_node_pool.go   |  156 +
 .../v3/zz_generated_node_pool_spec.go         |   34 +
 .../v3/zz_generated_node_pool_status.go       |   10 +
 .../v3/zz_generated_node_runtime_handler.go   |   12 +
 ...generated_node_runtime_handler_features.go |   10 +
 .../v3/zz_generated_node_selector.go          |   10 +
 .../zz_generated_node_selector_requirement.go |   14 +
 .../v3/zz_generated_node_selector_term.go     |   12 +
 .../management/v3/zz_generated_node_spec.go   |   50 +
 .../management/v3/zz_generated_node_status.go |   48 +
 .../v3/zz_generated_node_system_info.go       |   28 +
 .../v3/zz_generated_node_template.go          |  160 ++
 .../zz_generated_node_template_condition.go   |   18 +
 .../v3/zz_generated_node_template_spec.go     |   44 +
 .../v3/zz_generated_node_template_status.go   |   10 +
 .../v3/zz_generated_node_upgrade_strategy.go  |   16 +
 .../management/v3/zz_generated_nodelocal.go   |   16 +
 .../v3/zz_generated_object_field_selector.go  |   12 +
 .../management/v3/zz_generated_object_meta.go |   28 +
 .../v3/zz_generated_oidc_apply_input.go       |   14 +
 .../management/v3/zz_generated_oidc_config.go |   62 +
 .../v3/zz_generated_oidc_test_output.go       |   10 +
 .../management/v3/zz_generated_okta_config.go |   54 +
 .../v3/zz_generated_open_ldap_config.go       |   86 +
 ...enerated_open_ldap_test_and_apply_input.go |   14 +
 .../zz_generated_openstack_cloud_provider.go  |   18 +
 .../management/v3/zz_generated_os_info.go     |   14 +
 .../v3/zz_generated_owner_reference.go        |   20 +
 ..._generated_persistent_volume_claim_spec.go |   26 +
 ...erated_persistent_volume_claim_template.go |   12 +
 ...d_persistent_volume_claim_volume_source.go |   12 +
 ...ed_photon_persistent_disk_volume_source.go |   12 +
 .../management/v3/zz_generated_ping_config.go |   52 +
 .../v3/zz_generated_pod_affinity.go           |   12 +
 .../v3/zz_generated_pod_affinity_term.go      |   20 +
 .../v3/zz_generated_pod_anti_affinity.go      |   12 +
 ...curity_admission_configuration_template.go |  122 +
 ...mission_configuration_template_defaults.go |   20 +
 ...ssion_configuration_template_exemptions.go |   14 +
 ...y_admission_configuration_template_spec.go |   12 +
 .../management/v3/zz_generated_policy_rule.go |   18 +
 .../management/v3/zz_generated_port_check.go  |   14 +
 .../v3/zz_generated_portworx_volume_source.go |   14 +
 .../management/v3/zz_generated_preference.go  |  122 +
 .../zz_generated_preferred_scheduling_term.go |   12 +
 .../management/v3/zz_generated_principal.go   |  142 +
 .../v3/zz_generated_private_registry.go       |   18 +
 .../management/v3/zz_generated_process.go     |   40 +
 .../management/v3/zz_generated_project.go     |  145 +
 .../v3/zz_generated_project_catalog.go        |  168 ++
 .../v3/zz_generated_project_condition.go      |   20 +
 .../v3/zz_generated_project_network_policy.go |  132 +
 ...z_generated_project_network_policy_spec.go |   12 +
 ...generated_project_network_policy_status.go |    8 +
 .../v3/zz_generated_project_resource_quota.go |   12 +
 ...generated_project_role_template_binding.go |  134 +
 .../v3/zz_generated_project_spec.go           |   20 +
 .../v3/zz_generated_project_status.go         |   10 +
 .../zz_generated_projected_volume_source.go   |   12 +
 .../v3/zz_generated_provider_configuration.go |   18 +
 .../v3/zz_generated_public_endpoint.go        |   28 +
 .../management/v3/zz_generated_question.go    |   44 +
 .../v3/zz_generated_quobyte_volume_source.go  |   20 +
 ...erated_rancher_kubernetes_engine_config.go |   62 +
 .../zz_generated_rancher_user_notification.go |  122 +
 .../v3/zz_generated_rbd_volume_source.go      |   24 +
 .../v3/zz_generated_resource_claim.go         |   10 +
 .../v3/zz_generated_resource_configuration.go |   12 +
 .../zz_generated_resource_field_selector.go   |   14 +
 .../v3/zz_generated_resource_quota_limit.go   |   34 +
 .../v3/zz_generated_resource_requirements.go  |   14 +
 .../v3/zz_generated_restore_config.go         |   12 +
 ...enerated_restore_from_etcd_backup_input.go |   12 +
 .../management/v3/zz_generated_rke2config.go  |   12 +
 .../management/v3/zz_generated_rke_addon.go   |  120 +
 .../v3/zz_generated_rke_config_node.go        |   38 +
 .../v3/zz_generated_rke_config_node_plan.go   |   22 +
 .../v3/zz_generated_rke_config_services.go    |   20 +
 .../v3/zz_generated_rke_k8s_service_option.go |  120 +
 .../v3/zz_generated_rke_k8s_system_image.go   |  120 +
 .../v3/zz_generated_rke_system_images.go      |   90 +
 .../management/v3/zz_generated_rke_taint.go   |   16 +
 .../v3/zz_generated_role_template.go          |  142 +
 .../v3/zz_generated_rolling_update.go         |   12 +
 .../zz_generated_rolling_update_daemon_set.go |   16 +
 .../zz_generated_rolling_update_deployment.go |   16 +
 .../zz_generated_rotate_certificate_input.go  |   12 +
 .../zz_generated_rotate_certificate_output.go |   10 +
 .../v3/zz_generated_rotate_certificates.go    |   12 +
 ..._generated_rotate_encryption_key_output.go |   10 +
 .../v3/zz_generated_route53provider_config.go |   22 +
 .../v3/zz_generated_route_openstack_opts.go   |   10 +
 .../v3/zz_generated_s3backup_config.go        |   22 +
 .../v3/zz_generated_s3credential_config.go    |   24 +
 .../v3/zz_generated_saml_config_test_input.go |   10 +
 .../zz_generated_saml_config_test_output.go   |   10 +
 .../management/v3/zz_generated_saml_token.go  |  124 +
 .../v3/zz_generated_save_as_template_input.go |   12 +
 .../zz_generated_save_as_template_output.go   |   12 +
 .../v3/zz_generated_scale_iovolume_source.go  |   28 +
 .../v3/zz_generated_scheduler_service.go      |   26 +
 .../zz_generated_search_principals_input.go   |   12 +
 .../v3/zz_generated_secret_key_selector.go    |   14 +
 .../v3/zz_generated_secret_projection.go      |   14 +
 .../v3/zz_generated_secret_volume_source.go   |   16 +
 .../zz_generated_secretbox_configuration.go   |   10 +
 .../zz_generated_secrets_encryption_config.go |   12 +
 ...erated_service_account_token_projection.go |   14 +
 .../v3/zz_generated_service_override.go       |   20 +
 .../v3/zz_generated_set_password_input.go     |   10 +
 .../management/v3/zz_generated_setting.go     |  126 +
 .../v3/zz_generated_shibboleth_config.go      |   54 +
 .../zz_generated_storage_osvolume_source.go   |   18 +
 .../v3/zz_generated_sub_question.go           |   40 +
 .../management/v3/zz_generated_taint.go       |   16 +
 .../management/v3/zz_generated_target.go      |   16 +
 .../management/v3/zz_generated_template.go    |  166 ++
 .../v3/zz_generated_template_content.go       |  120 +
 .../v3/zz_generated_template_spec.go          |   48 +
 .../v3/zz_generated_template_status.go        |   10 +
 .../v3/zz_generated_template_version.go       |  158 ++
 .../v3/zz_generated_template_version_spec.go  |   40 +
 .../zz_generated_template_version_status.go   |   10 +
 .../management/v3/zz_generated_token.go       |  155 +
 .../management/v3/zz_generated_toleration.go  |   18 +
 ..._generated_typed_local_object_reference.go |   14 +
 .../v3/zz_generated_typed_object_reference.go |   16 +
 ...enerated_update_global_dnstargets_input.go |   10 +
 ..._update_multi_cluster_app_targets_input.go |   12 +
 .../v3/zz_generated_upgrade_strategy.go       |   10 +
 .../management/v3/zz_generated_user.go        |  169 ++
 .../v3/zz_generated_user_attribute.go         |   40 +
 .../v3/zz_generated_user_condition.go         |   20 +
 .../management/v3/zz_generated_user_spec.go   |    8 +
 .../management/v3/zz_generated_user_status.go |   10 +
 .../management/v3/zz_generated_values.go      |   16 +
 .../v3/zz_generated_version_commits.go        |   10 +
 .../v3/zz_generated_virtual_center_config.go  |   18 +
 .../v3/zz_generated_volume_projection.go      |   18 +
 ..._generated_volume_resource_requirements.go |   12 +
 .../v3/zz_generated_vsphere_cloud_provider.go |   18 +
 ...ated_vsphere_virtual_disk_volume_source.go |   16 +
 .../v3/zz_generated_weave_network_provider.go |   10 +
 ...zz_generated_weighted_pod_affinity_term.go |   12 +
 .../v3/zz_generated_workspace_vsphere_opts.go |   18 +
 vendor/github.com/rancher/wrangler/v3/LICENSE |  178 ++
 .../rancher/wrangler/v3/pkg/name/name.go      |   75 +
 vendor/github.com/sirupsen/logrus/.gitignore  |    4 +
 .../github.com/sirupsen/logrus/.golangci.yml  |   40 +
 vendor/github.com/sirupsen/logrus/.travis.yml |   15 +
 .../github.com/sirupsen/logrus/CHANGELOG.md   |  259 ++
 vendor/github.com/sirupsen/logrus/LICENSE     |   21 +
 vendor/github.com/sirupsen/logrus/README.md   |  515 ++++
 vendor/github.com/sirupsen/logrus/alt_exit.go |   76 +
 .../github.com/sirupsen/logrus/appveyor.yml   |   14 +
 .../github.com/sirupsen/logrus/buffer_pool.go |   43 +
 vendor/github.com/sirupsen/logrus/doc.go      |   26 +
 vendor/github.com/sirupsen/logrus/entry.go    |  442 +++
 vendor/github.com/sirupsen/logrus/exported.go |  270 ++
 .../github.com/sirupsen/logrus/formatter.go   |   78 +
 vendor/github.com/sirupsen/logrus/hooks.go    |   34 +
 .../sirupsen/logrus/json_formatter.go         |  128 +
 vendor/github.com/sirupsen/logrus/logger.go   |  417 +++
 vendor/github.com/sirupsen/logrus/logrus.go   |  186 ++
 .../logrus/terminal_check_appengine.go        |   11 +
 .../sirupsen/logrus/terminal_check_bsd.go     |   13 +
 .../sirupsen/logrus/terminal_check_js.go      |    7 +
 .../logrus/terminal_check_no_terminal.go      |   11 +
 .../logrus/terminal_check_notappengine.go     |   17 +
 .../sirupsen/logrus/terminal_check_solaris.go |   11 +
 .../sirupsen/logrus/terminal_check_unix.go    |   13 +
 .../sirupsen/logrus/terminal_check_windows.go |   27 +
 .../sirupsen/logrus/text_formatter.go         |  339 +++
 vendor/github.com/sirupsen/logrus/writer.go   |  102 +
 vendor/golang.org/x/net/LICENSE               |    4 +-
 .../golang.org/x/net/internal/socks/client.go |  168 ++
 .../golang.org/x/net/internal/socks/socks.go  |  317 +++
 vendor/golang.org/x/net/proxy/dial.go         |   54 +
 vendor/golang.org/x/net/proxy/direct.go       |   31 +
 vendor/golang.org/x/net/proxy/per_host.go     |  151 +
 vendor/golang.org/x/net/proxy/proxy.go        |  149 +
 vendor/golang.org/x/net/proxy/socks5.go       |   42 +
 vendor/golang.org/x/oauth2/LICENSE            |    4 +-
 vendor/golang.org/x/sys/LICENSE               |    4 +-
 vendor/golang.org/x/sys/unix/README.md        |    2 +-
 vendor/golang.org/x/sys/unix/ioctl_linux.go   |   96 +
 vendor/golang.org/x/sys/unix/mkerrors.sh      |   18 +-
 vendor/golang.org/x/sys/unix/syscall_aix.go   |    2 +-
 .../golang.org/x/sys/unix/syscall_darwin.go   |   49 +
 vendor/golang.org/x/sys/unix/syscall_hurd.go  |    1 +
 vendor/golang.org/x/sys/unix/syscall_linux.go |   65 +-
 .../x/sys/unix/syscall_linux_arm64.go         |    2 +
 .../x/sys/unix/syscall_linux_loong64.go       |    2 +
 .../x/sys/unix/syscall_linux_riscv64.go       |    2 +
 .../golang.org/x/sys/unix/syscall_openbsd.go  |    1 +
 .../x/sys/unix/syscall_zos_s390x.go           |  104 +-
 .../golang.org/x/sys/unix/vgetrandom_linux.go |   13 +
 .../x/sys/unix/vgetrandom_unsupported.go      |   11 +
 .../x/sys/unix/zerrors_darwin_amd64.go        |   12 +
 .../x/sys/unix/zerrors_darwin_arm64.go        |   12 +
 vendor/golang.org/x/sys/unix/zerrors_linux.go |   82 +-
 .../x/sys/unix/zerrors_linux_386.go           |   27 +
 .../x/sys/unix/zerrors_linux_amd64.go         |   27 +
 .../x/sys/unix/zerrors_linux_arm.go           |   27 +
 .../x/sys/unix/zerrors_linux_arm64.go         |   28 +
 .../x/sys/unix/zerrors_linux_loong64.go       |   27 +
 .../x/sys/unix/zerrors_linux_mips.go          |   27 +
 .../x/sys/unix/zerrors_linux_mips64.go        |   27 +
 .../x/sys/unix/zerrors_linux_mips64le.go      |   27 +
 .../x/sys/unix/zerrors_linux_mipsle.go        |   27 +
 .../x/sys/unix/zerrors_linux_ppc.go           |   27 +
 .../x/sys/unix/zerrors_linux_ppc64.go         |   27 +
 .../x/sys/unix/zerrors_linux_ppc64le.go       |   27 +
 .../x/sys/unix/zerrors_linux_riscv64.go       |   27 +
 .../x/sys/unix/zerrors_linux_s390x.go         |   27 +
 .../x/sys/unix/zerrors_linux_sparc64.go       |   27 +
 .../x/sys/unix/zerrors_zos_s390x.go           |    2 +
 .../x/sys/unix/zsyscall_darwin_amd64.go       |   68 +
 .../x/sys/unix/zsyscall_darwin_amd64.s        |   15 +
 .../x/sys/unix/zsyscall_darwin_arm64.go       |   68 +
 .../x/sys/unix/zsyscall_darwin_arm64.s        |   15 +
 .../golang.org/x/sys/unix/zsyscall_linux.go   |   43 +-
 .../x/sys/unix/zsyscall_openbsd_386.go        |   24 +
 .../x/sys/unix/zsyscall_openbsd_386.s         |    5 +
 .../x/sys/unix/zsyscall_openbsd_amd64.go      |   24 +
 .../x/sys/unix/zsyscall_openbsd_amd64.s       |    5 +
 .../x/sys/unix/zsyscall_openbsd_arm.go        |   24 +
 .../x/sys/unix/zsyscall_openbsd_arm.s         |    5 +
 .../x/sys/unix/zsyscall_openbsd_arm64.go      |   24 +
 .../x/sys/unix/zsyscall_openbsd_arm64.s       |    5 +
 .../x/sys/unix/zsyscall_openbsd_mips64.go     |   24 +
 .../x/sys/unix/zsyscall_openbsd_mips64.s      |    5 +
 .../x/sys/unix/zsyscall_openbsd_ppc64.go      |   24 +
 .../x/sys/unix/zsyscall_openbsd_ppc64.s       |    6 +
 .../x/sys/unix/zsyscall_openbsd_riscv64.go    |   24 +
 .../x/sys/unix/zsyscall_openbsd_riscv64.s     |    5 +
 .../x/sys/unix/zsysnum_linux_386.go           |    1 +
 .../x/sys/unix/zsysnum_linux_amd64.go         |    2 +
 .../x/sys/unix/zsysnum_linux_arm.go           |    1 +
 .../x/sys/unix/zsysnum_linux_arm64.go         |    3 +-
 .../x/sys/unix/zsysnum_linux_loong64.go       |    3 +
 .../x/sys/unix/zsysnum_linux_mips.go          |    1 +
 .../x/sys/unix/zsysnum_linux_mips64.go        |    1 +
 .../x/sys/unix/zsysnum_linux_mips64le.go      |    1 +
 .../x/sys/unix/zsysnum_linux_mipsle.go        |    1 +
 .../x/sys/unix/zsysnum_linux_ppc.go           |    1 +
 .../x/sys/unix/zsysnum_linux_ppc64.go         |    1 +
 .../x/sys/unix/zsysnum_linux_ppc64le.go       |    1 +
 .../x/sys/unix/zsysnum_linux_riscv64.go       |    3 +-
 .../x/sys/unix/zsysnum_linux_s390x.go         |    1 +
 .../x/sys/unix/zsysnum_linux_sparc64.go       |    1 +
 .../x/sys/unix/ztypes_darwin_amd64.go         |   73 +
 .../x/sys/unix/ztypes_darwin_arm64.go         |   73 +
 .../x/sys/unix/ztypes_freebsd_386.go          |    1 +
 .../x/sys/unix/ztypes_freebsd_amd64.go        |    1 +
 .../x/sys/unix/ztypes_freebsd_arm.go          |    1 +
 .../x/sys/unix/ztypes_freebsd_arm64.go        |    1 +
 .../x/sys/unix/ztypes_freebsd_riscv64.go      |    1 +
 vendor/golang.org/x/sys/unix/ztypes_linux.go  |  230 +-
 .../x/sys/unix/ztypes_linux_riscv64.go        |   33 +
 .../golang.org/x/sys/unix/ztypes_zos_s390x.go |    6 +
 .../golang.org/x/sys/windows/dll_windows.go   |    2 +-
 .../x/sys/windows/security_windows.go         |    2 +-
 .../x/sys/windows/syscall_windows.go          |   52 +-
 .../golang.org/x/sys/windows/types_windows.go |  199 +-
 .../x/sys/windows/zsyscall_windows.go         |  158 +-
 vendor/golang.org/x/term/LICENSE              |    4 +-
 vendor/golang.org/x/term/README.md            |   11 +-
 vendor/golang.org/x/term/term_windows.go      |    1 +
 vendor/golang.org/x/text/LICENSE              |    4 +-
 vendor/golang.org/x/text/cases/cases.go       |  162 ++
 vendor/golang.org/x/text/cases/context.go     |  376 +++
 vendor/golang.org/x/text/cases/fold.go        |   34 +
 vendor/golang.org/x/text/cases/icu.go         |   61 +
 vendor/golang.org/x/text/cases/info.go        |   82 +
 vendor/golang.org/x/text/cases/map.go         |  816 ++++++
 .../golang.org/x/text/cases/tables10.0.0.go   | 2255 +++++++++++++++
 .../golang.org/x/text/cases/tables11.0.0.go   | 2316 +++++++++++++++
 .../golang.org/x/text/cases/tables12.0.0.go   | 2359 +++++++++++++++
 .../golang.org/x/text/cases/tables13.0.0.go   | 2399 ++++++++++++++++
 .../golang.org/x/text/cases/tables15.0.0.go   | 2527 +++++++++++++++++
 vendor/golang.org/x/text/cases/tables9.0.0.go | 2215 +++++++++++++++
 vendor/golang.org/x/text/cases/trieval.go     |  217 ++
 vendor/golang.org/x/text/internal/internal.go |   49 +
 vendor/golang.org/x/text/internal/match.go    |   67 +
 .../apiserver/pkg/authentication/user/doc.go  |   19 +
 .../apiserver/pkg/authentication/user/user.go |   84 +
 vendor/kmodules.xyz/client-go/Makefile        |    2 +-
 .../client-go/api/v1/certificates.go          |    4 +
 .../kmodules.xyz/client-go/api/v1/cluster.go  |   94 +-
 .../client-go/api/v1/generated.pb.go          | 1094 ++++++-
 .../client-go/api/v1/generated.proto          |   36 +
 .../client-go/api/v1/zz_generated.deepcopy.go |   74 +
 .../kmodules.xyz/client-go/client/client.go   |  102 +-
 .../client-go/client/delegated.go             |   60 +-
 vendor/kmodules.xyz/client-go/cluster/ace.go  |    2 +-
 .../client-go/cluster/detector.go             |    6 +-
 vendor/kmodules.xyz/client-go/cluster/lib.go  |   19 +-
 vendor/kmodules.xyz/client-go/cluster/ocm.go  |   18 +-
 .../kmodules.xyz/client-go/cluster/rancher.go |   51 +-
 .../client-go/cluster/vcluster.go             |    4 +-
 vendor/kmodules.xyz/client-go/meta/hash.go    |   25 +-
 .../offshoot-api/api/v1/gateway_types.go      |   78 +
 .../offshoot-api/api/v1/openapi_generated.go  |  151 +
 .../kmodules.xyz/offshoot-api/api/v1/types.go |   19 -
 .../api/v1/zz_generated.deepcopy.go           |   73 +
 vendor/modules.txt                            |   45 +-
 .../v1alpha1/openapi_generated.go             |  358 ++-
 .../apis/stash/v1alpha1/openapi_generated.go  |  358 ++-
 .../apis/stash/v1beta1/openapi_generated.go   |  358 ++-
 .../apis/ui/v1alpha1/openapi_generated.go     |  358 ++-
 .../apimachinery/pkg/restic/commands.go       |   17 +-
 605 files changed, 48014 insertions(+), 426 deletions(-)
 create mode 100644 vendor/github.com/ghodss/yaml/.gitignore
 create mode 100644 vendor/github.com/ghodss/yaml/.travis.yml
 create mode 100644 vendor/github.com/ghodss/yaml/LICENSE
 create mode 100644 vendor/github.com/ghodss/yaml/README.md
 create mode 100644 vendor/github.com/ghodss/yaml/fields.go
 create mode 100644 vendor/github.com/ghodss/yaml/yaml.go
 create mode 100644 vendor/github.com/gorilla/websocket/.editorconfig
 create mode 100644 vendor/github.com/gorilla/websocket/.gitignore
 create mode 100644 vendor/github.com/gorilla/websocket/.golangci.yml
 create mode 100644 vendor/github.com/gorilla/websocket/LICENSE
 create mode 100644 vendor/github.com/gorilla/websocket/Makefile
 create mode 100644 vendor/github.com/gorilla/websocket/README.md
 create mode 100644 vendor/github.com/gorilla/websocket/client.go
 create mode 100644 vendor/github.com/gorilla/websocket/compression.go
 create mode 100644 vendor/github.com/gorilla/websocket/conn.go
 create mode 100644 vendor/github.com/gorilla/websocket/doc.go
 create mode 100644 vendor/github.com/gorilla/websocket/join.go
 create mode 100644 vendor/github.com/gorilla/websocket/json.go
 create mode 100644 vendor/github.com/gorilla/websocket/mask.go
 create mode 100644 vendor/github.com/gorilla/websocket/mask_safe.go
 create mode 100644 vendor/github.com/gorilla/websocket/prepared.go
 create mode 100644 vendor/github.com/gorilla/websocket/proxy.go
 create mode 100644 vendor/github.com/gorilla/websocket/server.go
 create mode 100644 vendor/github.com/gorilla/websocket/tls_handshake.go
 create mode 100644 vendor/github.com/gorilla/websocket/util.go
 create mode 100644 vendor/github.com/rancher/norman/LICENSE
 create mode 100644 vendor/github.com/rancher/norman/clientbase/common.go
 create mode 100644 vendor/github.com/rancher/norman/clientbase/ops.go
 create mode 100644 vendor/github.com/rancher/norman/httperror/error.go
 create mode 100644 vendor/github.com/rancher/norman/types/condition.go
 create mode 100644 vendor/github.com/rancher/norman/types/convert/convert.go
 create mode 100644 vendor/github.com/rancher/norman/types/convert/ref.go
 create mode 100644 vendor/github.com/rancher/norman/types/convert/transform.go
 create mode 100644 vendor/github.com/rancher/norman/types/convert/value_set_string.go
 create mode 100644 vendor/github.com/rancher/norman/types/definition/definition.go
 create mode 100644 vendor/github.com/rancher/norman/types/encoder.go
 create mode 100644 vendor/github.com/rancher/norman/types/id.go
 create mode 100644 vendor/github.com/rancher/norman/types/mapper.go
 create mode 100644 vendor/github.com/rancher/norman/types/reflection.go
 create mode 100644 vendor/github.com/rancher/norman/types/schema_funcs.go
 create mode 100644 vendor/github.com/rancher/norman/types/schemas.go
 create mode 100644 vendor/github.com/rancher/norman/types/server_types.go
 create mode 100644 vendor/github.com/rancher/norman/types/slice/contains.go
 create mode 100644 vendor/github.com/rancher/norman/types/types.go
 create mode 100644 vendor/github.com/rancher/norman/types/values/values.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/LICENSE
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aci_network_provider.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_action.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_active_directory_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_active_directory_test_and_apply_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_adfs_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aes_configuration.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_affinity.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_agent_deployment_customization.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aks_cluster_config_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aks_node_pool.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aks_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_alidns_provider_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_answer.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_app_condition.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_attached_volume.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_audit_log.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_audit_log_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_auth_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_auth_config_conditions.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_auth_config_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_auth_webhook_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_authn_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_authz_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aws_cloud_provider.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aws_elastic_block_store_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_adconfig.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_adconfig_apply_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_adconfig_test_output.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_cloud_provider.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_disk_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_file_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_backup_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_bastion_host.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_block_storage_openstack_opts.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_calico_network_provider.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_canal_network_provider.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_capabilities.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_condition.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_refresh.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_secrets.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_template.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_template_version.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ceph_fsvolume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cert_expiration.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_change_password_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cinder_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_client.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cloud_credential.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cloud_credential_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cloud_provider.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cloudflare_provider_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_catalog.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_component_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_condition.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_registration_token.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_registration_token_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_registration_token_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_role_template_binding.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_secrets.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_spec_base.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_questions_output.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_revision.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_revision_condition.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_revision_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_revision_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_trust_bundle_projection.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_upgrade_strategy.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cmek_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_component_condition.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_compose_condition.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_compose_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_compose_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_compose_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_condition.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_config_map_key_selector.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_config_map_node_config_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_config_map_projection.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_config_map_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_container_image.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_container_resource_limit.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cpu_info.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_csi_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_custom_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_daemon_endpoint.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_daemon_set_update_strategy.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_deployment_strategy.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_disk_vsphere_opts.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_dns_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_docker_info.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_downward_apiprojection.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_downward_apivolume_file.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_downward_apivolume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_duration.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_dynamic_schema.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_dynamic_schema_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_dynamic_schema_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ecr_credential_plugin.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_eks_cluster_config_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_eks_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_empty_dir_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_encryption_configuration.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_env_var.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_env_var_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ephemeral_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_backup.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_backup_condition.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_backup_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_backup_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_service.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_event_rate_limit.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_export_output.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_extra_env.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_extra_volume.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_extra_volume_mount.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_fc_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_feature.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_feature_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_feature_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_field.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_file.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_filter.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_flannel_network_provider.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_fleet_workspace.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_fleet_workspace_permission.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_fleet_workspace_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_flex_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_flocker_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_free_ipa_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_free_ipa_test_and_apply_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gce_persistent_disk_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_generate_kube_config_output.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_generic_oidcapply_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_generic_oidcconfig.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_generic_oidctest_output.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_git_repo_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_github_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_github_config_apply_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_github_config_test_output.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_autopilot_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_cidr_block.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_cluster_addons.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_cluster_config_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_master_authorized_networks_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_pool_autoscaling.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_pool_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_pool_management.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_taint_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_private_cluster_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gkeip_allocation_policy.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_aws_opts.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns_provider.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns_provider_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_openstack_opts.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_role.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_role_binding.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_role_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_vsphere_opts.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_glusterfs_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_google_oauth_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_google_oauth_config_apply_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_google_oauth_config_test_output.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_group.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_group_member.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_harvester_cloud_provider.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_health_check.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_host_path_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_identity_configuration.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_import_cluster_yaml_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_import_yaml_output.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_imported_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_info.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ingress_capabilities.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ingress_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_internal_node_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_internal_node_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_iscsi_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_k3s_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_key.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_key_cloak_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_key_cloak_oidcconfig.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_key_to_path.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kms_configuration.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kontainer_driver.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kontainer_driver_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kontainer_driver_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kube_apiservice.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kube_controller_service.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kubelet_service.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kubeproxy_service.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kubernetes_info.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kubernetes_services_options.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_label_selector.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_label_selector_requirement.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_launch_template.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ldap_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ldap_fields.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_linear_autoscaler_params.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_load_balancer_capabilities.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_load_balancer_openstack_opts.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_local_cluster_auth_endpoint.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_local_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_local_object_reference.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_management_secret.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_map_delta.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_member.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_memory_info.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_metadata_openstack_opts.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_metadata_update.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_monitoring_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app_revision.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app_rollback_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_namespace_resource_quota.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_network_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_network_vshpere_opts.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_nfs_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_address.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_affinity.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_condition.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_config_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_config_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_daemon_endpoints.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_drain_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_driver.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_driver_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_driver_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_group.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_info.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_plan.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_pool.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_pool_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_pool_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_runtime_handler.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_runtime_handler_features.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_selector.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_selector_requirement.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_selector_term.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_system_info.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_template.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_template_condition.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_template_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_template_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_upgrade_strategy.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_nodelocal.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_object_field_selector.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_object_meta.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_oidc_apply_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_oidc_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_oidc_test_output.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_okta_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_open_ldap_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_open_ldap_test_and_apply_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_openstack_cloud_provider.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_os_info.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_owner_reference.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_persistent_volume_claim_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_persistent_volume_claim_template.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_persistent_volume_claim_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_photon_persistent_disk_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ping_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_affinity.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_affinity_term.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_anti_affinity.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_security_admission_configuration_template.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_security_admission_configuration_template_defaults.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_security_admission_configuration_template_exemptions.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_security_admission_configuration_template_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_policy_rule.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_port_check.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_portworx_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_preference.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_preferred_scheduling_term.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_principal.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_private_registry.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_process.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_catalog.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_condition.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_network_policy.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_network_policy_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_network_policy_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_resource_quota.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_role_template_binding.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_projected_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_provider_configuration.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_public_endpoint.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_question.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_quobyte_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rancher_kubernetes_engine_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rancher_user_notification.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rbd_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_claim.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_configuration.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_field_selector.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_quota_limit.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_requirements.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_restore_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_restore_from_etcd_backup_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke2config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_addon.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_config_node.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_config_node_plan.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_config_services.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_k8s_service_option.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_k8s_system_image.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_system_images.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_taint.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_role_template.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rolling_update.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rolling_update_daemon_set.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rolling_update_deployment.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rotate_certificate_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rotate_certificate_output.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rotate_certificates.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rotate_encryption_key_output.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_route53provider_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_route_openstack_opts.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_s3backup_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_s3credential_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_saml_config_test_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_saml_config_test_output.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_saml_token.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_save_as_template_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_save_as_template_output.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_scale_iovolume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_scheduler_service.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_search_principals_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secret_key_selector.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secret_projection.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secret_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secretbox_configuration.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secrets_encryption_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_service_account_token_projection.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_service_override.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_set_password_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_setting.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_shibboleth_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_storage_osvolume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_sub_question.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_taint.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_target.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_content.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_version.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_version_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_version_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_token.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_toleration.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_typed_local_object_reference.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_typed_object_reference.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_update_global_dnstargets_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_update_multi_cluster_app_targets_input.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_upgrade_strategy.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user_attribute.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user_condition.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user_spec.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user_status.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_values.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_version_commits.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_virtual_center_config.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_volume_projection.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_volume_resource_requirements.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_vsphere_cloud_provider.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_vsphere_virtual_disk_volume_source.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_weave_network_provider.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_weighted_pod_affinity_term.go
 create mode 100644 vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_workspace_vsphere_opts.go
 create mode 100644 vendor/github.com/rancher/wrangler/v3/LICENSE
 create mode 100644 vendor/github.com/rancher/wrangler/v3/pkg/name/name.go
 create mode 100644 vendor/github.com/sirupsen/logrus/.gitignore
 create mode 100644 vendor/github.com/sirupsen/logrus/.golangci.yml
 create mode 100644 vendor/github.com/sirupsen/logrus/.travis.yml
 create mode 100644 vendor/github.com/sirupsen/logrus/CHANGELOG.md
 create mode 100644 vendor/github.com/sirupsen/logrus/LICENSE
 create mode 100644 vendor/github.com/sirupsen/logrus/README.md
 create mode 100644 vendor/github.com/sirupsen/logrus/alt_exit.go
 create mode 100644 vendor/github.com/sirupsen/logrus/appveyor.yml
 create mode 100644 vendor/github.com/sirupsen/logrus/buffer_pool.go
 create mode 100644 vendor/github.com/sirupsen/logrus/doc.go
 create mode 100644 vendor/github.com/sirupsen/logrus/entry.go
 create mode 100644 vendor/github.com/sirupsen/logrus/exported.go
 create mode 100644 vendor/github.com/sirupsen/logrus/formatter.go
 create mode 100644 vendor/github.com/sirupsen/logrus/hooks.go
 create mode 100644 vendor/github.com/sirupsen/logrus/json_formatter.go
 create mode 100644 vendor/github.com/sirupsen/logrus/logger.go
 create mode 100644 vendor/github.com/sirupsen/logrus/logrus.go
 create mode 100644 vendor/github.com/sirupsen/logrus/terminal_check_appengine.go
 create mode 100644 vendor/github.com/sirupsen/logrus/terminal_check_bsd.go
 create mode 100644 vendor/github.com/sirupsen/logrus/terminal_check_js.go
 create mode 100644 vendor/github.com/sirupsen/logrus/terminal_check_no_terminal.go
 create mode 100644 vendor/github.com/sirupsen/logrus/terminal_check_notappengine.go
 create mode 100644 vendor/github.com/sirupsen/logrus/terminal_check_solaris.go
 create mode 100644 vendor/github.com/sirupsen/logrus/terminal_check_unix.go
 create mode 100644 vendor/github.com/sirupsen/logrus/terminal_check_windows.go
 create mode 100644 vendor/github.com/sirupsen/logrus/text_formatter.go
 create mode 100644 vendor/github.com/sirupsen/logrus/writer.go
 create mode 100644 vendor/golang.org/x/net/internal/socks/client.go
 create mode 100644 vendor/golang.org/x/net/internal/socks/socks.go
 create mode 100644 vendor/golang.org/x/net/proxy/dial.go
 create mode 100644 vendor/golang.org/x/net/proxy/direct.go
 create mode 100644 vendor/golang.org/x/net/proxy/per_host.go
 create mode 100644 vendor/golang.org/x/net/proxy/proxy.go
 create mode 100644 vendor/golang.org/x/net/proxy/socks5.go
 create mode 100644 vendor/golang.org/x/sys/unix/vgetrandom_linux.go
 create mode 100644 vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go
 create mode 100644 vendor/golang.org/x/text/cases/cases.go
 create mode 100644 vendor/golang.org/x/text/cases/context.go
 create mode 100644 vendor/golang.org/x/text/cases/fold.go
 create mode 100644 vendor/golang.org/x/text/cases/icu.go
 create mode 100644 vendor/golang.org/x/text/cases/info.go
 create mode 100644 vendor/golang.org/x/text/cases/map.go
 create mode 100644 vendor/golang.org/x/text/cases/tables10.0.0.go
 create mode 100644 vendor/golang.org/x/text/cases/tables11.0.0.go
 create mode 100644 vendor/golang.org/x/text/cases/tables12.0.0.go
 create mode 100644 vendor/golang.org/x/text/cases/tables13.0.0.go
 create mode 100644 vendor/golang.org/x/text/cases/tables15.0.0.go
 create mode 100644 vendor/golang.org/x/text/cases/tables9.0.0.go
 create mode 100644 vendor/golang.org/x/text/cases/trieval.go
 create mode 100644 vendor/golang.org/x/text/internal/internal.go
 create mode 100644 vendor/golang.org/x/text/internal/match.go
 create mode 100644 vendor/k8s.io/apiserver/pkg/authentication/user/doc.go
 create mode 100644 vendor/k8s.io/apiserver/pkg/authentication/user/user.go
 create mode 100644 vendor/kmodules.xyz/offshoot-api/api/v1/gateway_types.go

diff --git a/go.mod b/go.mod
index bc0a6351..7678d223 100644
--- a/go.mod
+++ b/go.mod
@@ -15,10 +15,10 @@ require (
 	k8s.io/apimachinery v0.30.2
 	k8s.io/client-go v0.30.2
 	k8s.io/klog/v2 v2.130.1
-	kmodules.xyz/client-go v0.30.13
-	kmodules.xyz/offshoot-api v0.30.0
+	kmodules.xyz/client-go v0.30.42
+	kmodules.xyz/offshoot-api v0.30.1
 	sigs.k8s.io/yaml v1.4.0
-	stash.appscode.dev/apimachinery v0.35.0
+	stash.appscode.dev/apimachinery v0.37.0
 )
 
 require (
@@ -35,6 +35,7 @@ require (
 	github.com/evanphx/json-patch/v5 v5.9.0 // indirect
 	github.com/fatih/structs v1.1.0 // indirect
 	github.com/fsnotify/fsnotify v1.7.0 // indirect
+	github.com/ghodss/yaml v1.0.0 // indirect
 	github.com/go-logr/logr v1.4.2 // indirect
 	github.com/go-openapi/jsonpointer v0.21.0 // indirect
 	github.com/go-openapi/jsonreference v0.21.0 // indirect
@@ -48,6 +49,7 @@ require (
 	github.com/google/go-containerregistry v0.19.1 // indirect
 	github.com/google/gofuzz v1.2.0 // indirect
 	github.com/google/uuid v1.6.0 // indirect
+	github.com/gorilla/websocket v1.5.1 // indirect
 	github.com/imdario/mergo v0.3.16 // indirect
 	github.com/inconshreveable/mousetrap v1.1.0 // indirect
 	github.com/josharian/intern v1.0.0 // indirect
@@ -65,8 +67,12 @@ require (
 	github.com/prometheus/client_model v0.6.1 // indirect
 	github.com/prometheus/common v0.46.0 // indirect
 	github.com/prometheus/procfs v0.15.0 // indirect
+	github.com/rancher/norman v0.0.0-20240708202514-a0127673d1b9 // indirect
+	github.com/rancher/rancher/pkg/client v0.0.0-20240710123941-93e332156bbe // indirect
+	github.com/rancher/wrangler/v3 v3.0.0 // indirect
 	github.com/rogpeppe/go-internal v1.12.0 // indirect
 	github.com/sergi/go-diff v1.2.0 // indirect
+	github.com/sirupsen/logrus v1.9.3 // indirect
 	github.com/spf13/pflag v1.0.5 // indirect
 	github.com/yudai/gojsondiff v1.0.0 // indirect
 	github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect
@@ -74,11 +80,11 @@ require (
 	go.bytebuilders.dev/license-proxyserver v0.0.11 // indirect
 	go.bytebuilders.dev/license-verifier v0.14.1 // indirect
 	golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect
-	golang.org/x/net v0.27.0 // indirect
-	golang.org/x/oauth2 v0.21.0 // indirect
-	golang.org/x/sys v0.22.0 // indirect
-	golang.org/x/term v0.22.0 // indirect
-	golang.org/x/text v0.16.0 // indirect
+	golang.org/x/net v0.29.0 // indirect
+	golang.org/x/oauth2 v0.22.0 // indirect
+	golang.org/x/sys v0.28.0 // indirect
+	golang.org/x/term v0.27.0 // indirect
+	golang.org/x/text v0.21.0 // indirect
 	golang.org/x/time v0.5.0 // indirect
 	gomodules.xyz/clock v0.0.0-20200817085942-06523dba733f // indirect
 	gomodules.xyz/go-sh v0.1.0 // indirect
diff --git a/go.sum b/go.sum
index 8700529e..fc4b8518 100644
--- a/go.sum
+++ b/go.sum
@@ -65,6 +65,7 @@ github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga
 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
 github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
 github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
+github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
 github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
 github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
 github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
@@ -130,6 +131,8 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+
 github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
 github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY=
+github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY=
 github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
 github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
@@ -253,6 +256,12 @@ github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7z
 github.com/prometheus/procfs v0.15.0 h1:A82kmvXJq2jTu5YUhSGNlYoxh85zLnKgPz4bMZgI5Ek=
 github.com/prometheus/procfs v0.15.0/go.mod h1:Y0RJ/Y5g5wJpkTisOtqwDSo4HwhGmLB4VQSw2sQJLHk=
 github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
+github.com/rancher/norman v0.0.0-20240708202514-a0127673d1b9 h1:AlRMRs5mHJcdiK83KKJyFVeybPMZ7dOUzC0l3k9aUa8=
+github.com/rancher/norman v0.0.0-20240708202514-a0127673d1b9/go.mod h1:dyjfXBsNiroPWOdUZe7diUOUSLf6HQ/r2kEpwH/8zas=
+github.com/rancher/rancher/pkg/client v0.0.0-20240710123941-93e332156bbe h1:ZD+h5ylTFvzjMDb/DS0R+q3FuoGSB6IFgd8bqRIrnZY=
+github.com/rancher/rancher/pkg/client v0.0.0-20240710123941-93e332156bbe/go.mod h1:A+DTKG05BZs1mOoCIB6UpiKo7j0dC6kSz3mgYju9Q20=
+github.com/rancher/wrangler/v3 v3.0.0 h1:IHHCA+vrghJDPxjtLk4fmeSCFhNe9fFzLFj3m2B0YpA=
+github.com/rancher/wrangler/v3 v3.0.0/go.mod h1:Dfckuuq7MJk2JWVBDywRlZXMxEyPxHy4XqGrPEzu5Eg=
 github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
 github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
 github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
@@ -265,6 +274,8 @@ github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
 github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
 github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
 github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
+github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
+github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
 github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
 github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
 github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
@@ -285,6 +296,7 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
 github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
 github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
@@ -365,13 +377,13 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=
-golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
+golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
+golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=
-golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA=
+golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -393,16 +405,17 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
-golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk=
-golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
+golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
+golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
-golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
 golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
@@ -497,6 +510,7 @@ gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
@@ -523,14 +537,14 @@ k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCI
 k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
 kmodules.xyz/apiversion v0.2.0 h1:vAQYqZFm4xu4pbB1cAdHbFEPES6EQkcR4wc06xdTOWk=
 kmodules.xyz/apiversion v0.2.0/go.mod h1:oPX8g8LvlPdPX3Yc5YvCzJHQnw3YF/X4/jdW0b1am80=
-kmodules.xyz/client-go v0.30.13 h1:Tpvg7ZlSNlzjB0NZT9hUe9JrO7FN4PjUUF1hNUXSku0=
-kmodules.xyz/client-go v0.30.13/go.mod h1:XL3PDQIXG4s3xNRL2SSxIvi8b2WyMGpn26dFnOBz0j4=
+kmodules.xyz/client-go v0.30.42 h1:79x66I8betRJtmFzKS46ujXzXVKAxpXNsm32ayNxTEA=
+kmodules.xyz/client-go v0.30.42/go.mod h1:ZOxyEdoSZByjZLkzSM3Q8p1zXMayflK7jQQnWMG2Yj8=
 kmodules.xyz/custom-resources v0.30.0 h1:vR3CbseHMLwR4GvtcJJuRuwIV8voKqFqNii27rMcm1o=
 kmodules.xyz/custom-resources v0.30.0/go.mod h1:ZsTuI2mLG2s3byre7bHmpxJ9w0HDqAkRTL1+izGFI24=
 kmodules.xyz/objectstore-api v0.29.1 h1:uUsjf8KU0w4LYowSEOnl0AbHT3hsHIu1wNLHqGe1o6s=
 kmodules.xyz/objectstore-api v0.29.1/go.mod h1:xG+5awH1SXYKxwN/+k1FEQvzixd5tgNqEN/1LEiB2FE=
-kmodules.xyz/offshoot-api v0.30.0 h1:dq9F93pu4Q8rL9oTcCk+vGGy8vpS7RNt0GSwx7Bvhec=
-kmodules.xyz/offshoot-api v0.30.0/go.mod h1:o9VoA3ImZMDBp3lpLb8+kc2d/KBxioRwCpaKDfLIyDw=
+kmodules.xyz/offshoot-api v0.30.1 h1:TrulAYO+oBsXe9sZZGTmNWIuI8qD2izMpgcTSPvgAmI=
+kmodules.xyz/offshoot-api v0.30.1/go.mod h1:T3mpjR6fui0QzOcmQvIuANytW48fe9ytmy/1cgx6D4g=
 kmodules.xyz/prober v0.29.0 h1:Ex7m4F9rH7uWNNJlLgP63ROOM+nUATJkC2L5OQ7nwMg=
 kmodules.xyz/prober v0.29.0/go.mod h1:UtK+HKyI1lFLEKX+HFLyOCVju6TO93zv3kwGpzqmKOo=
 rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
@@ -540,5 +554,5 @@ sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+s
 sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
 sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
 sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
-stash.appscode.dev/apimachinery v0.35.0 h1:Z+2v4vqEUi7yJeg5yCg4Kh2YDq8HtgQf/9jYYst6uW0=
-stash.appscode.dev/apimachinery v0.35.0/go.mod h1:YigRBV5veSSAzN23ibQcpkChvq8HPdiU0kq8uvw/5Fo=
+stash.appscode.dev/apimachinery v0.37.0 h1:dwKOX6XHTbTMxxRB4+nEyy740NT6+n/Rmr6Cfp+vRqE=
+stash.appscode.dev/apimachinery v0.37.0/go.mod h1:Q+GTcB8/VWNqG9yywbMBWiRDnYT29tnEDnGnCYtKq4g=
diff --git a/vendor/github.com/ghodss/yaml/.gitignore b/vendor/github.com/ghodss/yaml/.gitignore
new file mode 100644
index 00000000..e256a31e
--- /dev/null
+++ b/vendor/github.com/ghodss/yaml/.gitignore
@@ -0,0 +1,20 @@
+# OSX leaves these everywhere on SMB shares
+._*
+
+# Eclipse files
+.classpath
+.project
+.settings/**
+
+# Emacs save files
+*~
+
+# Vim-related files
+[._]*.s[a-w][a-z]
+[._]s[a-w][a-z]
+*.un~
+Session.vim
+.netrwhist
+
+# Go test binaries
+*.test
diff --git a/vendor/github.com/ghodss/yaml/.travis.yml b/vendor/github.com/ghodss/yaml/.travis.yml
new file mode 100644
index 00000000..0e9d6edc
--- /dev/null
+++ b/vendor/github.com/ghodss/yaml/.travis.yml
@@ -0,0 +1,7 @@
+language: go
+go:
+  - 1.3
+  - 1.4
+script:
+  - go test
+  - go build
diff --git a/vendor/github.com/ghodss/yaml/LICENSE b/vendor/github.com/ghodss/yaml/LICENSE
new file mode 100644
index 00000000..7805d36d
--- /dev/null
+++ b/vendor/github.com/ghodss/yaml/LICENSE
@@ -0,0 +1,50 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Sam Ghods
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+Copyright (c) 2012 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+   * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/github.com/ghodss/yaml/README.md b/vendor/github.com/ghodss/yaml/README.md
new file mode 100644
index 00000000..0200f75b
--- /dev/null
+++ b/vendor/github.com/ghodss/yaml/README.md
@@ -0,0 +1,121 @@
+# YAML marshaling and unmarshaling support for Go
+
+[![Build Status](https://travis-ci.org/ghodss/yaml.svg)](https://travis-ci.org/ghodss/yaml)
+
+## Introduction
+
+A wrapper around [go-yaml](https://github.com/go-yaml/yaml) designed to enable a better way of handling YAML when marshaling to and from structs.
+
+In short, this library first converts YAML to JSON using go-yaml and then uses `json.Marshal` and `json.Unmarshal` to convert to or from the struct. This means that it effectively reuses the JSON struct tags as well as the custom JSON methods `MarshalJSON` and `UnmarshalJSON` unlike go-yaml. For a detailed overview of the rationale behind this method, [see this blog post](http://ghodss.com/2014/the-right-way-to-handle-yaml-in-golang/).
+
+## Compatibility
+
+This package uses [go-yaml](https://github.com/go-yaml/yaml) and therefore supports [everything go-yaml supports](https://github.com/go-yaml/yaml#compatibility).
+
+## Caveats
+
+**Caveat #1:** When using `yaml.Marshal` and `yaml.Unmarshal`, binary data should NOT be preceded with the `!!binary` YAML tag. If you do, go-yaml will convert the binary data from base64 to native binary data, which is not compatible with JSON. You can still use binary in your YAML files though - just store them without the `!!binary` tag and decode the base64 in your code (e.g. in the custom JSON methods `MarshalJSON` and `UnmarshalJSON`). This also has the benefit that your YAML and your JSON binary data will be decoded exactly the same way. As an example:
+
+```
+BAD:
+	exampleKey: !!binary gIGC
+
+GOOD:
+	exampleKey: gIGC
+... and decode the base64 data in your code.
+```
+
+**Caveat #2:** When using `YAMLToJSON` directly, maps with keys that are maps will result in an error since this is not supported by JSON. This error will occur in `Unmarshal` as well since you can't unmarshal map keys anyways since struct fields can't be keys.
+
+## Installation and usage
+
+To install, run:
+
+```
+$ go get github.com/ghodss/yaml
+```
+
+And import using:
+
+```
+import "github.com/ghodss/yaml"
+```
+
+Usage is very similar to the JSON library:
+
+```go
+package main
+
+import (
+	"fmt"
+
+	"github.com/ghodss/yaml"
+)
+
+type Person struct {
+	Name string `json:"name"` // Affects YAML field names too.
+	Age  int    `json:"age"`
+}
+
+func main() {
+	// Marshal a Person struct to YAML.
+	p := Person{"John", 30}
+	y, err := yaml.Marshal(p)
+	if err != nil {
+		fmt.Printf("err: %v\n", err)
+		return
+	}
+	fmt.Println(string(y))
+	/* Output:
+	age: 30
+	name: John
+	*/
+
+	// Unmarshal the YAML back into a Person struct.
+	var p2 Person
+	err = yaml.Unmarshal(y, &p2)
+	if err != nil {
+		fmt.Printf("err: %v\n", err)
+		return
+	}
+	fmt.Println(p2)
+	/* Output:
+	{John 30}
+	*/
+}
+```
+
+`yaml.YAMLToJSON` and `yaml.JSONToYAML` methods are also available:
+
+```go
+package main
+
+import (
+	"fmt"
+
+	"github.com/ghodss/yaml"
+)
+
+func main() {
+	j := []byte(`{"name": "John", "age": 30}`)
+	y, err := yaml.JSONToYAML(j)
+	if err != nil {
+		fmt.Printf("err: %v\n", err)
+		return
+	}
+	fmt.Println(string(y))
+	/* Output:
+	name: John
+	age: 30
+	*/
+	j2, err := yaml.YAMLToJSON(y)
+	if err != nil {
+		fmt.Printf("err: %v\n", err)
+		return
+	}
+	fmt.Println(string(j2))
+	/* Output:
+	{"age":30,"name":"John"}
+	*/
+}
+```
diff --git a/vendor/github.com/ghodss/yaml/fields.go b/vendor/github.com/ghodss/yaml/fields.go
new file mode 100644
index 00000000..58600740
--- /dev/null
+++ b/vendor/github.com/ghodss/yaml/fields.go
@@ -0,0 +1,501 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+package yaml
+
+import (
+	"bytes"
+	"encoding"
+	"encoding/json"
+	"reflect"
+	"sort"
+	"strings"
+	"sync"
+	"unicode"
+	"unicode/utf8"
+)
+
+// indirect walks down v allocating pointers as needed,
+// until it gets to a non-pointer.
+// if it encounters an Unmarshaler, indirect stops and returns that.
+// if decodingNull is true, indirect stops at the last pointer so it can be set to nil.
+func indirect(v reflect.Value, decodingNull bool) (json.Unmarshaler, encoding.TextUnmarshaler, reflect.Value) {
+	// If v is a named type and is addressable,
+	// start with its address, so that if the type has pointer methods,
+	// we find them.
+	if v.Kind() != reflect.Ptr && v.Type().Name() != "" && v.CanAddr() {
+		v = v.Addr()
+	}
+	for {
+		// Load value from interface, but only if the result will be
+		// usefully addressable.
+		if v.Kind() == reflect.Interface && !v.IsNil() {
+			e := v.Elem()
+			if e.Kind() == reflect.Ptr && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Ptr) {
+				v = e
+				continue
+			}
+		}
+
+		if v.Kind() != reflect.Ptr {
+			break
+		}
+
+		if v.Elem().Kind() != reflect.Ptr && decodingNull && v.CanSet() {
+			break
+		}
+		if v.IsNil() {
+			if v.CanSet() {
+				v.Set(reflect.New(v.Type().Elem()))
+			} else {
+				v = reflect.New(v.Type().Elem())
+			}
+		}
+		if v.Type().NumMethod() > 0 {
+			if u, ok := v.Interface().(json.Unmarshaler); ok {
+				return u, nil, reflect.Value{}
+			}
+			if u, ok := v.Interface().(encoding.TextUnmarshaler); ok {
+				return nil, u, reflect.Value{}
+			}
+		}
+		v = v.Elem()
+	}
+	return nil, nil, v
+}
+
+// A field represents a single field found in a struct.
+type field struct {
+	name      string
+	nameBytes []byte                 // []byte(name)
+	equalFold func(s, t []byte) bool // bytes.EqualFold or equivalent
+
+	tag       bool
+	index     []int
+	typ       reflect.Type
+	omitEmpty bool
+	quoted    bool
+}
+
+func fillField(f field) field {
+	f.nameBytes = []byte(f.name)
+	f.equalFold = foldFunc(f.nameBytes)
+	return f
+}
+
+// byName sorts field by name, breaking ties with depth,
+// then breaking ties with "name came from json tag", then
+// breaking ties with index sequence.
+type byName []field
+
+func (x byName) Len() int { return len(x) }
+
+func (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
+
+func (x byName) Less(i, j int) bool {
+	if x[i].name != x[j].name {
+		return x[i].name < x[j].name
+	}
+	if len(x[i].index) != len(x[j].index) {
+		return len(x[i].index) < len(x[j].index)
+	}
+	if x[i].tag != x[j].tag {
+		return x[i].tag
+	}
+	return byIndex(x).Less(i, j)
+}
+
+// byIndex sorts field by index sequence.
+type byIndex []field
+
+func (x byIndex) Len() int { return len(x) }
+
+func (x byIndex) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
+
+func (x byIndex) Less(i, j int) bool {
+	for k, xik := range x[i].index {
+		if k >= len(x[j].index) {
+			return false
+		}
+		if xik != x[j].index[k] {
+			return xik < x[j].index[k]
+		}
+	}
+	return len(x[i].index) < len(x[j].index)
+}
+
+// typeFields returns a list of fields that JSON should recognize for the given type.
+// The algorithm is breadth-first search over the set of structs to include - the top struct
+// and then any reachable anonymous structs.
+func typeFields(t reflect.Type) []field {
+	// Anonymous fields to explore at the current level and the next.
+	current := []field{}
+	next := []field{{typ: t}}
+
+	// Count of queued names for current level and the next.
+	count := map[reflect.Type]int{}
+	nextCount := map[reflect.Type]int{}
+
+	// Types already visited at an earlier level.
+	visited := map[reflect.Type]bool{}
+
+	// Fields found.
+	var fields []field
+
+	for len(next) > 0 {
+		current, next = next, current[:0]
+		count, nextCount = nextCount, map[reflect.Type]int{}
+
+		for _, f := range current {
+			if visited[f.typ] {
+				continue
+			}
+			visited[f.typ] = true
+
+			// Scan f.typ for fields to include.
+			for i := 0; i < f.typ.NumField(); i++ {
+				sf := f.typ.Field(i)
+				if sf.PkgPath != "" { // unexported
+					continue
+				}
+				tag := sf.Tag.Get("json")
+				if tag == "-" {
+					continue
+				}
+				name, opts := parseTag(tag)
+				if !isValidTag(name) {
+					name = ""
+				}
+				index := make([]int, len(f.index)+1)
+				copy(index, f.index)
+				index[len(f.index)] = i
+
+				ft := sf.Type
+				if ft.Name() == "" && ft.Kind() == reflect.Ptr {
+					// Follow pointer.
+					ft = ft.Elem()
+				}
+
+				// Record found field and index sequence.
+				if name != "" || !sf.Anonymous || ft.Kind() != reflect.Struct {
+					tagged := name != ""
+					if name == "" {
+						name = sf.Name
+					}
+					fields = append(fields, fillField(field{
+						name:      name,
+						tag:       tagged,
+						index:     index,
+						typ:       ft,
+						omitEmpty: opts.Contains("omitempty"),
+						quoted:    opts.Contains("string"),
+					}))
+					if count[f.typ] > 1 {
+						// If there were multiple instances, add a second,
+						// so that the annihilation code will see a duplicate.
+						// It only cares about the distinction between 1 or 2,
+						// so don't bother generating any more copies.
+						fields = append(fields, fields[len(fields)-1])
+					}
+					continue
+				}
+
+				// Record new anonymous struct to explore in next round.
+				nextCount[ft]++
+				if nextCount[ft] == 1 {
+					next = append(next, fillField(field{name: ft.Name(), index: index, typ: ft}))
+				}
+			}
+		}
+	}
+
+	sort.Sort(byName(fields))
+
+	// Delete all fields that are hidden by the Go rules for embedded fields,
+	// except that fields with JSON tags are promoted.
+
+	// The fields are sorted in primary order of name, secondary order
+	// of field index length. Loop over names; for each name, delete
+	// hidden fields by choosing the one dominant field that survives.
+	out := fields[:0]
+	for advance, i := 0, 0; i < len(fields); i += advance {
+		// One iteration per name.
+		// Find the sequence of fields with the name of this first field.
+		fi := fields[i]
+		name := fi.name
+		for advance = 1; i+advance < len(fields); advance++ {
+			fj := fields[i+advance]
+			if fj.name != name {
+				break
+			}
+		}
+		if advance == 1 { // Only one field with this name
+			out = append(out, fi)
+			continue
+		}
+		dominant, ok := dominantField(fields[i : i+advance])
+		if ok {
+			out = append(out, dominant)
+		}
+	}
+
+	fields = out
+	sort.Sort(byIndex(fields))
+
+	return fields
+}
+
+// dominantField looks through the fields, all of which are known to
+// have the same name, to find the single field that dominates the
+// others using Go's embedding rules, modified by the presence of
+// JSON tags. If there are multiple top-level fields, the boolean
+// will be false: This condition is an error in Go and we skip all
+// the fields.
+func dominantField(fields []field) (field, bool) {
+	// The fields are sorted in increasing index-length order. The winner
+	// must therefore be one with the shortest index length. Drop all
+	// longer entries, which is easy: just truncate the slice.
+	length := len(fields[0].index)
+	tagged := -1 // Index of first tagged field.
+	for i, f := range fields {
+		if len(f.index) > length {
+			fields = fields[:i]
+			break
+		}
+		if f.tag {
+			if tagged >= 0 {
+				// Multiple tagged fields at the same level: conflict.
+				// Return no field.
+				return field{}, false
+			}
+			tagged = i
+		}
+	}
+	if tagged >= 0 {
+		return fields[tagged], true
+	}
+	// All remaining fields have the same length. If there's more than one,
+	// we have a conflict (two fields named "X" at the same level) and we
+	// return no field.
+	if len(fields) > 1 {
+		return field{}, false
+	}
+	return fields[0], true
+}
+
+var fieldCache struct {
+	sync.RWMutex
+	m map[reflect.Type][]field
+}
+
+// cachedTypeFields is like typeFields but uses a cache to avoid repeated work.
+func cachedTypeFields(t reflect.Type) []field {
+	fieldCache.RLock()
+	f := fieldCache.m[t]
+	fieldCache.RUnlock()
+	if f != nil {
+		return f
+	}
+
+	// Compute fields without lock.
+	// Might duplicate effort but won't hold other computations back.
+	f = typeFields(t)
+	if f == nil {
+		f = []field{}
+	}
+
+	fieldCache.Lock()
+	if fieldCache.m == nil {
+		fieldCache.m = map[reflect.Type][]field{}
+	}
+	fieldCache.m[t] = f
+	fieldCache.Unlock()
+	return f
+}
+
+func isValidTag(s string) bool {
+	if s == "" {
+		return false
+	}
+	for _, c := range s {
+		switch {
+		case strings.ContainsRune("!#$%&()*+-./:<=>?@[]^_{|}~ ", c):
+			// Backslash and quote chars are reserved, but
+			// otherwise any punctuation chars are allowed
+			// in a tag name.
+		default:
+			if !unicode.IsLetter(c) && !unicode.IsDigit(c) {
+				return false
+			}
+		}
+	}
+	return true
+}
+
+const (
+	caseMask     = ^byte(0x20) // Mask to ignore case in ASCII.
+	kelvin       = '\u212a'
+	smallLongEss = '\u017f'
+)
+
+// foldFunc returns one of four different case folding equivalence
+// functions, from most general (and slow) to fastest:
+//
+// 1) bytes.EqualFold, if the key s contains any non-ASCII UTF-8
+// 2) equalFoldRight, if s contains special folding ASCII ('k', 'K', 's', 'S')
+// 3) asciiEqualFold, no special, but includes non-letters (including _)
+// 4) simpleLetterEqualFold, no specials, no non-letters.
+//
+// The letters S and K are special because they map to 3 runes, not just 2:
+//  * S maps to s and to U+017F 'ſ' Latin small letter long s
+//  * k maps to K and to U+212A 'K' Kelvin sign
+// See http://play.golang.org/p/tTxjOc0OGo
+//
+// The returned function is specialized for matching against s and
+// should only be given s. It's not curried for performance reasons.
+func foldFunc(s []byte) func(s, t []byte) bool {
+	nonLetter := false
+	special := false // special letter
+	for _, b := range s {
+		if b >= utf8.RuneSelf {
+			return bytes.EqualFold
+		}
+		upper := b & caseMask
+		if upper < 'A' || upper > 'Z' {
+			nonLetter = true
+		} else if upper == 'K' || upper == 'S' {
+			// See above for why these letters are special.
+			special = true
+		}
+	}
+	if special {
+		return equalFoldRight
+	}
+	if nonLetter {
+		return asciiEqualFold
+	}
+	return simpleLetterEqualFold
+}
+
+// equalFoldRight is a specialization of bytes.EqualFold when s is
+// known to be all ASCII (including punctuation), but contains an 's',
+// 'S', 'k', or 'K', requiring a Unicode fold on the bytes in t.
+// See comments on foldFunc.
+func equalFoldRight(s, t []byte) bool {
+	for _, sb := range s {
+		if len(t) == 0 {
+			return false
+		}
+		tb := t[0]
+		if tb < utf8.RuneSelf {
+			if sb != tb {
+				sbUpper := sb & caseMask
+				if 'A' <= sbUpper && sbUpper <= 'Z' {
+					if sbUpper != tb&caseMask {
+						return false
+					}
+				} else {
+					return false
+				}
+			}
+			t = t[1:]
+			continue
+		}
+		// sb is ASCII and t is not. t must be either kelvin
+		// sign or long s; sb must be s, S, k, or K.
+		tr, size := utf8.DecodeRune(t)
+		switch sb {
+		case 's', 'S':
+			if tr != smallLongEss {
+				return false
+			}
+		case 'k', 'K':
+			if tr != kelvin {
+				return false
+			}
+		default:
+			return false
+		}
+		t = t[size:]
+
+	}
+	if len(t) > 0 {
+		return false
+	}
+	return true
+}
+
+// asciiEqualFold is a specialization of bytes.EqualFold for use when
+// s is all ASCII (but may contain non-letters) and contains no
+// special-folding letters.
+// See comments on foldFunc.
+func asciiEqualFold(s, t []byte) bool {
+	if len(s) != len(t) {
+		return false
+	}
+	for i, sb := range s {
+		tb := t[i]
+		if sb == tb {
+			continue
+		}
+		if ('a' <= sb && sb <= 'z') || ('A' <= sb && sb <= 'Z') {
+			if sb&caseMask != tb&caseMask {
+				return false
+			}
+		} else {
+			return false
+		}
+	}
+	return true
+}
+
+// simpleLetterEqualFold is a specialization of bytes.EqualFold for
+// use when s is all ASCII letters (no underscores, etc) and also
+// doesn't contain 'k', 'K', 's', or 'S'.
+// See comments on foldFunc.
+func simpleLetterEqualFold(s, t []byte) bool {
+	if len(s) != len(t) {
+		return false
+	}
+	for i, b := range s {
+		if b&caseMask != t[i]&caseMask {
+			return false
+		}
+	}
+	return true
+}
+
+// tagOptions is the string following a comma in a struct field's "json"
+// tag, or the empty string. It does not include the leading comma.
+type tagOptions string
+
+// parseTag splits a struct field's json tag into its name and
+// comma-separated options.
+func parseTag(tag string) (string, tagOptions) {
+	if idx := strings.Index(tag, ","); idx != -1 {
+		return tag[:idx], tagOptions(tag[idx+1:])
+	}
+	return tag, tagOptions("")
+}
+
+// Contains reports whether a comma-separated list of options
+// contains a particular substr flag. substr must be surrounded by a
+// string boundary or commas.
+func (o tagOptions) Contains(optionName string) bool {
+	if len(o) == 0 {
+		return false
+	}
+	s := string(o)
+	for s != "" {
+		var next string
+		i := strings.Index(s, ",")
+		if i >= 0 {
+			s, next = s[:i], s[i+1:]
+		}
+		if s == optionName {
+			return true
+		}
+		s = next
+	}
+	return false
+}
diff --git a/vendor/github.com/ghodss/yaml/yaml.go b/vendor/github.com/ghodss/yaml/yaml.go
new file mode 100644
index 00000000..4fb4054a
--- /dev/null
+++ b/vendor/github.com/ghodss/yaml/yaml.go
@@ -0,0 +1,277 @@
+package yaml
+
+import (
+	"bytes"
+	"encoding/json"
+	"fmt"
+	"reflect"
+	"strconv"
+
+	"gopkg.in/yaml.v2"
+)
+
+// Marshals the object into JSON then converts JSON to YAML and returns the
+// YAML.
+func Marshal(o interface{}) ([]byte, error) {
+	j, err := json.Marshal(o)
+	if err != nil {
+		return nil, fmt.Errorf("error marshaling into JSON: %v", err)
+	}
+
+	y, err := JSONToYAML(j)
+	if err != nil {
+		return nil, fmt.Errorf("error converting JSON to YAML: %v", err)
+	}
+
+	return y, nil
+}
+
+// Converts YAML to JSON then uses JSON to unmarshal into an object.
+func Unmarshal(y []byte, o interface{}) error {
+	vo := reflect.ValueOf(o)
+	j, err := yamlToJSON(y, &vo)
+	if err != nil {
+		return fmt.Errorf("error converting YAML to JSON: %v", err)
+	}
+
+	err = json.Unmarshal(j, o)
+	if err != nil {
+		return fmt.Errorf("error unmarshaling JSON: %v", err)
+	}
+
+	return nil
+}
+
+// Convert JSON to YAML.
+func JSONToYAML(j []byte) ([]byte, error) {
+	// Convert the JSON to an object.
+	var jsonObj interface{}
+	// We are using yaml.Unmarshal here (instead of json.Unmarshal) because the
+	// Go JSON library doesn't try to pick the right number type (int, float,
+	// etc.) when unmarshalling to interface{}, it just picks float64
+	// universally. go-yaml does go through the effort of picking the right
+	// number type, so we can preserve number type throughout this process.
+	err := yaml.Unmarshal(j, &jsonObj)
+	if err != nil {
+		return nil, err
+	}
+
+	// Marshal this object into YAML.
+	return yaml.Marshal(jsonObj)
+}
+
+// Convert YAML to JSON. Since JSON is a subset of YAML, passing JSON through
+// this method should be a no-op.
+//
+// Things YAML can do that are not supported by JSON:
+// * In YAML you can have binary and null keys in your maps. These are invalid
+//   in JSON. (int and float keys are converted to strings.)
+// * Binary data in YAML with the !!binary tag is not supported. If you want to
+//   use binary data with this library, encode the data as base64 as usual but do
+//   not use the !!binary tag in your YAML. This will ensure the original base64
+//   encoded data makes it all the way through to the JSON.
+func YAMLToJSON(y []byte) ([]byte, error) {
+	return yamlToJSON(y, nil)
+}
+
+func yamlToJSON(y []byte, jsonTarget *reflect.Value) ([]byte, error) {
+	// Convert the YAML to an object.
+	var yamlObj interface{}
+	err := yaml.Unmarshal(y, &yamlObj)
+	if err != nil {
+		return nil, err
+	}
+
+	// YAML objects are not completely compatible with JSON objects (e.g. you
+	// can have non-string keys in YAML). So, convert the YAML-compatible object
+	// to a JSON-compatible object, failing with an error if irrecoverable
+	// incompatibilties happen along the way.
+	jsonObj, err := convertToJSONableObject(yamlObj, jsonTarget)
+	if err != nil {
+		return nil, err
+	}
+
+	// Convert this object to JSON and return the data.
+	return json.Marshal(jsonObj)
+}
+
+func convertToJSONableObject(yamlObj interface{}, jsonTarget *reflect.Value) (interface{}, error) {
+	var err error
+
+	// Resolve jsonTarget to a concrete value (i.e. not a pointer or an
+	// interface). We pass decodingNull as false because we're not actually
+	// decoding into the value, we're just checking if the ultimate target is a
+	// string.
+	if jsonTarget != nil {
+		ju, tu, pv := indirect(*jsonTarget, false)
+		// We have a JSON or Text Umarshaler at this level, so we can't be trying
+		// to decode into a string.
+		if ju != nil || tu != nil {
+			jsonTarget = nil
+		} else {
+			jsonTarget = &pv
+		}
+	}
+
+	// If yamlObj is a number or a boolean, check if jsonTarget is a string -
+	// if so, coerce.  Else return normal.
+	// If yamlObj is a map or array, find the field that each key is
+	// unmarshaling to, and when you recurse pass the reflect.Value for that
+	// field back into this function.
+	switch typedYAMLObj := yamlObj.(type) {
+	case map[interface{}]interface{}:
+		// JSON does not support arbitrary keys in a map, so we must convert
+		// these keys to strings.
+		//
+		// From my reading of go-yaml v2 (specifically the resolve function),
+		// keys can only have the types string, int, int64, float64, binary
+		// (unsupported), or null (unsupported).
+		strMap := make(map[string]interface{})
+		for k, v := range typedYAMLObj {
+			// Resolve the key to a string first.
+			var keyString string
+			switch typedKey := k.(type) {
+			case string:
+				keyString = typedKey
+			case int:
+				keyString = strconv.Itoa(typedKey)
+			case int64:
+				// go-yaml will only return an int64 as a key if the system
+				// architecture is 32-bit and the key's value is between 32-bit
+				// and 64-bit. Otherwise the key type will simply be int.
+				keyString = strconv.FormatInt(typedKey, 10)
+			case float64:
+				// Stolen from go-yaml to use the same conversion to string as
+				// the go-yaml library uses to convert float to string when
+				// Marshaling.
+				s := strconv.FormatFloat(typedKey, 'g', -1, 32)
+				switch s {
+				case "+Inf":
+					s = ".inf"
+				case "-Inf":
+					s = "-.inf"
+				case "NaN":
+					s = ".nan"
+				}
+				keyString = s
+			case bool:
+				if typedKey {
+					keyString = "true"
+				} else {
+					keyString = "false"
+				}
+			default:
+				return nil, fmt.Errorf("Unsupported map key of type: %s, key: %+#v, value: %+#v",
+					reflect.TypeOf(k), k, v)
+			}
+
+			// jsonTarget should be a struct or a map. If it's a struct, find
+			// the field it's going to map to and pass its reflect.Value. If
+			// it's a map, find the element type of the map and pass the
+			// reflect.Value created from that type. If it's neither, just pass
+			// nil - JSON conversion will error for us if it's a real issue.
+			if jsonTarget != nil {
+				t := *jsonTarget
+				if t.Kind() == reflect.Struct {
+					keyBytes := []byte(keyString)
+					// Find the field that the JSON library would use.
+					var f *field
+					fields := cachedTypeFields(t.Type())
+					for i := range fields {
+						ff := &fields[i]
+						if bytes.Equal(ff.nameBytes, keyBytes) {
+							f = ff
+							break
+						}
+						// Do case-insensitive comparison.
+						if f == nil && ff.equalFold(ff.nameBytes, keyBytes) {
+							f = ff
+						}
+					}
+					if f != nil {
+						// Find the reflect.Value of the most preferential
+						// struct field.
+						jtf := t.Field(f.index[0])
+						strMap[keyString], err = convertToJSONableObject(v, &jtf)
+						if err != nil {
+							return nil, err
+						}
+						continue
+					}
+				} else if t.Kind() == reflect.Map {
+					// Create a zero value of the map's element type to use as
+					// the JSON target.
+					jtv := reflect.Zero(t.Type().Elem())
+					strMap[keyString], err = convertToJSONableObject(v, &jtv)
+					if err != nil {
+						return nil, err
+					}
+					continue
+				}
+			}
+			strMap[keyString], err = convertToJSONableObject(v, nil)
+			if err != nil {
+				return nil, err
+			}
+		}
+		return strMap, nil
+	case []interface{}:
+		// We need to recurse into arrays in case there are any
+		// map[interface{}]interface{}'s inside and to convert any
+		// numbers to strings.
+
+		// If jsonTarget is a slice (which it really should be), find the
+		// thing it's going to map to. If it's not a slice, just pass nil
+		// - JSON conversion will error for us if it's a real issue.
+		var jsonSliceElemValue *reflect.Value
+		if jsonTarget != nil {
+			t := *jsonTarget
+			if t.Kind() == reflect.Slice {
+				// By default slices point to nil, but we need a reflect.Value
+				// pointing to a value of the slice type, so we create one here.
+				ev := reflect.Indirect(reflect.New(t.Type().Elem()))
+				jsonSliceElemValue = &ev
+			}
+		}
+
+		// Make and use a new array.
+		arr := make([]interface{}, len(typedYAMLObj))
+		for i, v := range typedYAMLObj {
+			arr[i], err = convertToJSONableObject(v, jsonSliceElemValue)
+			if err != nil {
+				return nil, err
+			}
+		}
+		return arr, nil
+	default:
+		// If the target type is a string and the YAML type is a number,
+		// convert the YAML type to a string.
+		if jsonTarget != nil && (*jsonTarget).Kind() == reflect.String {
+			// Based on my reading of go-yaml, it may return int, int64,
+			// float64, or uint64.
+			var s string
+			switch typedVal := typedYAMLObj.(type) {
+			case int:
+				s = strconv.FormatInt(int64(typedVal), 10)
+			case int64:
+				s = strconv.FormatInt(typedVal, 10)
+			case float64:
+				s = strconv.FormatFloat(typedVal, 'g', -1, 32)
+			case uint64:
+				s = strconv.FormatUint(typedVal, 10)
+			case bool:
+				if typedVal {
+					s = "true"
+				} else {
+					s = "false"
+				}
+			}
+			if len(s) > 0 {
+				yamlObj = interface{}(s)
+			}
+		}
+		return yamlObj, nil
+	}
+
+	return nil, nil
+}
diff --git a/vendor/github.com/gorilla/websocket/.editorconfig b/vendor/github.com/gorilla/websocket/.editorconfig
new file mode 100644
index 00000000..2940ec92
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/.editorconfig
@@ -0,0 +1,20 @@
+; https://editorconfig.org/
+
+root = true
+
+[*]
+insert_final_newline = true
+charset = utf-8
+trim_trailing_whitespace = true
+indent_style = space
+indent_size = 2
+
+[{Makefile,go.mod,go.sum,*.go,.gitmodules}]
+indent_style = tab
+indent_size = 4
+
+[*.md]
+indent_size = 4
+trim_trailing_whitespace = false
+
+eclint_indent_style = unset
diff --git a/vendor/github.com/gorilla/websocket/.gitignore b/vendor/github.com/gorilla/websocket/.gitignore
new file mode 100644
index 00000000..84039fec
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/.gitignore
@@ -0,0 +1 @@
+coverage.coverprofile
diff --git a/vendor/github.com/gorilla/websocket/.golangci.yml b/vendor/github.com/gorilla/websocket/.golangci.yml
new file mode 100644
index 00000000..34882139
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/.golangci.yml
@@ -0,0 +1,3 @@
+run:
+  skip-dirs:
+    - examples/*.go
diff --git a/vendor/github.com/gorilla/websocket/LICENSE b/vendor/github.com/gorilla/websocket/LICENSE
new file mode 100644
index 00000000..bb9d80bc
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) 2023 The Gorilla Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+	 * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+	 * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+	 * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/github.com/gorilla/websocket/Makefile b/vendor/github.com/gorilla/websocket/Makefile
new file mode 100644
index 00000000..603a63f5
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/Makefile
@@ -0,0 +1,34 @@
+GO_LINT=$(shell which golangci-lint 2> /dev/null || echo '')
+GO_LINT_URI=github.com/golangci/golangci-lint/cmd/golangci-lint@latest
+
+GO_SEC=$(shell which gosec 2> /dev/null || echo '')
+GO_SEC_URI=github.com/securego/gosec/v2/cmd/gosec@latest
+
+GO_VULNCHECK=$(shell which govulncheck 2> /dev/null || echo '')
+GO_VULNCHECK_URI=golang.org/x/vuln/cmd/govulncheck@latest
+
+.PHONY: golangci-lint
+golangci-lint:
+	$(if $(GO_LINT), ,go install $(GO_LINT_URI))
+	@echo "##### Running golangci-lint"
+	golangci-lint run -v
+
+.PHONY: gosec
+gosec:
+	$(if $(GO_SEC), ,go install $(GO_SEC_URI))
+	@echo "##### Running gosec"
+	gosec -exclude-dir examples ./...
+
+.PHONY: govulncheck
+govulncheck:
+	$(if $(GO_VULNCHECK), ,go install $(GO_VULNCHECK_URI))
+	@echo "##### Running govulncheck"
+	govulncheck ./...
+
+.PHONY: verify
+verify: golangci-lint gosec govulncheck
+
+.PHONY: test
+test:
+	@echo "##### Running tests"
+	go test -race -cover -coverprofile=coverage.coverprofile -covermode=atomic -v ./...
diff --git a/vendor/github.com/gorilla/websocket/README.md b/vendor/github.com/gorilla/websocket/README.md
new file mode 100644
index 00000000..1fd5e9c4
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/README.md
@@ -0,0 +1,36 @@
+# gorilla/websocket
+
+![testing](https://github.com/gorilla/websocket/actions/workflows/test.yml/badge.svg)
+[![codecov](https://codecov.io/github/gorilla/websocket/branch/main/graph/badge.svg)](https://codecov.io/github/gorilla/websocket)
+[![godoc](https://godoc.org/github.com/gorilla/websocket?status.svg)](https://godoc.org/github.com/gorilla/websocket)
+[![sourcegraph](https://sourcegraph.com/github.com/gorilla/websocket/-/badge.svg)](https://sourcegraph.com/github.com/gorilla/websocket?badge)
+
+Gorilla WebSocket is a [Go](http://golang.org/) implementation of the [WebSocket](http://www.rfc-editor.org/rfc/rfc6455.txt) protocol.
+
+![Gorilla Logo](https://github.com/gorilla/.github/assets/53367916/d92caabf-98e0-473e-bfbf-ab554ba435e5)
+
+
+### Documentation
+
+* [API Reference](https://pkg.go.dev/github.com/gorilla/websocket?tab=doc)
+* [Chat example](https://github.com/gorilla/websocket/tree/master/examples/chat)
+* [Command example](https://github.com/gorilla/websocket/tree/master/examples/command)
+* [Client and server example](https://github.com/gorilla/websocket/tree/master/examples/echo)
+* [File watch example](https://github.com/gorilla/websocket/tree/master/examples/filewatch)
+* [Write buffer pool example](https://github.com/gorilla/websocket/tree/master/examples/bufferpool)
+
+### Status
+
+The Gorilla WebSocket package provides a complete and tested implementation of
+the [WebSocket](http://www.rfc-editor.org/rfc/rfc6455.txt) protocol. The
+package API is stable.
+
+### Installation
+
+    go get github.com/gorilla/websocket
+
+### Protocol Compliance
+
+The Gorilla WebSocket package passes the server tests in the [Autobahn Test
+Suite](https://github.com/crossbario/autobahn-testsuite) using the application in the [examples/autobahn
+subdirectory](https://github.com/gorilla/websocket/tree/master/examples/autobahn).
diff --git a/vendor/github.com/gorilla/websocket/client.go b/vendor/github.com/gorilla/websocket/client.go
new file mode 100644
index 00000000..815b0ca5
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/client.go
@@ -0,0 +1,444 @@
+// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package websocket
+
+import (
+	"bytes"
+	"context"
+	"crypto/tls"
+	"errors"
+	"fmt"
+	"io"
+	"log"
+
+	"net"
+	"net/http"
+	"net/http/httptrace"
+	"net/url"
+	"strings"
+	"time"
+
+	"golang.org/x/net/proxy"
+)
+
+// ErrBadHandshake is returned when the server response to opening handshake is
+// invalid.
+var ErrBadHandshake = errors.New("websocket: bad handshake")
+
+var errInvalidCompression = errors.New("websocket: invalid compression negotiation")
+
+// NewClient creates a new client connection using the given net connection.
+// The URL u specifies the host and request URI. Use requestHeader to specify
+// the origin (Origin), subprotocols (Sec-WebSocket-Protocol) and cookies
+// (Cookie). Use the response.Header to get the selected subprotocol
+// (Sec-WebSocket-Protocol) and cookies (Set-Cookie).
+//
+// If the WebSocket handshake fails, ErrBadHandshake is returned along with a
+// non-nil *http.Response so that callers can handle redirects, authentication,
+// etc.
+//
+// Deprecated: Use Dialer instead.
+func NewClient(netConn net.Conn, u *url.URL, requestHeader http.Header, readBufSize, writeBufSize int) (c *Conn, response *http.Response, err error) {
+	d := Dialer{
+		ReadBufferSize:  readBufSize,
+		WriteBufferSize: writeBufSize,
+		NetDial: func(net, addr string) (net.Conn, error) {
+			return netConn, nil
+		},
+	}
+	return d.Dial(u.String(), requestHeader)
+}
+
+// A Dialer contains options for connecting to WebSocket server.
+//
+// It is safe to call Dialer's methods concurrently.
+type Dialer struct {
+	// NetDial specifies the dial function for creating TCP connections. If
+	// NetDial is nil, net.Dial is used.
+	NetDial func(network, addr string) (net.Conn, error)
+
+	// NetDialContext specifies the dial function for creating TCP connections. If
+	// NetDialContext is nil, NetDial is used.
+	NetDialContext func(ctx context.Context, network, addr string) (net.Conn, error)
+
+	// NetDialTLSContext specifies the dial function for creating TLS/TCP connections. If
+	// NetDialTLSContext is nil, NetDialContext is used.
+	// If NetDialTLSContext is set, Dial assumes the TLS handshake is done there and
+	// TLSClientConfig is ignored.
+	NetDialTLSContext func(ctx context.Context, network, addr string) (net.Conn, error)
+
+	// Proxy specifies a function to return a proxy for a given
+	// Request. If the function returns a non-nil error, the
+	// request is aborted with the provided error.
+	// If Proxy is nil or returns a nil *URL, no proxy is used.
+	Proxy func(*http.Request) (*url.URL, error)
+
+	// TLSClientConfig specifies the TLS configuration to use with tls.Client.
+	// If nil, the default configuration is used.
+	// If either NetDialTLS or NetDialTLSContext are set, Dial assumes the TLS handshake
+	// is done there and TLSClientConfig is ignored.
+	TLSClientConfig *tls.Config
+
+	// HandshakeTimeout specifies the duration for the handshake to complete.
+	HandshakeTimeout time.Duration
+
+	// ReadBufferSize and WriteBufferSize specify I/O buffer sizes in bytes. If a buffer
+	// size is zero, then a useful default size is used. The I/O buffer sizes
+	// do not limit the size of the messages that can be sent or received.
+	ReadBufferSize, WriteBufferSize int
+
+	// WriteBufferPool is a pool of buffers for write operations. If the value
+	// is not set, then write buffers are allocated to the connection for the
+	// lifetime of the connection.
+	//
+	// A pool is most useful when the application has a modest volume of writes
+	// across a large number of connections.
+	//
+	// Applications should use a single pool for each unique value of
+	// WriteBufferSize.
+	WriteBufferPool BufferPool
+
+	// Subprotocols specifies the client's requested subprotocols.
+	Subprotocols []string
+
+	// EnableCompression specifies if the client should attempt to negotiate
+	// per message compression (RFC 7692). Setting this value to true does not
+	// guarantee that compression will be supported. Currently only "no context
+	// takeover" modes are supported.
+	EnableCompression bool
+
+	// Jar specifies the cookie jar.
+	// If Jar is nil, cookies are not sent in requests and ignored
+	// in responses.
+	Jar http.CookieJar
+}
+
+// Dial creates a new client connection by calling DialContext with a background context.
+func (d *Dialer) Dial(urlStr string, requestHeader http.Header) (*Conn, *http.Response, error) {
+	return d.DialContext(context.Background(), urlStr, requestHeader)
+}
+
+var errMalformedURL = errors.New("malformed ws or wss URL")
+
+func hostPortNoPort(u *url.URL) (hostPort, hostNoPort string) {
+	hostPort = u.Host
+	hostNoPort = u.Host
+	if i := strings.LastIndex(u.Host, ":"); i > strings.LastIndex(u.Host, "]") {
+		hostNoPort = hostNoPort[:i]
+	} else {
+		switch u.Scheme {
+		case "wss":
+			hostPort += ":443"
+		case "https":
+			hostPort += ":443"
+		default:
+			hostPort += ":80"
+		}
+	}
+	return hostPort, hostNoPort
+}
+
+// DefaultDialer is a dialer with all fields set to the default values.
+var DefaultDialer = &Dialer{
+	Proxy:            http.ProxyFromEnvironment,
+	HandshakeTimeout: 45 * time.Second,
+}
+
+// nilDialer is dialer to use when receiver is nil.
+var nilDialer = *DefaultDialer
+
+// DialContext creates a new client connection. Use requestHeader to specify the
+// origin (Origin), subprotocols (Sec-WebSocket-Protocol) and cookies (Cookie).
+// Use the response.Header to get the selected subprotocol
+// (Sec-WebSocket-Protocol) and cookies (Set-Cookie).
+//
+// The context will be used in the request and in the Dialer.
+//
+// If the WebSocket handshake fails, ErrBadHandshake is returned along with a
+// non-nil *http.Response so that callers can handle redirects, authentication,
+// etcetera. The response body may not contain the entire response and does not
+// need to be closed by the application.
+func (d *Dialer) DialContext(ctx context.Context, urlStr string, requestHeader http.Header) (*Conn, *http.Response, error) {
+	if d == nil {
+		d = &nilDialer
+	}
+
+	challengeKey, err := generateChallengeKey()
+	if err != nil {
+		return nil, nil, err
+	}
+
+	u, err := url.Parse(urlStr)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	switch u.Scheme {
+	case "ws":
+		u.Scheme = "http"
+	case "wss":
+		u.Scheme = "https"
+	default:
+		return nil, nil, errMalformedURL
+	}
+
+	if u.User != nil {
+		// User name and password are not allowed in websocket URIs.
+		return nil, nil, errMalformedURL
+	}
+
+	req := &http.Request{
+		Method:     http.MethodGet,
+		URL:        u,
+		Proto:      "HTTP/1.1",
+		ProtoMajor: 1,
+		ProtoMinor: 1,
+		Header:     make(http.Header),
+		Host:       u.Host,
+	}
+	req = req.WithContext(ctx)
+
+	// Set the cookies present in the cookie jar of the dialer
+	if d.Jar != nil {
+		for _, cookie := range d.Jar.Cookies(u) {
+			req.AddCookie(cookie)
+		}
+	}
+
+	// Set the request headers using the capitalization for names and values in
+	// RFC examples. Although the capitalization shouldn't matter, there are
+	// servers that depend on it. The Header.Set method is not used because the
+	// method canonicalizes the header names.
+	req.Header["Upgrade"] = []string{"websocket"}
+	req.Header["Connection"] = []string{"Upgrade"}
+	req.Header["Sec-WebSocket-Key"] = []string{challengeKey}
+	req.Header["Sec-WebSocket-Version"] = []string{"13"}
+	if len(d.Subprotocols) > 0 {
+		req.Header["Sec-WebSocket-Protocol"] = []string{strings.Join(d.Subprotocols, ", ")}
+	}
+	for k, vs := range requestHeader {
+		switch {
+		case k == "Host":
+			if len(vs) > 0 {
+				req.Host = vs[0]
+			}
+		case k == "Upgrade" ||
+			k == "Connection" ||
+			k == "Sec-Websocket-Key" ||
+			k == "Sec-Websocket-Version" ||
+			//#nosec G101 (CWE-798): Potential HTTP request smuggling via parameter pollution
+			k == "Sec-Websocket-Extensions" ||
+			(k == "Sec-Websocket-Protocol" && len(d.Subprotocols) > 0):
+			return nil, nil, errors.New("websocket: duplicate header not allowed: " + k)
+		case k == "Sec-Websocket-Protocol":
+			req.Header["Sec-WebSocket-Protocol"] = vs
+		default:
+			req.Header[k] = vs
+		}
+	}
+
+	if d.EnableCompression {
+		req.Header["Sec-WebSocket-Extensions"] = []string{"permessage-deflate; server_no_context_takeover; client_no_context_takeover"}
+	}
+
+	if d.HandshakeTimeout != 0 {
+		var cancel func()
+		ctx, cancel = context.WithTimeout(ctx, d.HandshakeTimeout)
+		defer cancel()
+	}
+
+	// Get network dial function.
+	var netDial func(network, add string) (net.Conn, error)
+
+	switch u.Scheme {
+	case "http":
+		if d.NetDialContext != nil {
+			netDial = func(network, addr string) (net.Conn, error) {
+				return d.NetDialContext(ctx, network, addr)
+			}
+		} else if d.NetDial != nil {
+			netDial = d.NetDial
+		}
+	case "https":
+		if d.NetDialTLSContext != nil {
+			netDial = func(network, addr string) (net.Conn, error) {
+				return d.NetDialTLSContext(ctx, network, addr)
+			}
+		} else if d.NetDialContext != nil {
+			netDial = func(network, addr string) (net.Conn, error) {
+				return d.NetDialContext(ctx, network, addr)
+			}
+		} else if d.NetDial != nil {
+			netDial = d.NetDial
+		}
+	default:
+		return nil, nil, errMalformedURL
+	}
+
+	if netDial == nil {
+		netDialer := &net.Dialer{}
+		netDial = func(network, addr string) (net.Conn, error) {
+			return netDialer.DialContext(ctx, network, addr)
+		}
+	}
+
+	// If needed, wrap the dial function to set the connection deadline.
+	if deadline, ok := ctx.Deadline(); ok {
+		forwardDial := netDial
+		netDial = func(network, addr string) (net.Conn, error) {
+			c, err := forwardDial(network, addr)
+			if err != nil {
+				return nil, err
+			}
+			err = c.SetDeadline(deadline)
+			if err != nil {
+				if err := c.Close(); err != nil {
+					log.Printf("websocket: failed to close network connection: %v", err)
+				}
+				return nil, err
+			}
+			return c, nil
+		}
+	}
+
+	// If needed, wrap the dial function to connect through a proxy.
+	if d.Proxy != nil {
+		proxyURL, err := d.Proxy(req)
+		if err != nil {
+			return nil, nil, err
+		}
+		if proxyURL != nil {
+			dialer, err := proxy.FromURL(proxyURL, netDialerFunc(netDial))
+			if err != nil {
+				return nil, nil, err
+			}
+			netDial = dialer.Dial
+		}
+	}
+
+	hostPort, hostNoPort := hostPortNoPort(u)
+	trace := httptrace.ContextClientTrace(ctx)
+	if trace != nil && trace.GetConn != nil {
+		trace.GetConn(hostPort)
+	}
+
+	netConn, err := netDial("tcp", hostPort)
+	if err != nil {
+		return nil, nil, err
+	}
+	if trace != nil && trace.GotConn != nil {
+		trace.GotConn(httptrace.GotConnInfo{
+			Conn: netConn,
+		})
+	}
+
+	defer func() {
+		if netConn != nil {
+			if err := netConn.Close(); err != nil {
+				log.Printf("websocket: failed to close network connection: %v", err)
+			}
+		}
+	}()
+
+	if u.Scheme == "https" && d.NetDialTLSContext == nil {
+		// If NetDialTLSContext is set, assume that the TLS handshake has already been done
+
+		cfg := cloneTLSConfig(d.TLSClientConfig)
+		if cfg.ServerName == "" {
+			cfg.ServerName = hostNoPort
+		}
+		tlsConn := tls.Client(netConn, cfg)
+		netConn = tlsConn
+
+		if trace != nil && trace.TLSHandshakeStart != nil {
+			trace.TLSHandshakeStart()
+		}
+		err := doHandshake(ctx, tlsConn, cfg)
+		if trace != nil && trace.TLSHandshakeDone != nil {
+			trace.TLSHandshakeDone(tlsConn.ConnectionState(), err)
+		}
+
+		if err != nil {
+			return nil, nil, err
+		}
+	}
+
+	conn := newConn(netConn, false, d.ReadBufferSize, d.WriteBufferSize, d.WriteBufferPool, nil, nil)
+
+	if err := req.Write(netConn); err != nil {
+		return nil, nil, err
+	}
+
+	if trace != nil && trace.GotFirstResponseByte != nil {
+		if peek, err := conn.br.Peek(1); err == nil && len(peek) == 1 {
+			trace.GotFirstResponseByte()
+		}
+	}
+
+	resp, err := http.ReadResponse(conn.br, req)
+	if err != nil {
+		if d.TLSClientConfig != nil {
+			for _, proto := range d.TLSClientConfig.NextProtos {
+				if proto != "http/1.1" {
+					return nil, nil, fmt.Errorf(
+						"websocket: protocol %q was given but is not supported;"+
+							"sharing tls.Config with net/http Transport can cause this error: %w",
+						proto, err,
+					)
+				}
+			}
+		}
+		return nil, nil, err
+	}
+
+	if d.Jar != nil {
+		if rc := resp.Cookies(); len(rc) > 0 {
+			d.Jar.SetCookies(u, rc)
+		}
+	}
+
+	if resp.StatusCode != 101 ||
+		!tokenListContainsValue(resp.Header, "Upgrade", "websocket") ||
+		!tokenListContainsValue(resp.Header, "Connection", "upgrade") ||
+		resp.Header.Get("Sec-Websocket-Accept") != computeAcceptKey(challengeKey) {
+		// Before closing the network connection on return from this
+		// function, slurp up some of the response to aid application
+		// debugging.
+		buf := make([]byte, 1024)
+		n, _ := io.ReadFull(resp.Body, buf)
+		resp.Body = io.NopCloser(bytes.NewReader(buf[:n]))
+		return nil, resp, ErrBadHandshake
+	}
+
+	for _, ext := range parseExtensions(resp.Header) {
+		if ext[""] != "permessage-deflate" {
+			continue
+		}
+		_, snct := ext["server_no_context_takeover"]
+		_, cnct := ext["client_no_context_takeover"]
+		if !snct || !cnct {
+			return nil, resp, errInvalidCompression
+		}
+		conn.newCompressionWriter = compressNoContextTakeover
+		conn.newDecompressionReader = decompressNoContextTakeover
+		break
+	}
+
+	resp.Body = io.NopCloser(bytes.NewReader([]byte{}))
+	conn.subprotocol = resp.Header.Get("Sec-Websocket-Protocol")
+
+	if err := netConn.SetDeadline(time.Time{}); err != nil {
+		return nil, nil, err
+	}
+	netConn = nil // to avoid close in defer.
+	return conn, resp, nil
+}
+
+func cloneTLSConfig(cfg *tls.Config) *tls.Config {
+	if cfg == nil {
+		return &tls.Config{MinVersion: tls.VersionTLS12}
+	}
+	return cfg.Clone()
+}
diff --git a/vendor/github.com/gorilla/websocket/compression.go b/vendor/github.com/gorilla/websocket/compression.go
new file mode 100644
index 00000000..9fed0ef5
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/compression.go
@@ -0,0 +1,153 @@
+// Copyright 2017 The Gorilla WebSocket Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package websocket
+
+import (
+	"compress/flate"
+	"errors"
+	"io"
+	"log"
+	"strings"
+	"sync"
+)
+
+const (
+	minCompressionLevel     = -2 // flate.HuffmanOnly not defined in Go < 1.6
+	maxCompressionLevel     = flate.BestCompression
+	defaultCompressionLevel = 1
+)
+
+var (
+	flateWriterPools [maxCompressionLevel - minCompressionLevel + 1]sync.Pool
+	flateReaderPool  = sync.Pool{New: func() interface{} {
+		return flate.NewReader(nil)
+	}}
+)
+
+func decompressNoContextTakeover(r io.Reader) io.ReadCloser {
+	const tail =
+	// Add four bytes as specified in RFC
+	"\x00\x00\xff\xff" +
+		// Add final block to squelch unexpected EOF error from flate reader.
+		"\x01\x00\x00\xff\xff"
+
+	fr, _ := flateReaderPool.Get().(io.ReadCloser)
+	if err := fr.(flate.Resetter).Reset(io.MultiReader(r, strings.NewReader(tail)), nil); err != nil {
+		panic(err)
+	}
+	return &flateReadWrapper{fr}
+}
+
+func isValidCompressionLevel(level int) bool {
+	return minCompressionLevel <= level && level <= maxCompressionLevel
+}
+
+func compressNoContextTakeover(w io.WriteCloser, level int) io.WriteCloser {
+	p := &flateWriterPools[level-minCompressionLevel]
+	tw := &truncWriter{w: w}
+	fw, _ := p.Get().(*flate.Writer)
+	if fw == nil {
+		fw, _ = flate.NewWriter(tw, level)
+	} else {
+		fw.Reset(tw)
+	}
+	return &flateWriteWrapper{fw: fw, tw: tw, p: p}
+}
+
+// truncWriter is an io.Writer that writes all but the last four bytes of the
+// stream to another io.Writer.
+type truncWriter struct {
+	w io.WriteCloser
+	n int
+	p [4]byte
+}
+
+func (w *truncWriter) Write(p []byte) (int, error) {
+	n := 0
+
+	// fill buffer first for simplicity.
+	if w.n < len(w.p) {
+		n = copy(w.p[w.n:], p)
+		p = p[n:]
+		w.n += n
+		if len(p) == 0 {
+			return n, nil
+		}
+	}
+
+	m := len(p)
+	if m > len(w.p) {
+		m = len(w.p)
+	}
+
+	if nn, err := w.w.Write(w.p[:m]); err != nil {
+		return n + nn, err
+	}
+
+	copy(w.p[:], w.p[m:])
+	copy(w.p[len(w.p)-m:], p[len(p)-m:])
+	nn, err := w.w.Write(p[:len(p)-m])
+	return n + nn, err
+}
+
+type flateWriteWrapper struct {
+	fw *flate.Writer
+	tw *truncWriter
+	p  *sync.Pool
+}
+
+func (w *flateWriteWrapper) Write(p []byte) (int, error) {
+	if w.fw == nil {
+		return 0, errWriteClosed
+	}
+	return w.fw.Write(p)
+}
+
+func (w *flateWriteWrapper) Close() error {
+	if w.fw == nil {
+		return errWriteClosed
+	}
+	err1 := w.fw.Flush()
+	w.p.Put(w.fw)
+	w.fw = nil
+	if w.tw.p != [4]byte{0, 0, 0xff, 0xff} {
+		return errors.New("websocket: internal error, unexpected bytes at end of flate stream")
+	}
+	err2 := w.tw.w.Close()
+	if err1 != nil {
+		return err1
+	}
+	return err2
+}
+
+type flateReadWrapper struct {
+	fr io.ReadCloser
+}
+
+func (r *flateReadWrapper) Read(p []byte) (int, error) {
+	if r.fr == nil {
+		return 0, io.ErrClosedPipe
+	}
+	n, err := r.fr.Read(p)
+	if err == io.EOF {
+		// Preemptively place the reader back in the pool. This helps with
+		// scenarios where the application does not call NextReader() soon after
+		// this final read.
+		if err := r.Close(); err != nil {
+			log.Printf("websocket: flateReadWrapper.Close() returned error: %v", err)
+		}
+	}
+	return n, err
+}
+
+func (r *flateReadWrapper) Close() error {
+	if r.fr == nil {
+		return io.ErrClosedPipe
+	}
+	err := r.fr.Close()
+	flateReaderPool.Put(r.fr)
+	r.fr = nil
+	return err
+}
diff --git a/vendor/github.com/gorilla/websocket/conn.go b/vendor/github.com/gorilla/websocket/conn.go
new file mode 100644
index 00000000..221e6cf7
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/conn.go
@@ -0,0 +1,1267 @@
+// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package websocket
+
+import (
+	"bufio"
+	"crypto/rand"
+	"encoding/binary"
+	"errors"
+	"io"
+	"log"
+	"net"
+	"strconv"
+	"strings"
+	"sync"
+	"time"
+	"unicode/utf8"
+)
+
+const (
+	// Frame header byte 0 bits from Section 5.2 of RFC 6455
+	finalBit = 1 << 7
+	rsv1Bit  = 1 << 6
+	rsv2Bit  = 1 << 5
+	rsv3Bit  = 1 << 4
+
+	// Frame header byte 1 bits from Section 5.2 of RFC 6455
+	maskBit = 1 << 7
+
+	maxFrameHeaderSize         = 2 + 8 + 4 // Fixed header + length + mask
+	maxControlFramePayloadSize = 125
+
+	writeWait = time.Second
+
+	defaultReadBufferSize  = 4096
+	defaultWriteBufferSize = 4096
+
+	continuationFrame = 0
+	noFrame           = -1
+)
+
+// Close codes defined in RFC 6455, section 11.7.
+const (
+	CloseNormalClosure           = 1000
+	CloseGoingAway               = 1001
+	CloseProtocolError           = 1002
+	CloseUnsupportedData         = 1003
+	CloseNoStatusReceived        = 1005
+	CloseAbnormalClosure         = 1006
+	CloseInvalidFramePayloadData = 1007
+	ClosePolicyViolation         = 1008
+	CloseMessageTooBig           = 1009
+	CloseMandatoryExtension      = 1010
+	CloseInternalServerErr       = 1011
+	CloseServiceRestart          = 1012
+	CloseTryAgainLater           = 1013
+	CloseTLSHandshake            = 1015
+)
+
+// The message types are defined in RFC 6455, section 11.8.
+const (
+	// TextMessage denotes a text data message. The text message payload is
+	// interpreted as UTF-8 encoded text data.
+	TextMessage = 1
+
+	// BinaryMessage denotes a binary data message.
+	BinaryMessage = 2
+
+	// CloseMessage denotes a close control message. The optional message
+	// payload contains a numeric code and text. Use the FormatCloseMessage
+	// function to format a close message payload.
+	CloseMessage = 8
+
+	// PingMessage denotes a ping control message. The optional message payload
+	// is UTF-8 encoded text.
+	PingMessage = 9
+
+	// PongMessage denotes a pong control message. The optional message payload
+	// is UTF-8 encoded text.
+	PongMessage = 10
+)
+
+// ErrCloseSent is returned when the application writes a message to the
+// connection after sending a close message.
+var ErrCloseSent = errors.New("websocket: close sent")
+
+// ErrReadLimit is returned when reading a message that is larger than the
+// read limit set for the connection.
+var ErrReadLimit = errors.New("websocket: read limit exceeded")
+
+// netError satisfies the net Error interface.
+type netError struct {
+	msg       string
+	temporary bool
+	timeout   bool
+}
+
+func (e *netError) Error() string   { return e.msg }
+func (e *netError) Temporary() bool { return e.temporary }
+func (e *netError) Timeout() bool   { return e.timeout }
+
+// CloseError represents a close message.
+type CloseError struct {
+	// Code is defined in RFC 6455, section 11.7.
+	Code int
+
+	// Text is the optional text payload.
+	Text string
+}
+
+func (e *CloseError) Error() string {
+	s := []byte("websocket: close ")
+	s = strconv.AppendInt(s, int64(e.Code), 10)
+	switch e.Code {
+	case CloseNormalClosure:
+		s = append(s, " (normal)"...)
+	case CloseGoingAway:
+		s = append(s, " (going away)"...)
+	case CloseProtocolError:
+		s = append(s, " (protocol error)"...)
+	case CloseUnsupportedData:
+		s = append(s, " (unsupported data)"...)
+	case CloseNoStatusReceived:
+		s = append(s, " (no status)"...)
+	case CloseAbnormalClosure:
+		s = append(s, " (abnormal closure)"...)
+	case CloseInvalidFramePayloadData:
+		s = append(s, " (invalid payload data)"...)
+	case ClosePolicyViolation:
+		s = append(s, " (policy violation)"...)
+	case CloseMessageTooBig:
+		s = append(s, " (message too big)"...)
+	case CloseMandatoryExtension:
+		s = append(s, " (mandatory extension missing)"...)
+	case CloseInternalServerErr:
+		s = append(s, " (internal server error)"...)
+	case CloseTLSHandshake:
+		s = append(s, " (TLS handshake error)"...)
+	}
+	if e.Text != "" {
+		s = append(s, ": "...)
+		s = append(s, e.Text...)
+	}
+	return string(s)
+}
+
+// IsCloseError returns boolean indicating whether the error is a *CloseError
+// with one of the specified codes.
+func IsCloseError(err error, codes ...int) bool {
+	if e, ok := err.(*CloseError); ok {
+		for _, code := range codes {
+			if e.Code == code {
+				return true
+			}
+		}
+	}
+	return false
+}
+
+// IsUnexpectedCloseError returns boolean indicating whether the error is a
+// *CloseError with a code not in the list of expected codes.
+func IsUnexpectedCloseError(err error, expectedCodes ...int) bool {
+	if e, ok := err.(*CloseError); ok {
+		for _, code := range expectedCodes {
+			if e.Code == code {
+				return false
+			}
+		}
+		return true
+	}
+	return false
+}
+
+var (
+	errWriteTimeout        = &netError{msg: "websocket: write timeout", timeout: true, temporary: true}
+	errUnexpectedEOF       = &CloseError{Code: CloseAbnormalClosure, Text: io.ErrUnexpectedEOF.Error()}
+	errBadWriteOpCode      = errors.New("websocket: bad write message type")
+	errWriteClosed         = errors.New("websocket: write closed")
+	errInvalidControlFrame = errors.New("websocket: invalid control frame")
+)
+
+// maskRand is an io.Reader for generating mask bytes. The reader is initialized
+// to crypto/rand Reader. Tests swap the reader to a math/rand reader for
+// reproducible results.
+var maskRand = rand.Reader
+
+// newMaskKey returns a new 32 bit value for masking client frames.
+func newMaskKey() [4]byte {
+	var k [4]byte
+	_, _ = io.ReadFull(maskRand, k[:])
+	return k
+}
+
+func hideTempErr(err error) error {
+	if e, ok := err.(net.Error); ok {
+		err = &netError{msg: e.Error(), timeout: e.Timeout()}
+	}
+	return err
+}
+
+func isControl(frameType int) bool {
+	return frameType == CloseMessage || frameType == PingMessage || frameType == PongMessage
+}
+
+func isData(frameType int) bool {
+	return frameType == TextMessage || frameType == BinaryMessage
+}
+
+var validReceivedCloseCodes = map[int]bool{
+	// see http://www.iana.org/assignments/websocket/websocket.xhtml#close-code-number
+
+	CloseNormalClosure:           true,
+	CloseGoingAway:               true,
+	CloseProtocolError:           true,
+	CloseUnsupportedData:         true,
+	CloseNoStatusReceived:        false,
+	CloseAbnormalClosure:         false,
+	CloseInvalidFramePayloadData: true,
+	ClosePolicyViolation:         true,
+	CloseMessageTooBig:           true,
+	CloseMandatoryExtension:      true,
+	CloseInternalServerErr:       true,
+	CloseServiceRestart:          true,
+	CloseTryAgainLater:           true,
+	CloseTLSHandshake:            false,
+}
+
+func isValidReceivedCloseCode(code int) bool {
+	return validReceivedCloseCodes[code] || (code >= 3000 && code <= 4999)
+}
+
+// BufferPool represents a pool of buffers. The *sync.Pool type satisfies this
+// interface.  The type of the value stored in a pool is not specified.
+type BufferPool interface {
+	// Get gets a value from the pool or returns nil if the pool is empty.
+	Get() interface{}
+	// Put adds a value to the pool.
+	Put(interface{})
+}
+
+// writePoolData is the type added to the write buffer pool. This wrapper is
+// used to prevent applications from peeking at and depending on the values
+// added to the pool.
+type writePoolData struct{ buf []byte }
+
+// The Conn type represents a WebSocket connection.
+type Conn struct {
+	conn        net.Conn
+	isServer    bool
+	subprotocol string
+
+	// Write fields
+	mu            chan struct{} // used as mutex to protect write to conn
+	writeBuf      []byte        // frame is constructed in this buffer.
+	writePool     BufferPool
+	writeBufSize  int
+	writeDeadline time.Time
+	writer        io.WriteCloser // the current writer returned to the application
+	isWriting     bool           // for best-effort concurrent write detection
+
+	writeErrMu sync.Mutex
+	writeErr   error
+
+	enableWriteCompression bool
+	compressionLevel       int
+	newCompressionWriter   func(io.WriteCloser, int) io.WriteCloser
+
+	// Read fields
+	reader  io.ReadCloser // the current reader returned to the application
+	readErr error
+	br      *bufio.Reader
+	// bytes remaining in current frame.
+	// set setReadRemaining to safely update this value and prevent overflow
+	readRemaining int64
+	readFinal     bool  // true the current message has more frames.
+	readLength    int64 // Message size.
+	readLimit     int64 // Maximum message size.
+	readMaskPos   int
+	readMaskKey   [4]byte
+	handlePong    func(string) error
+	handlePing    func(string) error
+	handleClose   func(int, string) error
+	readErrCount  int
+	messageReader *messageReader // the current low-level reader
+
+	readDecompress         bool // whether last read frame had RSV1 set
+	newDecompressionReader func(io.Reader) io.ReadCloser
+}
+
+func newConn(conn net.Conn, isServer bool, readBufferSize, writeBufferSize int, writeBufferPool BufferPool, br *bufio.Reader, writeBuf []byte) *Conn {
+
+	if br == nil {
+		if readBufferSize == 0 {
+			readBufferSize = defaultReadBufferSize
+		} else if readBufferSize < maxControlFramePayloadSize {
+			// must be large enough for control frame
+			readBufferSize = maxControlFramePayloadSize
+		}
+		br = bufio.NewReaderSize(conn, readBufferSize)
+	}
+
+	if writeBufferSize <= 0 {
+		writeBufferSize = defaultWriteBufferSize
+	}
+	writeBufferSize += maxFrameHeaderSize
+
+	if writeBuf == nil && writeBufferPool == nil {
+		writeBuf = make([]byte, writeBufferSize)
+	}
+
+	mu := make(chan struct{}, 1)
+	mu <- struct{}{}
+	c := &Conn{
+		isServer:               isServer,
+		br:                     br,
+		conn:                   conn,
+		mu:                     mu,
+		readFinal:              true,
+		writeBuf:               writeBuf,
+		writePool:              writeBufferPool,
+		writeBufSize:           writeBufferSize,
+		enableWriteCompression: true,
+		compressionLevel:       defaultCompressionLevel,
+	}
+	c.SetCloseHandler(nil)
+	c.SetPingHandler(nil)
+	c.SetPongHandler(nil)
+	return c
+}
+
+// setReadRemaining tracks the number of bytes remaining on the connection. If n
+// overflows, an ErrReadLimit is returned.
+func (c *Conn) setReadRemaining(n int64) error {
+	if n < 0 {
+		return ErrReadLimit
+	}
+
+	c.readRemaining = n
+	return nil
+}
+
+// Subprotocol returns the negotiated protocol for the connection.
+func (c *Conn) Subprotocol() string {
+	return c.subprotocol
+}
+
+// Close closes the underlying network connection without sending or waiting
+// for a close message.
+func (c *Conn) Close() error {
+	return c.conn.Close()
+}
+
+// LocalAddr returns the local network address.
+func (c *Conn) LocalAddr() net.Addr {
+	return c.conn.LocalAddr()
+}
+
+// RemoteAddr returns the remote network address.
+func (c *Conn) RemoteAddr() net.Addr {
+	return c.conn.RemoteAddr()
+}
+
+// Write methods
+
+func (c *Conn) writeFatal(err error) error {
+	err = hideTempErr(err)
+	c.writeErrMu.Lock()
+	if c.writeErr == nil {
+		c.writeErr = err
+	}
+	c.writeErrMu.Unlock()
+	return err
+}
+
+func (c *Conn) read(n int) ([]byte, error) {
+	p, err := c.br.Peek(n)
+	if err == io.EOF {
+		err = errUnexpectedEOF
+	}
+	if _, err := c.br.Discard(len(p)); err != nil {
+		return p, err
+	}
+	return p, err
+}
+
+func (c *Conn) write(frameType int, deadline time.Time, buf0, buf1 []byte) error {
+	<-c.mu
+	defer func() { c.mu <- struct{}{} }()
+
+	c.writeErrMu.Lock()
+	err := c.writeErr
+	c.writeErrMu.Unlock()
+	if err != nil {
+		return err
+	}
+
+	if err := c.conn.SetWriteDeadline(deadline); err != nil {
+		return c.writeFatal(err)
+	}
+	if len(buf1) == 0 {
+		_, err = c.conn.Write(buf0)
+	} else {
+		err = c.writeBufs(buf0, buf1)
+	}
+	if err != nil {
+		return c.writeFatal(err)
+	}
+	if frameType == CloseMessage {
+		_ = c.writeFatal(ErrCloseSent)
+	}
+	return nil
+}
+
+func (c *Conn) writeBufs(bufs ...[]byte) error {
+	b := net.Buffers(bufs)
+	_, err := b.WriteTo(c.conn)
+	return err
+}
+
+// WriteControl writes a control message with the given deadline. The allowed
+// message types are CloseMessage, PingMessage and PongMessage.
+func (c *Conn) WriteControl(messageType int, data []byte, deadline time.Time) error {
+	if !isControl(messageType) {
+		return errBadWriteOpCode
+	}
+	if len(data) > maxControlFramePayloadSize {
+		return errInvalidControlFrame
+	}
+
+	b0 := byte(messageType) | finalBit
+	b1 := byte(len(data))
+	if !c.isServer {
+		b1 |= maskBit
+	}
+
+	buf := make([]byte, 0, maxFrameHeaderSize+maxControlFramePayloadSize)
+	buf = append(buf, b0, b1)
+
+	if c.isServer {
+		buf = append(buf, data...)
+	} else {
+		key := newMaskKey()
+		buf = append(buf, key[:]...)
+		buf = append(buf, data...)
+		maskBytes(key, 0, buf[6:])
+	}
+
+	d := 1000 * time.Hour
+	if !deadline.IsZero() {
+		d = time.Until(deadline)
+		if d < 0 {
+			return errWriteTimeout
+		}
+	}
+
+	timer := time.NewTimer(d)
+	select {
+	case <-c.mu:
+		timer.Stop()
+	case <-timer.C:
+		return errWriteTimeout
+	}
+	defer func() { c.mu <- struct{}{} }()
+
+	c.writeErrMu.Lock()
+	err := c.writeErr
+	c.writeErrMu.Unlock()
+	if err != nil {
+		return err
+	}
+
+	if err := c.conn.SetWriteDeadline(deadline); err != nil {
+		return c.writeFatal(err)
+	}
+	_, err = c.conn.Write(buf)
+	if err != nil {
+		return c.writeFatal(err)
+	}
+	if messageType == CloseMessage {
+		_ = c.writeFatal(ErrCloseSent)
+	}
+	return err
+}
+
+// beginMessage prepares a connection and message writer for a new message.
+func (c *Conn) beginMessage(mw *messageWriter, messageType int) error {
+	// Close previous writer if not already closed by the application. It's
+	// probably better to return an error in this situation, but we cannot
+	// change this without breaking existing applications.
+	if c.writer != nil {
+		if err := c.writer.Close(); err != nil {
+			log.Printf("websocket: discarding writer close error: %v", err)
+		}
+		c.writer = nil
+	}
+
+	if !isControl(messageType) && !isData(messageType) {
+		return errBadWriteOpCode
+	}
+
+	c.writeErrMu.Lock()
+	err := c.writeErr
+	c.writeErrMu.Unlock()
+	if err != nil {
+		return err
+	}
+
+	mw.c = c
+	mw.frameType = messageType
+	mw.pos = maxFrameHeaderSize
+
+	if c.writeBuf == nil {
+		wpd, ok := c.writePool.Get().(writePoolData)
+		if ok {
+			c.writeBuf = wpd.buf
+		} else {
+			c.writeBuf = make([]byte, c.writeBufSize)
+		}
+	}
+	return nil
+}
+
+// NextWriter returns a writer for the next message to send. The writer's Close
+// method flushes the complete message to the network.
+//
+// There can be at most one open writer on a connection. NextWriter closes the
+// previous writer if the application has not already done so.
+//
+// All message types (TextMessage, BinaryMessage, CloseMessage, PingMessage and
+// PongMessage) are supported.
+func (c *Conn) NextWriter(messageType int) (io.WriteCloser, error) {
+	var mw messageWriter
+	if err := c.beginMessage(&mw, messageType); err != nil {
+		return nil, err
+	}
+	c.writer = &mw
+	if c.newCompressionWriter != nil && c.enableWriteCompression && isData(messageType) {
+		w := c.newCompressionWriter(c.writer, c.compressionLevel)
+		mw.compress = true
+		c.writer = w
+	}
+	return c.writer, nil
+}
+
+type messageWriter struct {
+	c         *Conn
+	compress  bool // whether next call to flushFrame should set RSV1
+	pos       int  // end of data in writeBuf.
+	frameType int  // type of the current frame.
+	err       error
+}
+
+func (w *messageWriter) endMessage(err error) error {
+	if w.err != nil {
+		return err
+	}
+	c := w.c
+	w.err = err
+	c.writer = nil
+	if c.writePool != nil {
+		c.writePool.Put(writePoolData{buf: c.writeBuf})
+		c.writeBuf = nil
+	}
+	return err
+}
+
+// flushFrame writes buffered data and extra as a frame to the network. The
+// final argument indicates that this is the last frame in the message.
+func (w *messageWriter) flushFrame(final bool, extra []byte) error {
+	c := w.c
+	length := w.pos - maxFrameHeaderSize + len(extra)
+
+	// Check for invalid control frames.
+	if isControl(w.frameType) &&
+		(!final || length > maxControlFramePayloadSize) {
+		return w.endMessage(errInvalidControlFrame)
+	}
+
+	b0 := byte(w.frameType)
+	if final {
+		b0 |= finalBit
+	}
+	if w.compress {
+		b0 |= rsv1Bit
+	}
+	w.compress = false
+
+	b1 := byte(0)
+	if !c.isServer {
+		b1 |= maskBit
+	}
+
+	// Assume that the frame starts at beginning of c.writeBuf.
+	framePos := 0
+	if c.isServer {
+		// Adjust up if mask not included in the header.
+		framePos = 4
+	}
+
+	switch {
+	case length >= 65536:
+		c.writeBuf[framePos] = b0
+		c.writeBuf[framePos+1] = b1 | 127
+		binary.BigEndian.PutUint64(c.writeBuf[framePos+2:], uint64(length))
+	case length > 125:
+		framePos += 6
+		c.writeBuf[framePos] = b0
+		c.writeBuf[framePos+1] = b1 | 126
+		binary.BigEndian.PutUint16(c.writeBuf[framePos+2:], uint16(length))
+	default:
+		framePos += 8
+		c.writeBuf[framePos] = b0
+		c.writeBuf[framePos+1] = b1 | byte(length)
+	}
+
+	if !c.isServer {
+		key := newMaskKey()
+		copy(c.writeBuf[maxFrameHeaderSize-4:], key[:])
+		maskBytes(key, 0, c.writeBuf[maxFrameHeaderSize:w.pos])
+		if len(extra) > 0 {
+			return w.endMessage(c.writeFatal(errors.New("websocket: internal error, extra used in client mode")))
+		}
+	}
+
+	// Write the buffers to the connection with best-effort detection of
+	// concurrent writes. See the concurrency section in the package
+	// documentation for more info.
+
+	if c.isWriting {
+		panic("concurrent write to websocket connection")
+	}
+	c.isWriting = true
+
+	err := c.write(w.frameType, c.writeDeadline, c.writeBuf[framePos:w.pos], extra)
+
+	if !c.isWriting {
+		panic("concurrent write to websocket connection")
+	}
+	c.isWriting = false
+
+	if err != nil {
+		return w.endMessage(err)
+	}
+
+	if final {
+		_ = w.endMessage(errWriteClosed)
+		return nil
+	}
+
+	// Setup for next frame.
+	w.pos = maxFrameHeaderSize
+	w.frameType = continuationFrame
+	return nil
+}
+
+func (w *messageWriter) ncopy(max int) (int, error) {
+	n := len(w.c.writeBuf) - w.pos
+	if n <= 0 {
+		if err := w.flushFrame(false, nil); err != nil {
+			return 0, err
+		}
+		n = len(w.c.writeBuf) - w.pos
+	}
+	if n > max {
+		n = max
+	}
+	return n, nil
+}
+
+func (w *messageWriter) Write(p []byte) (int, error) {
+	if w.err != nil {
+		return 0, w.err
+	}
+
+	if len(p) > 2*len(w.c.writeBuf) && w.c.isServer {
+		// Don't buffer large messages.
+		err := w.flushFrame(false, p)
+		if err != nil {
+			return 0, err
+		}
+		return len(p), nil
+	}
+
+	nn := len(p)
+	for len(p) > 0 {
+		n, err := w.ncopy(len(p))
+		if err != nil {
+			return 0, err
+		}
+		copy(w.c.writeBuf[w.pos:], p[:n])
+		w.pos += n
+		p = p[n:]
+	}
+	return nn, nil
+}
+
+func (w *messageWriter) WriteString(p string) (int, error) {
+	if w.err != nil {
+		return 0, w.err
+	}
+
+	nn := len(p)
+	for len(p) > 0 {
+		n, err := w.ncopy(len(p))
+		if err != nil {
+			return 0, err
+		}
+		copy(w.c.writeBuf[w.pos:], p[:n])
+		w.pos += n
+		p = p[n:]
+	}
+	return nn, nil
+}
+
+func (w *messageWriter) ReadFrom(r io.Reader) (nn int64, err error) {
+	if w.err != nil {
+		return 0, w.err
+	}
+	for {
+		if w.pos == len(w.c.writeBuf) {
+			err = w.flushFrame(false, nil)
+			if err != nil {
+				break
+			}
+		}
+		var n int
+		n, err = r.Read(w.c.writeBuf[w.pos:])
+		w.pos += n
+		nn += int64(n)
+		if err != nil {
+			if err == io.EOF {
+				err = nil
+			}
+			break
+		}
+	}
+	return nn, err
+}
+
+func (w *messageWriter) Close() error {
+	if w.err != nil {
+		return w.err
+	}
+	return w.flushFrame(true, nil)
+}
+
+// WritePreparedMessage writes prepared message into connection.
+func (c *Conn) WritePreparedMessage(pm *PreparedMessage) error {
+	frameType, frameData, err := pm.frame(prepareKey{
+		isServer:         c.isServer,
+		compress:         c.newCompressionWriter != nil && c.enableWriteCompression && isData(pm.messageType),
+		compressionLevel: c.compressionLevel,
+	})
+	if err != nil {
+		return err
+	}
+	if c.isWriting {
+		panic("concurrent write to websocket connection")
+	}
+	c.isWriting = true
+	err = c.write(frameType, c.writeDeadline, frameData, nil)
+	if !c.isWriting {
+		panic("concurrent write to websocket connection")
+	}
+	c.isWriting = false
+	return err
+}
+
+// WriteMessage is a helper method for getting a writer using NextWriter,
+// writing the message and closing the writer.
+func (c *Conn) WriteMessage(messageType int, data []byte) error {
+
+	if c.isServer && (c.newCompressionWriter == nil || !c.enableWriteCompression) {
+		// Fast path with no allocations and single frame.
+
+		var mw messageWriter
+		if err := c.beginMessage(&mw, messageType); err != nil {
+			return err
+		}
+		n := copy(c.writeBuf[mw.pos:], data)
+		mw.pos += n
+		data = data[n:]
+		return mw.flushFrame(true, data)
+	}
+
+	w, err := c.NextWriter(messageType)
+	if err != nil {
+		return err
+	}
+	if _, err = w.Write(data); err != nil {
+		return err
+	}
+	return w.Close()
+}
+
+// SetWriteDeadline sets the write deadline on the underlying network
+// connection. After a write has timed out, the websocket state is corrupt and
+// all future writes will return an error. A zero value for t means writes will
+// not time out.
+func (c *Conn) SetWriteDeadline(t time.Time) error {
+	c.writeDeadline = t
+	return nil
+}
+
+// Read methods
+
+func (c *Conn) advanceFrame() (int, error) {
+	// 1. Skip remainder of previous frame.
+
+	if c.readRemaining > 0 {
+		if _, err := io.CopyN(io.Discard, c.br, c.readRemaining); err != nil {
+			return noFrame, err
+		}
+	}
+
+	// 2. Read and parse first two bytes of frame header.
+	// To aid debugging, collect and report all errors in the first two bytes
+	// of the header.
+
+	var errors []string
+
+	p, err := c.read(2)
+	if err != nil {
+		return noFrame, err
+	}
+
+	frameType := int(p[0] & 0xf)
+	final := p[0]&finalBit != 0
+	rsv1 := p[0]&rsv1Bit != 0
+	rsv2 := p[0]&rsv2Bit != 0
+	rsv3 := p[0]&rsv3Bit != 0
+	mask := p[1]&maskBit != 0
+	if err := c.setReadRemaining(int64(p[1] & 0x7f)); err != nil {
+		return noFrame, err
+	}
+
+	c.readDecompress = false
+	if rsv1 {
+		if c.newDecompressionReader != nil {
+			c.readDecompress = true
+		} else {
+			errors = append(errors, "RSV1 set")
+		}
+	}
+
+	if rsv2 {
+		errors = append(errors, "RSV2 set")
+	}
+
+	if rsv3 {
+		errors = append(errors, "RSV3 set")
+	}
+
+	switch frameType {
+	case CloseMessage, PingMessage, PongMessage:
+		if c.readRemaining > maxControlFramePayloadSize {
+			errors = append(errors, "len > 125 for control")
+		}
+		if !final {
+			errors = append(errors, "FIN not set on control")
+		}
+	case TextMessage, BinaryMessage:
+		if !c.readFinal {
+			errors = append(errors, "data before FIN")
+		}
+		c.readFinal = final
+	case continuationFrame:
+		if c.readFinal {
+			errors = append(errors, "continuation after FIN")
+		}
+		c.readFinal = final
+	default:
+		errors = append(errors, "bad opcode "+strconv.Itoa(frameType))
+	}
+
+	if mask != c.isServer {
+		errors = append(errors, "bad MASK")
+	}
+
+	if len(errors) > 0 {
+		return noFrame, c.handleProtocolError(strings.Join(errors, ", "))
+	}
+
+	// 3. Read and parse frame length as per
+	// https://tools.ietf.org/html/rfc6455#section-5.2
+	//
+	// The length of the "Payload data", in bytes: if 0-125, that is the payload
+	// length.
+	// - If 126, the following 2 bytes interpreted as a 16-bit unsigned
+	// integer are the payload length.
+	// - If 127, the following 8 bytes interpreted as
+	// a 64-bit unsigned integer (the most significant bit MUST be 0) are the
+	// payload length. Multibyte length quantities are expressed in network byte
+	// order.
+
+	switch c.readRemaining {
+	case 126:
+		p, err := c.read(2)
+		if err != nil {
+			return noFrame, err
+		}
+
+		if err := c.setReadRemaining(int64(binary.BigEndian.Uint16(p))); err != nil {
+			return noFrame, err
+		}
+	case 127:
+		p, err := c.read(8)
+		if err != nil {
+			return noFrame, err
+		}
+
+		if err := c.setReadRemaining(int64(binary.BigEndian.Uint64(p))); err != nil {
+			return noFrame, err
+		}
+	}
+
+	// 4. Handle frame masking.
+
+	if mask {
+		c.readMaskPos = 0
+		p, err := c.read(len(c.readMaskKey))
+		if err != nil {
+			return noFrame, err
+		}
+		copy(c.readMaskKey[:], p)
+	}
+
+	// 5. For text and binary messages, enforce read limit and return.
+
+	if frameType == continuationFrame || frameType == TextMessage || frameType == BinaryMessage {
+
+		c.readLength += c.readRemaining
+		// Don't allow readLength to overflow in the presence of a large readRemaining
+		// counter.
+		if c.readLength < 0 {
+			return noFrame, ErrReadLimit
+		}
+
+		if c.readLimit > 0 && c.readLength > c.readLimit {
+			if err := c.WriteControl(CloseMessage, FormatCloseMessage(CloseMessageTooBig, ""), time.Now().Add(writeWait)); err != nil {
+				return noFrame, err
+			}
+			return noFrame, ErrReadLimit
+		}
+
+		return frameType, nil
+	}
+
+	// 6. Read control frame payload.
+
+	var payload []byte
+	if c.readRemaining > 0 {
+		payload, err = c.read(int(c.readRemaining))
+		if err := c.setReadRemaining(0); err != nil {
+			return noFrame, err
+		}
+		if err != nil {
+			return noFrame, err
+		}
+		if c.isServer {
+			maskBytes(c.readMaskKey, 0, payload)
+		}
+	}
+
+	// 7. Process control frame payload.
+
+	switch frameType {
+	case PongMessage:
+		if err := c.handlePong(string(payload)); err != nil {
+			return noFrame, err
+		}
+	case PingMessage:
+		if err := c.handlePing(string(payload)); err != nil {
+			return noFrame, err
+		}
+	case CloseMessage:
+		closeCode := CloseNoStatusReceived
+		closeText := ""
+		if len(payload) >= 2 {
+			closeCode = int(binary.BigEndian.Uint16(payload))
+			if !isValidReceivedCloseCode(closeCode) {
+				return noFrame, c.handleProtocolError("bad close code " + strconv.Itoa(closeCode))
+			}
+			closeText = string(payload[2:])
+			if !utf8.ValidString(closeText) {
+				return noFrame, c.handleProtocolError("invalid utf8 payload in close frame")
+			}
+		}
+		if err := c.handleClose(closeCode, closeText); err != nil {
+			return noFrame, err
+		}
+		return noFrame, &CloseError{Code: closeCode, Text: closeText}
+	}
+
+	return frameType, nil
+}
+
+func (c *Conn) handleProtocolError(message string) error {
+	data := FormatCloseMessage(CloseProtocolError, message)
+	if len(data) > maxControlFramePayloadSize {
+		data = data[:maxControlFramePayloadSize]
+	}
+	if err := c.WriteControl(CloseMessage, data, time.Now().Add(writeWait)); err != nil {
+		return err
+	}
+	return errors.New("websocket: " + message)
+}
+
+// NextReader returns the next data message received from the peer. The
+// returned messageType is either TextMessage or BinaryMessage.
+//
+// There can be at most one open reader on a connection. NextReader discards
+// the previous message if the application has not already consumed it.
+//
+// Applications must break out of the application's read loop when this method
+// returns a non-nil error value. Errors returned from this method are
+// permanent. Once this method returns a non-nil error, all subsequent calls to
+// this method return the same error.
+func (c *Conn) NextReader() (messageType int, r io.Reader, err error) {
+	// Close previous reader, only relevant for decompression.
+	if c.reader != nil {
+		if err := c.reader.Close(); err != nil {
+			log.Printf("websocket: discarding reader close error: %v", err)
+		}
+		c.reader = nil
+	}
+
+	c.messageReader = nil
+	c.readLength = 0
+
+	for c.readErr == nil {
+		frameType, err := c.advanceFrame()
+		if err != nil {
+			c.readErr = hideTempErr(err)
+			break
+		}
+
+		if frameType == TextMessage || frameType == BinaryMessage {
+			c.messageReader = &messageReader{c}
+			c.reader = c.messageReader
+			if c.readDecompress {
+				c.reader = c.newDecompressionReader(c.reader)
+			}
+			return frameType, c.reader, nil
+		}
+	}
+
+	// Applications that do handle the error returned from this method spin in
+	// tight loop on connection failure. To help application developers detect
+	// this error, panic on repeated reads to the failed connection.
+	c.readErrCount++
+	if c.readErrCount >= 1000 {
+		panic("repeated read on failed websocket connection")
+	}
+
+	return noFrame, nil, c.readErr
+}
+
+type messageReader struct{ c *Conn }
+
+func (r *messageReader) Read(b []byte) (int, error) {
+	c := r.c
+	if c.messageReader != r {
+		return 0, io.EOF
+	}
+
+	for c.readErr == nil {
+
+		if c.readRemaining > 0 {
+			if int64(len(b)) > c.readRemaining {
+				b = b[:c.readRemaining]
+			}
+			n, err := c.br.Read(b)
+			c.readErr = hideTempErr(err)
+			if c.isServer {
+				c.readMaskPos = maskBytes(c.readMaskKey, c.readMaskPos, b[:n])
+			}
+			rem := c.readRemaining
+			rem -= int64(n)
+			if err := c.setReadRemaining(rem); err != nil {
+				return 0, err
+			}
+			if c.readRemaining > 0 && c.readErr == io.EOF {
+				c.readErr = errUnexpectedEOF
+			}
+			return n, c.readErr
+		}
+
+		if c.readFinal {
+			c.messageReader = nil
+			return 0, io.EOF
+		}
+
+		frameType, err := c.advanceFrame()
+		switch {
+		case err != nil:
+			c.readErr = hideTempErr(err)
+		case frameType == TextMessage || frameType == BinaryMessage:
+			c.readErr = errors.New("websocket: internal error, unexpected text or binary in Reader")
+		}
+	}
+
+	err := c.readErr
+	if err == io.EOF && c.messageReader == r {
+		err = errUnexpectedEOF
+	}
+	return 0, err
+}
+
+func (r *messageReader) Close() error {
+	return nil
+}
+
+// ReadMessage is a helper method for getting a reader using NextReader and
+// reading from that reader to a buffer.
+func (c *Conn) ReadMessage() (messageType int, p []byte, err error) {
+	var r io.Reader
+	messageType, r, err = c.NextReader()
+	if err != nil {
+		return messageType, nil, err
+	}
+	p, err = io.ReadAll(r)
+	return messageType, p, err
+}
+
+// SetReadDeadline sets the read deadline on the underlying network connection.
+// After a read has timed out, the websocket connection state is corrupt and
+// all future reads will return an error. A zero value for t means reads will
+// not time out.
+func (c *Conn) SetReadDeadline(t time.Time) error {
+	return c.conn.SetReadDeadline(t)
+}
+
+// SetReadLimit sets the maximum size in bytes for a message read from the peer. If a
+// message exceeds the limit, the connection sends a close message to the peer
+// and returns ErrReadLimit to the application.
+func (c *Conn) SetReadLimit(limit int64) {
+	c.readLimit = limit
+}
+
+// CloseHandler returns the current close handler
+func (c *Conn) CloseHandler() func(code int, text string) error {
+	return c.handleClose
+}
+
+// SetCloseHandler sets the handler for close messages received from the peer.
+// The code argument to h is the received close code or CloseNoStatusReceived
+// if the close message is empty. The default close handler sends a close
+// message back to the peer.
+//
+// The handler function is called from the NextReader, ReadMessage and message
+// reader Read methods. The application must read the connection to process
+// close messages as described in the section on Control Messages above.
+//
+// The connection read methods return a CloseError when a close message is
+// received. Most applications should handle close messages as part of their
+// normal error handling. Applications should only set a close handler when the
+// application must perform some action before sending a close message back to
+// the peer.
+func (c *Conn) SetCloseHandler(h func(code int, text string) error) {
+	if h == nil {
+		h = func(code int, text string) error {
+			message := FormatCloseMessage(code, "")
+			if err := c.WriteControl(CloseMessage, message, time.Now().Add(writeWait)); err != nil {
+				return err
+			}
+			return nil
+		}
+	}
+	c.handleClose = h
+}
+
+// PingHandler returns the current ping handler
+func (c *Conn) PingHandler() func(appData string) error {
+	return c.handlePing
+}
+
+// SetPingHandler sets the handler for ping messages received from the peer.
+// The appData argument to h is the PING message application data. The default
+// ping handler sends a pong to the peer.
+//
+// The handler function is called from the NextReader, ReadMessage and message
+// reader Read methods. The application must read the connection to process
+// ping messages as described in the section on Control Messages above.
+func (c *Conn) SetPingHandler(h func(appData string) error) {
+	if h == nil {
+		h = func(message string) error {
+			err := c.WriteControl(PongMessage, []byte(message), time.Now().Add(writeWait))
+			if err == ErrCloseSent {
+				return nil
+			} else if _, ok := err.(net.Error); ok {
+				return nil
+			}
+			return err
+		}
+	}
+	c.handlePing = h
+}
+
+// PongHandler returns the current pong handler
+func (c *Conn) PongHandler() func(appData string) error {
+	return c.handlePong
+}
+
+// SetPongHandler sets the handler for pong messages received from the peer.
+// The appData argument to h is the PONG message application data. The default
+// pong handler does nothing.
+//
+// The handler function is called from the NextReader, ReadMessage and message
+// reader Read methods. The application must read the connection to process
+// pong messages as described in the section on Control Messages above.
+func (c *Conn) SetPongHandler(h func(appData string) error) {
+	if h == nil {
+		h = func(string) error { return nil }
+	}
+	c.handlePong = h
+}
+
+// NetConn returns the underlying connection that is wrapped by c.
+// Note that writing to or reading from this connection directly will corrupt the
+// WebSocket connection.
+func (c *Conn) NetConn() net.Conn {
+	return c.conn
+}
+
+// UnderlyingConn returns the internal net.Conn. This can be used to further
+// modifications to connection specific flags.
+// Deprecated: Use the NetConn method.
+func (c *Conn) UnderlyingConn() net.Conn {
+	return c.conn
+}
+
+// EnableWriteCompression enables and disables write compression of
+// subsequent text and binary messages. This function is a noop if
+// compression was not negotiated with the peer.
+func (c *Conn) EnableWriteCompression(enable bool) {
+	c.enableWriteCompression = enable
+}
+
+// SetCompressionLevel sets the flate compression level for subsequent text and
+// binary messages. This function is a noop if compression was not negotiated
+// with the peer. See the compress/flate package for a description of
+// compression levels.
+func (c *Conn) SetCompressionLevel(level int) error {
+	if !isValidCompressionLevel(level) {
+		return errors.New("websocket: invalid compression level")
+	}
+	c.compressionLevel = level
+	return nil
+}
+
+// FormatCloseMessage formats closeCode and text as a WebSocket close message.
+// An empty message is returned for code CloseNoStatusReceived.
+func FormatCloseMessage(closeCode int, text string) []byte {
+	if closeCode == CloseNoStatusReceived {
+		// Return empty message because it's illegal to send
+		// CloseNoStatusReceived. Return non-nil value in case application
+		// checks for nil.
+		return []byte{}
+	}
+	buf := make([]byte, 2+len(text))
+	binary.BigEndian.PutUint16(buf, uint16(closeCode))
+	copy(buf[2:], text)
+	return buf
+}
diff --git a/vendor/github.com/gorilla/websocket/doc.go b/vendor/github.com/gorilla/websocket/doc.go
new file mode 100644
index 00000000..8db0cef9
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/doc.go
@@ -0,0 +1,227 @@
+// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package websocket implements the WebSocket protocol defined in RFC 6455.
+//
+// Overview
+//
+// The Conn type represents a WebSocket connection. A server application calls
+// the Upgrader.Upgrade method from an HTTP request handler to get a *Conn:
+//
+//  var upgrader = websocket.Upgrader{
+//      ReadBufferSize:  1024,
+//      WriteBufferSize: 1024,
+//  }
+//
+//  func handler(w http.ResponseWriter, r *http.Request) {
+//      conn, err := upgrader.Upgrade(w, r, nil)
+//      if err != nil {
+//          log.Println(err)
+//          return
+//      }
+//      ... Use conn to send and receive messages.
+//  }
+//
+// Call the connection's WriteMessage and ReadMessage methods to send and
+// receive messages as a slice of bytes. This snippet of code shows how to echo
+// messages using these methods:
+//
+//  for {
+//      messageType, p, err := conn.ReadMessage()
+//      if err != nil {
+//          log.Println(err)
+//          return
+//      }
+//      if err := conn.WriteMessage(messageType, p); err != nil {
+//          log.Println(err)
+//          return
+//      }
+//  }
+//
+// In above snippet of code, p is a []byte and messageType is an int with value
+// websocket.BinaryMessage or websocket.TextMessage.
+//
+// An application can also send and receive messages using the io.WriteCloser
+// and io.Reader interfaces. To send a message, call the connection NextWriter
+// method to get an io.WriteCloser, write the message to the writer and close
+// the writer when done. To receive a message, call the connection NextReader
+// method to get an io.Reader and read until io.EOF is returned. This snippet
+// shows how to echo messages using the NextWriter and NextReader methods:
+//
+//  for {
+//      messageType, r, err := conn.NextReader()
+//      if err != nil {
+//          return
+//      }
+//      w, err := conn.NextWriter(messageType)
+//      if err != nil {
+//          return err
+//      }
+//      if _, err := io.Copy(w, r); err != nil {
+//          return err
+//      }
+//      if err := w.Close(); err != nil {
+//          return err
+//      }
+//  }
+//
+// Data Messages
+//
+// The WebSocket protocol distinguishes between text and binary data messages.
+// Text messages are interpreted as UTF-8 encoded text. The interpretation of
+// binary messages is left to the application.
+//
+// This package uses the TextMessage and BinaryMessage integer constants to
+// identify the two data message types. The ReadMessage and NextReader methods
+// return the type of the received message. The messageType argument to the
+// WriteMessage and NextWriter methods specifies the type of a sent message.
+//
+// It is the application's responsibility to ensure that text messages are
+// valid UTF-8 encoded text.
+//
+// Control Messages
+//
+// The WebSocket protocol defines three types of control messages: close, ping
+// and pong. Call the connection WriteControl, WriteMessage or NextWriter
+// methods to send a control message to the peer.
+//
+// Connections handle received close messages by calling the handler function
+// set with the SetCloseHandler method and by returning a *CloseError from the
+// NextReader, ReadMessage or the message Read method. The default close
+// handler sends a close message to the peer.
+//
+// Connections handle received ping messages by calling the handler function
+// set with the SetPingHandler method. The default ping handler sends a pong
+// message to the peer.
+//
+// Connections handle received pong messages by calling the handler function
+// set with the SetPongHandler method. The default pong handler does nothing.
+// If an application sends ping messages, then the application should set a
+// pong handler to receive the corresponding pong.
+//
+// The control message handler functions are called from the NextReader,
+// ReadMessage and message reader Read methods. The default close and ping
+// handlers can block these methods for a short time when the handler writes to
+// the connection.
+//
+// The application must read the connection to process close, ping and pong
+// messages sent from the peer. If the application is not otherwise interested
+// in messages from the peer, then the application should start a goroutine to
+// read and discard messages from the peer. A simple example is:
+//
+//  func readLoop(c *websocket.Conn) {
+//      for {
+//          if _, _, err := c.NextReader(); err != nil {
+//              c.Close()
+//              break
+//          }
+//      }
+//  }
+//
+// Concurrency
+//
+// Connections support one concurrent reader and one concurrent writer.
+//
+// Applications are responsible for ensuring that no more than one goroutine
+// calls the write methods (NextWriter, SetWriteDeadline, WriteMessage,
+// WriteJSON, EnableWriteCompression, SetCompressionLevel) concurrently and
+// that no more than one goroutine calls the read methods (NextReader,
+// SetReadDeadline, ReadMessage, ReadJSON, SetPongHandler, SetPingHandler)
+// concurrently.
+//
+// The Close and WriteControl methods can be called concurrently with all other
+// methods.
+//
+// Origin Considerations
+//
+// Web browsers allow Javascript applications to open a WebSocket connection to
+// any host. It's up to the server to enforce an origin policy using the Origin
+// request header sent by the browser.
+//
+// The Upgrader calls the function specified in the CheckOrigin field to check
+// the origin. If the CheckOrigin function returns false, then the Upgrade
+// method fails the WebSocket handshake with HTTP status 403.
+//
+// If the CheckOrigin field is nil, then the Upgrader uses a safe default: fail
+// the handshake if the Origin request header is present and the Origin host is
+// not equal to the Host request header.
+//
+// The deprecated package-level Upgrade function does not perform origin
+// checking. The application is responsible for checking the Origin header
+// before calling the Upgrade function.
+//
+// Buffers
+//
+// Connections buffer network input and output to reduce the number
+// of system calls when reading or writing messages.
+//
+// Write buffers are also used for constructing WebSocket frames. See RFC 6455,
+// Section 5 for a discussion of message framing. A WebSocket frame header is
+// written to the network each time a write buffer is flushed to the network.
+// Decreasing the size of the write buffer can increase the amount of framing
+// overhead on the connection.
+//
+// The buffer sizes in bytes are specified by the ReadBufferSize and
+// WriteBufferSize fields in the Dialer and Upgrader. The Dialer uses a default
+// size of 4096 when a buffer size field is set to zero. The Upgrader reuses
+// buffers created by the HTTP server when a buffer size field is set to zero.
+// The HTTP server buffers have a size of 4096 at the time of this writing.
+//
+// The buffer sizes do not limit the size of a message that can be read or
+// written by a connection.
+//
+// Buffers are held for the lifetime of the connection by default. If the
+// Dialer or Upgrader WriteBufferPool field is set, then a connection holds the
+// write buffer only when writing a message.
+//
+// Applications should tune the buffer sizes to balance memory use and
+// performance. Increasing the buffer size uses more memory, but can reduce the
+// number of system calls to read or write the network. In the case of writing,
+// increasing the buffer size can reduce the number of frame headers written to
+// the network.
+//
+// Some guidelines for setting buffer parameters are:
+//
+// Limit the buffer sizes to the maximum expected message size. Buffers larger
+// than the largest message do not provide any benefit.
+//
+// Depending on the distribution of message sizes, setting the buffer size to
+// a value less than the maximum expected message size can greatly reduce memory
+// use with a small impact on performance. Here's an example: If 99% of the
+// messages are smaller than 256 bytes and the maximum message size is 512
+// bytes, then a buffer size of 256 bytes will result in 1.01 more system calls
+// than a buffer size of 512 bytes. The memory savings is 50%.
+//
+// A write buffer pool is useful when the application has a modest number
+// writes over a large number of connections. when buffers are pooled, a larger
+// buffer size has a reduced impact on total memory use and has the benefit of
+// reducing system calls and frame overhead.
+//
+// Compression EXPERIMENTAL
+//
+// Per message compression extensions (RFC 7692) are experimentally supported
+// by this package in a limited capacity. Setting the EnableCompression option
+// to true in Dialer or Upgrader will attempt to negotiate per message deflate
+// support.
+//
+//  var upgrader = websocket.Upgrader{
+//      EnableCompression: true,
+//  }
+//
+// If compression was successfully negotiated with the connection's peer, any
+// message received in compressed form will be automatically decompressed.
+// All Read methods will return uncompressed bytes.
+//
+// Per message compression of messages written to a connection can be enabled
+// or disabled by calling the corresponding Conn method:
+//
+//  conn.EnableWriteCompression(false)
+//
+// Currently this package does not support compression with "context takeover".
+// This means that messages must be compressed and decompressed in isolation,
+// without retaining sliding window or dictionary state across messages. For
+// more details refer to RFC 7692.
+//
+// Use of compression is experimental and may result in decreased performance.
+package websocket
diff --git a/vendor/github.com/gorilla/websocket/join.go b/vendor/github.com/gorilla/websocket/join.go
new file mode 100644
index 00000000..c64f8c82
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/join.go
@@ -0,0 +1,42 @@
+// Copyright 2019 The Gorilla WebSocket Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package websocket
+
+import (
+	"io"
+	"strings"
+)
+
+// JoinMessages concatenates received messages to create a single io.Reader.
+// The string term is appended to each message. The returned reader does not
+// support concurrent calls to the Read method.
+func JoinMessages(c *Conn, term string) io.Reader {
+	return &joinReader{c: c, term: term}
+}
+
+type joinReader struct {
+	c    *Conn
+	term string
+	r    io.Reader
+}
+
+func (r *joinReader) Read(p []byte) (int, error) {
+	if r.r == nil {
+		var err error
+		_, r.r, err = r.c.NextReader()
+		if err != nil {
+			return 0, err
+		}
+		if r.term != "" {
+			r.r = io.MultiReader(r.r, strings.NewReader(r.term))
+		}
+	}
+	n, err := r.r.Read(p)
+	if err == io.EOF {
+		err = nil
+		r.r = nil
+	}
+	return n, err
+}
diff --git a/vendor/github.com/gorilla/websocket/json.go b/vendor/github.com/gorilla/websocket/json.go
new file mode 100644
index 00000000..dc2c1f64
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/json.go
@@ -0,0 +1,60 @@
+// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package websocket
+
+import (
+	"encoding/json"
+	"io"
+)
+
+// WriteJSON writes the JSON encoding of v as a message.
+//
+// Deprecated: Use c.WriteJSON instead.
+func WriteJSON(c *Conn, v interface{}) error {
+	return c.WriteJSON(v)
+}
+
+// WriteJSON writes the JSON encoding of v as a message.
+//
+// See the documentation for encoding/json Marshal for details about the
+// conversion of Go values to JSON.
+func (c *Conn) WriteJSON(v interface{}) error {
+	w, err := c.NextWriter(TextMessage)
+	if err != nil {
+		return err
+	}
+	err1 := json.NewEncoder(w).Encode(v)
+	err2 := w.Close()
+	if err1 != nil {
+		return err1
+	}
+	return err2
+}
+
+// ReadJSON reads the next JSON-encoded message from the connection and stores
+// it in the value pointed to by v.
+//
+// Deprecated: Use c.ReadJSON instead.
+func ReadJSON(c *Conn, v interface{}) error {
+	return c.ReadJSON(v)
+}
+
+// ReadJSON reads the next JSON-encoded message from the connection and stores
+// it in the value pointed to by v.
+//
+// See the documentation for the encoding/json Unmarshal function for details
+// about the conversion of JSON to a Go value.
+func (c *Conn) ReadJSON(v interface{}) error {
+	_, r, err := c.NextReader()
+	if err != nil {
+		return err
+	}
+	err = json.NewDecoder(r).Decode(v)
+	if err == io.EOF {
+		// One value is expected in the message.
+		err = io.ErrUnexpectedEOF
+	}
+	return err
+}
diff --git a/vendor/github.com/gorilla/websocket/mask.go b/vendor/github.com/gorilla/websocket/mask.go
new file mode 100644
index 00000000..67d0968b
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/mask.go
@@ -0,0 +1,59 @@
+// Copyright 2016 The Gorilla WebSocket Authors. All rights reserved.  Use of
+// this source code is governed by a BSD-style license that can be found in the
+// LICENSE file.
+
+//go:build !appengine
+// +build !appengine
+
+package websocket
+
+import "unsafe"
+
+// #nosec G103 -- (CWE-242) Has been audited
+const wordSize = int(unsafe.Sizeof(uintptr(0)))
+
+func maskBytes(key [4]byte, pos int, b []byte) int {
+	// Mask one byte at a time for small buffers.
+	if len(b) < 2*wordSize {
+		for i := range b {
+			b[i] ^= key[pos&3]
+			pos++
+		}
+		return pos & 3
+	}
+
+	// Mask one byte at a time to word boundary.
+	//#nosec G103 -- (CWE-242) Has been audited
+	if n := int(uintptr(unsafe.Pointer(&b[0]))) % wordSize; n != 0 {
+		n = wordSize - n
+		for i := range b[:n] {
+			b[i] ^= key[pos&3]
+			pos++
+		}
+		b = b[n:]
+	}
+
+	// Create aligned word size key.
+	var k [wordSize]byte
+	for i := range k {
+		k[i] = key[(pos+i)&3]
+	}
+	//#nosec G103 -- (CWE-242) Has been audited
+	kw := *(*uintptr)(unsafe.Pointer(&k))
+
+	// Mask one word at a time.
+	n := (len(b) / wordSize) * wordSize
+	for i := 0; i < n; i += wordSize {
+		//#nosec G103 -- (CWE-242) Has been audited
+		*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&b[0])) + uintptr(i))) ^= kw
+	}
+
+	// Mask one byte at a time for remaining bytes.
+	b = b[n:]
+	for i := range b {
+		b[i] ^= key[pos&3]
+		pos++
+	}
+
+	return pos & 3
+}
diff --git a/vendor/github.com/gorilla/websocket/mask_safe.go b/vendor/github.com/gorilla/websocket/mask_safe.go
new file mode 100644
index 00000000..36250ca7
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/mask_safe.go
@@ -0,0 +1,16 @@
+// Copyright 2016 The Gorilla WebSocket Authors. All rights reserved.  Use of
+// this source code is governed by a BSD-style license that can be found in the
+// LICENSE file.
+
+//go:build appengine
+// +build appengine
+
+package websocket
+
+func maskBytes(key [4]byte, pos int, b []byte) int {
+	for i := range b {
+		b[i] ^= key[pos&3]
+		pos++
+	}
+	return pos & 3
+}
diff --git a/vendor/github.com/gorilla/websocket/prepared.go b/vendor/github.com/gorilla/websocket/prepared.go
new file mode 100644
index 00000000..c854225e
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/prepared.go
@@ -0,0 +1,102 @@
+// Copyright 2017 The Gorilla WebSocket Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package websocket
+
+import (
+	"bytes"
+	"net"
+	"sync"
+	"time"
+)
+
+// PreparedMessage caches on the wire representations of a message payload.
+// Use PreparedMessage to efficiently send a message payload to multiple
+// connections. PreparedMessage is especially useful when compression is used
+// because the CPU and memory expensive compression operation can be executed
+// once for a given set of compression options.
+type PreparedMessage struct {
+	messageType int
+	data        []byte
+	mu          sync.Mutex
+	frames      map[prepareKey]*preparedFrame
+}
+
+// prepareKey defines a unique set of options to cache prepared frames in PreparedMessage.
+type prepareKey struct {
+	isServer         bool
+	compress         bool
+	compressionLevel int
+}
+
+// preparedFrame contains data in wire representation.
+type preparedFrame struct {
+	once sync.Once
+	data []byte
+}
+
+// NewPreparedMessage returns an initialized PreparedMessage. You can then send
+// it to connection using WritePreparedMessage method. Valid wire
+// representation will be calculated lazily only once for a set of current
+// connection options.
+func NewPreparedMessage(messageType int, data []byte) (*PreparedMessage, error) {
+	pm := &PreparedMessage{
+		messageType: messageType,
+		frames:      make(map[prepareKey]*preparedFrame),
+		data:        data,
+	}
+
+	// Prepare a plain server frame.
+	_, frameData, err := pm.frame(prepareKey{isServer: true, compress: false})
+	if err != nil {
+		return nil, err
+	}
+
+	// To protect against caller modifying the data argument, remember the data
+	// copied to the plain server frame.
+	pm.data = frameData[len(frameData)-len(data):]
+	return pm, nil
+}
+
+func (pm *PreparedMessage) frame(key prepareKey) (int, []byte, error) {
+	pm.mu.Lock()
+	frame, ok := pm.frames[key]
+	if !ok {
+		frame = &preparedFrame{}
+		pm.frames[key] = frame
+	}
+	pm.mu.Unlock()
+
+	var err error
+	frame.once.Do(func() {
+		// Prepare a frame using a 'fake' connection.
+		// TODO: Refactor code in conn.go to allow more direct construction of
+		// the frame.
+		mu := make(chan struct{}, 1)
+		mu <- struct{}{}
+		var nc prepareConn
+		c := &Conn{
+			conn:                   &nc,
+			mu:                     mu,
+			isServer:               key.isServer,
+			compressionLevel:       key.compressionLevel,
+			enableWriteCompression: true,
+			writeBuf:               make([]byte, defaultWriteBufferSize+maxFrameHeaderSize),
+		}
+		if key.compress {
+			c.newCompressionWriter = compressNoContextTakeover
+		}
+		err = c.WriteMessage(pm.messageType, pm.data)
+		frame.data = nc.buf.Bytes()
+	})
+	return pm.messageType, frame.data, err
+}
+
+type prepareConn struct {
+	buf bytes.Buffer
+	net.Conn
+}
+
+func (pc *prepareConn) Write(p []byte) (int, error)        { return pc.buf.Write(p) }
+func (pc *prepareConn) SetWriteDeadline(t time.Time) error { return nil }
diff --git a/vendor/github.com/gorilla/websocket/proxy.go b/vendor/github.com/gorilla/websocket/proxy.go
new file mode 100644
index 00000000..80f55d1e
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/proxy.go
@@ -0,0 +1,86 @@
+// Copyright 2017 The Gorilla WebSocket Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package websocket
+
+import (
+	"bufio"
+	"encoding/base64"
+	"errors"
+	"log"
+	"net"
+	"net/http"
+	"net/url"
+	"strings"
+
+	"golang.org/x/net/proxy"
+)
+
+type netDialerFunc func(network, addr string) (net.Conn, error)
+
+func (fn netDialerFunc) Dial(network, addr string) (net.Conn, error) {
+	return fn(network, addr)
+}
+
+func init() {
+	proxy.RegisterDialerType("http", func(proxyURL *url.URL, forwardDialer proxy.Dialer) (proxy.Dialer, error) {
+		return &httpProxyDialer{proxyURL: proxyURL, forwardDial: forwardDialer.Dial}, nil
+	})
+}
+
+type httpProxyDialer struct {
+	proxyURL    *url.URL
+	forwardDial func(network, addr string) (net.Conn, error)
+}
+
+func (hpd *httpProxyDialer) Dial(network string, addr string) (net.Conn, error) {
+	hostPort, _ := hostPortNoPort(hpd.proxyURL)
+	conn, err := hpd.forwardDial(network, hostPort)
+	if err != nil {
+		return nil, err
+	}
+
+	connectHeader := make(http.Header)
+	if user := hpd.proxyURL.User; user != nil {
+		proxyUser := user.Username()
+		if proxyPassword, passwordSet := user.Password(); passwordSet {
+			credential := base64.StdEncoding.EncodeToString([]byte(proxyUser + ":" + proxyPassword))
+			connectHeader.Set("Proxy-Authorization", "Basic "+credential)
+		}
+	}
+
+	connectReq := &http.Request{
+		Method: http.MethodConnect,
+		URL:    &url.URL{Opaque: addr},
+		Host:   addr,
+		Header: connectHeader,
+	}
+
+	if err := connectReq.Write(conn); err != nil {
+		if err := conn.Close(); err != nil {
+			log.Printf("httpProxyDialer: failed to close connection: %v", err)
+		}
+		return nil, err
+	}
+
+	// Read response. It's OK to use and discard buffered reader here becaue
+	// the remote server does not speak until spoken to.
+	br := bufio.NewReader(conn)
+	resp, err := http.ReadResponse(br, connectReq)
+	if err != nil {
+		if err := conn.Close(); err != nil {
+			log.Printf("httpProxyDialer: failed to close connection: %v", err)
+		}
+		return nil, err
+	}
+
+	if resp.StatusCode != 200 {
+		if err := conn.Close(); err != nil {
+			log.Printf("httpProxyDialer: failed to close connection: %v", err)
+		}
+		f := strings.SplitN(resp.Status, " ", 2)
+		return nil, errors.New(f[1])
+	}
+	return conn, nil
+}
diff --git a/vendor/github.com/gorilla/websocket/server.go b/vendor/github.com/gorilla/websocket/server.go
new file mode 100644
index 00000000..1e720e1d
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/server.go
@@ -0,0 +1,389 @@
+// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package websocket
+
+import (
+	"bufio"
+	"errors"
+	"io"
+	"log"
+	"net/http"
+	"net/url"
+	"strings"
+	"time"
+)
+
+// HandshakeError describes an error with the handshake from the peer.
+type HandshakeError struct {
+	message string
+}
+
+func (e HandshakeError) Error() string { return e.message }
+
+// Upgrader specifies parameters for upgrading an HTTP connection to a
+// WebSocket connection.
+//
+// It is safe to call Upgrader's methods concurrently.
+type Upgrader struct {
+	// HandshakeTimeout specifies the duration for the handshake to complete.
+	HandshakeTimeout time.Duration
+
+	// ReadBufferSize and WriteBufferSize specify I/O buffer sizes in bytes. If a buffer
+	// size is zero, then buffers allocated by the HTTP server are used. The
+	// I/O buffer sizes do not limit the size of the messages that can be sent
+	// or received.
+	ReadBufferSize, WriteBufferSize int
+
+	// WriteBufferPool is a pool of buffers for write operations. If the value
+	// is not set, then write buffers are allocated to the connection for the
+	// lifetime of the connection.
+	//
+	// A pool is most useful when the application has a modest volume of writes
+	// across a large number of connections.
+	//
+	// Applications should use a single pool for each unique value of
+	// WriteBufferSize.
+	WriteBufferPool BufferPool
+
+	// Subprotocols specifies the server's supported protocols in order of
+	// preference. If this field is not nil, then the Upgrade method negotiates a
+	// subprotocol by selecting the first match in this list with a protocol
+	// requested by the client. If there's no match, then no protocol is
+	// negotiated (the Sec-Websocket-Protocol header is not included in the
+	// handshake response).
+	Subprotocols []string
+
+	// Error specifies the function for generating HTTP error responses. If Error
+	// is nil, then http.Error is used to generate the HTTP response.
+	Error func(w http.ResponseWriter, r *http.Request, status int, reason error)
+
+	// CheckOrigin returns true if the request Origin header is acceptable. If
+	// CheckOrigin is nil, then a safe default is used: return false if the
+	// Origin request header is present and the origin host is not equal to
+	// request Host header.
+	//
+	// A CheckOrigin function should carefully validate the request origin to
+	// prevent cross-site request forgery.
+	CheckOrigin func(r *http.Request) bool
+
+	// EnableCompression specify if the server should attempt to negotiate per
+	// message compression (RFC 7692). Setting this value to true does not
+	// guarantee that compression will be supported. Currently only "no context
+	// takeover" modes are supported.
+	EnableCompression bool
+}
+
+func (u *Upgrader) returnError(w http.ResponseWriter, r *http.Request, status int, reason string) (*Conn, error) {
+	err := HandshakeError{reason}
+	if u.Error != nil {
+		u.Error(w, r, status, err)
+	} else {
+		w.Header().Set("Sec-Websocket-Version", "13")
+		http.Error(w, http.StatusText(status), status)
+	}
+	return nil, err
+}
+
+// checkSameOrigin returns true if the origin is not set or is equal to the request host.
+func checkSameOrigin(r *http.Request) bool {
+	origin := r.Header["Origin"]
+	if len(origin) == 0 {
+		return true
+	}
+	u, err := url.Parse(origin[0])
+	if err != nil {
+		return false
+	}
+	return equalASCIIFold(u.Host, r.Host)
+}
+
+func (u *Upgrader) selectSubprotocol(r *http.Request, responseHeader http.Header) string {
+	if u.Subprotocols != nil {
+		clientProtocols := Subprotocols(r)
+		for _, serverProtocol := range u.Subprotocols {
+			for _, clientProtocol := range clientProtocols {
+				if clientProtocol == serverProtocol {
+					return clientProtocol
+				}
+			}
+		}
+	} else if responseHeader != nil {
+		return responseHeader.Get("Sec-Websocket-Protocol")
+	}
+	return ""
+}
+
+// Upgrade upgrades the HTTP server connection to the WebSocket protocol.
+//
+// The responseHeader is included in the response to the client's upgrade
+// request. Use the responseHeader to specify cookies (Set-Cookie). To specify
+// subprotocols supported by the server, set Upgrader.Subprotocols directly.
+//
+// If the upgrade fails, then Upgrade replies to the client with an HTTP error
+// response.
+func (u *Upgrader) Upgrade(w http.ResponseWriter, r *http.Request, responseHeader http.Header) (*Conn, error) {
+	const badHandshake = "websocket: the client is not using the websocket protocol: "
+
+	if !tokenListContainsValue(r.Header, "Connection", "upgrade") {
+		return u.returnError(w, r, http.StatusBadRequest, badHandshake+"'upgrade' token not found in 'Connection' header")
+	}
+
+	if !tokenListContainsValue(r.Header, "Upgrade", "websocket") {
+		return u.returnError(w, r, http.StatusBadRequest, badHandshake+"'websocket' token not found in 'Upgrade' header")
+	}
+
+	if r.Method != http.MethodGet {
+		return u.returnError(w, r, http.StatusMethodNotAllowed, badHandshake+"request method is not GET")
+	}
+
+	if !tokenListContainsValue(r.Header, "Sec-Websocket-Version", "13") {
+		return u.returnError(w, r, http.StatusBadRequest, "websocket: unsupported version: 13 not found in 'Sec-Websocket-Version' header")
+	}
+
+	if _, ok := responseHeader["Sec-Websocket-Extensions"]; ok {
+		return u.returnError(w, r, http.StatusInternalServerError, "websocket: application specific 'Sec-WebSocket-Extensions' headers are unsupported")
+	}
+
+	checkOrigin := u.CheckOrigin
+	if checkOrigin == nil {
+		checkOrigin = checkSameOrigin
+	}
+	if !checkOrigin(r) {
+		return u.returnError(w, r, http.StatusForbidden, "websocket: request origin not allowed by Upgrader.CheckOrigin")
+	}
+
+	challengeKey := r.Header.Get("Sec-Websocket-Key")
+	if !isValidChallengeKey(challengeKey) {
+		return u.returnError(w, r, http.StatusBadRequest, "websocket: not a websocket handshake: 'Sec-WebSocket-Key' header must be Base64 encoded value of 16-byte in length")
+	}
+
+	subprotocol := u.selectSubprotocol(r, responseHeader)
+
+	// Negotiate PMCE
+	var compress bool
+	if u.EnableCompression {
+		for _, ext := range parseExtensions(r.Header) {
+			if ext[""] != "permessage-deflate" {
+				continue
+			}
+			compress = true
+			break
+		}
+	}
+
+	h, ok := w.(http.Hijacker)
+	if !ok {
+		return u.returnError(w, r, http.StatusInternalServerError, "websocket: response does not implement http.Hijacker")
+	}
+	var brw *bufio.ReadWriter
+	netConn, brw, err := h.Hijack()
+	if err != nil {
+		return u.returnError(w, r, http.StatusInternalServerError, err.Error())
+	}
+
+	if brw.Reader.Buffered() > 0 {
+		if err := netConn.Close(); err != nil {
+			log.Printf("websocket: failed to close network connection: %v", err)
+		}
+		return nil, errors.New("websocket: client sent data before handshake is complete")
+	}
+
+	var br *bufio.Reader
+	if u.ReadBufferSize == 0 && bufioReaderSize(netConn, brw.Reader) > 256 {
+		// Reuse hijacked buffered reader as connection reader.
+		br = brw.Reader
+	}
+
+	buf := bufioWriterBuffer(netConn, brw.Writer)
+
+	var writeBuf []byte
+	if u.WriteBufferPool == nil && u.WriteBufferSize == 0 && len(buf) >= maxFrameHeaderSize+256 {
+		// Reuse hijacked write buffer as connection buffer.
+		writeBuf = buf
+	}
+
+	c := newConn(netConn, true, u.ReadBufferSize, u.WriteBufferSize, u.WriteBufferPool, br, writeBuf)
+	c.subprotocol = subprotocol
+
+	if compress {
+		c.newCompressionWriter = compressNoContextTakeover
+		c.newDecompressionReader = decompressNoContextTakeover
+	}
+
+	// Use larger of hijacked buffer and connection write buffer for header.
+	p := buf
+	if len(c.writeBuf) > len(p) {
+		p = c.writeBuf
+	}
+	p = p[:0]
+
+	p = append(p, "HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: "...)
+	p = append(p, computeAcceptKey(challengeKey)...)
+	p = append(p, "\r\n"...)
+	if c.subprotocol != "" {
+		p = append(p, "Sec-WebSocket-Protocol: "...)
+		p = append(p, c.subprotocol...)
+		p = append(p, "\r\n"...)
+	}
+	if compress {
+		p = append(p, "Sec-WebSocket-Extensions: permessage-deflate; server_no_context_takeover; client_no_context_takeover\r\n"...)
+	}
+	for k, vs := range responseHeader {
+		if k == "Sec-Websocket-Protocol" {
+			continue
+		}
+		for _, v := range vs {
+			p = append(p, k...)
+			p = append(p, ": "...)
+			for i := 0; i < len(v); i++ {
+				b := v[i]
+				if b <= 31 {
+					// prevent response splitting.
+					b = ' '
+				}
+				p = append(p, b)
+			}
+			p = append(p, "\r\n"...)
+		}
+	}
+	p = append(p, "\r\n"...)
+
+	// Clear deadlines set by HTTP server.
+	if err := netConn.SetDeadline(time.Time{}); err != nil {
+		if err := netConn.Close(); err != nil {
+			log.Printf("websocket: failed to close network connection: %v", err)
+		}
+		return nil, err
+	}
+
+	if u.HandshakeTimeout > 0 {
+		if err := netConn.SetWriteDeadline(time.Now().Add(u.HandshakeTimeout)); err != nil {
+			if err := netConn.Close(); err != nil {
+				log.Printf("websocket: failed to close network connection: %v", err)
+			}
+			return nil, err
+		}
+	}
+	if _, err = netConn.Write(p); err != nil {
+		if err := netConn.Close(); err != nil {
+			log.Printf("websocket: failed to close network connection: %v", err)
+		}
+		return nil, err
+	}
+	if u.HandshakeTimeout > 0 {
+		if err := netConn.SetWriteDeadline(time.Time{}); err != nil {
+			if err := netConn.Close(); err != nil {
+				log.Printf("websocket: failed to close network connection: %v", err)
+			}
+			return nil, err
+		}
+	}
+
+	return c, nil
+}
+
+// Upgrade upgrades the HTTP server connection to the WebSocket protocol.
+//
+// Deprecated: Use websocket.Upgrader instead.
+//
+// Upgrade does not perform origin checking. The application is responsible for
+// checking the Origin header before calling Upgrade. An example implementation
+// of the same origin policy check is:
+//
+//	if req.Header.Get("Origin") != "http://"+req.Host {
+//		http.Error(w, "Origin not allowed", http.StatusForbidden)
+//		return
+//	}
+//
+// If the endpoint supports subprotocols, then the application is responsible
+// for negotiating the protocol used on the connection. Use the Subprotocols()
+// function to get the subprotocols requested by the client. Use the
+// Sec-Websocket-Protocol response header to specify the subprotocol selected
+// by the application.
+//
+// The responseHeader is included in the response to the client's upgrade
+// request. Use the responseHeader to specify cookies (Set-Cookie) and the
+// negotiated subprotocol (Sec-Websocket-Protocol).
+//
+// The connection buffers IO to the underlying network connection. The
+// readBufSize and writeBufSize parameters specify the size of the buffers to
+// use. Messages can be larger than the buffers.
+//
+// If the request is not a valid WebSocket handshake, then Upgrade returns an
+// error of type HandshakeError. Applications should handle this error by
+// replying to the client with an HTTP error response.
+func Upgrade(w http.ResponseWriter, r *http.Request, responseHeader http.Header, readBufSize, writeBufSize int) (*Conn, error) {
+	u := Upgrader{ReadBufferSize: readBufSize, WriteBufferSize: writeBufSize}
+	u.Error = func(w http.ResponseWriter, r *http.Request, status int, reason error) {
+		// don't return errors to maintain backwards compatibility
+	}
+	u.CheckOrigin = func(r *http.Request) bool {
+		// allow all connections by default
+		return true
+	}
+	return u.Upgrade(w, r, responseHeader)
+}
+
+// Subprotocols returns the subprotocols requested by the client in the
+// Sec-Websocket-Protocol header.
+func Subprotocols(r *http.Request) []string {
+	h := strings.TrimSpace(r.Header.Get("Sec-Websocket-Protocol"))
+	if h == "" {
+		return nil
+	}
+	protocols := strings.Split(h, ",")
+	for i := range protocols {
+		protocols[i] = strings.TrimSpace(protocols[i])
+	}
+	return protocols
+}
+
+// IsWebSocketUpgrade returns true if the client requested upgrade to the
+// WebSocket protocol.
+func IsWebSocketUpgrade(r *http.Request) bool {
+	return tokenListContainsValue(r.Header, "Connection", "upgrade") &&
+		tokenListContainsValue(r.Header, "Upgrade", "websocket")
+}
+
+// bufioReaderSize size returns the size of a bufio.Reader.
+func bufioReaderSize(originalReader io.Reader, br *bufio.Reader) int {
+	// This code assumes that peek on a reset reader returns
+	// bufio.Reader.buf[:0].
+	// TODO: Use bufio.Reader.Size() after Go 1.10
+	br.Reset(originalReader)
+	if p, err := br.Peek(0); err == nil {
+		return cap(p)
+	}
+	return 0
+}
+
+// writeHook is an io.Writer that records the last slice passed to it vio
+// io.Writer.Write.
+type writeHook struct {
+	p []byte
+}
+
+func (wh *writeHook) Write(p []byte) (int, error) {
+	wh.p = p
+	return len(p), nil
+}
+
+// bufioWriterBuffer grabs the buffer from a bufio.Writer.
+func bufioWriterBuffer(originalWriter io.Writer, bw *bufio.Writer) []byte {
+	// This code assumes that bufio.Writer.buf[:1] is passed to the
+	// bufio.Writer's underlying writer.
+	var wh writeHook
+	bw.Reset(&wh)
+	if err := bw.WriteByte(0); err != nil {
+		panic(err)
+	}
+	if err := bw.Flush(); err != nil {
+		log.Printf("websocket: bufioWriterBuffer: Flush: %v", err)
+	}
+
+	bw.Reset(originalWriter)
+
+	return wh.p[:cap(wh.p)]
+}
diff --git a/vendor/github.com/gorilla/websocket/tls_handshake.go b/vendor/github.com/gorilla/websocket/tls_handshake.go
new file mode 100644
index 00000000..7f386453
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/tls_handshake.go
@@ -0,0 +1,18 @@
+package websocket
+
+import (
+	"context"
+	"crypto/tls"
+)
+
+func doHandshake(ctx context.Context, tlsConn *tls.Conn, cfg *tls.Config) error {
+	if err := tlsConn.HandshakeContext(ctx); err != nil {
+		return err
+	}
+	if !cfg.InsecureSkipVerify {
+		if err := tlsConn.VerifyHostname(cfg.ServerName); err != nil {
+			return err
+		}
+	}
+	return nil
+}
diff --git a/vendor/github.com/gorilla/websocket/util.go b/vendor/github.com/gorilla/websocket/util.go
new file mode 100644
index 00000000..9b1a629b
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/util.go
@@ -0,0 +1,298 @@
+// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package websocket
+
+import (
+	"crypto/rand"
+	"crypto/sha1" //#nosec G505 -- (CWE-327) https://datatracker.ietf.org/doc/html/rfc6455#page-54
+	"encoding/base64"
+	"io"
+	"net/http"
+	"strings"
+	"unicode/utf8"
+)
+
+var keyGUID = []byte("258EAFA5-E914-47DA-95CA-C5AB0DC85B11")
+
+func computeAcceptKey(challengeKey string) string {
+	h := sha1.New() //#nosec G401 -- (CWE-326) https://datatracker.ietf.org/doc/html/rfc6455#page-54
+	h.Write([]byte(challengeKey))
+	h.Write(keyGUID)
+	return base64.StdEncoding.EncodeToString(h.Sum(nil))
+}
+
+func generateChallengeKey() (string, error) {
+	p := make([]byte, 16)
+	if _, err := io.ReadFull(rand.Reader, p); err != nil {
+		return "", err
+	}
+	return base64.StdEncoding.EncodeToString(p), nil
+}
+
+// Token octets per RFC 2616.
+var isTokenOctet = [256]bool{
+	'!':  true,
+	'#':  true,
+	'$':  true,
+	'%':  true,
+	'&':  true,
+	'\'': true,
+	'*':  true,
+	'+':  true,
+	'-':  true,
+	'.':  true,
+	'0':  true,
+	'1':  true,
+	'2':  true,
+	'3':  true,
+	'4':  true,
+	'5':  true,
+	'6':  true,
+	'7':  true,
+	'8':  true,
+	'9':  true,
+	'A':  true,
+	'B':  true,
+	'C':  true,
+	'D':  true,
+	'E':  true,
+	'F':  true,
+	'G':  true,
+	'H':  true,
+	'I':  true,
+	'J':  true,
+	'K':  true,
+	'L':  true,
+	'M':  true,
+	'N':  true,
+	'O':  true,
+	'P':  true,
+	'Q':  true,
+	'R':  true,
+	'S':  true,
+	'T':  true,
+	'U':  true,
+	'W':  true,
+	'V':  true,
+	'X':  true,
+	'Y':  true,
+	'Z':  true,
+	'^':  true,
+	'_':  true,
+	'`':  true,
+	'a':  true,
+	'b':  true,
+	'c':  true,
+	'd':  true,
+	'e':  true,
+	'f':  true,
+	'g':  true,
+	'h':  true,
+	'i':  true,
+	'j':  true,
+	'k':  true,
+	'l':  true,
+	'm':  true,
+	'n':  true,
+	'o':  true,
+	'p':  true,
+	'q':  true,
+	'r':  true,
+	's':  true,
+	't':  true,
+	'u':  true,
+	'v':  true,
+	'w':  true,
+	'x':  true,
+	'y':  true,
+	'z':  true,
+	'|':  true,
+	'~':  true,
+}
+
+// skipSpace returns a slice of the string s with all leading RFC 2616 linear
+// whitespace removed.
+func skipSpace(s string) (rest string) {
+	i := 0
+	for ; i < len(s); i++ {
+		if b := s[i]; b != ' ' && b != '\t' {
+			break
+		}
+	}
+	return s[i:]
+}
+
+// nextToken returns the leading RFC 2616 token of s and the string following
+// the token.
+func nextToken(s string) (token, rest string) {
+	i := 0
+	for ; i < len(s); i++ {
+		if !isTokenOctet[s[i]] {
+			break
+		}
+	}
+	return s[:i], s[i:]
+}
+
+// nextTokenOrQuoted returns the leading token or quoted string per RFC 2616
+// and the string following the token or quoted string.
+func nextTokenOrQuoted(s string) (value string, rest string) {
+	if !strings.HasPrefix(s, "\"") {
+		return nextToken(s)
+	}
+	s = s[1:]
+	for i := 0; i < len(s); i++ {
+		switch s[i] {
+		case '"':
+			return s[:i], s[i+1:]
+		case '\\':
+			p := make([]byte, len(s)-1)
+			j := copy(p, s[:i])
+			escape := true
+			for i = i + 1; i < len(s); i++ {
+				b := s[i]
+				switch {
+				case escape:
+					escape = false
+					p[j] = b
+					j++
+				case b == '\\':
+					escape = true
+				case b == '"':
+					return string(p[:j]), s[i+1:]
+				default:
+					p[j] = b
+					j++
+				}
+			}
+			return "", ""
+		}
+	}
+	return "", ""
+}
+
+// equalASCIIFold returns true if s is equal to t with ASCII case folding as
+// defined in RFC 4790.
+func equalASCIIFold(s, t string) bool {
+	for s != "" && t != "" {
+		sr, size := utf8.DecodeRuneInString(s)
+		s = s[size:]
+		tr, size := utf8.DecodeRuneInString(t)
+		t = t[size:]
+		if sr == tr {
+			continue
+		}
+		if 'A' <= sr && sr <= 'Z' {
+			sr = sr + 'a' - 'A'
+		}
+		if 'A' <= tr && tr <= 'Z' {
+			tr = tr + 'a' - 'A'
+		}
+		if sr != tr {
+			return false
+		}
+	}
+	return s == t
+}
+
+// tokenListContainsValue returns true if the 1#token header with the given
+// name contains a token equal to value with ASCII case folding.
+func tokenListContainsValue(header http.Header, name string, value string) bool {
+headers:
+	for _, s := range header[name] {
+		for {
+			var t string
+			t, s = nextToken(skipSpace(s))
+			if t == "" {
+				continue headers
+			}
+			s = skipSpace(s)
+			if s != "" && s[0] != ',' {
+				continue headers
+			}
+			if equalASCIIFold(t, value) {
+				return true
+			}
+			if s == "" {
+				continue headers
+			}
+			s = s[1:]
+		}
+	}
+	return false
+}
+
+// parseExtensions parses WebSocket extensions from a header.
+func parseExtensions(header http.Header) []map[string]string {
+	// From RFC 6455:
+	//
+	//  Sec-WebSocket-Extensions = extension-list
+	//  extension-list = 1#extension
+	//  extension = extension-token *( ";" extension-param )
+	//  extension-token = registered-token
+	//  registered-token = token
+	//  extension-param = token [ "=" (token | quoted-string) ]
+	//     ;When using the quoted-string syntax variant, the value
+	//     ;after quoted-string unescaping MUST conform to the
+	//     ;'token' ABNF.
+
+	var result []map[string]string
+headers:
+	for _, s := range header["Sec-Websocket-Extensions"] {
+		for {
+			var t string
+			t, s = nextToken(skipSpace(s))
+			if t == "" {
+				continue headers
+			}
+			ext := map[string]string{"": t}
+			for {
+				s = skipSpace(s)
+				if !strings.HasPrefix(s, ";") {
+					break
+				}
+				var k string
+				k, s = nextToken(skipSpace(s[1:]))
+				if k == "" {
+					continue headers
+				}
+				s = skipSpace(s)
+				var v string
+				if strings.HasPrefix(s, "=") {
+					v, s = nextTokenOrQuoted(skipSpace(s[1:]))
+					s = skipSpace(s)
+				}
+				if s != "" && s[0] != ',' && s[0] != ';' {
+					continue headers
+				}
+				ext[k] = v
+			}
+			if s != "" && s[0] != ',' {
+				continue headers
+			}
+			result = append(result, ext)
+			if s == "" {
+				continue headers
+			}
+			s = s[1:]
+		}
+	}
+	return result
+}
+
+// isValidChallengeKey checks if the argument meets RFC6455 specification.
+func isValidChallengeKey(s string) bool {
+	// From RFC6455:
+	//
+	// A |Sec-WebSocket-Key| header field with a base64-encoded (see
+	// Section 4 of [RFC4648]) value that, when decoded, is 16 bytes in
+	// length.
+
+	if s == "" {
+		return false
+	}
+	decoded, err := base64.StdEncoding.DecodeString(s)
+	return err == nil && len(decoded) == 16
+}
diff --git a/vendor/github.com/rancher/norman/LICENSE b/vendor/github.com/rancher/norman/LICENSE
new file mode 100644
index 00000000..f433b1a5
--- /dev/null
+++ b/vendor/github.com/rancher/norman/LICENSE
@@ -0,0 +1,177 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
diff --git a/vendor/github.com/rancher/norman/clientbase/common.go b/vendor/github.com/rancher/norman/clientbase/common.go
new file mode 100644
index 00000000..ee0a4c3f
--- /dev/null
+++ b/vendor/github.com/rancher/norman/clientbase/common.go
@@ -0,0 +1,407 @@
+package clientbase
+
+import (
+	"bytes"
+	"crypto/tls"
+	"crypto/x509"
+	"encoding/base64"
+	"encoding/json"
+	"fmt"
+	"io"
+	"net/http"
+	"net/url"
+	"os"
+	"time"
+
+	"github.com/gorilla/websocket"
+	"github.com/pkg/errors"
+	"github.com/rancher/norman/types"
+)
+
+const (
+	SELF       = "self"
+	COLLECTION = "collection"
+)
+
+var (
+	Debug = false
+)
+
+type APIBaseClientInterface interface {
+	Websocket(url string, headers map[string][]string) (*websocket.Conn, *http.Response, error)
+	List(schemaType string, opts *types.ListOpts, respObject interface{}) error
+	Post(url string, createObj interface{}, respObject interface{}) error
+	GetLink(resource types.Resource, link string, respObject interface{}) error
+	Create(schemaType string, createObj interface{}, respObject interface{}) error
+	Update(schemaType string, existing *types.Resource, updates interface{}, respObject interface{}) error
+	Replace(schemaType string, existing *types.Resource, updates interface{}, respObject interface{}) error
+	ByID(schemaType string, id string, respObject interface{}) error
+	Delete(existing *types.Resource) error
+	Reload(existing *types.Resource, output interface{}) error
+	Action(schemaType string, action string, existing *types.Resource, inputObject, respObject interface{}) error
+}
+
+type APIBaseClient struct {
+	Ops   *APIOperations
+	Opts  *ClientOpts
+	Types map[string]types.Schema
+}
+
+type ClientOpts struct {
+	URL        string
+	AccessKey  string
+	SecretKey  string
+	TokenKey   string
+	Timeout    time.Duration
+	HTTPClient *http.Client
+	WSDialer   *websocket.Dialer
+	CACerts    string
+	Insecure   bool
+	ProxyURL   string
+}
+
+func (c *ClientOpts) getAuthHeader() string {
+	if c.TokenKey != "" {
+		return "Bearer " + c.TokenKey
+	}
+	if c.AccessKey != "" && c.SecretKey != "" {
+		s := c.AccessKey + ":" + c.SecretKey
+		return "Basic " + base64.StdEncoding.EncodeToString([]byte(s))
+	}
+	return ""
+}
+
+type APIError struct {
+	StatusCode int
+	URL        string
+	Msg        string
+	Status     string
+	Body       string
+}
+
+func (e *APIError) Error() string {
+	return e.Msg
+}
+
+func IsNotFound(err error) bool {
+	apiError, ok := err.(*APIError)
+	if !ok {
+		return false
+	}
+
+	return apiError.StatusCode == http.StatusNotFound
+}
+
+func NewAPIError(resp *http.Response, url string) *APIError {
+	contents, err := io.ReadAll(resp.Body)
+	var body string
+	if err != nil {
+		body = "Unreadable body."
+	} else {
+		body = string(contents)
+	}
+
+	data := map[string]interface{}{}
+	if json.Unmarshal(contents, &data) == nil {
+		delete(data, "id")
+		delete(data, "links")
+		delete(data, "actions")
+		delete(data, "type")
+		delete(data, "status")
+		buf := &bytes.Buffer{}
+		for k, v := range data {
+			if v == nil {
+				continue
+			}
+			if buf.Len() > 0 {
+				buf.WriteString(", ")
+			}
+			fmt.Fprintf(buf, "%s=%v", k, v)
+		}
+		body = buf.String()
+	}
+	formattedMsg := fmt.Sprintf("Bad response statusCode [%d]. Status [%s]. Body: [%s] from [%s]",
+		resp.StatusCode, resp.Status, body, url)
+	return &APIError{
+		URL:        url,
+		Msg:        formattedMsg,
+		StatusCode: resp.StatusCode,
+		Status:     resp.Status,
+		Body:       body,
+	}
+}
+
+func contains(array []string, item string) bool {
+	for _, check := range array {
+		if check == item {
+			return true
+		}
+	}
+
+	return false
+}
+
+func appendFilters(urlString string, filters map[string]interface{}) (string, error) {
+	if len(filters) == 0 {
+		return urlString, nil
+	}
+
+	u, err := url.Parse(urlString)
+	if err != nil {
+		return "", err
+	}
+
+	q := u.Query()
+	for k, v := range filters {
+		if l, ok := v.([]string); ok {
+			for _, v := range l {
+				q.Add(k, v)
+			}
+		} else {
+			q.Add(k, fmt.Sprintf("%v", v))
+		}
+	}
+
+	u.RawQuery = q.Encode()
+	return u.String(), nil
+}
+
+func NewAPIClient(opts *ClientOpts) (APIBaseClient, error) {
+	var err error
+
+	result := APIBaseClient{
+		Types: map[string]types.Schema{},
+	}
+
+	client := opts.HTTPClient
+	if client == nil {
+		client = &http.Client{}
+	}
+
+	if opts.Timeout == 0 {
+		opts.Timeout = time.Minute
+	}
+
+	client.Timeout = opts.Timeout
+
+	var proxy func(*http.Request) (*url.URL, error)
+	if opts.ProxyURL != "" {
+		proxyURL, err := url.Parse(opts.ProxyURL)
+		if err != nil {
+			return result, fmt.Errorf("invalid proxy address %q: %w", opts.ProxyURL, err)
+		}
+		proxy = http.ProxyURL(proxyURL)
+	} else {
+		proxy = http.ProxyFromEnvironment
+	}
+
+	if opts.CACerts != "" {
+		if Debug {
+			fmt.Println("Some CAcerts are provided.")
+		}
+		roots := x509.NewCertPool()
+		ok := roots.AppendCertsFromPEM([]byte(opts.CACerts))
+		if !ok {
+			return result, err
+		}
+		tr := &http.Transport{
+			TLSClientConfig: &tls.Config{
+				RootCAs: roots,
+			},
+			Proxy: proxy,
+		}
+		client.Transport = tr
+	}
+
+	if opts.Insecure {
+		if Debug {
+			fmt.Println("Insecure TLS set.")
+		}
+		tr := &http.Transport{
+			TLSClientConfig: &tls.Config{
+				InsecureSkipVerify: opts.Insecure,
+			},
+			Proxy: proxy,
+		}
+		client.Transport = tr
+	}
+
+	if !(opts.Insecure) && (opts.CACerts == "") {
+		if Debug {
+			fmt.Println("Insecure TLS not set and no CAcerts is provided.")
+		}
+		tr := &http.Transport{
+			Proxy: proxy,
+		}
+		client.Transport = tr
+	}
+
+	req, err := http.NewRequest("GET", opts.URL, nil)
+	if err != nil {
+		return result, err
+	}
+	req.Header.Add("Authorization", opts.getAuthHeader())
+
+	resp, err := client.Do(req)
+	if err != nil {
+		return result, err
+	}
+	defer func(closer io.Closer) {
+		closer.Close()
+	}(resp.Body)
+
+	if resp.StatusCode != 200 {
+		return result, NewAPIError(resp, opts.URL)
+	}
+
+	schemasURLs := resp.Header.Get("X-API-Schemas")
+	if len(schemasURLs) == 0 {
+		return result, errors.New("Failed to find schema at [" + opts.URL + "]")
+	}
+
+	if schemasURLs != opts.URL {
+		req, err = http.NewRequest("GET", schemasURLs, nil)
+		if err != nil {
+			return result, err
+		}
+		req.Header.Add("Authorization", opts.getAuthHeader())
+
+		if Debug {
+			fmt.Println("GET " + req.URL.String())
+		}
+
+		resp, err = client.Do(req)
+		if err != nil {
+			return result, err
+		}
+		defer func(closer io.Closer) {
+			closer.Close()
+		}(resp.Body)
+
+		if resp.StatusCode != 200 {
+			return result, NewAPIError(resp, schemasURLs)
+		}
+	}
+
+	var schemas types.SchemaCollection
+	bytes, err := io.ReadAll(resp.Body)
+	if err != nil {
+		return result, err
+	}
+
+	if Debug {
+		fmt.Println("Response <= " + string(bytes))
+	}
+
+	err = json.Unmarshal(bytes, &schemas)
+	if err != nil {
+		return result, err
+	}
+
+	for _, schema := range schemas.Data {
+		result.Types[schema.ID] = schema
+	}
+
+	result.Opts = opts
+	result.Ops = &APIOperations{
+		Opts:   opts,
+		Client: client,
+		Dialer: &websocket.Dialer{HandshakeTimeout: 10 * time.Second},
+		Types:  result.Types,
+	}
+
+	if result.Opts.WSDialer != nil {
+		result.Ops.Dialer = result.Opts.WSDialer
+	}
+
+	ht, ok := client.Transport.(*http.Transport)
+	if ok {
+		result.Ops.Dialer.TLSClientConfig = ht.TLSClientConfig
+	}
+
+	return result, nil
+}
+
+func NewListOpts() *types.ListOpts {
+	return &types.ListOpts{
+		Filters: map[string]interface{}{},
+	}
+}
+
+func (a *APIBaseClient) Websocket(url string, headers map[string][]string) (*websocket.Conn, *http.Response, error) {
+	httpHeaders := http.Header{}
+	for k, v := range httpHeaders {
+		httpHeaders[k] = v
+	}
+
+	if a.Opts != nil {
+		httpHeaders.Add("Authorization", a.Opts.getAuthHeader())
+	}
+
+	if Debug {
+		fmt.Println("WS " + url)
+	}
+
+	return a.Ops.Dialer.Dial(url, http.Header(httpHeaders))
+}
+
+func (a *APIBaseClient) List(schemaType string, opts *types.ListOpts, respObject interface{}) error {
+	return a.Ops.DoList(schemaType, opts, respObject)
+}
+
+func (a *APIBaseClient) Post(url string, createObj interface{}, respObject interface{}) error {
+	return a.Ops.DoModify("POST", url, createObj, respObject)
+}
+
+func (a *APIBaseClient) GetLink(resource types.Resource, link string, respObject interface{}) error {
+	url := resource.Links[link]
+	if url == "" {
+		return fmt.Errorf("failed to find link: %s", link)
+	}
+
+	return a.Ops.DoGet(url, &types.ListOpts{}, respObject)
+}
+
+func (a *APIBaseClient) Create(schemaType string, createObj interface{}, respObject interface{}) error {
+	return a.Ops.DoCreate(schemaType, createObj, respObject)
+}
+
+func (a *APIBaseClient) Update(schemaType string, existing *types.Resource, updates interface{}, respObject interface{}) error {
+	return a.Ops.DoUpdate(schemaType, existing, updates, respObject)
+}
+
+func (a *APIBaseClient) Replace(schemaType string, existing *types.Resource, updates interface{}, respObject interface{}) error {
+	return a.Ops.DoReplace(schemaType, existing, updates, respObject)
+}
+
+func (a *APIBaseClient) ByID(schemaType string, id string, respObject interface{}) error {
+	return a.Ops.DoByID(schemaType, id, respObject)
+}
+
+func (a *APIBaseClient) Delete(existing *types.Resource) error {
+	if existing == nil {
+		return nil
+	}
+	return a.Ops.DoResourceDelete(existing.Type, existing)
+}
+
+func (a *APIBaseClient) Reload(existing *types.Resource, output interface{}) error {
+	selfURL, ok := existing.Links[SELF]
+	if !ok {
+		return fmt.Errorf("failed to find self URL of [%v]", existing)
+	}
+
+	return a.Ops.DoGet(selfURL, NewListOpts(), output)
+}
+
+func (a *APIBaseClient) Action(schemaType string, action string,
+	existing *types.Resource, inputObject, respObject interface{}) error {
+	return a.Ops.DoAction(schemaType, action, existing, inputObject, respObject)
+}
+
+func init() {
+	Debug = os.Getenv("RANCHER_CLIENT_DEBUG") == "true"
+	if Debug {
+		fmt.Println("Rancher client debug on")
+	}
+}
diff --git a/vendor/github.com/rancher/norman/clientbase/ops.go b/vendor/github.com/rancher/norman/clientbase/ops.go
new file mode 100644
index 00000000..f8d6e83c
--- /dev/null
+++ b/vendor/github.com/rancher/norman/clientbase/ops.go
@@ -0,0 +1,377 @@
+package clientbase
+
+import (
+	"bytes"
+	"encoding/json"
+	"fmt"
+	"io"
+	"net/http"
+	"net/url"
+	"regexp"
+
+	"github.com/gorilla/websocket"
+	"github.com/pkg/errors"
+	"github.com/rancher/norman/types"
+)
+
+type APIOperations struct {
+	Opts   *ClientOpts
+	Types  map[string]types.Schema
+	Client *http.Client
+	Dialer *websocket.Dialer
+}
+
+func (a *APIOperations) SetupRequest(req *http.Request) {
+	req.Header.Add("Authorization", a.Opts.getAuthHeader())
+}
+
+func (a *APIOperations) DoDelete(url string) error {
+	req, err := http.NewRequest("DELETE", url, nil)
+	if err != nil {
+		return err
+	}
+
+	a.SetupRequest(req)
+
+	resp, err := a.Client.Do(req)
+	if err != nil {
+		return err
+	}
+	defer func() {
+		_, _ = io.Copy(io.Discard, resp.Body)
+		resp.Body.Close()
+	}()
+
+	if resp.StatusCode >= 300 {
+		return NewAPIError(resp, url)
+	}
+
+	return nil
+}
+
+func (a *APIOperations) DoGet(url string, opts *types.ListOpts, respObject interface{}) error {
+	if opts == nil {
+		opts = NewListOpts()
+	}
+	url, err := appendFilters(url, opts.Filters)
+	if err != nil {
+		return err
+	}
+
+	if Debug {
+		fmt.Println("GET " + url)
+	}
+
+	req, err := http.NewRequest("GET", url, nil)
+	if err != nil {
+		return err
+	}
+
+	a.SetupRequest(req)
+
+	resp, err := a.Client.Do(req)
+	if err != nil {
+		return err
+	}
+
+	defer resp.Body.Close()
+
+	if resp.StatusCode != 200 {
+		return NewAPIError(resp, url)
+	}
+
+	byteContent, err := io.ReadAll(resp.Body)
+	if err != nil {
+		return err
+	}
+
+	if Debug {
+		fmt.Println("Response <= " + string(byteContent))
+	}
+
+	if err := json.Unmarshal(byteContent, respObject); err != nil {
+		return errors.Wrap(err, fmt.Sprintf("Failed to parse: %s", byteContent))
+	}
+
+	return nil
+}
+
+func (a *APIOperations) DoList(schemaType string, opts *types.ListOpts, respObject interface{}) error {
+	schema, ok := a.Types[schemaType]
+	if !ok {
+		return errors.New("Unknown schema type [" + schemaType + "]")
+	}
+
+	if !contains(schema.CollectionMethods, "GET") {
+		return errors.New("Resource type [" + schemaType + "] is not listable")
+	}
+
+	collectionURL, ok := schema.Links["collection"]
+	if !ok {
+		return errors.New("Resource type [" + schemaType + "] does not have a collection URL")
+	}
+
+	return a.DoGet(collectionURL, opts, respObject)
+}
+
+func (a *APIOperations) DoNext(nextURL string, respObject interface{}) error {
+	return a.DoGet(nextURL, nil, respObject)
+}
+
+func (a *APIOperations) DoModify(method string, url string, createObj interface{}, respObject interface{}) error {
+	if createObj == nil {
+		createObj = map[string]string{}
+	}
+	if respObject == nil {
+		respObject = &map[string]interface{}{}
+	}
+	bodyContent, err := json.Marshal(createObj)
+	if err != nil {
+		return err
+	}
+
+	if Debug {
+		fmt.Println(method + " " + url)
+		fmt.Println("Request => " + string(bodyContent))
+	}
+
+	req, err := http.NewRequest(method, url, bytes.NewBuffer(bodyContent))
+	if err != nil {
+		return err
+	}
+
+	a.SetupRequest(req)
+	req.Header.Set("Content-Type", "application/json")
+
+	resp, err := a.Client.Do(req)
+	if err != nil {
+		return err
+	}
+
+	defer resp.Body.Close()
+
+	if resp.StatusCode >= 300 {
+		return NewAPIError(resp, url)
+	}
+
+	byteContent, err := io.ReadAll(resp.Body)
+	if err != nil {
+		return err
+	}
+
+	if len(byteContent) > 0 {
+		if Debug {
+			fmt.Println("Response <= " + string(byteContent))
+		}
+		return json.Unmarshal(byteContent, respObject)
+	}
+
+	return nil
+}
+
+func (a *APIOperations) DoCreate(schemaType string, createObj interface{}, respObject interface{}) error {
+	if createObj == nil {
+		createObj = map[string]string{}
+	}
+	if respObject == nil {
+		respObject = &map[string]interface{}{}
+	}
+	schema, ok := a.Types[schemaType]
+	if !ok {
+		return errors.New("Unknown schema type [" + schemaType + "]")
+	}
+
+	if !contains(schema.CollectionMethods, "POST") {
+		return errors.New("Resource type [" + schemaType + "] is not creatable")
+	}
+
+	var collectionURL string
+	collectionURL, ok = schema.Links[COLLECTION]
+	if !ok {
+		// return errors.New("Failed to find collection URL for [" + schemaType + "]")
+		// This is a hack to address https://github.com/rancher/cattle/issues/254
+		re := regexp.MustCompile("schemas.*")
+		collectionURL = re.ReplaceAllString(schema.Links[SELF], schema.PluralName)
+	}
+
+	return a.DoModify("POST", collectionURL, createObj, respObject)
+}
+
+func (a *APIOperations) DoReplace(schemaType string, existing *types.Resource, updates interface{}, respObject interface{}) error {
+	return a.doUpdate(schemaType, true, existing, updates, respObject)
+}
+
+func (a *APIOperations) DoUpdate(schemaType string, existing *types.Resource, updates interface{}, respObject interface{}) error {
+	return a.doUpdate(schemaType, false, existing, updates, respObject)
+}
+
+func (a *APIOperations) doUpdate(schemaType string, replace bool, existing *types.Resource, updates interface{}, respObject interface{}) error {
+	if existing == nil {
+		return errors.New("Existing object is nil")
+	}
+
+	selfURL, ok := existing.Links[SELF]
+	if !ok {
+		return fmt.Errorf("failed to find self URL of [%v]", existing)
+	}
+
+	if replace {
+		u, err := url.Parse(selfURL)
+		if err != nil {
+			return fmt.Errorf("failed to parse url %s: %v", selfURL, err)
+		}
+		q := u.Query()
+		q.Set("_replace", "true")
+		u.RawQuery = q.Encode()
+		selfURL = u.String()
+	}
+
+	if updates == nil {
+		updates = map[string]string{}
+	}
+
+	if respObject == nil {
+		respObject = &map[string]interface{}{}
+	}
+
+	schema, ok := a.Types[schemaType]
+	if !ok {
+		return errors.New("Unknown schema type [" + schemaType + "]")
+	}
+
+	if !contains(schema.ResourceMethods, "PUT") {
+		return errors.New("Resource type [" + schemaType + "] is not updatable")
+	}
+
+	return a.DoModify("PUT", selfURL, updates, respObject)
+}
+
+func (a *APIOperations) DoByID(schemaType string, id string, respObject interface{}) error {
+	schema, ok := a.Types[schemaType]
+	if !ok {
+		return errors.New("Unknown schema type [" + schemaType + "]")
+	}
+
+	if !contains(schema.ResourceMethods, "GET") {
+		return errors.New("Resource type [" + schemaType + "] can not be looked up by ID")
+	}
+
+	collectionURL, ok := schema.Links[COLLECTION]
+	if !ok {
+		return errors.New("Failed to find collection URL for [" + schemaType + "]")
+	}
+
+	return a.DoGet(collectionURL+"/"+id, nil, respObject)
+}
+
+func (a *APIOperations) DoResourceDelete(schemaType string, existing *types.Resource) error {
+	schema, ok := a.Types[schemaType]
+	if !ok {
+		return errors.New("Unknown schema type [" + schemaType + "]")
+	}
+
+	if !contains(schema.ResourceMethods, "DELETE") {
+		return errors.New("Resource type [" + schemaType + "] can not be deleted")
+	}
+
+	selfURL, ok := existing.Links[SELF]
+	if !ok {
+		return fmt.Errorf("failed to find self URL of [%v]", existing)
+	}
+
+	return a.DoDelete(selfURL)
+}
+
+func (a *APIOperations) DoAction(schemaType string, action string,
+	existing *types.Resource, inputObject, respObject interface{}) error {
+
+	if existing == nil {
+		return errors.New("Existing object is nil")
+	}
+
+	actionURL, ok := existing.Actions[action]
+	if !ok {
+		return fmt.Errorf("action [%v] not available on [%v]", action, existing)
+	}
+
+	return a.doAction(schemaType, action, actionURL, inputObject, respObject)
+}
+
+func (a *APIOperations) DoCollectionAction(schemaType string, action string,
+	existing *types.Collection, inputObject, respObject interface{}) error {
+
+	if existing == nil {
+		return errors.New("Existing object is nil")
+	}
+
+	actionURL, ok := existing.Actions[action]
+	if !ok {
+		return fmt.Errorf("action [%v] not available on [%v]", action, existing)
+	}
+
+	return a.doAction(schemaType, action, actionURL, inputObject, respObject)
+}
+
+func (a *APIOperations) doAction(
+	schemaType string,
+	action string,
+	actionURL string,
+	inputObject interface{},
+	respObject interface{},
+) error {
+	_, ok := a.Types[schemaType]
+	if !ok {
+		return errors.New("Unknown schema type [" + schemaType + "]")
+	}
+
+	var input io.Reader
+
+	if Debug {
+		fmt.Println("POST " + actionURL)
+	}
+
+	if inputObject != nil {
+		bodyContent, err := json.Marshal(inputObject)
+		if err != nil {
+			return err
+		}
+		if Debug {
+			fmt.Println("Request => " + string(bodyContent))
+		}
+		input = bytes.NewBuffer(bodyContent)
+	}
+
+	req, err := http.NewRequest("POST", actionURL, input)
+	if err != nil {
+		return err
+	}
+
+	a.SetupRequest(req)
+	req.Header.Set("Content-Type", "application/json")
+	req.Header.Set("Content-Length", "0")
+
+	resp, err := a.Client.Do(req)
+	if err != nil {
+		return err
+	}
+
+	defer resp.Body.Close()
+
+	if resp.StatusCode >= 300 {
+		return NewAPIError(resp, actionURL)
+	}
+
+	byteContent, err := io.ReadAll(resp.Body)
+	if err != nil {
+		return err
+	}
+
+	if Debug {
+		fmt.Println("Response <= " + string(byteContent))
+	}
+
+	if nil != respObject {
+		return json.Unmarshal(byteContent, respObject)
+	}
+	return nil
+}
diff --git a/vendor/github.com/rancher/norman/httperror/error.go b/vendor/github.com/rancher/norman/httperror/error.go
new file mode 100644
index 00000000..8ac835b4
--- /dev/null
+++ b/vendor/github.com/rancher/norman/httperror/error.go
@@ -0,0 +1,129 @@
+package httperror
+
+import (
+	"fmt"
+)
+
+var (
+	Unauthorized     = ErrorCode{"Unauthorized", 401}
+	PermissionDenied = ErrorCode{"PermissionDenied", 403}
+	NotFound         = ErrorCode{"NotFound", 404}
+	MethodNotAllowed = ErrorCode{"MethodNotAllow", 405}
+	Conflict         = ErrorCode{"Conflict", 409}
+
+	InvalidDateFormat  = ErrorCode{"InvalidDateFormat", 422}
+	InvalidFormat      = ErrorCode{"InvalidFormat", 422}
+	InvalidReference   = ErrorCode{"InvalidReference", 422}
+	NotNullable        = ErrorCode{"NotNullable", 422}
+	NotUnique          = ErrorCode{"NotUnique", 422}
+	MinLimitExceeded   = ErrorCode{"MinLimitExceeded", 422}
+	MaxLimitExceeded   = ErrorCode{"MaxLimitExceeded", 422}
+	MinLengthExceeded  = ErrorCode{"MinLengthExceeded", 422}
+	MaxLengthExceeded  = ErrorCode{"MaxLengthExceeded", 422}
+	InvalidOption      = ErrorCode{"InvalidOption", 422}
+	InvalidCharacters  = ErrorCode{"InvalidCharacters", 422}
+	MissingRequired    = ErrorCode{"MissingRequired", 422}
+	InvalidCSRFToken   = ErrorCode{"InvalidCSRFToken", 422}
+	InvalidAction      = ErrorCode{"InvalidAction", 422}
+	InvalidBodyContent = ErrorCode{"InvalidBodyContent", 422}
+	InvalidType        = ErrorCode{"InvalidType", 422}
+	ActionNotAvailable = ErrorCode{"ActionNotAvailable", 404}
+	InvalidState       = ErrorCode{"InvalidState", 422}
+
+	ServerError        = ErrorCode{"ServerError", 500}
+	ClusterUnavailable = ErrorCode{"ClusterUnavailable", 503}
+)
+
+type ErrorCode struct {
+	Code   string
+	Status int
+}
+
+func (e ErrorCode) String() string {
+	return fmt.Sprintf("%s %d", e.Code, e.Status)
+}
+
+type APIError struct {
+	Code      ErrorCode
+	Message   string
+	Cause     error
+	FieldName string
+}
+
+func NewAPIErrorLong(status int, code, message string) error {
+	return NewAPIError(ErrorCode{
+		Code:   code,
+		Status: status,
+	}, message)
+}
+
+func NewAPIError(code ErrorCode, message string) error {
+	return &APIError{
+		Code:    code,
+		Message: message,
+	}
+}
+
+func NewFieldAPIError(code ErrorCode, fieldName, message string) error {
+	return &APIError{
+		Code:      code,
+		Message:   message,
+		FieldName: fieldName,
+	}
+}
+
+// WrapFieldAPIError will cause the API framework to log the underlying err before returning the APIError as a response.
+// err WILL NOT be in the API response
+func WrapFieldAPIError(err error, code ErrorCode, fieldName, message string) error {
+	return &APIError{
+		Cause:     err,
+		Code:      code,
+		Message:   message,
+		FieldName: fieldName,
+	}
+}
+
+// WrapAPIError will cause the API framework to log the underlying err before returning the APIError as a response.
+// err WILL NOT be in the API response
+func WrapAPIError(err error, code ErrorCode, message string) error {
+	return &APIError{
+		Code:    code,
+		Message: message,
+		Cause:   err,
+	}
+}
+
+func (a *APIError) Error() string {
+	if a.FieldName != "" {
+		return fmt.Sprintf("%s=%s: %s", a.FieldName, a.Code, a.Message)
+	}
+	return fmt.Sprintf("%s: %s", a.Code, a.Message)
+}
+
+func IsAPIError(err error) bool {
+	_, ok := err.(*APIError)
+	return ok
+}
+
+func IsNotFound(err error) bool {
+	if apiError, ok := err.(*APIError); ok {
+		return apiError.Code.Status == 404
+	}
+
+	return false
+}
+
+func IsConflict(err error) bool {
+	if apiError, ok := err.(*APIError); ok {
+		return apiError.Code.Status == 409
+	}
+
+	return false
+}
+
+func IsForbidden(err error) bool {
+	if apiError, ok := err.(*APIError); ok {
+		return apiError.Code.Status == 403
+	}
+	return false
+}
diff --git a/vendor/github.com/rancher/norman/types/condition.go b/vendor/github.com/rancher/norman/types/condition.go
new file mode 100644
index 00000000..9be6210b
--- /dev/null
+++ b/vendor/github.com/rancher/norman/types/condition.go
@@ -0,0 +1,121 @@
+package types
+
+import (
+	"github.com/rancher/norman/types/convert"
+)
+
+var (
+	CondEQ      = QueryConditionType{ModifierEQ, 1}
+	CondNE      = QueryConditionType{ModifierNE, 1}
+	CondNull    = QueryConditionType{ModifierNull, 0}
+	CondNotNull = QueryConditionType{ModifierNotNull, 0}
+	CondIn      = QueryConditionType{ModifierIn, -1}
+	CondNotIn   = QueryConditionType{ModifierNotIn, -1}
+	CondOr      = QueryConditionType{ModifierType("or"), 1}
+	CondAnd     = QueryConditionType{ModifierType("and"), 1}
+
+	mods = map[ModifierType]QueryConditionType{
+		CondEQ.Name:      CondEQ,
+		CondNE.Name:      CondNE,
+		CondNull.Name:    CondNull,
+		CondNotNull.Name: CondNotNull,
+		CondIn.Name:      CondIn,
+		CondNotIn.Name:   CondNotIn,
+		CondOr.Name:      CondOr,
+		CondAnd.Name:     CondAnd,
+	}
+)
+
+type QueryConditionType struct {
+	Name ModifierType
+	Args int
+}
+
+type QueryCondition struct {
+	Field         string
+	Value         string
+	Values        map[string]bool
+	conditionType QueryConditionType
+	left, right   *QueryCondition
+}
+
+func (q *QueryCondition) Valid(schema *Schema, data map[string]interface{}) bool {
+	switch q.conditionType {
+	case CondAnd:
+		if q.left == nil || q.right == nil {
+			return false
+		}
+		return q.left.Valid(schema, data) && q.right.Valid(schema, data)
+	case CondOr:
+		if q.left == nil || q.right == nil {
+			return false
+		}
+		return q.left.Valid(schema, data) || q.right.Valid(schema, data)
+	case CondEQ:
+		return q.Value == convert.ToString(valueOrDefault(schema, data, q))
+	case CondNE:
+		return q.Value != convert.ToString(valueOrDefault(schema, data, q))
+	case CondIn:
+		return q.Values[convert.ToString(valueOrDefault(schema, data, q))]
+	case CondNotIn:
+		return !q.Values[convert.ToString(valueOrDefault(schema, data, q))]
+	case CondNotNull:
+		return convert.ToString(valueOrDefault(schema, data, q)) != ""
+	case CondNull:
+		return convert.ToString(valueOrDefault(schema, data, q)) == ""
+	}
+
+	return false
+}
+
+func valueOrDefault(schema *Schema, data map[string]interface{}, q *QueryCondition) interface{} {
+	value := data[q.Field]
+	if value == nil {
+		value = schema.ResourceFields[q.Field].Default
+	}
+
+	return value
+}
+
+func (q *QueryCondition) ToCondition() Condition {
+	cond := Condition{
+		Modifier: q.conditionType.Name,
+	}
+	if q.conditionType.Args == 1 {
+		cond.Value = q.Value
+	} else if q.conditionType.Args == -1 {
+		stringValues := []string{}
+		for val := range q.Values {
+			stringValues = append(stringValues, val)
+		}
+		cond.Value = stringValues
+	}
+
+	return cond
+}
+
+func ValidMod(mod ModifierType) bool {
+	_, ok := mods[mod]
+	return ok
+}
+
+func EQ(key, value string) *QueryCondition {
+	return NewConditionFromString(key, ModifierEQ, value)
+}
+
+func NewConditionFromString(field string, mod ModifierType, values ...string) *QueryCondition {
+	q := &QueryCondition{
+		Field:         field,
+		conditionType: mods[mod],
+		Values:        map[string]bool{},
+	}
+
+	for i, value := range values {
+		if i == 0 {
+			q.Value = value
+		}
+		q.Values[value] = true
+	}
+
+	return q
+}
diff --git a/vendor/github.com/rancher/norman/types/convert/convert.go b/vendor/github.com/rancher/norman/types/convert/convert.go
new file mode 100644
index 00000000..5d5e2728
--- /dev/null
+++ b/vendor/github.com/rancher/norman/types/convert/convert.go
@@ -0,0 +1,280 @@
+package convert
+
+import (
+	"bytes"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"golang.org/x/text/cases"
+	"golang.org/x/text/language"
+	"strconv"
+	"strings"
+	"time"
+	"unicode"
+)
+
+func Chan(c <-chan map[string]interface{}, f func(map[string]interface{}) map[string]interface{}) chan map[string]interface{} {
+	if c == nil {
+		return nil
+	}
+	result := make(chan map[string]interface{})
+	go func() {
+		for data := range c {
+			modified := f(data)
+			if modified != nil {
+				result <- modified
+			}
+		}
+		close(result)
+	}()
+	return result
+}
+
+func Singular(value interface{}) interface{} {
+	if slice, ok := value.([]string); ok {
+		if len(slice) == 0 {
+			return nil
+		}
+		return slice[0]
+	}
+	if slice, ok := value.([]interface{}); ok {
+		if len(slice) == 0 {
+			return nil
+		}
+		return slice[0]
+	}
+	return value
+}
+
+func ToStringNoTrim(value interface{}) string {
+	if t, ok := value.(time.Time); ok {
+		return t.Format(time.RFC3339)
+	}
+	single := Singular(value)
+	if single == nil {
+		return ""
+	}
+	return fmt.Sprint(single)
+}
+
+func ToString(value interface{}) string {
+	return strings.TrimSpace(ToStringNoTrim(value))
+}
+
+func ToTimestamp(value interface{}) (int64, error) {
+	str := ToString(value)
+	if str == "" {
+		return 0, errors.New("invalid date")
+	}
+	t, err := time.Parse(time.RFC3339, str)
+	if err != nil {
+		return 0, err
+	}
+	return t.UnixNano() / 1000000, nil
+}
+
+func ToBool(value interface{}) bool {
+	value = Singular(value)
+
+	b, ok := value.(bool)
+	if ok {
+		return b
+	}
+
+	str := strings.ToLower(ToString(value))
+	return str == "true" || str == "t" || str == "yes" || str == "y"
+}
+
+func ToNumber(value interface{}) (int64, error) {
+	value = Singular(value)
+
+	i, ok := value.(int64)
+	if ok {
+		return i, nil
+	}
+	f, ok := value.(float64)
+	if ok {
+		return int64(f), nil
+	}
+	if n, ok := value.(json.Number); ok {
+		i, err := n.Int64()
+		if err == nil {
+			return i, nil
+		}
+		f, err := n.Float64()
+		return int64(f), err
+	}
+	return strconv.ParseInt(ToString(value), 10, 64)
+}
+
+func ToFloat(value interface{}) (float64, error) {
+	value = Singular(value)
+
+	f64, ok := value.(float64)
+	if ok {
+		return f64, nil
+	}
+
+	f32, ok := value.(float32)
+	if ok {
+		return float64(f32), nil
+	}
+
+	if n, ok := value.(json.Number); ok {
+		i, err := n.Int64()
+		if err == nil {
+			return float64(i), nil
+		}
+		f, err := n.Float64()
+		return float64(f), err
+	}
+	return strconv.ParseFloat(ToString(value), 64)
+}
+
+func Capitalize(s string) string {
+	if len(s) <= 1 {
+		return strings.ToUpper(s)
+	}
+
+	return strings.ToUpper(s[:1]) + s[1:]
+}
+
+func Uncapitalize(s string) string {
+	if len(s) <= 1 {
+		return strings.ToLower(s)
+	}
+
+	return strings.ToLower(s[:1]) + s[1:]
+}
+
+func LowerTitle(input string) string {
+	runes := []rune(input)
+	for i := 0; i < len(runes); i++ {
+		if unicode.IsUpper(runes[i]) &&
+			(i == 0 ||
+				i == len(runes)-1 ||
+				unicode.IsUpper(runes[i+1])) {
+			runes[i] = unicode.ToLower(runes[i])
+		} else {
+			break
+		}
+	}
+
+	return string(runes)
+}
+
+func IsAPIObjectEmpty(v interface{}) bool {
+	if v == nil || v == "" || v == 0 || v == false {
+		return true
+	}
+	if m, ok := v.(map[string]interface{}); ok {
+		return len(m) == 0
+	}
+	if s, ok := v.([]interface{}); ok {
+		return len(s) == 0
+	}
+	return false
+}
+
+func ToMapInterface(obj interface{}) map[string]interface{} {
+	v, _ := obj.(map[string]interface{})
+	return v
+}
+
+func ToInterfaceSlice(obj interface{}) []interface{} {
+	if v, ok := obj.([]interface{}); ok {
+		return v
+	}
+	return nil
+}
+
+func ToMapSlice(obj interface{}) []map[string]interface{} {
+	if v, ok := obj.([]map[string]interface{}); ok {
+		return v
+	}
+	vs, _ := obj.([]interface{})
+	var result []map[string]interface{}
+	for _, item := range vs {
+		if v, ok := item.(map[string]interface{}); ok {
+			result = append(result, v)
+		} else {
+			return nil
+		}
+	}
+
+	return result
+}
+
+func ToStringSlice(data interface{}) []string {
+	if v, ok := data.([]string); ok {
+		return v
+	}
+	if v, ok := data.([]interface{}); ok {
+		var result []string
+		for _, item := range v {
+			result = append(result, ToString(item))
+		}
+		return result
+	}
+	return nil
+}
+
+func ToObj(data interface{}, into interface{}) error {
+	bytes, err := json.Marshal(data)
+	if err != nil {
+		return err
+	}
+	return json.Unmarshal(bytes, into)
+}
+
+func EncodeToMap(obj interface{}) (map[string]interface{}, error) {
+	if m, ok := obj.(map[string]interface{}); ok {
+		return m, nil
+	}
+
+	b, err := json.Marshal(obj)
+	if err != nil {
+		return nil, err
+	}
+	result := map[string]interface{}{}
+	dec := json.NewDecoder(bytes.NewBuffer(b))
+	dec.UseNumber()
+	return result, dec.Decode(&result)
+}
+
+func ToJSONKey(str string) string {
+	parts := strings.Split(str, "_")
+	for i := 1; i < len(parts); i++ {
+		parts[i] = cases.Title(language.English).String(parts[i])
+	}
+
+	return strings.Join(parts, "")
+}
+
+func ToYAMLKey(str string) string {
+	var result []rune
+	cap := false
+
+	for i, r := range []rune(str) {
+		if i == 0 {
+			if unicode.IsUpper(r) {
+				cap = true
+			}
+			result = append(result, unicode.ToLower(r))
+			continue
+		}
+
+		if unicode.IsUpper(r) {
+			if cap {
+				result = append(result, unicode.ToLower(r))
+			} else {
+				result = append(result, '_', unicode.ToLower(r))
+			}
+		} else {
+			cap = false
+			result = append(result, r)
+		}
+	}
+
+	return string(result)
+}
diff --git a/vendor/github.com/rancher/norman/types/convert/ref.go b/vendor/github.com/rancher/norman/types/convert/ref.go
new file mode 100644
index 00000000..b269a76c
--- /dev/null
+++ b/vendor/github.com/rancher/norman/types/convert/ref.go
@@ -0,0 +1,11 @@
+package convert
+
+import "fmt"
+
+func ToReference(typeName string) string {
+	return fmt.Sprintf("reference[%s]", typeName)
+}
+
+func ToFullReference(path, typeName string) string {
+	return fmt.Sprintf("reference[%s/schemas/%s]", path, typeName)
+}
diff --git a/vendor/github.com/rancher/norman/types/convert/transform.go b/vendor/github.com/rancher/norman/types/convert/transform.go
new file mode 100644
index 00000000..3fd9b924
--- /dev/null
+++ b/vendor/github.com/rancher/norman/types/convert/transform.go
@@ -0,0 +1,45 @@
+package convert
+
+const (
+	ArrayKey = "{ARRAY}"
+	MapKey   = "{MAP}"
+)
+
+type TransformerFunc func(input interface{}) interface{}
+
+func Transform(data map[string]interface{}, path []string, transformer TransformerFunc) {
+	if len(path) == 0 || len(data) == 0 {
+		return
+	}
+
+	key := path[0]
+	path = path[1:]
+	value := data[key]
+
+	if value == nil {
+		return
+	}
+
+	if len(path) == 0 {
+		data[key] = transformer(value)
+		return
+	}
+
+	// You can't end a path with ARRAY/MAP.  Not supported right now
+	if len(path) > 1 {
+		switch path[0] {
+		case ArrayKey:
+			for _, valueMap := range ToMapSlice(value) {
+				Transform(valueMap, path[1:], transformer)
+			}
+			return
+		case MapKey:
+			for _, valueMap := range ToMapInterface(value) {
+				Transform(ToMapInterface(valueMap), path[1:], transformer)
+			}
+			return
+		}
+	}
+
+	Transform(ToMapInterface(value), path, transformer)
+}
diff --git a/vendor/github.com/rancher/norman/types/convert/value_set_string.go b/vendor/github.com/rancher/norman/types/convert/value_set_string.go
new file mode 100644
index 00000000..d9b329fa
--- /dev/null
+++ b/vendor/github.com/rancher/norman/types/convert/value_set_string.go
@@ -0,0 +1,18 @@
+package convert
+
+import (
+	"regexp"
+	"strings"
+)
+
+var (
+	splitRegexp = regexp.MustCompile("[[:space:]]*,[[:space:]]*")
+)
+
+func ToValuesSlice(value string) []string {
+	value = strings.TrimSpace(value)
+	if strings.HasPrefix(value, "(") && strings.HasSuffix(value, ")") {
+		return splitRegexp.Split(value[1:len(value)-1], -1)
+	}
+	return []string{value}
+}
diff --git a/vendor/github.com/rancher/norman/types/definition/definition.go b/vendor/github.com/rancher/norman/types/definition/definition.go
new file mode 100644
index 00000000..40912afb
--- /dev/null
+++ b/vendor/github.com/rancher/norman/types/definition/definition.go
@@ -0,0 +1,45 @@
+package definition
+
+import (
+	"strings"
+
+	"github.com/rancher/norman/types/convert"
+)
+
+func IsMapType(fieldType string) bool {
+	return strings.HasPrefix(fieldType, "map[") && strings.HasSuffix(fieldType, "]")
+}
+
+func IsArrayType(fieldType string) bool {
+	return strings.HasPrefix(fieldType, "array[") && strings.HasSuffix(fieldType, "]")
+}
+
+func IsReferenceType(fieldType string) bool {
+	return strings.HasPrefix(fieldType, "reference[") && strings.HasSuffix(fieldType, "]")
+}
+
+func HasReferenceType(fieldType string) bool {
+	return strings.Contains(fieldType, "reference[")
+}
+
+func SubType(fieldType string) string {
+	i := strings.Index(fieldType, "[")
+	if i <= 0 || i >= len(fieldType)-1 {
+		return fieldType
+	}
+
+	return fieldType[i+1 : len(fieldType)-1]
+}
+
+func GetType(data map[string]interface{}) string {
+	return GetShortTypeFromFull(GetFullType(data))
+}
+
+func GetShortTypeFromFull(fullType string) string {
+	parts := strings.Split(fullType, "/")
+	return parts[len(parts)-1]
+}
+
+func GetFullType(data map[string]interface{}) string {
+	return convert.ToString(data["type"])
+}
diff --git a/vendor/github.com/rancher/norman/types/encoder.go b/vendor/github.com/rancher/norman/types/encoder.go
new file mode 100644
index 00000000..ddaae9e2
--- /dev/null
+++ b/vendor/github.com/rancher/norman/types/encoder.go
@@ -0,0 +1,32 @@
+package types
+
+import (
+	"encoding/json"
+	"io"
+	"regexp"
+
+	"github.com/ghodss/yaml"
+)
+
+var (
+	commenter = regexp.MustCompile(`(?m)^( *)zzz#\\((.*)\\)\\((.*)\\)([a-z]+.*):(.*)`)
+)
+
+func JSONEncoder(writer io.Writer, v interface{}) error {
+	return json.NewEncoder(writer).Encode(v)
+}
+
+func YAMLEncoder(writer io.Writer, v interface{}) error {
+	data, err := json.Marshal(v)
+	if err != nil {
+		return err
+	}
+	buf, err := yaml.JSONToYAML(data)
+	if err != nil {
+		return err
+	}
+	//buf = commenter.ReplaceAll(buf, []byte("${1}# ${2}type: ${3}\n${1}# ${4}:${5}"))
+	buf = commenter.ReplaceAll(buf, []byte("${1}# ${4}:${5}"))
+	_, err = writer.Write(buf)
+	return err
+}
diff --git a/vendor/github.com/rancher/norman/types/id.go b/vendor/github.com/rancher/norman/types/id.go
new file mode 100644
index 00000000..514b9336
--- /dev/null
+++ b/vendor/github.com/rancher/norman/types/id.go
@@ -0,0 +1,24 @@
+package types
+
+import (
+	"fmt"
+	"regexp"
+	"strings"
+
+	utilrand "k8s.io/apimachinery/pkg/util/rand"
+)
+
+var (
+	lowerChars = regexp.MustCompile("[a-z]+")
+)
+
+func GenerateName(typeName string) string {
+	base := typeName[0:1] + lowerChars.ReplaceAllString(typeName[1:], "")
+	last := utilrand.String(5)
+	return fmt.Sprintf("%s-%s", strings.ToLower(base), last)
+}
+
+func GenerateTypePrefix(typeName string) string {
+	base := typeName[0:1] + lowerChars.ReplaceAllString(typeName[1:], "")
+	return strings.ToLower(base) + "-"
+}
diff --git a/vendor/github.com/rancher/norman/types/mapper.go b/vendor/github.com/rancher/norman/types/mapper.go
new file mode 100644
index 00000000..04f1ae0b
--- /dev/null
+++ b/vendor/github.com/rancher/norman/types/mapper.go
@@ -0,0 +1,178 @@
+package types
+
+import (
+	"fmt"
+
+	"github.com/rancher/norman/types/convert"
+	"github.com/rancher/norman/types/definition"
+	"github.com/rancher/norman/types/values"
+)
+
+type Mapper interface {
+	FromInternal(data map[string]interface{})
+	ToInternal(data map[string]interface{}) error
+	ModifySchema(schema *Schema, schemas *Schemas) error
+}
+
+type Mappers []Mapper
+
+func (m Mappers) FromInternal(data map[string]interface{}) {
+	for _, mapper := range m {
+		mapper.FromInternal(data)
+	}
+}
+
+func (m Mappers) ToInternal(data map[string]interface{}) error {
+	var errors []error
+	for i := len(m) - 1; i >= 0; i-- {
+		errors = append(errors, m[i].ToInternal(data))
+	}
+	return NewErrors(errors...)
+}
+
+func (m Mappers) ModifySchema(schema *Schema, schemas *Schemas) error {
+	for _, mapper := range m {
+		if err := mapper.ModifySchema(schema, schemas); err != nil {
+			return err
+		}
+	}
+	return nil
+}
+
+type typeMapper struct {
+	Mappers         []Mapper
+	root            bool
+	typeName        string
+	subSchemas      map[string]*Schema
+	subArraySchemas map[string]*Schema
+	subMapSchemas   map[string]*Schema
+}
+
+func (t *typeMapper) FromInternal(data map[string]interface{}) {
+	name, _ := values.GetValueN(data, "metadata", "name").(string)
+	namespace, _ := values.GetValueN(data, "metadata", "namespace").(string)
+
+	for fieldName, schema := range t.subSchemas {
+		if schema.Mapper == nil {
+			continue
+		}
+		fieldData, _ := data[fieldName].(map[string]interface{})
+		schema.Mapper.FromInternal(fieldData)
+	}
+
+	for fieldName, schema := range t.subMapSchemas {
+		if schema.Mapper == nil {
+			continue
+		}
+		datas, _ := data[fieldName].(map[string]interface{})
+		for _, fieldData := range datas {
+			mapFieldData, _ := fieldData.(map[string]interface{})
+			schema.Mapper.FromInternal(mapFieldData)
+		}
+	}
+
+	for fieldName, schema := range t.subArraySchemas {
+		if schema.Mapper == nil {
+			continue
+		}
+		datas, _ := data[fieldName].([]interface{})
+		for _, fieldData := range datas {
+			mapFieldData, _ := fieldData.(map[string]interface{})
+			schema.Mapper.FromInternal(mapFieldData)
+		}
+	}
+
+	if _, ok := data["type"]; !ok && data != nil {
+		data["type"] = t.typeName
+	}
+
+	Mappers(t.Mappers).FromInternal(data)
+
+	if data != nil && t.root {
+		if _, ok := data["id"]; ok {
+			if namespace != "" {
+				id, _ := data["id"].(string)
+				data["id"] = namespace + ":" + id
+			}
+		} else {
+			if name != "" {
+				if namespace == "" {
+					data["id"] = name
+				} else {
+					data["id"] = namespace + ":" + name
+				}
+			}
+		}
+	}
+
+	if _, ok := data["type"]; !ok && data != nil {
+		if _, ok := data["id"]; ok {
+			data["type"] = t.typeName
+		}
+	}
+}
+
+func (t *typeMapper) ToInternal(data map[string]interface{}) error {
+	errors := Errors{}
+	errors.Add(Mappers(t.Mappers).ToInternal(data))
+
+	for fieldName, schema := range t.subArraySchemas {
+		if schema.Mapper == nil {
+			continue
+		}
+		datas, _ := data[fieldName].([]interface{})
+		for _, fieldData := range datas {
+			errors.Add(schema.Mapper.ToInternal(convert.ToMapInterface(fieldData)))
+		}
+	}
+
+	for fieldName, schema := range t.subMapSchemas {
+		if schema.Mapper == nil {
+			continue
+		}
+		datas, _ := data[fieldName].(map[string]interface{})
+		for _, fieldData := range datas {
+			errors.Add(schema.Mapper.ToInternal(convert.ToMapInterface(fieldData)))
+		}
+	}
+
+	for fieldName, schema := range t.subSchemas {
+		if schema.Mapper == nil {
+			continue
+		}
+		fieldData, _ := data[fieldName].(map[string]interface{})
+		errors.Add(schema.Mapper.ToInternal(fieldData))
+	}
+
+	return errors.Err()
+}
+
+func (t *typeMapper) ModifySchema(schema *Schema, schemas *Schemas) error {
+	t.subSchemas = map[string]*Schema{}
+	t.subArraySchemas = map[string]*Schema{}
+	t.subMapSchemas = map[string]*Schema{}
+	t.typeName = fmt.Sprintf("%s/schemas/%s", schema.Version.Path, schema.ID)
+
+	mapperSchema := schema
+	if schema.InternalSchema != nil {
+		mapperSchema = schema.InternalSchema
+	}
+	for name, field := range mapperSchema.ResourceFields {
+		fieldType := field.Type
+		targetMap := t.subSchemas
+		if definition.IsArrayType(fieldType) {
+			fieldType = definition.SubType(fieldType)
+			targetMap = t.subArraySchemas
+		} else if definition.IsMapType(fieldType) {
+			fieldType = definition.SubType(fieldType)
+			targetMap = t.subMapSchemas
+		}
+
+		schema := schemas.Schema(&schema.Version, fieldType)
+		if schema != nil {
+			targetMap[name] = schema
+		}
+	}
+
+	return Mappers(t.Mappers).ModifySchema(schema, schemas)
+}
diff --git a/vendor/github.com/rancher/norman/types/reflection.go b/vendor/github.com/rancher/norman/types/reflection.go
new file mode 100644
index 00000000..c80bc599
--- /dev/null
+++ b/vendor/github.com/rancher/norman/types/reflection.go
@@ -0,0 +1,510 @@
+package types
+
+import (
+	"fmt"
+	"net/http"
+	"reflect"
+	"strconv"
+	"strings"
+
+	"github.com/rancher/norman/types/convert"
+	"github.com/rancher/norman/types/definition"
+	"github.com/rancher/norman/types/slice"
+	"github.com/sirupsen/logrus"
+)
+
+var (
+	namespacedType = reflect.TypeOf(Namespaced{})
+	resourceType   = reflect.TypeOf(Resource{})
+	skipNames      = map[string]bool{
+		"links":         true,
+		"actions":       true,
+		"managedFields": true,
+	}
+)
+
+func (s *Schemas) TypeName(name string, obj interface{}) *Schemas {
+	s.typeNames[reflect.TypeOf(obj)] = name
+	return s
+}
+
+func (s *Schemas) getTypeName(t reflect.Type) string {
+	if name, ok := s.typeNames[t]; ok {
+		return name
+	}
+	return convert.LowerTitle(t.Name())
+}
+
+func (s *Schemas) AddMapperForType(version *APIVersion, obj interface{}, mapper ...Mapper) *Schemas {
+	if len(mapper) == 0 {
+		return s
+	}
+
+	t := reflect.TypeOf(obj)
+	typeName := s.getTypeName(t)
+	if len(mapper) == 1 {
+		return s.AddMapper(version, typeName, mapper[0])
+	}
+	return s.AddMapper(version, typeName, Mappers(mapper))
+}
+
+func (s *Schemas) MustImport(version *APIVersion, obj interface{}, externalOverrides ...interface{}) *Schemas {
+	if reflect.ValueOf(obj).Kind() == reflect.Ptr {
+		panic(fmt.Errorf("obj cannot be a pointer"))
+	}
+
+	if _, err := s.Import(version, obj, externalOverrides...); err != nil {
+		panic(err)
+	}
+	return s
+}
+
+func (s *Schemas) MustImportAndCustomize(version *APIVersion, obj interface{}, f func(*Schema), externalOverrides ...interface{}) *Schemas {
+	return s.MustImport(version, obj, externalOverrides...).
+		MustCustomizeType(version, obj, f)
+}
+
+func (s *Schemas) Import(version *APIVersion, obj interface{}, externalOverrides ...interface{}) (*Schema, error) {
+	var types []reflect.Type
+	for _, override := range externalOverrides {
+		types = append(types, reflect.TypeOf(override))
+	}
+
+	return s.importType(version, reflect.TypeOf(obj), types...)
+}
+
+func (s *Schemas) newSchemaFromType(version *APIVersion, t reflect.Type, typeName string) (*Schema, error) {
+	schema := &Schema{
+		ID:                typeName,
+		Version:           *version,
+		CodeName:          t.Name(),
+		PkgName:           t.PkgPath(),
+		ResourceFields:    map[string]Field{},
+		ResourceActions:   map[string]Action{},
+		CollectionActions: map[string]Action{},
+	}
+
+	s.processingTypes[t] = schema
+	defer delete(s.processingTypes, t)
+
+	if err := s.readFields(schema, t); err != nil {
+		return nil, err
+	}
+
+	return schema, nil
+}
+
+func (s *Schemas) setupFilters(schema *Schema) {
+	if !slice.ContainsString(schema.CollectionMethods, http.MethodGet) {
+		return
+	}
+	for fieldName, field := range schema.ResourceFields {
+		var mods []ModifierType
+		switch field.Type {
+		case "enum":
+			mods = []ModifierType{ModifierEQ, ModifierNE, ModifierIn, ModifierNotIn}
+		case "date":
+			fallthrough
+		case "dnsLabel":
+			fallthrough
+		case "hostname":
+			fallthrough
+		case "string":
+			mods = []ModifierType{ModifierEQ, ModifierNE, ModifierIn, ModifierNotIn}
+		case "int":
+			mods = []ModifierType{ModifierEQ, ModifierNE, ModifierIn, ModifierNotIn}
+		case "boolean":
+			mods = []ModifierType{ModifierEQ, ModifierNE}
+		default:
+			if definition.IsReferenceType(field.Type) {
+				mods = []ModifierType{ModifierEQ, ModifierNE, ModifierIn, ModifierNotIn}
+			}
+		}
+
+		if len(mods) > 0 {
+			if schema.CollectionFilters == nil {
+				schema.CollectionFilters = map[string]Filter{}
+			}
+			schema.CollectionFilters[fieldName] = Filter{
+				Modifiers: mods,
+			}
+		}
+	}
+}
+
+func (s *Schemas) MustCustomizeType(version *APIVersion, obj interface{}, f func(*Schema)) *Schemas {
+	name := s.getTypeName(reflect.TypeOf(obj))
+	schema := s.Schema(version, name)
+	if schema == nil {
+		panic("Failed to find schema " + name)
+	}
+
+	f(schema)
+
+	return s
+}
+
+func (s *Schemas) importType(version *APIVersion, t reflect.Type, overrides ...reflect.Type) (*Schema, error) {
+	typeName := s.getTypeName(t)
+
+	existing := s.Schema(version, typeName)
+	if existing != nil {
+		return existing, nil
+	}
+
+	if s, ok := s.processingTypes[t]; ok {
+		logrus.Tracef("Returning half built schema %s for %v", typeName, t)
+		return s, nil
+	}
+
+	logrus.Tracef("Inspecting schema %s for %v", typeName, t)
+
+	schema, err := s.newSchemaFromType(version, t, typeName)
+	if err != nil {
+		return nil, err
+	}
+
+	mappers := s.mapper(&schema.Version, schema.ID)
+	if s.DefaultMappers != nil {
+		if schema.CanList(nil) == nil {
+			mappers = append(s.DefaultMappers(), mappers...)
+		}
+	}
+	if s.DefaultPostMappers != nil {
+		mappers = append(mappers, s.DefaultPostMappers()...)
+	}
+
+	if len(mappers) > 0 {
+		copy, err := s.newSchemaFromType(version, t, typeName)
+		if err != nil {
+			return nil, err
+		}
+		schema.InternalSchema = copy
+	}
+
+	for _, override := range overrides {
+		if err := s.readFields(schema, override); err != nil {
+			return nil, err
+		}
+	}
+
+	mapper := &typeMapper{
+		Mappers: mappers,
+		root:    schema.CanList(nil) == nil,
+	}
+
+	if err := mapper.ModifySchema(schema, s); err != nil {
+		return nil, err
+	}
+
+	s.setupFilters(schema)
+
+	schema.Mapper = mapper
+	s.AddSchema(*schema)
+
+	return s.Schema(&schema.Version, schema.ID), s.Err()
+}
+
+func jsonName(f reflect.StructField) string {
+	return strings.SplitN(f.Tag.Get("json"), ",", 2)[0]
+}
+
+func k8sType(field reflect.StructField) bool {
+	return field.Type.Name() == "TypeMeta" &&
+		strings.HasSuffix(field.Type.PkgPath(), "k8s.io/apimachinery/pkg/apis/meta/v1")
+}
+
+func k8sObject(field reflect.StructField) bool {
+	return field.Type.Name() == "ObjectMeta" &&
+		strings.HasSuffix(field.Type.PkgPath(), "k8s.io/apimachinery/pkg/apis/meta/v1")
+}
+
+func (s *Schemas) readFields(schema *Schema, t reflect.Type) error {
+	if t == resourceType {
+		schema.CollectionMethods = []string{"GET", "POST"}
+		schema.ResourceMethods = []string{"GET", "PUT", "DELETE"}
+	}
+
+	hasType := false
+	hasMeta := false
+
+	for i := 0; i < t.NumField(); i++ {
+		field := t.Field(i)
+
+		if field.PkgPath != "" {
+			// unexported field
+			continue
+		}
+
+		jsonName := jsonName(field)
+		if jsonName == "-" {
+			continue
+		}
+
+		if field.Anonymous && jsonName == "" && k8sType(field) {
+			hasType = true
+		}
+
+		if field.Anonymous && jsonName == "metadata" && k8sObject(field) {
+			hasMeta = true
+		}
+
+		if field.Anonymous && jsonName == "" {
+			t := field.Type
+			if t.Kind() == reflect.Ptr {
+				t = t.Elem()
+			}
+			if t.Kind() == reflect.Struct {
+				if t == namespacedType {
+					schema.Scope = NamespaceScope
+				}
+				if err := s.readFields(schema, t); err != nil {
+					return err
+				}
+			}
+			continue
+		}
+
+		fieldName := jsonName
+		if fieldName == "" {
+			fieldName = convert.LowerTitle(field.Name)
+			if strings.HasSuffix(fieldName, "ID") {
+				fieldName = strings.TrimSuffix(fieldName, "ID") + "Id"
+			}
+		}
+
+		if skipNames[fieldName] {
+			logrus.Tracef("Ignoring skip field %s.%s for %v", schema.ID, fieldName, field)
+			continue
+		}
+
+		logrus.Tracef("Inspecting field %s.%s for %v", schema.ID, fieldName, field)
+
+		schemaField := Field{
+			Create:   true,
+			Update:   true,
+			Nullable: true,
+			CodeName: field.Name,
+		}
+
+		fieldType := field.Type
+		if fieldType.Kind() == reflect.Ptr {
+			schemaField.Nullable = true
+			fieldType = fieldType.Elem()
+		} else if fieldType.Kind() == reflect.Bool {
+			schemaField.Nullable = false
+			schemaField.Default = false
+		} else if fieldType.Kind() == reflect.Int ||
+			fieldType.Kind() == reflect.Uint32 ||
+			fieldType.Kind() == reflect.Int32 ||
+			fieldType.Kind() == reflect.Uint64 ||
+			fieldType.Kind() == reflect.Int64 ||
+			fieldType.Kind() == reflect.Float32 ||
+			fieldType.Kind() == reflect.Float64 {
+			schemaField.Nullable = false
+			schemaField.Default = 0
+		}
+
+		if err := applyTag(&field, &schemaField); err != nil {
+			return err
+		}
+
+		if schemaField.Type == "" {
+			inferedType, err := s.determineSchemaType(&schema.Version, fieldType)
+			if err != nil {
+				return fmt.Errorf("failed inspecting type %s, field %s: %v", t, fieldName, err)
+			}
+			schemaField.Type = inferedType
+		}
+
+		if schemaField.Default != nil {
+			switch schemaField.Type {
+			case "int":
+				n, err := convert.ToNumber(schemaField.Default)
+				if err != nil {
+					return err
+				}
+				schemaField.Default = n
+			case "float":
+				n, err := convert.ToFloat(schemaField.Default)
+				if err != nil {
+					return err
+				}
+				schemaField.Default = n
+			case "boolean":
+				schemaField.Default = convert.ToBool(schemaField.Default)
+			}
+		}
+
+		logrus.Tracef("Setting field %s.%s: %#v", schema.ID, fieldName, schemaField)
+		schema.ResourceFields[fieldName] = schemaField
+	}
+
+	if hasType && hasMeta {
+		schema.CollectionMethods = []string{"GET", "POST"}
+		schema.ResourceMethods = []string{"GET", "PUT", "DELETE"}
+	}
+
+	return nil
+}
+
+func applyTag(structField *reflect.StructField, field *Field) error {
+	for _, part := range strings.Split(structField.Tag.Get("norman"), ",") {
+		if part == "" {
+			continue
+		}
+
+		var err error
+		key, value := getKeyValue(part)
+
+		switch key {
+		case "type":
+			field.Type = value
+		case "codeName":
+			field.CodeName = value
+		case "default":
+			field.Default = value
+		case "nullable":
+			field.Nullable = true
+		case "notnullable":
+			field.Nullable = false
+		case "nocreate":
+			field.Create = false
+		case "writeOnly":
+			field.WriteOnly = true
+		case "required":
+			field.Required = true
+		case "noupdate":
+			field.Update = false
+		case "minLength":
+			field.MinLength, err = toInt(value, structField)
+		case "maxLength":
+			field.MaxLength, err = toInt(value, structField)
+		case "min":
+			field.Min, err = toInt(value, structField)
+		case "max":
+			field.Max, err = toInt(value, structField)
+		case "options":
+			field.Options = split(value)
+			if field.Type == "" {
+				field.Type = "enum"
+			}
+		case "validChars":
+			field.ValidChars = value
+		case "invalidChars":
+			field.InvalidChars = value
+		case "pointer":
+			field.Pointer = true
+		default:
+			return fmt.Errorf("invalid tag %s on field %s", key, structField.Name)
+		}
+
+		if err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
+func toInt(value string, structField *reflect.StructField) (*int64, error) {
+	i, err := strconv.ParseInt(value, 10, 64)
+	if err != nil {
+		return nil, fmt.Errorf("invalid number on field %s: %v", structField.Name, err)
+	}
+	return &i, nil
+}
+
+func split(input string) []string {
+	result := []string{}
+	for _, i := range strings.Split(input, "|") {
+		for _, part := range strings.Split(i, " ") {
+			part = strings.TrimSpace(part)
+			if len(part) > 0 {
+				result = append(result, part)
+			}
+		}
+	}
+
+	return result
+}
+
+func getKeyValue(input string) (string, string) {
+	var (
+		key, value string
+	)
+	parts := strings.SplitN(input, "=", 2)
+	key = parts[0]
+	if len(parts) > 1 {
+		value = parts[1]
+	}
+
+	return key, value
+}
+
+func deRef(p reflect.Type) reflect.Type {
+	if p.Kind() == reflect.Ptr {
+		return p.Elem()
+	}
+	return p
+}
+
+func (s *Schemas) determineSchemaType(version *APIVersion, t reflect.Type) (string, error) {
+	switch t.Kind() {
+	case reflect.Uint8:
+		return "byte", nil
+	case reflect.Bool:
+		return "boolean", nil
+	case reflect.Int:
+		fallthrough
+	case reflect.Int32:
+		fallthrough
+	case reflect.Uint32:
+		fallthrough
+	case reflect.Uint64:
+		fallthrough
+	case reflect.Int64:
+		return "int", nil
+	case reflect.Float32:
+		fallthrough
+	case reflect.Float64:
+		return "float", nil
+	case reflect.Interface:
+		return "json", nil
+	case reflect.Map:
+		subType, err := s.determineSchemaType(version, deRef(t.Elem()))
+		if err != nil {
+			return "", err
+		}
+		return fmt.Sprintf("map[%s]", subType), nil
+	case reflect.Slice:
+		subType, err := s.determineSchemaType(version, deRef(t.Elem()))
+		if err != nil {
+			return "", err
+		}
+		if subType == "byte" {
+			return "base64", nil
+		}
+		return fmt.Sprintf("array[%s]", subType), nil
+	case reflect.String:
+		return "string", nil
+	case reflect.Struct:
+		if t.Name() == "Time" {
+			return "date", nil
+		}
+		if t.Name() == "IntOrString" {
+			return "intOrString", nil
+		}
+		if t.Name() == "Quantity" {
+			return "string", nil
+		}
+		schema, err := s.importType(version, t)
+		if err != nil {
+			return "", err
+		}
+		return schema.ID, nil
+	default:
+		return "", fmt.Errorf("unknown type kind %s", t.Kind())
+	}
+
+}
diff --git a/vendor/github.com/rancher/norman/types/schema_funcs.go b/vendor/github.com/rancher/norman/types/schema_funcs.go
new file mode 100644
index 00000000..f104728a
--- /dev/null
+++ b/vendor/github.com/rancher/norman/types/schema_funcs.go
@@ -0,0 +1,73 @@
+package types
+
+import (
+	"net/http"
+
+	"github.com/rancher/norman/httperror"
+	"github.com/rancher/norman/types/slice"
+)
+
+func (s *Schema) MustCustomizeField(name string, f func(f Field) Field) *Schema {
+	field, ok := s.ResourceFields[name]
+	if !ok {
+		panic("Failed to find field " + name + " on schema " + s.ID)
+	}
+	s.ResourceFields[name] = f(field)
+	return s
+}
+
+func (v *APIVersion) Equals(other *APIVersion) bool {
+	return v.Version == other.Version &&
+		v.Group == other.Group &&
+		v.Path == other.Path
+}
+
+func (s *Schema) CanList(context *APIContext) error {
+	if context == nil {
+		if slice.ContainsString(s.CollectionMethods, http.MethodGet) {
+			return nil
+		}
+		return httperror.NewAPIError(httperror.PermissionDenied, "can not list "+s.ID)
+	}
+	return context.AccessControl.CanList(context, s)
+}
+
+func (s *Schema) CanGet(context *APIContext) error {
+	if context == nil {
+		if slice.ContainsString(s.ResourceMethods, http.MethodGet) {
+			return nil
+		}
+		return httperror.NewAPIError(httperror.PermissionDenied, "can not get "+s.ID)
+	}
+	return context.AccessControl.CanGet(context, s)
+}
+
+func (s *Schema) CanCreate(context *APIContext) error {
+	if context == nil {
+		if slice.ContainsString(s.CollectionMethods, http.MethodPost) {
+			return nil
+		}
+		return httperror.NewAPIError(httperror.PermissionDenied, "can not create "+s.ID)
+	}
+	return context.AccessControl.CanCreate(context, s)
+}
+
+func (s *Schema) CanUpdate(context *APIContext) error {
+	if context == nil {
+		if slice.ContainsString(s.ResourceMethods, http.MethodPut) {
+			return nil
+		}
+		return httperror.NewAPIError(httperror.PermissionDenied, "can not update "+s.ID)
+	}
+	return context.AccessControl.CanUpdate(context, nil, s)
+}
+
+func (s *Schema) CanDelete(context *APIContext) error {
+	if context == nil {
+		if slice.ContainsString(s.ResourceMethods, http.MethodDelete) {
+			return nil
+		}
+		return httperror.NewAPIError(httperror.PermissionDenied, "can not delete "+s.ID)
+	}
+	return context.AccessControl.CanDelete(context, nil, s)
+}
diff --git a/vendor/github.com/rancher/norman/types/schemas.go b/vendor/github.com/rancher/norman/types/schemas.go
new file mode 100644
index 00000000..30819bba
--- /dev/null
+++ b/vendor/github.com/rancher/norman/types/schemas.go
@@ -0,0 +1,407 @@
+package types
+
+import (
+	"bytes"
+	"fmt"
+	"reflect"
+	"strings"
+	"sync"
+
+	"github.com/rancher/norman/types/convert"
+	"github.com/rancher/norman/types/definition"
+	"github.com/rancher/wrangler/v3/pkg/name"
+)
+
+type SchemaCollection struct {
+	Data []Schema
+}
+
+type SchemasInitFunc func(*Schemas) *Schemas
+
+type SchemaHook func(*Schema)
+
+type MappersFactory func() []Mapper
+
+type BackReference struct {
+	FieldName string
+	Schema    *Schema
+}
+
+type Schemas struct {
+	sync.Mutex
+	processingTypes    map[reflect.Type]*Schema
+	typeNames          map[reflect.Type]string
+	schemasByPath      map[string]map[string]*Schema
+	mappers            map[string]map[string][]Mapper
+	references         map[string][]BackReference
+	embedded           map[string]*Schema
+	DefaultMappers     MappersFactory
+	DefaultPostMappers MappersFactory
+	versions           []APIVersion
+	schemas            []*Schema
+	AddHook            SchemaHook
+	errors             []error
+}
+
+func NewSchemas() *Schemas {
+	return &Schemas{
+		processingTypes: map[reflect.Type]*Schema{},
+		typeNames:       map[reflect.Type]string{},
+		schemasByPath:   map[string]map[string]*Schema{},
+		mappers:         map[string]map[string][]Mapper{},
+		references:      map[string][]BackReference{},
+		embedded:        map[string]*Schema{},
+	}
+}
+
+func (s *Schemas) Init(initFunc SchemasInitFunc) *Schemas {
+	return initFunc(s)
+}
+
+func (s *Schemas) Err() error {
+	return NewErrors(s.errors...)
+}
+
+func (s *Schemas) AddSchemas(schema *Schemas) *Schemas {
+	for _, schema := range schema.Schemas() {
+		s.AddSchema(*schema)
+	}
+	return s
+}
+
+func (s *Schemas) RemoveSchema(schema Schema) *Schemas {
+	s.Lock()
+	defer s.Unlock()
+	return s.doRemoveSchema(schema)
+}
+
+func (s *Schemas) doRemoveSchema(schema Schema) *Schemas {
+	delete(s.schemasByPath[schema.Version.Path], schema.ID)
+
+	s.removeReferences(&schema)
+
+	if schema.Embed {
+		s.removeEmbed(&schema)
+	}
+
+	return s
+}
+
+func (s *Schemas) removeReferences(schema *Schema) {
+	for name, values := range s.references {
+		changed := false
+		var modified []BackReference
+		for _, value := range values {
+			if value.Schema.ID == schema.ID && value.Schema.Version.Path == schema.Version.Path {
+				changed = true
+				continue
+			}
+			modified = append(modified, value)
+		}
+
+		if changed {
+			s.references[name] = modified
+		}
+	}
+}
+
+func (s *Schemas) AddSchema(schema Schema) *Schemas {
+	s.Lock()
+	defer s.Unlock()
+	return s.doAddSchema(schema, false)
+}
+
+func (s *Schemas) ForceAddSchema(schema Schema) *Schemas {
+	s.Lock()
+	defer s.Unlock()
+	return s.doAddSchema(schema, true)
+}
+
+func (s *Schemas) doAddSchema(schema Schema, replace bool) *Schemas {
+	s.setupDefaults(&schema)
+
+	if s.AddHook != nil {
+		s.AddHook(&schema)
+	}
+
+	schemas, ok := s.schemasByPath[schema.Version.Path]
+	if !ok {
+		schemas = map[string]*Schema{}
+		s.schemasByPath[schema.Version.Path] = schemas
+		s.versions = append(s.versions, schema.Version)
+	}
+
+	if _, ok := schemas[schema.ID]; !ok ||
+		(replace && schema.DynamicSchemaVersion != schemas[schema.ID].DynamicSchemaVersion) {
+		schemas[schema.ID] = &schema
+
+		if replace {
+			for i, candidate := range s.schemas {
+				if candidate.ID == schema.ID {
+					s.schemas[i] = &schema
+					break
+				}
+			}
+		} else {
+			s.schemas = append(s.schemas, &schema)
+		}
+
+		if !schema.Embed {
+			s.addReferences(&schema)
+		}
+	}
+
+	if schema.Embed {
+		s.embed(&schema)
+	}
+
+	return s
+}
+
+func (s *Schemas) removeEmbed(schema *Schema) {
+	target := s.doSchema(&schema.Version, schema.EmbedType, false)
+	if target == nil {
+		return
+	}
+
+	newSchema := *target
+	newSchema.ResourceFields = map[string]Field{}
+
+	for k, v := range target.ResourceFields {
+		newSchema.ResourceFields[k] = v
+	}
+
+	for k := range schema.ResourceFields {
+		delete(newSchema.ResourceFields, k)
+	}
+
+	s.doRemoveSchema(*target)
+	s.doAddSchema(newSchema, false)
+}
+
+func (s *Schemas) embed(schema *Schema) {
+	target := s.doSchema(&schema.Version, schema.EmbedType, false)
+	if target == nil {
+		return
+	}
+
+	newSchema := *target
+	newSchema.ResourceFields = map[string]Field{}
+
+	for k, v := range target.ResourceFields {
+		// We remove the dynamic fields off the existing schema in case
+		// they've been removed from the dynamic schema so they won't
+		// be accidentally left over
+		if !v.DynamicField {
+			newSchema.ResourceFields[k] = v
+		}
+	}
+	for k, v := range schema.ResourceFields {
+		newSchema.ResourceFields[k] = v
+	}
+
+	s.doRemoveSchema(*target)
+	s.doAddSchema(newSchema, false)
+}
+
+func (s *Schemas) addReferences(schema *Schema) {
+	for name, field := range schema.ResourceFields {
+		if !definition.IsReferenceType(field.Type) {
+			continue
+		}
+
+		refType := definition.SubType(field.Type)
+		if !strings.HasPrefix(refType, "/") {
+			refType = convert.ToFullReference(schema.Version.Path, refType)
+		}
+
+		s.references[refType] = append(s.references[refType], BackReference{
+			FieldName: name,
+			Schema:    schema,
+		})
+	}
+}
+
+func (s *Schemas) setupDefaults(schema *Schema) {
+	schema.Type = "/meta/schemas/schema"
+	if schema.ID == "" {
+		s.errors = append(s.errors, fmt.Errorf("ID is not set on schema: %v", schema))
+		return
+	}
+	if schema.Version.Path == "" || schema.Version.Version == "" {
+		s.errors = append(s.errors, fmt.Errorf("version is not set on schema: %s", schema.ID))
+		return
+	}
+	if schema.PluralName == "" {
+		schema.PluralName = name.GuessPluralName(schema.ID)
+	}
+	if schema.CodeName == "" {
+		schema.CodeName = convert.Capitalize(schema.ID)
+	}
+	if schema.CodeNamePlural == "" {
+		schema.CodeNamePlural = name.GuessPluralName(schema.CodeName)
+	}
+	if schema.BaseType == "" {
+		schema.BaseType = schema.ID
+	}
+}
+
+func (s *Schemas) References(schema *Schema) []BackReference {
+	refType := convert.ToFullReference(schema.Version.Path, schema.ID)
+	s.Lock()
+	defer s.Unlock()
+	return s.references[refType]
+}
+
+func (s *Schemas) AddMapper(version *APIVersion, schemaID string, mapper Mapper) *Schemas {
+	mappers, ok := s.mappers[version.Path]
+	if !ok {
+		mappers = map[string][]Mapper{}
+		s.mappers[version.Path] = mappers
+	}
+
+	mappers[schemaID] = append(mappers[schemaID], mapper)
+	return s
+}
+
+func (s *Schemas) SchemasForVersion(version APIVersion) map[string]*Schema {
+	s.Lock()
+	defer s.Unlock()
+	return s.schemasByPath[version.Path]
+}
+
+func (s *Schemas) Versions() []APIVersion {
+	return s.versions
+}
+
+func (s *Schemas) Schemas() []*Schema {
+	return s.schemas
+}
+
+func (s *Schemas) mapper(version *APIVersion, name string) []Mapper {
+	var (
+		path string
+	)
+
+	if strings.Contains(name, "/") {
+		idx := strings.LastIndex(name, "/")
+		path = name[0:idx]
+		name = name[idx+1:]
+	} else if version != nil {
+		path = version.Path
+	} else {
+		path = "core"
+	}
+
+	mappers, ok := s.mappers[path]
+	if !ok {
+		return nil
+	}
+
+	mapper := mappers[name]
+	if mapper != nil {
+		return mapper
+	}
+
+	return nil
+}
+
+func (s *Schemas) Schema(version *APIVersion, name string) *Schema {
+	return s.doSchema(version, name, true)
+}
+
+func (s *Schemas) doSchema(version *APIVersion, name string, lock bool) *Schema {
+	var (
+		path string
+	)
+
+	if strings.Contains(name, "/schemas/") {
+		parts := strings.SplitN(name, "/schemas/", 2)
+		path = parts[0]
+		name = parts[1]
+	} else if version != nil {
+		path = version.Path
+	} else {
+		path = "core"
+	}
+
+	if lock {
+		s.Lock()
+		defer s.Unlock()
+	}
+	schemas, ok := s.schemasByPath[path]
+	if !ok {
+		return nil
+	}
+
+	schema := schemas[name]
+	if schema != nil {
+		return schema
+	}
+
+	for _, check := range schemas {
+		if strings.EqualFold(check.ID, name) || strings.EqualFold(check.PluralName, name) {
+			return check
+		}
+	}
+
+	return nil
+}
+
+func (s *Schemas) SubContextVersionForSchema(schema *Schema) *APIVersion {
+	fullName := fmt.Sprintf("%s/schemas/%s", schema.Version.Path, schema.ID)
+	for _, version := range s.Versions() {
+		if version.SubContextSchema == fullName {
+			return &version
+		}
+	}
+	return nil
+}
+
+type MultiErrors struct {
+	Errors []error
+}
+
+type Errors struct {
+	errors []error
+}
+
+func (e *Errors) Add(err error) {
+	if err != nil {
+		e.errors = append(e.errors, err)
+	}
+}
+
+func (e *Errors) Err() error {
+	return NewErrors(e.errors...)
+}
+
+func NewErrors(inErrors ...error) error {
+	var errors []error
+	for _, err := range inErrors {
+		if err != nil {
+			errors = append(errors, err)
+		}
+	}
+
+	if len(errors) == 0 {
+		return nil
+	} else if len(errors) == 1 {
+		return errors[0]
+	}
+	return &MultiErrors{
+		Errors: errors,
+	}
+}
+
+func (m *MultiErrors) Error() string {
+	buf := bytes.NewBuffer(nil)
+	for _, err := range m.Errors {
+		if buf.Len() > 0 {
+			buf.WriteString(", ")
+		}
+		buf.WriteString(err.Error())
+	}
+
+	return buf.String()
+}
diff --git a/vendor/github.com/rancher/norman/types/server_types.go b/vendor/github.com/rancher/norman/types/server_types.go
new file mode 100644
index 00000000..70d6b690
--- /dev/null
+++ b/vendor/github.com/rancher/norman/types/server_types.go
@@ -0,0 +1,238 @@
+package types
+
+import (
+	"context"
+	"encoding/json"
+	"net/http"
+	"net/url"
+)
+
+type ValuesMap struct {
+	Foo map[string]interface{}
+}
+
+type RawResource struct {
+	ID           string                 `json:"id,omitempty" yaml:"id,omitempty"`
+	Type         string                 `json:"type,omitempty" yaml:"type,omitempty"`
+	Schema       *Schema                `json:"-" yaml:"-"`
+	Links        map[string]string      `json:"links,omitempty" yaml:"links,omitempty"`
+	Actions      map[string]string      `json:"actions,omitempty" yaml:"actions,omitempty"`
+	Values       map[string]interface{} `json:",inline" yaml:",inline"`
+	ActionLinks  bool                   `json:"-" yaml:"-"`
+	DropReadOnly bool                   `json:"-" yaml:"-"`
+}
+
+func (r *RawResource) AddAction(apiContext *APIContext, name string) {
+	r.Actions[name] = apiContext.URLBuilder.Action(name, r)
+}
+
+func (r *RawResource) MarshalJSON() ([]byte, error) {
+	return json.Marshal(r.ToMap())
+}
+
+func (r *RawResource) ToMap() map[string]interface{} {
+	data := map[string]interface{}{}
+	for k, v := range r.Values {
+		data[k] = v
+	}
+
+	if r.ID != "" && !r.DropReadOnly {
+		data["id"] = r.ID
+	}
+
+	if r.Type != "" && !r.DropReadOnly {
+		data["type"] = r.Type
+	}
+	if r.Schema.BaseType != "" && !r.DropReadOnly {
+		data["baseType"] = r.Schema.BaseType
+	}
+
+	if len(r.Links) > 0 && !r.DropReadOnly {
+		data["links"] = r.Links
+	}
+
+	if len(r.Actions) > 0 && !r.DropReadOnly {
+		if r.ActionLinks {
+			data["actionLinks"] = r.Actions
+		} else {
+			data["actions"] = r.Actions
+		}
+	}
+	return data
+}
+
+type ActionHandler func(actionName string, action *Action, request *APIContext) error
+
+type RequestHandler func(request *APIContext, next RequestHandler) error
+
+type QueryFilter func(opts *QueryOptions, schema *Schema, data []map[string]interface{}) []map[string]interface{}
+
+type Validator func(request *APIContext, schema *Schema, data map[string]interface{}) error
+
+type InputFormatter func(request *APIContext, schema *Schema, data map[string]interface{}, create bool) error
+
+type Formatter func(request *APIContext, resource *RawResource)
+
+type CollectionFormatter func(request *APIContext, collection *GenericCollection)
+
+type ErrorHandler func(request *APIContext, err error)
+
+type SubContextAttributeProvider interface {
+	Query(apiContext *APIContext, schema *Schema) []*QueryCondition
+	Create(apiContext *APIContext, schema *Schema) map[string]interface{}
+}
+
+type ResponseWriter interface {
+	Write(apiContext *APIContext, code int, obj interface{})
+}
+
+type AccessControl interface {
+	CanCreate(apiContext *APIContext, schema *Schema) error
+	CanList(apiContext *APIContext, schema *Schema) error
+	CanGet(apiContext *APIContext, schema *Schema) error
+	CanUpdate(apiContext *APIContext, obj map[string]interface{}, schema *Schema) error
+	CanDelete(apiContext *APIContext, obj map[string]interface{}, schema *Schema) error
+	// CanDo function should not yet be used if a corresponding specific method exists. It has been added to
+	// satisfy a specific usecase for the short term until full-blown dynamic RBAC can be implemented.
+	CanDo(apiGroup, resource, verb string, apiContext *APIContext, obj map[string]interface{}, schema *Schema) error
+
+	Filter(apiContext *APIContext, schema *Schema, obj map[string]interface{}, context map[string]string) map[string]interface{}
+	FilterList(apiContext *APIContext, schema *Schema, obj []map[string]interface{}, context map[string]string) []map[string]interface{}
+}
+
+type APIContext struct {
+	Action                      string
+	ID                          string
+	Type                        string
+	Link                        string
+	Method                      string
+	Schema                      *Schema
+	Schemas                     *Schemas
+	Version                     *APIVersion
+	SchemasVersion              *APIVersion
+	Query                       url.Values
+	ResponseFormat              string
+	ReferenceValidator          ReferenceValidator
+	ResponseWriter              ResponseWriter
+	QueryFilter                 QueryFilter
+	SubContextAttributeProvider SubContextAttributeProvider
+	URLBuilder                  URLBuilder
+	AccessControl               AccessControl
+	SubContext                  map[string]string
+	Pagination                  *Pagination
+
+	Request  *http.Request
+	Response http.ResponseWriter
+}
+
+type apiContextKey struct{}
+
+func NewAPIContext(req *http.Request, resp http.ResponseWriter, schemas *Schemas) *APIContext {
+	apiCtx := &APIContext{
+		Response: resp,
+		Schemas:  schemas,
+	}
+	ctx := context.WithValue(req.Context(), apiContextKey{}, apiCtx)
+	apiCtx.Request = req.WithContext(ctx)
+	return apiCtx
+}
+
+func GetAPIContext(ctx context.Context) *APIContext {
+	apiContext, _ := ctx.Value(apiContextKey{}).(*APIContext)
+	return apiContext
+}
+
+func (r *APIContext) Option(key string) string {
+	return r.Query.Get("_" + key)
+}
+
+func (r *APIContext) WriteResponse(code int, obj interface{}) {
+	r.ResponseWriter.Write(r, code, obj)
+}
+
+func (r *APIContext) FilterList(opts *QueryOptions, schema *Schema, obj []map[string]interface{}) []map[string]interface{} {
+	return r.QueryFilter(opts, schema, obj)
+}
+
+func (r *APIContext) FilterObject(opts *QueryOptions, schema *Schema, obj map[string]interface{}) map[string]interface{} {
+	opts.Pagination = nil
+	result := r.QueryFilter(opts, schema, []map[string]interface{}{obj})
+	if len(result) == 0 {
+		return nil
+	}
+	return result[0]
+}
+
+func (r *APIContext) Filter(opts *QueryOptions, schema *Schema, obj interface{}) interface{} {
+	switch v := obj.(type) {
+	case []map[string]interface{}:
+		return r.FilterList(opts, schema, v)
+	case map[string]interface{}:
+		return r.FilterObject(opts, schema, v)
+	}
+
+	return nil
+}
+
+type Expire interface {
+	Expire(apiContext *APIContext, schema *Schema)
+}
+
+func (r *APIContext) ExpireAccessControl(schema *Schema) {
+	if e, ok := r.AccessControl.(Expire); ok {
+		e.Expire(r, schema)
+	}
+}
+
+var (
+	ASC  = SortOrder("asc")
+	DESC = SortOrder("desc")
+)
+
+type QueryOptions struct {
+	Sort       Sort
+	Pagination *Pagination
+	Conditions []*QueryCondition
+	Options    map[string]string
+	// Set namespaces to an empty array will result in an empty response
+	Namespaces []string
+}
+
+type ReferenceValidator interface {
+	Validate(resourceType, resourceID string) bool
+	Lookup(resourceType, resourceID string) *RawResource
+}
+
+type URLBuilder interface {
+	Current() string
+	Collection(schema *Schema, versionOverride *APIVersion) string
+	CollectionAction(schema *Schema, versionOverride *APIVersion, action string) string
+	SubContextCollection(subContext *Schema, contextName string, schema *Schema) string
+	SchemaLink(schema *Schema) string
+	ResourceLink(resource *RawResource) string
+	Link(linkName string, resource *RawResource) string
+	RelativeToRoot(path string) string
+	Version(version APIVersion) string
+	Marker(marker string) string
+	ReverseSort(order SortOrder) string
+	Sort(field string) string
+	SetSubContext(subContext string)
+	FilterLink(schema *Schema, fieldName string, value string) string
+	Action(action string, resource *RawResource) string
+	ResourceLinkByID(schema *Schema, id string) string
+	ActionLinkByID(schema *Schema, id string, action string) string
+}
+
+type StorageContext string
+
+var DefaultStorageContext StorageContext
+
+type Store interface {
+	Context() StorageContext
+	ByID(apiContext *APIContext, schema *Schema, id string) (map[string]interface{}, error)
+	List(apiContext *APIContext, schema *Schema, opt *QueryOptions) ([]map[string]interface{}, error)
+	Create(apiContext *APIContext, schema *Schema, data map[string]interface{}) (map[string]interface{}, error)
+	Update(apiContext *APIContext, schema *Schema, data map[string]interface{}, id string) (map[string]interface{}, error)
+	Delete(apiContext *APIContext, schema *Schema, id string) (map[string]interface{}, error)
+	Watch(apiContext *APIContext, schema *Schema, opt *QueryOptions) (chan map[string]interface{}, error)
+}
diff --git a/vendor/github.com/rancher/norman/types/slice/contains.go b/vendor/github.com/rancher/norman/types/slice/contains.go
new file mode 100644
index 00000000..10cbac0a
--- /dev/null
+++ b/vendor/github.com/rancher/norman/types/slice/contains.go
@@ -0,0 +1,22 @@
+package slice
+
+func ContainsString(slice []string, item string) bool {
+	for _, j := range slice {
+		if j == item {
+			return true
+		}
+	}
+	return false
+}
+
+func StringsEqual(left, right []string) bool {
+	if len(left) != len(right) {
+		return false
+	}
+	for i := 0; i < len(left); i++ {
+		if left[i] != right[i] {
+			return false
+		}
+	}
+	return true
+}
diff --git a/vendor/github.com/rancher/norman/types/types.go b/vendor/github.com/rancher/norman/types/types.go
new file mode 100644
index 00000000..a0b6301c
--- /dev/null
+++ b/vendor/github.com/rancher/norman/types/types.go
@@ -0,0 +1,171 @@
+package types
+
+const (
+	ResourceFieldID = "id"
+)
+
+type Collection struct {
+	Type         string                 `json:"type,omitempty"`
+	Links        map[string]string      `json:"links"`
+	CreateTypes  map[string]string      `json:"createTypes,omitempty"`
+	Actions      map[string]string      `json:"actions"`
+	Pagination   *Pagination            `json:"pagination,omitempty"`
+	Sort         *Sort                  `json:"sort,omitempty"`
+	Filters      map[string][]Condition `json:"filters,omitempty"`
+	ResourceType string                 `json:"resourceType"`
+}
+
+type GenericCollection struct {
+	Collection
+	Data []interface{} `json:"data"`
+}
+
+type ResourceCollection struct {
+	Collection
+	Data []Resource `json:"data,omitempty"`
+}
+
+type SortOrder string
+
+type Sort struct {
+	Name    string            `json:"name,omitempty"`
+	Order   SortOrder         `json:"order,omitempty"`
+	Reverse string            `json:"reverse,omitempty"`
+	Links   map[string]string `json:"links,omitempty"`
+}
+
+var (
+	ModifierEQ      ModifierType = "eq"
+	ModifierNE      ModifierType = "ne"
+	ModifierNull    ModifierType = "null"
+	ModifierNotNull ModifierType = "notnull"
+	ModifierIn      ModifierType = "in"
+	ModifierNotIn   ModifierType = "notin"
+)
+
+type ModifierType string
+
+type Condition struct {
+	Modifier ModifierType `json:"modifier,omitempty"`
+	Value    interface{}  `json:"value,omitempty"`
+}
+
+type Pagination struct {
+	Marker   string `json:"marker,omitempty"`
+	First    string `json:"first,omitempty"`
+	Previous string `json:"previous,omitempty"`
+	Next     string `json:"next,omitempty"`
+	Last     string `json:"last,omitempty"`
+	Limit    *int64 `json:"limit,omitempty"`
+	Total    *int64 `json:"total,omitempty"`
+	Partial  bool   `json:"partial,omitempty"`
+}
+
+type Resource struct {
+	ID      string            `json:"id,omitempty"`
+	Type    string            `json:"type,omitempty"`
+	Links   map[string]string `json:"links"`
+	Actions map[string]string `json:"actions"`
+}
+
+type NamedResource struct {
+	Resource
+	Name        string `json:"name"`
+	Description string `json:"description"`
+}
+
+type NamedResourceCollection struct {
+	Collection
+	Data []NamedResource `json:"data,omitempty"`
+}
+
+type APIVersion struct {
+	Group            string `json:"group,omitempty"`
+	Version          string `json:"version,omitempty"`
+	Path             string `json:"path,omitempty"`
+	SubContext       bool   `json:"subContext,omitempty"`
+	SubContextSchema string `json:"filterField,omitempty"`
+}
+
+type Namespaced struct{}
+
+var NamespaceScope TypeScope = "namespace"
+
+type TypeScope string
+
+type Schema struct {
+	ID                   string            `json:"id,omitempty"`
+	Embed                bool              `json:"embed,omitempty"`
+	EmbedType            string            `json:"embedType,omitempty"`
+	CodeName             string            `json:"-"`
+	CodeNamePlural       string            `json:"-"`
+	PkgName              string            `json:"-"`
+	Type                 string            `json:"type,omitempty"`
+	BaseType             string            `json:"baseType,omitempty"`
+	Links                map[string]string `json:"links"`
+	Version              APIVersion        `json:"version"`
+	PluralName           string            `json:"pluralName,omitempty"`
+	ResourceMethods      []string          `json:"resourceMethods,omitempty"`
+	ResourceFields       map[string]Field  `json:"resourceFields"`
+	ResourceActions      map[string]Action `json:"resourceActions,omitempty"`
+	CollectionMethods    []string          `json:"collectionMethods,omitempty"`
+	CollectionFields     map[string]Field  `json:"collectionFields,omitempty"`
+	CollectionActions    map[string]Action `json:"collectionActions,omitempty"`
+	CollectionFilters    map[string]Filter `json:"collectionFilters,omitempty"`
+	DynamicSchemaVersion string            `json:"dynamicSchemaVersion,omitempty"`
+	Scope                TypeScope         `json:"-"`
+	Enabled              func() bool       `json:"-"`
+
+	InternalSchema      *Schema             `json:"-"`
+	Mapper              Mapper              `json:"-"`
+	ActionHandler       ActionHandler       `json:"-"`
+	LinkHandler         RequestHandler      `json:"-"`
+	ListHandler         RequestHandler      `json:"-"`
+	CreateHandler       RequestHandler      `json:"-"`
+	DeleteHandler       RequestHandler      `json:"-"`
+	UpdateHandler       RequestHandler      `json:"-"`
+	InputFormatter      InputFormatter      `json:"-"`
+	Formatter           Formatter           `json:"-"`
+	CollectionFormatter CollectionFormatter `json:"-"`
+	ErrorHandler        ErrorHandler        `json:"-"`
+	Validator           Validator           `json:"-"`
+	Store               Store               `json:"-"`
+}
+
+type Field struct {
+	Type         string      `json:"type,omitempty"`
+	Default      interface{} `json:"default,omitempty"`
+	Nullable     bool        `json:"nullable,omitempty"`
+	Create       bool        `json:"create"`
+	WriteOnly    bool        `json:"writeOnly,omitempty"`
+	Required     bool        `json:"required,omitempty"`
+	Update       bool        `json:"update"`
+	MinLength    *int64      `json:"minLength,omitempty"`
+	MaxLength    *int64      `json:"maxLength,omitempty"`
+	Min          *int64      `json:"min,omitempty"`
+	Max          *int64      `json:"max,omitempty"`
+	Options      []string    `json:"options,omitempty"`
+	ValidChars   string      `json:"validChars,omitempty"`
+	InvalidChars string      `json:"invalidChars,omitempty"`
+	Description  string      `json:"description,omitempty"`
+	CodeName     string      `json:"-"`
+	DynamicField bool        `json:"dynamicField,omitempty"`
+	Pointer      bool        `json:"pointer,omitempty"`
+}
+
+type Action struct {
+	Input  string `json:"input,omitempty"`
+	Output string `json:"output,omitempty"`
+}
+
+type Filter struct {
+	Modifiers []ModifierType `json:"modifiers,omitempty"`
+}
+
+type ListOpts struct {
+	Filters map[string]interface{}
+}
+
+func (c *Collection) AddAction(apiContext *APIContext, name string) {
+	c.Actions[name] = apiContext.URLBuilder.CollectionAction(apiContext.Schema, nil, name)
+}
diff --git a/vendor/github.com/rancher/norman/types/values/values.go b/vendor/github.com/rancher/norman/types/values/values.go
new file mode 100644
index 00000000..0ec04457
--- /dev/null
+++ b/vendor/github.com/rancher/norman/types/values/values.go
@@ -0,0 +1,111 @@
+package values
+
+import "github.com/rancher/norman/types/convert"
+
+func RemoveValue(data map[string]interface{}, keys ...string) (interface{}, bool) {
+	for i, key := range keys {
+		if i == len(keys)-1 {
+			val, ok := data[key]
+			delete(data, key)
+			return val, ok
+		}
+		data, _ = data[key].(map[string]interface{})
+	}
+
+	return nil, false
+}
+
+func GetStringSlice(data map[string]interface{}, keys ...string) ([]string, bool) {
+	val, ok := GetValue(data, keys...)
+	if !ok {
+		return nil, ok
+	}
+
+	slice, typeOk := val.([]string)
+	if typeOk {
+		return slice, typeOk
+	}
+
+	sliceNext, typeOk := val.([]interface{})
+	if !typeOk {
+		return nil, typeOk
+	}
+
+	var result []string
+	for _, item := range sliceNext {
+		result = append(result, convert.ToString(item))
+	}
+
+	return result, true
+}
+
+func GetSlice(data map[string]interface{}, keys ...string) ([]map[string]interface{}, bool) {
+	val, ok := GetValue(data, keys...)
+	if !ok {
+		return nil, ok
+	}
+
+	slice, typeOk := val.([]map[string]interface{})
+	if typeOk {
+		return slice, typeOk
+	}
+
+	sliceNext, typeOk := val.([]interface{})
+	if !typeOk {
+		return nil, typeOk
+	}
+
+	result := []map[string]interface{}{}
+	for _, val := range sliceNext {
+		if v, ok := val.(map[string]interface{}); ok {
+			result = append(result, v)
+		}
+	}
+
+	return result, true
+
+}
+
+func GetValueN(data map[string]interface{}, keys ...string) interface{} {
+	val, _ := GetValue(data, keys...)
+	return val
+}
+
+func GetValue(data map[string]interface{}, keys ...string) (interface{}, bool) {
+	for i, key := range keys {
+		if i == len(keys)-1 {
+			val, ok := data[key]
+			return val, ok
+		}
+		data, _ = data[key].(map[string]interface{})
+	}
+
+	return nil, false
+}
+
+func PutValue(data map[string]interface{}, val interface{}, keys ...string) {
+	if data == nil {
+		return
+	}
+
+	// This is so ugly
+	for i, key := range keys {
+		if i == len(keys)-1 {
+			data[key] = val
+		} else {
+			newData, ok := data[key]
+			if ok {
+				newMap, ok := newData.(map[string]interface{})
+				if ok {
+					data = newMap
+				} else {
+					return
+				}
+			} else {
+				newMap := map[string]interface{}{}
+				data[key] = newMap
+				data = newMap
+			}
+		}
+	}
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/LICENSE b/vendor/github.com/rancher/rancher/pkg/client/LICENSE
new file mode 100644
index 00000000..e454a525
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/LICENSE
@@ -0,0 +1,178 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aci_network_provider.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aci_network_provider.go
new file mode 100644
index 00000000..7457b072
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aci_network_provider.go
@@ -0,0 +1,238 @@
+package client
+
+const (
+	AciNetworkProviderType                                      = "aciNetworkProvider"
+	AciNetworkProviderFieldAEP                                  = "aep"
+	AciNetworkProviderFieldAciContainersControllerMemoryLimit   = "aciContainersControllerMemoryLimit"
+	AciNetworkProviderFieldAciContainersControllerMemoryRequest = "aciContainersControllerMemoryRequest"
+	AciNetworkProviderFieldAciContainersHostMemoryLimit         = "aciContainersHostMemoryLimit"
+	AciNetworkProviderFieldAciContainersHostMemoryRequest       = "aciContainersHostMemoryRequest"
+	AciNetworkProviderFieldAciContainersMemoryLimit             = "aciContainersMemoryLimit"
+	AciNetworkProviderFieldAciContainersMemoryRequest           = "aciContainersMemoryRequest"
+	AciNetworkProviderFieldAciMultipod                          = "aciMultipod"
+	AciNetworkProviderFieldAciMultipodUbuntu                    = "aciMultipodUbuntu"
+	AciNetworkProviderFieldAddExternalContractToDefaultEpg      = "addExternalContractToDefaultEpg"
+	AciNetworkProviderFieldAddExternalSubnetsToRdconfig         = "addExternalSubnetsToRdconfig"
+	AciNetworkProviderFieldApicConnectionRetryLimit             = "apicConnectionRetryLimit"
+	AciNetworkProviderFieldApicHosts                            = "apicHosts"
+	AciNetworkProviderFieldApicRefreshTickerAdjust              = "apicRefreshTickerAdjust"
+	AciNetworkProviderFieldApicRefreshTime                      = "apicRefreshTime"
+	AciNetworkProviderFieldApicSubscriptionDelay                = "apicSubscriptionDelay"
+	AciNetworkProviderFieldApicUserCrt                          = "apicUserCrt"
+	AciNetworkProviderFieldApicUserKey                          = "apicUserKey"
+	AciNetworkProviderFieldApicUserName                         = "apicUserName"
+	AciNetworkProviderFieldCApic                                = "capic"
+	AciNetworkProviderFieldControllerLogLevel                   = "controllerLogLevel"
+	AciNetworkProviderFieldDhcpDelay                            = "dhcpDelay"
+	AciNetworkProviderFieldDhcpRenewMaxRetryCount               = "dhcpRenewMaxRetryCount"
+	AciNetworkProviderFieldDisableHppRendering                  = "disableHppRendering"
+	AciNetworkProviderFieldDisablePeriodicSnatGlobalInfoSync    = "disablePeriodicSnatGlobalInfoSync"
+	AciNetworkProviderFieldDisableWaitForNetwork                = "disableWaitForNetwork"
+	AciNetworkProviderFieldDropLogDisableEvents                 = "dropLogDisableEvents"
+	AciNetworkProviderFieldDropLogEnable                        = "dropLogEnable"
+	AciNetworkProviderFieldDurationWaitForNetwork               = "durationWaitForNetwork"
+	AciNetworkProviderFieldDynamicExternalSubnet                = "externDynamic"
+	AciNetworkProviderFieldEnableEndpointSlice                  = "enableEndpointSlice"
+	AciNetworkProviderFieldEnableOpflexAgentReconnect           = "enableOpflexAgentReconnect"
+	AciNetworkProviderFieldEncapType                            = "encapType"
+	AciNetworkProviderFieldEpRegistry                           = "epRegistry"
+	AciNetworkProviderFieldGbpPodSubnet                         = "gbpPodSubnet"
+	AciNetworkProviderFieldHostAgentLogLevel                    = "hostAgentLogLevel"
+	AciNetworkProviderFieldHppOptimization                      = "hppOptimization"
+	AciNetworkProviderFieldImagePullPolicy                      = "imagePullPolicy"
+	AciNetworkProviderFieldImagePullSecret                      = "imagePullSecret"
+	AciNetworkProviderFieldInfraVlan                            = "infraVlan"
+	AciNetworkProviderFieldInstallIstio                         = "installIstio"
+	AciNetworkProviderFieldIstioProfile                         = "istioProfile"
+	AciNetworkProviderFieldKafkaBrokers                         = "kafkaBrokers"
+	AciNetworkProviderFieldKafkaClientCrt                       = "kafkaClientCrt"
+	AciNetworkProviderFieldKafkaClientKey                       = "kafkaClientKey"
+	AciNetworkProviderFieldKubeAPIVlan                          = "kubeApiVlan"
+	AciNetworkProviderFieldL3Out                                = "l3out"
+	AciNetworkProviderFieldL3OutExternalNetworks                = "l3outExternalNetworks"
+	AciNetworkProviderFieldMTUHeadRoom                          = "mtuHeadRoom"
+	AciNetworkProviderFieldMaxNodesSvcGraph                     = "maxNodesSvcGraph"
+	AciNetworkProviderFieldMcastDaemonMemoryLimit               = "mcastDaemonMemoryLimit"
+	AciNetworkProviderFieldMcastDaemonMemoryRequest             = "mcastDaemonMemoryRequest"
+	AciNetworkProviderFieldMcastRangeEnd                        = "mcastRangeEnd"
+	AciNetworkProviderFieldMcastRangeStart                      = "mcastRangeStart"
+	AciNetworkProviderFieldMultusDisable                        = "multusDisable"
+	AciNetworkProviderFieldNoPriorityClass                      = "noPriorityClass"
+	AciNetworkProviderFieldNoWaitForServiceEpReadiness          = "noWaitForServiceEpReadiness"
+	AciNetworkProviderFieldNodePodIfEnable                      = "nodePodIfEnable"
+	AciNetworkProviderFieldNodeSnatRedirectExclude              = "nodeSnatRedirectExclude"
+	AciNetworkProviderFieldNodeSubnet                           = "nodeSubnet"
+	AciNetworkProviderFieldOVSMemoryLimit                       = "ovsMemoryLimit"
+	AciNetworkProviderFieldOVSMemoryRequest                     = "ovsMemoryRequest"
+	AciNetworkProviderFieldOpflexAgentLogLevel                  = "opflexLogLevel"
+	AciNetworkProviderFieldOpflexAgentMemoryLimit               = "opflexAgentMemoryLimit"
+	AciNetworkProviderFieldOpflexAgentMemoryRequest             = "opflexAgentMemoryRequest"
+	AciNetworkProviderFieldOpflexAgentOpflexAsyncjsonEnabled    = "opflexAgentOpflexAsyncjsonEnabled"
+	AciNetworkProviderFieldOpflexAgentOvsAsyncjsonEnabled       = "opflexAgentOvsAsyncjsonEnabled"
+	AciNetworkProviderFieldOpflexAgentPolicyRetryDelayTimer     = "opflexAgentPolicyRetryDelayTimer"
+	AciNetworkProviderFieldOpflexAgentStatistics                = "opflexAgentStatistics"
+	AciNetworkProviderFieldOpflexClientSSL                      = "opflexClientSsl"
+	AciNetworkProviderFieldOpflexDeviceDeleteTimeout            = "opflexDeviceDeleteTimeout"
+	AciNetworkProviderFieldOpflexDeviceReconnectWaitTimeout     = "opflexDeviceReconnectWaitTimeout"
+	AciNetworkProviderFieldOpflexMode                           = "opflexMode"
+	AciNetworkProviderFieldOpflexOpensslCompat                  = "opflexOpensslCompat"
+	AciNetworkProviderFieldOpflexServerPort                     = "opflexServerPort"
+	AciNetworkProviderFieldOpflexStartupEnabled                 = "opflexStartupEnabled"
+	AciNetworkProviderFieldOpflexStartupPolicyDuration          = "opflexStartupPolicyDuration"
+	AciNetworkProviderFieldOpflexStartupResolveAftConn          = "opflexStartupResolveAftConn"
+	AciNetworkProviderFieldOpflexSwitchSyncDelay                = "opflexSwitchSyncDelay"
+	AciNetworkProviderFieldOpflexSwitchSyncDynamic              = "opflexSwitchSyncDynamic"
+	AciNetworkProviderFieldOverlayVRFName                       = "overlayVrfName"
+	AciNetworkProviderFieldPBRTrackingNonSnat                   = "pbrTrackingNonSnat"
+	AciNetworkProviderFieldPodSubnetChunkSize                   = "podSubnetChunkSize"
+	AciNetworkProviderFieldRunGbpContainer                      = "runGbpContainer"
+	AciNetworkProviderFieldRunOpflexServerContainer             = "runOpflexServerContainer"
+	AciNetworkProviderFieldServiceGraphEndpointAddDelay         = "serviceGraphEndpointAddDelay"
+	AciNetworkProviderFieldServiceGraphEndpointAddServices      = "serviceGraphEndpointAddServices"
+	AciNetworkProviderFieldServiceGraphSubnet                   = "nodeSvcSubnet"
+	AciNetworkProviderFieldServiceMonitorInterval               = "serviceMonitorInterval"
+	AciNetworkProviderFieldServiceVlan                          = "serviceVlan"
+	AciNetworkProviderFieldSleepTimeSnatGlobalInfoSync          = "sleepTimeSnatGlobalInfoSync"
+	AciNetworkProviderFieldSnatContractScope                    = "snatContractScope"
+	AciNetworkProviderFieldSnatNamespace                        = "snatNamespace"
+	AciNetworkProviderFieldSnatPortRangeEnd                     = "snatPortRangeEnd"
+	AciNetworkProviderFieldSnatPortRangeStart                   = "snatPortRangeStart"
+	AciNetworkProviderFieldSnatPortsPerNode                     = "snatPortsPerNode"
+	AciNetworkProviderFieldSriovEnable                          = "sriovEnable"
+	AciNetworkProviderFieldStaticExternalSubnet                 = "externStatic"
+	AciNetworkProviderFieldSubnetDomainName                     = "subnetDomainName"
+	AciNetworkProviderFieldSystemIdentifier                     = "systemId"
+	AciNetworkProviderFieldTaintNotReadyNode                    = "taintNotReadyNode"
+	AciNetworkProviderFieldTenant                               = "tenant"
+	AciNetworkProviderFieldToken                                = "token"
+	AciNetworkProviderFieldTolerationSeconds                    = "tolerationSeconds"
+	AciNetworkProviderFieldUseAciAnywhereCRD                    = "useAciAnywhereCrd"
+	AciNetworkProviderFieldUseAciCniPriorityClass               = "useAciCniPriorityClass"
+	AciNetworkProviderFieldUseClusterRole                       = "useClusterRole"
+	AciNetworkProviderFieldUseHostNetnsVolume                   = "useHostNetnsVolume"
+	AciNetworkProviderFieldUseOpflexServerVolume                = "useOpflexServerVolume"
+	AciNetworkProviderFieldUsePrivilegedContainer               = "usePrivilegedContainer"
+	AciNetworkProviderFieldUseSystemNodePriorityClass           = "useSystemNodePriorityClass"
+	AciNetworkProviderFieldVRFName                              = "vrfName"
+	AciNetworkProviderFieldVRFTenant                            = "vrfTenant"
+	AciNetworkProviderFieldVmmController                        = "vmmController"
+	AciNetworkProviderFieldVmmDomain                            = "vmmDomain"
+)
+
+type AciNetworkProvider struct {
+	AEP                                  string              `json:"aep,omitempty" yaml:"aep,omitempty"`
+	AciContainersControllerMemoryLimit   string              `json:"aciContainersControllerMemoryLimit,omitempty" yaml:"aciContainersControllerMemoryLimit,omitempty"`
+	AciContainersControllerMemoryRequest string              `json:"aciContainersControllerMemoryRequest,omitempty" yaml:"aciContainersControllerMemoryRequest,omitempty"`
+	AciContainersHostMemoryLimit         string              `json:"aciContainersHostMemoryLimit,omitempty" yaml:"aciContainersHostMemoryLimit,omitempty"`
+	AciContainersHostMemoryRequest       string              `json:"aciContainersHostMemoryRequest,omitempty" yaml:"aciContainersHostMemoryRequest,omitempty"`
+	AciContainersMemoryLimit             string              `json:"aciContainersMemoryLimit,omitempty" yaml:"aciContainersMemoryLimit,omitempty"`
+	AciContainersMemoryRequest           string              `json:"aciContainersMemoryRequest,omitempty" yaml:"aciContainersMemoryRequest,omitempty"`
+	AciMultipod                          string              `json:"aciMultipod,omitempty" yaml:"aciMultipod,omitempty"`
+	AciMultipodUbuntu                    string              `json:"aciMultipodUbuntu,omitempty" yaml:"aciMultipodUbuntu,omitempty"`
+	AddExternalContractToDefaultEpg      string              `json:"addExternalContractToDefaultEpg,omitempty" yaml:"addExternalContractToDefaultEpg,omitempty"`
+	AddExternalSubnetsToRdconfig         string              `json:"addExternalSubnetsToRdconfig,omitempty" yaml:"addExternalSubnetsToRdconfig,omitempty"`
+	ApicConnectionRetryLimit             string              `json:"apicConnectionRetryLimit,omitempty" yaml:"apicConnectionRetryLimit,omitempty"`
+	ApicHosts                            []string            `json:"apicHosts,omitempty" yaml:"apicHosts,omitempty"`
+	ApicRefreshTickerAdjust              string              `json:"apicRefreshTickerAdjust,omitempty" yaml:"apicRefreshTickerAdjust,omitempty"`
+	ApicRefreshTime                      string              `json:"apicRefreshTime,omitempty" yaml:"apicRefreshTime,omitempty"`
+	ApicSubscriptionDelay                string              `json:"apicSubscriptionDelay,omitempty" yaml:"apicSubscriptionDelay,omitempty"`
+	ApicUserCrt                          string              `json:"apicUserCrt,omitempty" yaml:"apicUserCrt,omitempty"`
+	ApicUserKey                          string              `json:"apicUserKey,omitempty" yaml:"apicUserKey,omitempty"`
+	ApicUserName                         string              `json:"apicUserName,omitempty" yaml:"apicUserName,omitempty"`
+	CApic                                string              `json:"capic,omitempty" yaml:"capic,omitempty"`
+	ControllerLogLevel                   string              `json:"controllerLogLevel,omitempty" yaml:"controllerLogLevel,omitempty"`
+	DhcpDelay                            string              `json:"dhcpDelay,omitempty" yaml:"dhcpDelay,omitempty"`
+	DhcpRenewMaxRetryCount               string              `json:"dhcpRenewMaxRetryCount,omitempty" yaml:"dhcpRenewMaxRetryCount,omitempty"`
+	DisableHppRendering                  string              `json:"disableHppRendering,omitempty" yaml:"disableHppRendering,omitempty"`
+	DisablePeriodicSnatGlobalInfoSync    string              `json:"disablePeriodicSnatGlobalInfoSync,omitempty" yaml:"disablePeriodicSnatGlobalInfoSync,omitempty"`
+	DisableWaitForNetwork                string              `json:"disableWaitForNetwork,omitempty" yaml:"disableWaitForNetwork,omitempty"`
+	DropLogDisableEvents                 string              `json:"dropLogDisableEvents,omitempty" yaml:"dropLogDisableEvents,omitempty"`
+	DropLogEnable                        string              `json:"dropLogEnable,omitempty" yaml:"dropLogEnable,omitempty"`
+	DurationWaitForNetwork               string              `json:"durationWaitForNetwork,omitempty" yaml:"durationWaitForNetwork,omitempty"`
+	DynamicExternalSubnet                string              `json:"externDynamic,omitempty" yaml:"externDynamic,omitempty"`
+	EnableEndpointSlice                  string              `json:"enableEndpointSlice,omitempty" yaml:"enableEndpointSlice,omitempty"`
+	EnableOpflexAgentReconnect           string              `json:"enableOpflexAgentReconnect,omitempty" yaml:"enableOpflexAgentReconnect,omitempty"`
+	EncapType                            string              `json:"encapType,omitempty" yaml:"encapType,omitempty"`
+	EpRegistry                           string              `json:"epRegistry,omitempty" yaml:"epRegistry,omitempty"`
+	GbpPodSubnet                         string              `json:"gbpPodSubnet,omitempty" yaml:"gbpPodSubnet,omitempty"`
+	HostAgentLogLevel                    string              `json:"hostAgentLogLevel,omitempty" yaml:"hostAgentLogLevel,omitempty"`
+	HppOptimization                      string              `json:"hppOptimization,omitempty" yaml:"hppOptimization,omitempty"`
+	ImagePullPolicy                      string              `json:"imagePullPolicy,omitempty" yaml:"imagePullPolicy,omitempty"`
+	ImagePullSecret                      string              `json:"imagePullSecret,omitempty" yaml:"imagePullSecret,omitempty"`
+	InfraVlan                            string              `json:"infraVlan,omitempty" yaml:"infraVlan,omitempty"`
+	InstallIstio                         string              `json:"installIstio,omitempty" yaml:"installIstio,omitempty"`
+	IstioProfile                         string              `json:"istioProfile,omitempty" yaml:"istioProfile,omitempty"`
+	KafkaBrokers                         []string            `json:"kafkaBrokers,omitempty" yaml:"kafkaBrokers,omitempty"`
+	KafkaClientCrt                       string              `json:"kafkaClientCrt,omitempty" yaml:"kafkaClientCrt,omitempty"`
+	KafkaClientKey                       string              `json:"kafkaClientKey,omitempty" yaml:"kafkaClientKey,omitempty"`
+	KubeAPIVlan                          string              `json:"kubeApiVlan,omitempty" yaml:"kubeApiVlan,omitempty"`
+	L3Out                                string              `json:"l3out,omitempty" yaml:"l3out,omitempty"`
+	L3OutExternalNetworks                []string            `json:"l3outExternalNetworks,omitempty" yaml:"l3outExternalNetworks,omitempty"`
+	MTUHeadRoom                          string              `json:"mtuHeadRoom,omitempty" yaml:"mtuHeadRoom,omitempty"`
+	MaxNodesSvcGraph                     string              `json:"maxNodesSvcGraph,omitempty" yaml:"maxNodesSvcGraph,omitempty"`
+	McastDaemonMemoryLimit               string              `json:"mcastDaemonMemoryLimit,omitempty" yaml:"mcastDaemonMemoryLimit,omitempty"`
+	McastDaemonMemoryRequest             string              `json:"mcastDaemonMemoryRequest,omitempty" yaml:"mcastDaemonMemoryRequest,omitempty"`
+	McastRangeEnd                        string              `json:"mcastRangeEnd,omitempty" yaml:"mcastRangeEnd,omitempty"`
+	McastRangeStart                      string              `json:"mcastRangeStart,omitempty" yaml:"mcastRangeStart,omitempty"`
+	MultusDisable                        string              `json:"multusDisable,omitempty" yaml:"multusDisable,omitempty"`
+	NoPriorityClass                      string              `json:"noPriorityClass,omitempty" yaml:"noPriorityClass,omitempty"`
+	NoWaitForServiceEpReadiness          string              `json:"noWaitForServiceEpReadiness,omitempty" yaml:"noWaitForServiceEpReadiness,omitempty"`
+	NodePodIfEnable                      string              `json:"nodePodIfEnable,omitempty" yaml:"nodePodIfEnable,omitempty"`
+	NodeSnatRedirectExclude              []map[string]string `json:"nodeSnatRedirectExclude,omitempty" yaml:"nodeSnatRedirectExclude,omitempty"`
+	NodeSubnet                           string              `json:"nodeSubnet,omitempty" yaml:"nodeSubnet,omitempty"`
+	OVSMemoryLimit                       string              `json:"ovsMemoryLimit,omitempty" yaml:"ovsMemoryLimit,omitempty"`
+	OVSMemoryRequest                     string              `json:"ovsMemoryRequest,omitempty" yaml:"ovsMemoryRequest,omitempty"`
+	OpflexAgentLogLevel                  string              `json:"opflexLogLevel,omitempty" yaml:"opflexLogLevel,omitempty"`
+	OpflexAgentMemoryLimit               string              `json:"opflexAgentMemoryLimit,omitempty" yaml:"opflexAgentMemoryLimit,omitempty"`
+	OpflexAgentMemoryRequest             string              `json:"opflexAgentMemoryRequest,omitempty" yaml:"opflexAgentMemoryRequest,omitempty"`
+	OpflexAgentOpflexAsyncjsonEnabled    string              `json:"opflexAgentOpflexAsyncjsonEnabled,omitempty" yaml:"opflexAgentOpflexAsyncjsonEnabled,omitempty"`
+	OpflexAgentOvsAsyncjsonEnabled       string              `json:"opflexAgentOvsAsyncjsonEnabled,omitempty" yaml:"opflexAgentOvsAsyncjsonEnabled,omitempty"`
+	OpflexAgentPolicyRetryDelayTimer     string              `json:"opflexAgentPolicyRetryDelayTimer,omitempty" yaml:"opflexAgentPolicyRetryDelayTimer,omitempty"`
+	OpflexAgentStatistics                string              `json:"opflexAgentStatistics,omitempty" yaml:"opflexAgentStatistics,omitempty"`
+	OpflexClientSSL                      string              `json:"opflexClientSsl,omitempty" yaml:"opflexClientSsl,omitempty"`
+	OpflexDeviceDeleteTimeout            string              `json:"opflexDeviceDeleteTimeout,omitempty" yaml:"opflexDeviceDeleteTimeout,omitempty"`
+	OpflexDeviceReconnectWaitTimeout     string              `json:"opflexDeviceReconnectWaitTimeout,omitempty" yaml:"opflexDeviceReconnectWaitTimeout,omitempty"`
+	OpflexMode                           string              `json:"opflexMode,omitempty" yaml:"opflexMode,omitempty"`
+	OpflexOpensslCompat                  string              `json:"opflexOpensslCompat,omitempty" yaml:"opflexOpensslCompat,omitempty"`
+	OpflexServerPort                     string              `json:"opflexServerPort,omitempty" yaml:"opflexServerPort,omitempty"`
+	OpflexStartupEnabled                 string              `json:"opflexStartupEnabled,omitempty" yaml:"opflexStartupEnabled,omitempty"`
+	OpflexStartupPolicyDuration          string              `json:"opflexStartupPolicyDuration,omitempty" yaml:"opflexStartupPolicyDuration,omitempty"`
+	OpflexStartupResolveAftConn          string              `json:"opflexStartupResolveAftConn,omitempty" yaml:"opflexStartupResolveAftConn,omitempty"`
+	OpflexSwitchSyncDelay                string              `json:"opflexSwitchSyncDelay,omitempty" yaml:"opflexSwitchSyncDelay,omitempty"`
+	OpflexSwitchSyncDynamic              string              `json:"opflexSwitchSyncDynamic,omitempty" yaml:"opflexSwitchSyncDynamic,omitempty"`
+	OverlayVRFName                       string              `json:"overlayVrfName,omitempty" yaml:"overlayVrfName,omitempty"`
+	PBRTrackingNonSnat                   string              `json:"pbrTrackingNonSnat,omitempty" yaml:"pbrTrackingNonSnat,omitempty"`
+	PodSubnetChunkSize                   string              `json:"podSubnetChunkSize,omitempty" yaml:"podSubnetChunkSize,omitempty"`
+	RunGbpContainer                      string              `json:"runGbpContainer,omitempty" yaml:"runGbpContainer,omitempty"`
+	RunOpflexServerContainer             string              `json:"runOpflexServerContainer,omitempty" yaml:"runOpflexServerContainer,omitempty"`
+	ServiceGraphEndpointAddDelay         string              `json:"serviceGraphEndpointAddDelay,omitempty" yaml:"serviceGraphEndpointAddDelay,omitempty"`
+	ServiceGraphEndpointAddServices      []map[string]string `json:"serviceGraphEndpointAddServices,omitempty" yaml:"serviceGraphEndpointAddServices,omitempty"`
+	ServiceGraphSubnet                   string              `json:"nodeSvcSubnet,omitempty" yaml:"nodeSvcSubnet,omitempty"`
+	ServiceMonitorInterval               string              `json:"serviceMonitorInterval,omitempty" yaml:"serviceMonitorInterval,omitempty"`
+	ServiceVlan                          string              `json:"serviceVlan,omitempty" yaml:"serviceVlan,omitempty"`
+	SleepTimeSnatGlobalInfoSync          string              `json:"sleepTimeSnatGlobalInfoSync,omitempty" yaml:"sleepTimeSnatGlobalInfoSync,omitempty"`
+	SnatContractScope                    string              `json:"snatContractScope,omitempty" yaml:"snatContractScope,omitempty"`
+	SnatNamespace                        string              `json:"snatNamespace,omitempty" yaml:"snatNamespace,omitempty"`
+	SnatPortRangeEnd                     string              `json:"snatPortRangeEnd,omitempty" yaml:"snatPortRangeEnd,omitempty"`
+	SnatPortRangeStart                   string              `json:"snatPortRangeStart,omitempty" yaml:"snatPortRangeStart,omitempty"`
+	SnatPortsPerNode                     string              `json:"snatPortsPerNode,omitempty" yaml:"snatPortsPerNode,omitempty"`
+	SriovEnable                          string              `json:"sriovEnable,omitempty" yaml:"sriovEnable,omitempty"`
+	StaticExternalSubnet                 string              `json:"externStatic,omitempty" yaml:"externStatic,omitempty"`
+	SubnetDomainName                     string              `json:"subnetDomainName,omitempty" yaml:"subnetDomainName,omitempty"`
+	SystemIdentifier                     string              `json:"systemId,omitempty" yaml:"systemId,omitempty"`
+	TaintNotReadyNode                    string              `json:"taintNotReadyNode,omitempty" yaml:"taintNotReadyNode,omitempty"`
+	Tenant                               string              `json:"tenant,omitempty" yaml:"tenant,omitempty"`
+	Token                                string              `json:"token,omitempty" yaml:"token,omitempty"`
+	TolerationSeconds                    string              `json:"tolerationSeconds,omitempty" yaml:"tolerationSeconds,omitempty"`
+	UseAciAnywhereCRD                    string              `json:"useAciAnywhereCrd,omitempty" yaml:"useAciAnywhereCrd,omitempty"`
+	UseAciCniPriorityClass               string              `json:"useAciCniPriorityClass,omitempty" yaml:"useAciCniPriorityClass,omitempty"`
+	UseClusterRole                       string              `json:"useClusterRole,omitempty" yaml:"useClusterRole,omitempty"`
+	UseHostNetnsVolume                   string              `json:"useHostNetnsVolume,omitempty" yaml:"useHostNetnsVolume,omitempty"`
+	UseOpflexServerVolume                string              `json:"useOpflexServerVolume,omitempty" yaml:"useOpflexServerVolume,omitempty"`
+	UsePrivilegedContainer               string              `json:"usePrivilegedContainer,omitempty" yaml:"usePrivilegedContainer,omitempty"`
+	UseSystemNodePriorityClass           string              `json:"useSystemNodePriorityClass,omitempty" yaml:"useSystemNodePriorityClass,omitempty"`
+	VRFName                              string              `json:"vrfName,omitempty" yaml:"vrfName,omitempty"`
+	VRFTenant                            string              `json:"vrfTenant,omitempty" yaml:"vrfTenant,omitempty"`
+	VmmController                        string              `json:"vmmController,omitempty" yaml:"vmmController,omitempty"`
+	VmmDomain                            string              `json:"vmmDomain,omitempty" yaml:"vmmDomain,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_action.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_action.go
new file mode 100644
index 00000000..6e6334bd
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_action.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	ActionType        = "action"
+	ActionFieldInput  = "input"
+	ActionFieldOutput = "output"
+)
+
+type Action struct {
+	Input  string `json:"input,omitempty" yaml:"input,omitempty"`
+	Output string `json:"output,omitempty" yaml:"output,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_active_directory_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_active_directory_config.go
new file mode 100644
index 00000000..51146186
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_active_directory_config.go
@@ -0,0 +1,86 @@
+package client
+
+const (
+	ActiveDirectoryConfigType                              = "activeDirectoryConfig"
+	ActiveDirectoryConfigFieldAccessMode                   = "accessMode"
+	ActiveDirectoryConfigFieldAllowedPrincipalIDs          = "allowedPrincipalIds"
+	ActiveDirectoryConfigFieldAnnotations                  = "annotations"
+	ActiveDirectoryConfigFieldCertificate                  = "certificate"
+	ActiveDirectoryConfigFieldConnectionTimeout            = "connectionTimeout"
+	ActiveDirectoryConfigFieldCreated                      = "created"
+	ActiveDirectoryConfigFieldCreatorID                    = "creatorId"
+	ActiveDirectoryConfigFieldDefaultLoginDomain           = "defaultLoginDomain"
+	ActiveDirectoryConfigFieldEnabled                      = "enabled"
+	ActiveDirectoryConfigFieldGroupDNAttribute             = "groupDNAttribute"
+	ActiveDirectoryConfigFieldGroupMemberMappingAttribute  = "groupMemberMappingAttribute"
+	ActiveDirectoryConfigFieldGroupMemberUserAttribute     = "groupMemberUserAttribute"
+	ActiveDirectoryConfigFieldGroupNameAttribute           = "groupNameAttribute"
+	ActiveDirectoryConfigFieldGroupObjectClass             = "groupObjectClass"
+	ActiveDirectoryConfigFieldGroupSearchAttribute         = "groupSearchAttribute"
+	ActiveDirectoryConfigFieldGroupSearchBase              = "groupSearchBase"
+	ActiveDirectoryConfigFieldGroupSearchFilter            = "groupSearchFilter"
+	ActiveDirectoryConfigFieldLabels                       = "labels"
+	ActiveDirectoryConfigFieldName                         = "name"
+	ActiveDirectoryConfigFieldNestedGroupMembershipEnabled = "nestedGroupMembershipEnabled"
+	ActiveDirectoryConfigFieldOwnerReferences              = "ownerReferences"
+	ActiveDirectoryConfigFieldPort                         = "port"
+	ActiveDirectoryConfigFieldRemoved                      = "removed"
+	ActiveDirectoryConfigFieldServers                      = "servers"
+	ActiveDirectoryConfigFieldServiceAccountPassword       = "serviceAccountPassword"
+	ActiveDirectoryConfigFieldServiceAccountUsername       = "serviceAccountUsername"
+	ActiveDirectoryConfigFieldStartTLS                     = "starttls"
+	ActiveDirectoryConfigFieldStatus                       = "status"
+	ActiveDirectoryConfigFieldTLS                          = "tls"
+	ActiveDirectoryConfigFieldType                         = "type"
+	ActiveDirectoryConfigFieldUUID                         = "uuid"
+	ActiveDirectoryConfigFieldUserDisabledBitMask          = "userDisabledBitMask"
+	ActiveDirectoryConfigFieldUserEnabledAttribute         = "userEnabledAttribute"
+	ActiveDirectoryConfigFieldUserLoginAttribute           = "userLoginAttribute"
+	ActiveDirectoryConfigFieldUserNameAttribute            = "userNameAttribute"
+	ActiveDirectoryConfigFieldUserObjectClass              = "userObjectClass"
+	ActiveDirectoryConfigFieldUserSearchAttribute          = "userSearchAttribute"
+	ActiveDirectoryConfigFieldUserSearchBase               = "userSearchBase"
+	ActiveDirectoryConfigFieldUserSearchFilter             = "userSearchFilter"
+)
+
+type ActiveDirectoryConfig struct {
+	AccessMode                   string            `json:"accessMode,omitempty" yaml:"accessMode,omitempty"`
+	AllowedPrincipalIDs          []string          `json:"allowedPrincipalIds,omitempty" yaml:"allowedPrincipalIds,omitempty"`
+	Annotations                  map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Certificate                  string            `json:"certificate,omitempty" yaml:"certificate,omitempty"`
+	ConnectionTimeout            int64             `json:"connectionTimeout,omitempty" yaml:"connectionTimeout,omitempty"`
+	Created                      string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID                    string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	DefaultLoginDomain           string            `json:"defaultLoginDomain,omitempty" yaml:"defaultLoginDomain,omitempty"`
+	Enabled                      bool              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	GroupDNAttribute             string            `json:"groupDNAttribute,omitempty" yaml:"groupDNAttribute,omitempty"`
+	GroupMemberMappingAttribute  string            `json:"groupMemberMappingAttribute,omitempty" yaml:"groupMemberMappingAttribute,omitempty"`
+	GroupMemberUserAttribute     string            `json:"groupMemberUserAttribute,omitempty" yaml:"groupMemberUserAttribute,omitempty"`
+	GroupNameAttribute           string            `json:"groupNameAttribute,omitempty" yaml:"groupNameAttribute,omitempty"`
+	GroupObjectClass             string            `json:"groupObjectClass,omitempty" yaml:"groupObjectClass,omitempty"`
+	GroupSearchAttribute         string            `json:"groupSearchAttribute,omitempty" yaml:"groupSearchAttribute,omitempty"`
+	GroupSearchBase              string            `json:"groupSearchBase,omitempty" yaml:"groupSearchBase,omitempty"`
+	GroupSearchFilter            string            `json:"groupSearchFilter,omitempty" yaml:"groupSearchFilter,omitempty"`
+	Labels                       map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                         string            `json:"name,omitempty" yaml:"name,omitempty"`
+	NestedGroupMembershipEnabled *bool             `json:"nestedGroupMembershipEnabled,omitempty" yaml:"nestedGroupMembershipEnabled,omitempty"`
+	OwnerReferences              []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Port                         int64             `json:"port,omitempty" yaml:"port,omitempty"`
+	Removed                      string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Servers                      []string          `json:"servers,omitempty" yaml:"servers,omitempty"`
+	ServiceAccountPassword       string            `json:"serviceAccountPassword,omitempty" yaml:"serviceAccountPassword,omitempty"`
+	ServiceAccountUsername       string            `json:"serviceAccountUsername,omitempty" yaml:"serviceAccountUsername,omitempty"`
+	StartTLS                     bool              `json:"starttls,omitempty" yaml:"starttls,omitempty"`
+	Status                       *AuthConfigStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	TLS                          bool              `json:"tls,omitempty" yaml:"tls,omitempty"`
+	Type                         string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UUID                         string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserDisabledBitMask          int64             `json:"userDisabledBitMask,omitempty" yaml:"userDisabledBitMask,omitempty"`
+	UserEnabledAttribute         string            `json:"userEnabledAttribute,omitempty" yaml:"userEnabledAttribute,omitempty"`
+	UserLoginAttribute           string            `json:"userLoginAttribute,omitempty" yaml:"userLoginAttribute,omitempty"`
+	UserNameAttribute            string            `json:"userNameAttribute,omitempty" yaml:"userNameAttribute,omitempty"`
+	UserObjectClass              string            `json:"userObjectClass,omitempty" yaml:"userObjectClass,omitempty"`
+	UserSearchAttribute          string            `json:"userSearchAttribute,omitempty" yaml:"userSearchAttribute,omitempty"`
+	UserSearchBase               string            `json:"userSearchBase,omitempty" yaml:"userSearchBase,omitempty"`
+	UserSearchFilter             string            `json:"userSearchFilter,omitempty" yaml:"userSearchFilter,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_active_directory_test_and_apply_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_active_directory_test_and_apply_input.go
new file mode 100644
index 00000000..3055af4f
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_active_directory_test_and_apply_input.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	ActiveDirectoryTestAndApplyInputType                       = "activeDirectoryTestAndApplyInput"
+	ActiveDirectoryTestAndApplyInputFieldActiveDirectoryConfig = "activeDirectoryConfig"
+	ActiveDirectoryTestAndApplyInputFieldEnabled               = "enabled"
+	ActiveDirectoryTestAndApplyInputFieldPassword              = "password"
+	ActiveDirectoryTestAndApplyInputFieldUsername              = "username"
+)
+
+type ActiveDirectoryTestAndApplyInput struct {
+	ActiveDirectoryConfig *ActiveDirectoryConfig `json:"activeDirectoryConfig,omitempty" yaml:"activeDirectoryConfig,omitempty"`
+	Enabled               bool                   `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	Password              string                 `json:"password,omitempty" yaml:"password,omitempty"`
+	Username              string                 `json:"username,omitempty" yaml:"username,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_adfs_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_adfs_config.go
new file mode 100644
index 00000000..5170ec83
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_adfs_config.go
@@ -0,0 +1,52 @@
+package client
+
+const (
+	ADFSConfigType                     = "adfsConfig"
+	ADFSConfigFieldAccessMode          = "accessMode"
+	ADFSConfigFieldAllowedPrincipalIDs = "allowedPrincipalIds"
+	ADFSConfigFieldAnnotations         = "annotations"
+	ADFSConfigFieldCreated             = "created"
+	ADFSConfigFieldCreatorID           = "creatorId"
+	ADFSConfigFieldDisplayNameField    = "displayNameField"
+	ADFSConfigFieldEnabled             = "enabled"
+	ADFSConfigFieldEntityID            = "entityID"
+	ADFSConfigFieldGroupsField         = "groupsField"
+	ADFSConfigFieldIDPMetadataContent  = "idpMetadataContent"
+	ADFSConfigFieldLabels              = "labels"
+	ADFSConfigFieldName                = "name"
+	ADFSConfigFieldOwnerReferences     = "ownerReferences"
+	ADFSConfigFieldRancherAPIHost      = "rancherApiHost"
+	ADFSConfigFieldRemoved             = "removed"
+	ADFSConfigFieldSpCert              = "spCert"
+	ADFSConfigFieldSpKey               = "spKey"
+	ADFSConfigFieldStatus              = "status"
+	ADFSConfigFieldType                = "type"
+	ADFSConfigFieldUIDField            = "uidField"
+	ADFSConfigFieldUUID                = "uuid"
+	ADFSConfigFieldUserNameField       = "userNameField"
+)
+
+type ADFSConfig struct {
+	AccessMode          string            `json:"accessMode,omitempty" yaml:"accessMode,omitempty"`
+	AllowedPrincipalIDs []string          `json:"allowedPrincipalIds,omitempty" yaml:"allowedPrincipalIds,omitempty"`
+	Annotations         map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created             string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID           string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	DisplayNameField    string            `json:"displayNameField,omitempty" yaml:"displayNameField,omitempty"`
+	Enabled             bool              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	EntityID            string            `json:"entityID,omitempty" yaml:"entityID,omitempty"`
+	GroupsField         string            `json:"groupsField,omitempty" yaml:"groupsField,omitempty"`
+	IDPMetadataContent  string            `json:"idpMetadataContent,omitempty" yaml:"idpMetadataContent,omitempty"`
+	Labels              map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences     []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	RancherAPIHost      string            `json:"rancherApiHost,omitempty" yaml:"rancherApiHost,omitempty"`
+	Removed             string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	SpCert              string            `json:"spCert,omitempty" yaml:"spCert,omitempty"`
+	SpKey               string            `json:"spKey,omitempty" yaml:"spKey,omitempty"`
+	Status              *AuthConfigStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	Type                string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UIDField            string            `json:"uidField,omitempty" yaml:"uidField,omitempty"`
+	UUID                string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserNameField       string            `json:"userNameField,omitempty" yaml:"userNameField,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aes_configuration.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aes_configuration.go
new file mode 100644
index 00000000..21732a17
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aes_configuration.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	AESConfigurationType      = "aesConfiguration"
+	AESConfigurationFieldKeys = "keys"
+)
+
+type AESConfiguration struct {
+	Keys []Key `json:"keys,omitempty" yaml:"keys,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_affinity.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_affinity.go
new file mode 100644
index 00000000..0489c3d6
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_affinity.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	AffinityType                 = "affinity"
+	AffinityFieldNodeAffinity    = "nodeAffinity"
+	AffinityFieldPodAffinity     = "podAffinity"
+	AffinityFieldPodAntiAffinity = "podAntiAffinity"
+)
+
+type Affinity struct {
+	NodeAffinity    *NodeAffinity    `json:"nodeAffinity,omitempty" yaml:"nodeAffinity,omitempty"`
+	PodAffinity     *PodAffinity     `json:"podAffinity,omitempty" yaml:"podAffinity,omitempty"`
+	PodAntiAffinity *PodAntiAffinity `json:"podAntiAffinity,omitempty" yaml:"podAntiAffinity,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_agent_deployment_customization.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_agent_deployment_customization.go
new file mode 100644
index 00000000..841e6e13
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_agent_deployment_customization.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	AgentDeploymentCustomizationType                              = "agentDeploymentCustomization"
+	AgentDeploymentCustomizationFieldAppendTolerations            = "appendTolerations"
+	AgentDeploymentCustomizationFieldOverrideAffinity             = "overrideAffinity"
+	AgentDeploymentCustomizationFieldOverrideResourceRequirements = "overrideResourceRequirements"
+)
+
+type AgentDeploymentCustomization struct {
+	AppendTolerations            []Toleration          `json:"appendTolerations,omitempty" yaml:"appendTolerations,omitempty"`
+	OverrideAffinity             *Affinity             `json:"overrideAffinity,omitempty" yaml:"overrideAffinity,omitempty"`
+	OverrideResourceRequirements *ResourceRequirements `json:"overrideResourceRequirements,omitempty" yaml:"overrideResourceRequirements,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aks_cluster_config_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aks_cluster_config_spec.go
new file mode 100644
index 00000000..d6caad1a
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aks_cluster_config_spec.go
@@ -0,0 +1,76 @@
+package client
+
+const (
+	AKSClusterConfigSpecType                             = "aksClusterConfigSpec"
+	AKSClusterConfigSpecFieldAuthBaseURL                 = "authBaseUrl"
+	AKSClusterConfigSpecFieldAuthorizedIPRanges          = "authorizedIpRanges"
+	AKSClusterConfigSpecFieldAzureCredentialSecret       = "azureCredentialSecret"
+	AKSClusterConfigSpecFieldBaseURL                     = "baseUrl"
+	AKSClusterConfigSpecFieldClusterName                 = "clusterName"
+	AKSClusterConfigSpecFieldDNSPrefix                   = "dnsPrefix"
+	AKSClusterConfigSpecFieldHTTPApplicationRouting      = "httpApplicationRouting"
+	AKSClusterConfigSpecFieldImported                    = "imported"
+	AKSClusterConfigSpecFieldKubernetesVersion           = "kubernetesVersion"
+	AKSClusterConfigSpecFieldLinuxAdminUsername          = "linuxAdminUsername"
+	AKSClusterConfigSpecFieldLinuxSSHPublicKey           = "sshPublicKey"
+	AKSClusterConfigSpecFieldLoadBalancerSKU             = "loadBalancerSku"
+	AKSClusterConfigSpecFieldLogAnalyticsWorkspaceGroup  = "logAnalyticsWorkspaceGroup"
+	AKSClusterConfigSpecFieldLogAnalyticsWorkspaceName   = "logAnalyticsWorkspaceName"
+	AKSClusterConfigSpecFieldManagedIdentity             = "managedIdentity"
+	AKSClusterConfigSpecFieldMonitoring                  = "monitoring"
+	AKSClusterConfigSpecFieldNetworkDNSServiceIP         = "dnsServiceIp"
+	AKSClusterConfigSpecFieldNetworkDockerBridgeCIDR     = "dockerBridgeCidr"
+	AKSClusterConfigSpecFieldNetworkPlugin               = "networkPlugin"
+	AKSClusterConfigSpecFieldNetworkPodCIDR              = "podCidr"
+	AKSClusterConfigSpecFieldNetworkPolicy               = "networkPolicy"
+	AKSClusterConfigSpecFieldNetworkServiceCIDR          = "serviceCidr"
+	AKSClusterConfigSpecFieldNodePools                   = "nodePools"
+	AKSClusterConfigSpecFieldNodeResourceGroup           = "nodeResourceGroup"
+	AKSClusterConfigSpecFieldOutboundType                = "outboundType"
+	AKSClusterConfigSpecFieldPrivateCluster              = "privateCluster"
+	AKSClusterConfigSpecFieldPrivateDNSZone              = "privateDnsZone"
+	AKSClusterConfigSpecFieldResourceGroup               = "resourceGroup"
+	AKSClusterConfigSpecFieldResourceLocation            = "resourceLocation"
+	AKSClusterConfigSpecFieldSubnet                      = "subnet"
+	AKSClusterConfigSpecFieldTags                        = "tags"
+	AKSClusterConfigSpecFieldUserAssignedIdentity        = "userAssignedIdentity"
+	AKSClusterConfigSpecFieldVirtualNetwork              = "virtualNetwork"
+	AKSClusterConfigSpecFieldVirtualNetworkResourceGroup = "virtualNetworkResourceGroup"
+)
+
+type AKSClusterConfigSpec struct {
+	AuthBaseURL                 *string           `json:"authBaseUrl,omitempty" yaml:"authBaseUrl,omitempty"`
+	AuthorizedIPRanges          *[]string         `json:"authorizedIpRanges,omitempty" yaml:"authorizedIpRanges,omitempty"`
+	AzureCredentialSecret       string            `json:"azureCredentialSecret,omitempty" yaml:"azureCredentialSecret,omitempty"`
+	BaseURL                     *string           `json:"baseUrl,omitempty" yaml:"baseUrl,omitempty"`
+	ClusterName                 string            `json:"clusterName,omitempty" yaml:"clusterName,omitempty"`
+	DNSPrefix                   *string           `json:"dnsPrefix,omitempty" yaml:"dnsPrefix,omitempty"`
+	HTTPApplicationRouting      *bool             `json:"httpApplicationRouting,omitempty" yaml:"httpApplicationRouting,omitempty"`
+	Imported                    bool              `json:"imported,omitempty" yaml:"imported,omitempty"`
+	KubernetesVersion           *string           `json:"kubernetesVersion,omitempty" yaml:"kubernetesVersion,omitempty"`
+	LinuxAdminUsername          *string           `json:"linuxAdminUsername,omitempty" yaml:"linuxAdminUsername,omitempty"`
+	LinuxSSHPublicKey           *string           `json:"sshPublicKey,omitempty" yaml:"sshPublicKey,omitempty"`
+	LoadBalancerSKU             *string           `json:"loadBalancerSku,omitempty" yaml:"loadBalancerSku,omitempty"`
+	LogAnalyticsWorkspaceGroup  *string           `json:"logAnalyticsWorkspaceGroup,omitempty" yaml:"logAnalyticsWorkspaceGroup,omitempty"`
+	LogAnalyticsWorkspaceName   *string           `json:"logAnalyticsWorkspaceName,omitempty" yaml:"logAnalyticsWorkspaceName,omitempty"`
+	ManagedIdentity             **bool            `json:"managedIdentity,omitempty" yaml:"managedIdentity,omitempty"`
+	Monitoring                  *bool             `json:"monitoring,omitempty" yaml:"monitoring,omitempty"`
+	NetworkDNSServiceIP         *string           `json:"dnsServiceIp,omitempty" yaml:"dnsServiceIp,omitempty"`
+	NetworkDockerBridgeCIDR     *string           `json:"dockerBridgeCidr,omitempty" yaml:"dockerBridgeCidr,omitempty"`
+	NetworkPlugin               *string           `json:"networkPlugin,omitempty" yaml:"networkPlugin,omitempty"`
+	NetworkPodCIDR              *string           `json:"podCidr,omitempty" yaml:"podCidr,omitempty"`
+	NetworkPolicy               *string           `json:"networkPolicy,omitempty" yaml:"networkPolicy,omitempty"`
+	NetworkServiceCIDR          *string           `json:"serviceCidr,omitempty" yaml:"serviceCidr,omitempty"`
+	NodePools                   []AKSNodePool     `json:"nodePools,omitempty" yaml:"nodePools,omitempty"`
+	NodeResourceGroup           *string           `json:"nodeResourceGroup,omitempty" yaml:"nodeResourceGroup,omitempty"`
+	OutboundType                *string           `json:"outboundType,omitempty" yaml:"outboundType,omitempty"`
+	PrivateCluster              *bool             `json:"privateCluster,omitempty" yaml:"privateCluster,omitempty"`
+	PrivateDNSZone              *string           `json:"privateDnsZone,omitempty" yaml:"privateDnsZone,omitempty"`
+	ResourceGroup               string            `json:"resourceGroup,omitempty" yaml:"resourceGroup,omitempty"`
+	ResourceLocation            string            `json:"resourceLocation,omitempty" yaml:"resourceLocation,omitempty"`
+	Subnet                      *string           `json:"subnet,omitempty" yaml:"subnet,omitempty"`
+	Tags                        map[string]string `json:"tags,omitempty" yaml:"tags,omitempty"`
+	UserAssignedIdentity        *string           `json:"userAssignedIdentity,omitempty" yaml:"userAssignedIdentity,omitempty"`
+	VirtualNetwork              *string           `json:"virtualNetwork,omitempty" yaml:"virtualNetwork,omitempty"`
+	VirtualNetworkResourceGroup *string           `json:"virtualNetworkResourceGroup,omitempty" yaml:"virtualNetworkResourceGroup,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aks_node_pool.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aks_node_pool.go
new file mode 100644
index 00000000..43e5721c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aks_node_pool.go
@@ -0,0 +1,42 @@
+package client
+
+const (
+	AKSNodePoolType                     = "aksNodePool"
+	AKSNodePoolFieldAvailabilityZones   = "availabilityZones"
+	AKSNodePoolFieldCount               = "count"
+	AKSNodePoolFieldEnableAutoScaling   = "enableAutoScaling"
+	AKSNodePoolFieldMaxCount            = "maxCount"
+	AKSNodePoolFieldMaxPods             = "maxPods"
+	AKSNodePoolFieldMaxSurge            = "maxSurge"
+	AKSNodePoolFieldMinCount            = "minCount"
+	AKSNodePoolFieldMode                = "mode"
+	AKSNodePoolFieldName                = "name"
+	AKSNodePoolFieldNodeLabels          = "nodeLabels"
+	AKSNodePoolFieldNodeTaints          = "nodeTaints"
+	AKSNodePoolFieldOrchestratorVersion = "orchestratorVersion"
+	AKSNodePoolFieldOsDiskSizeGB        = "osDiskSizeGB"
+	AKSNodePoolFieldOsDiskType          = "osDiskType"
+	AKSNodePoolFieldOsType              = "osType"
+	AKSNodePoolFieldVMSize              = "vmSize"
+	AKSNodePoolFieldVnetSubnetID        = "vnetSubnetID"
+)
+
+type AKSNodePool struct {
+	AvailabilityZones   *[]string         `json:"availabilityZones,omitempty" yaml:"availabilityZones,omitempty"`
+	Count               *int64            `json:"count,omitempty" yaml:"count,omitempty"`
+	EnableAutoScaling   *bool             `json:"enableAutoScaling,omitempty" yaml:"enableAutoScaling,omitempty"`
+	MaxCount            *int64            `json:"maxCount,omitempty" yaml:"maxCount,omitempty"`
+	MaxPods             *int64            `json:"maxPods,omitempty" yaml:"maxPods,omitempty"`
+	MaxSurge            string            `json:"maxSurge,omitempty" yaml:"maxSurge,omitempty"`
+	MinCount            *int64            `json:"minCount,omitempty" yaml:"minCount,omitempty"`
+	Mode                string            `json:"mode,omitempty" yaml:"mode,omitempty"`
+	Name                *string           `json:"name,omitempty" yaml:"name,omitempty"`
+	NodeLabels          map[string]string `json:"nodeLabels,omitempty" yaml:"nodeLabels,omitempty"`
+	NodeTaints          []string          `json:"nodeTaints,omitempty" yaml:"nodeTaints,omitempty"`
+	OrchestratorVersion *string           `json:"orchestratorVersion,omitempty" yaml:"orchestratorVersion,omitempty"`
+	OsDiskSizeGB        *int64            `json:"osDiskSizeGB,omitempty" yaml:"osDiskSizeGB,omitempty"`
+	OsDiskType          string            `json:"osDiskType,omitempty" yaml:"osDiskType,omitempty"`
+	OsType              string            `json:"osType,omitempty" yaml:"osType,omitempty"`
+	VMSize              string            `json:"vmSize,omitempty" yaml:"vmSize,omitempty"`
+	VnetSubnetID        *string           `json:"vnetSubnetID,omitempty" yaml:"vnetSubnetID,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aks_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aks_status.go
new file mode 100644
index 00000000..91074c03
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aks_status.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	AKSStatusType                       = "aksStatus"
+	AKSStatusFieldPrivateRequiresTunnel = "privateRequiresTunnel"
+	AKSStatusFieldRBACEnabled           = "rbacEnabled"
+	AKSStatusFieldUpstreamSpec          = "upstreamSpec"
+)
+
+type AKSStatus struct {
+	PrivateRequiresTunnel *bool                 `json:"privateRequiresTunnel,omitempty" yaml:"privateRequiresTunnel,omitempty"`
+	RBACEnabled           *bool                 `json:"rbacEnabled,omitempty" yaml:"rbacEnabled,omitempty"`
+	UpstreamSpec          *AKSClusterConfigSpec `json:"upstreamSpec,omitempty" yaml:"upstreamSpec,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_alidns_provider_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_alidns_provider_config.go
new file mode 100644
index 00000000..a58df2ca
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_alidns_provider_config.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	AlidnsProviderConfigType                   = "alidnsProviderConfig"
+	AlidnsProviderConfigFieldAccessKey         = "accessKey"
+	AlidnsProviderConfigFieldAdditionalOptions = "additionalOptions"
+	AlidnsProviderConfigFieldSecretKey         = "secretKey"
+)
+
+type AlidnsProviderConfig struct {
+	AccessKey         string            `json:"accessKey,omitempty" yaml:"accessKey,omitempty"`
+	AdditionalOptions map[string]string `json:"additionalOptions,omitempty" yaml:"additionalOptions,omitempty"`
+	SecretKey         string            `json:"secretKey,omitempty" yaml:"secretKey,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_answer.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_answer.go
new file mode 100644
index 00000000..d79e0c9e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_answer.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	AnswerType                 = "answer"
+	AnswerFieldClusterID       = "clusterId"
+	AnswerFieldProjectID       = "projectId"
+	AnswerFieldValues          = "values"
+	AnswerFieldValuesSetString = "valuesSetString"
+)
+
+type Answer struct {
+	ClusterID       string            `json:"clusterId,omitempty" yaml:"clusterId,omitempty"`
+	ProjectID       string            `json:"projectId,omitempty" yaml:"projectId,omitempty"`
+	Values          map[string]string `json:"values,omitempty" yaml:"values,omitempty"`
+	ValuesSetString map[string]string `json:"valuesSetString,omitempty" yaml:"valuesSetString,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_app_condition.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_app_condition.go
new file mode 100644
index 00000000..9d633aee
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_app_condition.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	AppConditionType                    = "appCondition"
+	AppConditionFieldLastTransitionTime = "lastTransitionTime"
+	AppConditionFieldLastUpdateTime     = "lastUpdateTime"
+	AppConditionFieldMessage            = "message"
+	AppConditionFieldReason             = "reason"
+	AppConditionFieldStatus             = "status"
+	AppConditionFieldType               = "type"
+)
+
+type AppCondition struct {
+	LastTransitionTime string `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty"`
+	LastUpdateTime     string `json:"lastUpdateTime,omitempty" yaml:"lastUpdateTime,omitempty"`
+	Message            string `json:"message,omitempty" yaml:"message,omitempty"`
+	Reason             string `json:"reason,omitempty" yaml:"reason,omitempty"`
+	Status             string `json:"status,omitempty" yaml:"status,omitempty"`
+	Type               string `json:"type,omitempty" yaml:"type,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_attached_volume.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_attached_volume.go
new file mode 100644
index 00000000..c3bbe0e6
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_attached_volume.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	AttachedVolumeType      = "attachedVolume"
+	AttachedVolumeFieldName = "name"
+)
+
+type AttachedVolume struct {
+	Name string `json:"name,omitempty" yaml:"name,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_audit_log.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_audit_log.go
new file mode 100644
index 00000000..7d605ca8
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_audit_log.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	AuditLogType               = "auditLog"
+	AuditLogFieldConfiguration = "configuration"
+	AuditLogFieldEnabled       = "enabled"
+)
+
+type AuditLog struct {
+	Configuration *AuditLogConfig `json:"configuration,omitempty" yaml:"configuration,omitempty"`
+	Enabled       bool            `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_audit_log_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_audit_log_config.go
new file mode 100644
index 00000000..d1d82897
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_audit_log_config.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	AuditLogConfigType           = "auditLogConfig"
+	AuditLogConfigFieldFormat    = "format"
+	AuditLogConfigFieldMaxAge    = "maxAge"
+	AuditLogConfigFieldMaxBackup = "maxBackup"
+	AuditLogConfigFieldMaxSize   = "maxSize"
+	AuditLogConfigFieldPath      = "path"
+	AuditLogConfigFieldPolicy    = "policy"
+)
+
+type AuditLogConfig struct {
+	Format    string                 `json:"format,omitempty" yaml:"format,omitempty"`
+	MaxAge    int64                  `json:"maxAge,omitempty" yaml:"maxAge,omitempty"`
+	MaxBackup int64                  `json:"maxBackup,omitempty" yaml:"maxBackup,omitempty"`
+	MaxSize   int64                  `json:"maxSize,omitempty" yaml:"maxSize,omitempty"`
+	Path      string                 `json:"path,omitempty" yaml:"path,omitempty"`
+	Policy    map[string]interface{} `json:"policy,omitempty" yaml:"policy,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_auth_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_auth_config.go
new file mode 100644
index 00000000..ac6c47bb
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_auth_config.go
@@ -0,0 +1,128 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	AuthConfigType                     = "authConfig"
+	AuthConfigFieldAccessMode          = "accessMode"
+	AuthConfigFieldAllowedPrincipalIDs = "allowedPrincipalIds"
+	AuthConfigFieldAnnotations         = "annotations"
+	AuthConfigFieldCreated             = "created"
+	AuthConfigFieldCreatorID           = "creatorId"
+	AuthConfigFieldEnabled             = "enabled"
+	AuthConfigFieldLabels              = "labels"
+	AuthConfigFieldName                = "name"
+	AuthConfigFieldOwnerReferences     = "ownerReferences"
+	AuthConfigFieldRemoved             = "removed"
+	AuthConfigFieldStatus              = "status"
+	AuthConfigFieldType                = "type"
+	AuthConfigFieldUUID                = "uuid"
+)
+
+type AuthConfig struct {
+	types.Resource
+	AccessMode          string            `json:"accessMode,omitempty" yaml:"accessMode,omitempty"`
+	AllowedPrincipalIDs []string          `json:"allowedPrincipalIds,omitempty" yaml:"allowedPrincipalIds,omitempty"`
+	Annotations         map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created             string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID           string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Enabled             bool              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	Labels              map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences     []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed             string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Status              *AuthConfigStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	Type                string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UUID                string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type AuthConfigCollection struct {
+	types.Collection
+	Data   []AuthConfig `json:"data,omitempty"`
+	client *AuthConfigClient
+}
+
+type AuthConfigClient struct {
+	apiClient *Client
+}
+
+type AuthConfigOperations interface {
+	List(opts *types.ListOpts) (*AuthConfigCollection, error)
+	ListAll(opts *types.ListOpts) (*AuthConfigCollection, error)
+	Create(opts *AuthConfig) (*AuthConfig, error)
+	Update(existing *AuthConfig, updates interface{}) (*AuthConfig, error)
+	Replace(existing *AuthConfig) (*AuthConfig, error)
+	ByID(id string) (*AuthConfig, error)
+	Delete(container *AuthConfig) error
+}
+
+func newAuthConfigClient(apiClient *Client) *AuthConfigClient {
+	return &AuthConfigClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *AuthConfigClient) Create(container *AuthConfig) (*AuthConfig, error) {
+	resp := &AuthConfig{}
+	err := c.apiClient.Ops.DoCreate(AuthConfigType, container, resp)
+	return resp, err
+}
+
+func (c *AuthConfigClient) Update(existing *AuthConfig, updates interface{}) (*AuthConfig, error) {
+	resp := &AuthConfig{}
+	err := c.apiClient.Ops.DoUpdate(AuthConfigType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *AuthConfigClient) Replace(obj *AuthConfig) (*AuthConfig, error) {
+	resp := &AuthConfig{}
+	err := c.apiClient.Ops.DoReplace(AuthConfigType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *AuthConfigClient) List(opts *types.ListOpts) (*AuthConfigCollection, error) {
+	resp := &AuthConfigCollection{}
+	err := c.apiClient.Ops.DoList(AuthConfigType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *AuthConfigClient) ListAll(opts *types.ListOpts) (*AuthConfigCollection, error) {
+	resp := &AuthConfigCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *AuthConfigCollection) Next() (*AuthConfigCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &AuthConfigCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *AuthConfigClient) ByID(id string) (*AuthConfig, error) {
+	resp := &AuthConfig{}
+	err := c.apiClient.Ops.DoByID(AuthConfigType, id, resp)
+	return resp, err
+}
+
+func (c *AuthConfigClient) Delete(container *AuthConfig) error {
+	return c.apiClient.Ops.DoResourceDelete(AuthConfigType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_auth_config_conditions.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_auth_config_conditions.go
new file mode 100644
index 00000000..bf92ef01
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_auth_config_conditions.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	AuthConfigConditionsType                    = "authConfigConditions"
+	AuthConfigConditionsFieldLastTransitionTime = "lastTransitionTime"
+	AuthConfigConditionsFieldLastUpdateTime     = "lastUpdateTime"
+	AuthConfigConditionsFieldMessage            = "message"
+	AuthConfigConditionsFieldReason             = "reason"
+	AuthConfigConditionsFieldStatus             = "status"
+	AuthConfigConditionsFieldType               = "type"
+)
+
+type AuthConfigConditions struct {
+	LastTransitionTime string `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty"`
+	LastUpdateTime     string `json:"lastUpdateTime,omitempty" yaml:"lastUpdateTime,omitempty"`
+	Message            string `json:"message,omitempty" yaml:"message,omitempty"`
+	Reason             string `json:"reason,omitempty" yaml:"reason,omitempty"`
+	Status             string `json:"status,omitempty" yaml:"status,omitempty"`
+	Type               string `json:"type,omitempty" yaml:"type,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_auth_config_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_auth_config_status.go
new file mode 100644
index 00000000..e92cbec7
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_auth_config_status.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	AuthConfigStatusType            = "authConfigStatus"
+	AuthConfigStatusFieldConditions = "conditions"
+)
+
+type AuthConfigStatus struct {
+	Conditions []AuthConfigConditions `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_auth_webhook_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_auth_webhook_config.go
new file mode 100644
index 00000000..b9bbc1a8
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_auth_webhook_config.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	AuthWebhookConfigType              = "authWebhookConfig"
+	AuthWebhookConfigFieldCacheTimeout = "cacheTimeout"
+	AuthWebhookConfigFieldConfigFile   = "configFile"
+)
+
+type AuthWebhookConfig struct {
+	CacheTimeout string `json:"cacheTimeout,omitempty" yaml:"cacheTimeout,omitempty"`
+	ConfigFile   string `json:"configFile,omitempty" yaml:"configFile,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_authn_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_authn_config.go
new file mode 100644
index 00000000..e740e619
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_authn_config.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	AuthnConfigType          = "authnConfig"
+	AuthnConfigFieldSANs     = "sans"
+	AuthnConfigFieldStrategy = "strategy"
+	AuthnConfigFieldWebhook  = "webhook"
+)
+
+type AuthnConfig struct {
+	SANs     []string           `json:"sans,omitempty" yaml:"sans,omitempty"`
+	Strategy string             `json:"strategy,omitempty" yaml:"strategy,omitempty"`
+	Webhook  *AuthWebhookConfig `json:"webhook,omitempty" yaml:"webhook,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_authz_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_authz_config.go
new file mode 100644
index 00000000..ee491dcd
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_authz_config.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	AuthzConfigType         = "authzConfig"
+	AuthzConfigFieldMode    = "mode"
+	AuthzConfigFieldOptions = "options"
+)
+
+type AuthzConfig struct {
+	Mode    string            `json:"mode,omitempty" yaml:"mode,omitempty"`
+	Options map[string]string `json:"options,omitempty" yaml:"options,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aws_cloud_provider.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aws_cloud_provider.go
new file mode 100644
index 00000000..bb1ebd01
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aws_cloud_provider.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	AWSCloudProviderType                 = "awsCloudProvider"
+	AWSCloudProviderFieldGlobal          = "global"
+	AWSCloudProviderFieldServiceOverride = "serviceOverride"
+)
+
+type AWSCloudProvider struct {
+	Global          *GlobalAwsOpts             `json:"global,omitempty" yaml:"global,omitempty"`
+	ServiceOverride map[string]ServiceOverride `json:"serviceOverride,omitempty" yaml:"serviceOverride,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aws_elastic_block_store_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aws_elastic_block_store_volume_source.go
new file mode 100644
index 00000000..5765e83e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_aws_elastic_block_store_volume_source.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	AWSElasticBlockStoreVolumeSourceType           = "awsElasticBlockStoreVolumeSource"
+	AWSElasticBlockStoreVolumeSourceFieldFSType    = "fsType"
+	AWSElasticBlockStoreVolumeSourceFieldPartition = "partition"
+	AWSElasticBlockStoreVolumeSourceFieldReadOnly  = "readOnly"
+	AWSElasticBlockStoreVolumeSourceFieldVolumeID  = "volumeID"
+)
+
+type AWSElasticBlockStoreVolumeSource struct {
+	FSType    string `json:"fsType,omitempty" yaml:"fsType,omitempty"`
+	Partition int64  `json:"partition,omitempty" yaml:"partition,omitempty"`
+	ReadOnly  bool   `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+	VolumeID  string `json:"volumeID,omitempty" yaml:"volumeID,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_adconfig.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_adconfig.go
new file mode 100644
index 00000000..4de1b3f6
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_adconfig.go
@@ -0,0 +1,54 @@
+package client
+
+const (
+	AzureADConfigType                       = "azureADConfig"
+	AzureADConfigFieldAccessMode            = "accessMode"
+	AzureADConfigFieldAllowedPrincipalIDs   = "allowedPrincipalIds"
+	AzureADConfigFieldAnnotations           = "annotations"
+	AzureADConfigFieldApplicationID         = "applicationId"
+	AzureADConfigFieldApplicationSecret     = "applicationSecret"
+	AzureADConfigFieldAuthEndpoint          = "authEndpoint"
+	AzureADConfigFieldCreated               = "created"
+	AzureADConfigFieldCreatorID             = "creatorId"
+	AzureADConfigFieldDeviceAuthEndpoint    = "deviceAuthEndpoint"
+	AzureADConfigFieldEnabled               = "enabled"
+	AzureADConfigFieldEndpoint              = "endpoint"
+	AzureADConfigFieldGraphEndpoint         = "graphEndpoint"
+	AzureADConfigFieldGroupMembershipFilter = "groupMembershipFilter"
+	AzureADConfigFieldLabels                = "labels"
+	AzureADConfigFieldName                  = "name"
+	AzureADConfigFieldOwnerReferences       = "ownerReferences"
+	AzureADConfigFieldRancherURL            = "rancherUrl"
+	AzureADConfigFieldRemoved               = "removed"
+	AzureADConfigFieldStatus                = "status"
+	AzureADConfigFieldTenantID              = "tenantId"
+	AzureADConfigFieldTokenEndpoint         = "tokenEndpoint"
+	AzureADConfigFieldType                  = "type"
+	AzureADConfigFieldUUID                  = "uuid"
+)
+
+type AzureADConfig struct {
+	AccessMode            string            `json:"accessMode,omitempty" yaml:"accessMode,omitempty"`
+	AllowedPrincipalIDs   []string          `json:"allowedPrincipalIds,omitempty" yaml:"allowedPrincipalIds,omitempty"`
+	Annotations           map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	ApplicationID         string            `json:"applicationId,omitempty" yaml:"applicationId,omitempty"`
+	ApplicationSecret     string            `json:"applicationSecret,omitempty" yaml:"applicationSecret,omitempty"`
+	AuthEndpoint          string            `json:"authEndpoint,omitempty" yaml:"authEndpoint,omitempty"`
+	Created               string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID             string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	DeviceAuthEndpoint    string            `json:"deviceAuthEndpoint,omitempty" yaml:"deviceAuthEndpoint,omitempty"`
+	Enabled               bool              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	Endpoint              string            `json:"endpoint,omitempty" yaml:"endpoint,omitempty"`
+	GraphEndpoint         string            `json:"graphEndpoint,omitempty" yaml:"graphEndpoint,omitempty"`
+	GroupMembershipFilter string            `json:"groupMembershipFilter,omitempty" yaml:"groupMembershipFilter,omitempty"`
+	Labels                map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                  string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences       []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	RancherURL            string            `json:"rancherUrl,omitempty" yaml:"rancherUrl,omitempty"`
+	Removed               string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Status                *AuthConfigStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	TenantID              string            `json:"tenantId,omitempty" yaml:"tenantId,omitempty"`
+	TokenEndpoint         string            `json:"tokenEndpoint,omitempty" yaml:"tokenEndpoint,omitempty"`
+	Type                  string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UUID                  string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_adconfig_apply_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_adconfig_apply_input.go
new file mode 100644
index 00000000..a1e5b392
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_adconfig_apply_input.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	AzureADConfigApplyInputType        = "azureADConfigApplyInput"
+	AzureADConfigApplyInputFieldCode   = "code"
+	AzureADConfigApplyInputFieldConfig = "config"
+)
+
+type AzureADConfigApplyInput struct {
+	Code   string         `json:"code,omitempty" yaml:"code,omitempty"`
+	Config *AzureADConfig `json:"config,omitempty" yaml:"config,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_adconfig_test_output.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_adconfig_test_output.go
new file mode 100644
index 00000000..4ce98279
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_adconfig_test_output.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	AzureADConfigTestOutputType             = "azureADConfigTestOutput"
+	AzureADConfigTestOutputFieldRedirectURL = "redirectUrl"
+)
+
+type AzureADConfigTestOutput struct {
+	RedirectURL string `json:"redirectUrl,omitempty" yaml:"redirectUrl,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_cloud_provider.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_cloud_provider.go
new file mode 100644
index 00000000..df355ec2
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_cloud_provider.go
@@ -0,0 +1,74 @@
+package client
+
+const (
+	AzureCloudProviderType                              = "azureCloudProvider"
+	AzureCloudProviderFieldAADClientCertPassword        = "aadClientCertPassword"
+	AzureCloudProviderFieldAADClientCertPath            = "aadClientCertPath"
+	AzureCloudProviderFieldAADClientID                  = "aadClientId"
+	AzureCloudProviderFieldAADClientSecret              = "aadClientSecret"
+	AzureCloudProviderFieldCloud                        = "cloud"
+	AzureCloudProviderFieldCloudProviderBackoff         = "cloudProviderBackoff"
+	AzureCloudProviderFieldCloudProviderBackoffDuration = "cloudProviderBackoffDuration"
+	AzureCloudProviderFieldCloudProviderBackoffExponent = "cloudProviderBackoffExponent"
+	AzureCloudProviderFieldCloudProviderBackoffJitter   = "cloudProviderBackoffJitter"
+	AzureCloudProviderFieldCloudProviderBackoffRetries  = "cloudProviderBackoffRetries"
+	AzureCloudProviderFieldCloudProviderRateLimit       = "cloudProviderRateLimit"
+	AzureCloudProviderFieldCloudProviderRateLimitBucket = "cloudProviderRateLimitBucket"
+	AzureCloudProviderFieldCloudProviderRateLimitQPS    = "cloudProviderRateLimitQPS"
+	AzureCloudProviderFieldExcludeMasterFromStandardLB  = "excludeMasterFromStandardLB"
+	AzureCloudProviderFieldLoadBalancerSku              = "loadBalancerSku"
+	AzureCloudProviderFieldLocation                     = "location"
+	AzureCloudProviderFieldMaximumLoadBalancerRuleCount = "maximumLoadBalancerRuleCount"
+	AzureCloudProviderFieldPrimaryAvailabilitySetName   = "primaryAvailabilitySetName"
+	AzureCloudProviderFieldPrimaryScaleSetName          = "primaryScaleSetName"
+	AzureCloudProviderFieldResourceGroup                = "resourceGroup"
+	AzureCloudProviderFieldRouteTableName               = "routeTableName"
+	AzureCloudProviderFieldSecurityGroupName            = "securityGroupName"
+	AzureCloudProviderFieldSecurityGroupResourceGroup   = "securityGroupResourceGroup"
+	AzureCloudProviderFieldSubnetName                   = "subnetName"
+	AzureCloudProviderFieldSubscriptionID               = "subscriptionId"
+	AzureCloudProviderFieldTags                         = "tags"
+	AzureCloudProviderFieldTenantID                     = "tenantId"
+	AzureCloudProviderFieldUseInstanceMetadata          = "useInstanceMetadata"
+	AzureCloudProviderFieldUseManagedIdentityExtension  = "useManagedIdentityExtension"
+	AzureCloudProviderFieldUserAssignedIdentityID       = "userAssignedIdentityID"
+	AzureCloudProviderFieldVMType                       = "vmType"
+	AzureCloudProviderFieldVnetName                     = "vnetName"
+	AzureCloudProviderFieldVnetResourceGroup            = "vnetResourceGroup"
+)
+
+type AzureCloudProvider struct {
+	AADClientCertPassword        string `json:"aadClientCertPassword,omitempty" yaml:"aadClientCertPassword,omitempty"`
+	AADClientCertPath            string `json:"aadClientCertPath,omitempty" yaml:"aadClientCertPath,omitempty"`
+	AADClientID                  string `json:"aadClientId,omitempty" yaml:"aadClientId,omitempty"`
+	AADClientSecret              string `json:"aadClientSecret,omitempty" yaml:"aadClientSecret,omitempty"`
+	Cloud                        string `json:"cloud,omitempty" yaml:"cloud,omitempty"`
+	CloudProviderBackoff         bool   `json:"cloudProviderBackoff,omitempty" yaml:"cloudProviderBackoff,omitempty"`
+	CloudProviderBackoffDuration int64  `json:"cloudProviderBackoffDuration,omitempty" yaml:"cloudProviderBackoffDuration,omitempty"`
+	CloudProviderBackoffExponent int64  `json:"cloudProviderBackoffExponent,omitempty" yaml:"cloudProviderBackoffExponent,omitempty"`
+	CloudProviderBackoffJitter   int64  `json:"cloudProviderBackoffJitter,omitempty" yaml:"cloudProviderBackoffJitter,omitempty"`
+	CloudProviderBackoffRetries  int64  `json:"cloudProviderBackoffRetries,omitempty" yaml:"cloudProviderBackoffRetries,omitempty"`
+	CloudProviderRateLimit       bool   `json:"cloudProviderRateLimit,omitempty" yaml:"cloudProviderRateLimit,omitempty"`
+	CloudProviderRateLimitBucket int64  `json:"cloudProviderRateLimitBucket,omitempty" yaml:"cloudProviderRateLimitBucket,omitempty"`
+	CloudProviderRateLimitQPS    int64  `json:"cloudProviderRateLimitQPS,omitempty" yaml:"cloudProviderRateLimitQPS,omitempty"`
+	ExcludeMasterFromStandardLB  *bool  `json:"excludeMasterFromStandardLB,omitempty" yaml:"excludeMasterFromStandardLB,omitempty"`
+	LoadBalancerSku              string `json:"loadBalancerSku,omitempty" yaml:"loadBalancerSku,omitempty"`
+	Location                     string `json:"location,omitempty" yaml:"location,omitempty"`
+	MaximumLoadBalancerRuleCount int64  `json:"maximumLoadBalancerRuleCount,omitempty" yaml:"maximumLoadBalancerRuleCount,omitempty"`
+	PrimaryAvailabilitySetName   string `json:"primaryAvailabilitySetName,omitempty" yaml:"primaryAvailabilitySetName,omitempty"`
+	PrimaryScaleSetName          string `json:"primaryScaleSetName,omitempty" yaml:"primaryScaleSetName,omitempty"`
+	ResourceGroup                string `json:"resourceGroup,omitempty" yaml:"resourceGroup,omitempty"`
+	RouteTableName               string `json:"routeTableName,omitempty" yaml:"routeTableName,omitempty"`
+	SecurityGroupName            string `json:"securityGroupName,omitempty" yaml:"securityGroupName,omitempty"`
+	SecurityGroupResourceGroup   string `json:"securityGroupResourceGroup,omitempty" yaml:"securityGroupResourceGroup,omitempty"`
+	SubnetName                   string `json:"subnetName,omitempty" yaml:"subnetName,omitempty"`
+	SubscriptionID               string `json:"subscriptionId,omitempty" yaml:"subscriptionId,omitempty"`
+	Tags                         string `json:"tags,omitempty" yaml:"tags,omitempty"`
+	TenantID                     string `json:"tenantId,omitempty" yaml:"tenantId,omitempty"`
+	UseInstanceMetadata          bool   `json:"useInstanceMetadata,omitempty" yaml:"useInstanceMetadata,omitempty"`
+	UseManagedIdentityExtension  bool   `json:"useManagedIdentityExtension,omitempty" yaml:"useManagedIdentityExtension,omitempty"`
+	UserAssignedIdentityID       string `json:"userAssignedIdentityID,omitempty" yaml:"userAssignedIdentityID,omitempty"`
+	VMType                       string `json:"vmType,omitempty" yaml:"vmType,omitempty"`
+	VnetName                     string `json:"vnetName,omitempty" yaml:"vnetName,omitempty"`
+	VnetResourceGroup            string `json:"vnetResourceGroup,omitempty" yaml:"vnetResourceGroup,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_disk_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_disk_volume_source.go
new file mode 100644
index 00000000..28920c00
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_disk_volume_source.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	AzureDiskVolumeSourceType             = "azureDiskVolumeSource"
+	AzureDiskVolumeSourceFieldCachingMode = "cachingMode"
+	AzureDiskVolumeSourceFieldDataDiskURI = "diskURI"
+	AzureDiskVolumeSourceFieldDiskName    = "diskName"
+	AzureDiskVolumeSourceFieldFSType      = "fsType"
+	AzureDiskVolumeSourceFieldKind        = "kind"
+	AzureDiskVolumeSourceFieldReadOnly    = "readOnly"
+)
+
+type AzureDiskVolumeSource struct {
+	CachingMode string `json:"cachingMode,omitempty" yaml:"cachingMode,omitempty"`
+	DataDiskURI string `json:"diskURI,omitempty" yaml:"diskURI,omitempty"`
+	DiskName    string `json:"diskName,omitempty" yaml:"diskName,omitempty"`
+	FSType      string `json:"fsType,omitempty" yaml:"fsType,omitempty"`
+	Kind        string `json:"kind,omitempty" yaml:"kind,omitempty"`
+	ReadOnly    *bool  `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_file_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_file_volume_source.go
new file mode 100644
index 00000000..3be8571c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_azure_file_volume_source.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	AzureFileVolumeSourceType            = "azureFileVolumeSource"
+	AzureFileVolumeSourceFieldReadOnly   = "readOnly"
+	AzureFileVolumeSourceFieldSecretName = "secretName"
+	AzureFileVolumeSourceFieldShareName  = "shareName"
+)
+
+type AzureFileVolumeSource struct {
+	ReadOnly   bool   `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+	SecretName string `json:"secretName,omitempty" yaml:"secretName,omitempty"`
+	ShareName  string `json:"shareName,omitempty" yaml:"shareName,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_backup_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_backup_config.go
new file mode 100644
index 00000000..140cf15c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_backup_config.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	BackupConfigType                = "backupConfig"
+	BackupConfigFieldEnabled        = "enabled"
+	BackupConfigFieldIntervalHours  = "intervalHours"
+	BackupConfigFieldRetention      = "retention"
+	BackupConfigFieldS3BackupConfig = "s3BackupConfig"
+	BackupConfigFieldSafeTimestamp  = "safeTimestamp"
+	BackupConfigFieldTimeout        = "timeout"
+)
+
+type BackupConfig struct {
+	Enabled        *bool           `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	IntervalHours  int64           `json:"intervalHours,omitempty" yaml:"intervalHours,omitempty"`
+	Retention      int64           `json:"retention,omitempty" yaml:"retention,omitempty"`
+	S3BackupConfig *S3BackupConfig `json:"s3BackupConfig,omitempty" yaml:"s3BackupConfig,omitempty"`
+	SafeTimestamp  bool            `json:"safeTimestamp,omitempty" yaml:"safeTimestamp,omitempty"`
+	Timeout        int64           `json:"timeout,omitempty" yaml:"timeout,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_bastion_host.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_bastion_host.go
new file mode 100644
index 00000000..ac24e24f
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_bastion_host.go
@@ -0,0 +1,26 @@
+package client
+
+const (
+	BastionHostType                    = "bastionHost"
+	BastionHostFieldAddress            = "address"
+	BastionHostFieldIgnoreProxyEnvVars = "ignoreProxyEnvVars"
+	BastionHostFieldPort               = "port"
+	BastionHostFieldSSHAgentAuth       = "sshAgentAuth"
+	BastionHostFieldSSHCert            = "sshCert"
+	BastionHostFieldSSHCertPath        = "sshCertPath"
+	BastionHostFieldSSHKey             = "sshKey"
+	BastionHostFieldSSHKeyPath         = "sshKeyPath"
+	BastionHostFieldUser               = "user"
+)
+
+type BastionHost struct {
+	Address            string `json:"address,omitempty" yaml:"address,omitempty"`
+	IgnoreProxyEnvVars bool   `json:"ignoreProxyEnvVars,omitempty" yaml:"ignoreProxyEnvVars,omitempty"`
+	Port               string `json:"port,omitempty" yaml:"port,omitempty"`
+	SSHAgentAuth       bool   `json:"sshAgentAuth,omitempty" yaml:"sshAgentAuth,omitempty"`
+	SSHCert            string `json:"sshCert,omitempty" yaml:"sshCert,omitempty"`
+	SSHCertPath        string `json:"sshCertPath,omitempty" yaml:"sshCertPath,omitempty"`
+	SSHKey             string `json:"sshKey,omitempty" yaml:"sshKey,omitempty"`
+	SSHKeyPath         string `json:"sshKeyPath,omitempty" yaml:"sshKeyPath,omitempty"`
+	User               string `json:"user,omitempty" yaml:"user,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_block_storage_openstack_opts.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_block_storage_openstack_opts.go
new file mode 100644
index 00000000..b95bb36e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_block_storage_openstack_opts.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	BlockStorageOpenstackOptsType                 = "blockStorageOpenstackOpts"
+	BlockStorageOpenstackOptsFieldBSVersion       = "bs-version"
+	BlockStorageOpenstackOptsFieldIgnoreVolumeAZ  = "ignore-volume-az"
+	BlockStorageOpenstackOptsFieldTrustDevicePath = "trust-device-path"
+)
+
+type BlockStorageOpenstackOpts struct {
+	BSVersion       string `json:"bs-version,omitempty" yaml:"bs-version,omitempty"`
+	IgnoreVolumeAZ  bool   `json:"ignore-volume-az,omitempty" yaml:"ignore-volume-az,omitempty"`
+	TrustDevicePath bool   `json:"trust-device-path,omitempty" yaml:"trust-device-path,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_calico_network_provider.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_calico_network_provider.go
new file mode 100644
index 00000000..4bfc50b0
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_calico_network_provider.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	CalicoNetworkProviderType               = "calicoNetworkProvider"
+	CalicoNetworkProviderFieldCloudProvider = "cloudProvider"
+)
+
+type CalicoNetworkProvider struct {
+	CloudProvider string `json:"cloudProvider,omitempty" yaml:"cloudProvider,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_canal_network_provider.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_canal_network_provider.go
new file mode 100644
index 00000000..e648a18c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_canal_network_provider.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	CanalNetworkProviderType       = "canalNetworkProvider"
+	CanalNetworkProviderFieldIface = "iface"
+)
+
+type CanalNetworkProvider struct {
+	Iface string `json:"iface,omitempty" yaml:"iface,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_capabilities.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_capabilities.go
new file mode 100644
index 00000000..887bcbd4
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_capabilities.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	CapabilitiesType                          = "capabilities"
+	CapabilitiesFieldIngressCapabilities      = "ingressCapabilities"
+	CapabilitiesFieldLoadBalancerCapabilities = "loadBalancerCapabilities"
+	CapabilitiesFieldNodePoolScalingSupported = "nodePoolScalingSupported"
+	CapabilitiesFieldNodePortRange            = "nodePortRange"
+	CapabilitiesFieldTaintSupport             = "taintSupport"
+)
+
+type Capabilities struct {
+	IngressCapabilities      []IngressCapabilities     `json:"ingressCapabilities,omitempty" yaml:"ingressCapabilities,omitempty"`
+	LoadBalancerCapabilities *LoadBalancerCapabilities `json:"loadBalancerCapabilities,omitempty" yaml:"loadBalancerCapabilities,omitempty"`
+	NodePoolScalingSupported bool                      `json:"nodePoolScalingSupported,omitempty" yaml:"nodePoolScalingSupported,omitempty"`
+	NodePortRange            string                    `json:"nodePortRange,omitempty" yaml:"nodePortRange,omitempty"`
+	TaintSupport             *bool                     `json:"taintSupport,omitempty" yaml:"taintSupport,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog.go
new file mode 100644
index 00000000..4d323382
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog.go
@@ -0,0 +1,164 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	CatalogType                      = "catalog"
+	CatalogFieldAnnotations          = "annotations"
+	CatalogFieldBranch               = "branch"
+	CatalogFieldCatalogSecrets       = "catalogSecrets"
+	CatalogFieldCommit               = "commit"
+	CatalogFieldConditions           = "conditions"
+	CatalogFieldCreated              = "created"
+	CatalogFieldCreatorID            = "creatorId"
+	CatalogFieldCredentialSecret     = "credentialSecret"
+	CatalogFieldDescription          = "description"
+	CatalogFieldHelmVersion          = "helmVersion"
+	CatalogFieldKind                 = "kind"
+	CatalogFieldLabels               = "labels"
+	CatalogFieldLastRefreshTimestamp = "lastRefreshTimestamp"
+	CatalogFieldName                 = "name"
+	CatalogFieldOwnerReferences      = "ownerReferences"
+	CatalogFieldPassword             = "password"
+	CatalogFieldRemoved              = "removed"
+	CatalogFieldState                = "state"
+	CatalogFieldTransitioning        = "transitioning"
+	CatalogFieldTransitioningMessage = "transitioningMessage"
+	CatalogFieldURL                  = "url"
+	CatalogFieldUUID                 = "uuid"
+	CatalogFieldUsername             = "username"
+)
+
+type Catalog struct {
+	types.Resource
+	Annotations          map[string]string  `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Branch               string             `json:"branch,omitempty" yaml:"branch,omitempty"`
+	CatalogSecrets       *CatalogSecrets    `json:"catalogSecrets,omitempty" yaml:"catalogSecrets,omitempty"`
+	Commit               string             `json:"commit,omitempty" yaml:"commit,omitempty"`
+	Conditions           []CatalogCondition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	Created              string             `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID            string             `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	CredentialSecret     string             `json:"credentialSecret,omitempty" yaml:"credentialSecret,omitempty"`
+	Description          string             `json:"description,omitempty" yaml:"description,omitempty"`
+	HelmVersion          string             `json:"helmVersion,omitempty" yaml:"helmVersion,omitempty"`
+	Kind                 string             `json:"kind,omitempty" yaml:"kind,omitempty"`
+	Labels               map[string]string  `json:"labels,omitempty" yaml:"labels,omitempty"`
+	LastRefreshTimestamp string             `json:"lastRefreshTimestamp,omitempty" yaml:"lastRefreshTimestamp,omitempty"`
+	Name                 string             `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences      []OwnerReference   `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Password             string             `json:"password,omitempty" yaml:"password,omitempty"`
+	Removed              string             `json:"removed,omitempty" yaml:"removed,omitempty"`
+	State                string             `json:"state,omitempty" yaml:"state,omitempty"`
+	Transitioning        string             `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage string             `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	URL                  string             `json:"url,omitempty" yaml:"url,omitempty"`
+	UUID                 string             `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	Username             string             `json:"username,omitempty" yaml:"username,omitempty"`
+}
+
+type CatalogCollection struct {
+	types.Collection
+	Data   []Catalog `json:"data,omitempty"`
+	client *CatalogClient
+}
+
+type CatalogClient struct {
+	apiClient *Client
+}
+
+type CatalogOperations interface {
+	List(opts *types.ListOpts) (*CatalogCollection, error)
+	ListAll(opts *types.ListOpts) (*CatalogCollection, error)
+	Create(opts *Catalog) (*Catalog, error)
+	Update(existing *Catalog, updates interface{}) (*Catalog, error)
+	Replace(existing *Catalog) (*Catalog, error)
+	ByID(id string) (*Catalog, error)
+	Delete(container *Catalog) error
+
+	ActionRefresh(resource *Catalog) (*CatalogRefresh, error)
+
+	CollectionActionRefresh(resource *CatalogCollection) (*CatalogRefresh, error)
+}
+
+func newCatalogClient(apiClient *Client) *CatalogClient {
+	return &CatalogClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *CatalogClient) Create(container *Catalog) (*Catalog, error) {
+	resp := &Catalog{}
+	err := c.apiClient.Ops.DoCreate(CatalogType, container, resp)
+	return resp, err
+}
+
+func (c *CatalogClient) Update(existing *Catalog, updates interface{}) (*Catalog, error) {
+	resp := &Catalog{}
+	err := c.apiClient.Ops.DoUpdate(CatalogType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *CatalogClient) Replace(obj *Catalog) (*Catalog, error) {
+	resp := &Catalog{}
+	err := c.apiClient.Ops.DoReplace(CatalogType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *CatalogClient) List(opts *types.ListOpts) (*CatalogCollection, error) {
+	resp := &CatalogCollection{}
+	err := c.apiClient.Ops.DoList(CatalogType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *CatalogClient) ListAll(opts *types.ListOpts) (*CatalogCollection, error) {
+	resp := &CatalogCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *CatalogCollection) Next() (*CatalogCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &CatalogCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *CatalogClient) ByID(id string) (*Catalog, error) {
+	resp := &Catalog{}
+	err := c.apiClient.Ops.DoByID(CatalogType, id, resp)
+	return resp, err
+}
+
+func (c *CatalogClient) Delete(container *Catalog) error {
+	return c.apiClient.Ops.DoResourceDelete(CatalogType, &container.Resource)
+}
+
+func (c *CatalogClient) ActionRefresh(resource *Catalog) (*CatalogRefresh, error) {
+	resp := &CatalogRefresh{}
+	err := c.apiClient.Ops.DoAction(CatalogType, "refresh", &resource.Resource, nil, resp)
+	return resp, err
+}
+
+func (c *CatalogClient) CollectionActionRefresh(resource *CatalogCollection) (*CatalogRefresh, error) {
+	resp := &CatalogRefresh{}
+	err := c.apiClient.Ops.DoCollectionAction(CatalogType, "refresh", &resource.Collection, nil, resp)
+	return resp, err
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_condition.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_condition.go
new file mode 100644
index 00000000..0aba7f4e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_condition.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	CatalogConditionType                    = "catalogCondition"
+	CatalogConditionFieldLastTransitionTime = "lastTransitionTime"
+	CatalogConditionFieldLastUpdateTime     = "lastUpdateTime"
+	CatalogConditionFieldMessage            = "message"
+	CatalogConditionFieldReason             = "reason"
+	CatalogConditionFieldStatus             = "status"
+	CatalogConditionFieldType               = "type"
+)
+
+type CatalogCondition struct {
+	LastTransitionTime string `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty"`
+	LastUpdateTime     string `json:"lastUpdateTime,omitempty" yaml:"lastUpdateTime,omitempty"`
+	Message            string `json:"message,omitempty" yaml:"message,omitempty"`
+	Reason             string `json:"reason,omitempty" yaml:"reason,omitempty"`
+	Status             string `json:"status,omitempty" yaml:"status,omitempty"`
+	Type               string `json:"type,omitempty" yaml:"type,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_refresh.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_refresh.go
new file mode 100644
index 00000000..b2f825f7
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_refresh.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	CatalogRefreshType          = "catalogRefresh"
+	CatalogRefreshFieldCatalogs = "catalogs"
+)
+
+type CatalogRefresh struct {
+	Catalogs []string `json:"catalogs,omitempty" yaml:"catalogs,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_secrets.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_secrets.go
new file mode 100644
index 00000000..d89c146f
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_secrets.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	CatalogSecretsType                  = "catalogSecrets"
+	CatalogSecretsFieldCredentialSecret = "credentialSecret"
+)
+
+type CatalogSecrets struct {
+	CredentialSecret string `json:"credentialSecret,omitempty" yaml:"credentialSecret,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_spec.go
new file mode 100644
index 00000000..0eb5c87d
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_spec.go
@@ -0,0 +1,24 @@
+package client
+
+const (
+	CatalogSpecType                = "catalogSpec"
+	CatalogSpecFieldBranch         = "branch"
+	CatalogSpecFieldCatalogKind    = "catalogKind"
+	CatalogSpecFieldCatalogSecrets = "catalogSecrets"
+	CatalogSpecFieldDescription    = "description"
+	CatalogSpecFieldHelmVersion    = "helmVersion"
+	CatalogSpecFieldPassword       = "password"
+	CatalogSpecFieldURL            = "url"
+	CatalogSpecFieldUsername       = "username"
+)
+
+type CatalogSpec struct {
+	Branch         string          `json:"branch,omitempty" yaml:"branch,omitempty"`
+	CatalogKind    string          `json:"catalogKind,omitempty" yaml:"catalogKind,omitempty"`
+	CatalogSecrets *CatalogSecrets `json:"catalogSecrets,omitempty" yaml:"catalogSecrets,omitempty"`
+	Description    string          `json:"description,omitempty" yaml:"description,omitempty"`
+	HelmVersion    string          `json:"helmVersion,omitempty" yaml:"helmVersion,omitempty"`
+	Password       string          `json:"password,omitempty" yaml:"password,omitempty"`
+	URL            string          `json:"url,omitempty" yaml:"url,omitempty"`
+	Username       string          `json:"username,omitempty" yaml:"username,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_status.go
new file mode 100644
index 00000000..624f1434
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_status.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	CatalogStatusType                      = "catalogStatus"
+	CatalogStatusFieldCommit               = "commit"
+	CatalogStatusFieldConditions           = "conditions"
+	CatalogStatusFieldCredentialSecret     = "credentialSecret"
+	CatalogStatusFieldHelmVersionCommits   = "helmVersionCommits"
+	CatalogStatusFieldLastRefreshTimestamp = "lastRefreshTimestamp"
+)
+
+type CatalogStatus struct {
+	Commit               string                    `json:"commit,omitempty" yaml:"commit,omitempty"`
+	Conditions           []CatalogCondition        `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	CredentialSecret     string                    `json:"credentialSecret,omitempty" yaml:"credentialSecret,omitempty"`
+	HelmVersionCommits   map[string]VersionCommits `json:"helmVersionCommits,omitempty" yaml:"helmVersionCommits,omitempty"`
+	LastRefreshTimestamp string                    `json:"lastRefreshTimestamp,omitempty" yaml:"lastRefreshTimestamp,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_template.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_template.go
new file mode 100644
index 00000000..bc609f8a
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_template.go
@@ -0,0 +1,166 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	CatalogTemplateType                          = "catalogTemplate"
+	CatalogTemplateFieldAnnotations              = "annotations"
+	CatalogTemplateFieldCatalogID                = "catalogId"
+	CatalogTemplateFieldCategories               = "categories"
+	CatalogTemplateFieldCategory                 = "category"
+	CatalogTemplateFieldClusterCatalogID         = "clusterCatalogId"
+	CatalogTemplateFieldClusterID                = "clusterId"
+	CatalogTemplateFieldCreated                  = "created"
+	CatalogTemplateFieldCreatorID                = "creatorId"
+	CatalogTemplateFieldDefaultTemplateVersionID = "defaultTemplateVersionId"
+	CatalogTemplateFieldDefaultVersion           = "defaultVersion"
+	CatalogTemplateFieldDescription              = "description"
+	CatalogTemplateFieldFolderName               = "folderName"
+	CatalogTemplateFieldIcon                     = "icon"
+	CatalogTemplateFieldIconFilename             = "iconFilename"
+	CatalogTemplateFieldLabels                   = "labels"
+	CatalogTemplateFieldMaintainer               = "maintainer"
+	CatalogTemplateFieldName                     = "name"
+	CatalogTemplateFieldOwnerReferences          = "ownerReferences"
+	CatalogTemplateFieldPath                     = "path"
+	CatalogTemplateFieldProjectCatalogID         = "projectCatalogId"
+	CatalogTemplateFieldProjectID                = "projectId"
+	CatalogTemplateFieldProjectURL               = "projectURL"
+	CatalogTemplateFieldReadme                   = "readme"
+	CatalogTemplateFieldRemoved                  = "removed"
+	CatalogTemplateFieldState                    = "state"
+	CatalogTemplateFieldStatus                   = "status"
+	CatalogTemplateFieldTransitioning            = "transitioning"
+	CatalogTemplateFieldTransitioningMessage     = "transitioningMessage"
+	CatalogTemplateFieldUUID                     = "uuid"
+	CatalogTemplateFieldUpgradeFrom              = "upgradeFrom"
+	CatalogTemplateFieldVersionLinks             = "versionLinks"
+	CatalogTemplateFieldVersions                 = "versions"
+)
+
+type CatalogTemplate struct {
+	types.Resource
+	Annotations              map[string]string     `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	CatalogID                string                `json:"catalogId,omitempty" yaml:"catalogId,omitempty"`
+	Categories               []string              `json:"categories,omitempty" yaml:"categories,omitempty"`
+	Category                 string                `json:"category,omitempty" yaml:"category,omitempty"`
+	ClusterCatalogID         string                `json:"clusterCatalogId,omitempty" yaml:"clusterCatalogId,omitempty"`
+	ClusterID                string                `json:"clusterId,omitempty" yaml:"clusterId,omitempty"`
+	Created                  string                `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID                string                `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	DefaultTemplateVersionID string                `json:"defaultTemplateVersionId,omitempty" yaml:"defaultTemplateVersionId,omitempty"`
+	DefaultVersion           string                `json:"defaultVersion,omitempty" yaml:"defaultVersion,omitempty"`
+	Description              string                `json:"description,omitempty" yaml:"description,omitempty"`
+	FolderName               string                `json:"folderName,omitempty" yaml:"folderName,omitempty"`
+	Icon                     string                `json:"icon,omitempty" yaml:"icon,omitempty"`
+	IconFilename             string                `json:"iconFilename,omitempty" yaml:"iconFilename,omitempty"`
+	Labels                   map[string]string     `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Maintainer               string                `json:"maintainer,omitempty" yaml:"maintainer,omitempty"`
+	Name                     string                `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences          []OwnerReference      `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Path                     string                `json:"path,omitempty" yaml:"path,omitempty"`
+	ProjectCatalogID         string                `json:"projectCatalogId,omitempty" yaml:"projectCatalogId,omitempty"`
+	ProjectID                string                `json:"projectId,omitempty" yaml:"projectId,omitempty"`
+	ProjectURL               string                `json:"projectURL,omitempty" yaml:"projectURL,omitempty"`
+	Readme                   string                `json:"readme,omitempty" yaml:"readme,omitempty"`
+	Removed                  string                `json:"removed,omitempty" yaml:"removed,omitempty"`
+	State                    string                `json:"state,omitempty" yaml:"state,omitempty"`
+	Status                   *TemplateStatus       `json:"status,omitempty" yaml:"status,omitempty"`
+	Transitioning            string                `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage     string                `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                     string                `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UpgradeFrom              string                `json:"upgradeFrom,omitempty" yaml:"upgradeFrom,omitempty"`
+	VersionLinks             map[string]string     `json:"versionLinks,omitempty" yaml:"versionLinks,omitempty"`
+	Versions                 []TemplateVersionSpec `json:"versions,omitempty" yaml:"versions,omitempty"`
+}
+
+type CatalogTemplateCollection struct {
+	types.Collection
+	Data   []CatalogTemplate `json:"data,omitempty"`
+	client *CatalogTemplateClient
+}
+
+type CatalogTemplateClient struct {
+	apiClient *Client
+}
+
+type CatalogTemplateOperations interface {
+	List(opts *types.ListOpts) (*CatalogTemplateCollection, error)
+	ListAll(opts *types.ListOpts) (*CatalogTemplateCollection, error)
+	Create(opts *CatalogTemplate) (*CatalogTemplate, error)
+	Update(existing *CatalogTemplate, updates interface{}) (*CatalogTemplate, error)
+	Replace(existing *CatalogTemplate) (*CatalogTemplate, error)
+	ByID(id string) (*CatalogTemplate, error)
+	Delete(container *CatalogTemplate) error
+}
+
+func newCatalogTemplateClient(apiClient *Client) *CatalogTemplateClient {
+	return &CatalogTemplateClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *CatalogTemplateClient) Create(container *CatalogTemplate) (*CatalogTemplate, error) {
+	resp := &CatalogTemplate{}
+	err := c.apiClient.Ops.DoCreate(CatalogTemplateType, container, resp)
+	return resp, err
+}
+
+func (c *CatalogTemplateClient) Update(existing *CatalogTemplate, updates interface{}) (*CatalogTemplate, error) {
+	resp := &CatalogTemplate{}
+	err := c.apiClient.Ops.DoUpdate(CatalogTemplateType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *CatalogTemplateClient) Replace(obj *CatalogTemplate) (*CatalogTemplate, error) {
+	resp := &CatalogTemplate{}
+	err := c.apiClient.Ops.DoReplace(CatalogTemplateType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *CatalogTemplateClient) List(opts *types.ListOpts) (*CatalogTemplateCollection, error) {
+	resp := &CatalogTemplateCollection{}
+	err := c.apiClient.Ops.DoList(CatalogTemplateType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *CatalogTemplateClient) ListAll(opts *types.ListOpts) (*CatalogTemplateCollection, error) {
+	resp := &CatalogTemplateCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *CatalogTemplateCollection) Next() (*CatalogTemplateCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &CatalogTemplateCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *CatalogTemplateClient) ByID(id string) (*CatalogTemplate, error) {
+	resp := &CatalogTemplate{}
+	err := c.apiClient.Ops.DoByID(CatalogTemplateType, id, resp)
+	return resp, err
+}
+
+func (c *CatalogTemplateClient) Delete(container *CatalogTemplate) error {
+	return c.apiClient.Ops.DoResourceDelete(CatalogTemplateType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_template_version.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_template_version.go
new file mode 100644
index 00000000..520ed186
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_catalog_template_version.go
@@ -0,0 +1,158 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	CatalogTemplateVersionType                      = "catalogTemplateVersion"
+	CatalogTemplateVersionFieldAnnotations          = "annotations"
+	CatalogTemplateVersionFieldAppReadme            = "appReadme"
+	CatalogTemplateVersionFieldCreated              = "created"
+	CatalogTemplateVersionFieldCreatorID            = "creatorId"
+	CatalogTemplateVersionFieldDigest               = "digest"
+	CatalogTemplateVersionFieldExternalID           = "externalId"
+	CatalogTemplateVersionFieldFiles                = "files"
+	CatalogTemplateVersionFieldKubeVersion          = "kubeVersion"
+	CatalogTemplateVersionFieldLabels               = "labels"
+	CatalogTemplateVersionFieldName                 = "name"
+	CatalogTemplateVersionFieldOwnerReferences      = "ownerReferences"
+	CatalogTemplateVersionFieldQuestions            = "questions"
+	CatalogTemplateVersionFieldRancherMaxVersion    = "rancherMaxVersion"
+	CatalogTemplateVersionFieldRancherMinVersion    = "rancherMinVersion"
+	CatalogTemplateVersionFieldRancherVersion       = "rancherVersion"
+	CatalogTemplateVersionFieldReadme               = "readme"
+	CatalogTemplateVersionFieldRemoved              = "removed"
+	CatalogTemplateVersionFieldRequiredNamespace    = "requiredNamespace"
+	CatalogTemplateVersionFieldState                = "state"
+	CatalogTemplateVersionFieldStatus               = "status"
+	CatalogTemplateVersionFieldTransitioning        = "transitioning"
+	CatalogTemplateVersionFieldTransitioningMessage = "transitioningMessage"
+	CatalogTemplateVersionFieldUUID                 = "uuid"
+	CatalogTemplateVersionFieldUpgradeVersionLinks  = "upgradeVersionLinks"
+	CatalogTemplateVersionFieldVersion              = "version"
+	CatalogTemplateVersionFieldVersionDir           = "versionDir"
+	CatalogTemplateVersionFieldVersionName          = "versionName"
+	CatalogTemplateVersionFieldVersionURLs          = "versionUrls"
+)
+
+type CatalogTemplateVersion struct {
+	types.Resource
+	Annotations          map[string]string      `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	AppReadme            string                 `json:"appReadme,omitempty" yaml:"appReadme,omitempty"`
+	Created              string                 `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID            string                 `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Digest               string                 `json:"digest,omitempty" yaml:"digest,omitempty"`
+	ExternalID           string                 `json:"externalId,omitempty" yaml:"externalId,omitempty"`
+	Files                map[string]string      `json:"files,omitempty" yaml:"files,omitempty"`
+	KubeVersion          string                 `json:"kubeVersion,omitempty" yaml:"kubeVersion,omitempty"`
+	Labels               map[string]string      `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                 string                 `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences      []OwnerReference       `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Questions            []Question             `json:"questions,omitempty" yaml:"questions,omitempty"`
+	RancherMaxVersion    string                 `json:"rancherMaxVersion,omitempty" yaml:"rancherMaxVersion,omitempty"`
+	RancherMinVersion    string                 `json:"rancherMinVersion,omitempty" yaml:"rancherMinVersion,omitempty"`
+	RancherVersion       string                 `json:"rancherVersion,omitempty" yaml:"rancherVersion,omitempty"`
+	Readme               string                 `json:"readme,omitempty" yaml:"readme,omitempty"`
+	Removed              string                 `json:"removed,omitempty" yaml:"removed,omitempty"`
+	RequiredNamespace    string                 `json:"requiredNamespace,omitempty" yaml:"requiredNamespace,omitempty"`
+	State                string                 `json:"state,omitempty" yaml:"state,omitempty"`
+	Status               *TemplateVersionStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	Transitioning        string                 `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage string                 `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                 string                 `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UpgradeVersionLinks  map[string]string      `json:"upgradeVersionLinks,omitempty" yaml:"upgradeVersionLinks,omitempty"`
+	Version              string                 `json:"version,omitempty" yaml:"version,omitempty"`
+	VersionDir           string                 `json:"versionDir,omitempty" yaml:"versionDir,omitempty"`
+	VersionName          string                 `json:"versionName,omitempty" yaml:"versionName,omitempty"`
+	VersionURLs          []string               `json:"versionUrls,omitempty" yaml:"versionUrls,omitempty"`
+}
+
+type CatalogTemplateVersionCollection struct {
+	types.Collection
+	Data   []CatalogTemplateVersion `json:"data,omitempty"`
+	client *CatalogTemplateVersionClient
+}
+
+type CatalogTemplateVersionClient struct {
+	apiClient *Client
+}
+
+type CatalogTemplateVersionOperations interface {
+	List(opts *types.ListOpts) (*CatalogTemplateVersionCollection, error)
+	ListAll(opts *types.ListOpts) (*CatalogTemplateVersionCollection, error)
+	Create(opts *CatalogTemplateVersion) (*CatalogTemplateVersion, error)
+	Update(existing *CatalogTemplateVersion, updates interface{}) (*CatalogTemplateVersion, error)
+	Replace(existing *CatalogTemplateVersion) (*CatalogTemplateVersion, error)
+	ByID(id string) (*CatalogTemplateVersion, error)
+	Delete(container *CatalogTemplateVersion) error
+}
+
+func newCatalogTemplateVersionClient(apiClient *Client) *CatalogTemplateVersionClient {
+	return &CatalogTemplateVersionClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *CatalogTemplateVersionClient) Create(container *CatalogTemplateVersion) (*CatalogTemplateVersion, error) {
+	resp := &CatalogTemplateVersion{}
+	err := c.apiClient.Ops.DoCreate(CatalogTemplateVersionType, container, resp)
+	return resp, err
+}
+
+func (c *CatalogTemplateVersionClient) Update(existing *CatalogTemplateVersion, updates interface{}) (*CatalogTemplateVersion, error) {
+	resp := &CatalogTemplateVersion{}
+	err := c.apiClient.Ops.DoUpdate(CatalogTemplateVersionType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *CatalogTemplateVersionClient) Replace(obj *CatalogTemplateVersion) (*CatalogTemplateVersion, error) {
+	resp := &CatalogTemplateVersion{}
+	err := c.apiClient.Ops.DoReplace(CatalogTemplateVersionType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *CatalogTemplateVersionClient) List(opts *types.ListOpts) (*CatalogTemplateVersionCollection, error) {
+	resp := &CatalogTemplateVersionCollection{}
+	err := c.apiClient.Ops.DoList(CatalogTemplateVersionType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *CatalogTemplateVersionClient) ListAll(opts *types.ListOpts) (*CatalogTemplateVersionCollection, error) {
+	resp := &CatalogTemplateVersionCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *CatalogTemplateVersionCollection) Next() (*CatalogTemplateVersionCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &CatalogTemplateVersionCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *CatalogTemplateVersionClient) ByID(id string) (*CatalogTemplateVersion, error) {
+	resp := &CatalogTemplateVersion{}
+	err := c.apiClient.Ops.DoByID(CatalogTemplateVersionType, id, resp)
+	return resp, err
+}
+
+func (c *CatalogTemplateVersionClient) Delete(container *CatalogTemplateVersion) error {
+	return c.apiClient.Ops.DoResourceDelete(CatalogTemplateVersionType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ceph_fsvolume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ceph_fsvolume_source.go
new file mode 100644
index 00000000..363ba5eb
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ceph_fsvolume_source.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	CephFSVolumeSourceType            = "cephFSVolumeSource"
+	CephFSVolumeSourceFieldMonitors   = "monitors"
+	CephFSVolumeSourceFieldPath       = "path"
+	CephFSVolumeSourceFieldReadOnly   = "readOnly"
+	CephFSVolumeSourceFieldSecretFile = "secretFile"
+	CephFSVolumeSourceFieldSecretRef  = "secretRef"
+	CephFSVolumeSourceFieldUser       = "user"
+)
+
+type CephFSVolumeSource struct {
+	Monitors   []string              `json:"monitors,omitempty" yaml:"monitors,omitempty"`
+	Path       string                `json:"path,omitempty" yaml:"path,omitempty"`
+	ReadOnly   bool                  `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+	SecretFile string                `json:"secretFile,omitempty" yaml:"secretFile,omitempty"`
+	SecretRef  *LocalObjectReference `json:"secretRef,omitempty" yaml:"secretRef,omitempty"`
+	User       string                `json:"user,omitempty" yaml:"user,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cert_expiration.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cert_expiration.go
new file mode 100644
index 00000000..0b05b465
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cert_expiration.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	CertExpirationType                = "certExpiration"
+	CertExpirationFieldExpirationDate = "expirationDate"
+)
+
+type CertExpiration struct {
+	ExpirationDate string `json:"expirationDate,omitempty" yaml:"expirationDate,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_change_password_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_change_password_input.go
new file mode 100644
index 00000000..e3a12085
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_change_password_input.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	ChangePasswordInputType                 = "changePasswordInput"
+	ChangePasswordInputFieldCurrentPassword = "currentPassword"
+	ChangePasswordInputFieldNewPassword     = "newPassword"
+)
+
+type ChangePasswordInput struct {
+	CurrentPassword string `json:"currentPassword,omitempty" yaml:"currentPassword,omitempty"`
+	NewPassword     string `json:"newPassword,omitempty" yaml:"newPassword,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cinder_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cinder_volume_source.go
new file mode 100644
index 00000000..ac0a6211
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cinder_volume_source.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	CinderVolumeSourceType           = "cinderVolumeSource"
+	CinderVolumeSourceFieldFSType    = "fsType"
+	CinderVolumeSourceFieldReadOnly  = "readOnly"
+	CinderVolumeSourceFieldSecretRef = "secretRef"
+	CinderVolumeSourceFieldVolumeID  = "volumeID"
+)
+
+type CinderVolumeSource struct {
+	FSType    string                `json:"fsType,omitempty" yaml:"fsType,omitempty"`
+	ReadOnly  bool                  `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+	SecretRef *LocalObjectReference `json:"secretRef,omitempty" yaml:"secretRef,omitempty"`
+	VolumeID  string                `json:"volumeID,omitempty" yaml:"volumeID,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_client.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_client.go
new file mode 100644
index 00000000..8ba5dc7f
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_client.go
@@ -0,0 +1,124 @@
+package client
+
+import (
+	"github.com/rancher/norman/clientbase"
+)
+
+type Client struct {
+	clientbase.APIBaseClient
+
+	NodePool                                  NodePoolOperations
+	Node                                      NodeOperations
+	NodeDriver                                NodeDriverOperations
+	NodeTemplate                              NodeTemplateOperations
+	PodSecurityAdmissionConfigurationTemplate PodSecurityAdmissionConfigurationTemplateOperations
+	Project                                   ProjectOperations
+	GlobalRole                                GlobalRoleOperations
+	GlobalRoleBinding                         GlobalRoleBindingOperations
+	RoleTemplate                              RoleTemplateOperations
+	ClusterRoleTemplateBinding                ClusterRoleTemplateBindingOperations
+	ProjectRoleTemplateBinding                ProjectRoleTemplateBindingOperations
+	Cluster                                   ClusterOperations
+	ClusterRegistrationToken                  ClusterRegistrationTokenOperations
+	Catalog                                   CatalogOperations
+	Template                                  TemplateOperations
+	CatalogTemplate                           CatalogTemplateOperations
+	CatalogTemplateVersion                    CatalogTemplateVersionOperations
+	TemplateVersion                           TemplateVersionOperations
+	TemplateContent                           TemplateContentOperations
+	Group                                     GroupOperations
+	GroupMember                               GroupMemberOperations
+	SamlToken                                 SamlTokenOperations
+	Principal                                 PrincipalOperations
+	User                                      UserOperations
+	AuthConfig                                AuthConfigOperations
+	LdapConfig                                LdapConfigOperations
+	Token                                     TokenOperations
+	DynamicSchema                             DynamicSchemaOperations
+	Preference                                PreferenceOperations
+	ProjectNetworkPolicy                      ProjectNetworkPolicyOperations
+	Setting                                   SettingOperations
+	Feature                                   FeatureOperations
+	ComposeConfig                             ComposeConfigOperations
+	ProjectCatalog                            ProjectCatalogOperations
+	ClusterCatalog                            ClusterCatalogOperations
+	MultiClusterApp                           MultiClusterAppOperations
+	MultiClusterAppRevision                   MultiClusterAppRevisionOperations
+	GlobalDns                                 GlobalDnsOperations
+	GlobalDnsProvider                         GlobalDnsProviderOperations
+	KontainerDriver                           KontainerDriverOperations
+	EtcdBackup                                EtcdBackupOperations
+	CloudCredential                           CloudCredentialOperations
+	ManagementSecret                          ManagementSecretOperations
+	ClusterTemplate                           ClusterTemplateOperations
+	ClusterTemplateRevision                   ClusterTemplateRevisionOperations
+	RkeK8sSystemImage                         RkeK8sSystemImageOperations
+	RkeK8sServiceOption                       RkeK8sServiceOptionOperations
+	RkeAddon                                  RkeAddonOperations
+	FleetWorkspace                            FleetWorkspaceOperations
+	RancherUserNotification                   RancherUserNotificationOperations
+}
+
+func NewClient(opts *clientbase.ClientOpts) (*Client, error) {
+	baseClient, err := clientbase.NewAPIClient(opts)
+	if err != nil {
+		return nil, err
+	}
+
+	client := &Client{
+		APIBaseClient: baseClient,
+	}
+
+	client.NodePool = newNodePoolClient(client)
+	client.Node = newNodeClient(client)
+	client.NodeDriver = newNodeDriverClient(client)
+	client.NodeTemplate = newNodeTemplateClient(client)
+	client.PodSecurityAdmissionConfigurationTemplate = newPodSecurityAdmissionConfigurationTemplateClient(client)
+	client.Project = newProjectClient(client)
+	client.GlobalRole = newGlobalRoleClient(client)
+	client.GlobalRoleBinding = newGlobalRoleBindingClient(client)
+	client.RoleTemplate = newRoleTemplateClient(client)
+	client.ClusterRoleTemplateBinding = newClusterRoleTemplateBindingClient(client)
+	client.ProjectRoleTemplateBinding = newProjectRoleTemplateBindingClient(client)
+	client.Cluster = newClusterClient(client)
+	client.ClusterRegistrationToken = newClusterRegistrationTokenClient(client)
+	client.Catalog = newCatalogClient(client)
+	client.Template = newTemplateClient(client)
+	client.CatalogTemplate = newCatalogTemplateClient(client)
+	client.CatalogTemplateVersion = newCatalogTemplateVersionClient(client)
+	client.TemplateVersion = newTemplateVersionClient(client)
+	client.TemplateContent = newTemplateContentClient(client)
+	client.Group = newGroupClient(client)
+	client.GroupMember = newGroupMemberClient(client)
+	client.SamlToken = newSamlTokenClient(client)
+	client.Principal = newPrincipalClient(client)
+	client.User = newUserClient(client)
+	client.AuthConfig = newAuthConfigClient(client)
+	client.LdapConfig = newLdapConfigClient(client)
+	client.Token = newTokenClient(client)
+	client.DynamicSchema = newDynamicSchemaClient(client)
+	client.Preference = newPreferenceClient(client)
+	client.ProjectNetworkPolicy = newProjectNetworkPolicyClient(client)
+	client.Setting = newSettingClient(client)
+	client.Feature = newFeatureClient(client)
+	client.ComposeConfig = newComposeConfigClient(client)
+	client.ProjectCatalog = newProjectCatalogClient(client)
+	client.ClusterCatalog = newClusterCatalogClient(client)
+	client.MultiClusterApp = newMultiClusterAppClient(client)
+	client.MultiClusterAppRevision = newMultiClusterAppRevisionClient(client)
+	client.GlobalDns = newGlobalDnsClient(client)
+	client.GlobalDnsProvider = newGlobalDnsProviderClient(client)
+	client.KontainerDriver = newKontainerDriverClient(client)
+	client.EtcdBackup = newEtcdBackupClient(client)
+	client.CloudCredential = newCloudCredentialClient(client)
+	client.ManagementSecret = newManagementSecretClient(client)
+	client.ClusterTemplate = newClusterTemplateClient(client)
+	client.ClusterTemplateRevision = newClusterTemplateRevisionClient(client)
+	client.RkeK8sSystemImage = newRkeK8sSystemImageClient(client)
+	client.RkeK8sServiceOption = newRkeK8sServiceOptionClient(client)
+	client.RkeAddon = newRkeAddonClient(client)
+	client.FleetWorkspace = newFleetWorkspaceClient(client)
+	client.RancherUserNotification = newRancherUserNotificationClient(client)
+
+	return client, nil
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cloud_credential.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cloud_credential.go
new file mode 100644
index 00000000..9381da31
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cloud_credential.go
@@ -0,0 +1,122 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	CloudCredentialType                    = "cloudCredential"
+	CloudCredentialFieldAnnotations        = "annotations"
+	CloudCredentialFieldCreated            = "created"
+	CloudCredentialFieldCreatorID          = "creatorId"
+	CloudCredentialFieldDescription        = "description"
+	CloudCredentialFieldLabels             = "labels"
+	CloudCredentialFieldName               = "name"
+	CloudCredentialFieldOwnerReferences    = "ownerReferences"
+	CloudCredentialFieldRemoved            = "removed"
+	CloudCredentialFieldS3CredentialConfig = "s3credentialConfig"
+	CloudCredentialFieldUUID               = "uuid"
+)
+
+type CloudCredential struct {
+	types.Resource
+	Annotations        map[string]string   `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created            string              `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID          string              `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Description        string              `json:"description,omitempty" yaml:"description,omitempty"`
+	Labels             map[string]string   `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name               string              `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences    []OwnerReference    `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed            string              `json:"removed,omitempty" yaml:"removed,omitempty"`
+	S3CredentialConfig *S3CredentialConfig `json:"s3credentialConfig,omitempty" yaml:"s3credentialConfig,omitempty"`
+	UUID               string              `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type CloudCredentialCollection struct {
+	types.Collection
+	Data   []CloudCredential `json:"data,omitempty"`
+	client *CloudCredentialClient
+}
+
+type CloudCredentialClient struct {
+	apiClient *Client
+}
+
+type CloudCredentialOperations interface {
+	List(opts *types.ListOpts) (*CloudCredentialCollection, error)
+	ListAll(opts *types.ListOpts) (*CloudCredentialCollection, error)
+	Create(opts *CloudCredential) (*CloudCredential, error)
+	Update(existing *CloudCredential, updates interface{}) (*CloudCredential, error)
+	Replace(existing *CloudCredential) (*CloudCredential, error)
+	ByID(id string) (*CloudCredential, error)
+	Delete(container *CloudCredential) error
+}
+
+func newCloudCredentialClient(apiClient *Client) *CloudCredentialClient {
+	return &CloudCredentialClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *CloudCredentialClient) Create(container *CloudCredential) (*CloudCredential, error) {
+	resp := &CloudCredential{}
+	err := c.apiClient.Ops.DoCreate(CloudCredentialType, container, resp)
+	return resp, err
+}
+
+func (c *CloudCredentialClient) Update(existing *CloudCredential, updates interface{}) (*CloudCredential, error) {
+	resp := &CloudCredential{}
+	err := c.apiClient.Ops.DoUpdate(CloudCredentialType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *CloudCredentialClient) Replace(obj *CloudCredential) (*CloudCredential, error) {
+	resp := &CloudCredential{}
+	err := c.apiClient.Ops.DoReplace(CloudCredentialType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *CloudCredentialClient) List(opts *types.ListOpts) (*CloudCredentialCollection, error) {
+	resp := &CloudCredentialCollection{}
+	err := c.apiClient.Ops.DoList(CloudCredentialType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *CloudCredentialClient) ListAll(opts *types.ListOpts) (*CloudCredentialCollection, error) {
+	resp := &CloudCredentialCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *CloudCredentialCollection) Next() (*CloudCredentialCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &CloudCredentialCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *CloudCredentialClient) ByID(id string) (*CloudCredential, error) {
+	resp := &CloudCredential{}
+	err := c.apiClient.Ops.DoByID(CloudCredentialType, id, resp)
+	return resp, err
+}
+
+func (c *CloudCredentialClient) Delete(container *CloudCredential) error {
+	return c.apiClient.Ops.DoResourceDelete(CloudCredentialType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cloud_credential_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cloud_credential_spec.go
new file mode 100644
index 00000000..c7269198
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cloud_credential_spec.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	CloudCredentialSpecType                    = "cloudCredentialSpec"
+	CloudCredentialSpecFieldDescription        = "description"
+	CloudCredentialSpecFieldDisplayName        = "displayName"
+	CloudCredentialSpecFieldS3CredentialConfig = "s3credentialConfig"
+)
+
+type CloudCredentialSpec struct {
+	Description        string              `json:"description,omitempty" yaml:"description,omitempty"`
+	DisplayName        string              `json:"displayName,omitempty" yaml:"displayName,omitempty"`
+	S3CredentialConfig *S3CredentialConfig `json:"s3credentialConfig,omitempty" yaml:"s3credentialConfig,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cloud_provider.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cloud_provider.go
new file mode 100644
index 00000000..6300e6fc
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cloud_provider.go
@@ -0,0 +1,24 @@
+package client
+
+const (
+	CloudProviderType                             = "cloudProvider"
+	CloudProviderFieldAWSCloudProvider            = "awsCloudProvider"
+	CloudProviderFieldAzureCloudProvider          = "azureCloudProvider"
+	CloudProviderFieldCustomCloudProvider         = "customCloudProvider"
+	CloudProviderFieldHarvesterCloudProvider      = "harvesterCloudProvider"
+	CloudProviderFieldName                        = "name"
+	CloudProviderFieldOpenstackCloudProvider      = "openstackCloudProvider"
+	CloudProviderFieldUseInstanceMetadataHostname = "useInstanceMetadataHostname"
+	CloudProviderFieldVsphereCloudProvider        = "vsphereCloudProvider"
+)
+
+type CloudProvider struct {
+	AWSCloudProvider            *AWSCloudProvider       `json:"awsCloudProvider,omitempty" yaml:"awsCloudProvider,omitempty"`
+	AzureCloudProvider          *AzureCloudProvider     `json:"azureCloudProvider,omitempty" yaml:"azureCloudProvider,omitempty"`
+	CustomCloudProvider         string                  `json:"customCloudProvider,omitempty" yaml:"customCloudProvider,omitempty"`
+	HarvesterCloudProvider      *HarvesterCloudProvider `json:"harvesterCloudProvider,omitempty" yaml:"harvesterCloudProvider,omitempty"`
+	Name                        string                  `json:"name,omitempty" yaml:"name,omitempty"`
+	OpenstackCloudProvider      *OpenstackCloudProvider `json:"openstackCloudProvider,omitempty" yaml:"openstackCloudProvider,omitempty"`
+	UseInstanceMetadataHostname *bool                   `json:"useInstanceMetadataHostname,omitempty" yaml:"useInstanceMetadataHostname,omitempty"`
+	VsphereCloudProvider        *VsphereCloudProvider   `json:"vsphereCloudProvider,omitempty" yaml:"vsphereCloudProvider,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cloudflare_provider_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cloudflare_provider_config.go
new file mode 100644
index 00000000..98ed9724
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cloudflare_provider_config.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	CloudflareProviderConfigType                   = "cloudflareProviderConfig"
+	CloudflareProviderConfigFieldAPIEmail          = "apiEmail"
+	CloudflareProviderConfigFieldAPIKey            = "apiKey"
+	CloudflareProviderConfigFieldAdditionalOptions = "additionalOptions"
+	CloudflareProviderConfigFieldProxySetting      = "proxySetting"
+)
+
+type CloudflareProviderConfig struct {
+	APIEmail          string            `json:"apiEmail,omitempty" yaml:"apiEmail,omitempty"`
+	APIKey            string            `json:"apiKey,omitempty" yaml:"apiKey,omitempty"`
+	AdditionalOptions map[string]string `json:"additionalOptions,omitempty" yaml:"additionalOptions,omitempty"`
+	ProxySetting      *bool             `json:"proxySetting,omitempty" yaml:"proxySetting,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster.go
new file mode 100644
index 00000000..8fd88648
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster.go
@@ -0,0 +1,318 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	ClusterType                                                      = "cluster"
+	ClusterFieldAADClientCertSecret                                  = "aadClientCertSecret"
+	ClusterFieldAADClientSecret                                      = "aadClientSecret"
+	ClusterFieldAKSConfig                                            = "aksConfig"
+	ClusterFieldAKSStatus                                            = "aksStatus"
+	ClusterFieldAPIEndpoint                                          = "apiEndpoint"
+	ClusterFieldAgentEnvVars                                         = "agentEnvVars"
+	ClusterFieldAgentFeatures                                        = "agentFeatures"
+	ClusterFieldAgentImage                                           = "agentImage"
+	ClusterFieldAgentImageOverride                                   = "agentImageOverride"
+	ClusterFieldAllocatable                                          = "allocatable"
+	ClusterFieldAnnotations                                          = "annotations"
+	ClusterFieldAppliedAgentEnvVars                                  = "appliedAgentEnvVars"
+	ClusterFieldAppliedClusterAgentDeploymentCustomization           = "appliedClusterAgentDeploymentCustomization"
+	ClusterFieldAppliedEnableNetworkPolicy                           = "appliedEnableNetworkPolicy"
+	ClusterFieldAppliedSpec                                          = "appliedSpec"
+	ClusterFieldAuthImage                                            = "authImage"
+	ClusterFieldCACert                                               = "caCert"
+	ClusterFieldCapabilities                                         = "capabilities"
+	ClusterFieldCapacity                                             = "capacity"
+	ClusterFieldCertificatesExpiration                               = "certificatesExpiration"
+	ClusterFieldClusterAgentDeploymentCustomization                  = "clusterAgentDeploymentCustomization"
+	ClusterFieldClusterSecrets                                       = "clusterSecrets"
+	ClusterFieldClusterTemplateAnswers                               = "answers"
+	ClusterFieldClusterTemplateID                                    = "clusterTemplateId"
+	ClusterFieldClusterTemplateQuestions                             = "questions"
+	ClusterFieldClusterTemplateRevisionID                            = "clusterTemplateRevisionId"
+	ClusterFieldComponentStatuses                                    = "componentStatuses"
+	ClusterFieldConditions                                           = "conditions"
+	ClusterFieldCreated                                              = "created"
+	ClusterFieldCreatorID                                            = "creatorId"
+	ClusterFieldCurrentCisRunName                                    = "currentCisRunName"
+	ClusterFieldDefaultClusterRoleForProjectMembers                  = "defaultClusterRoleForProjectMembers"
+	ClusterFieldDefaultPodSecurityAdmissionConfigurationTemplateName = "defaultPodSecurityAdmissionConfigurationTemplateName"
+	ClusterFieldDescription                                          = "description"
+	ClusterFieldDesiredAgentImage                                    = "desiredAgentImage"
+	ClusterFieldDesiredAuthImage                                     = "desiredAuthImage"
+	ClusterFieldDockerRootDir                                        = "dockerRootDir"
+	ClusterFieldDriver                                               = "driver"
+	ClusterFieldEKSConfig                                            = "eksConfig"
+	ClusterFieldEKSStatus                                            = "eksStatus"
+	ClusterFieldEnableNetworkPolicy                                  = "enableNetworkPolicy"
+	ClusterFieldFailedSpec                                           = "failedSpec"
+	ClusterFieldFleetAgentDeploymentCustomization                    = "fleetAgentDeploymentCustomization"
+	ClusterFieldFleetWorkspaceName                                   = "fleetWorkspaceName"
+	ClusterFieldGKEConfig                                            = "gkeConfig"
+	ClusterFieldGKEStatus                                            = "gkeStatus"
+	ClusterFieldImportedConfig                                       = "importedConfig"
+	ClusterFieldInternal                                             = "internal"
+	ClusterFieldIstioEnabled                                         = "istioEnabled"
+	ClusterFieldK3sConfig                                            = "k3sConfig"
+	ClusterFieldLabels                                               = "labels"
+	ClusterFieldLimits                                               = "limits"
+	ClusterFieldLinuxWorkerCount                                     = "linuxWorkerCount"
+	ClusterFieldLocalClusterAuthEndpoint                             = "localClusterAuthEndpoint"
+	ClusterFieldName                                                 = "name"
+	ClusterFieldNodeCount                                            = "nodeCount"
+	ClusterFieldNodeVersion                                          = "nodeVersion"
+	ClusterFieldOpenStackSecret                                      = "openStackSecret"
+	ClusterFieldOwnerReferences                                      = "ownerReferences"
+	ClusterFieldPrivateRegistrySecret                                = "privateRegistrySecret"
+	ClusterFieldProvider                                             = "provider"
+	ClusterFieldRancherKubernetesEngineConfig                        = "rancherKubernetesEngineConfig"
+	ClusterFieldRemoved                                              = "removed"
+	ClusterFieldRequested                                            = "requested"
+	ClusterFieldRke2Config                                           = "rke2Config"
+	ClusterFieldS3CredentialSecret                                   = "s3CredentialSecret"
+	ClusterFieldServiceAccountTokenSecret                            = "serviceAccountTokenSecret"
+	ClusterFieldState                                                = "state"
+	ClusterFieldTransitioning                                        = "transitioning"
+	ClusterFieldTransitioningMessage                                 = "transitioningMessage"
+	ClusterFieldUUID                                                 = "uuid"
+	ClusterFieldVersion                                              = "version"
+	ClusterFieldVirtualCenterSecret                                  = "virtualCenterSecret"
+	ClusterFieldVsphereSecret                                        = "vsphereSecret"
+	ClusterFieldWeavePasswordSecret                                  = "weavePasswordSecret"
+	ClusterFieldWindowsPreferedCluster                               = "windowsPreferedCluster"
+	ClusterFieldWindowsWorkerCount                                   = "windowsWorkerCount"
+)
+
+type Cluster struct {
+	types.Resource
+	AADClientCertSecret                                  string                         `json:"aadClientCertSecret,omitempty" yaml:"aadClientCertSecret,omitempty"`
+	AADClientSecret                                      string                         `json:"aadClientSecret,omitempty" yaml:"aadClientSecret,omitempty"`
+	AKSConfig                                            *AKSClusterConfigSpec          `json:"aksConfig,omitempty" yaml:"aksConfig,omitempty"`
+	AKSStatus                                            *AKSStatus                     `json:"aksStatus,omitempty" yaml:"aksStatus,omitempty"`
+	APIEndpoint                                          string                         `json:"apiEndpoint,omitempty" yaml:"apiEndpoint,omitempty"`
+	AgentEnvVars                                         []EnvVar                       `json:"agentEnvVars,omitempty" yaml:"agentEnvVars,omitempty"`
+	AgentFeatures                                        map[string]bool                `json:"agentFeatures,omitempty" yaml:"agentFeatures,omitempty"`
+	AgentImage                                           string                         `json:"agentImage,omitempty" yaml:"agentImage,omitempty"`
+	AgentImageOverride                                   string                         `json:"agentImageOverride,omitempty" yaml:"agentImageOverride,omitempty"`
+	Allocatable                                          map[string]string              `json:"allocatable,omitempty" yaml:"allocatable,omitempty"`
+	Annotations                                          map[string]string              `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	AppliedAgentEnvVars                                  []EnvVar                       `json:"appliedAgentEnvVars,omitempty" yaml:"appliedAgentEnvVars,omitempty"`
+	AppliedClusterAgentDeploymentCustomization           *AgentDeploymentCustomization  `json:"appliedClusterAgentDeploymentCustomization,omitempty" yaml:"appliedClusterAgentDeploymentCustomization,omitempty"`
+	AppliedEnableNetworkPolicy                           bool                           `json:"appliedEnableNetworkPolicy,omitempty" yaml:"appliedEnableNetworkPolicy,omitempty"`
+	AppliedSpec                                          *ClusterSpec                   `json:"appliedSpec,omitempty" yaml:"appliedSpec,omitempty"`
+	AuthImage                                            string                         `json:"authImage,omitempty" yaml:"authImage,omitempty"`
+	CACert                                               string                         `json:"caCert,omitempty" yaml:"caCert,omitempty"`
+	Capabilities                                         *Capabilities                  `json:"capabilities,omitempty" yaml:"capabilities,omitempty"`
+	Capacity                                             map[string]string              `json:"capacity,omitempty" yaml:"capacity,omitempty"`
+	CertificatesExpiration                               map[string]CertExpiration      `json:"certificatesExpiration,omitempty" yaml:"certificatesExpiration,omitempty"`
+	ClusterAgentDeploymentCustomization                  *AgentDeploymentCustomization  `json:"clusterAgentDeploymentCustomization,omitempty" yaml:"clusterAgentDeploymentCustomization,omitempty"`
+	ClusterSecrets                                       *ClusterSecrets                `json:"clusterSecrets,omitempty" yaml:"clusterSecrets,omitempty"`
+	ClusterTemplateAnswers                               *Answer                        `json:"answers,omitempty" yaml:"answers,omitempty"`
+	ClusterTemplateID                                    string                         `json:"clusterTemplateId,omitempty" yaml:"clusterTemplateId,omitempty"`
+	ClusterTemplateQuestions                             []Question                     `json:"questions,omitempty" yaml:"questions,omitempty"`
+	ClusterTemplateRevisionID                            string                         `json:"clusterTemplateRevisionId,omitempty" yaml:"clusterTemplateRevisionId,omitempty"`
+	ComponentStatuses                                    []ClusterComponentStatus       `json:"componentStatuses,omitempty" yaml:"componentStatuses,omitempty"`
+	Conditions                                           []ClusterCondition             `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	Created                                              string                         `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID                                            string                         `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	CurrentCisRunName                                    string                         `json:"currentCisRunName,omitempty" yaml:"currentCisRunName,omitempty"`
+	DefaultClusterRoleForProjectMembers                  string                         `json:"defaultClusterRoleForProjectMembers,omitempty" yaml:"defaultClusterRoleForProjectMembers,omitempty"`
+	DefaultPodSecurityAdmissionConfigurationTemplateName string                         `json:"defaultPodSecurityAdmissionConfigurationTemplateName,omitempty" yaml:"defaultPodSecurityAdmissionConfigurationTemplateName,omitempty"`
+	Description                                          string                         `json:"description,omitempty" yaml:"description,omitempty"`
+	DesiredAgentImage                                    string                         `json:"desiredAgentImage,omitempty" yaml:"desiredAgentImage,omitempty"`
+	DesiredAuthImage                                     string                         `json:"desiredAuthImage,omitempty" yaml:"desiredAuthImage,omitempty"`
+	DockerRootDir                                        string                         `json:"dockerRootDir,omitempty" yaml:"dockerRootDir,omitempty"`
+	Driver                                               string                         `json:"driver,omitempty" yaml:"driver,omitempty"`
+	EKSConfig                                            *EKSClusterConfigSpec          `json:"eksConfig,omitempty" yaml:"eksConfig,omitempty"`
+	EKSStatus                                            *EKSStatus                     `json:"eksStatus,omitempty" yaml:"eksStatus,omitempty"`
+	EnableNetworkPolicy                                  *bool                          `json:"enableNetworkPolicy,omitempty" yaml:"enableNetworkPolicy,omitempty"`
+	FailedSpec                                           *ClusterSpec                   `json:"failedSpec,omitempty" yaml:"failedSpec,omitempty"`
+	FleetAgentDeploymentCustomization                    *AgentDeploymentCustomization  `json:"fleetAgentDeploymentCustomization,omitempty" yaml:"fleetAgentDeploymentCustomization,omitempty"`
+	FleetWorkspaceName                                   string                         `json:"fleetWorkspaceName,omitempty" yaml:"fleetWorkspaceName,omitempty"`
+	GKEConfig                                            *GKEClusterConfigSpec          `json:"gkeConfig,omitempty" yaml:"gkeConfig,omitempty"`
+	GKEStatus                                            *GKEStatus                     `json:"gkeStatus,omitempty" yaml:"gkeStatus,omitempty"`
+	ImportedConfig                                       *ImportedConfig                `json:"importedConfig,omitempty" yaml:"importedConfig,omitempty"`
+	Internal                                             bool                           `json:"internal,omitempty" yaml:"internal,omitempty"`
+	IstioEnabled                                         bool                           `json:"istioEnabled,omitempty" yaml:"istioEnabled,omitempty"`
+	K3sConfig                                            *K3sConfig                     `json:"k3sConfig,omitempty" yaml:"k3sConfig,omitempty"`
+	Labels                                               map[string]string              `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Limits                                               map[string]string              `json:"limits,omitempty" yaml:"limits,omitempty"`
+	LinuxWorkerCount                                     int64                          `json:"linuxWorkerCount,omitempty" yaml:"linuxWorkerCount,omitempty"`
+	LocalClusterAuthEndpoint                             *LocalClusterAuthEndpoint      `json:"localClusterAuthEndpoint,omitempty" yaml:"localClusterAuthEndpoint,omitempty"`
+	Name                                                 string                         `json:"name,omitempty" yaml:"name,omitempty"`
+	NodeCount                                            int64                          `json:"nodeCount,omitempty" yaml:"nodeCount,omitempty"`
+	NodeVersion                                          int64                          `json:"nodeVersion,omitempty" yaml:"nodeVersion,omitempty"`
+	OpenStackSecret                                      string                         `json:"openStackSecret,omitempty" yaml:"openStackSecret,omitempty"`
+	OwnerReferences                                      []OwnerReference               `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	PrivateRegistrySecret                                string                         `json:"privateRegistrySecret,omitempty" yaml:"privateRegistrySecret,omitempty"`
+	Provider                                             string                         `json:"provider,omitempty" yaml:"provider,omitempty"`
+	RancherKubernetesEngineConfig                        *RancherKubernetesEngineConfig `json:"rancherKubernetesEngineConfig,omitempty" yaml:"rancherKubernetesEngineConfig,omitempty"`
+	Removed                                              string                         `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Requested                                            map[string]string              `json:"requested,omitempty" yaml:"requested,omitempty"`
+	Rke2Config                                           *Rke2Config                    `json:"rke2Config,omitempty" yaml:"rke2Config,omitempty"`
+	S3CredentialSecret                                   string                         `json:"s3CredentialSecret,omitempty" yaml:"s3CredentialSecret,omitempty"`
+	ServiceAccountTokenSecret                            string                         `json:"serviceAccountTokenSecret,omitempty" yaml:"serviceAccountTokenSecret,omitempty"`
+	State                                                string                         `json:"state,omitempty" yaml:"state,omitempty"`
+	Transitioning                                        string                         `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage                                 string                         `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                                                 string                         `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	Version                                              *Info                          `json:"version,omitempty" yaml:"version,omitempty"`
+	VirtualCenterSecret                                  string                         `json:"virtualCenterSecret,omitempty" yaml:"virtualCenterSecret,omitempty"`
+	VsphereSecret                                        string                         `json:"vsphereSecret,omitempty" yaml:"vsphereSecret,omitempty"`
+	WeavePasswordSecret                                  string                         `json:"weavePasswordSecret,omitempty" yaml:"weavePasswordSecret,omitempty"`
+	WindowsPreferedCluster                               bool                           `json:"windowsPreferedCluster,omitempty" yaml:"windowsPreferedCluster,omitempty"`
+	WindowsWorkerCount                                   int64                          `json:"windowsWorkerCount,omitempty" yaml:"windowsWorkerCount,omitempty"`
+}
+
+type ClusterCollection struct {
+	types.Collection
+	Data   []Cluster `json:"data,omitempty"`
+	client *ClusterClient
+}
+
+type ClusterClient struct {
+	apiClient *Client
+}
+
+type ClusterOperations interface {
+	List(opts *types.ListOpts) (*ClusterCollection, error)
+	ListAll(opts *types.ListOpts) (*ClusterCollection, error)
+	Create(opts *Cluster) (*Cluster, error)
+	Update(existing *Cluster, updates interface{}) (*Cluster, error)
+	Replace(existing *Cluster) (*Cluster, error)
+	ByID(id string) (*Cluster, error)
+	Delete(container *Cluster) error
+
+	ActionBackupEtcd(resource *Cluster) error
+
+	ActionExportYaml(resource *Cluster) (*ExportOutput, error)
+
+	ActionGenerateKubeconfig(resource *Cluster) (*GenerateKubeConfigOutput, error)
+
+	ActionImportYaml(resource *Cluster, input *ImportClusterYamlInput) (*ImportYamlOutput, error)
+
+	ActionRestoreFromEtcdBackup(resource *Cluster, input *RestoreFromEtcdBackupInput) error
+
+	ActionRotateCertificates(resource *Cluster, input *RotateCertificateInput) (*RotateCertificateOutput, error)
+
+	ActionRotateEncryptionKey(resource *Cluster) (*RotateEncryptionKeyOutput, error)
+
+	ActionSaveAsTemplate(resource *Cluster, input *SaveAsTemplateInput) (*SaveAsTemplateOutput, error)
+}
+
+func newClusterClient(apiClient *Client) *ClusterClient {
+	return &ClusterClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *ClusterClient) Create(container *Cluster) (*Cluster, error) {
+	resp := &Cluster{}
+	err := c.apiClient.Ops.DoCreate(ClusterType, container, resp)
+	return resp, err
+}
+
+func (c *ClusterClient) Update(existing *Cluster, updates interface{}) (*Cluster, error) {
+	resp := &Cluster{}
+	err := c.apiClient.Ops.DoUpdate(ClusterType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *ClusterClient) Replace(obj *Cluster) (*Cluster, error) {
+	resp := &Cluster{}
+	err := c.apiClient.Ops.DoReplace(ClusterType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *ClusterClient) List(opts *types.ListOpts) (*ClusterCollection, error) {
+	resp := &ClusterCollection{}
+	err := c.apiClient.Ops.DoList(ClusterType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *ClusterClient) ListAll(opts *types.ListOpts) (*ClusterCollection, error) {
+	resp := &ClusterCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *ClusterCollection) Next() (*ClusterCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &ClusterCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *ClusterClient) ByID(id string) (*Cluster, error) {
+	resp := &Cluster{}
+	err := c.apiClient.Ops.DoByID(ClusterType, id, resp)
+	return resp, err
+}
+
+func (c *ClusterClient) Delete(container *Cluster) error {
+	return c.apiClient.Ops.DoResourceDelete(ClusterType, &container.Resource)
+}
+
+func (c *ClusterClient) ActionBackupEtcd(resource *Cluster) error {
+	err := c.apiClient.Ops.DoAction(ClusterType, "backupEtcd", &resource.Resource, nil, nil)
+	return err
+}
+
+func (c *ClusterClient) ActionExportYaml(resource *Cluster) (*ExportOutput, error) {
+	resp := &ExportOutput{}
+	err := c.apiClient.Ops.DoAction(ClusterType, "exportYaml", &resource.Resource, nil, resp)
+	return resp, err
+}
+
+func (c *ClusterClient) ActionGenerateKubeconfig(resource *Cluster) (*GenerateKubeConfigOutput, error) {
+	resp := &GenerateKubeConfigOutput{}
+	err := c.apiClient.Ops.DoAction(ClusterType, "generateKubeconfig", &resource.Resource, nil, resp)
+	return resp, err
+}
+
+func (c *ClusterClient) ActionImportYaml(resource *Cluster, input *ImportClusterYamlInput) (*ImportYamlOutput, error) {
+	resp := &ImportYamlOutput{}
+	err := c.apiClient.Ops.DoAction(ClusterType, "importYaml", &resource.Resource, input, resp)
+	return resp, err
+}
+
+func (c *ClusterClient) ActionRestoreFromEtcdBackup(resource *Cluster, input *RestoreFromEtcdBackupInput) error {
+	err := c.apiClient.Ops.DoAction(ClusterType, "restoreFromEtcdBackup", &resource.Resource, input, nil)
+	return err
+}
+
+func (c *ClusterClient) ActionRotateCertificates(resource *Cluster, input *RotateCertificateInput) (*RotateCertificateOutput, error) {
+	resp := &RotateCertificateOutput{}
+	err := c.apiClient.Ops.DoAction(ClusterType, "rotateCertificates", &resource.Resource, input, resp)
+	return resp, err
+}
+
+func (c *ClusterClient) ActionRotateEncryptionKey(resource *Cluster) (*RotateEncryptionKeyOutput, error) {
+	resp := &RotateEncryptionKeyOutput{}
+	err := c.apiClient.Ops.DoAction(ClusterType, "rotateEncryptionKey", &resource.Resource, nil, resp)
+	return resp, err
+}
+
+func (c *ClusterClient) ActionSaveAsTemplate(resource *Cluster, input *SaveAsTemplateInput) (*SaveAsTemplateOutput, error) {
+	resp := &SaveAsTemplateOutput{}
+	err := c.apiClient.Ops.DoAction(ClusterType, "saveAsTemplate", &resource.Resource, input, resp)
+	return resp, err
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_catalog.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_catalog.go
new file mode 100644
index 00000000..d555f2bf
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_catalog.go
@@ -0,0 +1,168 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	ClusterCatalogType                      = "clusterCatalog"
+	ClusterCatalogFieldAnnotations          = "annotations"
+	ClusterCatalogFieldBranch               = "branch"
+	ClusterCatalogFieldCatalogSecrets       = "catalogSecrets"
+	ClusterCatalogFieldClusterID            = "clusterId"
+	ClusterCatalogFieldCommit               = "commit"
+	ClusterCatalogFieldConditions           = "conditions"
+	ClusterCatalogFieldCreated              = "created"
+	ClusterCatalogFieldCreatorID            = "creatorId"
+	ClusterCatalogFieldCredentialSecret     = "credentialSecret"
+	ClusterCatalogFieldDescription          = "description"
+	ClusterCatalogFieldHelmVersion          = "helmVersion"
+	ClusterCatalogFieldKind                 = "kind"
+	ClusterCatalogFieldLabels               = "labels"
+	ClusterCatalogFieldLastRefreshTimestamp = "lastRefreshTimestamp"
+	ClusterCatalogFieldName                 = "name"
+	ClusterCatalogFieldNamespaceId          = "namespaceId"
+	ClusterCatalogFieldOwnerReferences      = "ownerReferences"
+	ClusterCatalogFieldPassword             = "password"
+	ClusterCatalogFieldRemoved              = "removed"
+	ClusterCatalogFieldState                = "state"
+	ClusterCatalogFieldTransitioning        = "transitioning"
+	ClusterCatalogFieldTransitioningMessage = "transitioningMessage"
+	ClusterCatalogFieldURL                  = "url"
+	ClusterCatalogFieldUUID                 = "uuid"
+	ClusterCatalogFieldUsername             = "username"
+)
+
+type ClusterCatalog struct {
+	types.Resource
+	Annotations          map[string]string  `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Branch               string             `json:"branch,omitempty" yaml:"branch,omitempty"`
+	CatalogSecrets       *CatalogSecrets    `json:"catalogSecrets,omitempty" yaml:"catalogSecrets,omitempty"`
+	ClusterID            string             `json:"clusterId,omitempty" yaml:"clusterId,omitempty"`
+	Commit               string             `json:"commit,omitempty" yaml:"commit,omitempty"`
+	Conditions           []CatalogCondition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	Created              string             `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID            string             `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	CredentialSecret     string             `json:"credentialSecret,omitempty" yaml:"credentialSecret,omitempty"`
+	Description          string             `json:"description,omitempty" yaml:"description,omitempty"`
+	HelmVersion          string             `json:"helmVersion,omitempty" yaml:"helmVersion,omitempty"`
+	Kind                 string             `json:"kind,omitempty" yaml:"kind,omitempty"`
+	Labels               map[string]string  `json:"labels,omitempty" yaml:"labels,omitempty"`
+	LastRefreshTimestamp string             `json:"lastRefreshTimestamp,omitempty" yaml:"lastRefreshTimestamp,omitempty"`
+	Name                 string             `json:"name,omitempty" yaml:"name,omitempty"`
+	NamespaceId          string             `json:"namespaceId,omitempty" yaml:"namespaceId,omitempty"`
+	OwnerReferences      []OwnerReference   `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Password             string             `json:"password,omitempty" yaml:"password,omitempty"`
+	Removed              string             `json:"removed,omitempty" yaml:"removed,omitempty"`
+	State                string             `json:"state,omitempty" yaml:"state,omitempty"`
+	Transitioning        string             `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage string             `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	URL                  string             `json:"url,omitempty" yaml:"url,omitempty"`
+	UUID                 string             `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	Username             string             `json:"username,omitempty" yaml:"username,omitempty"`
+}
+
+type ClusterCatalogCollection struct {
+	types.Collection
+	Data   []ClusterCatalog `json:"data,omitempty"`
+	client *ClusterCatalogClient
+}
+
+type ClusterCatalogClient struct {
+	apiClient *Client
+}
+
+type ClusterCatalogOperations interface {
+	List(opts *types.ListOpts) (*ClusterCatalogCollection, error)
+	ListAll(opts *types.ListOpts) (*ClusterCatalogCollection, error)
+	Create(opts *ClusterCatalog) (*ClusterCatalog, error)
+	Update(existing *ClusterCatalog, updates interface{}) (*ClusterCatalog, error)
+	Replace(existing *ClusterCatalog) (*ClusterCatalog, error)
+	ByID(id string) (*ClusterCatalog, error)
+	Delete(container *ClusterCatalog) error
+
+	ActionRefresh(resource *ClusterCatalog) (*CatalogRefresh, error)
+
+	CollectionActionRefresh(resource *ClusterCatalogCollection) (*CatalogRefresh, error)
+}
+
+func newClusterCatalogClient(apiClient *Client) *ClusterCatalogClient {
+	return &ClusterCatalogClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *ClusterCatalogClient) Create(container *ClusterCatalog) (*ClusterCatalog, error) {
+	resp := &ClusterCatalog{}
+	err := c.apiClient.Ops.DoCreate(ClusterCatalogType, container, resp)
+	return resp, err
+}
+
+func (c *ClusterCatalogClient) Update(existing *ClusterCatalog, updates interface{}) (*ClusterCatalog, error) {
+	resp := &ClusterCatalog{}
+	err := c.apiClient.Ops.DoUpdate(ClusterCatalogType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *ClusterCatalogClient) Replace(obj *ClusterCatalog) (*ClusterCatalog, error) {
+	resp := &ClusterCatalog{}
+	err := c.apiClient.Ops.DoReplace(ClusterCatalogType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *ClusterCatalogClient) List(opts *types.ListOpts) (*ClusterCatalogCollection, error) {
+	resp := &ClusterCatalogCollection{}
+	err := c.apiClient.Ops.DoList(ClusterCatalogType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *ClusterCatalogClient) ListAll(opts *types.ListOpts) (*ClusterCatalogCollection, error) {
+	resp := &ClusterCatalogCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *ClusterCatalogCollection) Next() (*ClusterCatalogCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &ClusterCatalogCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *ClusterCatalogClient) ByID(id string) (*ClusterCatalog, error) {
+	resp := &ClusterCatalog{}
+	err := c.apiClient.Ops.DoByID(ClusterCatalogType, id, resp)
+	return resp, err
+}
+
+func (c *ClusterCatalogClient) Delete(container *ClusterCatalog) error {
+	return c.apiClient.Ops.DoResourceDelete(ClusterCatalogType, &container.Resource)
+}
+
+func (c *ClusterCatalogClient) ActionRefresh(resource *ClusterCatalog) (*CatalogRefresh, error) {
+	resp := &CatalogRefresh{}
+	err := c.apiClient.Ops.DoAction(ClusterCatalogType, "refresh", &resource.Resource, nil, resp)
+	return resp, err
+}
+
+func (c *ClusterCatalogClient) CollectionActionRefresh(resource *ClusterCatalogCollection) (*CatalogRefresh, error) {
+	resp := &CatalogRefresh{}
+	err := c.apiClient.Ops.DoCollectionAction(ClusterCatalogType, "refresh", &resource.Collection, nil, resp)
+	return resp, err
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_component_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_component_status.go
new file mode 100644
index 00000000..9955ee88
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_component_status.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	ClusterComponentStatusType            = "clusterComponentStatus"
+	ClusterComponentStatusFieldConditions = "conditions"
+	ClusterComponentStatusFieldName       = "name"
+)
+
+type ClusterComponentStatus struct {
+	Conditions []ComponentCondition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	Name       string               `json:"name,omitempty" yaml:"name,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_condition.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_condition.go
new file mode 100644
index 00000000..1ecf2ee4
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_condition.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	ClusterConditionType                    = "clusterCondition"
+	ClusterConditionFieldLastTransitionTime = "lastTransitionTime"
+	ClusterConditionFieldLastUpdateTime     = "lastUpdateTime"
+	ClusterConditionFieldMessage            = "message"
+	ClusterConditionFieldReason             = "reason"
+	ClusterConditionFieldStatus             = "status"
+	ClusterConditionFieldType               = "type"
+)
+
+type ClusterCondition struct {
+	LastTransitionTime string `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty"`
+	LastUpdateTime     string `json:"lastUpdateTime,omitempty" yaml:"lastUpdateTime,omitempty"`
+	Message            string `json:"message,omitempty" yaml:"message,omitempty"`
+	Reason             string `json:"reason,omitempty" yaml:"reason,omitempty"`
+	Status             string `json:"status,omitempty" yaml:"status,omitempty"`
+	Type               string `json:"type,omitempty" yaml:"type,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_registration_token.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_registration_token.go
new file mode 100644
index 00000000..2b0e191f
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_registration_token.go
@@ -0,0 +1,144 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	ClusterRegistrationTokenType                            = "clusterRegistrationToken"
+	ClusterRegistrationTokenFieldAnnotations                = "annotations"
+	ClusterRegistrationTokenFieldClusterID                  = "clusterId"
+	ClusterRegistrationTokenFieldCommand                    = "command"
+	ClusterRegistrationTokenFieldCreated                    = "created"
+	ClusterRegistrationTokenFieldCreatorID                  = "creatorId"
+	ClusterRegistrationTokenFieldInsecureCommand            = "insecureCommand"
+	ClusterRegistrationTokenFieldInsecureNodeCommand        = "insecureNodeCommand"
+	ClusterRegistrationTokenFieldInsecureWindowsNodeCommand = "insecureWindowsNodeCommand"
+	ClusterRegistrationTokenFieldLabels                     = "labels"
+	ClusterRegistrationTokenFieldManifestURL                = "manifestUrl"
+	ClusterRegistrationTokenFieldName                       = "name"
+	ClusterRegistrationTokenFieldNamespaceId                = "namespaceId"
+	ClusterRegistrationTokenFieldNodeCommand                = "nodeCommand"
+	ClusterRegistrationTokenFieldOwnerReferences            = "ownerReferences"
+	ClusterRegistrationTokenFieldRemoved                    = "removed"
+	ClusterRegistrationTokenFieldState                      = "state"
+	ClusterRegistrationTokenFieldToken                      = "token"
+	ClusterRegistrationTokenFieldTransitioning              = "transitioning"
+	ClusterRegistrationTokenFieldTransitioningMessage       = "transitioningMessage"
+	ClusterRegistrationTokenFieldUUID                       = "uuid"
+	ClusterRegistrationTokenFieldWindowsNodeCommand         = "windowsNodeCommand"
+)
+
+type ClusterRegistrationToken struct {
+	types.Resource
+	Annotations                map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	ClusterID                  string            `json:"clusterId,omitempty" yaml:"clusterId,omitempty"`
+	Command                    string            `json:"command,omitempty" yaml:"command,omitempty"`
+	Created                    string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID                  string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	InsecureCommand            string            `json:"insecureCommand,omitempty" yaml:"insecureCommand,omitempty"`
+	InsecureNodeCommand        string            `json:"insecureNodeCommand,omitempty" yaml:"insecureNodeCommand,omitempty"`
+	InsecureWindowsNodeCommand string            `json:"insecureWindowsNodeCommand,omitempty" yaml:"insecureWindowsNodeCommand,omitempty"`
+	Labels                     map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	ManifestURL                string            `json:"manifestUrl,omitempty" yaml:"manifestUrl,omitempty"`
+	Name                       string            `json:"name,omitempty" yaml:"name,omitempty"`
+	NamespaceId                string            `json:"namespaceId,omitempty" yaml:"namespaceId,omitempty"`
+	NodeCommand                string            `json:"nodeCommand,omitempty" yaml:"nodeCommand,omitempty"`
+	OwnerReferences            []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed                    string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	State                      string            `json:"state,omitempty" yaml:"state,omitempty"`
+	Token                      string            `json:"token,omitempty" yaml:"token,omitempty"`
+	Transitioning              string            `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage       string            `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                       string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	WindowsNodeCommand         string            `json:"windowsNodeCommand,omitempty" yaml:"windowsNodeCommand,omitempty"`
+}
+
+type ClusterRegistrationTokenCollection struct {
+	types.Collection
+	Data   []ClusterRegistrationToken `json:"data,omitempty"`
+	client *ClusterRegistrationTokenClient
+}
+
+type ClusterRegistrationTokenClient struct {
+	apiClient *Client
+}
+
+type ClusterRegistrationTokenOperations interface {
+	List(opts *types.ListOpts) (*ClusterRegistrationTokenCollection, error)
+	ListAll(opts *types.ListOpts) (*ClusterRegistrationTokenCollection, error)
+	Create(opts *ClusterRegistrationToken) (*ClusterRegistrationToken, error)
+	Update(existing *ClusterRegistrationToken, updates interface{}) (*ClusterRegistrationToken, error)
+	Replace(existing *ClusterRegistrationToken) (*ClusterRegistrationToken, error)
+	ByID(id string) (*ClusterRegistrationToken, error)
+	Delete(container *ClusterRegistrationToken) error
+}
+
+func newClusterRegistrationTokenClient(apiClient *Client) *ClusterRegistrationTokenClient {
+	return &ClusterRegistrationTokenClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *ClusterRegistrationTokenClient) Create(container *ClusterRegistrationToken) (*ClusterRegistrationToken, error) {
+	resp := &ClusterRegistrationToken{}
+	err := c.apiClient.Ops.DoCreate(ClusterRegistrationTokenType, container, resp)
+	return resp, err
+}
+
+func (c *ClusterRegistrationTokenClient) Update(existing *ClusterRegistrationToken, updates interface{}) (*ClusterRegistrationToken, error) {
+	resp := &ClusterRegistrationToken{}
+	err := c.apiClient.Ops.DoUpdate(ClusterRegistrationTokenType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *ClusterRegistrationTokenClient) Replace(obj *ClusterRegistrationToken) (*ClusterRegistrationToken, error) {
+	resp := &ClusterRegistrationToken{}
+	err := c.apiClient.Ops.DoReplace(ClusterRegistrationTokenType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *ClusterRegistrationTokenClient) List(opts *types.ListOpts) (*ClusterRegistrationTokenCollection, error) {
+	resp := &ClusterRegistrationTokenCollection{}
+	err := c.apiClient.Ops.DoList(ClusterRegistrationTokenType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *ClusterRegistrationTokenClient) ListAll(opts *types.ListOpts) (*ClusterRegistrationTokenCollection, error) {
+	resp := &ClusterRegistrationTokenCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *ClusterRegistrationTokenCollection) Next() (*ClusterRegistrationTokenCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &ClusterRegistrationTokenCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *ClusterRegistrationTokenClient) ByID(id string) (*ClusterRegistrationToken, error) {
+	resp := &ClusterRegistrationToken{}
+	err := c.apiClient.Ops.DoByID(ClusterRegistrationTokenType, id, resp)
+	return resp, err
+}
+
+func (c *ClusterRegistrationTokenClient) Delete(container *ClusterRegistrationToken) error {
+	return c.apiClient.Ops.DoResourceDelete(ClusterRegistrationTokenType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_registration_token_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_registration_token_spec.go
new file mode 100644
index 00000000..9a0fd3f2
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_registration_token_spec.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	ClusterRegistrationTokenSpecType           = "clusterRegistrationTokenSpec"
+	ClusterRegistrationTokenSpecFieldClusterID = "clusterId"
+)
+
+type ClusterRegistrationTokenSpec struct {
+	ClusterID string `json:"clusterId,omitempty" yaml:"clusterId,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_registration_token_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_registration_token_status.go
new file mode 100644
index 00000000..1e51b105
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_registration_token_status.go
@@ -0,0 +1,24 @@
+package client
+
+const (
+	ClusterRegistrationTokenStatusType                            = "clusterRegistrationTokenStatus"
+	ClusterRegistrationTokenStatusFieldCommand                    = "command"
+	ClusterRegistrationTokenStatusFieldInsecureCommand            = "insecureCommand"
+	ClusterRegistrationTokenStatusFieldInsecureNodeCommand        = "insecureNodeCommand"
+	ClusterRegistrationTokenStatusFieldInsecureWindowsNodeCommand = "insecureWindowsNodeCommand"
+	ClusterRegistrationTokenStatusFieldManifestURL                = "manifestUrl"
+	ClusterRegistrationTokenStatusFieldNodeCommand                = "nodeCommand"
+	ClusterRegistrationTokenStatusFieldToken                      = "token"
+	ClusterRegistrationTokenStatusFieldWindowsNodeCommand         = "windowsNodeCommand"
+)
+
+type ClusterRegistrationTokenStatus struct {
+	Command                    string `json:"command,omitempty" yaml:"command,omitempty"`
+	InsecureCommand            string `json:"insecureCommand,omitempty" yaml:"insecureCommand,omitempty"`
+	InsecureNodeCommand        string `json:"insecureNodeCommand,omitempty" yaml:"insecureNodeCommand,omitempty"`
+	InsecureWindowsNodeCommand string `json:"insecureWindowsNodeCommand,omitempty" yaml:"insecureWindowsNodeCommand,omitempty"`
+	ManifestURL                string `json:"manifestUrl,omitempty" yaml:"manifestUrl,omitempty"`
+	NodeCommand                string `json:"nodeCommand,omitempty" yaml:"nodeCommand,omitempty"`
+	Token                      string `json:"token,omitempty" yaml:"token,omitempty"`
+	WindowsNodeCommand         string `json:"windowsNodeCommand,omitempty" yaml:"windowsNodeCommand,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_role_template_binding.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_role_template_binding.go
new file mode 100644
index 00000000..e4301c21
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_role_template_binding.go
@@ -0,0 +1,132 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	ClusterRoleTemplateBindingType                  = "clusterRoleTemplateBinding"
+	ClusterRoleTemplateBindingFieldAnnotations      = "annotations"
+	ClusterRoleTemplateBindingFieldClusterID        = "clusterId"
+	ClusterRoleTemplateBindingFieldCreated          = "created"
+	ClusterRoleTemplateBindingFieldCreatorID        = "creatorId"
+	ClusterRoleTemplateBindingFieldGroupID          = "groupId"
+	ClusterRoleTemplateBindingFieldGroupPrincipalID = "groupPrincipalId"
+	ClusterRoleTemplateBindingFieldLabels           = "labels"
+	ClusterRoleTemplateBindingFieldName             = "name"
+	ClusterRoleTemplateBindingFieldNamespaceId      = "namespaceId"
+	ClusterRoleTemplateBindingFieldOwnerReferences  = "ownerReferences"
+	ClusterRoleTemplateBindingFieldRemoved          = "removed"
+	ClusterRoleTemplateBindingFieldRoleTemplateID   = "roleTemplateId"
+	ClusterRoleTemplateBindingFieldUUID             = "uuid"
+	ClusterRoleTemplateBindingFieldUserID           = "userId"
+	ClusterRoleTemplateBindingFieldUserPrincipalID  = "userPrincipalId"
+)
+
+type ClusterRoleTemplateBinding struct {
+	types.Resource
+	Annotations      map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	ClusterID        string            `json:"clusterId,omitempty" yaml:"clusterId,omitempty"`
+	Created          string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID        string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	GroupID          string            `json:"groupId,omitempty" yaml:"groupId,omitempty"`
+	GroupPrincipalID string            `json:"groupPrincipalId,omitempty" yaml:"groupPrincipalId,omitempty"`
+	Labels           map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name             string            `json:"name,omitempty" yaml:"name,omitempty"`
+	NamespaceId      string            `json:"namespaceId,omitempty" yaml:"namespaceId,omitempty"`
+	OwnerReferences  []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed          string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	RoleTemplateID   string            `json:"roleTemplateId,omitempty" yaml:"roleTemplateId,omitempty"`
+	UUID             string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserID           string            `json:"userId,omitempty" yaml:"userId,omitempty"`
+	UserPrincipalID  string            `json:"userPrincipalId,omitempty" yaml:"userPrincipalId,omitempty"`
+}
+
+type ClusterRoleTemplateBindingCollection struct {
+	types.Collection
+	Data   []ClusterRoleTemplateBinding `json:"data,omitempty"`
+	client *ClusterRoleTemplateBindingClient
+}
+
+type ClusterRoleTemplateBindingClient struct {
+	apiClient *Client
+}
+
+type ClusterRoleTemplateBindingOperations interface {
+	List(opts *types.ListOpts) (*ClusterRoleTemplateBindingCollection, error)
+	ListAll(opts *types.ListOpts) (*ClusterRoleTemplateBindingCollection, error)
+	Create(opts *ClusterRoleTemplateBinding) (*ClusterRoleTemplateBinding, error)
+	Update(existing *ClusterRoleTemplateBinding, updates interface{}) (*ClusterRoleTemplateBinding, error)
+	Replace(existing *ClusterRoleTemplateBinding) (*ClusterRoleTemplateBinding, error)
+	ByID(id string) (*ClusterRoleTemplateBinding, error)
+	Delete(container *ClusterRoleTemplateBinding) error
+}
+
+func newClusterRoleTemplateBindingClient(apiClient *Client) *ClusterRoleTemplateBindingClient {
+	return &ClusterRoleTemplateBindingClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *ClusterRoleTemplateBindingClient) Create(container *ClusterRoleTemplateBinding) (*ClusterRoleTemplateBinding, error) {
+	resp := &ClusterRoleTemplateBinding{}
+	err := c.apiClient.Ops.DoCreate(ClusterRoleTemplateBindingType, container, resp)
+	return resp, err
+}
+
+func (c *ClusterRoleTemplateBindingClient) Update(existing *ClusterRoleTemplateBinding, updates interface{}) (*ClusterRoleTemplateBinding, error) {
+	resp := &ClusterRoleTemplateBinding{}
+	err := c.apiClient.Ops.DoUpdate(ClusterRoleTemplateBindingType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *ClusterRoleTemplateBindingClient) Replace(obj *ClusterRoleTemplateBinding) (*ClusterRoleTemplateBinding, error) {
+	resp := &ClusterRoleTemplateBinding{}
+	err := c.apiClient.Ops.DoReplace(ClusterRoleTemplateBindingType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *ClusterRoleTemplateBindingClient) List(opts *types.ListOpts) (*ClusterRoleTemplateBindingCollection, error) {
+	resp := &ClusterRoleTemplateBindingCollection{}
+	err := c.apiClient.Ops.DoList(ClusterRoleTemplateBindingType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *ClusterRoleTemplateBindingClient) ListAll(opts *types.ListOpts) (*ClusterRoleTemplateBindingCollection, error) {
+	resp := &ClusterRoleTemplateBindingCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *ClusterRoleTemplateBindingCollection) Next() (*ClusterRoleTemplateBindingCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &ClusterRoleTemplateBindingCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *ClusterRoleTemplateBindingClient) ByID(id string) (*ClusterRoleTemplateBinding, error) {
+	resp := &ClusterRoleTemplateBinding{}
+	err := c.apiClient.Ops.DoByID(ClusterRoleTemplateBindingType, id, resp)
+	return resp, err
+}
+
+func (c *ClusterRoleTemplateBindingClient) Delete(container *ClusterRoleTemplateBinding) error {
+	return c.apiClient.Ops.DoResourceDelete(ClusterRoleTemplateBindingType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_secrets.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_secrets.go
new file mode 100644
index 00000000..6f5cc764
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_secrets.go
@@ -0,0 +1,40 @@
+package client
+
+const (
+	ClusterSecretsType                                  = "clusterSecrets"
+	ClusterSecretsFieldAADClientCertSecret              = "aadClientCertSecret"
+	ClusterSecretsFieldAADClientSecret                  = "aadClientSecret"
+	ClusterSecretsFieldACIAPICUserKeySecret             = "aciAPICUserKeySecret"
+	ClusterSecretsFieldACIKafkaClientKeySecret          = "aciKafkaClientKeySecret"
+	ClusterSecretsFieldACITokenSecret                   = "aciTokenSecret"
+	ClusterSecretsFieldBastionHostSSHKeySecret          = "bastionHostSSHKeySecret"
+	ClusterSecretsFieldKubeletExtraEnvSecret            = "kubeletExtraEnvSecret"
+	ClusterSecretsFieldOpenStackSecret                  = "openStackSecret"
+	ClusterSecretsFieldPrivateRegistryECRSecret         = "privateRegistryECRSecret"
+	ClusterSecretsFieldPrivateRegistrySecret            = "privateRegistrySecret"
+	ClusterSecretsFieldPrivateRegistryURL               = "privateRegistryURL"
+	ClusterSecretsFieldS3CredentialSecret               = "s3CredentialSecret"
+	ClusterSecretsFieldSecretsEncryptionProvidersSecret = "secretsEncryptionProvidersSecret"
+	ClusterSecretsFieldVirtualCenterSecret              = "virtualCenterSecret"
+	ClusterSecretsFieldVsphereSecret                    = "vsphereSecret"
+	ClusterSecretsFieldWeavePasswordSecret              = "weavePasswordSecret"
+)
+
+type ClusterSecrets struct {
+	AADClientCertSecret              string `json:"aadClientCertSecret,omitempty" yaml:"aadClientCertSecret,omitempty"`
+	AADClientSecret                  string `json:"aadClientSecret,omitempty" yaml:"aadClientSecret,omitempty"`
+	ACIAPICUserKeySecret             string `json:"aciAPICUserKeySecret,omitempty" yaml:"aciAPICUserKeySecret,omitempty"`
+	ACIKafkaClientKeySecret          string `json:"aciKafkaClientKeySecret,omitempty" yaml:"aciKafkaClientKeySecret,omitempty"`
+	ACITokenSecret                   string `json:"aciTokenSecret,omitempty" yaml:"aciTokenSecret,omitempty"`
+	BastionHostSSHKeySecret          string `json:"bastionHostSSHKeySecret,omitempty" yaml:"bastionHostSSHKeySecret,omitempty"`
+	KubeletExtraEnvSecret            string `json:"kubeletExtraEnvSecret,omitempty" yaml:"kubeletExtraEnvSecret,omitempty"`
+	OpenStackSecret                  string `json:"openStackSecret,omitempty" yaml:"openStackSecret,omitempty"`
+	PrivateRegistryECRSecret         string `json:"privateRegistryECRSecret,omitempty" yaml:"privateRegistryECRSecret,omitempty"`
+	PrivateRegistrySecret            string `json:"privateRegistrySecret,omitempty" yaml:"privateRegistrySecret,omitempty"`
+	PrivateRegistryURL               string `json:"privateRegistryURL,omitempty" yaml:"privateRegistryURL,omitempty"`
+	S3CredentialSecret               string `json:"s3CredentialSecret,omitempty" yaml:"s3CredentialSecret,omitempty"`
+	SecretsEncryptionProvidersSecret string `json:"secretsEncryptionProvidersSecret,omitempty" yaml:"secretsEncryptionProvidersSecret,omitempty"`
+	VirtualCenterSecret              string `json:"virtualCenterSecret,omitempty" yaml:"virtualCenterSecret,omitempty"`
+	VsphereSecret                    string `json:"vsphereSecret,omitempty" yaml:"vsphereSecret,omitempty"`
+	WeavePasswordSecret              string `json:"weavePasswordSecret,omitempty" yaml:"weavePasswordSecret,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_spec.go
new file mode 100644
index 00000000..94664533
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_spec.go
@@ -0,0 +1,72 @@
+package client
+
+const (
+	ClusterSpecType                                                      = "clusterSpec"
+	ClusterSpecFieldAKSConfig                                            = "aksConfig"
+	ClusterSpecFieldAgentEnvVars                                         = "agentEnvVars"
+	ClusterSpecFieldAgentImageOverride                                   = "agentImageOverride"
+	ClusterSpecFieldAmazonElasticContainerServiceConfig                  = "amazonElasticContainerServiceConfig"
+	ClusterSpecFieldAzureKubernetesServiceConfig                         = "azureKubernetesServiceConfig"
+	ClusterSpecFieldClusterAgentDeploymentCustomization                  = "clusterAgentDeploymentCustomization"
+	ClusterSpecFieldClusterSecrets                                       = "clusterSecrets"
+	ClusterSpecFieldClusterTemplateAnswers                               = "answers"
+	ClusterSpecFieldClusterTemplateID                                    = "clusterTemplateId"
+	ClusterSpecFieldClusterTemplateQuestions                             = "questions"
+	ClusterSpecFieldClusterTemplateRevisionID                            = "clusterTemplateRevisionId"
+	ClusterSpecFieldDefaultClusterRoleForProjectMembers                  = "defaultClusterRoleForProjectMembers"
+	ClusterSpecFieldDefaultPodSecurityAdmissionConfigurationTemplateName = "defaultPodSecurityAdmissionConfigurationTemplateName"
+	ClusterSpecFieldDescription                                          = "description"
+	ClusterSpecFieldDesiredAgentImage                                    = "desiredAgentImage"
+	ClusterSpecFieldDesiredAuthImage                                     = "desiredAuthImage"
+	ClusterSpecFieldDisplayName                                          = "displayName"
+	ClusterSpecFieldDockerRootDir                                        = "dockerRootDir"
+	ClusterSpecFieldEKSConfig                                            = "eksConfig"
+	ClusterSpecFieldEnableNetworkPolicy                                  = "enableNetworkPolicy"
+	ClusterSpecFieldFleetAgentDeploymentCustomization                    = "fleetAgentDeploymentCustomization"
+	ClusterSpecFieldFleetWorkspaceName                                   = "fleetWorkspaceName"
+	ClusterSpecFieldGKEConfig                                            = "gkeConfig"
+	ClusterSpecFieldGenericEngineConfig                                  = "genericEngineConfig"
+	ClusterSpecFieldGoogleKubernetesEngineConfig                         = "googleKubernetesEngineConfig"
+	ClusterSpecFieldImportedConfig                                       = "importedConfig"
+	ClusterSpecFieldInternal                                             = "internal"
+	ClusterSpecFieldK3sConfig                                            = "k3sConfig"
+	ClusterSpecFieldLocalClusterAuthEndpoint                             = "localClusterAuthEndpoint"
+	ClusterSpecFieldRancherKubernetesEngineConfig                        = "rancherKubernetesEngineConfig"
+	ClusterSpecFieldRke2Config                                           = "rke2Config"
+	ClusterSpecFieldWindowsPreferedCluster                               = "windowsPreferedCluster"
+)
+
+type ClusterSpec struct {
+	AKSConfig                                            *AKSClusterConfigSpec          `json:"aksConfig,omitempty" yaml:"aksConfig,omitempty"`
+	AgentEnvVars                                         []EnvVar                       `json:"agentEnvVars,omitempty" yaml:"agentEnvVars,omitempty"`
+	AgentImageOverride                                   string                         `json:"agentImageOverride,omitempty" yaml:"agentImageOverride,omitempty"`
+	AmazonElasticContainerServiceConfig                  map[string]interface{}         `json:"amazonElasticContainerServiceConfig,omitempty" yaml:"amazonElasticContainerServiceConfig,omitempty"`
+	AzureKubernetesServiceConfig                         map[string]interface{}         `json:"azureKubernetesServiceConfig,omitempty" yaml:"azureKubernetesServiceConfig,omitempty"`
+	ClusterAgentDeploymentCustomization                  *AgentDeploymentCustomization  `json:"clusterAgentDeploymentCustomization,omitempty" yaml:"clusterAgentDeploymentCustomization,omitempty"`
+	ClusterSecrets                                       *ClusterSecrets                `json:"clusterSecrets,omitempty" yaml:"clusterSecrets,omitempty"`
+	ClusterTemplateAnswers                               *Answer                        `json:"answers,omitempty" yaml:"answers,omitempty"`
+	ClusterTemplateID                                    string                         `json:"clusterTemplateId,omitempty" yaml:"clusterTemplateId,omitempty"`
+	ClusterTemplateQuestions                             []Question                     `json:"questions,omitempty" yaml:"questions,omitempty"`
+	ClusterTemplateRevisionID                            string                         `json:"clusterTemplateRevisionId,omitempty" yaml:"clusterTemplateRevisionId,omitempty"`
+	DefaultClusterRoleForProjectMembers                  string                         `json:"defaultClusterRoleForProjectMembers,omitempty" yaml:"defaultClusterRoleForProjectMembers,omitempty"`
+	DefaultPodSecurityAdmissionConfigurationTemplateName string                         `json:"defaultPodSecurityAdmissionConfigurationTemplateName,omitempty" yaml:"defaultPodSecurityAdmissionConfigurationTemplateName,omitempty"`
+	Description                                          string                         `json:"description,omitempty" yaml:"description,omitempty"`
+	DesiredAgentImage                                    string                         `json:"desiredAgentImage,omitempty" yaml:"desiredAgentImage,omitempty"`
+	DesiredAuthImage                                     string                         `json:"desiredAuthImage,omitempty" yaml:"desiredAuthImage,omitempty"`
+	DisplayName                                          string                         `json:"displayName,omitempty" yaml:"displayName,omitempty"`
+	DockerRootDir                                        string                         `json:"dockerRootDir,omitempty" yaml:"dockerRootDir,omitempty"`
+	EKSConfig                                            *EKSClusterConfigSpec          `json:"eksConfig,omitempty" yaml:"eksConfig,omitempty"`
+	EnableNetworkPolicy                                  *bool                          `json:"enableNetworkPolicy,omitempty" yaml:"enableNetworkPolicy,omitempty"`
+	FleetAgentDeploymentCustomization                    *AgentDeploymentCustomization  `json:"fleetAgentDeploymentCustomization,omitempty" yaml:"fleetAgentDeploymentCustomization,omitempty"`
+	FleetWorkspaceName                                   string                         `json:"fleetWorkspaceName,omitempty" yaml:"fleetWorkspaceName,omitempty"`
+	GKEConfig                                            *GKEClusterConfigSpec          `json:"gkeConfig,omitempty" yaml:"gkeConfig,omitempty"`
+	GenericEngineConfig                                  map[string]interface{}         `json:"genericEngineConfig,omitempty" yaml:"genericEngineConfig,omitempty"`
+	GoogleKubernetesEngineConfig                         map[string]interface{}         `json:"googleKubernetesEngineConfig,omitempty" yaml:"googleKubernetesEngineConfig,omitempty"`
+	ImportedConfig                                       *ImportedConfig                `json:"importedConfig,omitempty" yaml:"importedConfig,omitempty"`
+	Internal                                             bool                           `json:"internal,omitempty" yaml:"internal,omitempty"`
+	K3sConfig                                            *K3sConfig                     `json:"k3sConfig,omitempty" yaml:"k3sConfig,omitempty"`
+	LocalClusterAuthEndpoint                             *LocalClusterAuthEndpoint      `json:"localClusterAuthEndpoint,omitempty" yaml:"localClusterAuthEndpoint,omitempty"`
+	RancherKubernetesEngineConfig                        *RancherKubernetesEngineConfig `json:"rancherKubernetesEngineConfig,omitempty" yaml:"rancherKubernetesEngineConfig,omitempty"`
+	Rke2Config                                           *Rke2Config                    `json:"rke2Config,omitempty" yaml:"rke2Config,omitempty"`
+	WindowsPreferedCluster                               bool                           `json:"windowsPreferedCluster,omitempty" yaml:"windowsPreferedCluster,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_spec_base.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_spec_base.go
new file mode 100644
index 00000000..d4585824
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_spec_base.go
@@ -0,0 +1,36 @@
+package client
+
+const (
+	ClusterSpecBaseType                                                      = "clusterSpecBase"
+	ClusterSpecBaseFieldAgentEnvVars                                         = "agentEnvVars"
+	ClusterSpecBaseFieldAgentImageOverride                                   = "agentImageOverride"
+	ClusterSpecBaseFieldClusterAgentDeploymentCustomization                  = "clusterAgentDeploymentCustomization"
+	ClusterSpecBaseFieldClusterSecrets                                       = "clusterSecrets"
+	ClusterSpecBaseFieldDefaultClusterRoleForProjectMembers                  = "defaultClusterRoleForProjectMembers"
+	ClusterSpecBaseFieldDefaultPodSecurityAdmissionConfigurationTemplateName = "defaultPodSecurityAdmissionConfigurationTemplateName"
+	ClusterSpecBaseFieldDesiredAgentImage                                    = "desiredAgentImage"
+	ClusterSpecBaseFieldDesiredAuthImage                                     = "desiredAuthImage"
+	ClusterSpecBaseFieldDockerRootDir                                        = "dockerRootDir"
+	ClusterSpecBaseFieldEnableNetworkPolicy                                  = "enableNetworkPolicy"
+	ClusterSpecBaseFieldFleetAgentDeploymentCustomization                    = "fleetAgentDeploymentCustomization"
+	ClusterSpecBaseFieldLocalClusterAuthEndpoint                             = "localClusterAuthEndpoint"
+	ClusterSpecBaseFieldRancherKubernetesEngineConfig                        = "rancherKubernetesEngineConfig"
+	ClusterSpecBaseFieldWindowsPreferedCluster                               = "windowsPreferedCluster"
+)
+
+type ClusterSpecBase struct {
+	AgentEnvVars                                         []EnvVar                       `json:"agentEnvVars,omitempty" yaml:"agentEnvVars,omitempty"`
+	AgentImageOverride                                   string                         `json:"agentImageOverride,omitempty" yaml:"agentImageOverride,omitempty"`
+	ClusterAgentDeploymentCustomization                  *AgentDeploymentCustomization  `json:"clusterAgentDeploymentCustomization,omitempty" yaml:"clusterAgentDeploymentCustomization,omitempty"`
+	ClusterSecrets                                       *ClusterSecrets                `json:"clusterSecrets,omitempty" yaml:"clusterSecrets,omitempty"`
+	DefaultClusterRoleForProjectMembers                  string                         `json:"defaultClusterRoleForProjectMembers,omitempty" yaml:"defaultClusterRoleForProjectMembers,omitempty"`
+	DefaultPodSecurityAdmissionConfigurationTemplateName string                         `json:"defaultPodSecurityAdmissionConfigurationTemplateName,omitempty" yaml:"defaultPodSecurityAdmissionConfigurationTemplateName,omitempty"`
+	DesiredAgentImage                                    string                         `json:"desiredAgentImage,omitempty" yaml:"desiredAgentImage,omitempty"`
+	DesiredAuthImage                                     string                         `json:"desiredAuthImage,omitempty" yaml:"desiredAuthImage,omitempty"`
+	DockerRootDir                                        string                         `json:"dockerRootDir,omitempty" yaml:"dockerRootDir,omitempty"`
+	EnableNetworkPolicy                                  *bool                          `json:"enableNetworkPolicy,omitempty" yaml:"enableNetworkPolicy,omitempty"`
+	FleetAgentDeploymentCustomization                    *AgentDeploymentCustomization  `json:"fleetAgentDeploymentCustomization,omitempty" yaml:"fleetAgentDeploymentCustomization,omitempty"`
+	LocalClusterAuthEndpoint                             *LocalClusterAuthEndpoint      `json:"localClusterAuthEndpoint,omitempty" yaml:"localClusterAuthEndpoint,omitempty"`
+	RancherKubernetesEngineConfig                        *RancherKubernetesEngineConfig `json:"rancherKubernetesEngineConfig,omitempty" yaml:"rancherKubernetesEngineConfig,omitempty"`
+	WindowsPreferedCluster                               bool                           `json:"windowsPreferedCluster,omitempty" yaml:"windowsPreferedCluster,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_status.go
new file mode 100644
index 00000000..25b838b1
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_status.go
@@ -0,0 +1,86 @@
+package client
+
+const (
+	ClusterStatusType                                            = "clusterStatus"
+	ClusterStatusFieldAADClientCertSecret                        = "aadClientCertSecret"
+	ClusterStatusFieldAADClientSecret                            = "aadClientSecret"
+	ClusterStatusFieldAKSStatus                                  = "aksStatus"
+	ClusterStatusFieldAPIEndpoint                                = "apiEndpoint"
+	ClusterStatusFieldAgentFeatures                              = "agentFeatures"
+	ClusterStatusFieldAgentImage                                 = "agentImage"
+	ClusterStatusFieldAllocatable                                = "allocatable"
+	ClusterStatusFieldAppliedAgentEnvVars                        = "appliedAgentEnvVars"
+	ClusterStatusFieldAppliedClusterAgentDeploymentCustomization = "appliedClusterAgentDeploymentCustomization"
+	ClusterStatusFieldAppliedEnableNetworkPolicy                 = "appliedEnableNetworkPolicy"
+	ClusterStatusFieldAppliedSpec                                = "appliedSpec"
+	ClusterStatusFieldAuthImage                                  = "authImage"
+	ClusterStatusFieldCACert                                     = "caCert"
+	ClusterStatusFieldCapabilities                               = "capabilities"
+	ClusterStatusFieldCapacity                                   = "capacity"
+	ClusterStatusFieldCertificatesExpiration                     = "certificatesExpiration"
+	ClusterStatusFieldComponentStatuses                          = "componentStatuses"
+	ClusterStatusFieldConditions                                 = "conditions"
+	ClusterStatusFieldCurrentCisRunName                          = "currentCisRunName"
+	ClusterStatusFieldDriver                                     = "driver"
+	ClusterStatusFieldEKSStatus                                  = "eksStatus"
+	ClusterStatusFieldFailedSpec                                 = "failedSpec"
+	ClusterStatusFieldGKEStatus                                  = "gkeStatus"
+	ClusterStatusFieldIstioEnabled                               = "istioEnabled"
+	ClusterStatusFieldLimits                                     = "limits"
+	ClusterStatusFieldLinuxWorkerCount                           = "linuxWorkerCount"
+	ClusterStatusFieldNodeCount                                  = "nodeCount"
+	ClusterStatusFieldNodeVersion                                = "nodeVersion"
+	ClusterStatusFieldOpenStackSecret                            = "openStackSecret"
+	ClusterStatusFieldPrivateRegistrySecret                      = "privateRegistrySecret"
+	ClusterStatusFieldProvider                                   = "provider"
+	ClusterStatusFieldRequested                                  = "requested"
+	ClusterStatusFieldS3CredentialSecret                         = "s3CredentialSecret"
+	ClusterStatusFieldServiceAccountTokenSecret                  = "serviceAccountTokenSecret"
+	ClusterStatusFieldVersion                                    = "version"
+	ClusterStatusFieldVirtualCenterSecret                        = "virtualCenterSecret"
+	ClusterStatusFieldVsphereSecret                              = "vsphereSecret"
+	ClusterStatusFieldWeavePasswordSecret                        = "weavePasswordSecret"
+	ClusterStatusFieldWindowsWorkerCount                         = "windowsWorkerCount"
+)
+
+type ClusterStatus struct {
+	AADClientCertSecret                        string                        `json:"aadClientCertSecret,omitempty" yaml:"aadClientCertSecret,omitempty"`
+	AADClientSecret                            string                        `json:"aadClientSecret,omitempty" yaml:"aadClientSecret,omitempty"`
+	AKSStatus                                  *AKSStatus                    `json:"aksStatus,omitempty" yaml:"aksStatus,omitempty"`
+	APIEndpoint                                string                        `json:"apiEndpoint,omitempty" yaml:"apiEndpoint,omitempty"`
+	AgentFeatures                              map[string]bool               `json:"agentFeatures,omitempty" yaml:"agentFeatures,omitempty"`
+	AgentImage                                 string                        `json:"agentImage,omitempty" yaml:"agentImage,omitempty"`
+	Allocatable                                map[string]string             `json:"allocatable,omitempty" yaml:"allocatable,omitempty"`
+	AppliedAgentEnvVars                        []EnvVar                      `json:"appliedAgentEnvVars,omitempty" yaml:"appliedAgentEnvVars,omitempty"`
+	AppliedClusterAgentDeploymentCustomization *AgentDeploymentCustomization `json:"appliedClusterAgentDeploymentCustomization,omitempty" yaml:"appliedClusterAgentDeploymentCustomization,omitempty"`
+	AppliedEnableNetworkPolicy                 bool                          `json:"appliedEnableNetworkPolicy,omitempty" yaml:"appliedEnableNetworkPolicy,omitempty"`
+	AppliedSpec                                *ClusterSpec                  `json:"appliedSpec,omitempty" yaml:"appliedSpec,omitempty"`
+	AuthImage                                  string                        `json:"authImage,omitempty" yaml:"authImage,omitempty"`
+	CACert                                     string                        `json:"caCert,omitempty" yaml:"caCert,omitempty"`
+	Capabilities                               *Capabilities                 `json:"capabilities,omitempty" yaml:"capabilities,omitempty"`
+	Capacity                                   map[string]string             `json:"capacity,omitempty" yaml:"capacity,omitempty"`
+	CertificatesExpiration                     map[string]CertExpiration     `json:"certificatesExpiration,omitempty" yaml:"certificatesExpiration,omitempty"`
+	ComponentStatuses                          []ClusterComponentStatus      `json:"componentStatuses,omitempty" yaml:"componentStatuses,omitempty"`
+	Conditions                                 []ClusterCondition            `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	CurrentCisRunName                          string                        `json:"currentCisRunName,omitempty" yaml:"currentCisRunName,omitempty"`
+	Driver                                     string                        `json:"driver,omitempty" yaml:"driver,omitempty"`
+	EKSStatus                                  *EKSStatus                    `json:"eksStatus,omitempty" yaml:"eksStatus,omitempty"`
+	FailedSpec                                 *ClusterSpec                  `json:"failedSpec,omitempty" yaml:"failedSpec,omitempty"`
+	GKEStatus                                  *GKEStatus                    `json:"gkeStatus,omitempty" yaml:"gkeStatus,omitempty"`
+	IstioEnabled                               bool                          `json:"istioEnabled,omitempty" yaml:"istioEnabled,omitempty"`
+	Limits                                     map[string]string             `json:"limits,omitempty" yaml:"limits,omitempty"`
+	LinuxWorkerCount                           int64                         `json:"linuxWorkerCount,omitempty" yaml:"linuxWorkerCount,omitempty"`
+	NodeCount                                  int64                         `json:"nodeCount,omitempty" yaml:"nodeCount,omitempty"`
+	NodeVersion                                int64                         `json:"nodeVersion,omitempty" yaml:"nodeVersion,omitempty"`
+	OpenStackSecret                            string                        `json:"openStackSecret,omitempty" yaml:"openStackSecret,omitempty"`
+	PrivateRegistrySecret                      string                        `json:"privateRegistrySecret,omitempty" yaml:"privateRegistrySecret,omitempty"`
+	Provider                                   string                        `json:"provider,omitempty" yaml:"provider,omitempty"`
+	Requested                                  map[string]string             `json:"requested,omitempty" yaml:"requested,omitempty"`
+	S3CredentialSecret                         string                        `json:"s3CredentialSecret,omitempty" yaml:"s3CredentialSecret,omitempty"`
+	ServiceAccountTokenSecret                  string                        `json:"serviceAccountTokenSecret,omitempty" yaml:"serviceAccountTokenSecret,omitempty"`
+	Version                                    *Info                         `json:"version,omitempty" yaml:"version,omitempty"`
+	VirtualCenterSecret                        string                        `json:"virtualCenterSecret,omitempty" yaml:"virtualCenterSecret,omitempty"`
+	VsphereSecret                              string                        `json:"vsphereSecret,omitempty" yaml:"vsphereSecret,omitempty"`
+	WeavePasswordSecret                        string                        `json:"weavePasswordSecret,omitempty" yaml:"weavePasswordSecret,omitempty"`
+	WindowsWorkerCount                         int64                         `json:"windowsWorkerCount,omitempty" yaml:"windowsWorkerCount,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template.go
new file mode 100644
index 00000000..63fcdb4d
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template.go
@@ -0,0 +1,124 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	ClusterTemplateType                   = "clusterTemplate"
+	ClusterTemplateFieldAnnotations       = "annotations"
+	ClusterTemplateFieldCreated           = "created"
+	ClusterTemplateFieldCreatorID         = "creatorId"
+	ClusterTemplateFieldDefaultRevisionID = "defaultRevisionId"
+	ClusterTemplateFieldDescription       = "description"
+	ClusterTemplateFieldLabels            = "labels"
+	ClusterTemplateFieldMembers           = "members"
+	ClusterTemplateFieldName              = "name"
+	ClusterTemplateFieldOwnerReferences   = "ownerReferences"
+	ClusterTemplateFieldRemoved           = "removed"
+	ClusterTemplateFieldUUID              = "uuid"
+)
+
+type ClusterTemplate struct {
+	types.Resource
+	Annotations       map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created           string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID         string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	DefaultRevisionID string            `json:"defaultRevisionId,omitempty" yaml:"defaultRevisionId,omitempty"`
+	Description       string            `json:"description,omitempty" yaml:"description,omitempty"`
+	Labels            map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Members           []Member          `json:"members,omitempty" yaml:"members,omitempty"`
+	Name              string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences   []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed           string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	UUID              string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type ClusterTemplateCollection struct {
+	types.Collection
+	Data   []ClusterTemplate `json:"data,omitempty"`
+	client *ClusterTemplateClient
+}
+
+type ClusterTemplateClient struct {
+	apiClient *Client
+}
+
+type ClusterTemplateOperations interface {
+	List(opts *types.ListOpts) (*ClusterTemplateCollection, error)
+	ListAll(opts *types.ListOpts) (*ClusterTemplateCollection, error)
+	Create(opts *ClusterTemplate) (*ClusterTemplate, error)
+	Update(existing *ClusterTemplate, updates interface{}) (*ClusterTemplate, error)
+	Replace(existing *ClusterTemplate) (*ClusterTemplate, error)
+	ByID(id string) (*ClusterTemplate, error)
+	Delete(container *ClusterTemplate) error
+}
+
+func newClusterTemplateClient(apiClient *Client) *ClusterTemplateClient {
+	return &ClusterTemplateClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *ClusterTemplateClient) Create(container *ClusterTemplate) (*ClusterTemplate, error) {
+	resp := &ClusterTemplate{}
+	err := c.apiClient.Ops.DoCreate(ClusterTemplateType, container, resp)
+	return resp, err
+}
+
+func (c *ClusterTemplateClient) Update(existing *ClusterTemplate, updates interface{}) (*ClusterTemplate, error) {
+	resp := &ClusterTemplate{}
+	err := c.apiClient.Ops.DoUpdate(ClusterTemplateType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *ClusterTemplateClient) Replace(obj *ClusterTemplate) (*ClusterTemplate, error) {
+	resp := &ClusterTemplate{}
+	err := c.apiClient.Ops.DoReplace(ClusterTemplateType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *ClusterTemplateClient) List(opts *types.ListOpts) (*ClusterTemplateCollection, error) {
+	resp := &ClusterTemplateCollection{}
+	err := c.apiClient.Ops.DoList(ClusterTemplateType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *ClusterTemplateClient) ListAll(opts *types.ListOpts) (*ClusterTemplateCollection, error) {
+	resp := &ClusterTemplateCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *ClusterTemplateCollection) Next() (*ClusterTemplateCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &ClusterTemplateCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *ClusterTemplateClient) ByID(id string) (*ClusterTemplate, error) {
+	resp := &ClusterTemplate{}
+	err := c.apiClient.Ops.DoByID(ClusterTemplateType, id, resp)
+	return resp, err
+}
+
+func (c *ClusterTemplateClient) Delete(container *ClusterTemplate) error {
+	return c.apiClient.Ops.DoResourceDelete(ClusterTemplateType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_questions_output.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_questions_output.go
new file mode 100644
index 00000000..2de33990
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_questions_output.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	ClusterTemplateQuestionsOutputType           = "clusterTemplateQuestionsOutput"
+	ClusterTemplateQuestionsOutputFieldQuestions = "questions"
+)
+
+type ClusterTemplateQuestionsOutput struct {
+	Questions []Question `json:"questions,omitempty" yaml:"questions,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_revision.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_revision.go
new file mode 100644
index 00000000..6986d4e3
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_revision.go
@@ -0,0 +1,186 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	ClusterTemplateRevisionType                                  = "clusterTemplateRevision"
+	ClusterTemplateRevisionFieldAADClientCertSecret              = "aadClientCertSecret"
+	ClusterTemplateRevisionFieldAADClientSecret                  = "aadClientSecret"
+	ClusterTemplateRevisionFieldACIAPICUserKeySecret             = "aciAPICUserKeySecret"
+	ClusterTemplateRevisionFieldACIKafkaClientKeySecret          = "aciKafkaClientKeySecret"
+	ClusterTemplateRevisionFieldACITokenSecret                   = "aciTokenSecret"
+	ClusterTemplateRevisionFieldAnnotations                      = "annotations"
+	ClusterTemplateRevisionFieldBastionHostSSHKeySecret          = "bastionHostSSHKeySecret"
+	ClusterTemplateRevisionFieldClusterConfig                    = "clusterConfig"
+	ClusterTemplateRevisionFieldClusterTemplateID                = "clusterTemplateId"
+	ClusterTemplateRevisionFieldConditions                       = "conditions"
+	ClusterTemplateRevisionFieldCreated                          = "created"
+	ClusterTemplateRevisionFieldCreatorID                        = "creatorId"
+	ClusterTemplateRevisionFieldEnabled                          = "enabled"
+	ClusterTemplateRevisionFieldKubeletExtraEnvSecret            = "kubeletExtraEnvSecret"
+	ClusterTemplateRevisionFieldLabels                           = "labels"
+	ClusterTemplateRevisionFieldName                             = "name"
+	ClusterTemplateRevisionFieldOpenStackSecret                  = "openStackSecret"
+	ClusterTemplateRevisionFieldOwnerReferences                  = "ownerReferences"
+	ClusterTemplateRevisionFieldPrivateRegistryECRSecret         = "privateRegistryECRSecret"
+	ClusterTemplateRevisionFieldPrivateRegistrySecret            = "privateRegistrySecret"
+	ClusterTemplateRevisionFieldQuestions                        = "questions"
+	ClusterTemplateRevisionFieldRemoved                          = "removed"
+	ClusterTemplateRevisionFieldS3CredentialSecret               = "s3CredentialSecret"
+	ClusterTemplateRevisionFieldSecretsEncryptionProvidersSecret = "secretsEncryptionProvidersSecret"
+	ClusterTemplateRevisionFieldState                            = "state"
+	ClusterTemplateRevisionFieldTransitioning                    = "transitioning"
+	ClusterTemplateRevisionFieldTransitioningMessage             = "transitioningMessage"
+	ClusterTemplateRevisionFieldUUID                             = "uuid"
+	ClusterTemplateRevisionFieldVirtualCenterSecret              = "virtualCenterSecret"
+	ClusterTemplateRevisionFieldVsphereSecret                    = "vsphereSecret"
+	ClusterTemplateRevisionFieldWeavePasswordSecret              = "weavePasswordSecret"
+)
+
+type ClusterTemplateRevision struct {
+	types.Resource
+	AADClientCertSecret              string                             `json:"aadClientCertSecret,omitempty" yaml:"aadClientCertSecret,omitempty"`
+	AADClientSecret                  string                             `json:"aadClientSecret,omitempty" yaml:"aadClientSecret,omitempty"`
+	ACIAPICUserKeySecret             string                             `json:"aciAPICUserKeySecret,omitempty" yaml:"aciAPICUserKeySecret,omitempty"`
+	ACIKafkaClientKeySecret          string                             `json:"aciKafkaClientKeySecret,omitempty" yaml:"aciKafkaClientKeySecret,omitempty"`
+	ACITokenSecret                   string                             `json:"aciTokenSecret,omitempty" yaml:"aciTokenSecret,omitempty"`
+	Annotations                      map[string]string                  `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	BastionHostSSHKeySecret          string                             `json:"bastionHostSSHKeySecret,omitempty" yaml:"bastionHostSSHKeySecret,omitempty"`
+	ClusterConfig                    *ClusterSpecBase                   `json:"clusterConfig,omitempty" yaml:"clusterConfig,omitempty"`
+	ClusterTemplateID                string                             `json:"clusterTemplateId,omitempty" yaml:"clusterTemplateId,omitempty"`
+	Conditions                       []ClusterTemplateRevisionCondition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	Created                          string                             `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID                        string                             `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Enabled                          *bool                              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	KubeletExtraEnvSecret            string                             `json:"kubeletExtraEnvSecret,omitempty" yaml:"kubeletExtraEnvSecret,omitempty"`
+	Labels                           map[string]string                  `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                             string                             `json:"name,omitempty" yaml:"name,omitempty"`
+	OpenStackSecret                  string                             `json:"openStackSecret,omitempty" yaml:"openStackSecret,omitempty"`
+	OwnerReferences                  []OwnerReference                   `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	PrivateRegistryECRSecret         string                             `json:"privateRegistryECRSecret,omitempty" yaml:"privateRegistryECRSecret,omitempty"`
+	PrivateRegistrySecret            string                             `json:"privateRegistrySecret,omitempty" yaml:"privateRegistrySecret,omitempty"`
+	Questions                        []Question                         `json:"questions,omitempty" yaml:"questions,omitempty"`
+	Removed                          string                             `json:"removed,omitempty" yaml:"removed,omitempty"`
+	S3CredentialSecret               string                             `json:"s3CredentialSecret,omitempty" yaml:"s3CredentialSecret,omitempty"`
+	SecretsEncryptionProvidersSecret string                             `json:"secretsEncryptionProvidersSecret,omitempty" yaml:"secretsEncryptionProvidersSecret,omitempty"`
+	State                            string                             `json:"state,omitempty" yaml:"state,omitempty"`
+	Transitioning                    string                             `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage             string                             `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                             string                             `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	VirtualCenterSecret              string                             `json:"virtualCenterSecret,omitempty" yaml:"virtualCenterSecret,omitempty"`
+	VsphereSecret                    string                             `json:"vsphereSecret,omitempty" yaml:"vsphereSecret,omitempty"`
+	WeavePasswordSecret              string                             `json:"weavePasswordSecret,omitempty" yaml:"weavePasswordSecret,omitempty"`
+}
+
+type ClusterTemplateRevisionCollection struct {
+	types.Collection
+	Data   []ClusterTemplateRevision `json:"data,omitempty"`
+	client *ClusterTemplateRevisionClient
+}
+
+type ClusterTemplateRevisionClient struct {
+	apiClient *Client
+}
+
+type ClusterTemplateRevisionOperations interface {
+	List(opts *types.ListOpts) (*ClusterTemplateRevisionCollection, error)
+	ListAll(opts *types.ListOpts) (*ClusterTemplateRevisionCollection, error)
+	Create(opts *ClusterTemplateRevision) (*ClusterTemplateRevision, error)
+	Update(existing *ClusterTemplateRevision, updates interface{}) (*ClusterTemplateRevision, error)
+	Replace(existing *ClusterTemplateRevision) (*ClusterTemplateRevision, error)
+	ByID(id string) (*ClusterTemplateRevision, error)
+	Delete(container *ClusterTemplateRevision) error
+
+	ActionDisable(resource *ClusterTemplateRevision) error
+
+	ActionEnable(resource *ClusterTemplateRevision) error
+
+	CollectionActionListquestions(resource *ClusterTemplateRevisionCollection) (*ClusterTemplateQuestionsOutput, error)
+}
+
+func newClusterTemplateRevisionClient(apiClient *Client) *ClusterTemplateRevisionClient {
+	return &ClusterTemplateRevisionClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *ClusterTemplateRevisionClient) Create(container *ClusterTemplateRevision) (*ClusterTemplateRevision, error) {
+	resp := &ClusterTemplateRevision{}
+	err := c.apiClient.Ops.DoCreate(ClusterTemplateRevisionType, container, resp)
+	return resp, err
+}
+
+func (c *ClusterTemplateRevisionClient) Update(existing *ClusterTemplateRevision, updates interface{}) (*ClusterTemplateRevision, error) {
+	resp := &ClusterTemplateRevision{}
+	err := c.apiClient.Ops.DoUpdate(ClusterTemplateRevisionType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *ClusterTemplateRevisionClient) Replace(obj *ClusterTemplateRevision) (*ClusterTemplateRevision, error) {
+	resp := &ClusterTemplateRevision{}
+	err := c.apiClient.Ops.DoReplace(ClusterTemplateRevisionType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *ClusterTemplateRevisionClient) List(opts *types.ListOpts) (*ClusterTemplateRevisionCollection, error) {
+	resp := &ClusterTemplateRevisionCollection{}
+	err := c.apiClient.Ops.DoList(ClusterTemplateRevisionType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *ClusterTemplateRevisionClient) ListAll(opts *types.ListOpts) (*ClusterTemplateRevisionCollection, error) {
+	resp := &ClusterTemplateRevisionCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *ClusterTemplateRevisionCollection) Next() (*ClusterTemplateRevisionCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &ClusterTemplateRevisionCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *ClusterTemplateRevisionClient) ByID(id string) (*ClusterTemplateRevision, error) {
+	resp := &ClusterTemplateRevision{}
+	err := c.apiClient.Ops.DoByID(ClusterTemplateRevisionType, id, resp)
+	return resp, err
+}
+
+func (c *ClusterTemplateRevisionClient) Delete(container *ClusterTemplateRevision) error {
+	return c.apiClient.Ops.DoResourceDelete(ClusterTemplateRevisionType, &container.Resource)
+}
+
+func (c *ClusterTemplateRevisionClient) ActionDisable(resource *ClusterTemplateRevision) error {
+	err := c.apiClient.Ops.DoAction(ClusterTemplateRevisionType, "disable", &resource.Resource, nil, nil)
+	return err
+}
+
+func (c *ClusterTemplateRevisionClient) ActionEnable(resource *ClusterTemplateRevision) error {
+	err := c.apiClient.Ops.DoAction(ClusterTemplateRevisionType, "enable", &resource.Resource, nil, nil)
+	return err
+}
+
+func (c *ClusterTemplateRevisionClient) CollectionActionListquestions(resource *ClusterTemplateRevisionCollection) (*ClusterTemplateQuestionsOutput, error) {
+	resp := &ClusterTemplateQuestionsOutput{}
+	err := c.apiClient.Ops.DoCollectionAction(ClusterTemplateRevisionType, "listquestions", &resource.Collection, nil, resp)
+	return resp, err
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_revision_condition.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_revision_condition.go
new file mode 100644
index 00000000..114d52be
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_revision_condition.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	ClusterTemplateRevisionConditionType                    = "clusterTemplateRevisionCondition"
+	ClusterTemplateRevisionConditionFieldLastTransitionTime = "lastTransitionTime"
+	ClusterTemplateRevisionConditionFieldLastUpdateTime     = "lastUpdateTime"
+	ClusterTemplateRevisionConditionFieldMessage            = "message"
+	ClusterTemplateRevisionConditionFieldReason             = "reason"
+	ClusterTemplateRevisionConditionFieldStatus             = "status"
+	ClusterTemplateRevisionConditionFieldType               = "type"
+)
+
+type ClusterTemplateRevisionCondition struct {
+	LastTransitionTime string `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty"`
+	LastUpdateTime     string `json:"lastUpdateTime,omitempty" yaml:"lastUpdateTime,omitempty"`
+	Message            string `json:"message,omitempty" yaml:"message,omitempty"`
+	Reason             string `json:"reason,omitempty" yaml:"reason,omitempty"`
+	Status             string `json:"status,omitempty" yaml:"status,omitempty"`
+	Type               string `json:"type,omitempty" yaml:"type,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_revision_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_revision_spec.go
new file mode 100644
index 00000000..72a46d6c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_revision_spec.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	ClusterTemplateRevisionSpecType                   = "clusterTemplateRevisionSpec"
+	ClusterTemplateRevisionSpecFieldClusterConfig     = "clusterConfig"
+	ClusterTemplateRevisionSpecFieldClusterTemplateID = "clusterTemplateId"
+	ClusterTemplateRevisionSpecFieldDisplayName       = "displayName"
+	ClusterTemplateRevisionSpecFieldEnabled           = "enabled"
+	ClusterTemplateRevisionSpecFieldQuestions         = "questions"
+)
+
+type ClusterTemplateRevisionSpec struct {
+	ClusterConfig     *ClusterSpecBase `json:"clusterConfig,omitempty" yaml:"clusterConfig,omitempty"`
+	ClusterTemplateID string           `json:"clusterTemplateId,omitempty" yaml:"clusterTemplateId,omitempty"`
+	DisplayName       string           `json:"displayName,omitempty" yaml:"displayName,omitempty"`
+	Enabled           *bool            `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	Questions         []Question       `json:"questions,omitempty" yaml:"questions,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_revision_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_revision_status.go
new file mode 100644
index 00000000..1aa56ea2
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_revision_status.go
@@ -0,0 +1,40 @@
+package client
+
+const (
+	ClusterTemplateRevisionStatusType                                  = "clusterTemplateRevisionStatus"
+	ClusterTemplateRevisionStatusFieldAADClientCertSecret              = "aadClientCertSecret"
+	ClusterTemplateRevisionStatusFieldAADClientSecret                  = "aadClientSecret"
+	ClusterTemplateRevisionStatusFieldACIAPICUserKeySecret             = "aciAPICUserKeySecret"
+	ClusterTemplateRevisionStatusFieldACIKafkaClientKeySecret          = "aciKafkaClientKeySecret"
+	ClusterTemplateRevisionStatusFieldACITokenSecret                   = "aciTokenSecret"
+	ClusterTemplateRevisionStatusFieldBastionHostSSHKeySecret          = "bastionHostSSHKeySecret"
+	ClusterTemplateRevisionStatusFieldConditions                       = "conditions"
+	ClusterTemplateRevisionStatusFieldKubeletExtraEnvSecret            = "kubeletExtraEnvSecret"
+	ClusterTemplateRevisionStatusFieldOpenStackSecret                  = "openStackSecret"
+	ClusterTemplateRevisionStatusFieldPrivateRegistryECRSecret         = "privateRegistryECRSecret"
+	ClusterTemplateRevisionStatusFieldPrivateRegistrySecret            = "privateRegistrySecret"
+	ClusterTemplateRevisionStatusFieldS3CredentialSecret               = "s3CredentialSecret"
+	ClusterTemplateRevisionStatusFieldSecretsEncryptionProvidersSecret = "secretsEncryptionProvidersSecret"
+	ClusterTemplateRevisionStatusFieldVirtualCenterSecret              = "virtualCenterSecret"
+	ClusterTemplateRevisionStatusFieldVsphereSecret                    = "vsphereSecret"
+	ClusterTemplateRevisionStatusFieldWeavePasswordSecret              = "weavePasswordSecret"
+)
+
+type ClusterTemplateRevisionStatus struct {
+	AADClientCertSecret              string                             `json:"aadClientCertSecret,omitempty" yaml:"aadClientCertSecret,omitempty"`
+	AADClientSecret                  string                             `json:"aadClientSecret,omitempty" yaml:"aadClientSecret,omitempty"`
+	ACIAPICUserKeySecret             string                             `json:"aciAPICUserKeySecret,omitempty" yaml:"aciAPICUserKeySecret,omitempty"`
+	ACIKafkaClientKeySecret          string                             `json:"aciKafkaClientKeySecret,omitempty" yaml:"aciKafkaClientKeySecret,omitempty"`
+	ACITokenSecret                   string                             `json:"aciTokenSecret,omitempty" yaml:"aciTokenSecret,omitempty"`
+	BastionHostSSHKeySecret          string                             `json:"bastionHostSSHKeySecret,omitempty" yaml:"bastionHostSSHKeySecret,omitempty"`
+	Conditions                       []ClusterTemplateRevisionCondition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	KubeletExtraEnvSecret            string                             `json:"kubeletExtraEnvSecret,omitempty" yaml:"kubeletExtraEnvSecret,omitempty"`
+	OpenStackSecret                  string                             `json:"openStackSecret,omitempty" yaml:"openStackSecret,omitempty"`
+	PrivateRegistryECRSecret         string                             `json:"privateRegistryECRSecret,omitempty" yaml:"privateRegistryECRSecret,omitempty"`
+	PrivateRegistrySecret            string                             `json:"privateRegistrySecret,omitempty" yaml:"privateRegistrySecret,omitempty"`
+	S3CredentialSecret               string                             `json:"s3CredentialSecret,omitempty" yaml:"s3CredentialSecret,omitempty"`
+	SecretsEncryptionProvidersSecret string                             `json:"secretsEncryptionProvidersSecret,omitempty" yaml:"secretsEncryptionProvidersSecret,omitempty"`
+	VirtualCenterSecret              string                             `json:"virtualCenterSecret,omitempty" yaml:"virtualCenterSecret,omitempty"`
+	VsphereSecret                    string                             `json:"vsphereSecret,omitempty" yaml:"vsphereSecret,omitempty"`
+	WeavePasswordSecret              string                             `json:"weavePasswordSecret,omitempty" yaml:"weavePasswordSecret,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_spec.go
new file mode 100644
index 00000000..6d0270f5
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_template_spec.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	ClusterTemplateSpecType                   = "clusterTemplateSpec"
+	ClusterTemplateSpecFieldDefaultRevisionID = "defaultRevisionId"
+	ClusterTemplateSpecFieldDescription       = "description"
+	ClusterTemplateSpecFieldDisplayName       = "displayName"
+	ClusterTemplateSpecFieldMembers           = "members"
+)
+
+type ClusterTemplateSpec struct {
+	DefaultRevisionID string   `json:"defaultRevisionId,omitempty" yaml:"defaultRevisionId,omitempty"`
+	Description       string   `json:"description,omitempty" yaml:"description,omitempty"`
+	DisplayName       string   `json:"displayName,omitempty" yaml:"displayName,omitempty"`
+	Members           []Member `json:"members,omitempty" yaml:"members,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_trust_bundle_projection.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_trust_bundle_projection.go
new file mode 100644
index 00000000..61d322de
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_trust_bundle_projection.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	ClusterTrustBundleProjectionType               = "clusterTrustBundleProjection"
+	ClusterTrustBundleProjectionFieldLabelSelector = "labelSelector"
+	ClusterTrustBundleProjectionFieldName          = "name"
+	ClusterTrustBundleProjectionFieldOptional      = "optional"
+	ClusterTrustBundleProjectionFieldPath          = "path"
+	ClusterTrustBundleProjectionFieldSignerName    = "signerName"
+)
+
+type ClusterTrustBundleProjection struct {
+	LabelSelector *LabelSelector `json:"labelSelector,omitempty" yaml:"labelSelector,omitempty"`
+	Name          string         `json:"name,omitempty" yaml:"name,omitempty"`
+	Optional      *bool          `json:"optional,omitempty" yaml:"optional,omitempty"`
+	Path          string         `json:"path,omitempty" yaml:"path,omitempty"`
+	SignerName    string         `json:"signerName,omitempty" yaml:"signerName,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_upgrade_strategy.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_upgrade_strategy.go
new file mode 100644
index 00000000..c5081078
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cluster_upgrade_strategy.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	ClusterUpgradeStrategyType                   = "clusterUpgradeStrategy"
+	ClusterUpgradeStrategyFieldDrainServerNodes  = "drainServerNodes"
+	ClusterUpgradeStrategyFieldDrainWorkerNodes  = "drainWorkerNodes"
+	ClusterUpgradeStrategyFieldServerConcurrency = "serverConcurrency"
+	ClusterUpgradeStrategyFieldWorkerConcurrency = "workerConcurrency"
+)
+
+type ClusterUpgradeStrategy struct {
+	DrainServerNodes  bool  `json:"drainServerNodes,omitempty" yaml:"drainServerNodes,omitempty"`
+	DrainWorkerNodes  bool  `json:"drainWorkerNodes,omitempty" yaml:"drainWorkerNodes,omitempty"`
+	ServerConcurrency int64 `json:"serverConcurrency,omitempty" yaml:"serverConcurrency,omitempty"`
+	WorkerConcurrency int64 `json:"workerConcurrency,omitempty" yaml:"workerConcurrency,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cmek_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cmek_config.go
new file mode 100644
index 00000000..c30a6580
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cmek_config.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	CMEKConfigType          = "cmekConfig"
+	CMEKConfigFieldKeyName  = "keyName"
+	CMEKConfigFieldRingName = "ringName"
+)
+
+type CMEKConfig struct {
+	KeyName  string `json:"keyName,omitempty" yaml:"keyName,omitempty"`
+	RingName string `json:"ringName,omitempty" yaml:"ringName,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_component_condition.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_component_condition.go
new file mode 100644
index 00000000..ac235794
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_component_condition.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	ComponentConditionType         = "componentCondition"
+	ComponentConditionFieldError   = "error"
+	ComponentConditionFieldMessage = "message"
+	ComponentConditionFieldStatus  = "status"
+	ComponentConditionFieldType    = "type"
+)
+
+type ComponentCondition struct {
+	Error   string `json:"error,omitempty" yaml:"error,omitempty"`
+	Message string `json:"message,omitempty" yaml:"message,omitempty"`
+	Status  string `json:"status,omitempty" yaml:"status,omitempty"`
+	Type    string `json:"type,omitempty" yaml:"type,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_compose_condition.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_compose_condition.go
new file mode 100644
index 00000000..e2b5a1ec
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_compose_condition.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	ComposeConditionType                    = "composeCondition"
+	ComposeConditionFieldLastTransitionTime = "lastTransitionTime"
+	ComposeConditionFieldLastUpdateTime     = "lastUpdateTime"
+	ComposeConditionFieldMessage            = "message"
+	ComposeConditionFieldReason             = "reason"
+	ComposeConditionFieldStatus             = "status"
+	ComposeConditionFieldType               = "type"
+)
+
+type ComposeCondition struct {
+	LastTransitionTime string `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty"`
+	LastUpdateTime     string `json:"lastUpdateTime,omitempty" yaml:"lastUpdateTime,omitempty"`
+	Message            string `json:"message,omitempty" yaml:"message,omitempty"`
+	Reason             string `json:"reason,omitempty" yaml:"reason,omitempty"`
+	Status             string `json:"status,omitempty" yaml:"status,omitempty"`
+	Type               string `json:"type,omitempty" yaml:"type,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_compose_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_compose_config.go
new file mode 100644
index 00000000..7b926c8d
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_compose_config.go
@@ -0,0 +1,128 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	ComposeConfigType                      = "composeConfig"
+	ComposeConfigFieldAnnotations          = "annotations"
+	ComposeConfigFieldCreated              = "created"
+	ComposeConfigFieldCreatorID            = "creatorId"
+	ComposeConfigFieldLabels               = "labels"
+	ComposeConfigFieldName                 = "name"
+	ComposeConfigFieldOwnerReferences      = "ownerReferences"
+	ComposeConfigFieldRancherCompose       = "rancherCompose"
+	ComposeConfigFieldRemoved              = "removed"
+	ComposeConfigFieldState                = "state"
+	ComposeConfigFieldStatus               = "status"
+	ComposeConfigFieldTransitioning        = "transitioning"
+	ComposeConfigFieldTransitioningMessage = "transitioningMessage"
+	ComposeConfigFieldUUID                 = "uuid"
+)
+
+type ComposeConfig struct {
+	types.Resource
+	Annotations          map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created              string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID            string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Labels               map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                 string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences      []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	RancherCompose       string            `json:"rancherCompose,omitempty" yaml:"rancherCompose,omitempty"`
+	Removed              string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	State                string            `json:"state,omitempty" yaml:"state,omitempty"`
+	Status               *ComposeStatus    `json:"status,omitempty" yaml:"status,omitempty"`
+	Transitioning        string            `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage string            `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                 string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type ComposeConfigCollection struct {
+	types.Collection
+	Data   []ComposeConfig `json:"data,omitempty"`
+	client *ComposeConfigClient
+}
+
+type ComposeConfigClient struct {
+	apiClient *Client
+}
+
+type ComposeConfigOperations interface {
+	List(opts *types.ListOpts) (*ComposeConfigCollection, error)
+	ListAll(opts *types.ListOpts) (*ComposeConfigCollection, error)
+	Create(opts *ComposeConfig) (*ComposeConfig, error)
+	Update(existing *ComposeConfig, updates interface{}) (*ComposeConfig, error)
+	Replace(existing *ComposeConfig) (*ComposeConfig, error)
+	ByID(id string) (*ComposeConfig, error)
+	Delete(container *ComposeConfig) error
+}
+
+func newComposeConfigClient(apiClient *Client) *ComposeConfigClient {
+	return &ComposeConfigClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *ComposeConfigClient) Create(container *ComposeConfig) (*ComposeConfig, error) {
+	resp := &ComposeConfig{}
+	err := c.apiClient.Ops.DoCreate(ComposeConfigType, container, resp)
+	return resp, err
+}
+
+func (c *ComposeConfigClient) Update(existing *ComposeConfig, updates interface{}) (*ComposeConfig, error) {
+	resp := &ComposeConfig{}
+	err := c.apiClient.Ops.DoUpdate(ComposeConfigType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *ComposeConfigClient) Replace(obj *ComposeConfig) (*ComposeConfig, error) {
+	resp := &ComposeConfig{}
+	err := c.apiClient.Ops.DoReplace(ComposeConfigType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *ComposeConfigClient) List(opts *types.ListOpts) (*ComposeConfigCollection, error) {
+	resp := &ComposeConfigCollection{}
+	err := c.apiClient.Ops.DoList(ComposeConfigType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *ComposeConfigClient) ListAll(opts *types.ListOpts) (*ComposeConfigCollection, error) {
+	resp := &ComposeConfigCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *ComposeConfigCollection) Next() (*ComposeConfigCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &ComposeConfigCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *ComposeConfigClient) ByID(id string) (*ComposeConfig, error) {
+	resp := &ComposeConfig{}
+	err := c.apiClient.Ops.DoByID(ComposeConfigType, id, resp)
+	return resp, err
+}
+
+func (c *ComposeConfigClient) Delete(container *ComposeConfig) error {
+	return c.apiClient.Ops.DoResourceDelete(ComposeConfigType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_compose_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_compose_spec.go
new file mode 100644
index 00000000..6477b002
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_compose_spec.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	ComposeSpecType                = "composeSpec"
+	ComposeSpecFieldRancherCompose = "rancherCompose"
+)
+
+type ComposeSpec struct {
+	RancherCompose string `json:"rancherCompose,omitempty" yaml:"rancherCompose,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_compose_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_compose_status.go
new file mode 100644
index 00000000..53138f03
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_compose_status.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	ComposeStatusType            = "composeStatus"
+	ComposeStatusFieldConditions = "conditions"
+)
+
+type ComposeStatus struct {
+	Conditions []ComposeCondition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_condition.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_condition.go
new file mode 100644
index 00000000..7f502043
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_condition.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	ConditionType                    = "condition"
+	ConditionFieldLastTransitionTime = "lastTransitionTime"
+	ConditionFieldLastUpdateTime     = "lastUpdateTime"
+	ConditionFieldMessage            = "message"
+	ConditionFieldReason             = "reason"
+	ConditionFieldStatus             = "status"
+	ConditionFieldType               = "type"
+)
+
+type Condition struct {
+	LastTransitionTime string `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty"`
+	LastUpdateTime     string `json:"lastUpdateTime,omitempty" yaml:"lastUpdateTime,omitempty"`
+	Message            string `json:"message,omitempty" yaml:"message,omitempty"`
+	Reason             string `json:"reason,omitempty" yaml:"reason,omitempty"`
+	Status             string `json:"status,omitempty" yaml:"status,omitempty"`
+	Type               string `json:"type,omitempty" yaml:"type,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_config_map_key_selector.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_config_map_key_selector.go
new file mode 100644
index 00000000..e1b59911
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_config_map_key_selector.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	ConfigMapKeySelectorType          = "configMapKeySelector"
+	ConfigMapKeySelectorFieldKey      = "key"
+	ConfigMapKeySelectorFieldName     = "name"
+	ConfigMapKeySelectorFieldOptional = "optional"
+)
+
+type ConfigMapKeySelector struct {
+	Key      string `json:"key,omitempty" yaml:"key,omitempty"`
+	Name     string `json:"name,omitempty" yaml:"name,omitempty"`
+	Optional *bool  `json:"optional,omitempty" yaml:"optional,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_config_map_node_config_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_config_map_node_config_source.go
new file mode 100644
index 00000000..1f6d0900
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_config_map_node_config_source.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	ConfigMapNodeConfigSourceType                  = "configMapNodeConfigSource"
+	ConfigMapNodeConfigSourceFieldKubeletConfigKey = "kubeletConfigKey"
+	ConfigMapNodeConfigSourceFieldName             = "name"
+	ConfigMapNodeConfigSourceFieldNamespace        = "namespace"
+	ConfigMapNodeConfigSourceFieldResourceVersion  = "resourceVersion"
+	ConfigMapNodeConfigSourceFieldUID              = "uid"
+)
+
+type ConfigMapNodeConfigSource struct {
+	KubeletConfigKey string `json:"kubeletConfigKey,omitempty" yaml:"kubeletConfigKey,omitempty"`
+	Name             string `json:"name,omitempty" yaml:"name,omitempty"`
+	Namespace        string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
+	ResourceVersion  string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"`
+	UID              string `json:"uid,omitempty" yaml:"uid,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_config_map_projection.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_config_map_projection.go
new file mode 100644
index 00000000..94388a50
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_config_map_projection.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	ConfigMapProjectionType          = "configMapProjection"
+	ConfigMapProjectionFieldItems    = "items"
+	ConfigMapProjectionFieldName     = "name"
+	ConfigMapProjectionFieldOptional = "optional"
+)
+
+type ConfigMapProjection struct {
+	Items    []KeyToPath `json:"items,omitempty" yaml:"items,omitempty"`
+	Name     string      `json:"name,omitempty" yaml:"name,omitempty"`
+	Optional *bool       `json:"optional,omitempty" yaml:"optional,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_config_map_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_config_map_volume_source.go
new file mode 100644
index 00000000..4de7b8ad
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_config_map_volume_source.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	ConfigMapVolumeSourceType             = "configMapVolumeSource"
+	ConfigMapVolumeSourceFieldDefaultMode = "defaultMode"
+	ConfigMapVolumeSourceFieldItems       = "items"
+	ConfigMapVolumeSourceFieldName        = "name"
+	ConfigMapVolumeSourceFieldOptional    = "optional"
+)
+
+type ConfigMapVolumeSource struct {
+	DefaultMode *int64      `json:"defaultMode,omitempty" yaml:"defaultMode,omitempty"`
+	Items       []KeyToPath `json:"items,omitempty" yaml:"items,omitempty"`
+	Name        string      `json:"name,omitempty" yaml:"name,omitempty"`
+	Optional    *bool       `json:"optional,omitempty" yaml:"optional,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_container_image.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_container_image.go
new file mode 100644
index 00000000..5f141974
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_container_image.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	ContainerImageType           = "containerImage"
+	ContainerImageFieldNames     = "names"
+	ContainerImageFieldSizeBytes = "sizeBytes"
+)
+
+type ContainerImage struct {
+	Names     []string `json:"names,omitempty" yaml:"names,omitempty"`
+	SizeBytes int64    `json:"sizeBytes,omitempty" yaml:"sizeBytes,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_container_resource_limit.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_container_resource_limit.go
new file mode 100644
index 00000000..b36a4992
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_container_resource_limit.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	ContainerResourceLimitType                = "containerResourceLimit"
+	ContainerResourceLimitFieldLimitsCPU      = "limitsCpu"
+	ContainerResourceLimitFieldLimitsMemory   = "limitsMemory"
+	ContainerResourceLimitFieldRequestsCPU    = "requestsCpu"
+	ContainerResourceLimitFieldRequestsMemory = "requestsMemory"
+)
+
+type ContainerResourceLimit struct {
+	LimitsCPU      string `json:"limitsCpu,omitempty" yaml:"limitsCpu,omitempty"`
+	LimitsMemory   string `json:"limitsMemory,omitempty" yaml:"limitsMemory,omitempty"`
+	RequestsCPU    string `json:"requestsCpu,omitempty" yaml:"requestsCpu,omitempty"`
+	RequestsMemory string `json:"requestsMemory,omitempty" yaml:"requestsMemory,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cpu_info.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cpu_info.go
new file mode 100644
index 00000000..08764a5e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_cpu_info.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	CPUInfoType       = "cpuInfo"
+	CPUInfoFieldCount = "count"
+)
+
+type CPUInfo struct {
+	Count int64 `json:"count,omitempty" yaml:"count,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_csi_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_csi_volume_source.go
new file mode 100644
index 00000000..f341d530
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_csi_volume_source.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	CSIVolumeSourceType                      = "csiVolumeSource"
+	CSIVolumeSourceFieldDriver               = "driver"
+	CSIVolumeSourceFieldFSType               = "fsType"
+	CSIVolumeSourceFieldNodePublishSecretRef = "nodePublishSecretRef"
+	CSIVolumeSourceFieldReadOnly             = "readOnly"
+	CSIVolumeSourceFieldVolumeAttributes     = "volumeAttributes"
+)
+
+type CSIVolumeSource struct {
+	Driver               string                `json:"driver,omitempty" yaml:"driver,omitempty"`
+	FSType               string                `json:"fsType,omitempty" yaml:"fsType,omitempty"`
+	NodePublishSecretRef *LocalObjectReference `json:"nodePublishSecretRef,omitempty" yaml:"nodePublishSecretRef,omitempty"`
+	ReadOnly             *bool                 `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+	VolumeAttributes     map[string]string     `json:"volumeAttributes,omitempty" yaml:"volumeAttributes,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_custom_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_custom_config.go
new file mode 100644
index 00000000..677392bb
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_custom_config.go
@@ -0,0 +1,24 @@
+package client
+
+const (
+	CustomConfigType                 = "customConfig"
+	CustomConfigFieldAddress         = "address"
+	CustomConfigFieldDockerSocket    = "dockerSocket"
+	CustomConfigFieldInternalAddress = "internalAddress"
+	CustomConfigFieldLabel           = "label"
+	CustomConfigFieldSSHCert         = "sshCert"
+	CustomConfigFieldSSHKey          = "sshKey"
+	CustomConfigFieldTaints          = "taints"
+	CustomConfigFieldUser            = "user"
+)
+
+type CustomConfig struct {
+	Address         string            `json:"address,omitempty" yaml:"address,omitempty"`
+	DockerSocket    string            `json:"dockerSocket,omitempty" yaml:"dockerSocket,omitempty"`
+	InternalAddress string            `json:"internalAddress,omitempty" yaml:"internalAddress,omitempty"`
+	Label           map[string]string `json:"label,omitempty" yaml:"label,omitempty"`
+	SSHCert         string            `json:"sshCert,omitempty" yaml:"sshCert,omitempty"`
+	SSHKey          string            `json:"sshKey,omitempty" yaml:"sshKey,omitempty"`
+	Taints          []string          `json:"taints,omitempty" yaml:"taints,omitempty"`
+	User            string            `json:"user,omitempty" yaml:"user,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_daemon_endpoint.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_daemon_endpoint.go
new file mode 100644
index 00000000..88cefc76
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_daemon_endpoint.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	DaemonEndpointType      = "daemonEndpoint"
+	DaemonEndpointFieldPort = "Port"
+)
+
+type DaemonEndpoint struct {
+	Port int64 `json:"Port,omitempty" yaml:"Port,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_daemon_set_update_strategy.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_daemon_set_update_strategy.go
new file mode 100644
index 00000000..775007ec
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_daemon_set_update_strategy.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	DaemonSetUpdateStrategyType               = "daemonSetUpdateStrategy"
+	DaemonSetUpdateStrategyFieldRollingUpdate = "rollingUpdate"
+	DaemonSetUpdateStrategyFieldStrategy      = "strategy"
+)
+
+type DaemonSetUpdateStrategy struct {
+	RollingUpdate *RollingUpdateDaemonSet `json:"rollingUpdate,omitempty" yaml:"rollingUpdate,omitempty"`
+	Strategy      string                  `json:"strategy,omitempty" yaml:"strategy,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_deployment_strategy.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_deployment_strategy.go
new file mode 100644
index 00000000..69c4b91b
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_deployment_strategy.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	DeploymentStrategyType               = "deploymentStrategy"
+	DeploymentStrategyFieldRollingUpdate = "rollingUpdate"
+	DeploymentStrategyFieldStrategy      = "strategy"
+)
+
+type DeploymentStrategy struct {
+	RollingUpdate *RollingUpdateDeployment `json:"rollingUpdate,omitempty" yaml:"rollingUpdate,omitempty"`
+	Strategy      string                   `json:"strategy,omitempty" yaml:"strategy,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_disk_vsphere_opts.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_disk_vsphere_opts.go
new file mode 100644
index 00000000..d3db88ae
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_disk_vsphere_opts.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	DiskVsphereOptsType                    = "diskVsphereOpts"
+	DiskVsphereOptsFieldSCSIControllerType = "scsicontrollertype"
+)
+
+type DiskVsphereOpts struct {
+	SCSIControllerType string `json:"scsicontrollertype,omitempty" yaml:"scsicontrollertype,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_dns_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_dns_config.go
new file mode 100644
index 00000000..d7a5630b
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_dns_config.go
@@ -0,0 +1,28 @@
+package client
+
+const (
+	DNSConfigType                        = "dnsConfig"
+	DNSConfigFieldLinearAutoscalerParams = "linearAutoscalerParams"
+	DNSConfigFieldNodeSelector           = "nodeSelector"
+	DNSConfigFieldNodelocal              = "nodelocal"
+	DNSConfigFieldOptions                = "options"
+	DNSConfigFieldProvider               = "provider"
+	DNSConfigFieldReverseCIDRs           = "reversecidrs"
+	DNSConfigFieldStubDomains            = "stubdomains"
+	DNSConfigFieldTolerations            = "tolerations"
+	DNSConfigFieldUpdateStrategy         = "updateStrategy"
+	DNSConfigFieldUpstreamNameservers    = "upstreamnameservers"
+)
+
+type DNSConfig struct {
+	LinearAutoscalerParams *LinearAutoscalerParams `json:"linearAutoscalerParams,omitempty" yaml:"linearAutoscalerParams,omitempty"`
+	NodeSelector           map[string]string       `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty"`
+	Nodelocal              *Nodelocal              `json:"nodelocal,omitempty" yaml:"nodelocal,omitempty"`
+	Options                map[string]string       `json:"options,omitempty" yaml:"options,omitempty"`
+	Provider               string                  `json:"provider,omitempty" yaml:"provider,omitempty"`
+	ReverseCIDRs           []string                `json:"reversecidrs,omitempty" yaml:"reversecidrs,omitempty"`
+	StubDomains            map[string][]string     `json:"stubdomains,omitempty" yaml:"stubdomains,omitempty"`
+	Tolerations            []Toleration            `json:"tolerations,omitempty" yaml:"tolerations,omitempty"`
+	UpdateStrategy         *DeploymentStrategy     `json:"updateStrategy,omitempty" yaml:"updateStrategy,omitempty"`
+	UpstreamNameservers    []string                `json:"upstreamnameservers,omitempty" yaml:"upstreamnameservers,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_docker_info.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_docker_info.go
new file mode 100644
index 00000000..1b66e628
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_docker_info.go
@@ -0,0 +1,48 @@
+package client
+
+const (
+	DockerInfoType                    = "dockerInfo"
+	DockerInfoFieldArchitecture       = "architecture"
+	DockerInfoFieldCgroupDriver       = "cgroupDriver"
+	DockerInfoFieldDebug              = "debug"
+	DockerInfoFieldDockerRootDir      = "dockerRootDir"
+	DockerInfoFieldDriver             = "driver"
+	DockerInfoFieldExperimentalBuild  = "experimentalBuild"
+	DockerInfoFieldHTTPProxy          = "httpProxy"
+	DockerInfoFieldHTTPSProxy         = "httpsProxy"
+	DockerInfoFieldID                 = "id"
+	DockerInfoFieldIndexServerAddress = "indexServerAddress"
+	DockerInfoFieldInitBinary         = "initBinary"
+	DockerInfoFieldKernelVersion      = "kernelVersion"
+	DockerInfoFieldLabels             = "labels"
+	DockerInfoFieldLoggingDriver      = "loggingDriver"
+	DockerInfoFieldName               = "name"
+	DockerInfoFieldNoProxy            = "noProxy"
+	DockerInfoFieldOSType             = "osType"
+	DockerInfoFieldOperatingSystem    = "operatingSystem"
+	DockerInfoFieldSecurityOptions    = "securityOptions"
+	DockerInfoFieldServerVersion      = "serverVersion"
+)
+
+type DockerInfo struct {
+	Architecture       string   `json:"architecture,omitempty" yaml:"architecture,omitempty"`
+	CgroupDriver       string   `json:"cgroupDriver,omitempty" yaml:"cgroupDriver,omitempty"`
+	Debug              bool     `json:"debug,omitempty" yaml:"debug,omitempty"`
+	DockerRootDir      string   `json:"dockerRootDir,omitempty" yaml:"dockerRootDir,omitempty"`
+	Driver             string   `json:"driver,omitempty" yaml:"driver,omitempty"`
+	ExperimentalBuild  bool     `json:"experimentalBuild,omitempty" yaml:"experimentalBuild,omitempty"`
+	HTTPProxy          string   `json:"httpProxy,omitempty" yaml:"httpProxy,omitempty"`
+	HTTPSProxy         string   `json:"httpsProxy,omitempty" yaml:"httpsProxy,omitempty"`
+	ID                 string   `json:"id,omitempty" yaml:"id,omitempty"`
+	IndexServerAddress string   `json:"indexServerAddress,omitempty" yaml:"indexServerAddress,omitempty"`
+	InitBinary         string   `json:"initBinary,omitempty" yaml:"initBinary,omitempty"`
+	KernelVersion      string   `json:"kernelVersion,omitempty" yaml:"kernelVersion,omitempty"`
+	Labels             []string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	LoggingDriver      string   `json:"loggingDriver,omitempty" yaml:"loggingDriver,omitempty"`
+	Name               string   `json:"name,omitempty" yaml:"name,omitempty"`
+	NoProxy            string   `json:"noProxy,omitempty" yaml:"noProxy,omitempty"`
+	OSType             string   `json:"osType,omitempty" yaml:"osType,omitempty"`
+	OperatingSystem    string   `json:"operatingSystem,omitempty" yaml:"operatingSystem,omitempty"`
+	SecurityOptions    []string `json:"securityOptions,omitempty" yaml:"securityOptions,omitempty"`
+	ServerVersion      string   `json:"serverVersion,omitempty" yaml:"serverVersion,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_downward_apiprojection.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_downward_apiprojection.go
new file mode 100644
index 00000000..ca02c4dd
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_downward_apiprojection.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	DownwardAPIProjectionType       = "downwardAPIProjection"
+	DownwardAPIProjectionFieldItems = "items"
+)
+
+type DownwardAPIProjection struct {
+	Items []DownwardAPIVolumeFile `json:"items,omitempty" yaml:"items,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_downward_apivolume_file.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_downward_apivolume_file.go
new file mode 100644
index 00000000..c8f8bc2b
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_downward_apivolume_file.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	DownwardAPIVolumeFileType                  = "downwardAPIVolumeFile"
+	DownwardAPIVolumeFileFieldFieldRef         = "fieldRef"
+	DownwardAPIVolumeFileFieldMode             = "mode"
+	DownwardAPIVolumeFileFieldPath             = "path"
+	DownwardAPIVolumeFileFieldResourceFieldRef = "resourceFieldRef"
+)
+
+type DownwardAPIVolumeFile struct {
+	FieldRef         *ObjectFieldSelector   `json:"fieldRef,omitempty" yaml:"fieldRef,omitempty"`
+	Mode             *int64                 `json:"mode,omitempty" yaml:"mode,omitempty"`
+	Path             string                 `json:"path,omitempty" yaml:"path,omitempty"`
+	ResourceFieldRef *ResourceFieldSelector `json:"resourceFieldRef,omitempty" yaml:"resourceFieldRef,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_downward_apivolume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_downward_apivolume_source.go
new file mode 100644
index 00000000..f6be1944
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_downward_apivolume_source.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	DownwardAPIVolumeSourceType             = "downwardAPIVolumeSource"
+	DownwardAPIVolumeSourceFieldDefaultMode = "defaultMode"
+	DownwardAPIVolumeSourceFieldItems       = "items"
+)
+
+type DownwardAPIVolumeSource struct {
+	DefaultMode *int64                  `json:"defaultMode,omitempty" yaml:"defaultMode,omitempty"`
+	Items       []DownwardAPIVolumeFile `json:"items,omitempty" yaml:"items,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_duration.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_duration.go
new file mode 100644
index 00000000..cf0920cf
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_duration.go
@@ -0,0 +1,8 @@
+package client
+
+const (
+	DurationType = "duration"
+)
+
+type Duration struct {
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_dynamic_schema.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_dynamic_schema.go
new file mode 100644
index 00000000..080dcb41
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_dynamic_schema.go
@@ -0,0 +1,152 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	DynamicSchemaType                      = "dynamicSchema"
+	DynamicSchemaFieldAnnotations          = "annotations"
+	DynamicSchemaFieldCollectionActions    = "collectionActions"
+	DynamicSchemaFieldCollectionFields     = "collectionFields"
+	DynamicSchemaFieldCollectionFilters    = "collectionFilters"
+	DynamicSchemaFieldCollectionMethods    = "collectionMethods"
+	DynamicSchemaFieldCreated              = "created"
+	DynamicSchemaFieldCreatorID            = "creatorId"
+	DynamicSchemaFieldDynamicSchemaVersion = "dynamicSchemaVersion"
+	DynamicSchemaFieldEmbed                = "embed"
+	DynamicSchemaFieldEmbedType            = "embedType"
+	DynamicSchemaFieldIncludeableLinks     = "includeableLinks"
+	DynamicSchemaFieldLabels               = "labels"
+	DynamicSchemaFieldName                 = "name"
+	DynamicSchemaFieldOwnerReferences      = "ownerReferences"
+	DynamicSchemaFieldPluralName           = "pluralName"
+	DynamicSchemaFieldRemoved              = "removed"
+	DynamicSchemaFieldResourceActions      = "resourceActions"
+	DynamicSchemaFieldResourceFields       = "resourceFields"
+	DynamicSchemaFieldResourceMethods      = "resourceMethods"
+	DynamicSchemaFieldSchemaName           = "schemaName"
+	DynamicSchemaFieldState                = "state"
+	DynamicSchemaFieldStatus               = "status"
+	DynamicSchemaFieldTransitioning        = "transitioning"
+	DynamicSchemaFieldTransitioningMessage = "transitioningMessage"
+	DynamicSchemaFieldUUID                 = "uuid"
+)
+
+type DynamicSchema struct {
+	types.Resource
+	Annotations          map[string]string    `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	CollectionActions    map[string]Action    `json:"collectionActions,omitempty" yaml:"collectionActions,omitempty"`
+	CollectionFields     map[string]Field     `json:"collectionFields,omitempty" yaml:"collectionFields,omitempty"`
+	CollectionFilters    map[string]Filter    `json:"collectionFilters,omitempty" yaml:"collectionFilters,omitempty"`
+	CollectionMethods    []string             `json:"collectionMethods,omitempty" yaml:"collectionMethods,omitempty"`
+	Created              string               `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID            string               `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	DynamicSchemaVersion string               `json:"dynamicSchemaVersion,omitempty" yaml:"dynamicSchemaVersion,omitempty"`
+	Embed                bool                 `json:"embed,omitempty" yaml:"embed,omitempty"`
+	EmbedType            string               `json:"embedType,omitempty" yaml:"embedType,omitempty"`
+	IncludeableLinks     []string             `json:"includeableLinks,omitempty" yaml:"includeableLinks,omitempty"`
+	Labels               map[string]string    `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                 string               `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences      []OwnerReference     `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	PluralName           string               `json:"pluralName,omitempty" yaml:"pluralName,omitempty"`
+	Removed              string               `json:"removed,omitempty" yaml:"removed,omitempty"`
+	ResourceActions      map[string]Action    `json:"resourceActions,omitempty" yaml:"resourceActions,omitempty"`
+	ResourceFields       map[string]Field     `json:"resourceFields,omitempty" yaml:"resourceFields,omitempty"`
+	ResourceMethods      []string             `json:"resourceMethods,omitempty" yaml:"resourceMethods,omitempty"`
+	SchemaName           string               `json:"schemaName,omitempty" yaml:"schemaName,omitempty"`
+	State                string               `json:"state,omitempty" yaml:"state,omitempty"`
+	Status               *DynamicSchemaStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	Transitioning        string               `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage string               `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                 string               `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type DynamicSchemaCollection struct {
+	types.Collection
+	Data   []DynamicSchema `json:"data,omitempty"`
+	client *DynamicSchemaClient
+}
+
+type DynamicSchemaClient struct {
+	apiClient *Client
+}
+
+type DynamicSchemaOperations interface {
+	List(opts *types.ListOpts) (*DynamicSchemaCollection, error)
+	ListAll(opts *types.ListOpts) (*DynamicSchemaCollection, error)
+	Create(opts *DynamicSchema) (*DynamicSchema, error)
+	Update(existing *DynamicSchema, updates interface{}) (*DynamicSchema, error)
+	Replace(existing *DynamicSchema) (*DynamicSchema, error)
+	ByID(id string) (*DynamicSchema, error)
+	Delete(container *DynamicSchema) error
+}
+
+func newDynamicSchemaClient(apiClient *Client) *DynamicSchemaClient {
+	return &DynamicSchemaClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *DynamicSchemaClient) Create(container *DynamicSchema) (*DynamicSchema, error) {
+	resp := &DynamicSchema{}
+	err := c.apiClient.Ops.DoCreate(DynamicSchemaType, container, resp)
+	return resp, err
+}
+
+func (c *DynamicSchemaClient) Update(existing *DynamicSchema, updates interface{}) (*DynamicSchema, error) {
+	resp := &DynamicSchema{}
+	err := c.apiClient.Ops.DoUpdate(DynamicSchemaType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *DynamicSchemaClient) Replace(obj *DynamicSchema) (*DynamicSchema, error) {
+	resp := &DynamicSchema{}
+	err := c.apiClient.Ops.DoReplace(DynamicSchemaType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *DynamicSchemaClient) List(opts *types.ListOpts) (*DynamicSchemaCollection, error) {
+	resp := &DynamicSchemaCollection{}
+	err := c.apiClient.Ops.DoList(DynamicSchemaType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *DynamicSchemaClient) ListAll(opts *types.ListOpts) (*DynamicSchemaCollection, error) {
+	resp := &DynamicSchemaCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *DynamicSchemaCollection) Next() (*DynamicSchemaCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &DynamicSchemaCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *DynamicSchemaClient) ByID(id string) (*DynamicSchema, error) {
+	resp := &DynamicSchema{}
+	err := c.apiClient.Ops.DoByID(DynamicSchemaType, id, resp)
+	return resp, err
+}
+
+func (c *DynamicSchemaClient) Delete(container *DynamicSchema) error {
+	return c.apiClient.Ops.DoResourceDelete(DynamicSchemaType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_dynamic_schema_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_dynamic_schema_spec.go
new file mode 100644
index 00000000..db9b5440
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_dynamic_schema_spec.go
@@ -0,0 +1,34 @@
+package client
+
+const (
+	DynamicSchemaSpecType                      = "dynamicSchemaSpec"
+	DynamicSchemaSpecFieldCollectionActions    = "collectionActions"
+	DynamicSchemaSpecFieldCollectionFields     = "collectionFields"
+	DynamicSchemaSpecFieldCollectionFilters    = "collectionFilters"
+	DynamicSchemaSpecFieldCollectionMethods    = "collectionMethods"
+	DynamicSchemaSpecFieldDynamicSchemaVersion = "dynamicSchemaVersion"
+	DynamicSchemaSpecFieldEmbed                = "embed"
+	DynamicSchemaSpecFieldEmbedType            = "embedType"
+	DynamicSchemaSpecFieldIncludeableLinks     = "includeableLinks"
+	DynamicSchemaSpecFieldPluralName           = "pluralName"
+	DynamicSchemaSpecFieldResourceActions      = "resourceActions"
+	DynamicSchemaSpecFieldResourceFields       = "resourceFields"
+	DynamicSchemaSpecFieldResourceMethods      = "resourceMethods"
+	DynamicSchemaSpecFieldSchemaName           = "schemaName"
+)
+
+type DynamicSchemaSpec struct {
+	CollectionActions    map[string]Action `json:"collectionActions,omitempty" yaml:"collectionActions,omitempty"`
+	CollectionFields     map[string]Field  `json:"collectionFields,omitempty" yaml:"collectionFields,omitempty"`
+	CollectionFilters    map[string]Filter `json:"collectionFilters,omitempty" yaml:"collectionFilters,omitempty"`
+	CollectionMethods    []string          `json:"collectionMethods,omitempty" yaml:"collectionMethods,omitempty"`
+	DynamicSchemaVersion string            `json:"dynamicSchemaVersion,omitempty" yaml:"dynamicSchemaVersion,omitempty"`
+	Embed                bool              `json:"embed,omitempty" yaml:"embed,omitempty"`
+	EmbedType            string            `json:"embedType,omitempty" yaml:"embedType,omitempty"`
+	IncludeableLinks     []string          `json:"includeableLinks,omitempty" yaml:"includeableLinks,omitempty"`
+	PluralName           string            `json:"pluralName,omitempty" yaml:"pluralName,omitempty"`
+	ResourceActions      map[string]Action `json:"resourceActions,omitempty" yaml:"resourceActions,omitempty"`
+	ResourceFields       map[string]Field  `json:"resourceFields,omitempty" yaml:"resourceFields,omitempty"`
+	ResourceMethods      []string          `json:"resourceMethods,omitempty" yaml:"resourceMethods,omitempty"`
+	SchemaName           string            `json:"schemaName,omitempty" yaml:"schemaName,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_dynamic_schema_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_dynamic_schema_status.go
new file mode 100644
index 00000000..014783e6
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_dynamic_schema_status.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	DynamicSchemaStatusType      = "dynamicSchemaStatus"
+	DynamicSchemaStatusFieldFake = "fake"
+)
+
+type DynamicSchemaStatus struct {
+	Fake string `json:"fake,omitempty" yaml:"fake,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ecr_credential_plugin.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ecr_credential_plugin.go
new file mode 100644
index 00000000..f4e0ae48
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ecr_credential_plugin.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	ECRCredentialPluginType                    = "ecrCredentialPlugin"
+	ECRCredentialPluginFieldAwsAccessKeyID     = "awsAccessKeyId"
+	ECRCredentialPluginFieldAwsSecretAccessKey = "awsSecretAccessKey"
+	ECRCredentialPluginFieldAwsSessionToken    = "awsAccessToken"
+)
+
+type ECRCredentialPlugin struct {
+	AwsAccessKeyID     string `json:"awsAccessKeyId,omitempty" yaml:"awsAccessKeyId,omitempty"`
+	AwsSecretAccessKey string `json:"awsSecretAccessKey,omitempty" yaml:"awsSecretAccessKey,omitempty"`
+	AwsSessionToken    string `json:"awsAccessToken,omitempty" yaml:"awsAccessToken,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_eks_cluster_config_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_eks_cluster_config_spec.go
new file mode 100644
index 00000000..b4471101
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_eks_cluster_config_spec.go
@@ -0,0 +1,42 @@
+package client
+
+const (
+	EKSClusterConfigSpecType                        = "eksClusterConfigSpec"
+	EKSClusterConfigSpecFieldAmazonCredentialSecret = "amazonCredentialSecret"
+	EKSClusterConfigSpecFieldDisplayName            = "displayName"
+	EKSClusterConfigSpecFieldEBSCSIDriver           = "ebsCSIDriver"
+	EKSClusterConfigSpecFieldImported               = "imported"
+	EKSClusterConfigSpecFieldKmsKey                 = "kmsKey"
+	EKSClusterConfigSpecFieldKubernetesVersion      = "kubernetesVersion"
+	EKSClusterConfigSpecFieldLoggingTypes           = "loggingTypes"
+	EKSClusterConfigSpecFieldNodeGroups             = "nodeGroups"
+	EKSClusterConfigSpecFieldPrivateAccess          = "privateAccess"
+	EKSClusterConfigSpecFieldPublicAccess           = "publicAccess"
+	EKSClusterConfigSpecFieldPublicAccessSources    = "publicAccessSources"
+	EKSClusterConfigSpecFieldRegion                 = "region"
+	EKSClusterConfigSpecFieldSecretsEncryption      = "secretsEncryption"
+	EKSClusterConfigSpecFieldSecurityGroups         = "securityGroups"
+	EKSClusterConfigSpecFieldServiceRole            = "serviceRole"
+	EKSClusterConfigSpecFieldSubnets                = "subnets"
+	EKSClusterConfigSpecFieldTags                   = "tags"
+)
+
+type EKSClusterConfigSpec struct {
+	AmazonCredentialSecret string            `json:"amazonCredentialSecret,omitempty" yaml:"amazonCredentialSecret,omitempty"`
+	DisplayName            string            `json:"displayName,omitempty" yaml:"displayName,omitempty"`
+	EBSCSIDriver           *bool             `json:"ebsCSIDriver,omitempty" yaml:"ebsCSIDriver,omitempty"`
+	Imported               bool              `json:"imported,omitempty" yaml:"imported,omitempty"`
+	KmsKey                 *string           `json:"kmsKey,omitempty" yaml:"kmsKey,omitempty"`
+	KubernetesVersion      *string           `json:"kubernetesVersion,omitempty" yaml:"kubernetesVersion,omitempty"`
+	LoggingTypes           []string          `json:"loggingTypes,omitempty" yaml:"loggingTypes,omitempty"`
+	NodeGroups             []NodeGroup       `json:"nodeGroups,omitempty" yaml:"nodeGroups,omitempty"`
+	PrivateAccess          *bool             `json:"privateAccess,omitempty" yaml:"privateAccess,omitempty"`
+	PublicAccess           *bool             `json:"publicAccess,omitempty" yaml:"publicAccess,omitempty"`
+	PublicAccessSources    []string          `json:"publicAccessSources,omitempty" yaml:"publicAccessSources,omitempty"`
+	Region                 string            `json:"region,omitempty" yaml:"region,omitempty"`
+	SecretsEncryption      *bool             `json:"secretsEncryption,omitempty" yaml:"secretsEncryption,omitempty"`
+	SecurityGroups         []string          `json:"securityGroups,omitempty" yaml:"securityGroups,omitempty"`
+	ServiceRole            *string           `json:"serviceRole,omitempty" yaml:"serviceRole,omitempty"`
+	Subnets                []string          `json:"subnets,omitempty" yaml:"subnets,omitempty"`
+	Tags                   map[string]string `json:"tags,omitempty" yaml:"tags,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_eks_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_eks_status.go
new file mode 100644
index 00000000..54127aac
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_eks_status.go
@@ -0,0 +1,24 @@
+package client
+
+const (
+	EKSStatusType                               = "eksStatus"
+	EKSStatusFieldGeneratedNodeRole             = "generatedNodeRole"
+	EKSStatusFieldManagedLaunchTemplateID       = "managedLaunchTemplateID"
+	EKSStatusFieldManagedLaunchTemplateVersions = "managedLaunchTemplateVersions"
+	EKSStatusFieldPrivateRequiresTunnel         = "privateRequiresTunnel"
+	EKSStatusFieldSecurityGroups                = "securityGroups"
+	EKSStatusFieldSubnets                       = "subnets"
+	EKSStatusFieldUpstreamSpec                  = "upstreamSpec"
+	EKSStatusFieldVirtualNetwork                = "virtualNetwork"
+)
+
+type EKSStatus struct {
+	GeneratedNodeRole             string                `json:"generatedNodeRole,omitempty" yaml:"generatedNodeRole,omitempty"`
+	ManagedLaunchTemplateID       string                `json:"managedLaunchTemplateID,omitempty" yaml:"managedLaunchTemplateID,omitempty"`
+	ManagedLaunchTemplateVersions map[string]string     `json:"managedLaunchTemplateVersions,omitempty" yaml:"managedLaunchTemplateVersions,omitempty"`
+	PrivateRequiresTunnel         *bool                 `json:"privateRequiresTunnel,omitempty" yaml:"privateRequiresTunnel,omitempty"`
+	SecurityGroups                []string              `json:"securityGroups,omitempty" yaml:"securityGroups,omitempty"`
+	Subnets                       []string              `json:"subnets,omitempty" yaml:"subnets,omitempty"`
+	UpstreamSpec                  *EKSClusterConfigSpec `json:"upstreamSpec,omitempty" yaml:"upstreamSpec,omitempty"`
+	VirtualNetwork                string                `json:"virtualNetwork,omitempty" yaml:"virtualNetwork,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_empty_dir_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_empty_dir_volume_source.go
new file mode 100644
index 00000000..c4856f33
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_empty_dir_volume_source.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	EmptyDirVolumeSourceType           = "emptyDirVolumeSource"
+	EmptyDirVolumeSourceFieldMedium    = "medium"
+	EmptyDirVolumeSourceFieldSizeLimit = "sizeLimit"
+)
+
+type EmptyDirVolumeSource struct {
+	Medium    string `json:"medium,omitempty" yaml:"medium,omitempty"`
+	SizeLimit string `json:"sizeLimit,omitempty" yaml:"sizeLimit,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_encryption_configuration.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_encryption_configuration.go
new file mode 100644
index 00000000..8cc644dd
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_encryption_configuration.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	EncryptionConfigurationType            = "encryptionConfiguration"
+	EncryptionConfigurationFieldAPIVersion = "apiVersion"
+	EncryptionConfigurationFieldKind       = "kind"
+	EncryptionConfigurationFieldResources  = "resources"
+)
+
+type EncryptionConfiguration struct {
+	APIVersion string                  `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
+	Kind       string                  `json:"kind,omitempty" yaml:"kind,omitempty"`
+	Resources  []ResourceConfiguration `json:"resources,omitempty" yaml:"resources,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_env_var.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_env_var.go
new file mode 100644
index 00000000..35ccda3f
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_env_var.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	EnvVarType           = "envVar"
+	EnvVarFieldName      = "name"
+	EnvVarFieldValue     = "value"
+	EnvVarFieldValueFrom = "valueFrom"
+)
+
+type EnvVar struct {
+	Name      string        `json:"name,omitempty" yaml:"name,omitempty"`
+	Value     string        `json:"value,omitempty" yaml:"value,omitempty"`
+	ValueFrom *EnvVarSource `json:"valueFrom,omitempty" yaml:"valueFrom,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_env_var_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_env_var_source.go
new file mode 100644
index 00000000..390a033e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_env_var_source.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	EnvVarSourceType                  = "envVarSource"
+	EnvVarSourceFieldConfigMapKeyRef  = "configMapKeyRef"
+	EnvVarSourceFieldFieldRef         = "fieldRef"
+	EnvVarSourceFieldResourceFieldRef = "resourceFieldRef"
+	EnvVarSourceFieldSecretKeyRef     = "secretKeyRef"
+)
+
+type EnvVarSource struct {
+	ConfigMapKeyRef  *ConfigMapKeySelector  `json:"configMapKeyRef,omitempty" yaml:"configMapKeyRef,omitempty"`
+	FieldRef         *ObjectFieldSelector   `json:"fieldRef,omitempty" yaml:"fieldRef,omitempty"`
+	ResourceFieldRef *ResourceFieldSelector `json:"resourceFieldRef,omitempty" yaml:"resourceFieldRef,omitempty"`
+	SecretKeyRef     *SecretKeySelector     `json:"secretKeyRef,omitempty" yaml:"secretKeyRef,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ephemeral_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ephemeral_volume_source.go
new file mode 100644
index 00000000..fc7f09e5
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ephemeral_volume_source.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	EphemeralVolumeSourceType                     = "ephemeralVolumeSource"
+	EphemeralVolumeSourceFieldVolumeClaimTemplate = "volumeClaimTemplate"
+)
+
+type EphemeralVolumeSource struct {
+	VolumeClaimTemplate *PersistentVolumeClaimTemplate `json:"volumeClaimTemplate,omitempty" yaml:"volumeClaimTemplate,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_backup.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_backup.go
new file mode 100644
index 00000000..74cdd40c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_backup.go
@@ -0,0 +1,136 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	EtcdBackupType                      = "etcdBackup"
+	EtcdBackupFieldAnnotations          = "annotations"
+	EtcdBackupFieldBackupConfig         = "backupConfig"
+	EtcdBackupFieldClusterID            = "clusterId"
+	EtcdBackupFieldCreated              = "created"
+	EtcdBackupFieldCreatorID            = "creatorId"
+	EtcdBackupFieldFilename             = "filename"
+	EtcdBackupFieldLabels               = "labels"
+	EtcdBackupFieldManual               = "manual"
+	EtcdBackupFieldName                 = "name"
+	EtcdBackupFieldNamespaceId          = "namespaceId"
+	EtcdBackupFieldOwnerReferences      = "ownerReferences"
+	EtcdBackupFieldRemoved              = "removed"
+	EtcdBackupFieldState                = "state"
+	EtcdBackupFieldStatus               = "status"
+	EtcdBackupFieldTransitioning        = "transitioning"
+	EtcdBackupFieldTransitioningMessage = "transitioningMessage"
+	EtcdBackupFieldUUID                 = "uuid"
+)
+
+type EtcdBackup struct {
+	types.Resource
+	Annotations          map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	BackupConfig         *BackupConfig     `json:"backupConfig,omitempty" yaml:"backupConfig,omitempty"`
+	ClusterID            string            `json:"clusterId,omitempty" yaml:"clusterId,omitempty"`
+	Created              string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID            string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Filename             string            `json:"filename,omitempty" yaml:"filename,omitempty"`
+	Labels               map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Manual               bool              `json:"manual,omitempty" yaml:"manual,omitempty"`
+	Name                 string            `json:"name,omitempty" yaml:"name,omitempty"`
+	NamespaceId          string            `json:"namespaceId,omitempty" yaml:"namespaceId,omitempty"`
+	OwnerReferences      []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed              string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	State                string            `json:"state,omitempty" yaml:"state,omitempty"`
+	Status               *EtcdBackupStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	Transitioning        string            `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage string            `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                 string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type EtcdBackupCollection struct {
+	types.Collection
+	Data   []EtcdBackup `json:"data,omitempty"`
+	client *EtcdBackupClient
+}
+
+type EtcdBackupClient struct {
+	apiClient *Client
+}
+
+type EtcdBackupOperations interface {
+	List(opts *types.ListOpts) (*EtcdBackupCollection, error)
+	ListAll(opts *types.ListOpts) (*EtcdBackupCollection, error)
+	Create(opts *EtcdBackup) (*EtcdBackup, error)
+	Update(existing *EtcdBackup, updates interface{}) (*EtcdBackup, error)
+	Replace(existing *EtcdBackup) (*EtcdBackup, error)
+	ByID(id string) (*EtcdBackup, error)
+	Delete(container *EtcdBackup) error
+}
+
+func newEtcdBackupClient(apiClient *Client) *EtcdBackupClient {
+	return &EtcdBackupClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *EtcdBackupClient) Create(container *EtcdBackup) (*EtcdBackup, error) {
+	resp := &EtcdBackup{}
+	err := c.apiClient.Ops.DoCreate(EtcdBackupType, container, resp)
+	return resp, err
+}
+
+func (c *EtcdBackupClient) Update(existing *EtcdBackup, updates interface{}) (*EtcdBackup, error) {
+	resp := &EtcdBackup{}
+	err := c.apiClient.Ops.DoUpdate(EtcdBackupType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *EtcdBackupClient) Replace(obj *EtcdBackup) (*EtcdBackup, error) {
+	resp := &EtcdBackup{}
+	err := c.apiClient.Ops.DoReplace(EtcdBackupType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *EtcdBackupClient) List(opts *types.ListOpts) (*EtcdBackupCollection, error) {
+	resp := &EtcdBackupCollection{}
+	err := c.apiClient.Ops.DoList(EtcdBackupType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *EtcdBackupClient) ListAll(opts *types.ListOpts) (*EtcdBackupCollection, error) {
+	resp := &EtcdBackupCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *EtcdBackupCollection) Next() (*EtcdBackupCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &EtcdBackupCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *EtcdBackupClient) ByID(id string) (*EtcdBackup, error) {
+	resp := &EtcdBackup{}
+	err := c.apiClient.Ops.DoByID(EtcdBackupType, id, resp)
+	return resp, err
+}
+
+func (c *EtcdBackupClient) Delete(container *EtcdBackup) error {
+	return c.apiClient.Ops.DoResourceDelete(EtcdBackupType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_backup_condition.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_backup_condition.go
new file mode 100644
index 00000000..bfae7530
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_backup_condition.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	EtcdBackupConditionType                    = "etcdBackupCondition"
+	EtcdBackupConditionFieldLastTransitionTime = "lastTransitionTime"
+	EtcdBackupConditionFieldLastUpdateTime     = "lastUpdateTime"
+	EtcdBackupConditionFieldMessage            = "message"
+	EtcdBackupConditionFieldReason             = "reason"
+	EtcdBackupConditionFieldStatus             = "status"
+	EtcdBackupConditionFieldType               = "type"
+)
+
+type EtcdBackupCondition struct {
+	LastTransitionTime string `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty"`
+	LastUpdateTime     string `json:"lastUpdateTime,omitempty" yaml:"lastUpdateTime,omitempty"`
+	Message            string `json:"message,omitempty" yaml:"message,omitempty"`
+	Reason             string `json:"reason,omitempty" yaml:"reason,omitempty"`
+	Status             string `json:"status,omitempty" yaml:"status,omitempty"`
+	Type               string `json:"type,omitempty" yaml:"type,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_backup_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_backup_spec.go
new file mode 100644
index 00000000..f78b2276
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_backup_spec.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	EtcdBackupSpecType              = "etcdBackupSpec"
+	EtcdBackupSpecFieldBackupConfig = "backupConfig"
+	EtcdBackupSpecFieldClusterID    = "clusterId"
+	EtcdBackupSpecFieldFilename     = "filename"
+	EtcdBackupSpecFieldManual       = "manual"
+)
+
+type EtcdBackupSpec struct {
+	BackupConfig *BackupConfig `json:"backupConfig,omitempty" yaml:"backupConfig,omitempty"`
+	ClusterID    string        `json:"clusterId,omitempty" yaml:"clusterId,omitempty"`
+	Filename     string        `json:"filename,omitempty" yaml:"filename,omitempty"`
+	Manual       bool          `json:"manual,omitempty" yaml:"manual,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_backup_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_backup_status.go
new file mode 100644
index 00000000..57b48ef7
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_backup_status.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	EtcdBackupStatusType                   = "etcdBackupStatus"
+	EtcdBackupStatusFieldClusterObject     = "clusterObject"
+	EtcdBackupStatusFieldConditions        = "conditions"
+	EtcdBackupStatusFieldKubernetesVersion = "kubernetesVersion"
+)
+
+type EtcdBackupStatus struct {
+	ClusterObject     string                `json:"clusterObject,omitempty" yaml:"clusterObject,omitempty"`
+	Conditions        []EtcdBackupCondition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	KubernetesVersion string                `json:"kubernetesVersion,omitempty" yaml:"kubernetesVersion,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_service.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_service.go
new file mode 100644
index 00000000..6c174992
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_etcd_service.go
@@ -0,0 +1,48 @@
+package client
+
+const (
+	ETCDServiceType                       = "etcdService"
+	ETCDServiceFieldBackupConfig          = "backupConfig"
+	ETCDServiceFieldCACert                = "caCert"
+	ETCDServiceFieldCert                  = "cert"
+	ETCDServiceFieldCreation              = "creation"
+	ETCDServiceFieldExternalURLs          = "externalUrls"
+	ETCDServiceFieldExtraArgs             = "extraArgs"
+	ETCDServiceFieldExtraArgsArray        = "extraArgsArray"
+	ETCDServiceFieldExtraBinds            = "extraBinds"
+	ETCDServiceFieldExtraEnv              = "extraEnv"
+	ETCDServiceFieldGID                   = "gid"
+	ETCDServiceFieldImage                 = "image"
+	ETCDServiceFieldKey                   = "key"
+	ETCDServiceFieldPath                  = "path"
+	ETCDServiceFieldRetention             = "retention"
+	ETCDServiceFieldSnapshot              = "snapshot"
+	ETCDServiceFieldUID                   = "uid"
+	ETCDServiceFieldWindowsExtraArgs      = "winExtraArgs"
+	ETCDServiceFieldWindowsExtraArgsArray = "winExtraArgsArray"
+	ETCDServiceFieldWindowsExtraBinds     = "winExtraBinds"
+	ETCDServiceFieldWindowsExtraEnv       = "winExtraEnv"
+)
+
+type ETCDService struct {
+	BackupConfig          *BackupConfig       `json:"backupConfig,omitempty" yaml:"backupConfig,omitempty"`
+	CACert                string              `json:"caCert,omitempty" yaml:"caCert,omitempty"`
+	Cert                  string              `json:"cert,omitempty" yaml:"cert,omitempty"`
+	Creation              string              `json:"creation,omitempty" yaml:"creation,omitempty"`
+	ExternalURLs          []string            `json:"externalUrls,omitempty" yaml:"externalUrls,omitempty"`
+	ExtraArgs             map[string]string   `json:"extraArgs,omitempty" yaml:"extraArgs,omitempty"`
+	ExtraArgsArray        map[string][]string `json:"extraArgsArray,omitempty" yaml:"extraArgsArray,omitempty"`
+	ExtraBinds            []string            `json:"extraBinds,omitempty" yaml:"extraBinds,omitempty"`
+	ExtraEnv              []string            `json:"extraEnv,omitempty" yaml:"extraEnv,omitempty"`
+	GID                   int64               `json:"gid,omitempty" yaml:"gid,omitempty"`
+	Image                 string              `json:"image,omitempty" yaml:"image,omitempty"`
+	Key                   string              `json:"key,omitempty" yaml:"key,omitempty"`
+	Path                  string              `json:"path,omitempty" yaml:"path,omitempty"`
+	Retention             string              `json:"retention,omitempty" yaml:"retention,omitempty"`
+	Snapshot              *bool               `json:"snapshot,omitempty" yaml:"snapshot,omitempty"`
+	UID                   int64               `json:"uid,omitempty" yaml:"uid,omitempty"`
+	WindowsExtraArgs      map[string]string   `json:"winExtraArgs,omitempty" yaml:"winExtraArgs,omitempty"`
+	WindowsExtraArgsArray map[string][]string `json:"winExtraArgsArray,omitempty" yaml:"winExtraArgsArray,omitempty"`
+	WindowsExtraBinds     []string            `json:"winExtraBinds,omitempty" yaml:"winExtraBinds,omitempty"`
+	WindowsExtraEnv       []string            `json:"winExtraEnv,omitempty" yaml:"winExtraEnv,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_event_rate_limit.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_event_rate_limit.go
new file mode 100644
index 00000000..6ba3b86d
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_event_rate_limit.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	EventRateLimitType               = "eventRateLimit"
+	EventRateLimitFieldConfiguration = "configuration"
+	EventRateLimitFieldEnabled       = "enabled"
+)
+
+type EventRateLimit struct {
+	Configuration map[string]interface{} `json:"configuration,omitempty" yaml:"configuration,omitempty"`
+	Enabled       bool                   `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_export_output.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_export_output.go
new file mode 100644
index 00000000..cf2559bc
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_export_output.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	ExportOutputType            = "exportOutput"
+	ExportOutputFieldYAMLOutput = "yamlOutput"
+)
+
+type ExportOutput struct {
+	YAMLOutput string `json:"yamlOutput,omitempty" yaml:"yamlOutput,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_extra_env.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_extra_env.go
new file mode 100644
index 00000000..96a3ece2
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_extra_env.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	ExtraEnvType           = "extraEnv"
+	ExtraEnvFieldName      = "name"
+	ExtraEnvFieldValue     = "value"
+	ExtraEnvFieldValueFrom = "valueFrom"
+)
+
+type ExtraEnv struct {
+	Name      string        `json:"name,omitempty" yaml:"name,omitempty"`
+	Value     string        `json:"value,omitempty" yaml:"value,omitempty"`
+	ValueFrom *EnvVarSource `json:"valueFrom,omitempty" yaml:"valueFrom,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_extra_volume.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_extra_volume.go
new file mode 100644
index 00000000..cd629ef5
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_extra_volume.go
@@ -0,0 +1,68 @@
+package client
+
+const (
+	ExtraVolumeType                       = "extraVolume"
+	ExtraVolumeFieldAWSElasticBlockStore  = "awsElasticBlockStore"
+	ExtraVolumeFieldAzureDisk             = "azureDisk"
+	ExtraVolumeFieldAzureFile             = "azureFile"
+	ExtraVolumeFieldCSI                   = "csi"
+	ExtraVolumeFieldCephFS                = "cephfs"
+	ExtraVolumeFieldCinder                = "cinder"
+	ExtraVolumeFieldConfigMap             = "configMap"
+	ExtraVolumeFieldDownwardAPI           = "downwardAPI"
+	ExtraVolumeFieldEmptyDir              = "emptyDir"
+	ExtraVolumeFieldEphemeral             = "ephemeral"
+	ExtraVolumeFieldFC                    = "fc"
+	ExtraVolumeFieldFlexVolume            = "flexVolume"
+	ExtraVolumeFieldFlocker               = "flocker"
+	ExtraVolumeFieldGCEPersistentDisk     = "gcePersistentDisk"
+	ExtraVolumeFieldGitRepo               = "gitRepo"
+	ExtraVolumeFieldGlusterfs             = "glusterfs"
+	ExtraVolumeFieldHostPath              = "hostPath"
+	ExtraVolumeFieldISCSI                 = "iscsi"
+	ExtraVolumeFieldNFS                   = "nfs"
+	ExtraVolumeFieldName                  = "name"
+	ExtraVolumeFieldPersistentVolumeClaim = "persistentVolumeClaim"
+	ExtraVolumeFieldPhotonPersistentDisk  = "photonPersistentDisk"
+	ExtraVolumeFieldPortworxVolume        = "portworxVolume"
+	ExtraVolumeFieldProjected             = "projected"
+	ExtraVolumeFieldQuobyte               = "quobyte"
+	ExtraVolumeFieldRBD                   = "rbd"
+	ExtraVolumeFieldScaleIO               = "scaleIO"
+	ExtraVolumeFieldSecret                = "secret"
+	ExtraVolumeFieldStorageOS             = "storageos"
+	ExtraVolumeFieldVsphereVolume         = "vsphereVolume"
+)
+
+type ExtraVolume struct {
+	AWSElasticBlockStore  *AWSElasticBlockStoreVolumeSource  `json:"awsElasticBlockStore,omitempty" yaml:"awsElasticBlockStore,omitempty"`
+	AzureDisk             *AzureDiskVolumeSource             `json:"azureDisk,omitempty" yaml:"azureDisk,omitempty"`
+	AzureFile             *AzureFileVolumeSource             `json:"azureFile,omitempty" yaml:"azureFile,omitempty"`
+	CSI                   *CSIVolumeSource                   `json:"csi,omitempty" yaml:"csi,omitempty"`
+	CephFS                *CephFSVolumeSource                `json:"cephfs,omitempty" yaml:"cephfs,omitempty"`
+	Cinder                *CinderVolumeSource                `json:"cinder,omitempty" yaml:"cinder,omitempty"`
+	ConfigMap             *ConfigMapVolumeSource             `json:"configMap,omitempty" yaml:"configMap,omitempty"`
+	DownwardAPI           *DownwardAPIVolumeSource           `json:"downwardAPI,omitempty" yaml:"downwardAPI,omitempty"`
+	EmptyDir              *EmptyDirVolumeSource              `json:"emptyDir,omitempty" yaml:"emptyDir,omitempty"`
+	Ephemeral             *EphemeralVolumeSource             `json:"ephemeral,omitempty" yaml:"ephemeral,omitempty"`
+	FC                    *FCVolumeSource                    `json:"fc,omitempty" yaml:"fc,omitempty"`
+	FlexVolume            *FlexVolumeSource                  `json:"flexVolume,omitempty" yaml:"flexVolume,omitempty"`
+	Flocker               *FlockerVolumeSource               `json:"flocker,omitempty" yaml:"flocker,omitempty"`
+	GCEPersistentDisk     *GCEPersistentDiskVolumeSource     `json:"gcePersistentDisk,omitempty" yaml:"gcePersistentDisk,omitempty"`
+	GitRepo               *GitRepoVolumeSource               `json:"gitRepo,omitempty" yaml:"gitRepo,omitempty"`
+	Glusterfs             *GlusterfsVolumeSource             `json:"glusterfs,omitempty" yaml:"glusterfs,omitempty"`
+	HostPath              *HostPathVolumeSource              `json:"hostPath,omitempty" yaml:"hostPath,omitempty"`
+	ISCSI                 *ISCSIVolumeSource                 `json:"iscsi,omitempty" yaml:"iscsi,omitempty"`
+	NFS                   *NFSVolumeSource                   `json:"nfs,omitempty" yaml:"nfs,omitempty"`
+	Name                  string                             `json:"name,omitempty" yaml:"name,omitempty"`
+	PersistentVolumeClaim *PersistentVolumeClaimVolumeSource `json:"persistentVolumeClaim,omitempty" yaml:"persistentVolumeClaim,omitempty"`
+	PhotonPersistentDisk  *PhotonPersistentDiskVolumeSource  `json:"photonPersistentDisk,omitempty" yaml:"photonPersistentDisk,omitempty"`
+	PortworxVolume        *PortworxVolumeSource              `json:"portworxVolume,omitempty" yaml:"portworxVolume,omitempty"`
+	Projected             *ProjectedVolumeSource             `json:"projected,omitempty" yaml:"projected,omitempty"`
+	Quobyte               *QuobyteVolumeSource               `json:"quobyte,omitempty" yaml:"quobyte,omitempty"`
+	RBD                   *RBDVolumeSource                   `json:"rbd,omitempty" yaml:"rbd,omitempty"`
+	ScaleIO               *ScaleIOVolumeSource               `json:"scaleIO,omitempty" yaml:"scaleIO,omitempty"`
+	Secret                *SecretVolumeSource                `json:"secret,omitempty" yaml:"secret,omitempty"`
+	StorageOS             *StorageOSVolumeSource             `json:"storageos,omitempty" yaml:"storageos,omitempty"`
+	VsphereVolume         *VsphereVirtualDiskVolumeSource    `json:"vsphereVolume,omitempty" yaml:"vsphereVolume,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_extra_volume_mount.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_extra_volume_mount.go
new file mode 100644
index 00000000..bbfbaeaa
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_extra_volume_mount.go
@@ -0,0 +1,22 @@
+package client
+
+const (
+	ExtraVolumeMountType                   = "extraVolumeMount"
+	ExtraVolumeMountFieldMountPath         = "mountPath"
+	ExtraVolumeMountFieldMountPropagation  = "mountPropagation"
+	ExtraVolumeMountFieldName              = "name"
+	ExtraVolumeMountFieldReadOnly          = "readOnly"
+	ExtraVolumeMountFieldRecursiveReadOnly = "recursiveReadOnly"
+	ExtraVolumeMountFieldSubPath           = "subPath"
+	ExtraVolumeMountFieldSubPathExpr       = "subPathExpr"
+)
+
+type ExtraVolumeMount struct {
+	MountPath         string `json:"mountPath,omitempty" yaml:"mountPath,omitempty"`
+	MountPropagation  string `json:"mountPropagation,omitempty" yaml:"mountPropagation,omitempty"`
+	Name              string `json:"name,omitempty" yaml:"name,omitempty"`
+	ReadOnly          bool   `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+	RecursiveReadOnly string `json:"recursiveReadOnly,omitempty" yaml:"recursiveReadOnly,omitempty"`
+	SubPath           string `json:"subPath,omitempty" yaml:"subPath,omitempty"`
+	SubPathExpr       string `json:"subPathExpr,omitempty" yaml:"subPathExpr,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_fc_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_fc_volume_source.go
new file mode 100644
index 00000000..ebc0b63f
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_fc_volume_source.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	FCVolumeSourceType            = "fcVolumeSource"
+	FCVolumeSourceFieldFSType     = "fsType"
+	FCVolumeSourceFieldLun        = "lun"
+	FCVolumeSourceFieldReadOnly   = "readOnly"
+	FCVolumeSourceFieldTargetWWNs = "targetWWNs"
+	FCVolumeSourceFieldWWIDs      = "wwids"
+)
+
+type FCVolumeSource struct {
+	FSType     string   `json:"fsType,omitempty" yaml:"fsType,omitempty"`
+	Lun        *int64   `json:"lun,omitempty" yaml:"lun,omitempty"`
+	ReadOnly   bool     `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+	TargetWWNs []string `json:"targetWWNs,omitempty" yaml:"targetWWNs,omitempty"`
+	WWIDs      []string `json:"wwids,omitempty" yaml:"wwids,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_feature.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_feature.go
new file mode 100644
index 00000000..a8d17862
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_feature.go
@@ -0,0 +1,128 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	FeatureType                      = "feature"
+	FeatureFieldAnnotations          = "annotations"
+	FeatureFieldCreated              = "created"
+	FeatureFieldCreatorID            = "creatorId"
+	FeatureFieldLabels               = "labels"
+	FeatureFieldName                 = "name"
+	FeatureFieldOwnerReferences      = "ownerReferences"
+	FeatureFieldRemoved              = "removed"
+	FeatureFieldState                = "state"
+	FeatureFieldStatus               = "status"
+	FeatureFieldTransitioning        = "transitioning"
+	FeatureFieldTransitioningMessage = "transitioningMessage"
+	FeatureFieldUUID                 = "uuid"
+	FeatureFieldValue                = "value"
+)
+
+type Feature struct {
+	types.Resource
+	Annotations          map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created              string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID            string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Labels               map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                 string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences      []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed              string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	State                string            `json:"state,omitempty" yaml:"state,omitempty"`
+	Status               *FeatureStatus    `json:"status,omitempty" yaml:"status,omitempty"`
+	Transitioning        string            `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage string            `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                 string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	Value                *bool             `json:"value,omitempty" yaml:"value,omitempty"`
+}
+
+type FeatureCollection struct {
+	types.Collection
+	Data   []Feature `json:"data,omitempty"`
+	client *FeatureClient
+}
+
+type FeatureClient struct {
+	apiClient *Client
+}
+
+type FeatureOperations interface {
+	List(opts *types.ListOpts) (*FeatureCollection, error)
+	ListAll(opts *types.ListOpts) (*FeatureCollection, error)
+	Create(opts *Feature) (*Feature, error)
+	Update(existing *Feature, updates interface{}) (*Feature, error)
+	Replace(existing *Feature) (*Feature, error)
+	ByID(id string) (*Feature, error)
+	Delete(container *Feature) error
+}
+
+func newFeatureClient(apiClient *Client) *FeatureClient {
+	return &FeatureClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *FeatureClient) Create(container *Feature) (*Feature, error) {
+	resp := &Feature{}
+	err := c.apiClient.Ops.DoCreate(FeatureType, container, resp)
+	return resp, err
+}
+
+func (c *FeatureClient) Update(existing *Feature, updates interface{}) (*Feature, error) {
+	resp := &Feature{}
+	err := c.apiClient.Ops.DoUpdate(FeatureType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *FeatureClient) Replace(obj *Feature) (*Feature, error) {
+	resp := &Feature{}
+	err := c.apiClient.Ops.DoReplace(FeatureType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *FeatureClient) List(opts *types.ListOpts) (*FeatureCollection, error) {
+	resp := &FeatureCollection{}
+	err := c.apiClient.Ops.DoList(FeatureType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *FeatureClient) ListAll(opts *types.ListOpts) (*FeatureCollection, error) {
+	resp := &FeatureCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *FeatureCollection) Next() (*FeatureCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &FeatureCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *FeatureClient) ByID(id string) (*Feature, error) {
+	resp := &Feature{}
+	err := c.apiClient.Ops.DoByID(FeatureType, id, resp)
+	return resp, err
+}
+
+func (c *FeatureClient) Delete(container *Feature) error {
+	return c.apiClient.Ops.DoResourceDelete(FeatureType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_feature_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_feature_spec.go
new file mode 100644
index 00000000..95c50292
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_feature_spec.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	FeatureSpecType       = "featureSpec"
+	FeatureSpecFieldValue = "value"
+)
+
+type FeatureSpec struct {
+	Value *bool `json:"value,omitempty" yaml:"value,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_feature_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_feature_status.go
new file mode 100644
index 00000000..be4799a9
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_feature_status.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	FeatureStatusType             = "featureStatus"
+	FeatureStatusFieldDefault     = "default"
+	FeatureStatusFieldDescription = "description"
+	FeatureStatusFieldDynamic     = "dynamic"
+	FeatureStatusFieldLockedValue = "lockedValue"
+)
+
+type FeatureStatus struct {
+	Default     bool   `json:"default,omitempty" yaml:"default,omitempty"`
+	Description string `json:"description,omitempty" yaml:"description,omitempty"`
+	Dynamic     bool   `json:"dynamic,omitempty" yaml:"dynamic,omitempty"`
+	LockedValue *bool  `json:"lockedValue,omitempty" yaml:"lockedValue,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_field.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_field.go
new file mode 100644
index 00000000..9f13a3ac
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_field.go
@@ -0,0 +1,40 @@
+package client
+
+const (
+	FieldType              = "field"
+	FieldFieldCreate       = "create"
+	FieldFieldDefault      = "default"
+	FieldFieldDescription  = "description"
+	FieldFieldDynamicField = "dynamicField"
+	FieldFieldInvalidChars = "invalidChars"
+	FieldFieldMax          = "max"
+	FieldFieldMaxLength    = "maxLength"
+	FieldFieldMin          = "min"
+	FieldFieldMinLength    = "minLength"
+	FieldFieldNullable     = "nullable"
+	FieldFieldOptions      = "options"
+	FieldFieldRequired     = "required"
+	FieldFieldType         = "type"
+	FieldFieldUnique       = "unique"
+	FieldFieldUpdate       = "update"
+	FieldFieldValidChars   = "validChars"
+)
+
+type Field struct {
+	Create       bool     `json:"create,omitempty" yaml:"create,omitempty"`
+	Default      *Values  `json:"default,omitempty" yaml:"default,omitempty"`
+	Description  string   `json:"description,omitempty" yaml:"description,omitempty"`
+	DynamicField bool     `json:"dynamicField,omitempty" yaml:"dynamicField,omitempty"`
+	InvalidChars string   `json:"invalidChars,omitempty" yaml:"invalidChars,omitempty"`
+	Max          int64    `json:"max,omitempty" yaml:"max,omitempty"`
+	MaxLength    int64    `json:"maxLength,omitempty" yaml:"maxLength,omitempty"`
+	Min          int64    `json:"min,omitempty" yaml:"min,omitempty"`
+	MinLength    int64    `json:"minLength,omitempty" yaml:"minLength,omitempty"`
+	Nullable     bool     `json:"nullable,omitempty" yaml:"nullable,omitempty"`
+	Options      []string `json:"options,omitempty" yaml:"options,omitempty"`
+	Required     bool     `json:"required,omitempty" yaml:"required,omitempty"`
+	Type         string   `json:"type,omitempty" yaml:"type,omitempty"`
+	Unique       bool     `json:"unique,omitempty" yaml:"unique,omitempty"`
+	Update       bool     `json:"update,omitempty" yaml:"update,omitempty"`
+	ValidChars   string   `json:"validChars,omitempty" yaml:"validChars,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_file.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_file.go
new file mode 100644
index 00000000..18d80cc7
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_file.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	FileType          = "file"
+	FileFieldContents = "contents"
+	FileFieldName     = "name"
+)
+
+type File struct {
+	Contents string `json:"contents,omitempty" yaml:"contents,omitempty"`
+	Name     string `json:"name,omitempty" yaml:"name,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_filter.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_filter.go
new file mode 100644
index 00000000..8bb3f714
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_filter.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	FilterType           = "filter"
+	FilterFieldModifiers = "modifiers"
+)
+
+type Filter struct {
+	Modifiers []string `json:"modifiers,omitempty" yaml:"modifiers,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_flannel_network_provider.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_flannel_network_provider.go
new file mode 100644
index 00000000..088fe6bb
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_flannel_network_provider.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	FlannelNetworkProviderType       = "flannelNetworkProvider"
+	FlannelNetworkProviderFieldIface = "iface"
+)
+
+type FlannelNetworkProvider struct {
+	Iface string `json:"iface,omitempty" yaml:"iface,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_fleet_workspace.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_fleet_workspace.go
new file mode 100644
index 00000000..963b286c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_fleet_workspace.go
@@ -0,0 +1,120 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	FleetWorkspaceType                 = "fleetWorkspace"
+	FleetWorkspaceFieldAnnotations     = "annotations"
+	FleetWorkspaceFieldCreated         = "created"
+	FleetWorkspaceFieldCreatorID       = "creatorId"
+	FleetWorkspaceFieldLabels          = "labels"
+	FleetWorkspaceFieldName            = "name"
+	FleetWorkspaceFieldOwnerReferences = "ownerReferences"
+	FleetWorkspaceFieldRemoved         = "removed"
+	FleetWorkspaceFieldStatus          = "status"
+	FleetWorkspaceFieldUUID            = "uuid"
+)
+
+type FleetWorkspace struct {
+	types.Resource
+	Annotations     map[string]string     `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created         string                `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID       string                `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Labels          map[string]string     `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name            string                `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences []OwnerReference      `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed         string                `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Status          *FleetWorkspaceStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	UUID            string                `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type FleetWorkspaceCollection struct {
+	types.Collection
+	Data   []FleetWorkspace `json:"data,omitempty"`
+	client *FleetWorkspaceClient
+}
+
+type FleetWorkspaceClient struct {
+	apiClient *Client
+}
+
+type FleetWorkspaceOperations interface {
+	List(opts *types.ListOpts) (*FleetWorkspaceCollection, error)
+	ListAll(opts *types.ListOpts) (*FleetWorkspaceCollection, error)
+	Create(opts *FleetWorkspace) (*FleetWorkspace, error)
+	Update(existing *FleetWorkspace, updates interface{}) (*FleetWorkspace, error)
+	Replace(existing *FleetWorkspace) (*FleetWorkspace, error)
+	ByID(id string) (*FleetWorkspace, error)
+	Delete(container *FleetWorkspace) error
+}
+
+func newFleetWorkspaceClient(apiClient *Client) *FleetWorkspaceClient {
+	return &FleetWorkspaceClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *FleetWorkspaceClient) Create(container *FleetWorkspace) (*FleetWorkspace, error) {
+	resp := &FleetWorkspace{}
+	err := c.apiClient.Ops.DoCreate(FleetWorkspaceType, container, resp)
+	return resp, err
+}
+
+func (c *FleetWorkspaceClient) Update(existing *FleetWorkspace, updates interface{}) (*FleetWorkspace, error) {
+	resp := &FleetWorkspace{}
+	err := c.apiClient.Ops.DoUpdate(FleetWorkspaceType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *FleetWorkspaceClient) Replace(obj *FleetWorkspace) (*FleetWorkspace, error) {
+	resp := &FleetWorkspace{}
+	err := c.apiClient.Ops.DoReplace(FleetWorkspaceType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *FleetWorkspaceClient) List(opts *types.ListOpts) (*FleetWorkspaceCollection, error) {
+	resp := &FleetWorkspaceCollection{}
+	err := c.apiClient.Ops.DoList(FleetWorkspaceType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *FleetWorkspaceClient) ListAll(opts *types.ListOpts) (*FleetWorkspaceCollection, error) {
+	resp := &FleetWorkspaceCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *FleetWorkspaceCollection) Next() (*FleetWorkspaceCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &FleetWorkspaceCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *FleetWorkspaceClient) ByID(id string) (*FleetWorkspace, error) {
+	resp := &FleetWorkspace{}
+	err := c.apiClient.Ops.DoByID(FleetWorkspaceType, id, resp)
+	return resp, err
+}
+
+func (c *FleetWorkspaceClient) Delete(container *FleetWorkspace) error {
+	return c.apiClient.Ops.DoResourceDelete(FleetWorkspaceType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_fleet_workspace_permission.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_fleet_workspace_permission.go
new file mode 100644
index 00000000..209f6232
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_fleet_workspace_permission.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	FleetWorkspacePermissionType                = "fleetWorkspacePermission"
+	FleetWorkspacePermissionFieldResourceRules  = "resourceRules"
+	FleetWorkspacePermissionFieldWorkspaceVerbs = "workspaceVerbs"
+)
+
+type FleetWorkspacePermission struct {
+	ResourceRules  []PolicyRule `json:"resourceRules,omitempty" yaml:"resourceRules,omitempty"`
+	WorkspaceVerbs []string     `json:"workspaceVerbs,omitempty" yaml:"workspaceVerbs,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_fleet_workspace_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_fleet_workspace_status.go
new file mode 100644
index 00000000..aa5db188
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_fleet_workspace_status.go
@@ -0,0 +1,8 @@
+package client
+
+const (
+	FleetWorkspaceStatusType = "fleetWorkspaceStatus"
+)
+
+type FleetWorkspaceStatus struct {
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_flex_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_flex_volume_source.go
new file mode 100644
index 00000000..d2e942b9
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_flex_volume_source.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	FlexVolumeSourceType           = "flexVolumeSource"
+	FlexVolumeSourceFieldDriver    = "driver"
+	FlexVolumeSourceFieldFSType    = "fsType"
+	FlexVolumeSourceFieldOptions   = "options"
+	FlexVolumeSourceFieldReadOnly  = "readOnly"
+	FlexVolumeSourceFieldSecretRef = "secretRef"
+)
+
+type FlexVolumeSource struct {
+	Driver    string                `json:"driver,omitempty" yaml:"driver,omitempty"`
+	FSType    string                `json:"fsType,omitempty" yaml:"fsType,omitempty"`
+	Options   map[string]string     `json:"options,omitempty" yaml:"options,omitempty"`
+	ReadOnly  bool                  `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+	SecretRef *LocalObjectReference `json:"secretRef,omitempty" yaml:"secretRef,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_flocker_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_flocker_volume_source.go
new file mode 100644
index 00000000..802b77ff
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_flocker_volume_source.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	FlockerVolumeSourceType             = "flockerVolumeSource"
+	FlockerVolumeSourceFieldDatasetName = "datasetName"
+	FlockerVolumeSourceFieldDatasetUUID = "datasetUUID"
+)
+
+type FlockerVolumeSource struct {
+	DatasetName string `json:"datasetName,omitempty" yaml:"datasetName,omitempty"`
+	DatasetUUID string `json:"datasetUUID,omitempty" yaml:"datasetUUID,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_free_ipa_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_free_ipa_config.go
new file mode 100644
index 00000000..750de613
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_free_ipa_config.go
@@ -0,0 +1,84 @@
+package client
+
+const (
+	FreeIpaConfigType                                 = "freeIpaConfig"
+	FreeIpaConfigFieldAccessMode                      = "accessMode"
+	FreeIpaConfigFieldAllowedPrincipalIDs             = "allowedPrincipalIds"
+	FreeIpaConfigFieldAnnotations                     = "annotations"
+	FreeIpaConfigFieldCertificate                     = "certificate"
+	FreeIpaConfigFieldConnectionTimeout               = "connectionTimeout"
+	FreeIpaConfigFieldCreated                         = "created"
+	FreeIpaConfigFieldCreatorID                       = "creatorId"
+	FreeIpaConfigFieldEnabled                         = "enabled"
+	FreeIpaConfigFieldGroupDNAttribute                = "groupDNAttribute"
+	FreeIpaConfigFieldGroupMemberMappingAttribute     = "groupMemberMappingAttribute"
+	FreeIpaConfigFieldGroupMemberUserAttribute        = "groupMemberUserAttribute"
+	FreeIpaConfigFieldGroupNameAttribute              = "groupNameAttribute"
+	FreeIpaConfigFieldGroupObjectClass                = "groupObjectClass"
+	FreeIpaConfigFieldGroupSearchAttribute            = "groupSearchAttribute"
+	FreeIpaConfigFieldGroupSearchBase                 = "groupSearchBase"
+	FreeIpaConfigFieldGroupSearchFilter               = "groupSearchFilter"
+	FreeIpaConfigFieldLabels                          = "labels"
+	FreeIpaConfigFieldName                            = "name"
+	FreeIpaConfigFieldOwnerReferences                 = "ownerReferences"
+	FreeIpaConfigFieldPort                            = "port"
+	FreeIpaConfigFieldRemoved                         = "removed"
+	FreeIpaConfigFieldServers                         = "servers"
+	FreeIpaConfigFieldServiceAccountDistinguishedName = "serviceAccountDistinguishedName"
+	FreeIpaConfigFieldServiceAccountPassword          = "serviceAccountPassword"
+	FreeIpaConfigFieldStartTLS                        = "starttls"
+	FreeIpaConfigFieldStatus                          = "status"
+	FreeIpaConfigFieldTLS                             = "tls"
+	FreeIpaConfigFieldType                            = "type"
+	FreeIpaConfigFieldUUID                            = "uuid"
+	FreeIpaConfigFieldUserDisabledBitMask             = "userDisabledBitMask"
+	FreeIpaConfigFieldUserEnabledAttribute            = "userEnabledAttribute"
+	FreeIpaConfigFieldUserLoginAttribute              = "userLoginAttribute"
+	FreeIpaConfigFieldUserMemberAttribute             = "userMemberAttribute"
+	FreeIpaConfigFieldUserNameAttribute               = "userNameAttribute"
+	FreeIpaConfigFieldUserObjectClass                 = "userObjectClass"
+	FreeIpaConfigFieldUserSearchAttribute             = "userSearchAttribute"
+	FreeIpaConfigFieldUserSearchBase                  = "userSearchBase"
+	FreeIpaConfigFieldUserSearchFilter                = "userSearchFilter"
+)
+
+type FreeIpaConfig struct {
+	AccessMode                      string            `json:"accessMode,omitempty" yaml:"accessMode,omitempty"`
+	AllowedPrincipalIDs             []string          `json:"allowedPrincipalIds,omitempty" yaml:"allowedPrincipalIds,omitempty"`
+	Annotations                     map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Certificate                     string            `json:"certificate,omitempty" yaml:"certificate,omitempty"`
+	ConnectionTimeout               int64             `json:"connectionTimeout,omitempty" yaml:"connectionTimeout,omitempty"`
+	Created                         string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID                       string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Enabled                         bool              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	GroupDNAttribute                string            `json:"groupDNAttribute,omitempty" yaml:"groupDNAttribute,omitempty"`
+	GroupMemberMappingAttribute     string            `json:"groupMemberMappingAttribute,omitempty" yaml:"groupMemberMappingAttribute,omitempty"`
+	GroupMemberUserAttribute        string            `json:"groupMemberUserAttribute,omitempty" yaml:"groupMemberUserAttribute,omitempty"`
+	GroupNameAttribute              string            `json:"groupNameAttribute,omitempty" yaml:"groupNameAttribute,omitempty"`
+	GroupObjectClass                string            `json:"groupObjectClass,omitempty" yaml:"groupObjectClass,omitempty"`
+	GroupSearchAttribute            string            `json:"groupSearchAttribute,omitempty" yaml:"groupSearchAttribute,omitempty"`
+	GroupSearchBase                 string            `json:"groupSearchBase,omitempty" yaml:"groupSearchBase,omitempty"`
+	GroupSearchFilter               string            `json:"groupSearchFilter,omitempty" yaml:"groupSearchFilter,omitempty"`
+	Labels                          map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                            string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences                 []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Port                            int64             `json:"port,omitempty" yaml:"port,omitempty"`
+	Removed                         string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Servers                         []string          `json:"servers,omitempty" yaml:"servers,omitempty"`
+	ServiceAccountDistinguishedName string            `json:"serviceAccountDistinguishedName,omitempty" yaml:"serviceAccountDistinguishedName,omitempty"`
+	ServiceAccountPassword          string            `json:"serviceAccountPassword,omitempty" yaml:"serviceAccountPassword,omitempty"`
+	StartTLS                        bool              `json:"starttls,omitempty" yaml:"starttls,omitempty"`
+	Status                          *AuthConfigStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	TLS                             bool              `json:"tls,omitempty" yaml:"tls,omitempty"`
+	Type                            string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UUID                            string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserDisabledBitMask             int64             `json:"userDisabledBitMask,omitempty" yaml:"userDisabledBitMask,omitempty"`
+	UserEnabledAttribute            string            `json:"userEnabledAttribute,omitempty" yaml:"userEnabledAttribute,omitempty"`
+	UserLoginAttribute              string            `json:"userLoginAttribute,omitempty" yaml:"userLoginAttribute,omitempty"`
+	UserMemberAttribute             string            `json:"userMemberAttribute,omitempty" yaml:"userMemberAttribute,omitempty"`
+	UserNameAttribute               string            `json:"userNameAttribute,omitempty" yaml:"userNameAttribute,omitempty"`
+	UserObjectClass                 string            `json:"userObjectClass,omitempty" yaml:"userObjectClass,omitempty"`
+	UserSearchAttribute             string            `json:"userSearchAttribute,omitempty" yaml:"userSearchAttribute,omitempty"`
+	UserSearchBase                  string            `json:"userSearchBase,omitempty" yaml:"userSearchBase,omitempty"`
+	UserSearchFilter                string            `json:"userSearchFilter,omitempty" yaml:"userSearchFilter,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_free_ipa_test_and_apply_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_free_ipa_test_and_apply_input.go
new file mode 100644
index 00000000..ad27c591
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_free_ipa_test_and_apply_input.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	FreeIpaTestAndApplyInputType            = "freeIpaTestAndApplyInput"
+	FreeIpaTestAndApplyInputFieldLdapConfig = "ldapConfig"
+	FreeIpaTestAndApplyInputFieldPassword   = "password"
+	FreeIpaTestAndApplyInputFieldUsername   = "username"
+)
+
+type FreeIpaTestAndApplyInput struct {
+	LdapConfig *LdapConfig `json:"ldapConfig,omitempty" yaml:"ldapConfig,omitempty"`
+	Password   string      `json:"password,omitempty" yaml:"password,omitempty"`
+	Username   string      `json:"username,omitempty" yaml:"username,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gce_persistent_disk_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gce_persistent_disk_volume_source.go
new file mode 100644
index 00000000..726a4483
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gce_persistent_disk_volume_source.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	GCEPersistentDiskVolumeSourceType           = "gcePersistentDiskVolumeSource"
+	GCEPersistentDiskVolumeSourceFieldFSType    = "fsType"
+	GCEPersistentDiskVolumeSourceFieldPDName    = "pdName"
+	GCEPersistentDiskVolumeSourceFieldPartition = "partition"
+	GCEPersistentDiskVolumeSourceFieldReadOnly  = "readOnly"
+)
+
+type GCEPersistentDiskVolumeSource struct {
+	FSType    string `json:"fsType,omitempty" yaml:"fsType,omitempty"`
+	PDName    string `json:"pdName,omitempty" yaml:"pdName,omitempty"`
+	Partition int64  `json:"partition,omitempty" yaml:"partition,omitempty"`
+	ReadOnly  bool   `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_generate_kube_config_output.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_generate_kube_config_output.go
new file mode 100644
index 00000000..2603f41c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_generate_kube_config_output.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	GenerateKubeConfigOutputType        = "generateKubeConfigOutput"
+	GenerateKubeConfigOutputFieldConfig = "config"
+)
+
+type GenerateKubeConfigOutput struct {
+	Config string `json:"config,omitempty" yaml:"config,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_generic_oidcapply_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_generic_oidcapply_input.go
new file mode 100644
index 00000000..5bc8c60f
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_generic_oidcapply_input.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	GenericOIDCApplyInputType            = "genericOIDCApplyInput"
+	GenericOIDCApplyInputFieldCode       = "code"
+	GenericOIDCApplyInputFieldEnabled    = "enabled"
+	GenericOIDCApplyInputFieldOIDCConfig = "oidcConfig"
+)
+
+type GenericOIDCApplyInput struct {
+	Code       string      `json:"code,omitempty" yaml:"code,omitempty"`
+	Enabled    bool        `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	OIDCConfig *OIDCConfig `json:"oidcConfig,omitempty" yaml:"oidcConfig,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_generic_oidcconfig.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_generic_oidcconfig.go
new file mode 100644
index 00000000..4d120bbb
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_generic_oidcconfig.go
@@ -0,0 +1,62 @@
+package client
+
+const (
+	GenericOIDCConfigType                     = "genericOIDCConfig"
+	GenericOIDCConfigFieldAccessMode          = "accessMode"
+	GenericOIDCConfigFieldAcrValue            = "acrValue"
+	GenericOIDCConfigFieldAllowedPrincipalIDs = "allowedPrincipalIds"
+	GenericOIDCConfigFieldAnnotations         = "annotations"
+	GenericOIDCConfigFieldAuthEndpoint        = "authEndpoint"
+	GenericOIDCConfigFieldCertificate         = "certificate"
+	GenericOIDCConfigFieldClientID            = "clientId"
+	GenericOIDCConfigFieldClientSecret        = "clientSecret"
+	GenericOIDCConfigFieldCreated             = "created"
+	GenericOIDCConfigFieldCreatorID           = "creatorId"
+	GenericOIDCConfigFieldEnabled             = "enabled"
+	GenericOIDCConfigFieldGroupSearchEnabled  = "groupSearchEnabled"
+	GenericOIDCConfigFieldGroupsClaim         = "groupsClaim"
+	GenericOIDCConfigFieldIssuer              = "issuer"
+	GenericOIDCConfigFieldJWKSUrl             = "jwksUrl"
+	GenericOIDCConfigFieldLabels              = "labels"
+	GenericOIDCConfigFieldName                = "name"
+	GenericOIDCConfigFieldOwnerReferences     = "ownerReferences"
+	GenericOIDCConfigFieldPrivateKey          = "privateKey"
+	GenericOIDCConfigFieldRancherURL          = "rancherUrl"
+	GenericOIDCConfigFieldRemoved             = "removed"
+	GenericOIDCConfigFieldScopes              = "scope"
+	GenericOIDCConfigFieldStatus              = "status"
+	GenericOIDCConfigFieldTokenEndpoint       = "tokenEndpoint"
+	GenericOIDCConfigFieldType                = "type"
+	GenericOIDCConfigFieldUUID                = "uuid"
+	GenericOIDCConfigFieldUserInfoEndpoint    = "userInfoEndpoint"
+)
+
+type GenericOIDCConfig struct {
+	AccessMode          string            `json:"accessMode,omitempty" yaml:"accessMode,omitempty"`
+	AcrValue            string            `json:"acrValue,omitempty" yaml:"acrValue,omitempty"`
+	AllowedPrincipalIDs []string          `json:"allowedPrincipalIds,omitempty" yaml:"allowedPrincipalIds,omitempty"`
+	Annotations         map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	AuthEndpoint        string            `json:"authEndpoint,omitempty" yaml:"authEndpoint,omitempty"`
+	Certificate         string            `json:"certificate,omitempty" yaml:"certificate,omitempty"`
+	ClientID            string            `json:"clientId,omitempty" yaml:"clientId,omitempty"`
+	ClientSecret        string            `json:"clientSecret,omitempty" yaml:"clientSecret,omitempty"`
+	Created             string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID           string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Enabled             bool              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	GroupSearchEnabled  *bool             `json:"groupSearchEnabled,omitempty" yaml:"groupSearchEnabled,omitempty"`
+	GroupsClaim         string            `json:"groupsClaim,omitempty" yaml:"groupsClaim,omitempty"`
+	Issuer              string            `json:"issuer,omitempty" yaml:"issuer,omitempty"`
+	JWKSUrl             string            `json:"jwksUrl,omitempty" yaml:"jwksUrl,omitempty"`
+	Labels              map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences     []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	PrivateKey          string            `json:"privateKey,omitempty" yaml:"privateKey,omitempty"`
+	RancherURL          string            `json:"rancherUrl,omitempty" yaml:"rancherUrl,omitempty"`
+	Removed             string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Scopes              string            `json:"scope,omitempty" yaml:"scope,omitempty"`
+	Status              *AuthConfigStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	TokenEndpoint       string            `json:"tokenEndpoint,omitempty" yaml:"tokenEndpoint,omitempty"`
+	Type                string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UUID                string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserInfoEndpoint    string            `json:"userInfoEndpoint,omitempty" yaml:"userInfoEndpoint,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_generic_oidctest_output.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_generic_oidctest_output.go
new file mode 100644
index 00000000..93d2fdcf
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_generic_oidctest_output.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	GenericOIDCTestOutputType             = "genericOIDCTestOutput"
+	GenericOIDCTestOutputFieldRedirectURL = "redirectUrl"
+)
+
+type GenericOIDCTestOutput struct {
+	RedirectURL string `json:"redirectUrl,omitempty" yaml:"redirectUrl,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_git_repo_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_git_repo_volume_source.go
new file mode 100644
index 00000000..102d08fd
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_git_repo_volume_source.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	GitRepoVolumeSourceType            = "gitRepoVolumeSource"
+	GitRepoVolumeSourceFieldDirectory  = "directory"
+	GitRepoVolumeSourceFieldRepository = "repository"
+	GitRepoVolumeSourceFieldRevision   = "revision"
+)
+
+type GitRepoVolumeSource struct {
+	Directory  string `json:"directory,omitempty" yaml:"directory,omitempty"`
+	Repository string `json:"repository,omitempty" yaml:"repository,omitempty"`
+	Revision   string `json:"revision,omitempty" yaml:"revision,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_github_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_github_config.go
new file mode 100644
index 00000000..04dc4531
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_github_config.go
@@ -0,0 +1,46 @@
+package client
+
+const (
+	GithubConfigType                     = "githubConfig"
+	GithubConfigFieldAccessMode          = "accessMode"
+	GithubConfigFieldAdditionalClientIDs = "additionalClientIds"
+	GithubConfigFieldAllowedPrincipalIDs = "allowedPrincipalIds"
+	GithubConfigFieldAnnotations         = "annotations"
+	GithubConfigFieldClientID            = "clientId"
+	GithubConfigFieldClientSecret        = "clientSecret"
+	GithubConfigFieldCreated             = "created"
+	GithubConfigFieldCreatorID           = "creatorId"
+	GithubConfigFieldEnabled             = "enabled"
+	GithubConfigFieldHostname            = "hostname"
+	GithubConfigFieldHostnameToClientID  = "hostnameToClientId"
+	GithubConfigFieldLabels              = "labels"
+	GithubConfigFieldName                = "name"
+	GithubConfigFieldOwnerReferences     = "ownerReferences"
+	GithubConfigFieldRemoved             = "removed"
+	GithubConfigFieldStatus              = "status"
+	GithubConfigFieldTLS                 = "tls"
+	GithubConfigFieldType                = "type"
+	GithubConfigFieldUUID                = "uuid"
+)
+
+type GithubConfig struct {
+	AccessMode          string            `json:"accessMode,omitempty" yaml:"accessMode,omitempty"`
+	AdditionalClientIDs map[string]string `json:"additionalClientIds,omitempty" yaml:"additionalClientIds,omitempty"`
+	AllowedPrincipalIDs []string          `json:"allowedPrincipalIds,omitempty" yaml:"allowedPrincipalIds,omitempty"`
+	Annotations         map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	ClientID            string            `json:"clientId,omitempty" yaml:"clientId,omitempty"`
+	ClientSecret        string            `json:"clientSecret,omitempty" yaml:"clientSecret,omitempty"`
+	Created             string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID           string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Enabled             bool              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	Hostname            string            `json:"hostname,omitempty" yaml:"hostname,omitempty"`
+	HostnameToClientID  map[string]string `json:"hostnameToClientId,omitempty" yaml:"hostnameToClientId,omitempty"`
+	Labels              map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences     []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed             string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Status              *AuthConfigStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	TLS                 bool              `json:"tls,omitempty" yaml:"tls,omitempty"`
+	Type                string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UUID                string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_github_config_apply_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_github_config_apply_input.go
new file mode 100644
index 00000000..af9cae87
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_github_config_apply_input.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	GithubConfigApplyInputType              = "githubConfigApplyInput"
+	GithubConfigApplyInputFieldCode         = "code"
+	GithubConfigApplyInputFieldEnabled      = "enabled"
+	GithubConfigApplyInputFieldGithubConfig = "githubConfig"
+)
+
+type GithubConfigApplyInput struct {
+	Code         string        `json:"code,omitempty" yaml:"code,omitempty"`
+	Enabled      bool          `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	GithubConfig *GithubConfig `json:"githubConfig,omitempty" yaml:"githubConfig,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_github_config_test_output.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_github_config_test_output.go
new file mode 100644
index 00000000..d7eaf886
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_github_config_test_output.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	GithubConfigTestOutputType             = "githubConfigTestOutput"
+	GithubConfigTestOutputFieldRedirectURL = "redirectUrl"
+)
+
+type GithubConfigTestOutput struct {
+	RedirectURL string `json:"redirectUrl,omitempty" yaml:"redirectUrl,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_autopilot_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_autopilot_config.go
new file mode 100644
index 00000000..83bf5ac7
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_autopilot_config.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	GKEAutopilotConfigType         = "gkeAutopilotConfig"
+	GKEAutopilotConfigFieldEnabled = "enabled"
+)
+
+type GKEAutopilotConfig struct {
+	Enabled bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_cidr_block.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_cidr_block.go
new file mode 100644
index 00000000..d89fa3ea
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_cidr_block.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	GKECidrBlockType             = "gkeCidrBlock"
+	GKECidrBlockFieldCidrBlock   = "cidrBlock"
+	GKECidrBlockFieldDisplayName = "displayName"
+)
+
+type GKECidrBlock struct {
+	CidrBlock   string `json:"cidrBlock,omitempty" yaml:"cidrBlock,omitempty"`
+	DisplayName string `json:"displayName,omitempty" yaml:"displayName,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_cluster_addons.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_cluster_addons.go
new file mode 100644
index 00000000..8cbf23c7
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_cluster_addons.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	GKEClusterAddonsType                          = "gkeClusterAddons"
+	GKEClusterAddonsFieldHTTPLoadBalancing        = "httpLoadBalancing"
+	GKEClusterAddonsFieldHorizontalPodAutoscaling = "horizontalPodAutoscaling"
+	GKEClusterAddonsFieldNetworkPolicyConfig      = "networkPolicyConfig"
+)
+
+type GKEClusterAddons struct {
+	HTTPLoadBalancing        bool `json:"httpLoadBalancing,omitempty" yaml:"httpLoadBalancing,omitempty"`
+	HorizontalPodAutoscaling bool `json:"horizontalPodAutoscaling,omitempty" yaml:"horizontalPodAutoscaling,omitempty"`
+	NetworkPolicyConfig      bool `json:"networkPolicyConfig,omitempty" yaml:"networkPolicyConfig,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_cluster_config_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_cluster_config_spec.go
new file mode 100644
index 00000000..4973fe66
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_cluster_config_spec.go
@@ -0,0 +1,58 @@
+package client
+
+const (
+	GKEClusterConfigSpecType                                = "gkeClusterConfigSpec"
+	GKEClusterConfigSpecFieldAutopilotConfig                = "autopilotConfig"
+	GKEClusterConfigSpecFieldClusterAddons                  = "clusterAddons"
+	GKEClusterConfigSpecFieldClusterIpv4CidrBlock           = "clusterIpv4Cidr"
+	GKEClusterConfigSpecFieldClusterName                    = "clusterName"
+	GKEClusterConfigSpecFieldCustomerManagedEncryptionKey   = "customerManagedEncryptionKey"
+	GKEClusterConfigSpecFieldDescription                    = "description"
+	GKEClusterConfigSpecFieldEnableKubernetesAlpha          = "enableKubernetesAlpha"
+	GKEClusterConfigSpecFieldGoogleCredentialSecret         = "googleCredentialSecret"
+	GKEClusterConfigSpecFieldIPAllocationPolicy             = "ipAllocationPolicy"
+	GKEClusterConfigSpecFieldImported                       = "imported"
+	GKEClusterConfigSpecFieldKubernetesVersion              = "kubernetesVersion"
+	GKEClusterConfigSpecFieldLabels                         = "labels"
+	GKEClusterConfigSpecFieldLocations                      = "locations"
+	GKEClusterConfigSpecFieldLoggingService                 = "loggingService"
+	GKEClusterConfigSpecFieldMaintenanceWindow              = "maintenanceWindow"
+	GKEClusterConfigSpecFieldMasterAuthorizedNetworksConfig = "masterAuthorizedNetworks"
+	GKEClusterConfigSpecFieldMonitoringService              = "monitoringService"
+	GKEClusterConfigSpecFieldNetwork                        = "network"
+	GKEClusterConfigSpecFieldNetworkPolicyEnabled           = "networkPolicyEnabled"
+	GKEClusterConfigSpecFieldNodePools                      = "nodePools"
+	GKEClusterConfigSpecFieldPrivateClusterConfig           = "privateClusterConfig"
+	GKEClusterConfigSpecFieldProjectID                      = "projectID"
+	GKEClusterConfigSpecFieldRegion                         = "region"
+	GKEClusterConfigSpecFieldSubnetwork                     = "subnetwork"
+	GKEClusterConfigSpecFieldZone                           = "zone"
+)
+
+type GKEClusterConfigSpec struct {
+	AutopilotConfig                *GKEAutopilotConfig                `json:"autopilotConfig,omitempty" yaml:"autopilotConfig,omitempty"`
+	ClusterAddons                  *GKEClusterAddons                  `json:"clusterAddons,omitempty" yaml:"clusterAddons,omitempty"`
+	ClusterIpv4CidrBlock           *string                            `json:"clusterIpv4Cidr,omitempty" yaml:"clusterIpv4Cidr,omitempty"`
+	ClusterName                    string                             `json:"clusterName,omitempty" yaml:"clusterName,omitempty"`
+	CustomerManagedEncryptionKey   *CMEKConfig                        `json:"customerManagedEncryptionKey,omitempty" yaml:"customerManagedEncryptionKey,omitempty"`
+	Description                    string                             `json:"description,omitempty" yaml:"description,omitempty"`
+	EnableKubernetesAlpha          *bool                              `json:"enableKubernetesAlpha,omitempty" yaml:"enableKubernetesAlpha,omitempty"`
+	GoogleCredentialSecret         string                             `json:"googleCredentialSecret,omitempty" yaml:"googleCredentialSecret,omitempty"`
+	IPAllocationPolicy             *GKEIPAllocationPolicy             `json:"ipAllocationPolicy,omitempty" yaml:"ipAllocationPolicy,omitempty"`
+	Imported                       bool                               `json:"imported,omitempty" yaml:"imported,omitempty"`
+	KubernetesVersion              *string                            `json:"kubernetesVersion,omitempty" yaml:"kubernetesVersion,omitempty"`
+	Labels                         map[string]string                  `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Locations                      []string                           `json:"locations,omitempty" yaml:"locations,omitempty"`
+	LoggingService                 *string                            `json:"loggingService,omitempty" yaml:"loggingService,omitempty"`
+	MaintenanceWindow              *string                            `json:"maintenanceWindow,omitempty" yaml:"maintenanceWindow,omitempty"`
+	MasterAuthorizedNetworksConfig *GKEMasterAuthorizedNetworksConfig `json:"masterAuthorizedNetworks,omitempty" yaml:"masterAuthorizedNetworks,omitempty"`
+	MonitoringService              *string                            `json:"monitoringService,omitempty" yaml:"monitoringService,omitempty"`
+	Network                        *string                            `json:"network,omitempty" yaml:"network,omitempty"`
+	NetworkPolicyEnabled           *bool                              `json:"networkPolicyEnabled,omitempty" yaml:"networkPolicyEnabled,omitempty"`
+	NodePools                      []GKENodePoolConfig                `json:"nodePools,omitempty" yaml:"nodePools,omitempty"`
+	PrivateClusterConfig           *GKEPrivateClusterConfig           `json:"privateClusterConfig,omitempty" yaml:"privateClusterConfig,omitempty"`
+	ProjectID                      string                             `json:"projectID,omitempty" yaml:"projectID,omitempty"`
+	Region                         string                             `json:"region,omitempty" yaml:"region,omitempty"`
+	Subnetwork                     *string                            `json:"subnetwork,omitempty" yaml:"subnetwork,omitempty"`
+	Zone                           string                             `json:"zone,omitempty" yaml:"zone,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_master_authorized_networks_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_master_authorized_networks_config.go
new file mode 100644
index 00000000..0eb9371a
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_master_authorized_networks_config.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	GKEMasterAuthorizedNetworksConfigType            = "gkeMasterAuthorizedNetworksConfig"
+	GKEMasterAuthorizedNetworksConfigFieldCidrBlocks = "cidrBlocks"
+	GKEMasterAuthorizedNetworksConfigFieldEnabled    = "enabled"
+)
+
+type GKEMasterAuthorizedNetworksConfig struct {
+	CidrBlocks []GKECidrBlock `json:"cidrBlocks,omitempty" yaml:"cidrBlocks,omitempty"`
+	Enabled    bool           `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_config.go
new file mode 100644
index 00000000..ee72b727
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_config.go
@@ -0,0 +1,32 @@
+package client
+
+const (
+	GKENodeConfigType                = "gkeNodeConfig"
+	GKENodeConfigFieldBootDiskKmsKey = "bootDiskKmsKey"
+	GKENodeConfigFieldDiskSizeGb     = "diskSizeGb"
+	GKENodeConfigFieldDiskType       = "diskType"
+	GKENodeConfigFieldImageType      = "imageType"
+	GKENodeConfigFieldLabels         = "labels"
+	GKENodeConfigFieldLocalSsdCount  = "localSsdCount"
+	GKENodeConfigFieldMachineType    = "machineType"
+	GKENodeConfigFieldOauthScopes    = "oauthScopes"
+	GKENodeConfigFieldPreemptible    = "preemptible"
+	GKENodeConfigFieldServiceAccount = "serviceAccount"
+	GKENodeConfigFieldTags           = "tags"
+	GKENodeConfigFieldTaints         = "taints"
+)
+
+type GKENodeConfig struct {
+	BootDiskKmsKey string               `json:"bootDiskKmsKey,omitempty" yaml:"bootDiskKmsKey,omitempty"`
+	DiskSizeGb     int64                `json:"diskSizeGb,omitempty" yaml:"diskSizeGb,omitempty"`
+	DiskType       string               `json:"diskType,omitempty" yaml:"diskType,omitempty"`
+	ImageType      string               `json:"imageType,omitempty" yaml:"imageType,omitempty"`
+	Labels         map[string]string    `json:"labels,omitempty" yaml:"labels,omitempty"`
+	LocalSsdCount  int64                `json:"localSsdCount,omitempty" yaml:"localSsdCount,omitempty"`
+	MachineType    string               `json:"machineType,omitempty" yaml:"machineType,omitempty"`
+	OauthScopes    []string             `json:"oauthScopes,omitempty" yaml:"oauthScopes,omitempty"`
+	Preemptible    bool                 `json:"preemptible,omitempty" yaml:"preemptible,omitempty"`
+	ServiceAccount string               `json:"serviceAccount,omitempty" yaml:"serviceAccount,omitempty"`
+	Tags           []string             `json:"tags,omitempty" yaml:"tags,omitempty"`
+	Taints         []GKENodeTaintConfig `json:"taints,omitempty" yaml:"taints,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_pool_autoscaling.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_pool_autoscaling.go
new file mode 100644
index 00000000..7be64fc9
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_pool_autoscaling.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	GKENodePoolAutoscalingType              = "gkeNodePoolAutoscaling"
+	GKENodePoolAutoscalingFieldEnabled      = "enabled"
+	GKENodePoolAutoscalingFieldMaxNodeCount = "maxNodeCount"
+	GKENodePoolAutoscalingFieldMinNodeCount = "minNodeCount"
+)
+
+type GKENodePoolAutoscaling struct {
+	Enabled      bool  `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	MaxNodeCount int64 `json:"maxNodeCount,omitempty" yaml:"maxNodeCount,omitempty"`
+	MinNodeCount int64 `json:"minNodeCount,omitempty" yaml:"minNodeCount,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_pool_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_pool_config.go
new file mode 100644
index 00000000..30bf7707
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_pool_config.go
@@ -0,0 +1,22 @@
+package client
+
+const (
+	GKENodePoolConfigType                   = "gkeNodePoolConfig"
+	GKENodePoolConfigFieldAutoscaling       = "autoscaling"
+	GKENodePoolConfigFieldConfig            = "config"
+	GKENodePoolConfigFieldInitialNodeCount  = "initialNodeCount"
+	GKENodePoolConfigFieldManagement        = "management"
+	GKENodePoolConfigFieldMaxPodsConstraint = "maxPodsConstraint"
+	GKENodePoolConfigFieldName              = "name"
+	GKENodePoolConfigFieldVersion           = "version"
+)
+
+type GKENodePoolConfig struct {
+	Autoscaling       *GKENodePoolAutoscaling `json:"autoscaling,omitempty" yaml:"autoscaling,omitempty"`
+	Config            *GKENodeConfig          `json:"config,omitempty" yaml:"config,omitempty"`
+	InitialNodeCount  *int64                  `json:"initialNodeCount,omitempty" yaml:"initialNodeCount,omitempty"`
+	Management        *GKENodePoolManagement  `json:"management,omitempty" yaml:"management,omitempty"`
+	MaxPodsConstraint *int64                  `json:"maxPodsConstraint,omitempty" yaml:"maxPodsConstraint,omitempty"`
+	Name              *string                 `json:"name,omitempty" yaml:"name,omitempty"`
+	Version           *string                 `json:"version,omitempty" yaml:"version,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_pool_management.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_pool_management.go
new file mode 100644
index 00000000..de37c5a1
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_pool_management.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	GKENodePoolManagementType             = "gkeNodePoolManagement"
+	GKENodePoolManagementFieldAutoRepair  = "autoRepair"
+	GKENodePoolManagementFieldAutoUpgrade = "autoUpgrade"
+)
+
+type GKENodePoolManagement struct {
+	AutoRepair  bool `json:"autoRepair,omitempty" yaml:"autoRepair,omitempty"`
+	AutoUpgrade bool `json:"autoUpgrade,omitempty" yaml:"autoUpgrade,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_taint_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_taint_config.go
new file mode 100644
index 00000000..f9fd1e9b
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_node_taint_config.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	GKENodeTaintConfigType        = "gkeNodeTaintConfig"
+	GKENodeTaintConfigFieldEffect = "effect"
+	GKENodeTaintConfigFieldKey    = "key"
+	GKENodeTaintConfigFieldValue  = "value"
+)
+
+type GKENodeTaintConfig struct {
+	Effect string `json:"effect,omitempty" yaml:"effect,omitempty"`
+	Key    string `json:"key,omitempty" yaml:"key,omitempty"`
+	Value  string `json:"value,omitempty" yaml:"value,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_private_cluster_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_private_cluster_config.go
new file mode 100644
index 00000000..7607cbe6
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_private_cluster_config.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	GKEPrivateClusterConfigType                       = "gkePrivateClusterConfig"
+	GKEPrivateClusterConfigFieldEnablePrivateEndpoint = "enablePrivateEndpoint"
+	GKEPrivateClusterConfigFieldEnablePrivateNodes    = "enablePrivateNodes"
+	GKEPrivateClusterConfigFieldMasterIpv4CidrBlock   = "masterIpv4CidrBlock"
+)
+
+type GKEPrivateClusterConfig struct {
+	EnablePrivateEndpoint bool   `json:"enablePrivateEndpoint,omitempty" yaml:"enablePrivateEndpoint,omitempty"`
+	EnablePrivateNodes    bool   `json:"enablePrivateNodes,omitempty" yaml:"enablePrivateNodes,omitempty"`
+	MasterIpv4CidrBlock   string `json:"masterIpv4CidrBlock,omitempty" yaml:"masterIpv4CidrBlock,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_status.go
new file mode 100644
index 00000000..3c943906
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gke_status.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	GKEStatusType                       = "gkeStatus"
+	GKEStatusFieldPrivateRequiresTunnel = "privateRequiresTunnel"
+	GKEStatusFieldUpstreamSpec          = "upstreamSpec"
+)
+
+type GKEStatus struct {
+	PrivateRequiresTunnel *bool                 `json:"privateRequiresTunnel,omitempty" yaml:"privateRequiresTunnel,omitempty"`
+	UpstreamSpec          *GKEClusterConfigSpec `json:"upstreamSpec,omitempty" yaml:"upstreamSpec,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gkeip_allocation_policy.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gkeip_allocation_policy.go
new file mode 100644
index 00000000..140bd42a
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_gkeip_allocation_policy.go
@@ -0,0 +1,24 @@
+package client
+
+const (
+	GKEIPAllocationPolicyType                            = "gkeipAllocationPolicy"
+	GKEIPAllocationPolicyFieldClusterIpv4CidrBlock       = "clusterIpv4CidrBlock"
+	GKEIPAllocationPolicyFieldClusterSecondaryRangeName  = "clusterSecondaryRangeName"
+	GKEIPAllocationPolicyFieldCreateSubnetwork           = "createSubnetwork"
+	GKEIPAllocationPolicyFieldNodeIpv4CidrBlock          = "nodeIpv4CidrBlock"
+	GKEIPAllocationPolicyFieldServicesIpv4CidrBlock      = "servicesIpv4CidrBlock"
+	GKEIPAllocationPolicyFieldServicesSecondaryRangeName = "servicesSecondaryRangeName"
+	GKEIPAllocationPolicyFieldSubnetworkName             = "subnetworkName"
+	GKEIPAllocationPolicyFieldUseIPAliases               = "useIpAliases"
+)
+
+type GKEIPAllocationPolicy struct {
+	ClusterIpv4CidrBlock       string `json:"clusterIpv4CidrBlock,omitempty" yaml:"clusterIpv4CidrBlock,omitempty"`
+	ClusterSecondaryRangeName  string `json:"clusterSecondaryRangeName,omitempty" yaml:"clusterSecondaryRangeName,omitempty"`
+	CreateSubnetwork           bool   `json:"createSubnetwork,omitempty" yaml:"createSubnetwork,omitempty"`
+	NodeIpv4CidrBlock          string `json:"nodeIpv4CidrBlock,omitempty" yaml:"nodeIpv4CidrBlock,omitempty"`
+	ServicesIpv4CidrBlock      string `json:"servicesIpv4CidrBlock,omitempty" yaml:"servicesIpv4CidrBlock,omitempty"`
+	ServicesSecondaryRangeName string `json:"servicesSecondaryRangeName,omitempty" yaml:"servicesSecondaryRangeName,omitempty"`
+	SubnetworkName             string `json:"subnetworkName,omitempty" yaml:"subnetworkName,omitempty"`
+	UseIPAliases               bool   `json:"useIpAliases,omitempty" yaml:"useIpAliases,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_aws_opts.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_aws_opts.go
new file mode 100644
index 00000000..61965de7
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_aws_opts.go
@@ -0,0 +1,28 @@
+package client
+
+const (
+	GlobalAwsOptsType                             = "globalAwsOpts"
+	GlobalAwsOptsFieldDisableSecurityGroupIngress = "disable-security-group-ingress"
+	GlobalAwsOptsFieldDisableStrictZoneCheck      = "disable-strict-zone-check"
+	GlobalAwsOptsFieldElbSecurityGroup            = "elb-security-group"
+	GlobalAwsOptsFieldKubernetesClusterID         = "kubernetes-cluster-id"
+	GlobalAwsOptsFieldKubernetesClusterTag        = "kubernetes-cluster-tag"
+	GlobalAwsOptsFieldRoleARN                     = "role-arn"
+	GlobalAwsOptsFieldRouteTableID                = "routetable-id"
+	GlobalAwsOptsFieldSubnetID                    = "subnet-id"
+	GlobalAwsOptsFieldVPC                         = "vpc"
+	GlobalAwsOptsFieldZone                        = "zone"
+)
+
+type GlobalAwsOpts struct {
+	DisableSecurityGroupIngress bool   `json:"disable-security-group-ingress,omitempty" yaml:"disable-security-group-ingress,omitempty"`
+	DisableStrictZoneCheck      bool   `json:"disable-strict-zone-check,omitempty" yaml:"disable-strict-zone-check,omitempty"`
+	ElbSecurityGroup            string `json:"elb-security-group,omitempty" yaml:"elb-security-group,omitempty"`
+	KubernetesClusterID         string `json:"kubernetes-cluster-id,omitempty" yaml:"kubernetes-cluster-id,omitempty"`
+	KubernetesClusterTag        string `json:"kubernetes-cluster-tag,omitempty" yaml:"kubernetes-cluster-tag,omitempty"`
+	RoleARN                     string `json:"role-arn,omitempty" yaml:"role-arn,omitempty"`
+	RouteTableID                string `json:"routetable-id,omitempty" yaml:"routetable-id,omitempty"`
+	SubnetID                    string `json:"subnet-id,omitempty" yaml:"subnet-id,omitempty"`
+	VPC                         string `json:"vpc,omitempty" yaml:"vpc,omitempty"`
+	Zone                        string `json:"zone,omitempty" yaml:"zone,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns.go
new file mode 100644
index 00000000..2de8450e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns.go
@@ -0,0 +1,152 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	GlobalDnsType                      = "globalDns"
+	GlobalDnsFieldAnnotations          = "annotations"
+	GlobalDnsFieldCreated              = "created"
+	GlobalDnsFieldCreatorID            = "creatorId"
+	GlobalDnsFieldFQDN                 = "fqdn"
+	GlobalDnsFieldLabels               = "labels"
+	GlobalDnsFieldMembers              = "members"
+	GlobalDnsFieldMultiClusterAppID    = "multiClusterAppId"
+	GlobalDnsFieldName                 = "name"
+	GlobalDnsFieldOwnerReferences      = "ownerReferences"
+	GlobalDnsFieldProjectIDs           = "projectIds"
+	GlobalDnsFieldProviderID           = "providerId"
+	GlobalDnsFieldRemoved              = "removed"
+	GlobalDnsFieldState                = "state"
+	GlobalDnsFieldStatus               = "status"
+	GlobalDnsFieldTTL                  = "ttl"
+	GlobalDnsFieldTransitioning        = "transitioning"
+	GlobalDnsFieldTransitioningMessage = "transitioningMessage"
+	GlobalDnsFieldUUID                 = "uuid"
+)
+
+type GlobalDns struct {
+	types.Resource
+	Annotations          map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created              string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID            string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	FQDN                 string            `json:"fqdn,omitempty" yaml:"fqdn,omitempty"`
+	Labels               map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Members              []Member          `json:"members,omitempty" yaml:"members,omitempty"`
+	MultiClusterAppID    string            `json:"multiClusterAppId,omitempty" yaml:"multiClusterAppId,omitempty"`
+	Name                 string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences      []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	ProjectIDs           []string          `json:"projectIds,omitempty" yaml:"projectIds,omitempty"`
+	ProviderID           string            `json:"providerId,omitempty" yaml:"providerId,omitempty"`
+	Removed              string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	State                string            `json:"state,omitempty" yaml:"state,omitempty"`
+	Status               *GlobalDNSStatus  `json:"status,omitempty" yaml:"status,omitempty"`
+	TTL                  int64             `json:"ttl,omitempty" yaml:"ttl,omitempty"`
+	Transitioning        string            `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage string            `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                 string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type GlobalDnsCollection struct {
+	types.Collection
+	Data   []GlobalDns `json:"data,omitempty"`
+	client *GlobalDnsClient
+}
+
+type GlobalDnsClient struct {
+	apiClient *Client
+}
+
+type GlobalDnsOperations interface {
+	List(opts *types.ListOpts) (*GlobalDnsCollection, error)
+	ListAll(opts *types.ListOpts) (*GlobalDnsCollection, error)
+	Create(opts *GlobalDns) (*GlobalDns, error)
+	Update(existing *GlobalDns, updates interface{}) (*GlobalDns, error)
+	Replace(existing *GlobalDns) (*GlobalDns, error)
+	ByID(id string) (*GlobalDns, error)
+	Delete(container *GlobalDns) error
+
+	ActionAddProjects(resource *GlobalDns, input *UpdateGlobalDNSTargetsInput) error
+
+	ActionRemoveProjects(resource *GlobalDns, input *UpdateGlobalDNSTargetsInput) error
+}
+
+func newGlobalDnsClient(apiClient *Client) *GlobalDnsClient {
+	return &GlobalDnsClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *GlobalDnsClient) Create(container *GlobalDns) (*GlobalDns, error) {
+	resp := &GlobalDns{}
+	err := c.apiClient.Ops.DoCreate(GlobalDnsType, container, resp)
+	return resp, err
+}
+
+func (c *GlobalDnsClient) Update(existing *GlobalDns, updates interface{}) (*GlobalDns, error) {
+	resp := &GlobalDns{}
+	err := c.apiClient.Ops.DoUpdate(GlobalDnsType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *GlobalDnsClient) Replace(obj *GlobalDns) (*GlobalDns, error) {
+	resp := &GlobalDns{}
+	err := c.apiClient.Ops.DoReplace(GlobalDnsType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *GlobalDnsClient) List(opts *types.ListOpts) (*GlobalDnsCollection, error) {
+	resp := &GlobalDnsCollection{}
+	err := c.apiClient.Ops.DoList(GlobalDnsType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *GlobalDnsClient) ListAll(opts *types.ListOpts) (*GlobalDnsCollection, error) {
+	resp := &GlobalDnsCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *GlobalDnsCollection) Next() (*GlobalDnsCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &GlobalDnsCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *GlobalDnsClient) ByID(id string) (*GlobalDns, error) {
+	resp := &GlobalDns{}
+	err := c.apiClient.Ops.DoByID(GlobalDnsType, id, resp)
+	return resp, err
+}
+
+func (c *GlobalDnsClient) Delete(container *GlobalDns) error {
+	return c.apiClient.Ops.DoResourceDelete(GlobalDnsType, &container.Resource)
+}
+
+func (c *GlobalDnsClient) ActionAddProjects(resource *GlobalDns, input *UpdateGlobalDNSTargetsInput) error {
+	err := c.apiClient.Ops.DoAction(GlobalDnsType, "addProjects", &resource.Resource, input, nil)
+	return err
+}
+
+func (c *GlobalDnsClient) ActionRemoveProjects(resource *GlobalDns, input *UpdateGlobalDNSTargetsInput) error {
+	err := c.apiClient.Ops.DoAction(GlobalDnsType, "removeProjects", &resource.Resource, input, nil)
+	return err
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns_provider.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns_provider.go
new file mode 100644
index 00000000..951b2284
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns_provider.go
@@ -0,0 +1,128 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	GlobalDnsProviderType                          = "globalDnsProvider"
+	GlobalDnsProviderFieldAlidnsProviderConfig     = "alidnsProviderConfig"
+	GlobalDnsProviderFieldAnnotations              = "annotations"
+	GlobalDnsProviderFieldCloudflareProviderConfig = "cloudflareProviderConfig"
+	GlobalDnsProviderFieldCreated                  = "created"
+	GlobalDnsProviderFieldCreatorID                = "creatorId"
+	GlobalDnsProviderFieldLabels                   = "labels"
+	GlobalDnsProviderFieldMembers                  = "members"
+	GlobalDnsProviderFieldName                     = "name"
+	GlobalDnsProviderFieldOwnerReferences          = "ownerReferences"
+	GlobalDnsProviderFieldRemoved                  = "removed"
+	GlobalDnsProviderFieldRootDomain               = "rootDomain"
+	GlobalDnsProviderFieldRoute53ProviderConfig    = "route53ProviderConfig"
+	GlobalDnsProviderFieldUUID                     = "uuid"
+)
+
+type GlobalDnsProvider struct {
+	types.Resource
+	AlidnsProviderConfig     *AlidnsProviderConfig     `json:"alidnsProviderConfig,omitempty" yaml:"alidnsProviderConfig,omitempty"`
+	Annotations              map[string]string         `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	CloudflareProviderConfig *CloudflareProviderConfig `json:"cloudflareProviderConfig,omitempty" yaml:"cloudflareProviderConfig,omitempty"`
+	Created                  string                    `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID                string                    `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Labels                   map[string]string         `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Members                  []Member                  `json:"members,omitempty" yaml:"members,omitempty"`
+	Name                     string                    `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences          []OwnerReference          `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed                  string                    `json:"removed,omitempty" yaml:"removed,omitempty"`
+	RootDomain               string                    `json:"rootDomain,omitempty" yaml:"rootDomain,omitempty"`
+	Route53ProviderConfig    *Route53ProviderConfig    `json:"route53ProviderConfig,omitempty" yaml:"route53ProviderConfig,omitempty"`
+	UUID                     string                    `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type GlobalDnsProviderCollection struct {
+	types.Collection
+	Data   []GlobalDnsProvider `json:"data,omitempty"`
+	client *GlobalDnsProviderClient
+}
+
+type GlobalDnsProviderClient struct {
+	apiClient *Client
+}
+
+type GlobalDnsProviderOperations interface {
+	List(opts *types.ListOpts) (*GlobalDnsProviderCollection, error)
+	ListAll(opts *types.ListOpts) (*GlobalDnsProviderCollection, error)
+	Create(opts *GlobalDnsProvider) (*GlobalDnsProvider, error)
+	Update(existing *GlobalDnsProvider, updates interface{}) (*GlobalDnsProvider, error)
+	Replace(existing *GlobalDnsProvider) (*GlobalDnsProvider, error)
+	ByID(id string) (*GlobalDnsProvider, error)
+	Delete(container *GlobalDnsProvider) error
+}
+
+func newGlobalDnsProviderClient(apiClient *Client) *GlobalDnsProviderClient {
+	return &GlobalDnsProviderClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *GlobalDnsProviderClient) Create(container *GlobalDnsProvider) (*GlobalDnsProvider, error) {
+	resp := &GlobalDnsProvider{}
+	err := c.apiClient.Ops.DoCreate(GlobalDnsProviderType, container, resp)
+	return resp, err
+}
+
+func (c *GlobalDnsProviderClient) Update(existing *GlobalDnsProvider, updates interface{}) (*GlobalDnsProvider, error) {
+	resp := &GlobalDnsProvider{}
+	err := c.apiClient.Ops.DoUpdate(GlobalDnsProviderType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *GlobalDnsProviderClient) Replace(obj *GlobalDnsProvider) (*GlobalDnsProvider, error) {
+	resp := &GlobalDnsProvider{}
+	err := c.apiClient.Ops.DoReplace(GlobalDnsProviderType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *GlobalDnsProviderClient) List(opts *types.ListOpts) (*GlobalDnsProviderCollection, error) {
+	resp := &GlobalDnsProviderCollection{}
+	err := c.apiClient.Ops.DoList(GlobalDnsProviderType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *GlobalDnsProviderClient) ListAll(opts *types.ListOpts) (*GlobalDnsProviderCollection, error) {
+	resp := &GlobalDnsProviderCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *GlobalDnsProviderCollection) Next() (*GlobalDnsProviderCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &GlobalDnsProviderCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *GlobalDnsProviderClient) ByID(id string) (*GlobalDnsProvider, error) {
+	resp := &GlobalDnsProvider{}
+	err := c.apiClient.Ops.DoByID(GlobalDnsProviderType, id, resp)
+	return resp, err
+}
+
+func (c *GlobalDnsProviderClient) Delete(container *GlobalDnsProvider) error {
+	return c.apiClient.Ops.DoResourceDelete(GlobalDnsProviderType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns_provider_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns_provider_spec.go
new file mode 100644
index 00000000..b5f1157a
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns_provider_spec.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	GlobalDNSProviderSpecType                          = "globalDnsProviderSpec"
+	GlobalDNSProviderSpecFieldAlidnsProviderConfig     = "alidnsProviderConfig"
+	GlobalDNSProviderSpecFieldCloudflareProviderConfig = "cloudflareProviderConfig"
+	GlobalDNSProviderSpecFieldMembers                  = "members"
+	GlobalDNSProviderSpecFieldRootDomain               = "rootDomain"
+	GlobalDNSProviderSpecFieldRoute53ProviderConfig    = "route53ProviderConfig"
+)
+
+type GlobalDNSProviderSpec struct {
+	AlidnsProviderConfig     *AlidnsProviderConfig     `json:"alidnsProviderConfig,omitempty" yaml:"alidnsProviderConfig,omitempty"`
+	CloudflareProviderConfig *CloudflareProviderConfig `json:"cloudflareProviderConfig,omitempty" yaml:"cloudflareProviderConfig,omitempty"`
+	Members                  []Member                  `json:"members,omitempty" yaml:"members,omitempty"`
+	RootDomain               string                    `json:"rootDomain,omitempty" yaml:"rootDomain,omitempty"`
+	Route53ProviderConfig    *Route53ProviderConfig    `json:"route53ProviderConfig,omitempty" yaml:"route53ProviderConfig,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns_spec.go
new file mode 100644
index 00000000..3f22ef29
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns_spec.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	GlobalDNSSpecType                   = "globalDnsSpec"
+	GlobalDNSSpecFieldFQDN              = "fqdn"
+	GlobalDNSSpecFieldMembers           = "members"
+	GlobalDNSSpecFieldMultiClusterAppID = "multiClusterAppId"
+	GlobalDNSSpecFieldProjectIDs        = "projectIds"
+	GlobalDNSSpecFieldProviderID        = "providerId"
+	GlobalDNSSpecFieldTTL               = "ttl"
+)
+
+type GlobalDNSSpec struct {
+	FQDN              string   `json:"fqdn,omitempty" yaml:"fqdn,omitempty"`
+	Members           []Member `json:"members,omitempty" yaml:"members,omitempty"`
+	MultiClusterAppID string   `json:"multiClusterAppId,omitempty" yaml:"multiClusterAppId,omitempty"`
+	ProjectIDs        []string `json:"projectIds,omitempty" yaml:"projectIds,omitempty"`
+	ProviderID        string   `json:"providerId,omitempty" yaml:"providerId,omitempty"`
+	TTL               int64    `json:"ttl,omitempty" yaml:"ttl,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns_status.go
new file mode 100644
index 00000000..d37181ae
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_dns_status.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	GlobalDNSStatusType                  = "globalDnsStatus"
+	GlobalDNSStatusFieldClusterEndpoints = "clusterEndpoints"
+	GlobalDNSStatusFieldEndpoints        = "endpoints"
+)
+
+type GlobalDNSStatus struct {
+	ClusterEndpoints map[string][]string `json:"clusterEndpoints,omitempty" yaml:"clusterEndpoints,omitempty"`
+	Endpoints        []string            `json:"endpoints,omitempty" yaml:"endpoints,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_openstack_opts.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_openstack_opts.go
new file mode 100644
index 00000000..7db5e17e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_openstack_opts.go
@@ -0,0 +1,30 @@
+package client
+
+const (
+	GlobalOpenstackOptsType            = "globalOpenstackOpts"
+	GlobalOpenstackOptsFieldAuthURL    = "auth-url"
+	GlobalOpenstackOptsFieldCAFile     = "ca-file"
+	GlobalOpenstackOptsFieldDomainID   = "domain-id"
+	GlobalOpenstackOptsFieldDomainName = "domain-name"
+	GlobalOpenstackOptsFieldPassword   = "password"
+	GlobalOpenstackOptsFieldRegion     = "region"
+	GlobalOpenstackOptsFieldTenantID   = "tenant-id"
+	GlobalOpenstackOptsFieldTenantName = "tenant-name"
+	GlobalOpenstackOptsFieldTrustID    = "trust-id"
+	GlobalOpenstackOptsFieldUserID     = "user-id"
+	GlobalOpenstackOptsFieldUsername   = "username"
+)
+
+type GlobalOpenstackOpts struct {
+	AuthURL    string `json:"auth-url,omitempty" yaml:"auth-url,omitempty"`
+	CAFile     string `json:"ca-file,omitempty" yaml:"ca-file,omitempty"`
+	DomainID   string `json:"domain-id,omitempty" yaml:"domain-id,omitempty"`
+	DomainName string `json:"domain-name,omitempty" yaml:"domain-name,omitempty"`
+	Password   string `json:"password,omitempty" yaml:"password,omitempty"`
+	Region     string `json:"region,omitempty" yaml:"region,omitempty"`
+	TenantID   string `json:"tenant-id,omitempty" yaml:"tenant-id,omitempty"`
+	TenantName string `json:"tenant-name,omitempty" yaml:"tenant-name,omitempty"`
+	TrustID    string `json:"trust-id,omitempty" yaml:"trust-id,omitempty"`
+	UserID     string `json:"user-id,omitempty" yaml:"user-id,omitempty"`
+	Username   string `json:"username,omitempty" yaml:"username,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_role.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_role.go
new file mode 100644
index 00000000..f528984f
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_role.go
@@ -0,0 +1,134 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	GlobalRoleType                                    = "globalRole"
+	GlobalRoleFieldAnnotations                        = "annotations"
+	GlobalRoleFieldBuiltin                            = "builtin"
+	GlobalRoleFieldCreated                            = "created"
+	GlobalRoleFieldCreatorID                          = "creatorId"
+	GlobalRoleFieldDescription                        = "description"
+	GlobalRoleFieldInheritedClusterRoles              = "inheritedClusterRoles"
+	GlobalRoleFieldInheritedFleetWorkspacePermissions = "inheritedFleetWorkspacePermissions"
+	GlobalRoleFieldLabels                             = "labels"
+	GlobalRoleFieldName                               = "name"
+	GlobalRoleFieldNamespacedRules                    = "namespacedRules"
+	GlobalRoleFieldNewUserDefault                     = "newUserDefault"
+	GlobalRoleFieldOwnerReferences                    = "ownerReferences"
+	GlobalRoleFieldRemoved                            = "removed"
+	GlobalRoleFieldRules                              = "rules"
+	GlobalRoleFieldStatus                             = "status"
+	GlobalRoleFieldUUID                               = "uuid"
+)
+
+type GlobalRole struct {
+	types.Resource
+	Annotations                        map[string]string         `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Builtin                            bool                      `json:"builtin,omitempty" yaml:"builtin,omitempty"`
+	Created                            string                    `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID                          string                    `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Description                        string                    `json:"description,omitempty" yaml:"description,omitempty"`
+	InheritedClusterRoles              []string                  `json:"inheritedClusterRoles,omitempty" yaml:"inheritedClusterRoles,omitempty"`
+	InheritedFleetWorkspacePermissions *FleetWorkspacePermission `json:"inheritedFleetWorkspacePermissions,omitempty" yaml:"inheritedFleetWorkspacePermissions,omitempty"`
+	Labels                             map[string]string         `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                               string                    `json:"name,omitempty" yaml:"name,omitempty"`
+	NamespacedRules                    map[string][]PolicyRule   `json:"namespacedRules,omitempty" yaml:"namespacedRules,omitempty"`
+	NewUserDefault                     bool                      `json:"newUserDefault,omitempty" yaml:"newUserDefault,omitempty"`
+	OwnerReferences                    []OwnerReference          `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed                            string                    `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Rules                              []PolicyRule              `json:"rules,omitempty" yaml:"rules,omitempty"`
+	Status                             GlobalRoleStatus          `json:"status,omitempty" yaml:"status,omitempty"`
+	UUID                               string                    `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type GlobalRoleCollection struct {
+	types.Collection
+	Data   []GlobalRole `json:"data,omitempty"`
+	client *GlobalRoleClient
+}
+
+type GlobalRoleClient struct {
+	apiClient *Client
+}
+
+type GlobalRoleOperations interface {
+	List(opts *types.ListOpts) (*GlobalRoleCollection, error)
+	ListAll(opts *types.ListOpts) (*GlobalRoleCollection, error)
+	Create(opts *GlobalRole) (*GlobalRole, error)
+	Update(existing *GlobalRole, updates interface{}) (*GlobalRole, error)
+	Replace(existing *GlobalRole) (*GlobalRole, error)
+	ByID(id string) (*GlobalRole, error)
+	Delete(container *GlobalRole) error
+}
+
+func newGlobalRoleClient(apiClient *Client) *GlobalRoleClient {
+	return &GlobalRoleClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *GlobalRoleClient) Create(container *GlobalRole) (*GlobalRole, error) {
+	resp := &GlobalRole{}
+	err := c.apiClient.Ops.DoCreate(GlobalRoleType, container, resp)
+	return resp, err
+}
+
+func (c *GlobalRoleClient) Update(existing *GlobalRole, updates interface{}) (*GlobalRole, error) {
+	resp := &GlobalRole{}
+	err := c.apiClient.Ops.DoUpdate(GlobalRoleType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *GlobalRoleClient) Replace(obj *GlobalRole) (*GlobalRole, error) {
+	resp := &GlobalRole{}
+	err := c.apiClient.Ops.DoReplace(GlobalRoleType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *GlobalRoleClient) List(opts *types.ListOpts) (*GlobalRoleCollection, error) {
+	resp := &GlobalRoleCollection{}
+	err := c.apiClient.Ops.DoList(GlobalRoleType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *GlobalRoleClient) ListAll(opts *types.ListOpts) (*GlobalRoleCollection, error) {
+	resp := &GlobalRoleCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *GlobalRoleCollection) Next() (*GlobalRoleCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &GlobalRoleCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *GlobalRoleClient) ByID(id string) (*GlobalRole, error) {
+	resp := &GlobalRole{}
+	err := c.apiClient.Ops.DoByID(GlobalRoleType, id, resp)
+	return resp, err
+}
+
+func (c *GlobalRoleClient) Delete(container *GlobalRole) error {
+	return c.apiClient.Ops.DoResourceDelete(GlobalRoleType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_role_binding.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_role_binding.go
new file mode 100644
index 00000000..0d447d01
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_role_binding.go
@@ -0,0 +1,124 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	GlobalRoleBindingType                  = "globalRoleBinding"
+	GlobalRoleBindingFieldAnnotations      = "annotations"
+	GlobalRoleBindingFieldCreated          = "created"
+	GlobalRoleBindingFieldCreatorID        = "creatorId"
+	GlobalRoleBindingFieldGlobalRoleID     = "globalRoleId"
+	GlobalRoleBindingFieldGroupPrincipalID = "groupPrincipalId"
+	GlobalRoleBindingFieldLabels           = "labels"
+	GlobalRoleBindingFieldName             = "name"
+	GlobalRoleBindingFieldOwnerReferences  = "ownerReferences"
+	GlobalRoleBindingFieldRemoved          = "removed"
+	GlobalRoleBindingFieldUUID             = "uuid"
+	GlobalRoleBindingFieldUserID           = "userId"
+)
+
+type GlobalRoleBinding struct {
+	types.Resource
+	Annotations      map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created          string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID        string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	GlobalRoleID     string            `json:"globalRoleId,omitempty" yaml:"globalRoleId,omitempty"`
+	GroupPrincipalID string            `json:"groupPrincipalId,omitempty" yaml:"groupPrincipalId,omitempty"`
+	Labels           map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name             string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences  []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed          string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	UUID             string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserID           string            `json:"userId,omitempty" yaml:"userId,omitempty"`
+}
+
+type GlobalRoleBindingCollection struct {
+	types.Collection
+	Data   []GlobalRoleBinding `json:"data,omitempty"`
+	client *GlobalRoleBindingClient
+}
+
+type GlobalRoleBindingClient struct {
+	apiClient *Client
+}
+
+type GlobalRoleBindingOperations interface {
+	List(opts *types.ListOpts) (*GlobalRoleBindingCollection, error)
+	ListAll(opts *types.ListOpts) (*GlobalRoleBindingCollection, error)
+	Create(opts *GlobalRoleBinding) (*GlobalRoleBinding, error)
+	Update(existing *GlobalRoleBinding, updates interface{}) (*GlobalRoleBinding, error)
+	Replace(existing *GlobalRoleBinding) (*GlobalRoleBinding, error)
+	ByID(id string) (*GlobalRoleBinding, error)
+	Delete(container *GlobalRoleBinding) error
+}
+
+func newGlobalRoleBindingClient(apiClient *Client) *GlobalRoleBindingClient {
+	return &GlobalRoleBindingClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *GlobalRoleBindingClient) Create(container *GlobalRoleBinding) (*GlobalRoleBinding, error) {
+	resp := &GlobalRoleBinding{}
+	err := c.apiClient.Ops.DoCreate(GlobalRoleBindingType, container, resp)
+	return resp, err
+}
+
+func (c *GlobalRoleBindingClient) Update(existing *GlobalRoleBinding, updates interface{}) (*GlobalRoleBinding, error) {
+	resp := &GlobalRoleBinding{}
+	err := c.apiClient.Ops.DoUpdate(GlobalRoleBindingType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *GlobalRoleBindingClient) Replace(obj *GlobalRoleBinding) (*GlobalRoleBinding, error) {
+	resp := &GlobalRoleBinding{}
+	err := c.apiClient.Ops.DoReplace(GlobalRoleBindingType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *GlobalRoleBindingClient) List(opts *types.ListOpts) (*GlobalRoleBindingCollection, error) {
+	resp := &GlobalRoleBindingCollection{}
+	err := c.apiClient.Ops.DoList(GlobalRoleBindingType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *GlobalRoleBindingClient) ListAll(opts *types.ListOpts) (*GlobalRoleBindingCollection, error) {
+	resp := &GlobalRoleBindingCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *GlobalRoleBindingCollection) Next() (*GlobalRoleBindingCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &GlobalRoleBindingCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *GlobalRoleBindingClient) ByID(id string) (*GlobalRoleBinding, error) {
+	resp := &GlobalRoleBinding{}
+	err := c.apiClient.Ops.DoByID(GlobalRoleBindingType, id, resp)
+	return resp, err
+}
+
+func (c *GlobalRoleBindingClient) Delete(container *GlobalRoleBinding) error {
+	return c.apiClient.Ops.DoResourceDelete(GlobalRoleBindingType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_role_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_role_status.go
new file mode 100644
index 00000000..2e90c1e2
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_role_status.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	GlobalRoleStatusType                    = "globalRoleStatus"
+	GlobalRoleStatusFieldConditions         = "conditions"
+	GlobalRoleStatusFieldLastUpdate         = "lastUpdateTime"
+	GlobalRoleStatusFieldObservedGeneration = "observedGeneration"
+	GlobalRoleStatusFieldSummary            = "summary"
+)
+
+type GlobalRoleStatus struct {
+	Conditions         []Condition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	LastUpdate         string      `json:"lastUpdateTime,omitempty" yaml:"lastUpdateTime,omitempty"`
+	ObservedGeneration int64       `json:"observedGeneration,omitempty" yaml:"observedGeneration,omitempty"`
+	Summary            string      `json:"summary,omitempty" yaml:"summary,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_vsphere_opts.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_vsphere_opts.go
new file mode 100644
index 00000000..3b515a06
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_global_vsphere_opts.go
@@ -0,0 +1,32 @@
+package client
+
+const (
+	GlobalVsphereOptsType                   = "globalVsphereOpts"
+	GlobalVsphereOptsFieldDatacenter        = "datacenter"
+	GlobalVsphereOptsFieldDatacenters       = "datacenters"
+	GlobalVsphereOptsFieldDefaultDatastore  = "datastore"
+	GlobalVsphereOptsFieldInsecureFlag      = "insecure-flag"
+	GlobalVsphereOptsFieldPassword          = "password"
+	GlobalVsphereOptsFieldRoundTripperCount = "soap-roundtrip-count"
+	GlobalVsphereOptsFieldUser              = "user"
+	GlobalVsphereOptsFieldVCenterIP         = "server"
+	GlobalVsphereOptsFieldVCenterPort       = "port"
+	GlobalVsphereOptsFieldVMName            = "vm-name"
+	GlobalVsphereOptsFieldVMUUID            = "vm-uuid"
+	GlobalVsphereOptsFieldWorkingDir        = "working-dir"
+)
+
+type GlobalVsphereOpts struct {
+	Datacenter        string `json:"datacenter,omitempty" yaml:"datacenter,omitempty"`
+	Datacenters       string `json:"datacenters,omitempty" yaml:"datacenters,omitempty"`
+	DefaultDatastore  string `json:"datastore,omitempty" yaml:"datastore,omitempty"`
+	InsecureFlag      bool   `json:"insecure-flag,omitempty" yaml:"insecure-flag,omitempty"`
+	Password          string `json:"password,omitempty" yaml:"password,omitempty"`
+	RoundTripperCount int64  `json:"soap-roundtrip-count,omitempty" yaml:"soap-roundtrip-count,omitempty"`
+	User              string `json:"user,omitempty" yaml:"user,omitempty"`
+	VCenterIP         string `json:"server,omitempty" yaml:"server,omitempty"`
+	VCenterPort       string `json:"port,omitempty" yaml:"port,omitempty"`
+	VMName            string `json:"vm-name,omitempty" yaml:"vm-name,omitempty"`
+	VMUUID            string `json:"vm-uuid,omitempty" yaml:"vm-uuid,omitempty"`
+	WorkingDir        string `json:"working-dir,omitempty" yaml:"working-dir,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_glusterfs_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_glusterfs_volume_source.go
new file mode 100644
index 00000000..fa5900b3
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_glusterfs_volume_source.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	GlusterfsVolumeSourceType               = "glusterfsVolumeSource"
+	GlusterfsVolumeSourceFieldEndpointsName = "endpoints"
+	GlusterfsVolumeSourceFieldPath          = "path"
+	GlusterfsVolumeSourceFieldReadOnly      = "readOnly"
+)
+
+type GlusterfsVolumeSource struct {
+	EndpointsName string `json:"endpoints,omitempty" yaml:"endpoints,omitempty"`
+	Path          string `json:"path,omitempty" yaml:"path,omitempty"`
+	ReadOnly      bool   `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_google_oauth_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_google_oauth_config.go
new file mode 100644
index 00000000..f4414229
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_google_oauth_config.go
@@ -0,0 +1,46 @@
+package client
+
+const (
+	GoogleOauthConfigType                              = "googleOauthConfig"
+	GoogleOauthConfigFieldAccessMode                   = "accessMode"
+	GoogleOauthConfigFieldAdminEmail                   = "adminEmail"
+	GoogleOauthConfigFieldAllowedPrincipalIDs          = "allowedPrincipalIds"
+	GoogleOauthConfigFieldAnnotations                  = "annotations"
+	GoogleOauthConfigFieldCreated                      = "created"
+	GoogleOauthConfigFieldCreatorID                    = "creatorId"
+	GoogleOauthConfigFieldEnabled                      = "enabled"
+	GoogleOauthConfigFieldHostname                     = "hostname"
+	GoogleOauthConfigFieldLabels                       = "labels"
+	GoogleOauthConfigFieldName                         = "name"
+	GoogleOauthConfigFieldNestedGroupMembershipEnabled = "nestedGroupMembershipEnabled"
+	GoogleOauthConfigFieldOauthCredential              = "oauthCredential"
+	GoogleOauthConfigFieldOwnerReferences              = "ownerReferences"
+	GoogleOauthConfigFieldRemoved                      = "removed"
+	GoogleOauthConfigFieldServiceAccountCredential     = "serviceAccountCredential"
+	GoogleOauthConfigFieldStatus                       = "status"
+	GoogleOauthConfigFieldType                         = "type"
+	GoogleOauthConfigFieldUUID                         = "uuid"
+	GoogleOauthConfigFieldUserInfoEndpoint             = "userInfoEndpoint"
+)
+
+type GoogleOauthConfig struct {
+	AccessMode                   string            `json:"accessMode,omitempty" yaml:"accessMode,omitempty"`
+	AdminEmail                   string            `json:"adminEmail,omitempty" yaml:"adminEmail,omitempty"`
+	AllowedPrincipalIDs          []string          `json:"allowedPrincipalIds,omitempty" yaml:"allowedPrincipalIds,omitempty"`
+	Annotations                  map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created                      string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID                    string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Enabled                      bool              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	Hostname                     string            `json:"hostname,omitempty" yaml:"hostname,omitempty"`
+	Labels                       map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                         string            `json:"name,omitempty" yaml:"name,omitempty"`
+	NestedGroupMembershipEnabled bool              `json:"nestedGroupMembershipEnabled,omitempty" yaml:"nestedGroupMembershipEnabled,omitempty"`
+	OauthCredential              string            `json:"oauthCredential,omitempty" yaml:"oauthCredential,omitempty"`
+	OwnerReferences              []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed                      string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	ServiceAccountCredential     string            `json:"serviceAccountCredential,omitempty" yaml:"serviceAccountCredential,omitempty"`
+	Status                       *AuthConfigStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	Type                         string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UUID                         string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserInfoEndpoint             string            `json:"userInfoEndpoint,omitempty" yaml:"userInfoEndpoint,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_google_oauth_config_apply_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_google_oauth_config_apply_input.go
new file mode 100644
index 00000000..9b5d8c58
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_google_oauth_config_apply_input.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	GoogleOauthConfigApplyInputType                   = "googleOauthConfigApplyInput"
+	GoogleOauthConfigApplyInputFieldCode              = "code"
+	GoogleOauthConfigApplyInputFieldEnabled           = "enabled"
+	GoogleOauthConfigApplyInputFieldGoogleOauthConfig = "googleOauthConfig"
+)
+
+type GoogleOauthConfigApplyInput struct {
+	Code              string             `json:"code,omitempty" yaml:"code,omitempty"`
+	Enabled           bool               `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	GoogleOauthConfig *GoogleOauthConfig `json:"googleOauthConfig,omitempty" yaml:"googleOauthConfig,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_google_oauth_config_test_output.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_google_oauth_config_test_output.go
new file mode 100644
index 00000000..941108c0
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_google_oauth_config_test_output.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	GoogleOauthConfigTestOutputType             = "googleOauthConfigTestOutput"
+	GoogleOauthConfigTestOutputFieldRedirectURL = "redirectUrl"
+)
+
+type GoogleOauthConfigTestOutput struct {
+	RedirectURL string `json:"redirectUrl,omitempty" yaml:"redirectUrl,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_group.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_group.go
new file mode 100644
index 00000000..f14da72b
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_group.go
@@ -0,0 +1,118 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	GroupType                 = "group"
+	GroupFieldAnnotations     = "annotations"
+	GroupFieldCreated         = "created"
+	GroupFieldCreatorID       = "creatorId"
+	GroupFieldLabels          = "labels"
+	GroupFieldName            = "name"
+	GroupFieldOwnerReferences = "ownerReferences"
+	GroupFieldRemoved         = "removed"
+	GroupFieldUUID            = "uuid"
+)
+
+type Group struct {
+	types.Resource
+	Annotations     map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created         string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID       string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Labels          map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name            string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed         string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	UUID            string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type GroupCollection struct {
+	types.Collection
+	Data   []Group `json:"data,omitempty"`
+	client *GroupClient
+}
+
+type GroupClient struct {
+	apiClient *Client
+}
+
+type GroupOperations interface {
+	List(opts *types.ListOpts) (*GroupCollection, error)
+	ListAll(opts *types.ListOpts) (*GroupCollection, error)
+	Create(opts *Group) (*Group, error)
+	Update(existing *Group, updates interface{}) (*Group, error)
+	Replace(existing *Group) (*Group, error)
+	ByID(id string) (*Group, error)
+	Delete(container *Group) error
+}
+
+func newGroupClient(apiClient *Client) *GroupClient {
+	return &GroupClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *GroupClient) Create(container *Group) (*Group, error) {
+	resp := &Group{}
+	err := c.apiClient.Ops.DoCreate(GroupType, container, resp)
+	return resp, err
+}
+
+func (c *GroupClient) Update(existing *Group, updates interface{}) (*Group, error) {
+	resp := &Group{}
+	err := c.apiClient.Ops.DoUpdate(GroupType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *GroupClient) Replace(obj *Group) (*Group, error) {
+	resp := &Group{}
+	err := c.apiClient.Ops.DoReplace(GroupType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *GroupClient) List(opts *types.ListOpts) (*GroupCollection, error) {
+	resp := &GroupCollection{}
+	err := c.apiClient.Ops.DoList(GroupType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *GroupClient) ListAll(opts *types.ListOpts) (*GroupCollection, error) {
+	resp := &GroupCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *GroupCollection) Next() (*GroupCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &GroupCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *GroupClient) ByID(id string) (*Group, error) {
+	resp := &Group{}
+	err := c.apiClient.Ops.DoByID(GroupType, id, resp)
+	return resp, err
+}
+
+func (c *GroupClient) Delete(container *Group) error {
+	return c.apiClient.Ops.DoResourceDelete(GroupType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_group_member.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_group_member.go
new file mode 100644
index 00000000..bbcfe346
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_group_member.go
@@ -0,0 +1,122 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	GroupMemberType                 = "groupMember"
+	GroupMemberFieldAnnotations     = "annotations"
+	GroupMemberFieldCreated         = "created"
+	GroupMemberFieldCreatorID       = "creatorId"
+	GroupMemberFieldGroupID         = "groupId"
+	GroupMemberFieldLabels          = "labels"
+	GroupMemberFieldName            = "name"
+	GroupMemberFieldOwnerReferences = "ownerReferences"
+	GroupMemberFieldPrincipalID     = "principalId"
+	GroupMemberFieldRemoved         = "removed"
+	GroupMemberFieldUUID            = "uuid"
+)
+
+type GroupMember struct {
+	types.Resource
+	Annotations     map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created         string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID       string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	GroupID         string            `json:"groupId,omitempty" yaml:"groupId,omitempty"`
+	Labels          map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name            string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	PrincipalID     string            `json:"principalId,omitempty" yaml:"principalId,omitempty"`
+	Removed         string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	UUID            string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type GroupMemberCollection struct {
+	types.Collection
+	Data   []GroupMember `json:"data,omitempty"`
+	client *GroupMemberClient
+}
+
+type GroupMemberClient struct {
+	apiClient *Client
+}
+
+type GroupMemberOperations interface {
+	List(opts *types.ListOpts) (*GroupMemberCollection, error)
+	ListAll(opts *types.ListOpts) (*GroupMemberCollection, error)
+	Create(opts *GroupMember) (*GroupMember, error)
+	Update(existing *GroupMember, updates interface{}) (*GroupMember, error)
+	Replace(existing *GroupMember) (*GroupMember, error)
+	ByID(id string) (*GroupMember, error)
+	Delete(container *GroupMember) error
+}
+
+func newGroupMemberClient(apiClient *Client) *GroupMemberClient {
+	return &GroupMemberClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *GroupMemberClient) Create(container *GroupMember) (*GroupMember, error) {
+	resp := &GroupMember{}
+	err := c.apiClient.Ops.DoCreate(GroupMemberType, container, resp)
+	return resp, err
+}
+
+func (c *GroupMemberClient) Update(existing *GroupMember, updates interface{}) (*GroupMember, error) {
+	resp := &GroupMember{}
+	err := c.apiClient.Ops.DoUpdate(GroupMemberType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *GroupMemberClient) Replace(obj *GroupMember) (*GroupMember, error) {
+	resp := &GroupMember{}
+	err := c.apiClient.Ops.DoReplace(GroupMemberType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *GroupMemberClient) List(opts *types.ListOpts) (*GroupMemberCollection, error) {
+	resp := &GroupMemberCollection{}
+	err := c.apiClient.Ops.DoList(GroupMemberType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *GroupMemberClient) ListAll(opts *types.ListOpts) (*GroupMemberCollection, error) {
+	resp := &GroupMemberCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *GroupMemberCollection) Next() (*GroupMemberCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &GroupMemberCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *GroupMemberClient) ByID(id string) (*GroupMember, error) {
+	resp := &GroupMember{}
+	err := c.apiClient.Ops.DoByID(GroupMemberType, id, resp)
+	return resp, err
+}
+
+func (c *GroupMemberClient) Delete(container *GroupMember) error {
+	return c.apiClient.Ops.DoResourceDelete(GroupMemberType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_harvester_cloud_provider.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_harvester_cloud_provider.go
new file mode 100644
index 00000000..4075744a
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_harvester_cloud_provider.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	HarvesterCloudProviderType             = "harvesterCloudProvider"
+	HarvesterCloudProviderFieldCloudConfig = "cloudConfig"
+)
+
+type HarvesterCloudProvider struct {
+	CloudConfig string `json:"cloudConfig,omitempty" yaml:"cloudConfig,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_health_check.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_health_check.go
new file mode 100644
index 00000000..b7e8e5b6
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_health_check.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	HealthCheckType     = "healthCheck"
+	HealthCheckFieldURL = "url"
+)
+
+type HealthCheck struct {
+	URL string `json:"url,omitempty" yaml:"url,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_host_path_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_host_path_volume_source.go
new file mode 100644
index 00000000..cbeffd33
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_host_path_volume_source.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	HostPathVolumeSourceType      = "hostPathVolumeSource"
+	HostPathVolumeSourceFieldPath = "path"
+	HostPathVolumeSourceFieldType = "type"
+)
+
+type HostPathVolumeSource struct {
+	Path string `json:"path,omitempty" yaml:"path,omitempty"`
+	Type string `json:"type,omitempty" yaml:"type,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_identity_configuration.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_identity_configuration.go
new file mode 100644
index 00000000..1cc371d3
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_identity_configuration.go
@@ -0,0 +1,8 @@
+package client
+
+const (
+	IdentityConfigurationType = "identityConfiguration"
+)
+
+type IdentityConfiguration struct {
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_import_cluster_yaml_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_import_cluster_yaml_input.go
new file mode 100644
index 00000000..4bc36257
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_import_cluster_yaml_input.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	ImportClusterYamlInputType                  = "importClusterYamlInput"
+	ImportClusterYamlInputFieldDefaultNamespace = "defaultNamespace"
+	ImportClusterYamlInputFieldNamespace        = "namespace"
+	ImportClusterYamlInputFieldProjectID        = "projectId"
+	ImportClusterYamlInputFieldYAML             = "yaml"
+)
+
+type ImportClusterYamlInput struct {
+	DefaultNamespace string `json:"defaultNamespace,omitempty" yaml:"defaultNamespace,omitempty"`
+	Namespace        string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
+	ProjectID        string `json:"projectId,omitempty" yaml:"projectId,omitempty"`
+	YAML             string `json:"yaml,omitempty" yaml:"yaml,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_import_yaml_output.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_import_yaml_output.go
new file mode 100644
index 00000000..7b4a2852
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_import_yaml_output.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	ImportYamlOutputType         = "importYamlOutput"
+	ImportYamlOutputFieldMessage = "message"
+)
+
+type ImportYamlOutput struct {
+	Message string `json:"message,omitempty" yaml:"message,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_imported_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_imported_config.go
new file mode 100644
index 00000000..b3a9699c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_imported_config.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	ImportedConfigType            = "importedConfig"
+	ImportedConfigFieldKubeConfig = "kubeConfig"
+)
+
+type ImportedConfig struct {
+	KubeConfig string `json:"kubeConfig,omitempty" yaml:"kubeConfig,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_info.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_info.go
new file mode 100644
index 00000000..1f371517
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_info.go
@@ -0,0 +1,26 @@
+package client
+
+const (
+	InfoType              = "info"
+	InfoFieldBuildDate    = "buildDate"
+	InfoFieldCompiler     = "compiler"
+	InfoFieldGitCommit    = "gitCommit"
+	InfoFieldGitTreeState = "gitTreeState"
+	InfoFieldGitVersion   = "gitVersion"
+	InfoFieldGoVersion    = "goVersion"
+	InfoFieldMajor        = "major"
+	InfoFieldMinor        = "minor"
+	InfoFieldPlatform     = "platform"
+)
+
+type Info struct {
+	BuildDate    string `json:"buildDate,omitempty" yaml:"buildDate,omitempty"`
+	Compiler     string `json:"compiler,omitempty" yaml:"compiler,omitempty"`
+	GitCommit    string `json:"gitCommit,omitempty" yaml:"gitCommit,omitempty"`
+	GitTreeState string `json:"gitTreeState,omitempty" yaml:"gitTreeState,omitempty"`
+	GitVersion   string `json:"gitVersion,omitempty" yaml:"gitVersion,omitempty"`
+	GoVersion    string `json:"goVersion,omitempty" yaml:"goVersion,omitempty"`
+	Major        string `json:"major,omitempty" yaml:"major,omitempty"`
+	Minor        string `json:"minor,omitempty" yaml:"minor,omitempty"`
+	Platform     string `json:"platform,omitempty" yaml:"platform,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ingress_capabilities.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ingress_capabilities.go
new file mode 100644
index 00000000..ff678cd7
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ingress_capabilities.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	IngressCapabilitiesType                      = "ingressCapabilities"
+	IngressCapabilitiesFieldCustomDefaultBackend = "customDefaultBackend"
+	IngressCapabilitiesFieldIngressProvider      = "ingressProvider"
+)
+
+type IngressCapabilities struct {
+	CustomDefaultBackend *bool  `json:"customDefaultBackend,omitempty" yaml:"customDefaultBackend,omitempty"`
+	IngressProvider      string `json:"ingressProvider,omitempty" yaml:"ingressProvider,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ingress_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ingress_config.go
new file mode 100644
index 00000000..ac105798
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ingress_config.go
@@ -0,0 +1,42 @@
+package client
+
+const (
+	IngressConfigType                                         = "ingressConfig"
+	IngressConfigFieldDNSPolicy                               = "dnsPolicy"
+	IngressConfigFieldDefaultBackend                          = "defaultBackend"
+	IngressConfigFieldDefaultHTTPBackendPriorityClassName     = "defaultHttpBackendPriorityClassName"
+	IngressConfigFieldDefaultIngressClass                     = "defaultIngressClass"
+	IngressConfigFieldExtraArgs                               = "extraArgs"
+	IngressConfigFieldExtraEnvs                               = "extraEnvs"
+	IngressConfigFieldExtraVolumeMounts                       = "extraVolumeMounts"
+	IngressConfigFieldExtraVolumes                            = "extraVolumes"
+	IngressConfigFieldHTTPPort                                = "httpPort"
+	IngressConfigFieldHTTPSPort                               = "httpsPort"
+	IngressConfigFieldNetworkMode                             = "networkMode"
+	IngressConfigFieldNginxIngressControllerPriorityClassName = "nginxIngressControllerPriorityClassName"
+	IngressConfigFieldNodeSelector                            = "nodeSelector"
+	IngressConfigFieldOptions                                 = "options"
+	IngressConfigFieldProvider                                = "provider"
+	IngressConfigFieldTolerations                             = "tolerations"
+	IngressConfigFieldUpdateStrategy                          = "updateStrategy"
+)
+
+type IngressConfig struct {
+	DNSPolicy                               string                   `json:"dnsPolicy,omitempty" yaml:"dnsPolicy,omitempty"`
+	DefaultBackend                          *bool                    `json:"defaultBackend,omitempty" yaml:"defaultBackend,omitempty"`
+	DefaultHTTPBackendPriorityClassName     string                   `json:"defaultHttpBackendPriorityClassName,omitempty" yaml:"defaultHttpBackendPriorityClassName,omitempty"`
+	DefaultIngressClass                     *bool                    `json:"defaultIngressClass,omitempty" yaml:"defaultIngressClass,omitempty"`
+	ExtraArgs                               map[string]string        `json:"extraArgs,omitempty" yaml:"extraArgs,omitempty"`
+	ExtraEnvs                               []interface{}            `json:"extraEnvs,omitempty" yaml:"extraEnvs,omitempty"`
+	ExtraVolumeMounts                       []interface{}            `json:"extraVolumeMounts,omitempty" yaml:"extraVolumeMounts,omitempty"`
+	ExtraVolumes                            []interface{}            `json:"extraVolumes,omitempty" yaml:"extraVolumes,omitempty"`
+	HTTPPort                                int64                    `json:"httpPort,omitempty" yaml:"httpPort,omitempty"`
+	HTTPSPort                               int64                    `json:"httpsPort,omitempty" yaml:"httpsPort,omitempty"`
+	NetworkMode                             string                   `json:"networkMode,omitempty" yaml:"networkMode,omitempty"`
+	NginxIngressControllerPriorityClassName string                   `json:"nginxIngressControllerPriorityClassName,omitempty" yaml:"nginxIngressControllerPriorityClassName,omitempty"`
+	NodeSelector                            map[string]string        `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty"`
+	Options                                 map[string]string        `json:"options,omitempty" yaml:"options,omitempty"`
+	Provider                                string                   `json:"provider,omitempty" yaml:"provider,omitempty"`
+	Tolerations                             []Toleration             `json:"tolerations,omitempty" yaml:"tolerations,omitempty"`
+	UpdateStrategy                          *DaemonSetUpdateStrategy `json:"updateStrategy,omitempty" yaml:"updateStrategy,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_internal_node_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_internal_node_spec.go
new file mode 100644
index 00000000..ced92343
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_internal_node_spec.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	InternalNodeSpecType               = "internalNodeSpec"
+	InternalNodeSpecFieldPodCidr       = "podCidr"
+	InternalNodeSpecFieldPodCidrs      = "podCidrs"
+	InternalNodeSpecFieldProviderId    = "providerId"
+	InternalNodeSpecFieldTaints        = "taints"
+	InternalNodeSpecFieldUnschedulable = "unschedulable"
+)
+
+type InternalNodeSpec struct {
+	PodCidr       string   `json:"podCidr,omitempty" yaml:"podCidr,omitempty"`
+	PodCidrs      []string `json:"podCidrs,omitempty" yaml:"podCidrs,omitempty"`
+	ProviderId    string   `json:"providerId,omitempty" yaml:"providerId,omitempty"`
+	Taints        []Taint  `json:"taints,omitempty" yaml:"taints,omitempty"`
+	Unschedulable bool     `json:"unschedulable,omitempty" yaml:"unschedulable,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_internal_node_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_internal_node_status.go
new file mode 100644
index 00000000..7515d504
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_internal_node_status.go
@@ -0,0 +1,30 @@
+package client
+
+const (
+	InternalNodeStatusType                   = "internalNodeStatus"
+	InternalNodeStatusFieldAllocatable       = "allocatable"
+	InternalNodeStatusFieldCapacity          = "capacity"
+	InternalNodeStatusFieldConfig            = "config"
+	InternalNodeStatusFieldExternalIPAddress = "externalIpAddress"
+	InternalNodeStatusFieldHostname          = "hostname"
+	InternalNodeStatusFieldIPAddress         = "ipAddress"
+	InternalNodeStatusFieldInfo              = "info"
+	InternalNodeStatusFieldNodeConditions    = "nodeConditions"
+	InternalNodeStatusFieldRuntimeHandlers   = "runtimeHandlers"
+	InternalNodeStatusFieldVolumesAttached   = "volumesAttached"
+	InternalNodeStatusFieldVolumesInUse      = "volumesInUse"
+)
+
+type InternalNodeStatus struct {
+	Allocatable       map[string]string         `json:"allocatable,omitempty" yaml:"allocatable,omitempty"`
+	Capacity          map[string]string         `json:"capacity,omitempty" yaml:"capacity,omitempty"`
+	Config            *NodeConfigStatus         `json:"config,omitempty" yaml:"config,omitempty"`
+	ExternalIPAddress string                    `json:"externalIpAddress,omitempty" yaml:"externalIpAddress,omitempty"`
+	Hostname          string                    `json:"hostname,omitempty" yaml:"hostname,omitempty"`
+	IPAddress         string                    `json:"ipAddress,omitempty" yaml:"ipAddress,omitempty"`
+	Info              *NodeInfo                 `json:"info,omitempty" yaml:"info,omitempty"`
+	NodeConditions    []NodeCondition           `json:"nodeConditions,omitempty" yaml:"nodeConditions,omitempty"`
+	RuntimeHandlers   []NodeRuntimeHandler      `json:"runtimeHandlers,omitempty" yaml:"runtimeHandlers,omitempty"`
+	VolumesAttached   map[string]AttachedVolume `json:"volumesAttached,omitempty" yaml:"volumesAttached,omitempty"`
+	VolumesInUse      []string                  `json:"volumesInUse,omitempty" yaml:"volumesInUse,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_iscsi_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_iscsi_volume_source.go
new file mode 100644
index 00000000..ef076207
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_iscsi_volume_source.go
@@ -0,0 +1,30 @@
+package client
+
+const (
+	ISCSIVolumeSourceType                   = "iscsiVolumeSource"
+	ISCSIVolumeSourceFieldDiscoveryCHAPAuth = "chapAuthDiscovery"
+	ISCSIVolumeSourceFieldFSType            = "fsType"
+	ISCSIVolumeSourceFieldIQN               = "iqn"
+	ISCSIVolumeSourceFieldISCSIInterface    = "iscsiInterface"
+	ISCSIVolumeSourceFieldInitiatorName     = "initiatorName"
+	ISCSIVolumeSourceFieldLun               = "lun"
+	ISCSIVolumeSourceFieldPortals           = "portals"
+	ISCSIVolumeSourceFieldReadOnly          = "readOnly"
+	ISCSIVolumeSourceFieldSecretRef         = "secretRef"
+	ISCSIVolumeSourceFieldSessionCHAPAuth   = "chapAuthSession"
+	ISCSIVolumeSourceFieldTargetPortal      = "targetPortal"
+)
+
+type ISCSIVolumeSource struct {
+	DiscoveryCHAPAuth bool                  `json:"chapAuthDiscovery,omitempty" yaml:"chapAuthDiscovery,omitempty"`
+	FSType            string                `json:"fsType,omitempty" yaml:"fsType,omitempty"`
+	IQN               string                `json:"iqn,omitempty" yaml:"iqn,omitempty"`
+	ISCSIInterface    string                `json:"iscsiInterface,omitempty" yaml:"iscsiInterface,omitempty"`
+	InitiatorName     string                `json:"initiatorName,omitempty" yaml:"initiatorName,omitempty"`
+	Lun               int64                 `json:"lun,omitempty" yaml:"lun,omitempty"`
+	Portals           []string              `json:"portals,omitempty" yaml:"portals,omitempty"`
+	ReadOnly          bool                  `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+	SecretRef         *LocalObjectReference `json:"secretRef,omitempty" yaml:"secretRef,omitempty"`
+	SessionCHAPAuth   bool                  `json:"chapAuthSession,omitempty" yaml:"chapAuthSession,omitempty"`
+	TargetPortal      string                `json:"targetPortal,omitempty" yaml:"targetPortal,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_k3s_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_k3s_config.go
new file mode 100644
index 00000000..425cbd73
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_k3s_config.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	K3sConfigType                        = "k3sConfig"
+	K3sConfigFieldClusterUpgradeStrategy = "k3supgradeStrategy"
+	K3sConfigFieldVersion                = "kubernetesVersion"
+)
+
+type K3sConfig struct {
+	ClusterUpgradeStrategy *ClusterUpgradeStrategy `json:"k3supgradeStrategy,omitempty" yaml:"k3supgradeStrategy,omitempty"`
+	Version                string                  `json:"kubernetesVersion,omitempty" yaml:"kubernetesVersion,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_key.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_key.go
new file mode 100644
index 00000000..0aa9ed6e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_key.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	KeyType        = "key"
+	KeyFieldName   = "name"
+	KeyFieldSecret = "secret"
+)
+
+type Key struct {
+	Name   string `json:"name,omitempty" yaml:"name,omitempty"`
+	Secret string `json:"secret,omitempty" yaml:"secret,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_key_cloak_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_key_cloak_config.go
new file mode 100644
index 00000000..7a2b3925
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_key_cloak_config.go
@@ -0,0 +1,52 @@
+package client
+
+const (
+	KeyCloakConfigType                     = "keyCloakConfig"
+	KeyCloakConfigFieldAccessMode          = "accessMode"
+	KeyCloakConfigFieldAllowedPrincipalIDs = "allowedPrincipalIds"
+	KeyCloakConfigFieldAnnotations         = "annotations"
+	KeyCloakConfigFieldCreated             = "created"
+	KeyCloakConfigFieldCreatorID           = "creatorId"
+	KeyCloakConfigFieldDisplayNameField    = "displayNameField"
+	KeyCloakConfigFieldEnabled             = "enabled"
+	KeyCloakConfigFieldEntityID            = "entityID"
+	KeyCloakConfigFieldGroupsField         = "groupsField"
+	KeyCloakConfigFieldIDPMetadataContent  = "idpMetadataContent"
+	KeyCloakConfigFieldLabels              = "labels"
+	KeyCloakConfigFieldName                = "name"
+	KeyCloakConfigFieldOwnerReferences     = "ownerReferences"
+	KeyCloakConfigFieldRancherAPIHost      = "rancherApiHost"
+	KeyCloakConfigFieldRemoved             = "removed"
+	KeyCloakConfigFieldSpCert              = "spCert"
+	KeyCloakConfigFieldSpKey               = "spKey"
+	KeyCloakConfigFieldStatus              = "status"
+	KeyCloakConfigFieldType                = "type"
+	KeyCloakConfigFieldUIDField            = "uidField"
+	KeyCloakConfigFieldUUID                = "uuid"
+	KeyCloakConfigFieldUserNameField       = "userNameField"
+)
+
+type KeyCloakConfig struct {
+	AccessMode          string            `json:"accessMode,omitempty" yaml:"accessMode,omitempty"`
+	AllowedPrincipalIDs []string          `json:"allowedPrincipalIds,omitempty" yaml:"allowedPrincipalIds,omitempty"`
+	Annotations         map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created             string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID           string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	DisplayNameField    string            `json:"displayNameField,omitempty" yaml:"displayNameField,omitempty"`
+	Enabled             bool              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	EntityID            string            `json:"entityID,omitempty" yaml:"entityID,omitempty"`
+	GroupsField         string            `json:"groupsField,omitempty" yaml:"groupsField,omitempty"`
+	IDPMetadataContent  string            `json:"idpMetadataContent,omitempty" yaml:"idpMetadataContent,omitempty"`
+	Labels              map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences     []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	RancherAPIHost      string            `json:"rancherApiHost,omitempty" yaml:"rancherApiHost,omitempty"`
+	Removed             string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	SpCert              string            `json:"spCert,omitempty" yaml:"spCert,omitempty"`
+	SpKey               string            `json:"spKey,omitempty" yaml:"spKey,omitempty"`
+	Status              *AuthConfigStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	Type                string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UIDField            string            `json:"uidField,omitempty" yaml:"uidField,omitempty"`
+	UUID                string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserNameField       string            `json:"userNameField,omitempty" yaml:"userNameField,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_key_cloak_oidcconfig.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_key_cloak_oidcconfig.go
new file mode 100644
index 00000000..522b444b
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_key_cloak_oidcconfig.go
@@ -0,0 +1,62 @@
+package client
+
+const (
+	KeyCloakOIDCConfigType                     = "keyCloakOIDCConfig"
+	KeyCloakOIDCConfigFieldAccessMode          = "accessMode"
+	KeyCloakOIDCConfigFieldAcrValue            = "acrValue"
+	KeyCloakOIDCConfigFieldAllowedPrincipalIDs = "allowedPrincipalIds"
+	KeyCloakOIDCConfigFieldAnnotations         = "annotations"
+	KeyCloakOIDCConfigFieldAuthEndpoint        = "authEndpoint"
+	KeyCloakOIDCConfigFieldCertificate         = "certificate"
+	KeyCloakOIDCConfigFieldClientID            = "clientId"
+	KeyCloakOIDCConfigFieldClientSecret        = "clientSecret"
+	KeyCloakOIDCConfigFieldCreated             = "created"
+	KeyCloakOIDCConfigFieldCreatorID           = "creatorId"
+	KeyCloakOIDCConfigFieldEnabled             = "enabled"
+	KeyCloakOIDCConfigFieldGroupSearchEnabled  = "groupSearchEnabled"
+	KeyCloakOIDCConfigFieldGroupsClaim         = "groupsClaim"
+	KeyCloakOIDCConfigFieldIssuer              = "issuer"
+	KeyCloakOIDCConfigFieldJWKSUrl             = "jwksUrl"
+	KeyCloakOIDCConfigFieldLabels              = "labels"
+	KeyCloakOIDCConfigFieldName                = "name"
+	KeyCloakOIDCConfigFieldOwnerReferences     = "ownerReferences"
+	KeyCloakOIDCConfigFieldPrivateKey          = "privateKey"
+	KeyCloakOIDCConfigFieldRancherURL          = "rancherUrl"
+	KeyCloakOIDCConfigFieldRemoved             = "removed"
+	KeyCloakOIDCConfigFieldScopes              = "scope"
+	KeyCloakOIDCConfigFieldStatus              = "status"
+	KeyCloakOIDCConfigFieldTokenEndpoint       = "tokenEndpoint"
+	KeyCloakOIDCConfigFieldType                = "type"
+	KeyCloakOIDCConfigFieldUUID                = "uuid"
+	KeyCloakOIDCConfigFieldUserInfoEndpoint    = "userInfoEndpoint"
+)
+
+type KeyCloakOIDCConfig struct {
+	AccessMode          string            `json:"accessMode,omitempty" yaml:"accessMode,omitempty"`
+	AcrValue            string            `json:"acrValue,omitempty" yaml:"acrValue,omitempty"`
+	AllowedPrincipalIDs []string          `json:"allowedPrincipalIds,omitempty" yaml:"allowedPrincipalIds,omitempty"`
+	Annotations         map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	AuthEndpoint        string            `json:"authEndpoint,omitempty" yaml:"authEndpoint,omitempty"`
+	Certificate         string            `json:"certificate,omitempty" yaml:"certificate,omitempty"`
+	ClientID            string            `json:"clientId,omitempty" yaml:"clientId,omitempty"`
+	ClientSecret        string            `json:"clientSecret,omitempty" yaml:"clientSecret,omitempty"`
+	Created             string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID           string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Enabled             bool              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	GroupSearchEnabled  *bool             `json:"groupSearchEnabled,omitempty" yaml:"groupSearchEnabled,omitempty"`
+	GroupsClaim         string            `json:"groupsClaim,omitempty" yaml:"groupsClaim,omitempty"`
+	Issuer              string            `json:"issuer,omitempty" yaml:"issuer,omitempty"`
+	JWKSUrl             string            `json:"jwksUrl,omitempty" yaml:"jwksUrl,omitempty"`
+	Labels              map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences     []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	PrivateKey          string            `json:"privateKey,omitempty" yaml:"privateKey,omitempty"`
+	RancherURL          string            `json:"rancherUrl,omitempty" yaml:"rancherUrl,omitempty"`
+	Removed             string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Scopes              string            `json:"scope,omitempty" yaml:"scope,omitempty"`
+	Status              *AuthConfigStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	TokenEndpoint       string            `json:"tokenEndpoint,omitempty" yaml:"tokenEndpoint,omitempty"`
+	Type                string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UUID                string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserInfoEndpoint    string            `json:"userInfoEndpoint,omitempty" yaml:"userInfoEndpoint,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_key_to_path.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_key_to_path.go
new file mode 100644
index 00000000..de4ae607
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_key_to_path.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	KeyToPathType      = "keyToPath"
+	KeyToPathFieldKey  = "key"
+	KeyToPathFieldMode = "mode"
+	KeyToPathFieldPath = "path"
+)
+
+type KeyToPath struct {
+	Key  string `json:"key,omitempty" yaml:"key,omitempty"`
+	Mode *int64 `json:"mode,omitempty" yaml:"mode,omitempty"`
+	Path string `json:"path,omitempty" yaml:"path,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kms_configuration.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kms_configuration.go
new file mode 100644
index 00000000..74ea0ed1
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kms_configuration.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	KMSConfigurationType            = "kmsConfiguration"
+	KMSConfigurationFieldAPIVersion = "apiVersion"
+	KMSConfigurationFieldCacheSize  = "cachesize"
+	KMSConfigurationFieldEndpoint   = "endpoint"
+	KMSConfigurationFieldName       = "name"
+	KMSConfigurationFieldTimeout    = "timeout"
+)
+
+type KMSConfiguration struct {
+	APIVersion string    `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
+	CacheSize  *int64    `json:"cachesize,omitempty" yaml:"cachesize,omitempty"`
+	Endpoint   string    `json:"endpoint,omitempty" yaml:"endpoint,omitempty"`
+	Name       string    `json:"name,omitempty" yaml:"name,omitempty"`
+	Timeout    *Duration `json:"timeout,omitempty" yaml:"timeout,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kontainer_driver.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kontainer_driver.go
new file mode 100644
index 00000000..319d68a0
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kontainer_driver.go
@@ -0,0 +1,163 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	KontainerDriverType                      = "kontainerDriver"
+	KontainerDriverFieldActive               = "active"
+	KontainerDriverFieldActualURL            = "actualUrl"
+	KontainerDriverFieldAnnotations          = "annotations"
+	KontainerDriverFieldBuiltIn              = "builtIn"
+	KontainerDriverFieldChecksum             = "checksum"
+	KontainerDriverFieldConditions           = "conditions"
+	KontainerDriverFieldCreated              = "created"
+	KontainerDriverFieldCreatorID            = "creatorId"
+	KontainerDriverFieldExecutablePath       = "executablePath"
+	KontainerDriverFieldLabels               = "labels"
+	KontainerDriverFieldName                 = "name"
+	KontainerDriverFieldOwnerReferences      = "ownerReferences"
+	KontainerDriverFieldRemoved              = "removed"
+	KontainerDriverFieldState                = "state"
+	KontainerDriverFieldTransitioning        = "transitioning"
+	KontainerDriverFieldTransitioningMessage = "transitioningMessage"
+	KontainerDriverFieldUIURL                = "uiUrl"
+	KontainerDriverFieldURL                  = "url"
+	KontainerDriverFieldUUID                 = "uuid"
+	KontainerDriverFieldWhitelistDomains     = "whitelistDomains"
+)
+
+type KontainerDriver struct {
+	types.Resource
+	Active               bool              `json:"active,omitempty" yaml:"active,omitempty"`
+	ActualURL            string            `json:"actualUrl,omitempty" yaml:"actualUrl,omitempty"`
+	Annotations          map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	BuiltIn              bool              `json:"builtIn,omitempty" yaml:"builtIn,omitempty"`
+	Checksum             string            `json:"checksum,omitempty" yaml:"checksum,omitempty"`
+	Conditions           []Condition       `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	Created              string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID            string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	ExecutablePath       string            `json:"executablePath,omitempty" yaml:"executablePath,omitempty"`
+	Labels               map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                 string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences      []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed              string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	State                string            `json:"state,omitempty" yaml:"state,omitempty"`
+	Transitioning        string            `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage string            `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UIURL                string            `json:"uiUrl,omitempty" yaml:"uiUrl,omitempty"`
+	URL                  string            `json:"url,omitempty" yaml:"url,omitempty"`
+	UUID                 string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	WhitelistDomains     []string          `json:"whitelistDomains,omitempty" yaml:"whitelistDomains,omitempty"`
+}
+
+type KontainerDriverCollection struct {
+	types.Collection
+	Data   []KontainerDriver `json:"data,omitempty"`
+	client *KontainerDriverClient
+}
+
+type KontainerDriverClient struct {
+	apiClient *Client
+}
+
+type KontainerDriverOperations interface {
+	List(opts *types.ListOpts) (*KontainerDriverCollection, error)
+	ListAll(opts *types.ListOpts) (*KontainerDriverCollection, error)
+	Create(opts *KontainerDriver) (*KontainerDriver, error)
+	Update(existing *KontainerDriver, updates interface{}) (*KontainerDriver, error)
+	Replace(existing *KontainerDriver) (*KontainerDriver, error)
+	ByID(id string) (*KontainerDriver, error)
+	Delete(container *KontainerDriver) error
+
+	ActionActivate(resource *KontainerDriver) error
+
+	ActionDeactivate(resource *KontainerDriver) error
+
+	CollectionActionRefresh(resource *KontainerDriverCollection) error
+}
+
+func newKontainerDriverClient(apiClient *Client) *KontainerDriverClient {
+	return &KontainerDriverClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *KontainerDriverClient) Create(container *KontainerDriver) (*KontainerDriver, error) {
+	resp := &KontainerDriver{}
+	err := c.apiClient.Ops.DoCreate(KontainerDriverType, container, resp)
+	return resp, err
+}
+
+func (c *KontainerDriverClient) Update(existing *KontainerDriver, updates interface{}) (*KontainerDriver, error) {
+	resp := &KontainerDriver{}
+	err := c.apiClient.Ops.DoUpdate(KontainerDriverType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *KontainerDriverClient) Replace(obj *KontainerDriver) (*KontainerDriver, error) {
+	resp := &KontainerDriver{}
+	err := c.apiClient.Ops.DoReplace(KontainerDriverType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *KontainerDriverClient) List(opts *types.ListOpts) (*KontainerDriverCollection, error) {
+	resp := &KontainerDriverCollection{}
+	err := c.apiClient.Ops.DoList(KontainerDriverType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *KontainerDriverClient) ListAll(opts *types.ListOpts) (*KontainerDriverCollection, error) {
+	resp := &KontainerDriverCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *KontainerDriverCollection) Next() (*KontainerDriverCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &KontainerDriverCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *KontainerDriverClient) ByID(id string) (*KontainerDriver, error) {
+	resp := &KontainerDriver{}
+	err := c.apiClient.Ops.DoByID(KontainerDriverType, id, resp)
+	return resp, err
+}
+
+func (c *KontainerDriverClient) Delete(container *KontainerDriver) error {
+	return c.apiClient.Ops.DoResourceDelete(KontainerDriverType, &container.Resource)
+}
+
+func (c *KontainerDriverClient) ActionActivate(resource *KontainerDriver) error {
+	err := c.apiClient.Ops.DoAction(KontainerDriverType, "activate", &resource.Resource, nil, nil)
+	return err
+}
+
+func (c *KontainerDriverClient) ActionDeactivate(resource *KontainerDriver) error {
+	err := c.apiClient.Ops.DoAction(KontainerDriverType, "deactivate", &resource.Resource, nil, nil)
+	return err
+}
+
+func (c *KontainerDriverClient) CollectionActionRefresh(resource *KontainerDriverCollection) error {
+	err := c.apiClient.Ops.DoCollectionAction(KontainerDriverType, "refresh", &resource.Collection, nil, nil)
+	return err
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kontainer_driver_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kontainer_driver_spec.go
new file mode 100644
index 00000000..985f7d98
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kontainer_driver_spec.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	KontainerDriverSpecType                  = "kontainerDriverSpec"
+	KontainerDriverSpecFieldActive           = "active"
+	KontainerDriverSpecFieldBuiltIn          = "builtIn"
+	KontainerDriverSpecFieldChecksum         = "checksum"
+	KontainerDriverSpecFieldUIURL            = "uiUrl"
+	KontainerDriverSpecFieldURL              = "url"
+	KontainerDriverSpecFieldWhitelistDomains = "whitelistDomains"
+)
+
+type KontainerDriverSpec struct {
+	Active           bool     `json:"active,omitempty" yaml:"active,omitempty"`
+	BuiltIn          bool     `json:"builtIn,omitempty" yaml:"builtIn,omitempty"`
+	Checksum         string   `json:"checksum,omitempty" yaml:"checksum,omitempty"`
+	UIURL            string   `json:"uiUrl,omitempty" yaml:"uiUrl,omitempty"`
+	URL              string   `json:"url,omitempty" yaml:"url,omitempty"`
+	WhitelistDomains []string `json:"whitelistDomains,omitempty" yaml:"whitelistDomains,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kontainer_driver_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kontainer_driver_status.go
new file mode 100644
index 00000000..9ea025d6
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kontainer_driver_status.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	KontainerDriverStatusType                = "kontainerDriverStatus"
+	KontainerDriverStatusFieldActualURL      = "actualUrl"
+	KontainerDriverStatusFieldConditions     = "conditions"
+	KontainerDriverStatusFieldDisplayName    = "displayName"
+	KontainerDriverStatusFieldExecutablePath = "executablePath"
+)
+
+type KontainerDriverStatus struct {
+	ActualURL      string      `json:"actualUrl,omitempty" yaml:"actualUrl,omitempty"`
+	Conditions     []Condition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	DisplayName    string      `json:"displayName,omitempty" yaml:"displayName,omitempty"`
+	ExecutablePath string      `json:"executablePath,omitempty" yaml:"executablePath,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kube_apiservice.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kube_apiservice.go
new file mode 100644
index 00000000..b55abd85
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kube_apiservice.go
@@ -0,0 +1,42 @@
+package client
+
+const (
+	KubeAPIServiceType                          = "kubeAPIService"
+	KubeAPIServiceFieldAdmissionConfiguration   = "admissionConfiguration"
+	KubeAPIServiceFieldAlwaysPullImages         = "alwaysPullImages"
+	KubeAPIServiceFieldAuditLog                 = "auditLog"
+	KubeAPIServiceFieldEventRateLimit           = "eventRateLimit"
+	KubeAPIServiceFieldExtraArgs                = "extraArgs"
+	KubeAPIServiceFieldExtraArgsArray           = "extraArgsArray"
+	KubeAPIServiceFieldExtraBinds               = "extraBinds"
+	KubeAPIServiceFieldExtraEnv                 = "extraEnv"
+	KubeAPIServiceFieldImage                    = "image"
+	KubeAPIServiceFieldPodSecurityConfiguration = "podSecurityConfiguration"
+	KubeAPIServiceFieldSecretsEncryptionConfig  = "secretsEncryptionConfig"
+	KubeAPIServiceFieldServiceClusterIPRange    = "serviceClusterIpRange"
+	KubeAPIServiceFieldServiceNodePortRange     = "serviceNodePortRange"
+	KubeAPIServiceFieldWindowsExtraArgs         = "winExtraArgs"
+	KubeAPIServiceFieldWindowsExtraArgsArray    = "winExtraArgsArray"
+	KubeAPIServiceFieldWindowsExtraBinds        = "winExtraBinds"
+	KubeAPIServiceFieldWindowsExtraEnv          = "winExtraEnv"
+)
+
+type KubeAPIService struct {
+	AdmissionConfiguration   map[string]interface{}   `json:"admissionConfiguration,omitempty" yaml:"admissionConfiguration,omitempty"`
+	AlwaysPullImages         bool                     `json:"alwaysPullImages,omitempty" yaml:"alwaysPullImages,omitempty"`
+	AuditLog                 *AuditLog                `json:"auditLog,omitempty" yaml:"auditLog,omitempty"`
+	EventRateLimit           *EventRateLimit          `json:"eventRateLimit,omitempty" yaml:"eventRateLimit,omitempty"`
+	ExtraArgs                map[string]string        `json:"extraArgs,omitempty" yaml:"extraArgs,omitempty"`
+	ExtraArgsArray           map[string][]string      `json:"extraArgsArray,omitempty" yaml:"extraArgsArray,omitempty"`
+	ExtraBinds               []string                 `json:"extraBinds,omitempty" yaml:"extraBinds,omitempty"`
+	ExtraEnv                 []string                 `json:"extraEnv,omitempty" yaml:"extraEnv,omitempty"`
+	Image                    string                   `json:"image,omitempty" yaml:"image,omitempty"`
+	PodSecurityConfiguration string                   `json:"podSecurityConfiguration,omitempty" yaml:"podSecurityConfiguration,omitempty"`
+	SecretsEncryptionConfig  *SecretsEncryptionConfig `json:"secretsEncryptionConfig,omitempty" yaml:"secretsEncryptionConfig,omitempty"`
+	ServiceClusterIPRange    string                   `json:"serviceClusterIpRange,omitempty" yaml:"serviceClusterIpRange,omitempty"`
+	ServiceNodePortRange     string                   `json:"serviceNodePortRange,omitempty" yaml:"serviceNodePortRange,omitempty"`
+	WindowsExtraArgs         map[string]string        `json:"winExtraArgs,omitempty" yaml:"winExtraArgs,omitempty"`
+	WindowsExtraArgsArray    map[string][]string      `json:"winExtraArgsArray,omitempty" yaml:"winExtraArgsArray,omitempty"`
+	WindowsExtraBinds        []string                 `json:"winExtraBinds,omitempty" yaml:"winExtraBinds,omitempty"`
+	WindowsExtraEnv          []string                 `json:"winExtraEnv,omitempty" yaml:"winExtraEnv,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kube_controller_service.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kube_controller_service.go
new file mode 100644
index 00000000..304cecf8
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kube_controller_service.go
@@ -0,0 +1,30 @@
+package client
+
+const (
+	KubeControllerServiceType                       = "kubeControllerService"
+	KubeControllerServiceFieldClusterCIDR           = "clusterCidr"
+	KubeControllerServiceFieldExtraArgs             = "extraArgs"
+	KubeControllerServiceFieldExtraArgsArray        = "extraArgsArray"
+	KubeControllerServiceFieldExtraBinds            = "extraBinds"
+	KubeControllerServiceFieldExtraEnv              = "extraEnv"
+	KubeControllerServiceFieldImage                 = "image"
+	KubeControllerServiceFieldServiceClusterIPRange = "serviceClusterIpRange"
+	KubeControllerServiceFieldWindowsExtraArgs      = "winExtraArgs"
+	KubeControllerServiceFieldWindowsExtraArgsArray = "winExtraArgsArray"
+	KubeControllerServiceFieldWindowsExtraBinds     = "winExtraBinds"
+	KubeControllerServiceFieldWindowsExtraEnv       = "winExtraEnv"
+)
+
+type KubeControllerService struct {
+	ClusterCIDR           string              `json:"clusterCidr,omitempty" yaml:"clusterCidr,omitempty"`
+	ExtraArgs             map[string]string   `json:"extraArgs,omitempty" yaml:"extraArgs,omitempty"`
+	ExtraArgsArray        map[string][]string `json:"extraArgsArray,omitempty" yaml:"extraArgsArray,omitempty"`
+	ExtraBinds            []string            `json:"extraBinds,omitempty" yaml:"extraBinds,omitempty"`
+	ExtraEnv              []string            `json:"extraEnv,omitempty" yaml:"extraEnv,omitempty"`
+	Image                 string              `json:"image,omitempty" yaml:"image,omitempty"`
+	ServiceClusterIPRange string              `json:"serviceClusterIpRange,omitempty" yaml:"serviceClusterIpRange,omitempty"`
+	WindowsExtraArgs      map[string]string   `json:"winExtraArgs,omitempty" yaml:"winExtraArgs,omitempty"`
+	WindowsExtraArgsArray map[string][]string `json:"winExtraArgsArray,omitempty" yaml:"winExtraArgsArray,omitempty"`
+	WindowsExtraBinds     []string            `json:"winExtraBinds,omitempty" yaml:"winExtraBinds,omitempty"`
+	WindowsExtraEnv       []string            `json:"winExtraEnv,omitempty" yaml:"winExtraEnv,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kubelet_service.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kubelet_service.go
new file mode 100644
index 00000000..7474a10d
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kubelet_service.go
@@ -0,0 +1,36 @@
+package client
+
+const (
+	KubeletServiceType                            = "kubeletService"
+	KubeletServiceFieldClusterDNSServer           = "clusterDnsServer"
+	KubeletServiceFieldClusterDomain              = "clusterDomain"
+	KubeletServiceFieldExtraArgs                  = "extraArgs"
+	KubeletServiceFieldExtraArgsArray             = "extraArgsArray"
+	KubeletServiceFieldExtraBinds                 = "extraBinds"
+	KubeletServiceFieldExtraEnv                   = "extraEnv"
+	KubeletServiceFieldFailSwapOn                 = "failSwapOn"
+	KubeletServiceFieldGenerateServingCertificate = "generateServingCertificate"
+	KubeletServiceFieldImage                      = "image"
+	KubeletServiceFieldInfraContainerImage        = "infraContainerImage"
+	KubeletServiceFieldWindowsExtraArgs           = "winExtraArgs"
+	KubeletServiceFieldWindowsExtraArgsArray      = "winExtraArgsArray"
+	KubeletServiceFieldWindowsExtraBinds          = "winExtraBinds"
+	KubeletServiceFieldWindowsExtraEnv            = "winExtraEnv"
+)
+
+type KubeletService struct {
+	ClusterDNSServer           string              `json:"clusterDnsServer,omitempty" yaml:"clusterDnsServer,omitempty"`
+	ClusterDomain              string              `json:"clusterDomain,omitempty" yaml:"clusterDomain,omitempty"`
+	ExtraArgs                  map[string]string   `json:"extraArgs,omitempty" yaml:"extraArgs,omitempty"`
+	ExtraArgsArray             map[string][]string `json:"extraArgsArray,omitempty" yaml:"extraArgsArray,omitempty"`
+	ExtraBinds                 []string            `json:"extraBinds,omitempty" yaml:"extraBinds,omitempty"`
+	ExtraEnv                   []string            `json:"extraEnv,omitempty" yaml:"extraEnv,omitempty"`
+	FailSwapOn                 bool                `json:"failSwapOn,omitempty" yaml:"failSwapOn,omitempty"`
+	GenerateServingCertificate bool                `json:"generateServingCertificate,omitempty" yaml:"generateServingCertificate,omitempty"`
+	Image                      string              `json:"image,omitempty" yaml:"image,omitempty"`
+	InfraContainerImage        string              `json:"infraContainerImage,omitempty" yaml:"infraContainerImage,omitempty"`
+	WindowsExtraArgs           map[string]string   `json:"winExtraArgs,omitempty" yaml:"winExtraArgs,omitempty"`
+	WindowsExtraArgsArray      map[string][]string `json:"winExtraArgsArray,omitempty" yaml:"winExtraArgsArray,omitempty"`
+	WindowsExtraBinds          []string            `json:"winExtraBinds,omitempty" yaml:"winExtraBinds,omitempty"`
+	WindowsExtraEnv            []string            `json:"winExtraEnv,omitempty" yaml:"winExtraEnv,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kubeproxy_service.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kubeproxy_service.go
new file mode 100644
index 00000000..9159447b
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kubeproxy_service.go
@@ -0,0 +1,26 @@
+package client
+
+const (
+	KubeproxyServiceType                       = "kubeproxyService"
+	KubeproxyServiceFieldExtraArgs             = "extraArgs"
+	KubeproxyServiceFieldExtraArgsArray        = "extraArgsArray"
+	KubeproxyServiceFieldExtraBinds            = "extraBinds"
+	KubeproxyServiceFieldExtraEnv              = "extraEnv"
+	KubeproxyServiceFieldImage                 = "image"
+	KubeproxyServiceFieldWindowsExtraArgs      = "winExtraArgs"
+	KubeproxyServiceFieldWindowsExtraArgsArray = "winExtraArgsArray"
+	KubeproxyServiceFieldWindowsExtraBinds     = "winExtraBinds"
+	KubeproxyServiceFieldWindowsExtraEnv       = "winExtraEnv"
+)
+
+type KubeproxyService struct {
+	ExtraArgs             map[string]string   `json:"extraArgs,omitempty" yaml:"extraArgs,omitempty"`
+	ExtraArgsArray        map[string][]string `json:"extraArgsArray,omitempty" yaml:"extraArgsArray,omitempty"`
+	ExtraBinds            []string            `json:"extraBinds,omitempty" yaml:"extraBinds,omitempty"`
+	ExtraEnv              []string            `json:"extraEnv,omitempty" yaml:"extraEnv,omitempty"`
+	Image                 string              `json:"image,omitempty" yaml:"image,omitempty"`
+	WindowsExtraArgs      map[string]string   `json:"winExtraArgs,omitempty" yaml:"winExtraArgs,omitempty"`
+	WindowsExtraArgsArray map[string][]string `json:"winExtraArgsArray,omitempty" yaml:"winExtraArgsArray,omitempty"`
+	WindowsExtraBinds     []string            `json:"winExtraBinds,omitempty" yaml:"winExtraBinds,omitempty"`
+	WindowsExtraEnv       []string            `json:"winExtraEnv,omitempty" yaml:"winExtraEnv,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kubernetes_info.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kubernetes_info.go
new file mode 100644
index 00000000..69aa0588
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kubernetes_info.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	KubernetesInfoType                  = "kubernetesInfo"
+	KubernetesInfoFieldKubeProxyVersion = "kubeProxyVersion"
+	KubernetesInfoFieldKubeletVersion   = "kubeletVersion"
+)
+
+type KubernetesInfo struct {
+	KubeProxyVersion string `json:"kubeProxyVersion,omitempty" yaml:"kubeProxyVersion,omitempty"`
+	KubeletVersion   string `json:"kubeletVersion,omitempty" yaml:"kubeletVersion,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kubernetes_services_options.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kubernetes_services_options.go
new file mode 100644
index 00000000..b2fe33ce
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_kubernetes_services_options.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	KubernetesServicesOptionsType                = "kubernetesServicesOptions"
+	KubernetesServicesOptionsFieldEtcd           = "etcd"
+	KubernetesServicesOptionsFieldKubeAPI        = "kubeapi"
+	KubernetesServicesOptionsFieldKubeController = "kubeController"
+	KubernetesServicesOptionsFieldKubelet        = "kubelet"
+	KubernetesServicesOptionsFieldKubeproxy      = "kubeproxy"
+	KubernetesServicesOptionsFieldScheduler      = "scheduler"
+)
+
+type KubernetesServicesOptions struct {
+	Etcd           map[string]string `json:"etcd,omitempty" yaml:"etcd,omitempty"`
+	KubeAPI        map[string]string `json:"kubeapi,omitempty" yaml:"kubeapi,omitempty"`
+	KubeController map[string]string `json:"kubeController,omitempty" yaml:"kubeController,omitempty"`
+	Kubelet        map[string]string `json:"kubelet,omitempty" yaml:"kubelet,omitempty"`
+	Kubeproxy      map[string]string `json:"kubeproxy,omitempty" yaml:"kubeproxy,omitempty"`
+	Scheduler      map[string]string `json:"scheduler,omitempty" yaml:"scheduler,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_label_selector.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_label_selector.go
new file mode 100644
index 00000000..27162cf2
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_label_selector.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	LabelSelectorType                  = "labelSelector"
+	LabelSelectorFieldMatchExpressions = "matchExpressions"
+	LabelSelectorFieldMatchLabels      = "matchLabels"
+)
+
+type LabelSelector struct {
+	MatchExpressions []LabelSelectorRequirement `json:"matchExpressions,omitempty" yaml:"matchExpressions,omitempty"`
+	MatchLabels      map[string]string          `json:"matchLabels,omitempty" yaml:"matchLabels,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_label_selector_requirement.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_label_selector_requirement.go
new file mode 100644
index 00000000..3a875acb
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_label_selector_requirement.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	LabelSelectorRequirementType          = "labelSelectorRequirement"
+	LabelSelectorRequirementFieldKey      = "key"
+	LabelSelectorRequirementFieldOperator = "operator"
+	LabelSelectorRequirementFieldValues   = "values"
+)
+
+type LabelSelectorRequirement struct {
+	Key      string   `json:"key,omitempty" yaml:"key,omitempty"`
+	Operator string   `json:"operator,omitempty" yaml:"operator,omitempty"`
+	Values   []string `json:"values,omitempty" yaml:"values,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_launch_template.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_launch_template.go
new file mode 100644
index 00000000..a5d4c84c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_launch_template.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	LaunchTemplateType         = "launchTemplate"
+	LaunchTemplateFieldID      = "id"
+	LaunchTemplateFieldName    = "name"
+	LaunchTemplateFieldVersion = "version"
+)
+
+type LaunchTemplate struct {
+	ID      *string `json:"id,omitempty" yaml:"id,omitempty"`
+	Name    *string `json:"name,omitempty" yaml:"name,omitempty"`
+	Version *int64  `json:"version,omitempty" yaml:"version,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ldap_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ldap_config.go
new file mode 100644
index 00000000..73a21c5e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ldap_config.go
@@ -0,0 +1,180 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	LdapConfigType                                 = "ldapConfig"
+	LdapConfigFieldAccessMode                      = "accessMode"
+	LdapConfigFieldAllowedPrincipalIDs             = "allowedPrincipalIds"
+	LdapConfigFieldAnnotations                     = "annotations"
+	LdapConfigFieldCertificate                     = "certificate"
+	LdapConfigFieldConnectionTimeout               = "connectionTimeout"
+	LdapConfigFieldCreated                         = "created"
+	LdapConfigFieldCreatorID                       = "creatorId"
+	LdapConfigFieldEnabled                         = "enabled"
+	LdapConfigFieldGroupDNAttribute                = "groupDNAttribute"
+	LdapConfigFieldGroupMemberMappingAttribute     = "groupMemberMappingAttribute"
+	LdapConfigFieldGroupMemberUserAttribute        = "groupMemberUserAttribute"
+	LdapConfigFieldGroupNameAttribute              = "groupNameAttribute"
+	LdapConfigFieldGroupObjectClass                = "groupObjectClass"
+	LdapConfigFieldGroupSearchAttribute            = "groupSearchAttribute"
+	LdapConfigFieldGroupSearchBase                 = "groupSearchBase"
+	LdapConfigFieldGroupSearchFilter               = "groupSearchFilter"
+	LdapConfigFieldLabels                          = "labels"
+	LdapConfigFieldName                            = "name"
+	LdapConfigFieldNestedGroupMembershipEnabled    = "nestedGroupMembershipEnabled"
+	LdapConfigFieldOwnerReferences                 = "ownerReferences"
+	LdapConfigFieldPort                            = "port"
+	LdapConfigFieldRemoved                         = "removed"
+	LdapConfigFieldServers                         = "servers"
+	LdapConfigFieldServiceAccountDistinguishedName = "serviceAccountDistinguishedName"
+	LdapConfigFieldServiceAccountPassword          = "serviceAccountPassword"
+	LdapConfigFieldStartTLS                        = "starttls"
+	LdapConfigFieldStatus                          = "status"
+	LdapConfigFieldTLS                             = "tls"
+	LdapConfigFieldType                            = "type"
+	LdapConfigFieldUUID                            = "uuid"
+	LdapConfigFieldUserDisabledBitMask             = "userDisabledBitMask"
+	LdapConfigFieldUserEnabledAttribute            = "userEnabledAttribute"
+	LdapConfigFieldUserLoginAttribute              = "userLoginAttribute"
+	LdapConfigFieldUserMemberAttribute             = "userMemberAttribute"
+	LdapConfigFieldUserNameAttribute               = "userNameAttribute"
+	LdapConfigFieldUserObjectClass                 = "userObjectClass"
+	LdapConfigFieldUserSearchAttribute             = "userSearchAttribute"
+	LdapConfigFieldUserSearchBase                  = "userSearchBase"
+	LdapConfigFieldUserSearchFilter                = "userSearchFilter"
+)
+
+type LdapConfig struct {
+	types.Resource
+	AccessMode                      string            `json:"accessMode,omitempty" yaml:"accessMode,omitempty"`
+	AllowedPrincipalIDs             []string          `json:"allowedPrincipalIds,omitempty" yaml:"allowedPrincipalIds,omitempty"`
+	Annotations                     map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Certificate                     string            `json:"certificate,omitempty" yaml:"certificate,omitempty"`
+	ConnectionTimeout               int64             `json:"connectionTimeout,omitempty" yaml:"connectionTimeout,omitempty"`
+	Created                         string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID                       string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Enabled                         bool              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	GroupDNAttribute                string            `json:"groupDNAttribute,omitempty" yaml:"groupDNAttribute,omitempty"`
+	GroupMemberMappingAttribute     string            `json:"groupMemberMappingAttribute,omitempty" yaml:"groupMemberMappingAttribute,omitempty"`
+	GroupMemberUserAttribute        string            `json:"groupMemberUserAttribute,omitempty" yaml:"groupMemberUserAttribute,omitempty"`
+	GroupNameAttribute              string            `json:"groupNameAttribute,omitempty" yaml:"groupNameAttribute,omitempty"`
+	GroupObjectClass                string            `json:"groupObjectClass,omitempty" yaml:"groupObjectClass,omitempty"`
+	GroupSearchAttribute            string            `json:"groupSearchAttribute,omitempty" yaml:"groupSearchAttribute,omitempty"`
+	GroupSearchBase                 string            `json:"groupSearchBase,omitempty" yaml:"groupSearchBase,omitempty"`
+	GroupSearchFilter               string            `json:"groupSearchFilter,omitempty" yaml:"groupSearchFilter,omitempty"`
+	Labels                          map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                            string            `json:"name,omitempty" yaml:"name,omitempty"`
+	NestedGroupMembershipEnabled    bool              `json:"nestedGroupMembershipEnabled,omitempty" yaml:"nestedGroupMembershipEnabled,omitempty"`
+	OwnerReferences                 []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Port                            int64             `json:"port,omitempty" yaml:"port,omitempty"`
+	Removed                         string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Servers                         []string          `json:"servers,omitempty" yaml:"servers,omitempty"`
+	ServiceAccountDistinguishedName string            `json:"serviceAccountDistinguishedName,omitempty" yaml:"serviceAccountDistinguishedName,omitempty"`
+	ServiceAccountPassword          string            `json:"serviceAccountPassword,omitempty" yaml:"serviceAccountPassword,omitempty"`
+	StartTLS                        bool              `json:"starttls,omitempty" yaml:"starttls,omitempty"`
+	Status                          *AuthConfigStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	TLS                             bool              `json:"tls,omitempty" yaml:"tls,omitempty"`
+	Type                            string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UUID                            string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserDisabledBitMask             int64             `json:"userDisabledBitMask,omitempty" yaml:"userDisabledBitMask,omitempty"`
+	UserEnabledAttribute            string            `json:"userEnabledAttribute,omitempty" yaml:"userEnabledAttribute,omitempty"`
+	UserLoginAttribute              string            `json:"userLoginAttribute,omitempty" yaml:"userLoginAttribute,omitempty"`
+	UserMemberAttribute             string            `json:"userMemberAttribute,omitempty" yaml:"userMemberAttribute,omitempty"`
+	UserNameAttribute               string            `json:"userNameAttribute,omitempty" yaml:"userNameAttribute,omitempty"`
+	UserObjectClass                 string            `json:"userObjectClass,omitempty" yaml:"userObjectClass,omitempty"`
+	UserSearchAttribute             string            `json:"userSearchAttribute,omitempty" yaml:"userSearchAttribute,omitempty"`
+	UserSearchBase                  string            `json:"userSearchBase,omitempty" yaml:"userSearchBase,omitempty"`
+	UserSearchFilter                string            `json:"userSearchFilter,omitempty" yaml:"userSearchFilter,omitempty"`
+}
+
+type LdapConfigCollection struct {
+	types.Collection
+	Data   []LdapConfig `json:"data,omitempty"`
+	client *LdapConfigClient
+}
+
+type LdapConfigClient struct {
+	apiClient *Client
+}
+
+type LdapConfigOperations interface {
+	List(opts *types.ListOpts) (*LdapConfigCollection, error)
+	ListAll(opts *types.ListOpts) (*LdapConfigCollection, error)
+	Create(opts *LdapConfig) (*LdapConfig, error)
+	Update(existing *LdapConfig, updates interface{}) (*LdapConfig, error)
+	Replace(existing *LdapConfig) (*LdapConfig, error)
+	ByID(id string) (*LdapConfig, error)
+	Delete(container *LdapConfig) error
+}
+
+func newLdapConfigClient(apiClient *Client) *LdapConfigClient {
+	return &LdapConfigClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *LdapConfigClient) Create(container *LdapConfig) (*LdapConfig, error) {
+	resp := &LdapConfig{}
+	err := c.apiClient.Ops.DoCreate(LdapConfigType, container, resp)
+	return resp, err
+}
+
+func (c *LdapConfigClient) Update(existing *LdapConfig, updates interface{}) (*LdapConfig, error) {
+	resp := &LdapConfig{}
+	err := c.apiClient.Ops.DoUpdate(LdapConfigType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *LdapConfigClient) Replace(obj *LdapConfig) (*LdapConfig, error) {
+	resp := &LdapConfig{}
+	err := c.apiClient.Ops.DoReplace(LdapConfigType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *LdapConfigClient) List(opts *types.ListOpts) (*LdapConfigCollection, error) {
+	resp := &LdapConfigCollection{}
+	err := c.apiClient.Ops.DoList(LdapConfigType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *LdapConfigClient) ListAll(opts *types.ListOpts) (*LdapConfigCollection, error) {
+	resp := &LdapConfigCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *LdapConfigCollection) Next() (*LdapConfigCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &LdapConfigCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *LdapConfigClient) ByID(id string) (*LdapConfig, error) {
+	resp := &LdapConfig{}
+	err := c.apiClient.Ops.DoByID(LdapConfigType, id, resp)
+	return resp, err
+}
+
+func (c *LdapConfigClient) Delete(container *LdapConfig) error {
+	return c.apiClient.Ops.DoResourceDelete(LdapConfigType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ldap_fields.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ldap_fields.go
new file mode 100644
index 00000000..7c342d17
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ldap_fields.go
@@ -0,0 +1,60 @@
+package client
+
+const (
+	LdapFieldsType                                 = "ldapFields"
+	LdapFieldsFieldCertificate                     = "certificate"
+	LdapFieldsFieldConnectionTimeout               = "connectionTimeout"
+	LdapFieldsFieldGroupDNAttribute                = "groupDNAttribute"
+	LdapFieldsFieldGroupMemberMappingAttribute     = "groupMemberMappingAttribute"
+	LdapFieldsFieldGroupMemberUserAttribute        = "groupMemberUserAttribute"
+	LdapFieldsFieldGroupNameAttribute              = "groupNameAttribute"
+	LdapFieldsFieldGroupObjectClass                = "groupObjectClass"
+	LdapFieldsFieldGroupSearchAttribute            = "groupSearchAttribute"
+	LdapFieldsFieldGroupSearchBase                 = "groupSearchBase"
+	LdapFieldsFieldGroupSearchFilter               = "groupSearchFilter"
+	LdapFieldsFieldNestedGroupMembershipEnabled    = "nestedGroupMembershipEnabled"
+	LdapFieldsFieldPort                            = "port"
+	LdapFieldsFieldServers                         = "servers"
+	LdapFieldsFieldServiceAccountDistinguishedName = "serviceAccountDistinguishedName"
+	LdapFieldsFieldServiceAccountPassword          = "serviceAccountPassword"
+	LdapFieldsFieldStartTLS                        = "starttls"
+	LdapFieldsFieldTLS                             = "tls"
+	LdapFieldsFieldUserDisabledBitMask             = "userDisabledBitMask"
+	LdapFieldsFieldUserEnabledAttribute            = "userEnabledAttribute"
+	LdapFieldsFieldUserLoginAttribute              = "userLoginAttribute"
+	LdapFieldsFieldUserMemberAttribute             = "userMemberAttribute"
+	LdapFieldsFieldUserNameAttribute               = "userNameAttribute"
+	LdapFieldsFieldUserObjectClass                 = "userObjectClass"
+	LdapFieldsFieldUserSearchAttribute             = "userSearchAttribute"
+	LdapFieldsFieldUserSearchBase                  = "userSearchBase"
+	LdapFieldsFieldUserSearchFilter                = "userSearchFilter"
+)
+
+type LdapFields struct {
+	Certificate                     string   `json:"certificate,omitempty" yaml:"certificate,omitempty"`
+	ConnectionTimeout               int64    `json:"connectionTimeout,omitempty" yaml:"connectionTimeout,omitempty"`
+	GroupDNAttribute                string   `json:"groupDNAttribute,omitempty" yaml:"groupDNAttribute,omitempty"`
+	GroupMemberMappingAttribute     string   `json:"groupMemberMappingAttribute,omitempty" yaml:"groupMemberMappingAttribute,omitempty"`
+	GroupMemberUserAttribute        string   `json:"groupMemberUserAttribute,omitempty" yaml:"groupMemberUserAttribute,omitempty"`
+	GroupNameAttribute              string   `json:"groupNameAttribute,omitempty" yaml:"groupNameAttribute,omitempty"`
+	GroupObjectClass                string   `json:"groupObjectClass,omitempty" yaml:"groupObjectClass,omitempty"`
+	GroupSearchAttribute            string   `json:"groupSearchAttribute,omitempty" yaml:"groupSearchAttribute,omitempty"`
+	GroupSearchBase                 string   `json:"groupSearchBase,omitempty" yaml:"groupSearchBase,omitempty"`
+	GroupSearchFilter               string   `json:"groupSearchFilter,omitempty" yaml:"groupSearchFilter,omitempty"`
+	NestedGroupMembershipEnabled    bool     `json:"nestedGroupMembershipEnabled,omitempty" yaml:"nestedGroupMembershipEnabled,omitempty"`
+	Port                            int64    `json:"port,omitempty" yaml:"port,omitempty"`
+	Servers                         []string `json:"servers,omitempty" yaml:"servers,omitempty"`
+	ServiceAccountDistinguishedName string   `json:"serviceAccountDistinguishedName,omitempty" yaml:"serviceAccountDistinguishedName,omitempty"`
+	ServiceAccountPassword          string   `json:"serviceAccountPassword,omitempty" yaml:"serviceAccountPassword,omitempty"`
+	StartTLS                        bool     `json:"starttls,omitempty" yaml:"starttls,omitempty"`
+	TLS                             bool     `json:"tls,omitempty" yaml:"tls,omitempty"`
+	UserDisabledBitMask             int64    `json:"userDisabledBitMask,omitempty" yaml:"userDisabledBitMask,omitempty"`
+	UserEnabledAttribute            string   `json:"userEnabledAttribute,omitempty" yaml:"userEnabledAttribute,omitempty"`
+	UserLoginAttribute              string   `json:"userLoginAttribute,omitempty" yaml:"userLoginAttribute,omitempty"`
+	UserMemberAttribute             string   `json:"userMemberAttribute,omitempty" yaml:"userMemberAttribute,omitempty"`
+	UserNameAttribute               string   `json:"userNameAttribute,omitempty" yaml:"userNameAttribute,omitempty"`
+	UserObjectClass                 string   `json:"userObjectClass,omitempty" yaml:"userObjectClass,omitempty"`
+	UserSearchAttribute             string   `json:"userSearchAttribute,omitempty" yaml:"userSearchAttribute,omitempty"`
+	UserSearchBase                  string   `json:"userSearchBase,omitempty" yaml:"userSearchBase,omitempty"`
+	UserSearchFilter                string   `json:"userSearchFilter,omitempty" yaml:"userSearchFilter,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_linear_autoscaler_params.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_linear_autoscaler_params.go
new file mode 100644
index 00000000..f9ed17d6
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_linear_autoscaler_params.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	LinearAutoscalerParamsType                           = "linearAutoscalerParams"
+	LinearAutoscalerParamsFieldCoresPerReplica           = "coresPerReplica"
+	LinearAutoscalerParamsFieldMax                       = "max"
+	LinearAutoscalerParamsFieldMin                       = "min"
+	LinearAutoscalerParamsFieldNodesPerReplica           = "nodesPerReplica"
+	LinearAutoscalerParamsFieldPreventSinglePointFailure = "preventSinglePointFailure"
+)
+
+type LinearAutoscalerParams struct {
+	CoresPerReplica           float64 `json:"coresPerReplica,omitempty" yaml:"coresPerReplica,omitempty"`
+	Max                       int64   `json:"max,omitempty" yaml:"max,omitempty"`
+	Min                       int64   `json:"min,omitempty" yaml:"min,omitempty"`
+	NodesPerReplica           float64 `json:"nodesPerReplica,omitempty" yaml:"nodesPerReplica,omitempty"`
+	PreventSinglePointFailure bool    `json:"preventSinglePointFailure,omitempty" yaml:"preventSinglePointFailure,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_load_balancer_capabilities.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_load_balancer_capabilities.go
new file mode 100644
index 00000000..6258b573
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_load_balancer_capabilities.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	LoadBalancerCapabilitiesType                      = "loadBalancerCapabilities"
+	LoadBalancerCapabilitiesFieldEnabled              = "enabled"
+	LoadBalancerCapabilitiesFieldHealthCheckSupported = "healthCheckSupported"
+	LoadBalancerCapabilitiesFieldProtocolsSupported   = "protocolsSupported"
+	LoadBalancerCapabilitiesFieldProvider             = "provider"
+)
+
+type LoadBalancerCapabilities struct {
+	Enabled              *bool    `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	HealthCheckSupported bool     `json:"healthCheckSupported,omitempty" yaml:"healthCheckSupported,omitempty"`
+	ProtocolsSupported   []string `json:"protocolsSupported,omitempty" yaml:"protocolsSupported,omitempty"`
+	Provider             string   `json:"provider,omitempty" yaml:"provider,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_load_balancer_openstack_opts.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_load_balancer_openstack_opts.go
new file mode 100644
index 00000000..bd4f3868
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_load_balancer_openstack_opts.go
@@ -0,0 +1,30 @@
+package client
+
+const (
+	LoadBalancerOpenstackOptsType                      = "loadBalancerOpenstackOpts"
+	LoadBalancerOpenstackOptsFieldCreateMonitor        = "create-monitor"
+	LoadBalancerOpenstackOptsFieldFloatingNetworkID    = "floating-network-id"
+	LoadBalancerOpenstackOptsFieldLBMethod             = "lb-method"
+	LoadBalancerOpenstackOptsFieldLBProvider           = "lb-provider"
+	LoadBalancerOpenstackOptsFieldLBVersion            = "lb-version"
+	LoadBalancerOpenstackOptsFieldManageSecurityGroups = "manage-security-groups"
+	LoadBalancerOpenstackOptsFieldMonitorDelay         = "monitor-delay"
+	LoadBalancerOpenstackOptsFieldMonitorMaxRetries    = "monitor-max-retries"
+	LoadBalancerOpenstackOptsFieldMonitorTimeout       = "monitor-timeout"
+	LoadBalancerOpenstackOptsFieldSubnetID             = "subnet-id"
+	LoadBalancerOpenstackOptsFieldUseOctavia           = "use-octavia"
+)
+
+type LoadBalancerOpenstackOpts struct {
+	CreateMonitor        bool   `json:"create-monitor,omitempty" yaml:"create-monitor,omitempty"`
+	FloatingNetworkID    string `json:"floating-network-id,omitempty" yaml:"floating-network-id,omitempty"`
+	LBMethod             string `json:"lb-method,omitempty" yaml:"lb-method,omitempty"`
+	LBProvider           string `json:"lb-provider,omitempty" yaml:"lb-provider,omitempty"`
+	LBVersion            string `json:"lb-version,omitempty" yaml:"lb-version,omitempty"`
+	ManageSecurityGroups bool   `json:"manage-security-groups,omitempty" yaml:"manage-security-groups,omitempty"`
+	MonitorDelay         string `json:"monitor-delay,omitempty" yaml:"monitor-delay,omitempty"`
+	MonitorMaxRetries    int64  `json:"monitor-max-retries,omitempty" yaml:"monitor-max-retries,omitempty"`
+	MonitorTimeout       string `json:"monitor-timeout,omitempty" yaml:"monitor-timeout,omitempty"`
+	SubnetID             string `json:"subnet-id,omitempty" yaml:"subnet-id,omitempty"`
+	UseOctavia           bool   `json:"use-octavia,omitempty" yaml:"use-octavia,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_local_cluster_auth_endpoint.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_local_cluster_auth_endpoint.go
new file mode 100644
index 00000000..830583d4
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_local_cluster_auth_endpoint.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	LocalClusterAuthEndpointType         = "localClusterAuthEndpoint"
+	LocalClusterAuthEndpointFieldCACerts = "caCerts"
+	LocalClusterAuthEndpointFieldEnabled = "enabled"
+	LocalClusterAuthEndpointFieldFQDN    = "fqdn"
+)
+
+type LocalClusterAuthEndpoint struct {
+	CACerts string `json:"caCerts,omitempty" yaml:"caCerts,omitempty"`
+	Enabled bool   `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	FQDN    string `json:"fqdn,omitempty" yaml:"fqdn,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_local_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_local_config.go
new file mode 100644
index 00000000..ca4d5123
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_local_config.go
@@ -0,0 +1,34 @@
+package client
+
+const (
+	LocalConfigType                     = "localConfig"
+	LocalConfigFieldAccessMode          = "accessMode"
+	LocalConfigFieldAllowedPrincipalIDs = "allowedPrincipalIds"
+	LocalConfigFieldAnnotations         = "annotations"
+	LocalConfigFieldCreated             = "created"
+	LocalConfigFieldCreatorID           = "creatorId"
+	LocalConfigFieldEnabled             = "enabled"
+	LocalConfigFieldLabels              = "labels"
+	LocalConfigFieldName                = "name"
+	LocalConfigFieldOwnerReferences     = "ownerReferences"
+	LocalConfigFieldRemoved             = "removed"
+	LocalConfigFieldStatus              = "status"
+	LocalConfigFieldType                = "type"
+	LocalConfigFieldUUID                = "uuid"
+)
+
+type LocalConfig struct {
+	AccessMode          string            `json:"accessMode,omitempty" yaml:"accessMode,omitempty"`
+	AllowedPrincipalIDs []string          `json:"allowedPrincipalIds,omitempty" yaml:"allowedPrincipalIds,omitempty"`
+	Annotations         map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created             string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID           string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Enabled             bool              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	Labels              map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences     []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed             string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Status              *AuthConfigStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	Type                string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UUID                string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_local_object_reference.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_local_object_reference.go
new file mode 100644
index 00000000..e4d3b505
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_local_object_reference.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	LocalObjectReferenceType      = "localObjectReference"
+	LocalObjectReferenceFieldName = "name"
+)
+
+type LocalObjectReference struct {
+	Name string `json:"name,omitempty" yaml:"name,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_management_secret.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_management_secret.go
new file mode 100644
index 00000000..4814ba4e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_management_secret.go
@@ -0,0 +1,126 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	ManagementSecretType                 = "managementSecret"
+	ManagementSecretFieldAnnotations     = "annotations"
+	ManagementSecretFieldCreated         = "created"
+	ManagementSecretFieldCreatorID       = "creatorId"
+	ManagementSecretFieldData            = "data"
+	ManagementSecretFieldImmutable       = "immutable"
+	ManagementSecretFieldLabels          = "labels"
+	ManagementSecretFieldName            = "name"
+	ManagementSecretFieldOwnerReferences = "ownerReferences"
+	ManagementSecretFieldRemoved         = "removed"
+	ManagementSecretFieldStringData      = "stringData"
+	ManagementSecretFieldType            = "type"
+	ManagementSecretFieldUUID            = "uuid"
+)
+
+type ManagementSecret struct {
+	types.Resource
+	Annotations     map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created         string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID       string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Data            map[string]string `json:"data,omitempty" yaml:"data,omitempty"`
+	Immutable       *bool             `json:"immutable,omitempty" yaml:"immutable,omitempty"`
+	Labels          map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name            string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed         string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	StringData      map[string]string `json:"stringData,omitempty" yaml:"stringData,omitempty"`
+	Type            string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UUID            string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type ManagementSecretCollection struct {
+	types.Collection
+	Data   []ManagementSecret `json:"data,omitempty"`
+	client *ManagementSecretClient
+}
+
+type ManagementSecretClient struct {
+	apiClient *Client
+}
+
+type ManagementSecretOperations interface {
+	List(opts *types.ListOpts) (*ManagementSecretCollection, error)
+	ListAll(opts *types.ListOpts) (*ManagementSecretCollection, error)
+	Create(opts *ManagementSecret) (*ManagementSecret, error)
+	Update(existing *ManagementSecret, updates interface{}) (*ManagementSecret, error)
+	Replace(existing *ManagementSecret) (*ManagementSecret, error)
+	ByID(id string) (*ManagementSecret, error)
+	Delete(container *ManagementSecret) error
+}
+
+func newManagementSecretClient(apiClient *Client) *ManagementSecretClient {
+	return &ManagementSecretClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *ManagementSecretClient) Create(container *ManagementSecret) (*ManagementSecret, error) {
+	resp := &ManagementSecret{}
+	err := c.apiClient.Ops.DoCreate(ManagementSecretType, container, resp)
+	return resp, err
+}
+
+func (c *ManagementSecretClient) Update(existing *ManagementSecret, updates interface{}) (*ManagementSecret, error) {
+	resp := &ManagementSecret{}
+	err := c.apiClient.Ops.DoUpdate(ManagementSecretType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *ManagementSecretClient) Replace(obj *ManagementSecret) (*ManagementSecret, error) {
+	resp := &ManagementSecret{}
+	err := c.apiClient.Ops.DoReplace(ManagementSecretType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *ManagementSecretClient) List(opts *types.ListOpts) (*ManagementSecretCollection, error) {
+	resp := &ManagementSecretCollection{}
+	err := c.apiClient.Ops.DoList(ManagementSecretType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *ManagementSecretClient) ListAll(opts *types.ListOpts) (*ManagementSecretCollection, error) {
+	resp := &ManagementSecretCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *ManagementSecretCollection) Next() (*ManagementSecretCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &ManagementSecretCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *ManagementSecretClient) ByID(id string) (*ManagementSecret, error) {
+	resp := &ManagementSecret{}
+	err := c.apiClient.Ops.DoByID(ManagementSecretType, id, resp)
+	return resp, err
+}
+
+func (c *ManagementSecretClient) Delete(container *ManagementSecret) error {
+	return c.apiClient.Ops.DoResourceDelete(ManagementSecretType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_map_delta.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_map_delta.go
new file mode 100644
index 00000000..b6861818
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_map_delta.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	MapDeltaType        = "mapDelta"
+	MapDeltaFieldAdd    = "add"
+	MapDeltaFieldDelete = "delete"
+)
+
+type MapDelta struct {
+	Add    map[string]string `json:"add,omitempty" yaml:"add,omitempty"`
+	Delete map[string]bool   `json:"delete,omitempty" yaml:"delete,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_member.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_member.go
new file mode 100644
index 00000000..620e4607
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_member.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	MemberType                  = "member"
+	MemberFieldAccessType       = "accessType"
+	MemberFieldGroupPrincipalID = "groupPrincipalId"
+	MemberFieldUserPrincipalID  = "userPrincipalId"
+)
+
+type Member struct {
+	AccessType       string `json:"accessType,omitempty" yaml:"accessType,omitempty"`
+	GroupPrincipalID string `json:"groupPrincipalId,omitempty" yaml:"groupPrincipalId,omitempty"`
+	UserPrincipalID  string `json:"userPrincipalId,omitempty" yaml:"userPrincipalId,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_memory_info.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_memory_info.go
new file mode 100644
index 00000000..ecd1a170
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_memory_info.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	MemoryInfoType             = "memoryInfo"
+	MemoryInfoFieldMemTotalKiB = "memTotalKiB"
+)
+
+type MemoryInfo struct {
+	MemTotalKiB int64 `json:"memTotalKiB,omitempty" yaml:"memTotalKiB,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_metadata_openstack_opts.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_metadata_openstack_opts.go
new file mode 100644
index 00000000..8a38e932
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_metadata_openstack_opts.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	MetadataOpenstackOptsType                = "metadataOpenstackOpts"
+	MetadataOpenstackOptsFieldRequestTimeout = "request-timeout"
+	MetadataOpenstackOptsFieldSearchOrder    = "search-order"
+)
+
+type MetadataOpenstackOpts struct {
+	RequestTimeout int64  `json:"request-timeout,omitempty" yaml:"request-timeout,omitempty"`
+	SearchOrder    string `json:"search-order,omitempty" yaml:"search-order,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_metadata_update.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_metadata_update.go
new file mode 100644
index 00000000..1d1f5b29
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_metadata_update.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	MetadataUpdateType             = "metadataUpdate"
+	MetadataUpdateFieldAnnotations = "annotations"
+	MetadataUpdateFieldLabels      = "labels"
+)
+
+type MetadataUpdate struct {
+	Annotations *MapDelta `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Labels      *MapDelta `json:"labels,omitempty" yaml:"labels,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_monitoring_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_monitoring_config.go
new file mode 100644
index 00000000..3cb7049d
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_monitoring_config.go
@@ -0,0 +1,22 @@
+package client
+
+const (
+	MonitoringConfigType                                = "monitoringConfig"
+	MonitoringConfigFieldMetricsServerPriorityClassName = "metricsServerPriorityClassName"
+	MonitoringConfigFieldNodeSelector                   = "nodeSelector"
+	MonitoringConfigFieldOptions                        = "options"
+	MonitoringConfigFieldProvider                       = "provider"
+	MonitoringConfigFieldReplicas                       = "replicas"
+	MonitoringConfigFieldTolerations                    = "tolerations"
+	MonitoringConfigFieldUpdateStrategy                 = "updateStrategy"
+)
+
+type MonitoringConfig struct {
+	MetricsServerPriorityClassName string              `json:"metricsServerPriorityClassName,omitempty" yaml:"metricsServerPriorityClassName,omitempty"`
+	NodeSelector                   map[string]string   `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty"`
+	Options                        map[string]string   `json:"options,omitempty" yaml:"options,omitempty"`
+	Provider                       string              `json:"provider,omitempty" yaml:"provider,omitempty"`
+	Replicas                       *int64              `json:"replicas,omitempty" yaml:"replicas,omitempty"`
+	Tolerations                    []Toleration        `json:"tolerations,omitempty" yaml:"tolerations,omitempty"`
+	UpdateStrategy                 *DeploymentStrategy `json:"updateStrategy,omitempty" yaml:"updateStrategy,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app.go
new file mode 100644
index 00000000..228b842b
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app.go
@@ -0,0 +1,165 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	MultiClusterAppType                      = "multiClusterApp"
+	MultiClusterAppFieldAnnotations          = "annotations"
+	MultiClusterAppFieldAnswers              = "answers"
+	MultiClusterAppFieldCreated              = "created"
+	MultiClusterAppFieldCreatorID            = "creatorId"
+	MultiClusterAppFieldLabels               = "labels"
+	MultiClusterAppFieldMembers              = "members"
+	MultiClusterAppFieldName                 = "name"
+	MultiClusterAppFieldOwnerReferences      = "ownerReferences"
+	MultiClusterAppFieldRemoved              = "removed"
+	MultiClusterAppFieldRevisionHistoryLimit = "revisionHistoryLimit"
+	MultiClusterAppFieldRoles                = "roles"
+	MultiClusterAppFieldState                = "state"
+	MultiClusterAppFieldStatus               = "status"
+	MultiClusterAppFieldTargets              = "targets"
+	MultiClusterAppFieldTemplateVersionID    = "templateVersionId"
+	MultiClusterAppFieldTimeout              = "timeout"
+	MultiClusterAppFieldTransitioning        = "transitioning"
+	MultiClusterAppFieldTransitioningMessage = "transitioningMessage"
+	MultiClusterAppFieldUUID                 = "uuid"
+	MultiClusterAppFieldUpgradeStrategy      = "upgradeStrategy"
+	MultiClusterAppFieldWait                 = "wait"
+)
+
+type MultiClusterApp struct {
+	types.Resource
+	Annotations          map[string]string      `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Answers              []Answer               `json:"answers,omitempty" yaml:"answers,omitempty"`
+	Created              string                 `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID            string                 `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Labels               map[string]string      `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Members              []Member               `json:"members,omitempty" yaml:"members,omitempty"`
+	Name                 string                 `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences      []OwnerReference       `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed              string                 `json:"removed,omitempty" yaml:"removed,omitempty"`
+	RevisionHistoryLimit int64                  `json:"revisionHistoryLimit,omitempty" yaml:"revisionHistoryLimit,omitempty"`
+	Roles                []string               `json:"roles,omitempty" yaml:"roles,omitempty"`
+	State                string                 `json:"state,omitempty" yaml:"state,omitempty"`
+	Status               *MultiClusterAppStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	Targets              []Target               `json:"targets,omitempty" yaml:"targets,omitempty"`
+	TemplateVersionID    string                 `json:"templateVersionId,omitempty" yaml:"templateVersionId,omitempty"`
+	Timeout              int64                  `json:"timeout,omitempty" yaml:"timeout,omitempty"`
+	Transitioning        string                 `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage string                 `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                 string                 `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UpgradeStrategy      *UpgradeStrategy       `json:"upgradeStrategy,omitempty" yaml:"upgradeStrategy,omitempty"`
+	Wait                 bool                   `json:"wait,omitempty" yaml:"wait,omitempty"`
+}
+
+type MultiClusterAppCollection struct {
+	types.Collection
+	Data   []MultiClusterApp `json:"data,omitempty"`
+	client *MultiClusterAppClient
+}
+
+type MultiClusterAppClient struct {
+	apiClient *Client
+}
+
+type MultiClusterAppOperations interface {
+	List(opts *types.ListOpts) (*MultiClusterAppCollection, error)
+	ListAll(opts *types.ListOpts) (*MultiClusterAppCollection, error)
+	Create(opts *MultiClusterApp) (*MultiClusterApp, error)
+	Update(existing *MultiClusterApp, updates interface{}) (*MultiClusterApp, error)
+	Replace(existing *MultiClusterApp) (*MultiClusterApp, error)
+	ByID(id string) (*MultiClusterApp, error)
+	Delete(container *MultiClusterApp) error
+
+	ActionAddProjects(resource *MultiClusterApp, input *UpdateMultiClusterAppTargetsInput) error
+
+	ActionRemoveProjects(resource *MultiClusterApp, input *UpdateMultiClusterAppTargetsInput) error
+
+	ActionRollback(resource *MultiClusterApp, input *MultiClusterAppRollbackInput) error
+}
+
+func newMultiClusterAppClient(apiClient *Client) *MultiClusterAppClient {
+	return &MultiClusterAppClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *MultiClusterAppClient) Create(container *MultiClusterApp) (*MultiClusterApp, error) {
+	resp := &MultiClusterApp{}
+	err := c.apiClient.Ops.DoCreate(MultiClusterAppType, container, resp)
+	return resp, err
+}
+
+func (c *MultiClusterAppClient) Update(existing *MultiClusterApp, updates interface{}) (*MultiClusterApp, error) {
+	resp := &MultiClusterApp{}
+	err := c.apiClient.Ops.DoUpdate(MultiClusterAppType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *MultiClusterAppClient) Replace(obj *MultiClusterApp) (*MultiClusterApp, error) {
+	resp := &MultiClusterApp{}
+	err := c.apiClient.Ops.DoReplace(MultiClusterAppType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *MultiClusterAppClient) List(opts *types.ListOpts) (*MultiClusterAppCollection, error) {
+	resp := &MultiClusterAppCollection{}
+	err := c.apiClient.Ops.DoList(MultiClusterAppType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *MultiClusterAppClient) ListAll(opts *types.ListOpts) (*MultiClusterAppCollection, error) {
+	resp := &MultiClusterAppCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *MultiClusterAppCollection) Next() (*MultiClusterAppCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &MultiClusterAppCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *MultiClusterAppClient) ByID(id string) (*MultiClusterApp, error) {
+	resp := &MultiClusterApp{}
+	err := c.apiClient.Ops.DoByID(MultiClusterAppType, id, resp)
+	return resp, err
+}
+
+func (c *MultiClusterAppClient) Delete(container *MultiClusterApp) error {
+	return c.apiClient.Ops.DoResourceDelete(MultiClusterAppType, &container.Resource)
+}
+
+func (c *MultiClusterAppClient) ActionAddProjects(resource *MultiClusterApp, input *UpdateMultiClusterAppTargetsInput) error {
+	err := c.apiClient.Ops.DoAction(MultiClusterAppType, "addProjects", &resource.Resource, input, nil)
+	return err
+}
+
+func (c *MultiClusterAppClient) ActionRemoveProjects(resource *MultiClusterApp, input *UpdateMultiClusterAppTargetsInput) error {
+	err := c.apiClient.Ops.DoAction(MultiClusterAppType, "removeProjects", &resource.Resource, input, nil)
+	return err
+}
+
+func (c *MultiClusterAppClient) ActionRollback(resource *MultiClusterApp, input *MultiClusterAppRollbackInput) error {
+	err := c.apiClient.Ops.DoAction(MultiClusterAppType, "rollback", &resource.Resource, input, nil)
+	return err
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app_revision.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app_revision.go
new file mode 100644
index 00000000..a759036f
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app_revision.go
@@ -0,0 +1,122 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	MultiClusterAppRevisionType                   = "multiClusterAppRevision"
+	MultiClusterAppRevisionFieldAnnotations       = "annotations"
+	MultiClusterAppRevisionFieldAnswers           = "answers"
+	MultiClusterAppRevisionFieldCreated           = "created"
+	MultiClusterAppRevisionFieldCreatorID         = "creatorId"
+	MultiClusterAppRevisionFieldLabels            = "labels"
+	MultiClusterAppRevisionFieldName              = "name"
+	MultiClusterAppRevisionFieldOwnerReferences   = "ownerReferences"
+	MultiClusterAppRevisionFieldRemoved           = "removed"
+	MultiClusterAppRevisionFieldTemplateVersionID = "templateVersionId"
+	MultiClusterAppRevisionFieldUUID              = "uuid"
+)
+
+type MultiClusterAppRevision struct {
+	types.Resource
+	Annotations       map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Answers           []Answer          `json:"answers,omitempty" yaml:"answers,omitempty"`
+	Created           string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID         string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Labels            map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name              string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences   []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed           string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	TemplateVersionID string            `json:"templateVersionId,omitempty" yaml:"templateVersionId,omitempty"`
+	UUID              string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type MultiClusterAppRevisionCollection struct {
+	types.Collection
+	Data   []MultiClusterAppRevision `json:"data,omitempty"`
+	client *MultiClusterAppRevisionClient
+}
+
+type MultiClusterAppRevisionClient struct {
+	apiClient *Client
+}
+
+type MultiClusterAppRevisionOperations interface {
+	List(opts *types.ListOpts) (*MultiClusterAppRevisionCollection, error)
+	ListAll(opts *types.ListOpts) (*MultiClusterAppRevisionCollection, error)
+	Create(opts *MultiClusterAppRevision) (*MultiClusterAppRevision, error)
+	Update(existing *MultiClusterAppRevision, updates interface{}) (*MultiClusterAppRevision, error)
+	Replace(existing *MultiClusterAppRevision) (*MultiClusterAppRevision, error)
+	ByID(id string) (*MultiClusterAppRevision, error)
+	Delete(container *MultiClusterAppRevision) error
+}
+
+func newMultiClusterAppRevisionClient(apiClient *Client) *MultiClusterAppRevisionClient {
+	return &MultiClusterAppRevisionClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *MultiClusterAppRevisionClient) Create(container *MultiClusterAppRevision) (*MultiClusterAppRevision, error) {
+	resp := &MultiClusterAppRevision{}
+	err := c.apiClient.Ops.DoCreate(MultiClusterAppRevisionType, container, resp)
+	return resp, err
+}
+
+func (c *MultiClusterAppRevisionClient) Update(existing *MultiClusterAppRevision, updates interface{}) (*MultiClusterAppRevision, error) {
+	resp := &MultiClusterAppRevision{}
+	err := c.apiClient.Ops.DoUpdate(MultiClusterAppRevisionType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *MultiClusterAppRevisionClient) Replace(obj *MultiClusterAppRevision) (*MultiClusterAppRevision, error) {
+	resp := &MultiClusterAppRevision{}
+	err := c.apiClient.Ops.DoReplace(MultiClusterAppRevisionType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *MultiClusterAppRevisionClient) List(opts *types.ListOpts) (*MultiClusterAppRevisionCollection, error) {
+	resp := &MultiClusterAppRevisionCollection{}
+	err := c.apiClient.Ops.DoList(MultiClusterAppRevisionType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *MultiClusterAppRevisionClient) ListAll(opts *types.ListOpts) (*MultiClusterAppRevisionCollection, error) {
+	resp := &MultiClusterAppRevisionCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *MultiClusterAppRevisionCollection) Next() (*MultiClusterAppRevisionCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &MultiClusterAppRevisionCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *MultiClusterAppRevisionClient) ByID(id string) (*MultiClusterAppRevision, error) {
+	resp := &MultiClusterAppRevision{}
+	err := c.apiClient.Ops.DoByID(MultiClusterAppRevisionType, id, resp)
+	return resp, err
+}
+
+func (c *MultiClusterAppRevisionClient) Delete(container *MultiClusterAppRevision) error {
+	return c.apiClient.Ops.DoResourceDelete(MultiClusterAppRevisionType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app_rollback_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app_rollback_input.go
new file mode 100644
index 00000000..90a033eb
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app_rollback_input.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	MultiClusterAppRollbackInputType            = "multiClusterAppRollbackInput"
+	MultiClusterAppRollbackInputFieldRevisionID = "revisionId"
+)
+
+type MultiClusterAppRollbackInput struct {
+	RevisionID string `json:"revisionId,omitempty" yaml:"revisionId,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app_spec.go
new file mode 100644
index 00000000..c9d0b380
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app_spec.go
@@ -0,0 +1,26 @@
+package client
+
+const (
+	MultiClusterAppSpecType                      = "multiClusterAppSpec"
+	MultiClusterAppSpecFieldAnswers              = "answers"
+	MultiClusterAppSpecFieldMembers              = "members"
+	MultiClusterAppSpecFieldRevisionHistoryLimit = "revisionHistoryLimit"
+	MultiClusterAppSpecFieldRoles                = "roles"
+	MultiClusterAppSpecFieldTargets              = "targets"
+	MultiClusterAppSpecFieldTemplateVersionID    = "templateVersionId"
+	MultiClusterAppSpecFieldTimeout              = "timeout"
+	MultiClusterAppSpecFieldUpgradeStrategy      = "upgradeStrategy"
+	MultiClusterAppSpecFieldWait                 = "wait"
+)
+
+type MultiClusterAppSpec struct {
+	Answers              []Answer         `json:"answers,omitempty" yaml:"answers,omitempty"`
+	Members              []Member         `json:"members,omitempty" yaml:"members,omitempty"`
+	RevisionHistoryLimit int64            `json:"revisionHistoryLimit,omitempty" yaml:"revisionHistoryLimit,omitempty"`
+	Roles                []string         `json:"roles,omitempty" yaml:"roles,omitempty"`
+	Targets              []Target         `json:"targets,omitempty" yaml:"targets,omitempty"`
+	TemplateVersionID    string           `json:"templateVersionId,omitempty" yaml:"templateVersionId,omitempty"`
+	Timeout              int64            `json:"timeout,omitempty" yaml:"timeout,omitempty"`
+	UpgradeStrategy      *UpgradeStrategy `json:"upgradeStrategy,omitempty" yaml:"upgradeStrategy,omitempty"`
+	Wait                 bool             `json:"wait,omitempty" yaml:"wait,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app_status.go
new file mode 100644
index 00000000..e84859c1
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_multi_cluster_app_status.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	MultiClusterAppStatusType             = "multiClusterAppStatus"
+	MultiClusterAppStatusFieldConditions  = "conditions"
+	MultiClusterAppStatusFieldHelmVersion = "helmVersion"
+	MultiClusterAppStatusFieldRevisionID  = "revisionId"
+)
+
+type MultiClusterAppStatus struct {
+	Conditions  []AppCondition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	HelmVersion string         `json:"helmVersion,omitempty" yaml:"helmVersion,omitempty"`
+	RevisionID  string         `json:"revisionId,omitempty" yaml:"revisionId,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_namespace_resource_quota.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_namespace_resource_quota.go
new file mode 100644
index 00000000..b170bf5d
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_namespace_resource_quota.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	NamespaceResourceQuotaType       = "namespaceResourceQuota"
+	NamespaceResourceQuotaFieldLimit = "limit"
+)
+
+type NamespaceResourceQuota struct {
+	Limit *ResourceQuotaLimit `json:"limit,omitempty" yaml:"limit,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_network_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_network_config.go
new file mode 100644
index 00000000..4235298e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_network_config.go
@@ -0,0 +1,30 @@
+package client
+
+const (
+	NetworkConfigType                        = "networkConfig"
+	NetworkConfigFieldAciNetworkProvider     = "aciNetworkProvider"
+	NetworkConfigFieldCalicoNetworkProvider  = "calicoNetworkProvider"
+	NetworkConfigFieldCanalNetworkProvider   = "canalNetworkProvider"
+	NetworkConfigFieldFlannelNetworkProvider = "flannelNetworkProvider"
+	NetworkConfigFieldMTU                    = "mtu"
+	NetworkConfigFieldNodeSelector           = "nodeSelector"
+	NetworkConfigFieldOptions                = "options"
+	NetworkConfigFieldPlugin                 = "plugin"
+	NetworkConfigFieldTolerations            = "tolerations"
+	NetworkConfigFieldUpdateStrategy         = "updateStrategy"
+	NetworkConfigFieldWeaveNetworkProvider   = "weaveNetworkProvider"
+)
+
+type NetworkConfig struct {
+	AciNetworkProvider     *AciNetworkProvider      `json:"aciNetworkProvider,omitempty" yaml:"aciNetworkProvider,omitempty"`
+	CalicoNetworkProvider  *CalicoNetworkProvider   `json:"calicoNetworkProvider,omitempty" yaml:"calicoNetworkProvider,omitempty"`
+	CanalNetworkProvider   *CanalNetworkProvider    `json:"canalNetworkProvider,omitempty" yaml:"canalNetworkProvider,omitempty"`
+	FlannelNetworkProvider *FlannelNetworkProvider  `json:"flannelNetworkProvider,omitempty" yaml:"flannelNetworkProvider,omitempty"`
+	MTU                    int64                    `json:"mtu,omitempty" yaml:"mtu,omitempty"`
+	NodeSelector           map[string]string        `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty"`
+	Options                map[string]string        `json:"options,omitempty" yaml:"options,omitempty"`
+	Plugin                 string                   `json:"plugin,omitempty" yaml:"plugin,omitempty"`
+	Tolerations            []Toleration             `json:"tolerations,omitempty" yaml:"tolerations,omitempty"`
+	UpdateStrategy         *DaemonSetUpdateStrategy `json:"updateStrategy,omitempty" yaml:"updateStrategy,omitempty"`
+	WeaveNetworkProvider   *WeaveNetworkProvider    `json:"weaveNetworkProvider,omitempty" yaml:"weaveNetworkProvider,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_network_vshpere_opts.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_network_vshpere_opts.go
new file mode 100644
index 00000000..ad27335a
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_network_vshpere_opts.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	NetworkVshpereOptsType               = "networkVshpereOpts"
+	NetworkVshpereOptsFieldPublicNetwork = "public-network"
+)
+
+type NetworkVshpereOpts struct {
+	PublicNetwork string `json:"public-network,omitempty" yaml:"public-network,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_nfs_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_nfs_volume_source.go
new file mode 100644
index 00000000..bbaeecf9
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_nfs_volume_source.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	NFSVolumeSourceType          = "nfsVolumeSource"
+	NFSVolumeSourceFieldPath     = "path"
+	NFSVolumeSourceFieldReadOnly = "readOnly"
+	NFSVolumeSourceFieldServer   = "server"
+)
+
+type NFSVolumeSource struct {
+	Path     string `json:"path,omitempty" yaml:"path,omitempty"`
+	ReadOnly bool   `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+	Server   string `json:"server,omitempty" yaml:"server,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node.go
new file mode 100644
index 00000000..5f3ab577
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node.go
@@ -0,0 +1,231 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	NodeType                      = "node"
+	NodeFieldAllocatable          = "allocatable"
+	NodeFieldAnnotations          = "annotations"
+	NodeFieldAppliedNodeVersion   = "appliedNodeVersion"
+	NodeFieldCapacity             = "capacity"
+	NodeFieldClusterID            = "clusterId"
+	NodeFieldConditions           = "conditions"
+	NodeFieldControlPlane         = "controlPlane"
+	NodeFieldCreated              = "created"
+	NodeFieldCreatorID            = "creatorId"
+	NodeFieldCustomConfig         = "customConfig"
+	NodeFieldDescription          = "description"
+	NodeFieldDockerInfo           = "dockerInfo"
+	NodeFieldEtcd                 = "etcd"
+	NodeFieldExternalIPAddress    = "externalIpAddress"
+	NodeFieldHostname             = "hostname"
+	NodeFieldIPAddress            = "ipAddress"
+	NodeFieldImported             = "imported"
+	NodeFieldInfo                 = "info"
+	NodeFieldLabels               = "labels"
+	NodeFieldLimits               = "limits"
+	NodeFieldName                 = "name"
+	NodeFieldNamespaceId          = "namespaceId"
+	NodeFieldNodeName             = "nodeName"
+	NodeFieldNodePlan             = "nodePlan"
+	NodeFieldNodePoolID           = "nodePoolId"
+	NodeFieldNodeTaints           = "nodeTaints"
+	NodeFieldNodeTemplateID       = "nodeTemplateId"
+	NodeFieldOwnerReferences      = "ownerReferences"
+	NodeFieldPodCidr              = "podCidr"
+	NodeFieldPodCidrs             = "podCidrs"
+	NodeFieldProviderId           = "providerId"
+	NodeFieldPublicEndpoints      = "publicEndpoints"
+	NodeFieldRemoved              = "removed"
+	NodeFieldRequested            = "requested"
+	NodeFieldRequestedHostname    = "requestedHostname"
+	NodeFieldRuntimeHandlers      = "runtimeHandlers"
+	NodeFieldScaledownTime        = "scaledownTime"
+	NodeFieldSshUser              = "sshUser"
+	NodeFieldState                = "state"
+	NodeFieldTaints               = "taints"
+	NodeFieldTransitioning        = "transitioning"
+	NodeFieldTransitioningMessage = "transitioningMessage"
+	NodeFieldUUID                 = "uuid"
+	NodeFieldUnschedulable        = "unschedulable"
+	NodeFieldVolumesAttached      = "volumesAttached"
+	NodeFieldVolumesInUse         = "volumesInUse"
+	NodeFieldWorker               = "worker"
+)
+
+type Node struct {
+	types.Resource
+	Allocatable          map[string]string         `json:"allocatable,omitempty" yaml:"allocatable,omitempty"`
+	Annotations          map[string]string         `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	AppliedNodeVersion   int64                     `json:"appliedNodeVersion,omitempty" yaml:"appliedNodeVersion,omitempty"`
+	Capacity             map[string]string         `json:"capacity,omitempty" yaml:"capacity,omitempty"`
+	ClusterID            string                    `json:"clusterId,omitempty" yaml:"clusterId,omitempty"`
+	Conditions           []NodeCondition           `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	ControlPlane         bool                      `json:"controlPlane,omitempty" yaml:"controlPlane,omitempty"`
+	Created              string                    `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID            string                    `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	CustomConfig         *CustomConfig             `json:"customConfig,omitempty" yaml:"customConfig,omitempty"`
+	Description          string                    `json:"description,omitempty" yaml:"description,omitempty"`
+	DockerInfo           *DockerInfo               `json:"dockerInfo,omitempty" yaml:"dockerInfo,omitempty"`
+	Etcd                 bool                      `json:"etcd,omitempty" yaml:"etcd,omitempty"`
+	ExternalIPAddress    string                    `json:"externalIpAddress,omitempty" yaml:"externalIpAddress,omitempty"`
+	Hostname             string                    `json:"hostname,omitempty" yaml:"hostname,omitempty"`
+	IPAddress            string                    `json:"ipAddress,omitempty" yaml:"ipAddress,omitempty"`
+	Imported             bool                      `json:"imported,omitempty" yaml:"imported,omitempty"`
+	Info                 *NodeInfo                 `json:"info,omitempty" yaml:"info,omitempty"`
+	Labels               map[string]string         `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Limits               map[string]string         `json:"limits,omitempty" yaml:"limits,omitempty"`
+	Name                 string                    `json:"name,omitempty" yaml:"name,omitempty"`
+	NamespaceId          string                    `json:"namespaceId,omitempty" yaml:"namespaceId,omitempty"`
+	NodeName             string                    `json:"nodeName,omitempty" yaml:"nodeName,omitempty"`
+	NodePlan             *NodePlan                 `json:"nodePlan,omitempty" yaml:"nodePlan,omitempty"`
+	NodePoolID           string                    `json:"nodePoolId,omitempty" yaml:"nodePoolId,omitempty"`
+	NodeTaints           []Taint                   `json:"nodeTaints,omitempty" yaml:"nodeTaints,omitempty"`
+	NodeTemplateID       string                    `json:"nodeTemplateId,omitempty" yaml:"nodeTemplateId,omitempty"`
+	OwnerReferences      []OwnerReference          `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	PodCidr              string                    `json:"podCidr,omitempty" yaml:"podCidr,omitempty"`
+	PodCidrs             []string                  `json:"podCidrs,omitempty" yaml:"podCidrs,omitempty"`
+	ProviderId           string                    `json:"providerId,omitempty" yaml:"providerId,omitempty"`
+	PublicEndpoints      []PublicEndpoint          `json:"publicEndpoints,omitempty" yaml:"publicEndpoints,omitempty"`
+	Removed              string                    `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Requested            map[string]string         `json:"requested,omitempty" yaml:"requested,omitempty"`
+	RequestedHostname    string                    `json:"requestedHostname,omitempty" yaml:"requestedHostname,omitempty"`
+	RuntimeHandlers      []NodeRuntimeHandler      `json:"runtimeHandlers,omitempty" yaml:"runtimeHandlers,omitempty"`
+	ScaledownTime        string                    `json:"scaledownTime,omitempty" yaml:"scaledownTime,omitempty"`
+	SshUser              string                    `json:"sshUser,omitempty" yaml:"sshUser,omitempty"`
+	State                string                    `json:"state,omitempty" yaml:"state,omitempty"`
+	Taints               []Taint                   `json:"taints,omitempty" yaml:"taints,omitempty"`
+	Transitioning        string                    `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage string                    `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                 string                    `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	Unschedulable        bool                      `json:"unschedulable,omitempty" yaml:"unschedulable,omitempty"`
+	VolumesAttached      map[string]AttachedVolume `json:"volumesAttached,omitempty" yaml:"volumesAttached,omitempty"`
+	VolumesInUse         []string                  `json:"volumesInUse,omitempty" yaml:"volumesInUse,omitempty"`
+	Worker               bool                      `json:"worker,omitempty" yaml:"worker,omitempty"`
+}
+
+type NodeCollection struct {
+	types.Collection
+	Data   []Node `json:"data,omitempty"`
+	client *NodeClient
+}
+
+type NodeClient struct {
+	apiClient *Client
+}
+
+type NodeOperations interface {
+	List(opts *types.ListOpts) (*NodeCollection, error)
+	ListAll(opts *types.ListOpts) (*NodeCollection, error)
+	Create(opts *Node) (*Node, error)
+	Update(existing *Node, updates interface{}) (*Node, error)
+	Replace(existing *Node) (*Node, error)
+	ByID(id string) (*Node, error)
+	Delete(container *Node) error
+
+	ActionCordon(resource *Node) error
+
+	ActionDrain(resource *Node, input *NodeDrainInput) error
+
+	ActionScaledown(resource *Node) error
+
+	ActionStopDrain(resource *Node) error
+
+	ActionUncordon(resource *Node) error
+}
+
+func newNodeClient(apiClient *Client) *NodeClient {
+	return &NodeClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *NodeClient) Create(container *Node) (*Node, error) {
+	resp := &Node{}
+	err := c.apiClient.Ops.DoCreate(NodeType, container, resp)
+	return resp, err
+}
+
+func (c *NodeClient) Update(existing *Node, updates interface{}) (*Node, error) {
+	resp := &Node{}
+	err := c.apiClient.Ops.DoUpdate(NodeType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *NodeClient) Replace(obj *Node) (*Node, error) {
+	resp := &Node{}
+	err := c.apiClient.Ops.DoReplace(NodeType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *NodeClient) List(opts *types.ListOpts) (*NodeCollection, error) {
+	resp := &NodeCollection{}
+	err := c.apiClient.Ops.DoList(NodeType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *NodeClient) ListAll(opts *types.ListOpts) (*NodeCollection, error) {
+	resp := &NodeCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *NodeCollection) Next() (*NodeCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &NodeCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *NodeClient) ByID(id string) (*Node, error) {
+	resp := &Node{}
+	err := c.apiClient.Ops.DoByID(NodeType, id, resp)
+	return resp, err
+}
+
+func (c *NodeClient) Delete(container *Node) error {
+	return c.apiClient.Ops.DoResourceDelete(NodeType, &container.Resource)
+}
+
+func (c *NodeClient) ActionCordon(resource *Node) error {
+	err := c.apiClient.Ops.DoAction(NodeType, "cordon", &resource.Resource, nil, nil)
+	return err
+}
+
+func (c *NodeClient) ActionDrain(resource *Node, input *NodeDrainInput) error {
+	err := c.apiClient.Ops.DoAction(NodeType, "drain", &resource.Resource, input, nil)
+	return err
+}
+
+func (c *NodeClient) ActionScaledown(resource *Node) error {
+	err := c.apiClient.Ops.DoAction(NodeType, "scaledown", &resource.Resource, nil, nil)
+	return err
+}
+
+func (c *NodeClient) ActionStopDrain(resource *Node) error {
+	err := c.apiClient.Ops.DoAction(NodeType, "stopDrain", &resource.Resource, nil, nil)
+	return err
+}
+
+func (c *NodeClient) ActionUncordon(resource *Node) error {
+	err := c.apiClient.Ops.DoAction(NodeType, "uncordon", &resource.Resource, nil, nil)
+	return err
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_address.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_address.go
new file mode 100644
index 00000000..972c2480
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_address.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	NodeAddressType         = "nodeAddress"
+	NodeAddressFieldAddress = "address"
+	NodeAddressFieldType    = "type"
+)
+
+type NodeAddress struct {
+	Address string `json:"address,omitempty" yaml:"address,omitempty"`
+	Type    string `json:"type,omitempty" yaml:"type,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_affinity.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_affinity.go
new file mode 100644
index 00000000..c1563fff
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_affinity.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	NodeAffinityType                                                 = "nodeAffinity"
+	NodeAffinityFieldPreferredDuringSchedulingIgnoredDuringExecution = "preferredDuringSchedulingIgnoredDuringExecution"
+	NodeAffinityFieldRequiredDuringSchedulingIgnoredDuringExecution  = "requiredDuringSchedulingIgnoredDuringExecution"
+)
+
+type NodeAffinity struct {
+	PreferredDuringSchedulingIgnoredDuringExecution []PreferredSchedulingTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty" yaml:"preferredDuringSchedulingIgnoredDuringExecution,omitempty"`
+	RequiredDuringSchedulingIgnoredDuringExecution  *NodeSelector             `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty" yaml:"requiredDuringSchedulingIgnoredDuringExecution,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_condition.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_condition.go
new file mode 100644
index 00000000..a07010ac
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_condition.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	NodeConditionType                    = "nodeCondition"
+	NodeConditionFieldLastHeartbeatTime  = "lastHeartbeatTime"
+	NodeConditionFieldLastTransitionTime = "lastTransitionTime"
+	NodeConditionFieldMessage            = "message"
+	NodeConditionFieldReason             = "reason"
+	NodeConditionFieldStatus             = "status"
+	NodeConditionFieldType               = "type"
+)
+
+type NodeCondition struct {
+	LastHeartbeatTime  string `json:"lastHeartbeatTime,omitempty" yaml:"lastHeartbeatTime,omitempty"`
+	LastTransitionTime string `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty"`
+	Message            string `json:"message,omitempty" yaml:"message,omitempty"`
+	Reason             string `json:"reason,omitempty" yaml:"reason,omitempty"`
+	Status             string `json:"status,omitempty" yaml:"status,omitempty"`
+	Type               string `json:"type,omitempty" yaml:"type,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_config_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_config_source.go
new file mode 100644
index 00000000..fc84f349
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_config_source.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	NodeConfigSourceType           = "nodeConfigSource"
+	NodeConfigSourceFieldConfigMap = "configMap"
+)
+
+type NodeConfigSource struct {
+	ConfigMap *ConfigMapNodeConfigSource `json:"configMap,omitempty" yaml:"configMap,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_config_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_config_status.go
new file mode 100644
index 00000000..919108f3
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_config_status.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	NodeConfigStatusType               = "nodeConfigStatus"
+	NodeConfigStatusFieldActive        = "active"
+	NodeConfigStatusFieldAssigned      = "assigned"
+	NodeConfigStatusFieldError         = "error"
+	NodeConfigStatusFieldLastKnownGood = "lastKnownGood"
+)
+
+type NodeConfigStatus struct {
+	Active        *NodeConfigSource `json:"active,omitempty" yaml:"active,omitempty"`
+	Assigned      *NodeConfigSource `json:"assigned,omitempty" yaml:"assigned,omitempty"`
+	Error         string            `json:"error,omitempty" yaml:"error,omitempty"`
+	LastKnownGood *NodeConfigSource `json:"lastKnownGood,omitempty" yaml:"lastKnownGood,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_daemon_endpoints.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_daemon_endpoints.go
new file mode 100644
index 00000000..57da90d5
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_daemon_endpoints.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	NodeDaemonEndpointsType                 = "nodeDaemonEndpoints"
+	NodeDaemonEndpointsFieldKubeletEndpoint = "kubeletEndpoint"
+)
+
+type NodeDaemonEndpoints struct {
+	KubeletEndpoint *DaemonEndpoint `json:"kubeletEndpoint,omitempty" yaml:"kubeletEndpoint,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_drain_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_drain_input.go
new file mode 100644
index 00000000..974ac7e6
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_drain_input.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	NodeDrainInputType                  = "nodeDrainInput"
+	NodeDrainInputFieldDeleteLocalData  = "deleteLocalData"
+	NodeDrainInputFieldForce            = "force"
+	NodeDrainInputFieldGracePeriod      = "gracePeriod"
+	NodeDrainInputFieldIgnoreDaemonSets = "ignoreDaemonSets"
+	NodeDrainInputFieldTimeout          = "timeout"
+)
+
+type NodeDrainInput struct {
+	DeleteLocalData  bool  `json:"deleteLocalData,omitempty" yaml:"deleteLocalData,omitempty"`
+	Force            bool  `json:"force,omitempty" yaml:"force,omitempty"`
+	GracePeriod      int64 `json:"gracePeriod,omitempty" yaml:"gracePeriod,omitempty"`
+	IgnoreDaemonSets *bool `json:"ignoreDaemonSets,omitempty" yaml:"ignoreDaemonSets,omitempty"`
+	Timeout          int64 `json:"timeout,omitempty" yaml:"timeout,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_driver.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_driver.go
new file mode 100644
index 00000000..4e0cefd0
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_driver.go
@@ -0,0 +1,160 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	NodeDriverType                      = "nodeDriver"
+	NodeDriverFieldActive               = "active"
+	NodeDriverFieldAddCloudCredential   = "addCloudCredential"
+	NodeDriverFieldAnnotations          = "annotations"
+	NodeDriverFieldBuiltin              = "builtin"
+	NodeDriverFieldChecksum             = "checksum"
+	NodeDriverFieldCreated              = "created"
+	NodeDriverFieldCreatorID            = "creatorId"
+	NodeDriverFieldDescription          = "description"
+	NodeDriverFieldExternalID           = "externalId"
+	NodeDriverFieldLabels               = "labels"
+	NodeDriverFieldName                 = "name"
+	NodeDriverFieldOwnerReferences      = "ownerReferences"
+	NodeDriverFieldRemoved              = "removed"
+	NodeDriverFieldState                = "state"
+	NodeDriverFieldStatus               = "status"
+	NodeDriverFieldTransitioning        = "transitioning"
+	NodeDriverFieldTransitioningMessage = "transitioningMessage"
+	NodeDriverFieldUIURL                = "uiUrl"
+	NodeDriverFieldURL                  = "url"
+	NodeDriverFieldUUID                 = "uuid"
+	NodeDriverFieldWhitelistDomains     = "whitelistDomains"
+)
+
+type NodeDriver struct {
+	types.Resource
+	Active               bool              `json:"active,omitempty" yaml:"active,omitempty"`
+	AddCloudCredential   bool              `json:"addCloudCredential,omitempty" yaml:"addCloudCredential,omitempty"`
+	Annotations          map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Builtin              bool              `json:"builtin,omitempty" yaml:"builtin,omitempty"`
+	Checksum             string            `json:"checksum,omitempty" yaml:"checksum,omitempty"`
+	Created              string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID            string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Description          string            `json:"description,omitempty" yaml:"description,omitempty"`
+	ExternalID           string            `json:"externalId,omitempty" yaml:"externalId,omitempty"`
+	Labels               map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                 string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences      []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed              string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	State                string            `json:"state,omitempty" yaml:"state,omitempty"`
+	Status               *NodeDriverStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	Transitioning        string            `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage string            `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UIURL                string            `json:"uiUrl,omitempty" yaml:"uiUrl,omitempty"`
+	URL                  string            `json:"url,omitempty" yaml:"url,omitempty"`
+	UUID                 string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	WhitelistDomains     []string          `json:"whitelistDomains,omitempty" yaml:"whitelistDomains,omitempty"`
+}
+
+type NodeDriverCollection struct {
+	types.Collection
+	Data   []NodeDriver `json:"data,omitempty"`
+	client *NodeDriverClient
+}
+
+type NodeDriverClient struct {
+	apiClient *Client
+}
+
+type NodeDriverOperations interface {
+	List(opts *types.ListOpts) (*NodeDriverCollection, error)
+	ListAll(opts *types.ListOpts) (*NodeDriverCollection, error)
+	Create(opts *NodeDriver) (*NodeDriver, error)
+	Update(existing *NodeDriver, updates interface{}) (*NodeDriver, error)
+	Replace(existing *NodeDriver) (*NodeDriver, error)
+	ByID(id string) (*NodeDriver, error)
+	Delete(container *NodeDriver) error
+
+	ActionActivate(resource *NodeDriver) (*NodeDriver, error)
+
+	ActionDeactivate(resource *NodeDriver) (*NodeDriver, error)
+}
+
+func newNodeDriverClient(apiClient *Client) *NodeDriverClient {
+	return &NodeDriverClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *NodeDriverClient) Create(container *NodeDriver) (*NodeDriver, error) {
+	resp := &NodeDriver{}
+	err := c.apiClient.Ops.DoCreate(NodeDriverType, container, resp)
+	return resp, err
+}
+
+func (c *NodeDriverClient) Update(existing *NodeDriver, updates interface{}) (*NodeDriver, error) {
+	resp := &NodeDriver{}
+	err := c.apiClient.Ops.DoUpdate(NodeDriverType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *NodeDriverClient) Replace(obj *NodeDriver) (*NodeDriver, error) {
+	resp := &NodeDriver{}
+	err := c.apiClient.Ops.DoReplace(NodeDriverType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *NodeDriverClient) List(opts *types.ListOpts) (*NodeDriverCollection, error) {
+	resp := &NodeDriverCollection{}
+	err := c.apiClient.Ops.DoList(NodeDriverType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *NodeDriverClient) ListAll(opts *types.ListOpts) (*NodeDriverCollection, error) {
+	resp := &NodeDriverCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *NodeDriverCollection) Next() (*NodeDriverCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &NodeDriverCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *NodeDriverClient) ByID(id string) (*NodeDriver, error) {
+	resp := &NodeDriver{}
+	err := c.apiClient.Ops.DoByID(NodeDriverType, id, resp)
+	return resp, err
+}
+
+func (c *NodeDriverClient) Delete(container *NodeDriver) error {
+	return c.apiClient.Ops.DoResourceDelete(NodeDriverType, &container.Resource)
+}
+
+func (c *NodeDriverClient) ActionActivate(resource *NodeDriver) (*NodeDriver, error) {
+	resp := &NodeDriver{}
+	err := c.apiClient.Ops.DoAction(NodeDriverType, "activate", &resource.Resource, nil, resp)
+	return resp, err
+}
+
+func (c *NodeDriverClient) ActionDeactivate(resource *NodeDriver) (*NodeDriver, error) {
+	resp := &NodeDriver{}
+	err := c.apiClient.Ops.DoAction(NodeDriverType, "deactivate", &resource.Resource, nil, resp)
+	return resp, err
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_driver_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_driver_spec.go
new file mode 100644
index 00000000..d8a64cb2
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_driver_spec.go
@@ -0,0 +1,28 @@
+package client
+
+const (
+	NodeDriverSpecType                    = "nodeDriverSpec"
+	NodeDriverSpecFieldActive             = "active"
+	NodeDriverSpecFieldAddCloudCredential = "addCloudCredential"
+	NodeDriverSpecFieldBuiltin            = "builtin"
+	NodeDriverSpecFieldChecksum           = "checksum"
+	NodeDriverSpecFieldDescription        = "description"
+	NodeDriverSpecFieldDisplayName        = "displayName"
+	NodeDriverSpecFieldExternalID         = "externalId"
+	NodeDriverSpecFieldUIURL              = "uiUrl"
+	NodeDriverSpecFieldURL                = "url"
+	NodeDriverSpecFieldWhitelistDomains   = "whitelistDomains"
+)
+
+type NodeDriverSpec struct {
+	Active             bool     `json:"active,omitempty" yaml:"active,omitempty"`
+	AddCloudCredential bool     `json:"addCloudCredential,omitempty" yaml:"addCloudCredential,omitempty"`
+	Builtin            bool     `json:"builtin,omitempty" yaml:"builtin,omitempty"`
+	Checksum           string   `json:"checksum,omitempty" yaml:"checksum,omitempty"`
+	Description        string   `json:"description,omitempty" yaml:"description,omitempty"`
+	DisplayName        string   `json:"displayName,omitempty" yaml:"displayName,omitempty"`
+	ExternalID         string   `json:"externalId,omitempty" yaml:"externalId,omitempty"`
+	UIURL              string   `json:"uiUrl,omitempty" yaml:"uiUrl,omitempty"`
+	URL                string   `json:"url,omitempty" yaml:"url,omitempty"`
+	WhitelistDomains   []string `json:"whitelistDomains,omitempty" yaml:"whitelistDomains,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_driver_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_driver_status.go
new file mode 100644
index 00000000..971f6bab
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_driver_status.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	NodeDriverStatusType                             = "nodeDriverStatus"
+	NodeDriverStatusFieldAppliedChecksum             = "appliedChecksum"
+	NodeDriverStatusFieldAppliedDockerMachineVersion = "appliedDockerMachineVersion"
+	NodeDriverStatusFieldAppliedURL                  = "appliedURL"
+	NodeDriverStatusFieldConditions                  = "conditions"
+)
+
+type NodeDriverStatus struct {
+	AppliedChecksum             string      `json:"appliedChecksum,omitempty" yaml:"appliedChecksum,omitempty"`
+	AppliedDockerMachineVersion string      `json:"appliedDockerMachineVersion,omitempty" yaml:"appliedDockerMachineVersion,omitempty"`
+	AppliedURL                  string      `json:"appliedURL,omitempty" yaml:"appliedURL,omitempty"`
+	Conditions                  []Condition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_group.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_group.go
new file mode 100644
index 00000000..733983a6
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_group.go
@@ -0,0 +1,48 @@
+package client
+
+const (
+	NodeGroupType                      = "nodeGroup"
+	NodeGroupFieldArm                  = "arm"
+	NodeGroupFieldDesiredSize          = "desiredSize"
+	NodeGroupFieldDiskSize             = "diskSize"
+	NodeGroupFieldEc2SshKey            = "ec2SshKey"
+	NodeGroupFieldGpu                  = "gpu"
+	NodeGroupFieldImageID              = "imageId"
+	NodeGroupFieldInstanceType         = "instanceType"
+	NodeGroupFieldLabels               = "labels"
+	NodeGroupFieldLaunchTemplate       = "launchTemplate"
+	NodeGroupFieldMaxSize              = "maxSize"
+	NodeGroupFieldMinSize              = "minSize"
+	NodeGroupFieldNodeRole             = "nodeRole"
+	NodeGroupFieldNodegroupName        = "nodegroupName"
+	NodeGroupFieldRequestSpotInstances = "requestSpotInstances"
+	NodeGroupFieldResourceTags         = "resourceTags"
+	NodeGroupFieldSpotInstanceTypes    = "spotInstanceTypes"
+	NodeGroupFieldSubnets              = "subnets"
+	NodeGroupFieldTags                 = "tags"
+	NodeGroupFieldUserData             = "userData"
+	NodeGroupFieldVersion              = "version"
+)
+
+type NodeGroup struct {
+	Arm                  *bool             `json:"arm,omitempty" yaml:"arm,omitempty"`
+	DesiredSize          *int64            `json:"desiredSize,omitempty" yaml:"desiredSize,omitempty"`
+	DiskSize             *int64            `json:"diskSize,omitempty" yaml:"diskSize,omitempty"`
+	Ec2SshKey            *string           `json:"ec2SshKey,omitempty" yaml:"ec2SshKey,omitempty"`
+	Gpu                  *bool             `json:"gpu,omitempty" yaml:"gpu,omitempty"`
+	ImageID              *string           `json:"imageId,omitempty" yaml:"imageId,omitempty"`
+	InstanceType         *string           `json:"instanceType,omitempty" yaml:"instanceType,omitempty"`
+	Labels               map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	LaunchTemplate       *LaunchTemplate   `json:"launchTemplate,omitempty" yaml:"launchTemplate,omitempty"`
+	MaxSize              *int64            `json:"maxSize,omitempty" yaml:"maxSize,omitempty"`
+	MinSize              *int64            `json:"minSize,omitempty" yaml:"minSize,omitempty"`
+	NodeRole             *string           `json:"nodeRole,omitempty" yaml:"nodeRole,omitempty"`
+	NodegroupName        *string           `json:"nodegroupName,omitempty" yaml:"nodegroupName,omitempty"`
+	RequestSpotInstances *bool             `json:"requestSpotInstances,omitempty" yaml:"requestSpotInstances,omitempty"`
+	ResourceTags         map[string]string `json:"resourceTags,omitempty" yaml:"resourceTags,omitempty"`
+	SpotInstanceTypes    []string          `json:"spotInstanceTypes,omitempty" yaml:"spotInstanceTypes,omitempty"`
+	Subnets              []string          `json:"subnets,omitempty" yaml:"subnets,omitempty"`
+	Tags                 map[string]string `json:"tags,omitempty" yaml:"tags,omitempty"`
+	UserData             *string           `json:"userData,omitempty" yaml:"userData,omitempty"`
+	Version              *string           `json:"version,omitempty" yaml:"version,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_info.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_info.go
new file mode 100644
index 00000000..d3d8ac45
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_info.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	NodeInfoType            = "nodeInfo"
+	NodeInfoFieldCPU        = "cpu"
+	NodeInfoFieldKubernetes = "kubernetes"
+	NodeInfoFieldMemory     = "memory"
+	NodeInfoFieldOS         = "os"
+)
+
+type NodeInfo struct {
+	CPU        *CPUInfo        `json:"cpu,omitempty" yaml:"cpu,omitempty"`
+	Kubernetes *KubernetesInfo `json:"kubernetes,omitempty" yaml:"kubernetes,omitempty"`
+	Memory     *MemoryInfo     `json:"memory,omitempty" yaml:"memory,omitempty"`
+	OS         *OSInfo         `json:"os,omitempty" yaml:"os,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_plan.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_plan.go
new file mode 100644
index 00000000..4bf3c78a
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_plan.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	NodePlanType                    = "nodePlan"
+	NodePlanFieldAgentCheckInterval = "agentCheckInterval"
+	NodePlanFieldPlan               = "plan"
+	NodePlanFieldVersion            = "version"
+)
+
+type NodePlan struct {
+	AgentCheckInterval int64              `json:"agentCheckInterval,omitempty" yaml:"agentCheckInterval,omitempty"`
+	Plan               *RKEConfigNodePlan `json:"plan,omitempty" yaml:"plan,omitempty"`
+	Version            int64              `json:"version,omitempty" yaml:"version,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_pool.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_pool.go
new file mode 100644
index 00000000..345acd27
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_pool.go
@@ -0,0 +1,156 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	NodePoolType                         = "nodePool"
+	NodePoolFieldAnnotations             = "annotations"
+	NodePoolFieldClusterID               = "clusterId"
+	NodePoolFieldControlPlane            = "controlPlane"
+	NodePoolFieldCreated                 = "created"
+	NodePoolFieldCreatorID               = "creatorId"
+	NodePoolFieldDeleteNotReadyAfterSecs = "deleteNotReadyAfterSecs"
+	NodePoolFieldDisplayName             = "displayName"
+	NodePoolFieldDrainBeforeDelete       = "drainBeforeDelete"
+	NodePoolFieldDriver                  = "driver"
+	NodePoolFieldEtcd                    = "etcd"
+	NodePoolFieldHostnamePrefix          = "hostnamePrefix"
+	NodePoolFieldLabels                  = "labels"
+	NodePoolFieldName                    = "name"
+	NodePoolFieldNamespaceId             = "namespaceId"
+	NodePoolFieldNodeAnnotations         = "nodeAnnotations"
+	NodePoolFieldNodeLabels              = "nodeLabels"
+	NodePoolFieldNodeTaints              = "nodeTaints"
+	NodePoolFieldNodeTemplateID          = "nodeTemplateId"
+	NodePoolFieldOwnerReferences         = "ownerReferences"
+	NodePoolFieldQuantity                = "quantity"
+	NodePoolFieldRemoved                 = "removed"
+	NodePoolFieldState                   = "state"
+	NodePoolFieldStatus                  = "status"
+	NodePoolFieldTransitioning           = "transitioning"
+	NodePoolFieldTransitioningMessage    = "transitioningMessage"
+	NodePoolFieldUUID                    = "uuid"
+	NodePoolFieldWorker                  = "worker"
+)
+
+type NodePool struct {
+	types.Resource
+	Annotations             map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	ClusterID               string            `json:"clusterId,omitempty" yaml:"clusterId,omitempty"`
+	ControlPlane            bool              `json:"controlPlane,omitempty" yaml:"controlPlane,omitempty"`
+	Created                 string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID               string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	DeleteNotReadyAfterSecs int64             `json:"deleteNotReadyAfterSecs,omitempty" yaml:"deleteNotReadyAfterSecs,omitempty"`
+	DisplayName             string            `json:"displayName,omitempty" yaml:"displayName,omitempty"`
+	DrainBeforeDelete       bool              `json:"drainBeforeDelete,omitempty" yaml:"drainBeforeDelete,omitempty"`
+	Driver                  string            `json:"driver,omitempty" yaml:"driver,omitempty"`
+	Etcd                    bool              `json:"etcd,omitempty" yaml:"etcd,omitempty"`
+	HostnamePrefix          string            `json:"hostnamePrefix,omitempty" yaml:"hostnamePrefix,omitempty"`
+	Labels                  map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                    string            `json:"name,omitempty" yaml:"name,omitempty"`
+	NamespaceId             string            `json:"namespaceId,omitempty" yaml:"namespaceId,omitempty"`
+	NodeAnnotations         map[string]string `json:"nodeAnnotations,omitempty" yaml:"nodeAnnotations,omitempty"`
+	NodeLabels              map[string]string `json:"nodeLabels,omitempty" yaml:"nodeLabels,omitempty"`
+	NodeTaints              []Taint           `json:"nodeTaints,omitempty" yaml:"nodeTaints,omitempty"`
+	NodeTemplateID          string            `json:"nodeTemplateId,omitempty" yaml:"nodeTemplateId,omitempty"`
+	OwnerReferences         []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Quantity                int64             `json:"quantity,omitempty" yaml:"quantity,omitempty"`
+	Removed                 string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	State                   string            `json:"state,omitempty" yaml:"state,omitempty"`
+	Status                  *NodePoolStatus   `json:"status,omitempty" yaml:"status,omitempty"`
+	Transitioning           string            `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage    string            `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                    string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	Worker                  bool              `json:"worker,omitempty" yaml:"worker,omitempty"`
+}
+
+type NodePoolCollection struct {
+	types.Collection
+	Data   []NodePool `json:"data,omitempty"`
+	client *NodePoolClient
+}
+
+type NodePoolClient struct {
+	apiClient *Client
+}
+
+type NodePoolOperations interface {
+	List(opts *types.ListOpts) (*NodePoolCollection, error)
+	ListAll(opts *types.ListOpts) (*NodePoolCollection, error)
+	Create(opts *NodePool) (*NodePool, error)
+	Update(existing *NodePool, updates interface{}) (*NodePool, error)
+	Replace(existing *NodePool) (*NodePool, error)
+	ByID(id string) (*NodePool, error)
+	Delete(container *NodePool) error
+}
+
+func newNodePoolClient(apiClient *Client) *NodePoolClient {
+	return &NodePoolClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *NodePoolClient) Create(container *NodePool) (*NodePool, error) {
+	resp := &NodePool{}
+	err := c.apiClient.Ops.DoCreate(NodePoolType, container, resp)
+	return resp, err
+}
+
+func (c *NodePoolClient) Update(existing *NodePool, updates interface{}) (*NodePool, error) {
+	resp := &NodePool{}
+	err := c.apiClient.Ops.DoUpdate(NodePoolType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *NodePoolClient) Replace(obj *NodePool) (*NodePool, error) {
+	resp := &NodePool{}
+	err := c.apiClient.Ops.DoReplace(NodePoolType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *NodePoolClient) List(opts *types.ListOpts) (*NodePoolCollection, error) {
+	resp := &NodePoolCollection{}
+	err := c.apiClient.Ops.DoList(NodePoolType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *NodePoolClient) ListAll(opts *types.ListOpts) (*NodePoolCollection, error) {
+	resp := &NodePoolCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *NodePoolCollection) Next() (*NodePoolCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &NodePoolCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *NodePoolClient) ByID(id string) (*NodePool, error) {
+	resp := &NodePool{}
+	err := c.apiClient.Ops.DoByID(NodePoolType, id, resp)
+	return resp, err
+}
+
+func (c *NodePoolClient) Delete(container *NodePool) error {
+	return c.apiClient.Ops.DoResourceDelete(NodePoolType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_pool_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_pool_spec.go
new file mode 100644
index 00000000..408463fc
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_pool_spec.go
@@ -0,0 +1,34 @@
+package client
+
+const (
+	NodePoolSpecType                         = "nodePoolSpec"
+	NodePoolSpecFieldClusterID               = "clusterId"
+	NodePoolSpecFieldControlPlane            = "controlPlane"
+	NodePoolSpecFieldDeleteNotReadyAfterSecs = "deleteNotReadyAfterSecs"
+	NodePoolSpecFieldDisplayName             = "displayName"
+	NodePoolSpecFieldDrainBeforeDelete       = "drainBeforeDelete"
+	NodePoolSpecFieldEtcd                    = "etcd"
+	NodePoolSpecFieldHostnamePrefix          = "hostnamePrefix"
+	NodePoolSpecFieldNodeAnnotations         = "nodeAnnotations"
+	NodePoolSpecFieldNodeLabels              = "nodeLabels"
+	NodePoolSpecFieldNodeTaints              = "nodeTaints"
+	NodePoolSpecFieldNodeTemplateID          = "nodeTemplateId"
+	NodePoolSpecFieldQuantity                = "quantity"
+	NodePoolSpecFieldWorker                  = "worker"
+)
+
+type NodePoolSpec struct {
+	ClusterID               string            `json:"clusterId,omitempty" yaml:"clusterId,omitempty"`
+	ControlPlane            bool              `json:"controlPlane,omitempty" yaml:"controlPlane,omitempty"`
+	DeleteNotReadyAfterSecs int64             `json:"deleteNotReadyAfterSecs,omitempty" yaml:"deleteNotReadyAfterSecs,omitempty"`
+	DisplayName             string            `json:"displayName,omitempty" yaml:"displayName,omitempty"`
+	DrainBeforeDelete       bool              `json:"drainBeforeDelete,omitempty" yaml:"drainBeforeDelete,omitempty"`
+	Etcd                    bool              `json:"etcd,omitempty" yaml:"etcd,omitempty"`
+	HostnamePrefix          string            `json:"hostnamePrefix,omitempty" yaml:"hostnamePrefix,omitempty"`
+	NodeAnnotations         map[string]string `json:"nodeAnnotations,omitempty" yaml:"nodeAnnotations,omitempty"`
+	NodeLabels              map[string]string `json:"nodeLabels,omitempty" yaml:"nodeLabels,omitempty"`
+	NodeTaints              []Taint           `json:"nodeTaints,omitempty" yaml:"nodeTaints,omitempty"`
+	NodeTemplateID          string            `json:"nodeTemplateId,omitempty" yaml:"nodeTemplateId,omitempty"`
+	Quantity                int64             `json:"quantity,omitempty" yaml:"quantity,omitempty"`
+	Worker                  bool              `json:"worker,omitempty" yaml:"worker,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_pool_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_pool_status.go
new file mode 100644
index 00000000..f5c7ed7d
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_pool_status.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	NodePoolStatusType            = "nodePoolStatus"
+	NodePoolStatusFieldConditions = "conditions"
+)
+
+type NodePoolStatus struct {
+	Conditions []Condition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_runtime_handler.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_runtime_handler.go
new file mode 100644
index 00000000..500e2c91
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_runtime_handler.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	NodeRuntimeHandlerType          = "nodeRuntimeHandler"
+	NodeRuntimeHandlerFieldFeatures = "features"
+	NodeRuntimeHandlerFieldName     = "name"
+)
+
+type NodeRuntimeHandler struct {
+	Features *NodeRuntimeHandlerFeatures `json:"features,omitempty" yaml:"features,omitempty"`
+	Name     string                      `json:"name,omitempty" yaml:"name,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_runtime_handler_features.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_runtime_handler_features.go
new file mode 100644
index 00000000..dda38dde
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_runtime_handler_features.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	NodeRuntimeHandlerFeaturesType                         = "nodeRuntimeHandlerFeatures"
+	NodeRuntimeHandlerFeaturesFieldRecursiveReadOnlyMounts = "recursiveReadOnlyMounts"
+)
+
+type NodeRuntimeHandlerFeatures struct {
+	RecursiveReadOnlyMounts *bool `json:"recursiveReadOnlyMounts,omitempty" yaml:"recursiveReadOnlyMounts,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_selector.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_selector.go
new file mode 100644
index 00000000..721a16f4
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_selector.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	NodeSelectorType                   = "nodeSelector"
+	NodeSelectorFieldNodeSelectorTerms = "nodeSelectorTerms"
+)
+
+type NodeSelector struct {
+	NodeSelectorTerms []NodeSelectorTerm `json:"nodeSelectorTerms,omitempty" yaml:"nodeSelectorTerms,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_selector_requirement.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_selector_requirement.go
new file mode 100644
index 00000000..9338a8c8
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_selector_requirement.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	NodeSelectorRequirementType          = "nodeSelectorRequirement"
+	NodeSelectorRequirementFieldKey      = "key"
+	NodeSelectorRequirementFieldOperator = "operator"
+	NodeSelectorRequirementFieldValues   = "values"
+)
+
+type NodeSelectorRequirement struct {
+	Key      string   `json:"key,omitempty" yaml:"key,omitempty"`
+	Operator string   `json:"operator,omitempty" yaml:"operator,omitempty"`
+	Values   []string `json:"values,omitempty" yaml:"values,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_selector_term.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_selector_term.go
new file mode 100644
index 00000000..11bf2562
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_selector_term.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	NodeSelectorTermType                  = "nodeSelectorTerm"
+	NodeSelectorTermFieldMatchExpressions = "matchExpressions"
+	NodeSelectorTermFieldMatchFields      = "matchFields"
+)
+
+type NodeSelectorTerm struct {
+	MatchExpressions []NodeSelectorRequirement `json:"matchExpressions,omitempty" yaml:"matchExpressions,omitempty"`
+	MatchFields      []NodeSelectorRequirement `json:"matchFields,omitempty" yaml:"matchFields,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_spec.go
new file mode 100644
index 00000000..f2f6eefe
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_spec.go
@@ -0,0 +1,50 @@
+package client
+
+const (
+	NodeSpecType                          = "nodeSpec"
+	NodeSpecFieldControlPlane             = "controlPlane"
+	NodeSpecFieldCustomConfig             = "customConfig"
+	NodeSpecFieldDescription              = "description"
+	NodeSpecFieldDesiredNodeTaints        = "desiredNodeTaints"
+	NodeSpecFieldDesiredNodeUnschedulable = "desiredNodeUnschedulable"
+	NodeSpecFieldDisplayName              = "displayName"
+	NodeSpecFieldEtcd                     = "etcd"
+	NodeSpecFieldImported                 = "imported"
+	NodeSpecFieldMetadataUpdate           = "metadataUpdate"
+	NodeSpecFieldNodeDrainInput           = "nodeDrainInput"
+	NodeSpecFieldNodePoolID               = "nodePoolId"
+	NodeSpecFieldNodeTemplateID           = "nodeTemplateId"
+	NodeSpecFieldPodCidr                  = "podCidr"
+	NodeSpecFieldPodCidrs                 = "podCidrs"
+	NodeSpecFieldProviderId               = "providerId"
+	NodeSpecFieldRequestedHostname        = "requestedHostname"
+	NodeSpecFieldScaledownTime            = "scaledownTime"
+	NodeSpecFieldTaints                   = "taints"
+	NodeSpecFieldUnschedulable            = "unschedulable"
+	NodeSpecFieldUpdateTaintsFromAPI      = "updateTaintsFromAPI"
+	NodeSpecFieldWorker                   = "worker"
+)
+
+type NodeSpec struct {
+	ControlPlane             bool            `json:"controlPlane,omitempty" yaml:"controlPlane,omitempty"`
+	CustomConfig             *CustomConfig   `json:"customConfig,omitempty" yaml:"customConfig,omitempty"`
+	Description              string          `json:"description,omitempty" yaml:"description,omitempty"`
+	DesiredNodeTaints        []Taint         `json:"desiredNodeTaints,omitempty" yaml:"desiredNodeTaints,omitempty"`
+	DesiredNodeUnschedulable string          `json:"desiredNodeUnschedulable,omitempty" yaml:"desiredNodeUnschedulable,omitempty"`
+	DisplayName              string          `json:"displayName,omitempty" yaml:"displayName,omitempty"`
+	Etcd                     bool            `json:"etcd,omitempty" yaml:"etcd,omitempty"`
+	Imported                 bool            `json:"imported,omitempty" yaml:"imported,omitempty"`
+	MetadataUpdate           *MetadataUpdate `json:"metadataUpdate,omitempty" yaml:"metadataUpdate,omitempty"`
+	NodeDrainInput           *NodeDrainInput `json:"nodeDrainInput,omitempty" yaml:"nodeDrainInput,omitempty"`
+	NodePoolID               string          `json:"nodePoolId,omitempty" yaml:"nodePoolId,omitempty"`
+	NodeTemplateID           string          `json:"nodeTemplateId,omitempty" yaml:"nodeTemplateId,omitempty"`
+	PodCidr                  string          `json:"podCidr,omitempty" yaml:"podCidr,omitempty"`
+	PodCidrs                 []string        `json:"podCidrs,omitempty" yaml:"podCidrs,omitempty"`
+	ProviderId               string          `json:"providerId,omitempty" yaml:"providerId,omitempty"`
+	RequestedHostname        string          `json:"requestedHostname,omitempty" yaml:"requestedHostname,omitempty"`
+	ScaledownTime            string          `json:"scaledownTime,omitempty" yaml:"scaledownTime,omitempty"`
+	Taints                   []Taint         `json:"taints,omitempty" yaml:"taints,omitempty"`
+	Unschedulable            bool            `json:"unschedulable,omitempty" yaml:"unschedulable,omitempty"`
+	UpdateTaintsFromAPI      *bool           `json:"updateTaintsFromAPI,omitempty" yaml:"updateTaintsFromAPI,omitempty"`
+	Worker                   bool            `json:"worker,omitempty" yaml:"worker,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_status.go
new file mode 100644
index 00000000..99a1754c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_status.go
@@ -0,0 +1,48 @@
+package client
+
+const (
+	NodeStatusType                    = "nodeStatus"
+	NodeStatusFieldAllocatable        = "allocatable"
+	NodeStatusFieldAppliedNodeVersion = "appliedNodeVersion"
+	NodeStatusFieldCapacity           = "capacity"
+	NodeStatusFieldConditions         = "conditions"
+	NodeStatusFieldDockerInfo         = "dockerInfo"
+	NodeStatusFieldExternalIPAddress  = "externalIpAddress"
+	NodeStatusFieldHostname           = "hostname"
+	NodeStatusFieldIPAddress          = "ipAddress"
+	NodeStatusFieldInfo               = "info"
+	NodeStatusFieldLimits             = "limits"
+	NodeStatusFieldNodeAnnotations    = "nodeAnnotations"
+	NodeStatusFieldNodeConfig         = "rkeNode"
+	NodeStatusFieldNodeLabels         = "nodeLabels"
+	NodeStatusFieldNodeName           = "nodeName"
+	NodeStatusFieldNodePlan           = "nodePlan"
+	NodeStatusFieldNodeTaints         = "nodeTaints"
+	NodeStatusFieldRequested          = "requested"
+	NodeStatusFieldRuntimeHandlers    = "runtimeHandlers"
+	NodeStatusFieldVolumesAttached    = "volumesAttached"
+	NodeStatusFieldVolumesInUse       = "volumesInUse"
+)
+
+type NodeStatus struct {
+	Allocatable        map[string]string         `json:"allocatable,omitempty" yaml:"allocatable,omitempty"`
+	AppliedNodeVersion int64                     `json:"appliedNodeVersion,omitempty" yaml:"appliedNodeVersion,omitempty"`
+	Capacity           map[string]string         `json:"capacity,omitempty" yaml:"capacity,omitempty"`
+	Conditions         []NodeCondition           `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	DockerInfo         *DockerInfo               `json:"dockerInfo,omitempty" yaml:"dockerInfo,omitempty"`
+	ExternalIPAddress  string                    `json:"externalIpAddress,omitempty" yaml:"externalIpAddress,omitempty"`
+	Hostname           string                    `json:"hostname,omitempty" yaml:"hostname,omitempty"`
+	IPAddress          string                    `json:"ipAddress,omitempty" yaml:"ipAddress,omitempty"`
+	Info               *NodeInfo                 `json:"info,omitempty" yaml:"info,omitempty"`
+	Limits             map[string]string         `json:"limits,omitempty" yaml:"limits,omitempty"`
+	NodeAnnotations    map[string]string         `json:"nodeAnnotations,omitempty" yaml:"nodeAnnotations,omitempty"`
+	NodeConfig         *RKEConfigNode            `json:"rkeNode,omitempty" yaml:"rkeNode,omitempty"`
+	NodeLabels         map[string]string         `json:"nodeLabels,omitempty" yaml:"nodeLabels,omitempty"`
+	NodeName           string                    `json:"nodeName,omitempty" yaml:"nodeName,omitempty"`
+	NodePlan           *NodePlan                 `json:"nodePlan,omitempty" yaml:"nodePlan,omitempty"`
+	NodeTaints         []Taint                   `json:"nodeTaints,omitempty" yaml:"nodeTaints,omitempty"`
+	Requested          map[string]string         `json:"requested,omitempty" yaml:"requested,omitempty"`
+	RuntimeHandlers    []NodeRuntimeHandler      `json:"runtimeHandlers,omitempty" yaml:"runtimeHandlers,omitempty"`
+	VolumesAttached    map[string]AttachedVolume `json:"volumesAttached,omitempty" yaml:"volumesAttached,omitempty"`
+	VolumesInUse       []string                  `json:"volumesInUse,omitempty" yaml:"volumesInUse,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_system_info.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_system_info.go
new file mode 100644
index 00000000..c5632f82
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_system_info.go
@@ -0,0 +1,28 @@
+package client
+
+const (
+	NodeSystemInfoType                         = "nodeSystemInfo"
+	NodeSystemInfoFieldArchitecture            = "architecture"
+	NodeSystemInfoFieldBootID                  = "bootID"
+	NodeSystemInfoFieldContainerRuntimeVersion = "containerRuntimeVersion"
+	NodeSystemInfoFieldKernelVersion           = "kernelVersion"
+	NodeSystemInfoFieldKubeProxyVersion        = "kubeProxyVersion"
+	NodeSystemInfoFieldKubeletVersion          = "kubeletVersion"
+	NodeSystemInfoFieldMachineID               = "machineID"
+	NodeSystemInfoFieldOSImage                 = "osImage"
+	NodeSystemInfoFieldOperatingSystem         = "operatingSystem"
+	NodeSystemInfoFieldSystemUUID              = "systemUUID"
+)
+
+type NodeSystemInfo struct {
+	Architecture            string `json:"architecture,omitempty" yaml:"architecture,omitempty"`
+	BootID                  string `json:"bootID,omitempty" yaml:"bootID,omitempty"`
+	ContainerRuntimeVersion string `json:"containerRuntimeVersion,omitempty" yaml:"containerRuntimeVersion,omitempty"`
+	KernelVersion           string `json:"kernelVersion,omitempty" yaml:"kernelVersion,omitempty"`
+	KubeProxyVersion        string `json:"kubeProxyVersion,omitempty" yaml:"kubeProxyVersion,omitempty"`
+	KubeletVersion          string `json:"kubeletVersion,omitempty" yaml:"kubeletVersion,omitempty"`
+	MachineID               string `json:"machineID,omitempty" yaml:"machineID,omitempty"`
+	OSImage                 string `json:"osImage,omitempty" yaml:"osImage,omitempty"`
+	OperatingSystem         string `json:"operatingSystem,omitempty" yaml:"operatingSystem,omitempty"`
+	SystemUUID              string `json:"systemUUID,omitempty" yaml:"systemUUID,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_template.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_template.go
new file mode 100644
index 00000000..bd6ce9c3
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_template.go
@@ -0,0 +1,160 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	NodeTemplateType                          = "nodeTemplate"
+	NodeTemplateFieldAnnotations              = "annotations"
+	NodeTemplateFieldAuthCertificateAuthority = "authCertificateAuthority"
+	NodeTemplateFieldAuthKey                  = "authKey"
+	NodeTemplateFieldCloudCredentialID        = "cloudCredentialId"
+	NodeTemplateFieldCreated                  = "created"
+	NodeTemplateFieldCreatorID                = "creatorId"
+	NodeTemplateFieldDescription              = "description"
+	NodeTemplateFieldDockerVersion            = "dockerVersion"
+	NodeTemplateFieldDriver                   = "driver"
+	NodeTemplateFieldEngineEnv                = "engineEnv"
+	NodeTemplateFieldEngineInsecureRegistry   = "engineInsecureRegistry"
+	NodeTemplateFieldEngineInstallURL         = "engineInstallURL"
+	NodeTemplateFieldEngineLabel              = "engineLabel"
+	NodeTemplateFieldEngineOpt                = "engineOpt"
+	NodeTemplateFieldEngineRegistryMirror     = "engineRegistryMirror"
+	NodeTemplateFieldEngineStorageDriver      = "engineStorageDriver"
+	NodeTemplateFieldLabels                   = "labels"
+	NodeTemplateFieldLogOpt                   = "logOpt"
+	NodeTemplateFieldName                     = "name"
+	NodeTemplateFieldNodeTaints               = "nodeTaints"
+	NodeTemplateFieldOwnerReferences          = "ownerReferences"
+	NodeTemplateFieldRemoved                  = "removed"
+	NodeTemplateFieldState                    = "state"
+	NodeTemplateFieldStatus                   = "status"
+	NodeTemplateFieldStorageOpt               = "storageOpt"
+	NodeTemplateFieldTransitioning            = "transitioning"
+	NodeTemplateFieldTransitioningMessage     = "transitioningMessage"
+	NodeTemplateFieldUUID                     = "uuid"
+	NodeTemplateFieldUseInternalIPAddress     = "useInternalIpAddress"
+)
+
+type NodeTemplate struct {
+	types.Resource
+	Annotations              map[string]string   `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	AuthCertificateAuthority string              `json:"authCertificateAuthority,omitempty" yaml:"authCertificateAuthority,omitempty"`
+	AuthKey                  string              `json:"authKey,omitempty" yaml:"authKey,omitempty"`
+	CloudCredentialID        string              `json:"cloudCredentialId,omitempty" yaml:"cloudCredentialId,omitempty"`
+	Created                  string              `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID                string              `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Description              string              `json:"description,omitempty" yaml:"description,omitempty"`
+	DockerVersion            string              `json:"dockerVersion,omitempty" yaml:"dockerVersion,omitempty"`
+	Driver                   string              `json:"driver,omitempty" yaml:"driver,omitempty"`
+	EngineEnv                map[string]string   `json:"engineEnv,omitempty" yaml:"engineEnv,omitempty"`
+	EngineInsecureRegistry   []string            `json:"engineInsecureRegistry,omitempty" yaml:"engineInsecureRegistry,omitempty"`
+	EngineInstallURL         string              `json:"engineInstallURL,omitempty" yaml:"engineInstallURL,omitempty"`
+	EngineLabel              map[string]string   `json:"engineLabel,omitempty" yaml:"engineLabel,omitempty"`
+	EngineOpt                map[string]string   `json:"engineOpt,omitempty" yaml:"engineOpt,omitempty"`
+	EngineRegistryMirror     []string            `json:"engineRegistryMirror,omitempty" yaml:"engineRegistryMirror,omitempty"`
+	EngineStorageDriver      string              `json:"engineStorageDriver,omitempty" yaml:"engineStorageDriver,omitempty"`
+	Labels                   map[string]string   `json:"labels,omitempty" yaml:"labels,omitempty"`
+	LogOpt                   map[string]string   `json:"logOpt,omitempty" yaml:"logOpt,omitempty"`
+	Name                     string              `json:"name,omitempty" yaml:"name,omitempty"`
+	NodeTaints               []Taint             `json:"nodeTaints,omitempty" yaml:"nodeTaints,omitempty"`
+	OwnerReferences          []OwnerReference    `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed                  string              `json:"removed,omitempty" yaml:"removed,omitempty"`
+	State                    string              `json:"state,omitempty" yaml:"state,omitempty"`
+	Status                   *NodeTemplateStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	StorageOpt               map[string]string   `json:"storageOpt,omitempty" yaml:"storageOpt,omitempty"`
+	Transitioning            string              `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage     string              `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                     string              `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UseInternalIPAddress     *bool               `json:"useInternalIpAddress,omitempty" yaml:"useInternalIpAddress,omitempty"`
+}
+
+type NodeTemplateCollection struct {
+	types.Collection
+	Data   []NodeTemplate `json:"data,omitempty"`
+	client *NodeTemplateClient
+}
+
+type NodeTemplateClient struct {
+	apiClient *Client
+}
+
+type NodeTemplateOperations interface {
+	List(opts *types.ListOpts) (*NodeTemplateCollection, error)
+	ListAll(opts *types.ListOpts) (*NodeTemplateCollection, error)
+	Create(opts *NodeTemplate) (*NodeTemplate, error)
+	Update(existing *NodeTemplate, updates interface{}) (*NodeTemplate, error)
+	Replace(existing *NodeTemplate) (*NodeTemplate, error)
+	ByID(id string) (*NodeTemplate, error)
+	Delete(container *NodeTemplate) error
+}
+
+func newNodeTemplateClient(apiClient *Client) *NodeTemplateClient {
+	return &NodeTemplateClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *NodeTemplateClient) Create(container *NodeTemplate) (*NodeTemplate, error) {
+	resp := &NodeTemplate{}
+	err := c.apiClient.Ops.DoCreate(NodeTemplateType, container, resp)
+	return resp, err
+}
+
+func (c *NodeTemplateClient) Update(existing *NodeTemplate, updates interface{}) (*NodeTemplate, error) {
+	resp := &NodeTemplate{}
+	err := c.apiClient.Ops.DoUpdate(NodeTemplateType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *NodeTemplateClient) Replace(obj *NodeTemplate) (*NodeTemplate, error) {
+	resp := &NodeTemplate{}
+	err := c.apiClient.Ops.DoReplace(NodeTemplateType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *NodeTemplateClient) List(opts *types.ListOpts) (*NodeTemplateCollection, error) {
+	resp := &NodeTemplateCollection{}
+	err := c.apiClient.Ops.DoList(NodeTemplateType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *NodeTemplateClient) ListAll(opts *types.ListOpts) (*NodeTemplateCollection, error) {
+	resp := &NodeTemplateCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *NodeTemplateCollection) Next() (*NodeTemplateCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &NodeTemplateCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *NodeTemplateClient) ByID(id string) (*NodeTemplate, error) {
+	resp := &NodeTemplate{}
+	err := c.apiClient.Ops.DoByID(NodeTemplateType, id, resp)
+	return resp, err
+}
+
+func (c *NodeTemplateClient) Delete(container *NodeTemplate) error {
+	return c.apiClient.Ops.DoResourceDelete(NodeTemplateType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_template_condition.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_template_condition.go
new file mode 100644
index 00000000..c3b3fe97
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_template_condition.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	NodeTemplateConditionType                    = "nodeTemplateCondition"
+	NodeTemplateConditionFieldLastTransitionTime = "lastTransitionTime"
+	NodeTemplateConditionFieldLastUpdateTime     = "lastUpdateTime"
+	NodeTemplateConditionFieldReason             = "reason"
+	NodeTemplateConditionFieldStatus             = "status"
+	NodeTemplateConditionFieldType               = "type"
+)
+
+type NodeTemplateCondition struct {
+	LastTransitionTime string `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty"`
+	LastUpdateTime     string `json:"lastUpdateTime,omitempty" yaml:"lastUpdateTime,omitempty"`
+	Reason             string `json:"reason,omitempty" yaml:"reason,omitempty"`
+	Status             string `json:"status,omitempty" yaml:"status,omitempty"`
+	Type               string `json:"type,omitempty" yaml:"type,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_template_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_template_spec.go
new file mode 100644
index 00000000..e9307220
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_template_spec.go
@@ -0,0 +1,44 @@
+package client
+
+const (
+	NodeTemplateSpecType                          = "nodeTemplateSpec"
+	NodeTemplateSpecFieldAuthCertificateAuthority = "authCertificateAuthority"
+	NodeTemplateSpecFieldAuthKey                  = "authKey"
+	NodeTemplateSpecFieldCloudCredentialID        = "cloudCredentialId"
+	NodeTemplateSpecFieldDescription              = "description"
+	NodeTemplateSpecFieldDisplayName              = "displayName"
+	NodeTemplateSpecFieldDockerVersion            = "dockerVersion"
+	NodeTemplateSpecFieldDriver                   = "driver"
+	NodeTemplateSpecFieldEngineEnv                = "engineEnv"
+	NodeTemplateSpecFieldEngineInsecureRegistry   = "engineInsecureRegistry"
+	NodeTemplateSpecFieldEngineInstallURL         = "engineInstallURL"
+	NodeTemplateSpecFieldEngineLabel              = "engineLabel"
+	NodeTemplateSpecFieldEngineOpt                = "engineOpt"
+	NodeTemplateSpecFieldEngineRegistryMirror     = "engineRegistryMirror"
+	NodeTemplateSpecFieldEngineStorageDriver      = "engineStorageDriver"
+	NodeTemplateSpecFieldLogOpt                   = "logOpt"
+	NodeTemplateSpecFieldNodeTaints               = "nodeTaints"
+	NodeTemplateSpecFieldStorageOpt               = "storageOpt"
+	NodeTemplateSpecFieldUseInternalIPAddress     = "useInternalIpAddress"
+)
+
+type NodeTemplateSpec struct {
+	AuthCertificateAuthority string            `json:"authCertificateAuthority,omitempty" yaml:"authCertificateAuthority,omitempty"`
+	AuthKey                  string            `json:"authKey,omitempty" yaml:"authKey,omitempty"`
+	CloudCredentialID        string            `json:"cloudCredentialId,omitempty" yaml:"cloudCredentialId,omitempty"`
+	Description              string            `json:"description,omitempty" yaml:"description,omitempty"`
+	DisplayName              string            `json:"displayName,omitempty" yaml:"displayName,omitempty"`
+	DockerVersion            string            `json:"dockerVersion,omitempty" yaml:"dockerVersion,omitempty"`
+	Driver                   string            `json:"driver,omitempty" yaml:"driver,omitempty"`
+	EngineEnv                map[string]string `json:"engineEnv,omitempty" yaml:"engineEnv,omitempty"`
+	EngineInsecureRegistry   []string          `json:"engineInsecureRegistry,omitempty" yaml:"engineInsecureRegistry,omitempty"`
+	EngineInstallURL         string            `json:"engineInstallURL,omitempty" yaml:"engineInstallURL,omitempty"`
+	EngineLabel              map[string]string `json:"engineLabel,omitempty" yaml:"engineLabel,omitempty"`
+	EngineOpt                map[string]string `json:"engineOpt,omitempty" yaml:"engineOpt,omitempty"`
+	EngineRegistryMirror     []string          `json:"engineRegistryMirror,omitempty" yaml:"engineRegistryMirror,omitempty"`
+	EngineStorageDriver      string            `json:"engineStorageDriver,omitempty" yaml:"engineStorageDriver,omitempty"`
+	LogOpt                   map[string]string `json:"logOpt,omitempty" yaml:"logOpt,omitempty"`
+	NodeTaints               []Taint           `json:"nodeTaints,omitempty" yaml:"nodeTaints,omitempty"`
+	StorageOpt               map[string]string `json:"storageOpt,omitempty" yaml:"storageOpt,omitempty"`
+	UseInternalIPAddress     *bool             `json:"useInternalIpAddress,omitempty" yaml:"useInternalIpAddress,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_template_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_template_status.go
new file mode 100644
index 00000000..c8b5d713
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_template_status.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	NodeTemplateStatusType            = "nodeTemplateStatus"
+	NodeTemplateStatusFieldConditions = "conditions"
+)
+
+type NodeTemplateStatus struct {
+	Conditions []NodeTemplateCondition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_upgrade_strategy.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_upgrade_strategy.go
new file mode 100644
index 00000000..3e6106c3
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_node_upgrade_strategy.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	NodeUpgradeStrategyType                            = "nodeUpgradeStrategy"
+	NodeUpgradeStrategyFieldDrain                      = "drain"
+	NodeUpgradeStrategyFieldDrainInput                 = "nodeDrainInput"
+	NodeUpgradeStrategyFieldMaxUnavailableControlplane = "maxUnavailableControlplane"
+	NodeUpgradeStrategyFieldMaxUnavailableWorker       = "maxUnavailableWorker"
+)
+
+type NodeUpgradeStrategy struct {
+	Drain                      *bool           `json:"drain,omitempty" yaml:"drain,omitempty"`
+	DrainInput                 *NodeDrainInput `json:"nodeDrainInput,omitempty" yaml:"nodeDrainInput,omitempty"`
+	MaxUnavailableControlplane string          `json:"maxUnavailableControlplane,omitempty" yaml:"maxUnavailableControlplane,omitempty"`
+	MaxUnavailableWorker       string          `json:"maxUnavailableWorker,omitempty" yaml:"maxUnavailableWorker,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_nodelocal.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_nodelocal.go
new file mode 100644
index 00000000..392249cc
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_nodelocal.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	NodelocalType                               = "nodelocal"
+	NodelocalFieldIPAddress                     = "ipAddress"
+	NodelocalFieldNodeLocalDNSPriorityClassName = "nodeLocalDnsPriorityClassName"
+	NodelocalFieldNodeSelector                  = "nodeSelector"
+	NodelocalFieldUpdateStrategy                = "updateStrategy"
+)
+
+type Nodelocal struct {
+	IPAddress                     string                   `json:"ipAddress,omitempty" yaml:"ipAddress,omitempty"`
+	NodeLocalDNSPriorityClassName string                   `json:"nodeLocalDnsPriorityClassName,omitempty" yaml:"nodeLocalDnsPriorityClassName,omitempty"`
+	NodeSelector                  map[string]string        `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty"`
+	UpdateStrategy                *DaemonSetUpdateStrategy `json:"updateStrategy,omitempty" yaml:"updateStrategy,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_object_field_selector.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_object_field_selector.go
new file mode 100644
index 00000000..4951d2af
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_object_field_selector.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	ObjectFieldSelectorType            = "objectFieldSelector"
+	ObjectFieldSelectorFieldAPIVersion = "apiVersion"
+	ObjectFieldSelectorFieldFieldPath  = "fieldPath"
+)
+
+type ObjectFieldSelector struct {
+	APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
+	FieldPath  string `json:"fieldPath,omitempty" yaml:"fieldPath,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_object_meta.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_object_meta.go
new file mode 100644
index 00000000..29f79630
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_object_meta.go
@@ -0,0 +1,28 @@
+package client
+
+const (
+	ObjectMetaType                 = "objectMeta"
+	ObjectMetaFieldAnnotations     = "annotations"
+	ObjectMetaFieldCreated         = "created"
+	ObjectMetaFieldFinalizers      = "finalizers"
+	ObjectMetaFieldLabels          = "labels"
+	ObjectMetaFieldName            = "name"
+	ObjectMetaFieldNamespace       = "namespace"
+	ObjectMetaFieldOwnerReferences = "ownerReferences"
+	ObjectMetaFieldRemoved         = "removed"
+	ObjectMetaFieldSelfLink        = "selfLink"
+	ObjectMetaFieldUUID            = "uuid"
+)
+
+type ObjectMeta struct {
+	Annotations     map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created         string            `json:"created,omitempty" yaml:"created,omitempty"`
+	Finalizers      []string          `json:"finalizers,omitempty" yaml:"finalizers,omitempty"`
+	Labels          map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name            string            `json:"name,omitempty" yaml:"name,omitempty"`
+	Namespace       string            `json:"namespace,omitempty" yaml:"namespace,omitempty"`
+	OwnerReferences []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed         string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	SelfLink        string            `json:"selfLink,omitempty" yaml:"selfLink,omitempty"`
+	UUID            string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_oidc_apply_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_oidc_apply_input.go
new file mode 100644
index 00000000..cc73a770
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_oidc_apply_input.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	OIDCApplyInputType            = "oidcApplyInput"
+	OIDCApplyInputFieldCode       = "code"
+	OIDCApplyInputFieldEnabled    = "enabled"
+	OIDCApplyInputFieldOIDCConfig = "oidcConfig"
+)
+
+type OIDCApplyInput struct {
+	Code       string      `json:"code,omitempty" yaml:"code,omitempty"`
+	Enabled    bool        `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	OIDCConfig *OIDCConfig `json:"oidcConfig,omitempty" yaml:"oidcConfig,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_oidc_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_oidc_config.go
new file mode 100644
index 00000000..c8a5c21c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_oidc_config.go
@@ -0,0 +1,62 @@
+package client
+
+const (
+	OIDCConfigType                     = "oidcConfig"
+	OIDCConfigFieldAccessMode          = "accessMode"
+	OIDCConfigFieldAcrValue            = "acrValue"
+	OIDCConfigFieldAllowedPrincipalIDs = "allowedPrincipalIds"
+	OIDCConfigFieldAnnotations         = "annotations"
+	OIDCConfigFieldAuthEndpoint        = "authEndpoint"
+	OIDCConfigFieldCertificate         = "certificate"
+	OIDCConfigFieldClientID            = "clientId"
+	OIDCConfigFieldClientSecret        = "clientSecret"
+	OIDCConfigFieldCreated             = "created"
+	OIDCConfigFieldCreatorID           = "creatorId"
+	OIDCConfigFieldEnabled             = "enabled"
+	OIDCConfigFieldGroupSearchEnabled  = "groupSearchEnabled"
+	OIDCConfigFieldGroupsClaim         = "groupsClaim"
+	OIDCConfigFieldIssuer              = "issuer"
+	OIDCConfigFieldJWKSUrl             = "jwksUrl"
+	OIDCConfigFieldLabels              = "labels"
+	OIDCConfigFieldName                = "name"
+	OIDCConfigFieldOwnerReferences     = "ownerReferences"
+	OIDCConfigFieldPrivateKey          = "privateKey"
+	OIDCConfigFieldRancherURL          = "rancherUrl"
+	OIDCConfigFieldRemoved             = "removed"
+	OIDCConfigFieldScopes              = "scope"
+	OIDCConfigFieldStatus              = "status"
+	OIDCConfigFieldTokenEndpoint       = "tokenEndpoint"
+	OIDCConfigFieldType                = "type"
+	OIDCConfigFieldUUID                = "uuid"
+	OIDCConfigFieldUserInfoEndpoint    = "userInfoEndpoint"
+)
+
+type OIDCConfig struct {
+	AccessMode          string            `json:"accessMode,omitempty" yaml:"accessMode,omitempty"`
+	AcrValue            string            `json:"acrValue,omitempty" yaml:"acrValue,omitempty"`
+	AllowedPrincipalIDs []string          `json:"allowedPrincipalIds,omitempty" yaml:"allowedPrincipalIds,omitempty"`
+	Annotations         map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	AuthEndpoint        string            `json:"authEndpoint,omitempty" yaml:"authEndpoint,omitempty"`
+	Certificate         string            `json:"certificate,omitempty" yaml:"certificate,omitempty"`
+	ClientID            string            `json:"clientId,omitempty" yaml:"clientId,omitempty"`
+	ClientSecret        string            `json:"clientSecret,omitempty" yaml:"clientSecret,omitempty"`
+	Created             string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID           string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Enabled             bool              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	GroupSearchEnabled  *bool             `json:"groupSearchEnabled,omitempty" yaml:"groupSearchEnabled,omitempty"`
+	GroupsClaim         string            `json:"groupsClaim,omitempty" yaml:"groupsClaim,omitempty"`
+	Issuer              string            `json:"issuer,omitempty" yaml:"issuer,omitempty"`
+	JWKSUrl             string            `json:"jwksUrl,omitempty" yaml:"jwksUrl,omitempty"`
+	Labels              map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences     []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	PrivateKey          string            `json:"privateKey,omitempty" yaml:"privateKey,omitempty"`
+	RancherURL          string            `json:"rancherUrl,omitempty" yaml:"rancherUrl,omitempty"`
+	Removed             string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Scopes              string            `json:"scope,omitempty" yaml:"scope,omitempty"`
+	Status              *AuthConfigStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	TokenEndpoint       string            `json:"tokenEndpoint,omitempty" yaml:"tokenEndpoint,omitempty"`
+	Type                string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UUID                string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserInfoEndpoint    string            `json:"userInfoEndpoint,omitempty" yaml:"userInfoEndpoint,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_oidc_test_output.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_oidc_test_output.go
new file mode 100644
index 00000000..db930c86
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_oidc_test_output.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	OIDCTestOutputType             = "oidcTestOutput"
+	OIDCTestOutputFieldRedirectURL = "redirectUrl"
+)
+
+type OIDCTestOutput struct {
+	RedirectURL string `json:"redirectUrl,omitempty" yaml:"redirectUrl,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_okta_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_okta_config.go
new file mode 100644
index 00000000..4279acbc
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_okta_config.go
@@ -0,0 +1,54 @@
+package client
+
+const (
+	OKTAConfigType                     = "oktaConfig"
+	OKTAConfigFieldAccessMode          = "accessMode"
+	OKTAConfigFieldAllowedPrincipalIDs = "allowedPrincipalIds"
+	OKTAConfigFieldAnnotations         = "annotations"
+	OKTAConfigFieldCreated             = "created"
+	OKTAConfigFieldCreatorID           = "creatorId"
+	OKTAConfigFieldDisplayNameField    = "displayNameField"
+	OKTAConfigFieldEnabled             = "enabled"
+	OKTAConfigFieldEntityID            = "entityID"
+	OKTAConfigFieldGroupsField         = "groupsField"
+	OKTAConfigFieldIDPMetadataContent  = "idpMetadataContent"
+	OKTAConfigFieldLabels              = "labels"
+	OKTAConfigFieldName                = "name"
+	OKTAConfigFieldOpenLdapConfig      = "openLdapConfig"
+	OKTAConfigFieldOwnerReferences     = "ownerReferences"
+	OKTAConfigFieldRancherAPIHost      = "rancherApiHost"
+	OKTAConfigFieldRemoved             = "removed"
+	OKTAConfigFieldSpCert              = "spCert"
+	OKTAConfigFieldSpKey               = "spKey"
+	OKTAConfigFieldStatus              = "status"
+	OKTAConfigFieldType                = "type"
+	OKTAConfigFieldUIDField            = "uidField"
+	OKTAConfigFieldUUID                = "uuid"
+	OKTAConfigFieldUserNameField       = "userNameField"
+)
+
+type OKTAConfig struct {
+	AccessMode          string            `json:"accessMode,omitempty" yaml:"accessMode,omitempty"`
+	AllowedPrincipalIDs []string          `json:"allowedPrincipalIds,omitempty" yaml:"allowedPrincipalIds,omitempty"`
+	Annotations         map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created             string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID           string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	DisplayNameField    string            `json:"displayNameField,omitempty" yaml:"displayNameField,omitempty"`
+	Enabled             bool              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	EntityID            string            `json:"entityID,omitempty" yaml:"entityID,omitempty"`
+	GroupsField         string            `json:"groupsField,omitempty" yaml:"groupsField,omitempty"`
+	IDPMetadataContent  string            `json:"idpMetadataContent,omitempty" yaml:"idpMetadataContent,omitempty"`
+	Labels              map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OpenLdapConfig      *LdapFields       `json:"openLdapConfig,omitempty" yaml:"openLdapConfig,omitempty"`
+	OwnerReferences     []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	RancherAPIHost      string            `json:"rancherApiHost,omitempty" yaml:"rancherApiHost,omitempty"`
+	Removed             string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	SpCert              string            `json:"spCert,omitempty" yaml:"spCert,omitempty"`
+	SpKey               string            `json:"spKey,omitempty" yaml:"spKey,omitempty"`
+	Status              *AuthConfigStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	Type                string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UIDField            string            `json:"uidField,omitempty" yaml:"uidField,omitempty"`
+	UUID                string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserNameField       string            `json:"userNameField,omitempty" yaml:"userNameField,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_open_ldap_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_open_ldap_config.go
new file mode 100644
index 00000000..36af1a48
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_open_ldap_config.go
@@ -0,0 +1,86 @@
+package client
+
+const (
+	OpenLdapConfigType                                 = "openLdapConfig"
+	OpenLdapConfigFieldAccessMode                      = "accessMode"
+	OpenLdapConfigFieldAllowedPrincipalIDs             = "allowedPrincipalIds"
+	OpenLdapConfigFieldAnnotations                     = "annotations"
+	OpenLdapConfigFieldCertificate                     = "certificate"
+	OpenLdapConfigFieldConnectionTimeout               = "connectionTimeout"
+	OpenLdapConfigFieldCreated                         = "created"
+	OpenLdapConfigFieldCreatorID                       = "creatorId"
+	OpenLdapConfigFieldEnabled                         = "enabled"
+	OpenLdapConfigFieldGroupDNAttribute                = "groupDNAttribute"
+	OpenLdapConfigFieldGroupMemberMappingAttribute     = "groupMemberMappingAttribute"
+	OpenLdapConfigFieldGroupMemberUserAttribute        = "groupMemberUserAttribute"
+	OpenLdapConfigFieldGroupNameAttribute              = "groupNameAttribute"
+	OpenLdapConfigFieldGroupObjectClass                = "groupObjectClass"
+	OpenLdapConfigFieldGroupSearchAttribute            = "groupSearchAttribute"
+	OpenLdapConfigFieldGroupSearchBase                 = "groupSearchBase"
+	OpenLdapConfigFieldGroupSearchFilter               = "groupSearchFilter"
+	OpenLdapConfigFieldLabels                          = "labels"
+	OpenLdapConfigFieldName                            = "name"
+	OpenLdapConfigFieldNestedGroupMembershipEnabled    = "nestedGroupMembershipEnabled"
+	OpenLdapConfigFieldOwnerReferences                 = "ownerReferences"
+	OpenLdapConfigFieldPort                            = "port"
+	OpenLdapConfigFieldRemoved                         = "removed"
+	OpenLdapConfigFieldServers                         = "servers"
+	OpenLdapConfigFieldServiceAccountDistinguishedName = "serviceAccountDistinguishedName"
+	OpenLdapConfigFieldServiceAccountPassword          = "serviceAccountPassword"
+	OpenLdapConfigFieldStartTLS                        = "starttls"
+	OpenLdapConfigFieldStatus                          = "status"
+	OpenLdapConfigFieldTLS                             = "tls"
+	OpenLdapConfigFieldType                            = "type"
+	OpenLdapConfigFieldUUID                            = "uuid"
+	OpenLdapConfigFieldUserDisabledBitMask             = "userDisabledBitMask"
+	OpenLdapConfigFieldUserEnabledAttribute            = "userEnabledAttribute"
+	OpenLdapConfigFieldUserLoginAttribute              = "userLoginAttribute"
+	OpenLdapConfigFieldUserMemberAttribute             = "userMemberAttribute"
+	OpenLdapConfigFieldUserNameAttribute               = "userNameAttribute"
+	OpenLdapConfigFieldUserObjectClass                 = "userObjectClass"
+	OpenLdapConfigFieldUserSearchAttribute             = "userSearchAttribute"
+	OpenLdapConfigFieldUserSearchBase                  = "userSearchBase"
+	OpenLdapConfigFieldUserSearchFilter                = "userSearchFilter"
+)
+
+type OpenLdapConfig struct {
+	AccessMode                      string            `json:"accessMode,omitempty" yaml:"accessMode,omitempty"`
+	AllowedPrincipalIDs             []string          `json:"allowedPrincipalIds,omitempty" yaml:"allowedPrincipalIds,omitempty"`
+	Annotations                     map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Certificate                     string            `json:"certificate,omitempty" yaml:"certificate,omitempty"`
+	ConnectionTimeout               int64             `json:"connectionTimeout,omitempty" yaml:"connectionTimeout,omitempty"`
+	Created                         string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID                       string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Enabled                         bool              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	GroupDNAttribute                string            `json:"groupDNAttribute,omitempty" yaml:"groupDNAttribute,omitempty"`
+	GroupMemberMappingAttribute     string            `json:"groupMemberMappingAttribute,omitempty" yaml:"groupMemberMappingAttribute,omitempty"`
+	GroupMemberUserAttribute        string            `json:"groupMemberUserAttribute,omitempty" yaml:"groupMemberUserAttribute,omitempty"`
+	GroupNameAttribute              string            `json:"groupNameAttribute,omitempty" yaml:"groupNameAttribute,omitempty"`
+	GroupObjectClass                string            `json:"groupObjectClass,omitempty" yaml:"groupObjectClass,omitempty"`
+	GroupSearchAttribute            string            `json:"groupSearchAttribute,omitempty" yaml:"groupSearchAttribute,omitempty"`
+	GroupSearchBase                 string            `json:"groupSearchBase,omitempty" yaml:"groupSearchBase,omitempty"`
+	GroupSearchFilter               string            `json:"groupSearchFilter,omitempty" yaml:"groupSearchFilter,omitempty"`
+	Labels                          map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                            string            `json:"name,omitempty" yaml:"name,omitempty"`
+	NestedGroupMembershipEnabled    bool              `json:"nestedGroupMembershipEnabled,omitempty" yaml:"nestedGroupMembershipEnabled,omitempty"`
+	OwnerReferences                 []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Port                            int64             `json:"port,omitempty" yaml:"port,omitempty"`
+	Removed                         string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Servers                         []string          `json:"servers,omitempty" yaml:"servers,omitempty"`
+	ServiceAccountDistinguishedName string            `json:"serviceAccountDistinguishedName,omitempty" yaml:"serviceAccountDistinguishedName,omitempty"`
+	ServiceAccountPassword          string            `json:"serviceAccountPassword,omitempty" yaml:"serviceAccountPassword,omitempty"`
+	StartTLS                        bool              `json:"starttls,omitempty" yaml:"starttls,omitempty"`
+	Status                          *AuthConfigStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	TLS                             bool              `json:"tls,omitempty" yaml:"tls,omitempty"`
+	Type                            string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UUID                            string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserDisabledBitMask             int64             `json:"userDisabledBitMask,omitempty" yaml:"userDisabledBitMask,omitempty"`
+	UserEnabledAttribute            string            `json:"userEnabledAttribute,omitempty" yaml:"userEnabledAttribute,omitempty"`
+	UserLoginAttribute              string            `json:"userLoginAttribute,omitempty" yaml:"userLoginAttribute,omitempty"`
+	UserMemberAttribute             string            `json:"userMemberAttribute,omitempty" yaml:"userMemberAttribute,omitempty"`
+	UserNameAttribute               string            `json:"userNameAttribute,omitempty" yaml:"userNameAttribute,omitempty"`
+	UserObjectClass                 string            `json:"userObjectClass,omitempty" yaml:"userObjectClass,omitempty"`
+	UserSearchAttribute             string            `json:"userSearchAttribute,omitempty" yaml:"userSearchAttribute,omitempty"`
+	UserSearchBase                  string            `json:"userSearchBase,omitempty" yaml:"userSearchBase,omitempty"`
+	UserSearchFilter                string            `json:"userSearchFilter,omitempty" yaml:"userSearchFilter,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_open_ldap_test_and_apply_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_open_ldap_test_and_apply_input.go
new file mode 100644
index 00000000..29c48f16
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_open_ldap_test_and_apply_input.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	OpenLdapTestAndApplyInputType            = "openLdapTestAndApplyInput"
+	OpenLdapTestAndApplyInputFieldLdapConfig = "ldapConfig"
+	OpenLdapTestAndApplyInputFieldPassword   = "password"
+	OpenLdapTestAndApplyInputFieldUsername   = "username"
+)
+
+type OpenLdapTestAndApplyInput struct {
+	LdapConfig *LdapConfig `json:"ldapConfig,omitempty" yaml:"ldapConfig,omitempty"`
+	Password   string      `json:"password,omitempty" yaml:"password,omitempty"`
+	Username   string      `json:"username,omitempty" yaml:"username,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_openstack_cloud_provider.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_openstack_cloud_provider.go
new file mode 100644
index 00000000..6d883ff2
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_openstack_cloud_provider.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	OpenstackCloudProviderType              = "openstackCloudProvider"
+	OpenstackCloudProviderFieldBlockStorage = "blockStorage"
+	OpenstackCloudProviderFieldGlobal       = "global"
+	OpenstackCloudProviderFieldLoadBalancer = "loadBalancer"
+	OpenstackCloudProviderFieldMetadata     = "metadata"
+	OpenstackCloudProviderFieldRoute        = "route"
+)
+
+type OpenstackCloudProvider struct {
+	BlockStorage *BlockStorageOpenstackOpts `json:"blockStorage,omitempty" yaml:"blockStorage,omitempty"`
+	Global       *GlobalOpenstackOpts       `json:"global,omitempty" yaml:"global,omitempty"`
+	LoadBalancer *LoadBalancerOpenstackOpts `json:"loadBalancer,omitempty" yaml:"loadBalancer,omitempty"`
+	Metadata     *MetadataOpenstackOpts     `json:"metadata,omitempty" yaml:"metadata,omitempty"`
+	Route        *RouteOpenstackOpts        `json:"route,omitempty" yaml:"route,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_os_info.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_os_info.go
new file mode 100644
index 00000000..c2c503ce
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_os_info.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	OSInfoType                 = "osInfo"
+	OSInfoFieldDockerVersion   = "dockerVersion"
+	OSInfoFieldKernelVersion   = "kernelVersion"
+	OSInfoFieldOperatingSystem = "operatingSystem"
+)
+
+type OSInfo struct {
+	DockerVersion   string `json:"dockerVersion,omitempty" yaml:"dockerVersion,omitempty"`
+	KernelVersion   string `json:"kernelVersion,omitempty" yaml:"kernelVersion,omitempty"`
+	OperatingSystem string `json:"operatingSystem,omitempty" yaml:"operatingSystem,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_owner_reference.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_owner_reference.go
new file mode 100644
index 00000000..5f4436b6
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_owner_reference.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	OwnerReferenceType                    = "ownerReference"
+	OwnerReferenceFieldAPIVersion         = "apiVersion"
+	OwnerReferenceFieldBlockOwnerDeletion = "blockOwnerDeletion"
+	OwnerReferenceFieldController         = "controller"
+	OwnerReferenceFieldKind               = "kind"
+	OwnerReferenceFieldName               = "name"
+	OwnerReferenceFieldUID                = "uid"
+)
+
+type OwnerReference struct {
+	APIVersion         string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
+	BlockOwnerDeletion *bool  `json:"blockOwnerDeletion,omitempty" yaml:"blockOwnerDeletion,omitempty"`
+	Controller         *bool  `json:"controller,omitempty" yaml:"controller,omitempty"`
+	Kind               string `json:"kind,omitempty" yaml:"kind,omitempty"`
+	Name               string `json:"name,omitempty" yaml:"name,omitempty"`
+	UID                string `json:"uid,omitempty" yaml:"uid,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_persistent_volume_claim_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_persistent_volume_claim_spec.go
new file mode 100644
index 00000000..b3f2c164
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_persistent_volume_claim_spec.go
@@ -0,0 +1,26 @@
+package client
+
+const (
+	PersistentVolumeClaimSpecType                           = "persistentVolumeClaimSpec"
+	PersistentVolumeClaimSpecFieldAccessModes               = "accessModes"
+	PersistentVolumeClaimSpecFieldDataSource                = "dataSource"
+	PersistentVolumeClaimSpecFieldDataSourceRef             = "dataSourceRef"
+	PersistentVolumeClaimSpecFieldResources                 = "resources"
+	PersistentVolumeClaimSpecFieldSelector                  = "selector"
+	PersistentVolumeClaimSpecFieldStorageClassName          = "storageClassName"
+	PersistentVolumeClaimSpecFieldVolumeAttributesClassName = "volumeAttributesClassName"
+	PersistentVolumeClaimSpecFieldVolumeMode                = "volumeMode"
+	PersistentVolumeClaimSpecFieldVolumeName                = "volumeName"
+)
+
+type PersistentVolumeClaimSpec struct {
+	AccessModes               []string                    `json:"accessModes,omitempty" yaml:"accessModes,omitempty"`
+	DataSource                *TypedLocalObjectReference  `json:"dataSource,omitempty" yaml:"dataSource,omitempty"`
+	DataSourceRef             *TypedObjectReference       `json:"dataSourceRef,omitempty" yaml:"dataSourceRef,omitempty"`
+	Resources                 *VolumeResourceRequirements `json:"resources,omitempty" yaml:"resources,omitempty"`
+	Selector                  *LabelSelector              `json:"selector,omitempty" yaml:"selector,omitempty"`
+	StorageClassName          string                      `json:"storageClassName,omitempty" yaml:"storageClassName,omitempty"`
+	VolumeAttributesClassName string                      `json:"volumeAttributesClassName,omitempty" yaml:"volumeAttributesClassName,omitempty"`
+	VolumeMode                string                      `json:"volumeMode,omitempty" yaml:"volumeMode,omitempty"`
+	VolumeName                string                      `json:"volumeName,omitempty" yaml:"volumeName,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_persistent_volume_claim_template.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_persistent_volume_claim_template.go
new file mode 100644
index 00000000..1eed7b41
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_persistent_volume_claim_template.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	PersistentVolumeClaimTemplateType            = "persistentVolumeClaimTemplate"
+	PersistentVolumeClaimTemplateFieldObjectMeta = "metadata"
+	PersistentVolumeClaimTemplateFieldSpec       = "spec"
+)
+
+type PersistentVolumeClaimTemplate struct {
+	ObjectMeta *ObjectMeta                `json:"metadata,omitempty" yaml:"metadata,omitempty"`
+	Spec       *PersistentVolumeClaimSpec `json:"spec,omitempty" yaml:"spec,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_persistent_volume_claim_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_persistent_volume_claim_volume_source.go
new file mode 100644
index 00000000..1b4ae4bb
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_persistent_volume_claim_volume_source.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	PersistentVolumeClaimVolumeSourceType           = "persistentVolumeClaimVolumeSource"
+	PersistentVolumeClaimVolumeSourceFieldClaimName = "claimName"
+	PersistentVolumeClaimVolumeSourceFieldReadOnly  = "readOnly"
+)
+
+type PersistentVolumeClaimVolumeSource struct {
+	ClaimName string `json:"claimName,omitempty" yaml:"claimName,omitempty"`
+	ReadOnly  bool   `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_photon_persistent_disk_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_photon_persistent_disk_volume_source.go
new file mode 100644
index 00000000..d6e8ffd3
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_photon_persistent_disk_volume_source.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	PhotonPersistentDiskVolumeSourceType        = "photonPersistentDiskVolumeSource"
+	PhotonPersistentDiskVolumeSourceFieldFSType = "fsType"
+	PhotonPersistentDiskVolumeSourceFieldPdID   = "pdID"
+)
+
+type PhotonPersistentDiskVolumeSource struct {
+	FSType string `json:"fsType,omitempty" yaml:"fsType,omitempty"`
+	PdID   string `json:"pdID,omitempty" yaml:"pdID,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ping_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ping_config.go
new file mode 100644
index 00000000..3905905b
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_ping_config.go
@@ -0,0 +1,52 @@
+package client
+
+const (
+	PingConfigType                     = "pingConfig"
+	PingConfigFieldAccessMode          = "accessMode"
+	PingConfigFieldAllowedPrincipalIDs = "allowedPrincipalIds"
+	PingConfigFieldAnnotations         = "annotations"
+	PingConfigFieldCreated             = "created"
+	PingConfigFieldCreatorID           = "creatorId"
+	PingConfigFieldDisplayNameField    = "displayNameField"
+	PingConfigFieldEnabled             = "enabled"
+	PingConfigFieldEntityID            = "entityID"
+	PingConfigFieldGroupsField         = "groupsField"
+	PingConfigFieldIDPMetadataContent  = "idpMetadataContent"
+	PingConfigFieldLabels              = "labels"
+	PingConfigFieldName                = "name"
+	PingConfigFieldOwnerReferences     = "ownerReferences"
+	PingConfigFieldRancherAPIHost      = "rancherApiHost"
+	PingConfigFieldRemoved             = "removed"
+	PingConfigFieldSpCert              = "spCert"
+	PingConfigFieldSpKey               = "spKey"
+	PingConfigFieldStatus              = "status"
+	PingConfigFieldType                = "type"
+	PingConfigFieldUIDField            = "uidField"
+	PingConfigFieldUUID                = "uuid"
+	PingConfigFieldUserNameField       = "userNameField"
+)
+
+type PingConfig struct {
+	AccessMode          string            `json:"accessMode,omitempty" yaml:"accessMode,omitempty"`
+	AllowedPrincipalIDs []string          `json:"allowedPrincipalIds,omitempty" yaml:"allowedPrincipalIds,omitempty"`
+	Annotations         map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created             string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID           string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	DisplayNameField    string            `json:"displayNameField,omitempty" yaml:"displayNameField,omitempty"`
+	Enabled             bool              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	EntityID            string            `json:"entityID,omitempty" yaml:"entityID,omitempty"`
+	GroupsField         string            `json:"groupsField,omitempty" yaml:"groupsField,omitempty"`
+	IDPMetadataContent  string            `json:"idpMetadataContent,omitempty" yaml:"idpMetadataContent,omitempty"`
+	Labels              map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences     []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	RancherAPIHost      string            `json:"rancherApiHost,omitempty" yaml:"rancherApiHost,omitempty"`
+	Removed             string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	SpCert              string            `json:"spCert,omitempty" yaml:"spCert,omitempty"`
+	SpKey               string            `json:"spKey,omitempty" yaml:"spKey,omitempty"`
+	Status              *AuthConfigStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	Type                string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UIDField            string            `json:"uidField,omitempty" yaml:"uidField,omitempty"`
+	UUID                string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserNameField       string            `json:"userNameField,omitempty" yaml:"userNameField,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_affinity.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_affinity.go
new file mode 100644
index 00000000..ebe2958e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_affinity.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	PodAffinityType                                                 = "podAffinity"
+	PodAffinityFieldPreferredDuringSchedulingIgnoredDuringExecution = "preferredDuringSchedulingIgnoredDuringExecution"
+	PodAffinityFieldRequiredDuringSchedulingIgnoredDuringExecution  = "requiredDuringSchedulingIgnoredDuringExecution"
+)
+
+type PodAffinity struct {
+	PreferredDuringSchedulingIgnoredDuringExecution []WeightedPodAffinityTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty" yaml:"preferredDuringSchedulingIgnoredDuringExecution,omitempty"`
+	RequiredDuringSchedulingIgnoredDuringExecution  []PodAffinityTerm         `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty" yaml:"requiredDuringSchedulingIgnoredDuringExecution,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_affinity_term.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_affinity_term.go
new file mode 100644
index 00000000..aa1478e0
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_affinity_term.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	PodAffinityTermType                   = "podAffinityTerm"
+	PodAffinityTermFieldLabelSelector     = "labelSelector"
+	PodAffinityTermFieldMatchLabelKeys    = "matchLabelKeys"
+	PodAffinityTermFieldMismatchLabelKeys = "mismatchLabelKeys"
+	PodAffinityTermFieldNamespaceSelector = "namespaceSelector"
+	PodAffinityTermFieldNamespaces        = "namespaces"
+	PodAffinityTermFieldTopologyKey       = "topologyKey"
+)
+
+type PodAffinityTerm struct {
+	LabelSelector     *LabelSelector `json:"labelSelector,omitempty" yaml:"labelSelector,omitempty"`
+	MatchLabelKeys    []string       `json:"matchLabelKeys,omitempty" yaml:"matchLabelKeys,omitempty"`
+	MismatchLabelKeys []string       `json:"mismatchLabelKeys,omitempty" yaml:"mismatchLabelKeys,omitempty"`
+	NamespaceSelector *LabelSelector `json:"namespaceSelector,omitempty" yaml:"namespaceSelector,omitempty"`
+	Namespaces        []string       `json:"namespaces,omitempty" yaml:"namespaces,omitempty"`
+	TopologyKey       string         `json:"topologyKey,omitempty" yaml:"topologyKey,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_anti_affinity.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_anti_affinity.go
new file mode 100644
index 00000000..47fdd692
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_anti_affinity.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	PodAntiAffinityType                                                 = "podAntiAffinity"
+	PodAntiAffinityFieldPreferredDuringSchedulingIgnoredDuringExecution = "preferredDuringSchedulingIgnoredDuringExecution"
+	PodAntiAffinityFieldRequiredDuringSchedulingIgnoredDuringExecution  = "requiredDuringSchedulingIgnoredDuringExecution"
+)
+
+type PodAntiAffinity struct {
+	PreferredDuringSchedulingIgnoredDuringExecution []WeightedPodAffinityTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty" yaml:"preferredDuringSchedulingIgnoredDuringExecution,omitempty"`
+	RequiredDuringSchedulingIgnoredDuringExecution  []PodAffinityTerm         `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty" yaml:"requiredDuringSchedulingIgnoredDuringExecution,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_security_admission_configuration_template.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_security_admission_configuration_template.go
new file mode 100644
index 00000000..5fc4e6c6
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_security_admission_configuration_template.go
@@ -0,0 +1,122 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	PodSecurityAdmissionConfigurationTemplateType                 = "podSecurityAdmissionConfigurationTemplate"
+	PodSecurityAdmissionConfigurationTemplateFieldAnnotations     = "annotations"
+	PodSecurityAdmissionConfigurationTemplateFieldConfiguration   = "configuration"
+	PodSecurityAdmissionConfigurationTemplateFieldCreated         = "created"
+	PodSecurityAdmissionConfigurationTemplateFieldCreatorID       = "creatorId"
+	PodSecurityAdmissionConfigurationTemplateFieldDescription     = "description"
+	PodSecurityAdmissionConfigurationTemplateFieldLabels          = "labels"
+	PodSecurityAdmissionConfigurationTemplateFieldName            = "name"
+	PodSecurityAdmissionConfigurationTemplateFieldOwnerReferences = "ownerReferences"
+	PodSecurityAdmissionConfigurationTemplateFieldRemoved         = "removed"
+	PodSecurityAdmissionConfigurationTemplateFieldUUID            = "uuid"
+)
+
+type PodSecurityAdmissionConfigurationTemplate struct {
+	types.Resource
+	Annotations     map[string]string                              `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Configuration   *PodSecurityAdmissionConfigurationTemplateSpec `json:"configuration,omitempty" yaml:"configuration,omitempty"`
+	Created         string                                         `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID       string                                         `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Description     string                                         `json:"description,omitempty" yaml:"description,omitempty"`
+	Labels          map[string]string                              `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name            string                                         `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences []OwnerReference                               `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed         string                                         `json:"removed,omitempty" yaml:"removed,omitempty"`
+	UUID            string                                         `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type PodSecurityAdmissionConfigurationTemplateCollection struct {
+	types.Collection
+	Data   []PodSecurityAdmissionConfigurationTemplate `json:"data,omitempty"`
+	client *PodSecurityAdmissionConfigurationTemplateClient
+}
+
+type PodSecurityAdmissionConfigurationTemplateClient struct {
+	apiClient *Client
+}
+
+type PodSecurityAdmissionConfigurationTemplateOperations interface {
+	List(opts *types.ListOpts) (*PodSecurityAdmissionConfigurationTemplateCollection, error)
+	ListAll(opts *types.ListOpts) (*PodSecurityAdmissionConfigurationTemplateCollection, error)
+	Create(opts *PodSecurityAdmissionConfigurationTemplate) (*PodSecurityAdmissionConfigurationTemplate, error)
+	Update(existing *PodSecurityAdmissionConfigurationTemplate, updates interface{}) (*PodSecurityAdmissionConfigurationTemplate, error)
+	Replace(existing *PodSecurityAdmissionConfigurationTemplate) (*PodSecurityAdmissionConfigurationTemplate, error)
+	ByID(id string) (*PodSecurityAdmissionConfigurationTemplate, error)
+	Delete(container *PodSecurityAdmissionConfigurationTemplate) error
+}
+
+func newPodSecurityAdmissionConfigurationTemplateClient(apiClient *Client) *PodSecurityAdmissionConfigurationTemplateClient {
+	return &PodSecurityAdmissionConfigurationTemplateClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *PodSecurityAdmissionConfigurationTemplateClient) Create(container *PodSecurityAdmissionConfigurationTemplate) (*PodSecurityAdmissionConfigurationTemplate, error) {
+	resp := &PodSecurityAdmissionConfigurationTemplate{}
+	err := c.apiClient.Ops.DoCreate(PodSecurityAdmissionConfigurationTemplateType, container, resp)
+	return resp, err
+}
+
+func (c *PodSecurityAdmissionConfigurationTemplateClient) Update(existing *PodSecurityAdmissionConfigurationTemplate, updates interface{}) (*PodSecurityAdmissionConfigurationTemplate, error) {
+	resp := &PodSecurityAdmissionConfigurationTemplate{}
+	err := c.apiClient.Ops.DoUpdate(PodSecurityAdmissionConfigurationTemplateType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *PodSecurityAdmissionConfigurationTemplateClient) Replace(obj *PodSecurityAdmissionConfigurationTemplate) (*PodSecurityAdmissionConfigurationTemplate, error) {
+	resp := &PodSecurityAdmissionConfigurationTemplate{}
+	err := c.apiClient.Ops.DoReplace(PodSecurityAdmissionConfigurationTemplateType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *PodSecurityAdmissionConfigurationTemplateClient) List(opts *types.ListOpts) (*PodSecurityAdmissionConfigurationTemplateCollection, error) {
+	resp := &PodSecurityAdmissionConfigurationTemplateCollection{}
+	err := c.apiClient.Ops.DoList(PodSecurityAdmissionConfigurationTemplateType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *PodSecurityAdmissionConfigurationTemplateClient) ListAll(opts *types.ListOpts) (*PodSecurityAdmissionConfigurationTemplateCollection, error) {
+	resp := &PodSecurityAdmissionConfigurationTemplateCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *PodSecurityAdmissionConfigurationTemplateCollection) Next() (*PodSecurityAdmissionConfigurationTemplateCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &PodSecurityAdmissionConfigurationTemplateCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *PodSecurityAdmissionConfigurationTemplateClient) ByID(id string) (*PodSecurityAdmissionConfigurationTemplate, error) {
+	resp := &PodSecurityAdmissionConfigurationTemplate{}
+	err := c.apiClient.Ops.DoByID(PodSecurityAdmissionConfigurationTemplateType, id, resp)
+	return resp, err
+}
+
+func (c *PodSecurityAdmissionConfigurationTemplateClient) Delete(container *PodSecurityAdmissionConfigurationTemplate) error {
+	return c.apiClient.Ops.DoResourceDelete(PodSecurityAdmissionConfigurationTemplateType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_security_admission_configuration_template_defaults.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_security_admission_configuration_template_defaults.go
new file mode 100644
index 00000000..f2fc1d83
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_security_admission_configuration_template_defaults.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	PodSecurityAdmissionConfigurationTemplateDefaultsType                = "podSecurityAdmissionConfigurationTemplateDefaults"
+	PodSecurityAdmissionConfigurationTemplateDefaultsFieldAudit          = "audit"
+	PodSecurityAdmissionConfigurationTemplateDefaultsFieldAuditVersion   = "audit-version"
+	PodSecurityAdmissionConfigurationTemplateDefaultsFieldEnforce        = "enforce"
+	PodSecurityAdmissionConfigurationTemplateDefaultsFieldEnforceVersion = "enforce-version"
+	PodSecurityAdmissionConfigurationTemplateDefaultsFieldWarn           = "warn"
+	PodSecurityAdmissionConfigurationTemplateDefaultsFieldWarnVersion    = "warn-version"
+)
+
+type PodSecurityAdmissionConfigurationTemplateDefaults struct {
+	Audit          string `json:"audit,omitempty" yaml:"audit,omitempty"`
+	AuditVersion   string `json:"audit-version,omitempty" yaml:"audit-version,omitempty"`
+	Enforce        string `json:"enforce,omitempty" yaml:"enforce,omitempty"`
+	EnforceVersion string `json:"enforce-version,omitempty" yaml:"enforce-version,omitempty"`
+	Warn           string `json:"warn,omitempty" yaml:"warn,omitempty"`
+	WarnVersion    string `json:"warn-version,omitempty" yaml:"warn-version,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_security_admission_configuration_template_exemptions.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_security_admission_configuration_template_exemptions.go
new file mode 100644
index 00000000..392c5c4e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_security_admission_configuration_template_exemptions.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	PodSecurityAdmissionConfigurationTemplateExemptionsType                = "podSecurityAdmissionConfigurationTemplateExemptions"
+	PodSecurityAdmissionConfigurationTemplateExemptionsFieldNamespaces     = "namespaces"
+	PodSecurityAdmissionConfigurationTemplateExemptionsFieldRuntimeClasses = "runtimeClasses"
+	PodSecurityAdmissionConfigurationTemplateExemptionsFieldUsernames      = "usernames"
+)
+
+type PodSecurityAdmissionConfigurationTemplateExemptions struct {
+	Namespaces     []string `json:"namespaces,omitempty" yaml:"namespaces,omitempty"`
+	RuntimeClasses []string `json:"runtimeClasses,omitempty" yaml:"runtimeClasses,omitempty"`
+	Usernames      []string `json:"usernames,omitempty" yaml:"usernames,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_security_admission_configuration_template_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_security_admission_configuration_template_spec.go
new file mode 100644
index 00000000..afe2ef0d
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_pod_security_admission_configuration_template_spec.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	PodSecurityAdmissionConfigurationTemplateSpecType            = "podSecurityAdmissionConfigurationTemplateSpec"
+	PodSecurityAdmissionConfigurationTemplateSpecFieldDefaults   = "defaults"
+	PodSecurityAdmissionConfigurationTemplateSpecFieldExemptions = "exemptions"
+)
+
+type PodSecurityAdmissionConfigurationTemplateSpec struct {
+	Defaults   *PodSecurityAdmissionConfigurationTemplateDefaults   `json:"defaults,omitempty" yaml:"defaults,omitempty"`
+	Exemptions *PodSecurityAdmissionConfigurationTemplateExemptions `json:"exemptions,omitempty" yaml:"exemptions,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_policy_rule.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_policy_rule.go
new file mode 100644
index 00000000..b7a51ca2
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_policy_rule.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	PolicyRuleType                 = "policyRule"
+	PolicyRuleFieldAPIGroups       = "apiGroups"
+	PolicyRuleFieldNonResourceURLs = "nonResourceURLs"
+	PolicyRuleFieldResourceNames   = "resourceNames"
+	PolicyRuleFieldResources       = "resources"
+	PolicyRuleFieldVerbs           = "verbs"
+)
+
+type PolicyRule struct {
+	APIGroups       []string `json:"apiGroups,omitempty" yaml:"apiGroups,omitempty"`
+	NonResourceURLs []string `json:"nonResourceURLs,omitempty" yaml:"nonResourceURLs,omitempty"`
+	ResourceNames   []string `json:"resourceNames,omitempty" yaml:"resourceNames,omitempty"`
+	Resources       []string `json:"resources,omitempty" yaml:"resources,omitempty"`
+	Verbs           []string `json:"verbs,omitempty" yaml:"verbs,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_port_check.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_port_check.go
new file mode 100644
index 00000000..2e9c37e5
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_port_check.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	PortCheckType          = "portCheck"
+	PortCheckFieldAddress  = "address"
+	PortCheckFieldPort     = "port"
+	PortCheckFieldProtocol = "protocol"
+)
+
+type PortCheck struct {
+	Address  string `json:"address,omitempty" yaml:"address,omitempty"`
+	Port     int64  `json:"port,omitempty" yaml:"port,omitempty"`
+	Protocol string `json:"protocol,omitempty" yaml:"protocol,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_portworx_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_portworx_volume_source.go
new file mode 100644
index 00000000..cbe98c65
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_portworx_volume_source.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	PortworxVolumeSourceType          = "portworxVolumeSource"
+	PortworxVolumeSourceFieldFSType   = "fsType"
+	PortworxVolumeSourceFieldReadOnly = "readOnly"
+	PortworxVolumeSourceFieldVolumeID = "volumeID"
+)
+
+type PortworxVolumeSource struct {
+	FSType   string `json:"fsType,omitempty" yaml:"fsType,omitempty"`
+	ReadOnly bool   `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+	VolumeID string `json:"volumeID,omitempty" yaml:"volumeID,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_preference.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_preference.go
new file mode 100644
index 00000000..5028069c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_preference.go
@@ -0,0 +1,122 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	PreferenceType                 = "preference"
+	PreferenceFieldAnnotations     = "annotations"
+	PreferenceFieldCreated         = "created"
+	PreferenceFieldCreatorID       = "creatorId"
+	PreferenceFieldLabels          = "labels"
+	PreferenceFieldName            = "name"
+	PreferenceFieldNamespaceId     = "namespaceId"
+	PreferenceFieldOwnerReferences = "ownerReferences"
+	PreferenceFieldRemoved         = "removed"
+	PreferenceFieldUUID            = "uuid"
+	PreferenceFieldValue           = "value"
+)
+
+type Preference struct {
+	types.Resource
+	Annotations     map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created         string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID       string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Labels          map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name            string            `json:"name,omitempty" yaml:"name,omitempty"`
+	NamespaceId     string            `json:"namespaceId,omitempty" yaml:"namespaceId,omitempty"`
+	OwnerReferences []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed         string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	UUID            string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	Value           string            `json:"value,omitempty" yaml:"value,omitempty"`
+}
+
+type PreferenceCollection struct {
+	types.Collection
+	Data   []Preference `json:"data,omitempty"`
+	client *PreferenceClient
+}
+
+type PreferenceClient struct {
+	apiClient *Client
+}
+
+type PreferenceOperations interface {
+	List(opts *types.ListOpts) (*PreferenceCollection, error)
+	ListAll(opts *types.ListOpts) (*PreferenceCollection, error)
+	Create(opts *Preference) (*Preference, error)
+	Update(existing *Preference, updates interface{}) (*Preference, error)
+	Replace(existing *Preference) (*Preference, error)
+	ByID(id string) (*Preference, error)
+	Delete(container *Preference) error
+}
+
+func newPreferenceClient(apiClient *Client) *PreferenceClient {
+	return &PreferenceClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *PreferenceClient) Create(container *Preference) (*Preference, error) {
+	resp := &Preference{}
+	err := c.apiClient.Ops.DoCreate(PreferenceType, container, resp)
+	return resp, err
+}
+
+func (c *PreferenceClient) Update(existing *Preference, updates interface{}) (*Preference, error) {
+	resp := &Preference{}
+	err := c.apiClient.Ops.DoUpdate(PreferenceType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *PreferenceClient) Replace(obj *Preference) (*Preference, error) {
+	resp := &Preference{}
+	err := c.apiClient.Ops.DoReplace(PreferenceType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *PreferenceClient) List(opts *types.ListOpts) (*PreferenceCollection, error) {
+	resp := &PreferenceCollection{}
+	err := c.apiClient.Ops.DoList(PreferenceType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *PreferenceClient) ListAll(opts *types.ListOpts) (*PreferenceCollection, error) {
+	resp := &PreferenceCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *PreferenceCollection) Next() (*PreferenceCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &PreferenceCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *PreferenceClient) ByID(id string) (*Preference, error) {
+	resp := &Preference{}
+	err := c.apiClient.Ops.DoByID(PreferenceType, id, resp)
+	return resp, err
+}
+
+func (c *PreferenceClient) Delete(container *Preference) error {
+	return c.apiClient.Ops.DoResourceDelete(PreferenceType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_preferred_scheduling_term.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_preferred_scheduling_term.go
new file mode 100644
index 00000000..b5be217c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_preferred_scheduling_term.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	PreferredSchedulingTermType            = "preferredSchedulingTerm"
+	PreferredSchedulingTermFieldPreference = "preference"
+	PreferredSchedulingTermFieldWeight     = "weight"
+)
+
+type PreferredSchedulingTerm struct {
+	Preference *NodeSelectorTerm `json:"preference,omitempty" yaml:"preference,omitempty"`
+	Weight     int64             `json:"weight,omitempty" yaml:"weight,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_principal.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_principal.go
new file mode 100644
index 00000000..1f51a8b1
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_principal.go
@@ -0,0 +1,142 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	PrincipalType                 = "principal"
+	PrincipalFieldAnnotations     = "annotations"
+	PrincipalFieldCreated         = "created"
+	PrincipalFieldCreatorID       = "creatorId"
+	PrincipalFieldExtraInfo       = "extraInfo"
+	PrincipalFieldLabels          = "labels"
+	PrincipalFieldLoginName       = "loginName"
+	PrincipalFieldMe              = "me"
+	PrincipalFieldMemberOf        = "memberOf"
+	PrincipalFieldName            = "name"
+	PrincipalFieldOwnerReferences = "ownerReferences"
+	PrincipalFieldPrincipalType   = "principalType"
+	PrincipalFieldProfilePicture  = "profilePicture"
+	PrincipalFieldProfileURL      = "profileURL"
+	PrincipalFieldProvider        = "provider"
+	PrincipalFieldRemoved         = "removed"
+	PrincipalFieldUUID            = "uuid"
+)
+
+type Principal struct {
+	types.Resource
+	Annotations     map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created         string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID       string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	ExtraInfo       map[string]string `json:"extraInfo,omitempty" yaml:"extraInfo,omitempty"`
+	Labels          map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	LoginName       string            `json:"loginName,omitempty" yaml:"loginName,omitempty"`
+	Me              bool              `json:"me,omitempty" yaml:"me,omitempty"`
+	MemberOf        bool              `json:"memberOf,omitempty" yaml:"memberOf,omitempty"`
+	Name            string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	PrincipalType   string            `json:"principalType,omitempty" yaml:"principalType,omitempty"`
+	ProfilePicture  string            `json:"profilePicture,omitempty" yaml:"profilePicture,omitempty"`
+	ProfileURL      string            `json:"profileURL,omitempty" yaml:"profileURL,omitempty"`
+	Provider        string            `json:"provider,omitempty" yaml:"provider,omitempty"`
+	Removed         string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	UUID            string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type PrincipalCollection struct {
+	types.Collection
+	Data   []Principal `json:"data,omitempty"`
+	client *PrincipalClient
+}
+
+type PrincipalClient struct {
+	apiClient *Client
+}
+
+type PrincipalOperations interface {
+	List(opts *types.ListOpts) (*PrincipalCollection, error)
+	ListAll(opts *types.ListOpts) (*PrincipalCollection, error)
+	Create(opts *Principal) (*Principal, error)
+	Update(existing *Principal, updates interface{}) (*Principal, error)
+	Replace(existing *Principal) (*Principal, error)
+	ByID(id string) (*Principal, error)
+	Delete(container *Principal) error
+
+	CollectionActionSearch(resource *PrincipalCollection, input *SearchPrincipalsInput) (*PrincipalCollection, error)
+}
+
+func newPrincipalClient(apiClient *Client) *PrincipalClient {
+	return &PrincipalClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *PrincipalClient) Create(container *Principal) (*Principal, error) {
+	resp := &Principal{}
+	err := c.apiClient.Ops.DoCreate(PrincipalType, container, resp)
+	return resp, err
+}
+
+func (c *PrincipalClient) Update(existing *Principal, updates interface{}) (*Principal, error) {
+	resp := &Principal{}
+	err := c.apiClient.Ops.DoUpdate(PrincipalType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *PrincipalClient) Replace(obj *Principal) (*Principal, error) {
+	resp := &Principal{}
+	err := c.apiClient.Ops.DoReplace(PrincipalType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *PrincipalClient) List(opts *types.ListOpts) (*PrincipalCollection, error) {
+	resp := &PrincipalCollection{}
+	err := c.apiClient.Ops.DoList(PrincipalType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *PrincipalClient) ListAll(opts *types.ListOpts) (*PrincipalCollection, error) {
+	resp := &PrincipalCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *PrincipalCollection) Next() (*PrincipalCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &PrincipalCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *PrincipalClient) ByID(id string) (*Principal, error) {
+	resp := &Principal{}
+	err := c.apiClient.Ops.DoByID(PrincipalType, id, resp)
+	return resp, err
+}
+
+func (c *PrincipalClient) Delete(container *Principal) error {
+	return c.apiClient.Ops.DoResourceDelete(PrincipalType, &container.Resource)
+}
+
+func (c *PrincipalClient) CollectionActionSearch(resource *PrincipalCollection, input *SearchPrincipalsInput) (*PrincipalCollection, error) {
+	resp := &PrincipalCollection{}
+	err := c.apiClient.Ops.DoCollectionAction(PrincipalType, "search", &resource.Collection, input, resp)
+	return resp, err
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_private_registry.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_private_registry.go
new file mode 100644
index 00000000..1f6f1999
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_private_registry.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	PrivateRegistryType                     = "privateRegistry"
+	PrivateRegistryFieldECRCredentialPlugin = "ecrCredentialPlugin"
+	PrivateRegistryFieldIsDefault           = "isDefault"
+	PrivateRegistryFieldPassword            = "password"
+	PrivateRegistryFieldURL                 = "url"
+	PrivateRegistryFieldUser                = "user"
+)
+
+type PrivateRegistry struct {
+	ECRCredentialPlugin *ECRCredentialPlugin `json:"ecrCredentialPlugin,omitempty" yaml:"ecrCredentialPlugin,omitempty"`
+	IsDefault           bool                 `json:"isDefault,omitempty" yaml:"isDefault,omitempty"`
+	Password            string               `json:"password,omitempty" yaml:"password,omitempty"`
+	URL                 string               `json:"url,omitempty" yaml:"url,omitempty"`
+	User                string               `json:"user,omitempty" yaml:"user,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_process.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_process.go
new file mode 100644
index 00000000..425fd657
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_process.go
@@ -0,0 +1,40 @@
+package client
+
+const (
+	ProcessType                         = "process"
+	ProcessFieldArgs                    = "args"
+	ProcessFieldBinds                   = "binds"
+	ProcessFieldCommand                 = "command"
+	ProcessFieldEnv                     = "env"
+	ProcessFieldHealthCheck             = "healthCheck"
+	ProcessFieldImage                   = "image"
+	ProcessFieldImageRegistryAuthConfig = "imageRegistryAuthConfig"
+	ProcessFieldLabels                  = "labels"
+	ProcessFieldName                    = "name"
+	ProcessFieldNetworkMode             = "networkMode"
+	ProcessFieldPidMode                 = "pidMode"
+	ProcessFieldPrivileged              = "privileged"
+	ProcessFieldPublish                 = "publish"
+	ProcessFieldRestartPolicy           = "restartPolicy"
+	ProcessFieldUser                    = "user"
+	ProcessFieldVolumesFrom             = "volumesFrom"
+)
+
+type Process struct {
+	Args                    []string          `json:"args,omitempty" yaml:"args,omitempty"`
+	Binds                   []string          `json:"binds,omitempty" yaml:"binds,omitempty"`
+	Command                 []string          `json:"command,omitempty" yaml:"command,omitempty"`
+	Env                     []string          `json:"env,omitempty" yaml:"env,omitempty"`
+	HealthCheck             *HealthCheck      `json:"healthCheck,omitempty" yaml:"healthCheck,omitempty"`
+	Image                   string            `json:"image,omitempty" yaml:"image,omitempty"`
+	ImageRegistryAuthConfig string            `json:"imageRegistryAuthConfig,omitempty" yaml:"imageRegistryAuthConfig,omitempty"`
+	Labels                  map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                    string            `json:"name,omitempty" yaml:"name,omitempty"`
+	NetworkMode             string            `json:"networkMode,omitempty" yaml:"networkMode,omitempty"`
+	PidMode                 string            `json:"pidMode,omitempty" yaml:"pidMode,omitempty"`
+	Privileged              bool              `json:"privileged,omitempty" yaml:"privileged,omitempty"`
+	Publish                 []string          `json:"publish,omitempty" yaml:"publish,omitempty"`
+	RestartPolicy           string            `json:"restartPolicy,omitempty" yaml:"restartPolicy,omitempty"`
+	User                    string            `json:"user,omitempty" yaml:"user,omitempty"`
+	VolumesFrom             []string          `json:"volumesFrom,omitempty" yaml:"volumesFrom,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project.go
new file mode 100644
index 00000000..63ae4240
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project.go
@@ -0,0 +1,145 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	ProjectType                               = "project"
+	ProjectFieldAnnotations                   = "annotations"
+	ProjectFieldClusterID                     = "clusterId"
+	ProjectFieldConditions                    = "conditions"
+	ProjectFieldContainerDefaultResourceLimit = "containerDefaultResourceLimit"
+	ProjectFieldCreated                       = "created"
+	ProjectFieldCreatorID                     = "creatorId"
+	ProjectFieldDescription                   = "description"
+	ProjectFieldLabels                        = "labels"
+	ProjectFieldName                          = "name"
+	ProjectFieldNamespaceDefaultResourceQuota = "namespaceDefaultResourceQuota"
+	ProjectFieldNamespaceId                   = "namespaceId"
+	ProjectFieldOwnerReferences               = "ownerReferences"
+	ProjectFieldRemoved                       = "removed"
+	ProjectFieldResourceQuota                 = "resourceQuota"
+	ProjectFieldState                         = "state"
+	ProjectFieldTransitioning                 = "transitioning"
+	ProjectFieldTransitioningMessage          = "transitioningMessage"
+	ProjectFieldUUID                          = "uuid"
+)
+
+type Project struct {
+	types.Resource
+	Annotations                   map[string]string       `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	ClusterID                     string                  `json:"clusterId,omitempty" yaml:"clusterId,omitempty"`
+	Conditions                    []ProjectCondition      `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	ContainerDefaultResourceLimit *ContainerResourceLimit `json:"containerDefaultResourceLimit,omitempty" yaml:"containerDefaultResourceLimit,omitempty"`
+	Created                       string                  `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID                     string                  `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Description                   string                  `json:"description,omitempty" yaml:"description,omitempty"`
+	Labels                        map[string]string       `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                          string                  `json:"name,omitempty" yaml:"name,omitempty"`
+	NamespaceDefaultResourceQuota *NamespaceResourceQuota `json:"namespaceDefaultResourceQuota,omitempty" yaml:"namespaceDefaultResourceQuota,omitempty"`
+	NamespaceId                   string                  `json:"namespaceId,omitempty" yaml:"namespaceId,omitempty"`
+	OwnerReferences               []OwnerReference        `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed                       string                  `json:"removed,omitempty" yaml:"removed,omitempty"`
+	ResourceQuota                 *ProjectResourceQuota   `json:"resourceQuota,omitempty" yaml:"resourceQuota,omitempty"`
+	State                         string                  `json:"state,omitempty" yaml:"state,omitempty"`
+	Transitioning                 string                  `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage          string                  `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                          string                  `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type ProjectCollection struct {
+	types.Collection
+	Data   []Project `json:"data,omitempty"`
+	client *ProjectClient
+}
+
+type ProjectClient struct {
+	apiClient *Client
+}
+
+type ProjectOperations interface {
+	List(opts *types.ListOpts) (*ProjectCollection, error)
+	ListAll(opts *types.ListOpts) (*ProjectCollection, error)
+	Create(opts *Project) (*Project, error)
+	Update(existing *Project, updates interface{}) (*Project, error)
+	Replace(existing *Project) (*Project, error)
+	ByID(id string) (*Project, error)
+	Delete(container *Project) error
+
+	ActionExportYaml(resource *Project) error
+}
+
+func newProjectClient(apiClient *Client) *ProjectClient {
+	return &ProjectClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *ProjectClient) Create(container *Project) (*Project, error) {
+	resp := &Project{}
+	err := c.apiClient.Ops.DoCreate(ProjectType, container, resp)
+	return resp, err
+}
+
+func (c *ProjectClient) Update(existing *Project, updates interface{}) (*Project, error) {
+	resp := &Project{}
+	err := c.apiClient.Ops.DoUpdate(ProjectType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *ProjectClient) Replace(obj *Project) (*Project, error) {
+	resp := &Project{}
+	err := c.apiClient.Ops.DoReplace(ProjectType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *ProjectClient) List(opts *types.ListOpts) (*ProjectCollection, error) {
+	resp := &ProjectCollection{}
+	err := c.apiClient.Ops.DoList(ProjectType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *ProjectClient) ListAll(opts *types.ListOpts) (*ProjectCollection, error) {
+	resp := &ProjectCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *ProjectCollection) Next() (*ProjectCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &ProjectCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *ProjectClient) ByID(id string) (*Project, error) {
+	resp := &Project{}
+	err := c.apiClient.Ops.DoByID(ProjectType, id, resp)
+	return resp, err
+}
+
+func (c *ProjectClient) Delete(container *Project) error {
+	return c.apiClient.Ops.DoResourceDelete(ProjectType, &container.Resource)
+}
+
+func (c *ProjectClient) ActionExportYaml(resource *Project) error {
+	err := c.apiClient.Ops.DoAction(ProjectType, "exportYaml", &resource.Resource, nil, nil)
+	return err
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_catalog.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_catalog.go
new file mode 100644
index 00000000..2185abe0
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_catalog.go
@@ -0,0 +1,168 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	ProjectCatalogType                      = "projectCatalog"
+	ProjectCatalogFieldAnnotations          = "annotations"
+	ProjectCatalogFieldBranch               = "branch"
+	ProjectCatalogFieldCatalogSecrets       = "catalogSecrets"
+	ProjectCatalogFieldCommit               = "commit"
+	ProjectCatalogFieldConditions           = "conditions"
+	ProjectCatalogFieldCreated              = "created"
+	ProjectCatalogFieldCreatorID            = "creatorId"
+	ProjectCatalogFieldCredentialSecret     = "credentialSecret"
+	ProjectCatalogFieldDescription          = "description"
+	ProjectCatalogFieldHelmVersion          = "helmVersion"
+	ProjectCatalogFieldKind                 = "kind"
+	ProjectCatalogFieldLabels               = "labels"
+	ProjectCatalogFieldLastRefreshTimestamp = "lastRefreshTimestamp"
+	ProjectCatalogFieldName                 = "name"
+	ProjectCatalogFieldNamespaceId          = "namespaceId"
+	ProjectCatalogFieldOwnerReferences      = "ownerReferences"
+	ProjectCatalogFieldPassword             = "password"
+	ProjectCatalogFieldProjectID            = "projectId"
+	ProjectCatalogFieldRemoved              = "removed"
+	ProjectCatalogFieldState                = "state"
+	ProjectCatalogFieldTransitioning        = "transitioning"
+	ProjectCatalogFieldTransitioningMessage = "transitioningMessage"
+	ProjectCatalogFieldURL                  = "url"
+	ProjectCatalogFieldUUID                 = "uuid"
+	ProjectCatalogFieldUsername             = "username"
+)
+
+type ProjectCatalog struct {
+	types.Resource
+	Annotations          map[string]string  `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Branch               string             `json:"branch,omitempty" yaml:"branch,omitempty"`
+	CatalogSecrets       *CatalogSecrets    `json:"catalogSecrets,omitempty" yaml:"catalogSecrets,omitempty"`
+	Commit               string             `json:"commit,omitempty" yaml:"commit,omitempty"`
+	Conditions           []CatalogCondition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	Created              string             `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID            string             `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	CredentialSecret     string             `json:"credentialSecret,omitempty" yaml:"credentialSecret,omitempty"`
+	Description          string             `json:"description,omitempty" yaml:"description,omitempty"`
+	HelmVersion          string             `json:"helmVersion,omitempty" yaml:"helmVersion,omitempty"`
+	Kind                 string             `json:"kind,omitempty" yaml:"kind,omitempty"`
+	Labels               map[string]string  `json:"labels,omitempty" yaml:"labels,omitempty"`
+	LastRefreshTimestamp string             `json:"lastRefreshTimestamp,omitempty" yaml:"lastRefreshTimestamp,omitempty"`
+	Name                 string             `json:"name,omitempty" yaml:"name,omitempty"`
+	NamespaceId          string             `json:"namespaceId,omitempty" yaml:"namespaceId,omitempty"`
+	OwnerReferences      []OwnerReference   `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Password             string             `json:"password,omitempty" yaml:"password,omitempty"`
+	ProjectID            string             `json:"projectId,omitempty" yaml:"projectId,omitempty"`
+	Removed              string             `json:"removed,omitempty" yaml:"removed,omitempty"`
+	State                string             `json:"state,omitempty" yaml:"state,omitempty"`
+	Transitioning        string             `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage string             `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	URL                  string             `json:"url,omitempty" yaml:"url,omitempty"`
+	UUID                 string             `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	Username             string             `json:"username,omitempty" yaml:"username,omitempty"`
+}
+
+type ProjectCatalogCollection struct {
+	types.Collection
+	Data   []ProjectCatalog `json:"data,omitempty"`
+	client *ProjectCatalogClient
+}
+
+type ProjectCatalogClient struct {
+	apiClient *Client
+}
+
+type ProjectCatalogOperations interface {
+	List(opts *types.ListOpts) (*ProjectCatalogCollection, error)
+	ListAll(opts *types.ListOpts) (*ProjectCatalogCollection, error)
+	Create(opts *ProjectCatalog) (*ProjectCatalog, error)
+	Update(existing *ProjectCatalog, updates interface{}) (*ProjectCatalog, error)
+	Replace(existing *ProjectCatalog) (*ProjectCatalog, error)
+	ByID(id string) (*ProjectCatalog, error)
+	Delete(container *ProjectCatalog) error
+
+	ActionRefresh(resource *ProjectCatalog) (*CatalogRefresh, error)
+
+	CollectionActionRefresh(resource *ProjectCatalogCollection) (*CatalogRefresh, error)
+}
+
+func newProjectCatalogClient(apiClient *Client) *ProjectCatalogClient {
+	return &ProjectCatalogClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *ProjectCatalogClient) Create(container *ProjectCatalog) (*ProjectCatalog, error) {
+	resp := &ProjectCatalog{}
+	err := c.apiClient.Ops.DoCreate(ProjectCatalogType, container, resp)
+	return resp, err
+}
+
+func (c *ProjectCatalogClient) Update(existing *ProjectCatalog, updates interface{}) (*ProjectCatalog, error) {
+	resp := &ProjectCatalog{}
+	err := c.apiClient.Ops.DoUpdate(ProjectCatalogType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *ProjectCatalogClient) Replace(obj *ProjectCatalog) (*ProjectCatalog, error) {
+	resp := &ProjectCatalog{}
+	err := c.apiClient.Ops.DoReplace(ProjectCatalogType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *ProjectCatalogClient) List(opts *types.ListOpts) (*ProjectCatalogCollection, error) {
+	resp := &ProjectCatalogCollection{}
+	err := c.apiClient.Ops.DoList(ProjectCatalogType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *ProjectCatalogClient) ListAll(opts *types.ListOpts) (*ProjectCatalogCollection, error) {
+	resp := &ProjectCatalogCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *ProjectCatalogCollection) Next() (*ProjectCatalogCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &ProjectCatalogCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *ProjectCatalogClient) ByID(id string) (*ProjectCatalog, error) {
+	resp := &ProjectCatalog{}
+	err := c.apiClient.Ops.DoByID(ProjectCatalogType, id, resp)
+	return resp, err
+}
+
+func (c *ProjectCatalogClient) Delete(container *ProjectCatalog) error {
+	return c.apiClient.Ops.DoResourceDelete(ProjectCatalogType, &container.Resource)
+}
+
+func (c *ProjectCatalogClient) ActionRefresh(resource *ProjectCatalog) (*CatalogRefresh, error) {
+	resp := &CatalogRefresh{}
+	err := c.apiClient.Ops.DoAction(ProjectCatalogType, "refresh", &resource.Resource, nil, resp)
+	return resp, err
+}
+
+func (c *ProjectCatalogClient) CollectionActionRefresh(resource *ProjectCatalogCollection) (*CatalogRefresh, error) {
+	resp := &CatalogRefresh{}
+	err := c.apiClient.Ops.DoCollectionAction(ProjectCatalogType, "refresh", &resource.Collection, nil, resp)
+	return resp, err
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_condition.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_condition.go
new file mode 100644
index 00000000..b0907cfb
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_condition.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	ProjectConditionType                    = "projectCondition"
+	ProjectConditionFieldLastTransitionTime = "lastTransitionTime"
+	ProjectConditionFieldLastUpdateTime     = "lastUpdateTime"
+	ProjectConditionFieldMessage            = "message"
+	ProjectConditionFieldReason             = "reason"
+	ProjectConditionFieldStatus             = "status"
+	ProjectConditionFieldType               = "type"
+)
+
+type ProjectCondition struct {
+	LastTransitionTime string `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty"`
+	LastUpdateTime     string `json:"lastUpdateTime,omitempty" yaml:"lastUpdateTime,omitempty"`
+	Message            string `json:"message,omitempty" yaml:"message,omitempty"`
+	Reason             string `json:"reason,omitempty" yaml:"reason,omitempty"`
+	Status             string `json:"status,omitempty" yaml:"status,omitempty"`
+	Type               string `json:"type,omitempty" yaml:"type,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_network_policy.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_network_policy.go
new file mode 100644
index 00000000..0df489f8
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_network_policy.go
@@ -0,0 +1,132 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	ProjectNetworkPolicyType                      = "projectNetworkPolicy"
+	ProjectNetworkPolicyFieldAnnotations          = "annotations"
+	ProjectNetworkPolicyFieldCreated              = "created"
+	ProjectNetworkPolicyFieldCreatorID            = "creatorId"
+	ProjectNetworkPolicyFieldDescription          = "description"
+	ProjectNetworkPolicyFieldLabels               = "labels"
+	ProjectNetworkPolicyFieldName                 = "name"
+	ProjectNetworkPolicyFieldNamespaceId          = "namespaceId"
+	ProjectNetworkPolicyFieldOwnerReferences      = "ownerReferences"
+	ProjectNetworkPolicyFieldProjectID            = "projectId"
+	ProjectNetworkPolicyFieldRemoved              = "removed"
+	ProjectNetworkPolicyFieldState                = "state"
+	ProjectNetworkPolicyFieldStatus               = "status"
+	ProjectNetworkPolicyFieldTransitioning        = "transitioning"
+	ProjectNetworkPolicyFieldTransitioningMessage = "transitioningMessage"
+	ProjectNetworkPolicyFieldUUID                 = "uuid"
+)
+
+type ProjectNetworkPolicy struct {
+	types.Resource
+	Annotations          map[string]string           `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created              string                      `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID            string                      `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Description          string                      `json:"description,omitempty" yaml:"description,omitempty"`
+	Labels               map[string]string           `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                 string                      `json:"name,omitempty" yaml:"name,omitempty"`
+	NamespaceId          string                      `json:"namespaceId,omitempty" yaml:"namespaceId,omitempty"`
+	OwnerReferences      []OwnerReference            `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	ProjectID            string                      `json:"projectId,omitempty" yaml:"projectId,omitempty"`
+	Removed              string                      `json:"removed,omitempty" yaml:"removed,omitempty"`
+	State                string                      `json:"state,omitempty" yaml:"state,omitempty"`
+	Status               *ProjectNetworkPolicyStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	Transitioning        string                      `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage string                      `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                 string                      `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type ProjectNetworkPolicyCollection struct {
+	types.Collection
+	Data   []ProjectNetworkPolicy `json:"data,omitempty"`
+	client *ProjectNetworkPolicyClient
+}
+
+type ProjectNetworkPolicyClient struct {
+	apiClient *Client
+}
+
+type ProjectNetworkPolicyOperations interface {
+	List(opts *types.ListOpts) (*ProjectNetworkPolicyCollection, error)
+	ListAll(opts *types.ListOpts) (*ProjectNetworkPolicyCollection, error)
+	Create(opts *ProjectNetworkPolicy) (*ProjectNetworkPolicy, error)
+	Update(existing *ProjectNetworkPolicy, updates interface{}) (*ProjectNetworkPolicy, error)
+	Replace(existing *ProjectNetworkPolicy) (*ProjectNetworkPolicy, error)
+	ByID(id string) (*ProjectNetworkPolicy, error)
+	Delete(container *ProjectNetworkPolicy) error
+}
+
+func newProjectNetworkPolicyClient(apiClient *Client) *ProjectNetworkPolicyClient {
+	return &ProjectNetworkPolicyClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *ProjectNetworkPolicyClient) Create(container *ProjectNetworkPolicy) (*ProjectNetworkPolicy, error) {
+	resp := &ProjectNetworkPolicy{}
+	err := c.apiClient.Ops.DoCreate(ProjectNetworkPolicyType, container, resp)
+	return resp, err
+}
+
+func (c *ProjectNetworkPolicyClient) Update(existing *ProjectNetworkPolicy, updates interface{}) (*ProjectNetworkPolicy, error) {
+	resp := &ProjectNetworkPolicy{}
+	err := c.apiClient.Ops.DoUpdate(ProjectNetworkPolicyType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *ProjectNetworkPolicyClient) Replace(obj *ProjectNetworkPolicy) (*ProjectNetworkPolicy, error) {
+	resp := &ProjectNetworkPolicy{}
+	err := c.apiClient.Ops.DoReplace(ProjectNetworkPolicyType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *ProjectNetworkPolicyClient) List(opts *types.ListOpts) (*ProjectNetworkPolicyCollection, error) {
+	resp := &ProjectNetworkPolicyCollection{}
+	err := c.apiClient.Ops.DoList(ProjectNetworkPolicyType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *ProjectNetworkPolicyClient) ListAll(opts *types.ListOpts) (*ProjectNetworkPolicyCollection, error) {
+	resp := &ProjectNetworkPolicyCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *ProjectNetworkPolicyCollection) Next() (*ProjectNetworkPolicyCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &ProjectNetworkPolicyCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *ProjectNetworkPolicyClient) ByID(id string) (*ProjectNetworkPolicy, error) {
+	resp := &ProjectNetworkPolicy{}
+	err := c.apiClient.Ops.DoByID(ProjectNetworkPolicyType, id, resp)
+	return resp, err
+}
+
+func (c *ProjectNetworkPolicyClient) Delete(container *ProjectNetworkPolicy) error {
+	return c.apiClient.Ops.DoResourceDelete(ProjectNetworkPolicyType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_network_policy_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_network_policy_spec.go
new file mode 100644
index 00000000..6875efbd
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_network_policy_spec.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	ProjectNetworkPolicySpecType             = "projectNetworkPolicySpec"
+	ProjectNetworkPolicySpecFieldDescription = "description"
+	ProjectNetworkPolicySpecFieldProjectID   = "projectId"
+)
+
+type ProjectNetworkPolicySpec struct {
+	Description string `json:"description,omitempty" yaml:"description,omitempty"`
+	ProjectID   string `json:"projectId,omitempty" yaml:"projectId,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_network_policy_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_network_policy_status.go
new file mode 100644
index 00000000..cef3c163
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_network_policy_status.go
@@ -0,0 +1,8 @@
+package client
+
+const (
+	ProjectNetworkPolicyStatusType = "projectNetworkPolicyStatus"
+)
+
+type ProjectNetworkPolicyStatus struct {
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_resource_quota.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_resource_quota.go
new file mode 100644
index 00000000..05f73660
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_resource_quota.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	ProjectResourceQuotaType           = "projectResourceQuota"
+	ProjectResourceQuotaFieldLimit     = "limit"
+	ProjectResourceQuotaFieldUsedLimit = "usedLimit"
+)
+
+type ProjectResourceQuota struct {
+	Limit     *ResourceQuotaLimit `json:"limit,omitempty" yaml:"limit,omitempty"`
+	UsedLimit *ResourceQuotaLimit `json:"usedLimit,omitempty" yaml:"usedLimit,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_role_template_binding.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_role_template_binding.go
new file mode 100644
index 00000000..47237560
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_role_template_binding.go
@@ -0,0 +1,134 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	ProjectRoleTemplateBindingType                  = "projectRoleTemplateBinding"
+	ProjectRoleTemplateBindingFieldAnnotations      = "annotations"
+	ProjectRoleTemplateBindingFieldCreated          = "created"
+	ProjectRoleTemplateBindingFieldCreatorID        = "creatorId"
+	ProjectRoleTemplateBindingFieldGroupID          = "groupId"
+	ProjectRoleTemplateBindingFieldGroupPrincipalID = "groupPrincipalId"
+	ProjectRoleTemplateBindingFieldLabels           = "labels"
+	ProjectRoleTemplateBindingFieldName             = "name"
+	ProjectRoleTemplateBindingFieldNamespaceId      = "namespaceId"
+	ProjectRoleTemplateBindingFieldOwnerReferences  = "ownerReferences"
+	ProjectRoleTemplateBindingFieldProjectID        = "projectId"
+	ProjectRoleTemplateBindingFieldRemoved          = "removed"
+	ProjectRoleTemplateBindingFieldRoleTemplateID   = "roleTemplateId"
+	ProjectRoleTemplateBindingFieldServiceAccount   = "serviceAccount"
+	ProjectRoleTemplateBindingFieldUUID             = "uuid"
+	ProjectRoleTemplateBindingFieldUserID           = "userId"
+	ProjectRoleTemplateBindingFieldUserPrincipalID  = "userPrincipalId"
+)
+
+type ProjectRoleTemplateBinding struct {
+	types.Resource
+	Annotations      map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created          string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID        string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	GroupID          string            `json:"groupId,omitempty" yaml:"groupId,omitempty"`
+	GroupPrincipalID string            `json:"groupPrincipalId,omitempty" yaml:"groupPrincipalId,omitempty"`
+	Labels           map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name             string            `json:"name,omitempty" yaml:"name,omitempty"`
+	NamespaceId      string            `json:"namespaceId,omitempty" yaml:"namespaceId,omitempty"`
+	OwnerReferences  []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	ProjectID        string            `json:"projectId,omitempty" yaml:"projectId,omitempty"`
+	Removed          string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	RoleTemplateID   string            `json:"roleTemplateId,omitempty" yaml:"roleTemplateId,omitempty"`
+	ServiceAccount   string            `json:"serviceAccount,omitempty" yaml:"serviceAccount,omitempty"`
+	UUID             string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserID           string            `json:"userId,omitempty" yaml:"userId,omitempty"`
+	UserPrincipalID  string            `json:"userPrincipalId,omitempty" yaml:"userPrincipalId,omitempty"`
+}
+
+type ProjectRoleTemplateBindingCollection struct {
+	types.Collection
+	Data   []ProjectRoleTemplateBinding `json:"data,omitempty"`
+	client *ProjectRoleTemplateBindingClient
+}
+
+type ProjectRoleTemplateBindingClient struct {
+	apiClient *Client
+}
+
+type ProjectRoleTemplateBindingOperations interface {
+	List(opts *types.ListOpts) (*ProjectRoleTemplateBindingCollection, error)
+	ListAll(opts *types.ListOpts) (*ProjectRoleTemplateBindingCollection, error)
+	Create(opts *ProjectRoleTemplateBinding) (*ProjectRoleTemplateBinding, error)
+	Update(existing *ProjectRoleTemplateBinding, updates interface{}) (*ProjectRoleTemplateBinding, error)
+	Replace(existing *ProjectRoleTemplateBinding) (*ProjectRoleTemplateBinding, error)
+	ByID(id string) (*ProjectRoleTemplateBinding, error)
+	Delete(container *ProjectRoleTemplateBinding) error
+}
+
+func newProjectRoleTemplateBindingClient(apiClient *Client) *ProjectRoleTemplateBindingClient {
+	return &ProjectRoleTemplateBindingClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *ProjectRoleTemplateBindingClient) Create(container *ProjectRoleTemplateBinding) (*ProjectRoleTemplateBinding, error) {
+	resp := &ProjectRoleTemplateBinding{}
+	err := c.apiClient.Ops.DoCreate(ProjectRoleTemplateBindingType, container, resp)
+	return resp, err
+}
+
+func (c *ProjectRoleTemplateBindingClient) Update(existing *ProjectRoleTemplateBinding, updates interface{}) (*ProjectRoleTemplateBinding, error) {
+	resp := &ProjectRoleTemplateBinding{}
+	err := c.apiClient.Ops.DoUpdate(ProjectRoleTemplateBindingType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *ProjectRoleTemplateBindingClient) Replace(obj *ProjectRoleTemplateBinding) (*ProjectRoleTemplateBinding, error) {
+	resp := &ProjectRoleTemplateBinding{}
+	err := c.apiClient.Ops.DoReplace(ProjectRoleTemplateBindingType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *ProjectRoleTemplateBindingClient) List(opts *types.ListOpts) (*ProjectRoleTemplateBindingCollection, error) {
+	resp := &ProjectRoleTemplateBindingCollection{}
+	err := c.apiClient.Ops.DoList(ProjectRoleTemplateBindingType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *ProjectRoleTemplateBindingClient) ListAll(opts *types.ListOpts) (*ProjectRoleTemplateBindingCollection, error) {
+	resp := &ProjectRoleTemplateBindingCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *ProjectRoleTemplateBindingCollection) Next() (*ProjectRoleTemplateBindingCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &ProjectRoleTemplateBindingCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *ProjectRoleTemplateBindingClient) ByID(id string) (*ProjectRoleTemplateBinding, error) {
+	resp := &ProjectRoleTemplateBinding{}
+	err := c.apiClient.Ops.DoByID(ProjectRoleTemplateBindingType, id, resp)
+	return resp, err
+}
+
+func (c *ProjectRoleTemplateBindingClient) Delete(container *ProjectRoleTemplateBinding) error {
+	return c.apiClient.Ops.DoResourceDelete(ProjectRoleTemplateBindingType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_spec.go
new file mode 100644
index 00000000..e1e940bc
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_spec.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	ProjectSpecType                               = "projectSpec"
+	ProjectSpecFieldClusterID                     = "clusterId"
+	ProjectSpecFieldContainerDefaultResourceLimit = "containerDefaultResourceLimit"
+	ProjectSpecFieldDescription                   = "description"
+	ProjectSpecFieldDisplayName                   = "displayName"
+	ProjectSpecFieldNamespaceDefaultResourceQuota = "namespaceDefaultResourceQuota"
+	ProjectSpecFieldResourceQuota                 = "resourceQuota"
+)
+
+type ProjectSpec struct {
+	ClusterID                     string                  `json:"clusterId,omitempty" yaml:"clusterId,omitempty"`
+	ContainerDefaultResourceLimit *ContainerResourceLimit `json:"containerDefaultResourceLimit,omitempty" yaml:"containerDefaultResourceLimit,omitempty"`
+	Description                   string                  `json:"description,omitempty" yaml:"description,omitempty"`
+	DisplayName                   string                  `json:"displayName,omitempty" yaml:"displayName,omitempty"`
+	NamespaceDefaultResourceQuota *NamespaceResourceQuota `json:"namespaceDefaultResourceQuota,omitempty" yaml:"namespaceDefaultResourceQuota,omitempty"`
+	ResourceQuota                 *ProjectResourceQuota   `json:"resourceQuota,omitempty" yaml:"resourceQuota,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_status.go
new file mode 100644
index 00000000..7806c91b
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_project_status.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	ProjectStatusType            = "projectStatus"
+	ProjectStatusFieldConditions = "conditions"
+)
+
+type ProjectStatus struct {
+	Conditions []ProjectCondition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_projected_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_projected_volume_source.go
new file mode 100644
index 00000000..f90539ee
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_projected_volume_source.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	ProjectedVolumeSourceType             = "projectedVolumeSource"
+	ProjectedVolumeSourceFieldDefaultMode = "defaultMode"
+	ProjectedVolumeSourceFieldSources     = "sources"
+)
+
+type ProjectedVolumeSource struct {
+	DefaultMode *int64             `json:"defaultMode,omitempty" yaml:"defaultMode,omitempty"`
+	Sources     []VolumeProjection `json:"sources,omitempty" yaml:"sources,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_provider_configuration.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_provider_configuration.go
new file mode 100644
index 00000000..4a29cfdf
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_provider_configuration.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	ProviderConfigurationType           = "providerConfiguration"
+	ProviderConfigurationFieldAESCBC    = "aescbc"
+	ProviderConfigurationFieldAESGCM    = "aesgcm"
+	ProviderConfigurationFieldIdentity  = "identity"
+	ProviderConfigurationFieldKMS       = "kms"
+	ProviderConfigurationFieldSecretbox = "secretbox"
+)
+
+type ProviderConfiguration struct {
+	AESCBC    *AESConfiguration       `json:"aescbc,omitempty" yaml:"aescbc,omitempty"`
+	AESGCM    *AESConfiguration       `json:"aesgcm,omitempty" yaml:"aesgcm,omitempty"`
+	Identity  *IdentityConfiguration  `json:"identity,omitempty" yaml:"identity,omitempty"`
+	KMS       *KMSConfiguration       `json:"kms,omitempty" yaml:"kms,omitempty"`
+	Secretbox *SecretboxConfiguration `json:"secretbox,omitempty" yaml:"secretbox,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_public_endpoint.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_public_endpoint.go
new file mode 100644
index 00000000..85844aac
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_public_endpoint.go
@@ -0,0 +1,28 @@
+package client
+
+const (
+	PublicEndpointType           = "publicEndpoint"
+	PublicEndpointFieldAddresses = "addresses"
+	PublicEndpointFieldAllNodes  = "allNodes"
+	PublicEndpointFieldHostname  = "hostname"
+	PublicEndpointFieldIngressID = "ingressId"
+	PublicEndpointFieldNodeID    = "nodeId"
+	PublicEndpointFieldPath      = "path"
+	PublicEndpointFieldPodID     = "podId"
+	PublicEndpointFieldPort      = "port"
+	PublicEndpointFieldProtocol  = "protocol"
+	PublicEndpointFieldServiceID = "serviceId"
+)
+
+type PublicEndpoint struct {
+	Addresses []string `json:"addresses,omitempty" yaml:"addresses,omitempty"`
+	AllNodes  bool     `json:"allNodes,omitempty" yaml:"allNodes,omitempty"`
+	Hostname  string   `json:"hostname,omitempty" yaml:"hostname,omitempty"`
+	IngressID string   `json:"ingressId,omitempty" yaml:"ingressId,omitempty"`
+	NodeID    string   `json:"nodeId,omitempty" yaml:"nodeId,omitempty"`
+	Path      string   `json:"path,omitempty" yaml:"path,omitempty"`
+	PodID     string   `json:"podId,omitempty" yaml:"podId,omitempty"`
+	Port      int64    `json:"port,omitempty" yaml:"port,omitempty"`
+	Protocol  string   `json:"protocol,omitempty" yaml:"protocol,omitempty"`
+	ServiceID string   `json:"serviceId,omitempty" yaml:"serviceId,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_question.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_question.go
new file mode 100644
index 00000000..60426833
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_question.go
@@ -0,0 +1,44 @@
+package client
+
+const (
+	QuestionType                   = "question"
+	QuestionFieldDefault           = "default"
+	QuestionFieldDescription       = "description"
+	QuestionFieldGroup             = "group"
+	QuestionFieldInvalidChars      = "invalidChars"
+	QuestionFieldLabel             = "label"
+	QuestionFieldMax               = "max"
+	QuestionFieldMaxLength         = "maxLength"
+	QuestionFieldMin               = "min"
+	QuestionFieldMinLength         = "minLength"
+	QuestionFieldOptions           = "options"
+	QuestionFieldRequired          = "required"
+	QuestionFieldSatisfies         = "satisfies"
+	QuestionFieldShowIf            = "showIf"
+	QuestionFieldShowSubquestionIf = "showSubquestionIf"
+	QuestionFieldSubquestions      = "subquestions"
+	QuestionFieldType              = "type"
+	QuestionFieldValidChars        = "validChars"
+	QuestionFieldVariable          = "variable"
+)
+
+type Question struct {
+	Default           string        `json:"default,omitempty" yaml:"default,omitempty"`
+	Description       string        `json:"description,omitempty" yaml:"description,omitempty"`
+	Group             string        `json:"group,omitempty" yaml:"group,omitempty"`
+	InvalidChars      string        `json:"invalidChars,omitempty" yaml:"invalidChars,omitempty"`
+	Label             string        `json:"label,omitempty" yaml:"label,omitempty"`
+	Max               int64         `json:"max,omitempty" yaml:"max,omitempty"`
+	MaxLength         int64         `json:"maxLength,omitempty" yaml:"maxLength,omitempty"`
+	Min               int64         `json:"min,omitempty" yaml:"min,omitempty"`
+	MinLength         int64         `json:"minLength,omitempty" yaml:"minLength,omitempty"`
+	Options           []string      `json:"options,omitempty" yaml:"options,omitempty"`
+	Required          bool          `json:"required,omitempty" yaml:"required,omitempty"`
+	Satisfies         string        `json:"satisfies,omitempty" yaml:"satisfies,omitempty"`
+	ShowIf            string        `json:"showIf,omitempty" yaml:"showIf,omitempty"`
+	ShowSubquestionIf string        `json:"showSubquestionIf,omitempty" yaml:"showSubquestionIf,omitempty"`
+	Subquestions      []SubQuestion `json:"subquestions,omitempty" yaml:"subquestions,omitempty"`
+	Type              string        `json:"type,omitempty" yaml:"type,omitempty"`
+	ValidChars        string        `json:"validChars,omitempty" yaml:"validChars,omitempty"`
+	Variable          string        `json:"variable,omitempty" yaml:"variable,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_quobyte_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_quobyte_volume_source.go
new file mode 100644
index 00000000..41e308d3
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_quobyte_volume_source.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	QuobyteVolumeSourceType          = "quobyteVolumeSource"
+	QuobyteVolumeSourceFieldGroup    = "group"
+	QuobyteVolumeSourceFieldReadOnly = "readOnly"
+	QuobyteVolumeSourceFieldRegistry = "registry"
+	QuobyteVolumeSourceFieldTenant   = "tenant"
+	QuobyteVolumeSourceFieldUser     = "user"
+	QuobyteVolumeSourceFieldVolume   = "volume"
+)
+
+type QuobyteVolumeSource struct {
+	Group    string `json:"group,omitempty" yaml:"group,omitempty"`
+	ReadOnly bool   `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+	Registry string `json:"registry,omitempty" yaml:"registry,omitempty"`
+	Tenant   string `json:"tenant,omitempty" yaml:"tenant,omitempty"`
+	User     string `json:"user,omitempty" yaml:"user,omitempty"`
+	Volume   string `json:"volume,omitempty" yaml:"volume,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rancher_kubernetes_engine_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rancher_kubernetes_engine_config.go
new file mode 100644
index 00000000..19d33699
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rancher_kubernetes_engine_config.go
@@ -0,0 +1,62 @@
+package client
+
+const (
+	RancherKubernetesEngineConfigType                     = "rancherKubernetesEngineConfig"
+	RancherKubernetesEngineConfigFieldAddonJobTimeout     = "addonJobTimeout"
+	RancherKubernetesEngineConfigFieldAddons              = "addons"
+	RancherKubernetesEngineConfigFieldAddonsInclude       = "addonsInclude"
+	RancherKubernetesEngineConfigFieldAuthentication      = "authentication"
+	RancherKubernetesEngineConfigFieldAuthorization       = "authorization"
+	RancherKubernetesEngineConfigFieldBastionHost         = "bastionHost"
+	RancherKubernetesEngineConfigFieldCloudProvider       = "cloudProvider"
+	RancherKubernetesEngineConfigFieldClusterName         = "clusterName"
+	RancherKubernetesEngineConfigFieldDNS                 = "dns"
+	RancherKubernetesEngineConfigFieldEnableCRIDockerd    = "enableCriDockerd"
+	RancherKubernetesEngineConfigFieldIgnoreDockerVersion = "ignoreDockerVersion"
+	RancherKubernetesEngineConfigFieldIngress             = "ingress"
+	RancherKubernetesEngineConfigFieldMonitoring          = "monitoring"
+	RancherKubernetesEngineConfigFieldNetwork             = "network"
+	RancherKubernetesEngineConfigFieldNodes               = "nodes"
+	RancherKubernetesEngineConfigFieldPrefixPath          = "prefixPath"
+	RancherKubernetesEngineConfigFieldPrivateRegistries   = "privateRegistries"
+	RancherKubernetesEngineConfigFieldRestore             = "restore"
+	RancherKubernetesEngineConfigFieldRotateCertificates  = "rotateCertificates"
+	RancherKubernetesEngineConfigFieldRotateEncryptionKey = "rotateEncryptionKey"
+	RancherKubernetesEngineConfigFieldSSHAgentAuth        = "sshAgentAuth"
+	RancherKubernetesEngineConfigFieldSSHCertPath         = "sshCertPath"
+	RancherKubernetesEngineConfigFieldSSHKeyPath          = "sshKeyPath"
+	RancherKubernetesEngineConfigFieldServices            = "services"
+	RancherKubernetesEngineConfigFieldUpgradeStrategy     = "upgradeStrategy"
+	RancherKubernetesEngineConfigFieldVersion             = "kubernetesVersion"
+	RancherKubernetesEngineConfigFieldWindowsPrefixPath   = "winPrefixPath"
+)
+
+type RancherKubernetesEngineConfig struct {
+	AddonJobTimeout     int64                `json:"addonJobTimeout,omitempty" yaml:"addonJobTimeout,omitempty"`
+	Addons              string               `json:"addons,omitempty" yaml:"addons,omitempty"`
+	AddonsInclude       []string             `json:"addonsInclude,omitempty" yaml:"addonsInclude,omitempty"`
+	Authentication      *AuthnConfig         `json:"authentication,omitempty" yaml:"authentication,omitempty"`
+	Authorization       *AuthzConfig         `json:"authorization,omitempty" yaml:"authorization,omitempty"`
+	BastionHost         *BastionHost         `json:"bastionHost,omitempty" yaml:"bastionHost,omitempty"`
+	CloudProvider       *CloudProvider       `json:"cloudProvider,omitempty" yaml:"cloudProvider,omitempty"`
+	ClusterName         string               `json:"clusterName,omitempty" yaml:"clusterName,omitempty"`
+	DNS                 *DNSConfig           `json:"dns,omitempty" yaml:"dns,omitempty"`
+	EnableCRIDockerd    *bool                `json:"enableCriDockerd,omitempty" yaml:"enableCriDockerd,omitempty"`
+	IgnoreDockerVersion *bool                `json:"ignoreDockerVersion,omitempty" yaml:"ignoreDockerVersion,omitempty"`
+	Ingress             *IngressConfig       `json:"ingress,omitempty" yaml:"ingress,omitempty"`
+	Monitoring          *MonitoringConfig    `json:"monitoring,omitempty" yaml:"monitoring,omitempty"`
+	Network             *NetworkConfig       `json:"network,omitempty" yaml:"network,omitempty"`
+	Nodes               []RKEConfigNode      `json:"nodes,omitempty" yaml:"nodes,omitempty"`
+	PrefixPath          string               `json:"prefixPath,omitempty" yaml:"prefixPath,omitempty"`
+	PrivateRegistries   []PrivateRegistry    `json:"privateRegistries,omitempty" yaml:"privateRegistries,omitempty"`
+	Restore             *RestoreConfig       `json:"restore,omitempty" yaml:"restore,omitempty"`
+	RotateCertificates  *RotateCertificates  `json:"rotateCertificates,omitempty" yaml:"rotateCertificates,omitempty"`
+	RotateEncryptionKey bool                 `json:"rotateEncryptionKey,omitempty" yaml:"rotateEncryptionKey,omitempty"`
+	SSHAgentAuth        bool                 `json:"sshAgentAuth,omitempty" yaml:"sshAgentAuth,omitempty"`
+	SSHCertPath         string               `json:"sshCertPath,omitempty" yaml:"sshCertPath,omitempty"`
+	SSHKeyPath          string               `json:"sshKeyPath,omitempty" yaml:"sshKeyPath,omitempty"`
+	Services            *RKEConfigServices   `json:"services,omitempty" yaml:"services,omitempty"`
+	UpgradeStrategy     *NodeUpgradeStrategy `json:"upgradeStrategy,omitempty" yaml:"upgradeStrategy,omitempty"`
+	Version             string               `json:"kubernetesVersion,omitempty" yaml:"kubernetesVersion,omitempty"`
+	WindowsPrefixPath   string               `json:"winPrefixPath,omitempty" yaml:"winPrefixPath,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rancher_user_notification.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rancher_user_notification.go
new file mode 100644
index 00000000..8fa289e6
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rancher_user_notification.go
@@ -0,0 +1,122 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	RancherUserNotificationType                 = "rancherUserNotification"
+	RancherUserNotificationFieldAnnotations     = "annotations"
+	RancherUserNotificationFieldComponentName   = "componentName"
+	RancherUserNotificationFieldCreated         = "created"
+	RancherUserNotificationFieldCreatorID       = "creatorId"
+	RancherUserNotificationFieldLabels          = "labels"
+	RancherUserNotificationFieldMessage         = "message"
+	RancherUserNotificationFieldName            = "name"
+	RancherUserNotificationFieldOwnerReferences = "ownerReferences"
+	RancherUserNotificationFieldRemoved         = "removed"
+	RancherUserNotificationFieldUUID            = "uuid"
+)
+
+type RancherUserNotification struct {
+	types.Resource
+	Annotations     map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	ComponentName   string            `json:"componentName,omitempty" yaml:"componentName,omitempty"`
+	Created         string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID       string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Labels          map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Message         string            `json:"message,omitempty" yaml:"message,omitempty"`
+	Name            string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed         string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	UUID            string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type RancherUserNotificationCollection struct {
+	types.Collection
+	Data   []RancherUserNotification `json:"data,omitempty"`
+	client *RancherUserNotificationClient
+}
+
+type RancherUserNotificationClient struct {
+	apiClient *Client
+}
+
+type RancherUserNotificationOperations interface {
+	List(opts *types.ListOpts) (*RancherUserNotificationCollection, error)
+	ListAll(opts *types.ListOpts) (*RancherUserNotificationCollection, error)
+	Create(opts *RancherUserNotification) (*RancherUserNotification, error)
+	Update(existing *RancherUserNotification, updates interface{}) (*RancherUserNotification, error)
+	Replace(existing *RancherUserNotification) (*RancherUserNotification, error)
+	ByID(id string) (*RancherUserNotification, error)
+	Delete(container *RancherUserNotification) error
+}
+
+func newRancherUserNotificationClient(apiClient *Client) *RancherUserNotificationClient {
+	return &RancherUserNotificationClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *RancherUserNotificationClient) Create(container *RancherUserNotification) (*RancherUserNotification, error) {
+	resp := &RancherUserNotification{}
+	err := c.apiClient.Ops.DoCreate(RancherUserNotificationType, container, resp)
+	return resp, err
+}
+
+func (c *RancherUserNotificationClient) Update(existing *RancherUserNotification, updates interface{}) (*RancherUserNotification, error) {
+	resp := &RancherUserNotification{}
+	err := c.apiClient.Ops.DoUpdate(RancherUserNotificationType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *RancherUserNotificationClient) Replace(obj *RancherUserNotification) (*RancherUserNotification, error) {
+	resp := &RancherUserNotification{}
+	err := c.apiClient.Ops.DoReplace(RancherUserNotificationType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *RancherUserNotificationClient) List(opts *types.ListOpts) (*RancherUserNotificationCollection, error) {
+	resp := &RancherUserNotificationCollection{}
+	err := c.apiClient.Ops.DoList(RancherUserNotificationType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *RancherUserNotificationClient) ListAll(opts *types.ListOpts) (*RancherUserNotificationCollection, error) {
+	resp := &RancherUserNotificationCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *RancherUserNotificationCollection) Next() (*RancherUserNotificationCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &RancherUserNotificationCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *RancherUserNotificationClient) ByID(id string) (*RancherUserNotification, error) {
+	resp := &RancherUserNotification{}
+	err := c.apiClient.Ops.DoByID(RancherUserNotificationType, id, resp)
+	return resp, err
+}
+
+func (c *RancherUserNotificationClient) Delete(container *RancherUserNotification) error {
+	return c.apiClient.Ops.DoResourceDelete(RancherUserNotificationType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rbd_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rbd_volume_source.go
new file mode 100644
index 00000000..436a8b73
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rbd_volume_source.go
@@ -0,0 +1,24 @@
+package client
+
+const (
+	RBDVolumeSourceType              = "rbdVolumeSource"
+	RBDVolumeSourceFieldCephMonitors = "monitors"
+	RBDVolumeSourceFieldFSType       = "fsType"
+	RBDVolumeSourceFieldKeyring      = "keyring"
+	RBDVolumeSourceFieldRBDImage     = "image"
+	RBDVolumeSourceFieldRBDPool      = "pool"
+	RBDVolumeSourceFieldRadosUser    = "user"
+	RBDVolumeSourceFieldReadOnly     = "readOnly"
+	RBDVolumeSourceFieldSecretRef    = "secretRef"
+)
+
+type RBDVolumeSource struct {
+	CephMonitors []string              `json:"monitors,omitempty" yaml:"monitors,omitempty"`
+	FSType       string                `json:"fsType,omitempty" yaml:"fsType,omitempty"`
+	Keyring      string                `json:"keyring,omitempty" yaml:"keyring,omitempty"`
+	RBDImage     string                `json:"image,omitempty" yaml:"image,omitempty"`
+	RBDPool      string                `json:"pool,omitempty" yaml:"pool,omitempty"`
+	RadosUser    string                `json:"user,omitempty" yaml:"user,omitempty"`
+	ReadOnly     bool                  `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+	SecretRef    *LocalObjectReference `json:"secretRef,omitempty" yaml:"secretRef,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_claim.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_claim.go
new file mode 100644
index 00000000..1ef8e0a5
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_claim.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	ResourceClaimType      = "resourceClaim"
+	ResourceClaimFieldName = "name"
+)
+
+type ResourceClaim struct {
+	Name string `json:"name,omitempty" yaml:"name,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_configuration.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_configuration.go
new file mode 100644
index 00000000..3c09f763
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_configuration.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	ResourceConfigurationType           = "resourceConfiguration"
+	ResourceConfigurationFieldProviders = "providers"
+	ResourceConfigurationFieldResources = "resources"
+)
+
+type ResourceConfiguration struct {
+	Providers []ProviderConfiguration `json:"providers,omitempty" yaml:"providers,omitempty"`
+	Resources []string                `json:"resources,omitempty" yaml:"resources,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_field_selector.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_field_selector.go
new file mode 100644
index 00000000..d9c0c92e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_field_selector.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	ResourceFieldSelectorType               = "resourceFieldSelector"
+	ResourceFieldSelectorFieldContainerName = "containerName"
+	ResourceFieldSelectorFieldDivisor       = "divisor"
+	ResourceFieldSelectorFieldResource      = "resource"
+)
+
+type ResourceFieldSelector struct {
+	ContainerName string `json:"containerName,omitempty" yaml:"containerName,omitempty"`
+	Divisor       string `json:"divisor,omitempty" yaml:"divisor,omitempty"`
+	Resource      string `json:"resource,omitempty" yaml:"resource,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_quota_limit.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_quota_limit.go
new file mode 100644
index 00000000..4bc04abf
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_quota_limit.go
@@ -0,0 +1,34 @@
+package client
+
+const (
+	ResourceQuotaLimitType                        = "resourceQuotaLimit"
+	ResourceQuotaLimitFieldConfigMaps             = "configMaps"
+	ResourceQuotaLimitFieldLimitsCPU              = "limitsCpu"
+	ResourceQuotaLimitFieldLimitsMemory           = "limitsMemory"
+	ResourceQuotaLimitFieldPersistentVolumeClaims = "persistentVolumeClaims"
+	ResourceQuotaLimitFieldPods                   = "pods"
+	ResourceQuotaLimitFieldReplicationControllers = "replicationControllers"
+	ResourceQuotaLimitFieldRequestsCPU            = "requestsCpu"
+	ResourceQuotaLimitFieldRequestsMemory         = "requestsMemory"
+	ResourceQuotaLimitFieldRequestsStorage        = "requestsStorage"
+	ResourceQuotaLimitFieldSecrets                = "secrets"
+	ResourceQuotaLimitFieldServices               = "services"
+	ResourceQuotaLimitFieldServicesLoadBalancers  = "servicesLoadBalancers"
+	ResourceQuotaLimitFieldServicesNodePorts      = "servicesNodePorts"
+)
+
+type ResourceQuotaLimit struct {
+	ConfigMaps             string `json:"configMaps,omitempty" yaml:"configMaps,omitempty"`
+	LimitsCPU              string `json:"limitsCpu,omitempty" yaml:"limitsCpu,omitempty"`
+	LimitsMemory           string `json:"limitsMemory,omitempty" yaml:"limitsMemory,omitempty"`
+	PersistentVolumeClaims string `json:"persistentVolumeClaims,omitempty" yaml:"persistentVolumeClaims,omitempty"`
+	Pods                   string `json:"pods,omitempty" yaml:"pods,omitempty"`
+	ReplicationControllers string `json:"replicationControllers,omitempty" yaml:"replicationControllers,omitempty"`
+	RequestsCPU            string `json:"requestsCpu,omitempty" yaml:"requestsCpu,omitempty"`
+	RequestsMemory         string `json:"requestsMemory,omitempty" yaml:"requestsMemory,omitempty"`
+	RequestsStorage        string `json:"requestsStorage,omitempty" yaml:"requestsStorage,omitempty"`
+	Secrets                string `json:"secrets,omitempty" yaml:"secrets,omitempty"`
+	Services               string `json:"services,omitempty" yaml:"services,omitempty"`
+	ServicesLoadBalancers  string `json:"servicesLoadBalancers,omitempty" yaml:"servicesLoadBalancers,omitempty"`
+	ServicesNodePorts      string `json:"servicesNodePorts,omitempty" yaml:"servicesNodePorts,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_requirements.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_requirements.go
new file mode 100644
index 00000000..5fe765a5
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_resource_requirements.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	ResourceRequirementsType          = "resourceRequirements"
+	ResourceRequirementsFieldClaims   = "claims"
+	ResourceRequirementsFieldLimits   = "limits"
+	ResourceRequirementsFieldRequests = "requests"
+)
+
+type ResourceRequirements struct {
+	Claims   []ResourceClaim   `json:"claims,omitempty" yaml:"claims,omitempty"`
+	Limits   map[string]string `json:"limits,omitempty" yaml:"limits,omitempty"`
+	Requests map[string]string `json:"requests,omitempty" yaml:"requests,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_restore_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_restore_config.go
new file mode 100644
index 00000000..8370f96f
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_restore_config.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	RestoreConfigType              = "restoreConfig"
+	RestoreConfigFieldRestore      = "restore"
+	RestoreConfigFieldSnapshotName = "snapshotName"
+)
+
+type RestoreConfig struct {
+	Restore      bool   `json:"restore,omitempty" yaml:"restore,omitempty"`
+	SnapshotName string `json:"snapshotName,omitempty" yaml:"snapshotName,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_restore_from_etcd_backup_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_restore_from_etcd_backup_input.go
new file mode 100644
index 00000000..7bd5f59f
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_restore_from_etcd_backup_input.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	RestoreFromEtcdBackupInputType                  = "restoreFromEtcdBackupInput"
+	RestoreFromEtcdBackupInputFieldEtcdBackupID     = "etcdBackupId"
+	RestoreFromEtcdBackupInputFieldRestoreRkeConfig = "restoreRkeConfig"
+)
+
+type RestoreFromEtcdBackupInput struct {
+	EtcdBackupID     string `json:"etcdBackupId,omitempty" yaml:"etcdBackupId,omitempty"`
+	RestoreRkeConfig string `json:"restoreRkeConfig,omitempty" yaml:"restoreRkeConfig,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke2config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke2config.go
new file mode 100644
index 00000000..3e355a9a
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke2config.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	Rke2ConfigType                        = "rke2Config"
+	Rke2ConfigFieldClusterUpgradeStrategy = "rke2upgradeStrategy"
+	Rke2ConfigFieldVersion                = "kubernetesVersion"
+)
+
+type Rke2Config struct {
+	ClusterUpgradeStrategy *ClusterUpgradeStrategy `json:"rke2upgradeStrategy,omitempty" yaml:"rke2upgradeStrategy,omitempty"`
+	Version                string                  `json:"kubernetesVersion,omitempty" yaml:"kubernetesVersion,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_addon.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_addon.go
new file mode 100644
index 00000000..67719eed
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_addon.go
@@ -0,0 +1,120 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	RkeAddonType                 = "rkeAddon"
+	RkeAddonFieldAnnotations     = "annotations"
+	RkeAddonFieldCreated         = "created"
+	RkeAddonFieldCreatorID       = "creatorId"
+	RkeAddonFieldLabels          = "labels"
+	RkeAddonFieldName            = "name"
+	RkeAddonFieldOwnerReferences = "ownerReferences"
+	RkeAddonFieldRemoved         = "removed"
+	RkeAddonFieldTemplate        = "template"
+	RkeAddonFieldUUID            = "uuid"
+)
+
+type RkeAddon struct {
+	types.Resource
+	Annotations     map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created         string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID       string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Labels          map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name            string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed         string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Template        string            `json:"template,omitempty" yaml:"template,omitempty"`
+	UUID            string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type RkeAddonCollection struct {
+	types.Collection
+	Data   []RkeAddon `json:"data,omitempty"`
+	client *RkeAddonClient
+}
+
+type RkeAddonClient struct {
+	apiClient *Client
+}
+
+type RkeAddonOperations interface {
+	List(opts *types.ListOpts) (*RkeAddonCollection, error)
+	ListAll(opts *types.ListOpts) (*RkeAddonCollection, error)
+	Create(opts *RkeAddon) (*RkeAddon, error)
+	Update(existing *RkeAddon, updates interface{}) (*RkeAddon, error)
+	Replace(existing *RkeAddon) (*RkeAddon, error)
+	ByID(id string) (*RkeAddon, error)
+	Delete(container *RkeAddon) error
+}
+
+func newRkeAddonClient(apiClient *Client) *RkeAddonClient {
+	return &RkeAddonClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *RkeAddonClient) Create(container *RkeAddon) (*RkeAddon, error) {
+	resp := &RkeAddon{}
+	err := c.apiClient.Ops.DoCreate(RkeAddonType, container, resp)
+	return resp, err
+}
+
+func (c *RkeAddonClient) Update(existing *RkeAddon, updates interface{}) (*RkeAddon, error) {
+	resp := &RkeAddon{}
+	err := c.apiClient.Ops.DoUpdate(RkeAddonType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *RkeAddonClient) Replace(obj *RkeAddon) (*RkeAddon, error) {
+	resp := &RkeAddon{}
+	err := c.apiClient.Ops.DoReplace(RkeAddonType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *RkeAddonClient) List(opts *types.ListOpts) (*RkeAddonCollection, error) {
+	resp := &RkeAddonCollection{}
+	err := c.apiClient.Ops.DoList(RkeAddonType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *RkeAddonClient) ListAll(opts *types.ListOpts) (*RkeAddonCollection, error) {
+	resp := &RkeAddonCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *RkeAddonCollection) Next() (*RkeAddonCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &RkeAddonCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *RkeAddonClient) ByID(id string) (*RkeAddon, error) {
+	resp := &RkeAddon{}
+	err := c.apiClient.Ops.DoByID(RkeAddonType, id, resp)
+	return resp, err
+}
+
+func (c *RkeAddonClient) Delete(container *RkeAddon) error {
+	return c.apiClient.Ops.DoResourceDelete(RkeAddonType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_config_node.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_config_node.go
new file mode 100644
index 00000000..a8a2c20a
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_config_node.go
@@ -0,0 +1,38 @@
+package client
+
+const (
+	RKEConfigNodeType                  = "rkeConfigNode"
+	RKEConfigNodeFieldAddress          = "address"
+	RKEConfigNodeFieldDockerSocket     = "dockerSocket"
+	RKEConfigNodeFieldHostnameOverride = "hostnameOverride"
+	RKEConfigNodeFieldInternalAddress  = "internalAddress"
+	RKEConfigNodeFieldLabels           = "labels"
+	RKEConfigNodeFieldNodeID           = "nodeId"
+	RKEConfigNodeFieldPort             = "port"
+	RKEConfigNodeFieldRole             = "role"
+	RKEConfigNodeFieldSSHAgentAuth     = "sshAgentAuth"
+	RKEConfigNodeFieldSSHCert          = "sshCert"
+	RKEConfigNodeFieldSSHCertPath      = "sshCertPath"
+	RKEConfigNodeFieldSSHKey           = "sshKey"
+	RKEConfigNodeFieldSSHKeyPath       = "sshKeyPath"
+	RKEConfigNodeFieldTaints           = "taints"
+	RKEConfigNodeFieldUser             = "user"
+)
+
+type RKEConfigNode struct {
+	Address          string            `json:"address,omitempty" yaml:"address,omitempty"`
+	DockerSocket     string            `json:"dockerSocket,omitempty" yaml:"dockerSocket,omitempty"`
+	HostnameOverride string            `json:"hostnameOverride,omitempty" yaml:"hostnameOverride,omitempty"`
+	InternalAddress  string            `json:"internalAddress,omitempty" yaml:"internalAddress,omitempty"`
+	Labels           map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	NodeID           string            `json:"nodeId,omitempty" yaml:"nodeId,omitempty"`
+	Port             string            `json:"port,omitempty" yaml:"port,omitempty"`
+	Role             []string          `json:"role,omitempty" yaml:"role,omitempty"`
+	SSHAgentAuth     bool              `json:"sshAgentAuth,omitempty" yaml:"sshAgentAuth,omitempty"`
+	SSHCert          string            `json:"sshCert,omitempty" yaml:"sshCert,omitempty"`
+	SSHCertPath      string            `json:"sshCertPath,omitempty" yaml:"sshCertPath,omitempty"`
+	SSHKey           string            `json:"sshKey,omitempty" yaml:"sshKey,omitempty"`
+	SSHKeyPath       string            `json:"sshKeyPath,omitempty" yaml:"sshKeyPath,omitempty"`
+	Taints           []RKETaint        `json:"taints,omitempty" yaml:"taints,omitempty"`
+	User             string            `json:"user,omitempty" yaml:"user,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_config_node_plan.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_config_node_plan.go
new file mode 100644
index 00000000..fd9224fe
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_config_node_plan.go
@@ -0,0 +1,22 @@
+package client
+
+const (
+	RKEConfigNodePlanType             = "rkeConfigNodePlan"
+	RKEConfigNodePlanFieldAddress     = "address"
+	RKEConfigNodePlanFieldAnnotations = "annotations"
+	RKEConfigNodePlanFieldFiles       = "files"
+	RKEConfigNodePlanFieldLabels      = "labels"
+	RKEConfigNodePlanFieldPortChecks  = "portChecks"
+	RKEConfigNodePlanFieldProcesses   = "processes"
+	RKEConfigNodePlanFieldTaints      = "taints"
+)
+
+type RKEConfigNodePlan struct {
+	Address     string             `json:"address,omitempty" yaml:"address,omitempty"`
+	Annotations map[string]string  `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Files       []File             `json:"files,omitempty" yaml:"files,omitempty"`
+	Labels      map[string]string  `json:"labels,omitempty" yaml:"labels,omitempty"`
+	PortChecks  []PortCheck        `json:"portChecks,omitempty" yaml:"portChecks,omitempty"`
+	Processes   map[string]Process `json:"processes,omitempty" yaml:"processes,omitempty"`
+	Taints      []RKETaint         `json:"taints,omitempty" yaml:"taints,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_config_services.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_config_services.go
new file mode 100644
index 00000000..16086f60
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_config_services.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	RKEConfigServicesType                = "rkeConfigServices"
+	RKEConfigServicesFieldEtcd           = "etcd"
+	RKEConfigServicesFieldKubeAPI        = "kubeApi"
+	RKEConfigServicesFieldKubeController = "kubeController"
+	RKEConfigServicesFieldKubelet        = "kubelet"
+	RKEConfigServicesFieldKubeproxy      = "kubeproxy"
+	RKEConfigServicesFieldScheduler      = "scheduler"
+)
+
+type RKEConfigServices struct {
+	Etcd           *ETCDService           `json:"etcd,omitempty" yaml:"etcd,omitempty"`
+	KubeAPI        *KubeAPIService        `json:"kubeApi,omitempty" yaml:"kubeApi,omitempty"`
+	KubeController *KubeControllerService `json:"kubeController,omitempty" yaml:"kubeController,omitempty"`
+	Kubelet        *KubeletService        `json:"kubelet,omitempty" yaml:"kubelet,omitempty"`
+	Kubeproxy      *KubeproxyService      `json:"kubeproxy,omitempty" yaml:"kubeproxy,omitempty"`
+	Scheduler      *SchedulerService      `json:"scheduler,omitempty" yaml:"scheduler,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_k8s_service_option.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_k8s_service_option.go
new file mode 100644
index 00000000..6c5173f0
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_k8s_service_option.go
@@ -0,0 +1,120 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	RkeK8sServiceOptionType                 = "rkeK8sServiceOption"
+	RkeK8sServiceOptionFieldAnnotations     = "annotations"
+	RkeK8sServiceOptionFieldCreated         = "created"
+	RkeK8sServiceOptionFieldCreatorID       = "creatorId"
+	RkeK8sServiceOptionFieldLabels          = "labels"
+	RkeK8sServiceOptionFieldName            = "name"
+	RkeK8sServiceOptionFieldOwnerReferences = "ownerReferences"
+	RkeK8sServiceOptionFieldRemoved         = "removed"
+	RkeK8sServiceOptionFieldServiceOptions  = "serviceOptions"
+	RkeK8sServiceOptionFieldUUID            = "uuid"
+)
+
+type RkeK8sServiceOption struct {
+	types.Resource
+	Annotations     map[string]string          `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created         string                     `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID       string                     `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Labels          map[string]string          `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name            string                     `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences []OwnerReference           `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed         string                     `json:"removed,omitempty" yaml:"removed,omitempty"`
+	ServiceOptions  *KubernetesServicesOptions `json:"serviceOptions,omitempty" yaml:"serviceOptions,omitempty"`
+	UUID            string                     `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type RkeK8sServiceOptionCollection struct {
+	types.Collection
+	Data   []RkeK8sServiceOption `json:"data,omitempty"`
+	client *RkeK8sServiceOptionClient
+}
+
+type RkeK8sServiceOptionClient struct {
+	apiClient *Client
+}
+
+type RkeK8sServiceOptionOperations interface {
+	List(opts *types.ListOpts) (*RkeK8sServiceOptionCollection, error)
+	ListAll(opts *types.ListOpts) (*RkeK8sServiceOptionCollection, error)
+	Create(opts *RkeK8sServiceOption) (*RkeK8sServiceOption, error)
+	Update(existing *RkeK8sServiceOption, updates interface{}) (*RkeK8sServiceOption, error)
+	Replace(existing *RkeK8sServiceOption) (*RkeK8sServiceOption, error)
+	ByID(id string) (*RkeK8sServiceOption, error)
+	Delete(container *RkeK8sServiceOption) error
+}
+
+func newRkeK8sServiceOptionClient(apiClient *Client) *RkeK8sServiceOptionClient {
+	return &RkeK8sServiceOptionClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *RkeK8sServiceOptionClient) Create(container *RkeK8sServiceOption) (*RkeK8sServiceOption, error) {
+	resp := &RkeK8sServiceOption{}
+	err := c.apiClient.Ops.DoCreate(RkeK8sServiceOptionType, container, resp)
+	return resp, err
+}
+
+func (c *RkeK8sServiceOptionClient) Update(existing *RkeK8sServiceOption, updates interface{}) (*RkeK8sServiceOption, error) {
+	resp := &RkeK8sServiceOption{}
+	err := c.apiClient.Ops.DoUpdate(RkeK8sServiceOptionType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *RkeK8sServiceOptionClient) Replace(obj *RkeK8sServiceOption) (*RkeK8sServiceOption, error) {
+	resp := &RkeK8sServiceOption{}
+	err := c.apiClient.Ops.DoReplace(RkeK8sServiceOptionType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *RkeK8sServiceOptionClient) List(opts *types.ListOpts) (*RkeK8sServiceOptionCollection, error) {
+	resp := &RkeK8sServiceOptionCollection{}
+	err := c.apiClient.Ops.DoList(RkeK8sServiceOptionType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *RkeK8sServiceOptionClient) ListAll(opts *types.ListOpts) (*RkeK8sServiceOptionCollection, error) {
+	resp := &RkeK8sServiceOptionCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *RkeK8sServiceOptionCollection) Next() (*RkeK8sServiceOptionCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &RkeK8sServiceOptionCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *RkeK8sServiceOptionClient) ByID(id string) (*RkeK8sServiceOption, error) {
+	resp := &RkeK8sServiceOption{}
+	err := c.apiClient.Ops.DoByID(RkeK8sServiceOptionType, id, resp)
+	return resp, err
+}
+
+func (c *RkeK8sServiceOptionClient) Delete(container *RkeK8sServiceOption) error {
+	return c.apiClient.Ops.DoResourceDelete(RkeK8sServiceOptionType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_k8s_system_image.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_k8s_system_image.go
new file mode 100644
index 00000000..3fb0e153
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_k8s_system_image.go
@@ -0,0 +1,120 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	RkeK8sSystemImageType                 = "rkeK8sSystemImage"
+	RkeK8sSystemImageFieldAnnotations     = "annotations"
+	RkeK8sSystemImageFieldCreated         = "created"
+	RkeK8sSystemImageFieldCreatorID       = "creatorId"
+	RkeK8sSystemImageFieldLabels          = "labels"
+	RkeK8sSystemImageFieldName            = "name"
+	RkeK8sSystemImageFieldOwnerReferences = "ownerReferences"
+	RkeK8sSystemImageFieldRemoved         = "removed"
+	RkeK8sSystemImageFieldSystemImages    = "systemImages"
+	RkeK8sSystemImageFieldUUID            = "uuid"
+)
+
+type RkeK8sSystemImage struct {
+	types.Resource
+	Annotations     map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created         string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID       string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Labels          map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name            string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed         string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	SystemImages    *RKESystemImages  `json:"systemImages,omitempty" yaml:"systemImages,omitempty"`
+	UUID            string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type RkeK8sSystemImageCollection struct {
+	types.Collection
+	Data   []RkeK8sSystemImage `json:"data,omitempty"`
+	client *RkeK8sSystemImageClient
+}
+
+type RkeK8sSystemImageClient struct {
+	apiClient *Client
+}
+
+type RkeK8sSystemImageOperations interface {
+	List(opts *types.ListOpts) (*RkeK8sSystemImageCollection, error)
+	ListAll(opts *types.ListOpts) (*RkeK8sSystemImageCollection, error)
+	Create(opts *RkeK8sSystemImage) (*RkeK8sSystemImage, error)
+	Update(existing *RkeK8sSystemImage, updates interface{}) (*RkeK8sSystemImage, error)
+	Replace(existing *RkeK8sSystemImage) (*RkeK8sSystemImage, error)
+	ByID(id string) (*RkeK8sSystemImage, error)
+	Delete(container *RkeK8sSystemImage) error
+}
+
+func newRkeK8sSystemImageClient(apiClient *Client) *RkeK8sSystemImageClient {
+	return &RkeK8sSystemImageClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *RkeK8sSystemImageClient) Create(container *RkeK8sSystemImage) (*RkeK8sSystemImage, error) {
+	resp := &RkeK8sSystemImage{}
+	err := c.apiClient.Ops.DoCreate(RkeK8sSystemImageType, container, resp)
+	return resp, err
+}
+
+func (c *RkeK8sSystemImageClient) Update(existing *RkeK8sSystemImage, updates interface{}) (*RkeK8sSystemImage, error) {
+	resp := &RkeK8sSystemImage{}
+	err := c.apiClient.Ops.DoUpdate(RkeK8sSystemImageType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *RkeK8sSystemImageClient) Replace(obj *RkeK8sSystemImage) (*RkeK8sSystemImage, error) {
+	resp := &RkeK8sSystemImage{}
+	err := c.apiClient.Ops.DoReplace(RkeK8sSystemImageType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *RkeK8sSystemImageClient) List(opts *types.ListOpts) (*RkeK8sSystemImageCollection, error) {
+	resp := &RkeK8sSystemImageCollection{}
+	err := c.apiClient.Ops.DoList(RkeK8sSystemImageType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *RkeK8sSystemImageClient) ListAll(opts *types.ListOpts) (*RkeK8sSystemImageCollection, error) {
+	resp := &RkeK8sSystemImageCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *RkeK8sSystemImageCollection) Next() (*RkeK8sSystemImageCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &RkeK8sSystemImageCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *RkeK8sSystemImageClient) ByID(id string) (*RkeK8sSystemImage, error) {
+	resp := &RkeK8sSystemImage{}
+	err := c.apiClient.Ops.DoByID(RkeK8sSystemImageType, id, resp)
+	return resp, err
+}
+
+func (c *RkeK8sSystemImageClient) Delete(container *RkeK8sSystemImage) error {
+	return c.apiClient.Ops.DoResourceDelete(RkeK8sSystemImageType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_system_images.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_system_images.go
new file mode 100644
index 00000000..185a3f07
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_system_images.go
@@ -0,0 +1,90 @@
+package client
+
+const (
+	RKESystemImagesType                           = "rkeSystemImages"
+	RKESystemImagesFieldAciCniDeployContainer     = "aciCniDeployContainer"
+	RKESystemImagesFieldAciControllerContainer    = "aciControllerContainer"
+	RKESystemImagesFieldAciGbpServerContainer     = "aciGbpServerContainer"
+	RKESystemImagesFieldAciHostContainer          = "aciHostContainer"
+	RKESystemImagesFieldAciMcastContainer         = "aciMcastContainer"
+	RKESystemImagesFieldAciOpenvSwitchContainer   = "aciOvsContainer"
+	RKESystemImagesFieldAciOpflexContainer        = "aciOpflexContainer"
+	RKESystemImagesFieldAciOpflexServerContainer  = "aciOpflexServerContainer"
+	RKESystemImagesFieldAlpine                    = "alpine"
+	RKESystemImagesFieldCalicoCNI                 = "calicoCni"
+	RKESystemImagesFieldCalicoControllers         = "calicoControllers"
+	RKESystemImagesFieldCalicoCtl                 = "calicoCtl"
+	RKESystemImagesFieldCalicoFlexVol             = "calicoFlexVol"
+	RKESystemImagesFieldCalicoNode                = "calicoNode"
+	RKESystemImagesFieldCanalCNI                  = "canalCni"
+	RKESystemImagesFieldCanalControllers          = "canalControllers"
+	RKESystemImagesFieldCanalFlannel              = "canalFlannel"
+	RKESystemImagesFieldCanalFlexVol              = "canalFlexVol"
+	RKESystemImagesFieldCanalNode                 = "canalNode"
+	RKESystemImagesFieldCertDownloader            = "certDownloader"
+	RKESystemImagesFieldCoreDNS                   = "coredns"
+	RKESystemImagesFieldCoreDNSAutoscaler         = "corednsAutoscaler"
+	RKESystemImagesFieldDNSmasq                   = "dnsmasq"
+	RKESystemImagesFieldEtcd                      = "etcd"
+	RKESystemImagesFieldFlannel                   = "flannel"
+	RKESystemImagesFieldFlannelCNI                = "flannelCni"
+	RKESystemImagesFieldIngress                   = "ingress"
+	RKESystemImagesFieldIngressBackend            = "ingressBackend"
+	RKESystemImagesFieldIngressWebhook            = "ingressWebhook"
+	RKESystemImagesFieldKubeDNS                   = "kubedns"
+	RKESystemImagesFieldKubeDNSAutoscaler         = "kubednsAutoscaler"
+	RKESystemImagesFieldKubeDNSSidecar            = "kubednsSidecar"
+	RKESystemImagesFieldKubernetes                = "kubernetes"
+	RKESystemImagesFieldKubernetesServicesSidecar = "kubernetesServicesSidecar"
+	RKESystemImagesFieldMetricsServer             = "metricsServer"
+	RKESystemImagesFieldNginxProxy                = "nginxProxy"
+	RKESystemImagesFieldNodelocal                 = "nodelocal"
+	RKESystemImagesFieldPodInfraContainer         = "podInfraContainer"
+	RKESystemImagesFieldWeaveCNI                  = "weaveCni"
+	RKESystemImagesFieldWeaveNode                 = "weaveNode"
+	RKESystemImagesFieldWindowsPodInfraContainer  = "windowsPodInfraContainer"
+)
+
+type RKESystemImages struct {
+	AciCniDeployContainer     string `json:"aciCniDeployContainer,omitempty" yaml:"aciCniDeployContainer,omitempty"`
+	AciControllerContainer    string `json:"aciControllerContainer,omitempty" yaml:"aciControllerContainer,omitempty"`
+	AciGbpServerContainer     string `json:"aciGbpServerContainer,omitempty" yaml:"aciGbpServerContainer,omitempty"`
+	AciHostContainer          string `json:"aciHostContainer,omitempty" yaml:"aciHostContainer,omitempty"`
+	AciMcastContainer         string `json:"aciMcastContainer,omitempty" yaml:"aciMcastContainer,omitempty"`
+	AciOpenvSwitchContainer   string `json:"aciOvsContainer,omitempty" yaml:"aciOvsContainer,omitempty"`
+	AciOpflexContainer        string `json:"aciOpflexContainer,omitempty" yaml:"aciOpflexContainer,omitempty"`
+	AciOpflexServerContainer  string `json:"aciOpflexServerContainer,omitempty" yaml:"aciOpflexServerContainer,omitempty"`
+	Alpine                    string `json:"alpine,omitempty" yaml:"alpine,omitempty"`
+	CalicoCNI                 string `json:"calicoCni,omitempty" yaml:"calicoCni,omitempty"`
+	CalicoControllers         string `json:"calicoControllers,omitempty" yaml:"calicoControllers,omitempty"`
+	CalicoCtl                 string `json:"calicoCtl,omitempty" yaml:"calicoCtl,omitempty"`
+	CalicoFlexVol             string `json:"calicoFlexVol,omitempty" yaml:"calicoFlexVol,omitempty"`
+	CalicoNode                string `json:"calicoNode,omitempty" yaml:"calicoNode,omitempty"`
+	CanalCNI                  string `json:"canalCni,omitempty" yaml:"canalCni,omitempty"`
+	CanalControllers          string `json:"canalControllers,omitempty" yaml:"canalControllers,omitempty"`
+	CanalFlannel              string `json:"canalFlannel,omitempty" yaml:"canalFlannel,omitempty"`
+	CanalFlexVol              string `json:"canalFlexVol,omitempty" yaml:"canalFlexVol,omitempty"`
+	CanalNode                 string `json:"canalNode,omitempty" yaml:"canalNode,omitempty"`
+	CertDownloader            string `json:"certDownloader,omitempty" yaml:"certDownloader,omitempty"`
+	CoreDNS                   string `json:"coredns,omitempty" yaml:"coredns,omitempty"`
+	CoreDNSAutoscaler         string `json:"corednsAutoscaler,omitempty" yaml:"corednsAutoscaler,omitempty"`
+	DNSmasq                   string `json:"dnsmasq,omitempty" yaml:"dnsmasq,omitempty"`
+	Etcd                      string `json:"etcd,omitempty" yaml:"etcd,omitempty"`
+	Flannel                   string `json:"flannel,omitempty" yaml:"flannel,omitempty"`
+	FlannelCNI                string `json:"flannelCni,omitempty" yaml:"flannelCni,omitempty"`
+	Ingress                   string `json:"ingress,omitempty" yaml:"ingress,omitempty"`
+	IngressBackend            string `json:"ingressBackend,omitempty" yaml:"ingressBackend,omitempty"`
+	IngressWebhook            string `json:"ingressWebhook,omitempty" yaml:"ingressWebhook,omitempty"`
+	KubeDNS                   string `json:"kubedns,omitempty" yaml:"kubedns,omitempty"`
+	KubeDNSAutoscaler         string `json:"kubednsAutoscaler,omitempty" yaml:"kubednsAutoscaler,omitempty"`
+	KubeDNSSidecar            string `json:"kubednsSidecar,omitempty" yaml:"kubednsSidecar,omitempty"`
+	Kubernetes                string `json:"kubernetes,omitempty" yaml:"kubernetes,omitempty"`
+	KubernetesServicesSidecar string `json:"kubernetesServicesSidecar,omitempty" yaml:"kubernetesServicesSidecar,omitempty"`
+	MetricsServer             string `json:"metricsServer,omitempty" yaml:"metricsServer,omitempty"`
+	NginxProxy                string `json:"nginxProxy,omitempty" yaml:"nginxProxy,omitempty"`
+	Nodelocal                 string `json:"nodelocal,omitempty" yaml:"nodelocal,omitempty"`
+	PodInfraContainer         string `json:"podInfraContainer,omitempty" yaml:"podInfraContainer,omitempty"`
+	WeaveCNI                  string `json:"weaveCni,omitempty" yaml:"weaveCni,omitempty"`
+	WeaveNode                 string `json:"weaveNode,omitempty" yaml:"weaveNode,omitempty"`
+	WindowsPodInfraContainer  string `json:"windowsPodInfraContainer,omitempty" yaml:"windowsPodInfraContainer,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_taint.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_taint.go
new file mode 100644
index 00000000..8cd196fa
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rke_taint.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	RKETaintType           = "rkeTaint"
+	RKETaintFieldEffect    = "effect"
+	RKETaintFieldKey       = "key"
+	RKETaintFieldTimeAdded = "timeAdded"
+	RKETaintFieldValue     = "value"
+)
+
+type RKETaint struct {
+	Effect    string `json:"effect,omitempty" yaml:"effect,omitempty"`
+	Key       string `json:"key,omitempty" yaml:"key,omitempty"`
+	TimeAdded string `json:"timeAdded,omitempty" yaml:"timeAdded,omitempty"`
+	Value     string `json:"value,omitempty" yaml:"value,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_role_template.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_role_template.go
new file mode 100644
index 00000000..ed746083
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_role_template.go
@@ -0,0 +1,142 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	RoleTemplateType                       = "roleTemplate"
+	RoleTemplateFieldAdministrative        = "administrative"
+	RoleTemplateFieldAnnotations           = "annotations"
+	RoleTemplateFieldBuiltin               = "builtin"
+	RoleTemplateFieldClusterCreatorDefault = "clusterCreatorDefault"
+	RoleTemplateFieldContext               = "context"
+	RoleTemplateFieldCreated               = "created"
+	RoleTemplateFieldCreatorID             = "creatorId"
+	RoleTemplateFieldDescription           = "description"
+	RoleTemplateFieldExternal              = "external"
+	RoleTemplateFieldExternalRules         = "externalRules"
+	RoleTemplateFieldHidden                = "hidden"
+	RoleTemplateFieldLabels                = "labels"
+	RoleTemplateFieldLocked                = "locked"
+	RoleTemplateFieldName                  = "name"
+	RoleTemplateFieldOwnerReferences       = "ownerReferences"
+	RoleTemplateFieldProjectCreatorDefault = "projectCreatorDefault"
+	RoleTemplateFieldRemoved               = "removed"
+	RoleTemplateFieldRoleTemplateIDs       = "roleTemplateIds"
+	RoleTemplateFieldRules                 = "rules"
+	RoleTemplateFieldUUID                  = "uuid"
+)
+
+type RoleTemplate struct {
+	types.Resource
+	Administrative        bool              `json:"administrative,omitempty" yaml:"administrative,omitempty"`
+	Annotations           map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Builtin               bool              `json:"builtin,omitempty" yaml:"builtin,omitempty"`
+	ClusterCreatorDefault bool              `json:"clusterCreatorDefault,omitempty" yaml:"clusterCreatorDefault,omitempty"`
+	Context               string            `json:"context,omitempty" yaml:"context,omitempty"`
+	Created               string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID             string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Description           string            `json:"description,omitempty" yaml:"description,omitempty"`
+	External              bool              `json:"external,omitempty" yaml:"external,omitempty"`
+	ExternalRules         []PolicyRule      `json:"externalRules,omitempty" yaml:"externalRules,omitempty"`
+	Hidden                bool              `json:"hidden,omitempty" yaml:"hidden,omitempty"`
+	Labels                map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Locked                bool              `json:"locked,omitempty" yaml:"locked,omitempty"`
+	Name                  string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences       []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	ProjectCreatorDefault bool              `json:"projectCreatorDefault,omitempty" yaml:"projectCreatorDefault,omitempty"`
+	Removed               string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	RoleTemplateIDs       []string          `json:"roleTemplateIds,omitempty" yaml:"roleTemplateIds,omitempty"`
+	Rules                 []PolicyRule      `json:"rules,omitempty" yaml:"rules,omitempty"`
+	UUID                  string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type RoleTemplateCollection struct {
+	types.Collection
+	Data   []RoleTemplate `json:"data,omitempty"`
+	client *RoleTemplateClient
+}
+
+type RoleTemplateClient struct {
+	apiClient *Client
+}
+
+type RoleTemplateOperations interface {
+	List(opts *types.ListOpts) (*RoleTemplateCollection, error)
+	ListAll(opts *types.ListOpts) (*RoleTemplateCollection, error)
+	Create(opts *RoleTemplate) (*RoleTemplate, error)
+	Update(existing *RoleTemplate, updates interface{}) (*RoleTemplate, error)
+	Replace(existing *RoleTemplate) (*RoleTemplate, error)
+	ByID(id string) (*RoleTemplate, error)
+	Delete(container *RoleTemplate) error
+}
+
+func newRoleTemplateClient(apiClient *Client) *RoleTemplateClient {
+	return &RoleTemplateClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *RoleTemplateClient) Create(container *RoleTemplate) (*RoleTemplate, error) {
+	resp := &RoleTemplate{}
+	err := c.apiClient.Ops.DoCreate(RoleTemplateType, container, resp)
+	return resp, err
+}
+
+func (c *RoleTemplateClient) Update(existing *RoleTemplate, updates interface{}) (*RoleTemplate, error) {
+	resp := &RoleTemplate{}
+	err := c.apiClient.Ops.DoUpdate(RoleTemplateType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *RoleTemplateClient) Replace(obj *RoleTemplate) (*RoleTemplate, error) {
+	resp := &RoleTemplate{}
+	err := c.apiClient.Ops.DoReplace(RoleTemplateType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *RoleTemplateClient) List(opts *types.ListOpts) (*RoleTemplateCollection, error) {
+	resp := &RoleTemplateCollection{}
+	err := c.apiClient.Ops.DoList(RoleTemplateType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *RoleTemplateClient) ListAll(opts *types.ListOpts) (*RoleTemplateCollection, error) {
+	resp := &RoleTemplateCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *RoleTemplateCollection) Next() (*RoleTemplateCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &RoleTemplateCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *RoleTemplateClient) ByID(id string) (*RoleTemplate, error) {
+	resp := &RoleTemplate{}
+	err := c.apiClient.Ops.DoByID(RoleTemplateType, id, resp)
+	return resp, err
+}
+
+func (c *RoleTemplateClient) Delete(container *RoleTemplate) error {
+	return c.apiClient.Ops.DoResourceDelete(RoleTemplateType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rolling_update.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rolling_update.go
new file mode 100644
index 00000000..180f638b
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rolling_update.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	RollingUpdateType           = "rollingUpdate"
+	RollingUpdateFieldBatchSize = "batchSize"
+	RollingUpdateFieldInterval  = "interval"
+)
+
+type RollingUpdate struct {
+	BatchSize int64 `json:"batchSize,omitempty" yaml:"batchSize,omitempty"`
+	Interval  int64 `json:"interval,omitempty" yaml:"interval,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rolling_update_daemon_set.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rolling_update_daemon_set.go
new file mode 100644
index 00000000..f6c2e12b
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rolling_update_daemon_set.go
@@ -0,0 +1,16 @@
+package client
+
+import (
+	"k8s.io/apimachinery/pkg/util/intstr"
+)
+
+const (
+	RollingUpdateDaemonSetType                = "rollingUpdateDaemonSet"
+	RollingUpdateDaemonSetFieldMaxSurge       = "maxSurge"
+	RollingUpdateDaemonSetFieldMaxUnavailable = "maxUnavailable"
+)
+
+type RollingUpdateDaemonSet struct {
+	MaxSurge       intstr.IntOrString `json:"maxSurge,omitempty" yaml:"maxSurge,omitempty"`
+	MaxUnavailable intstr.IntOrString `json:"maxUnavailable,omitempty" yaml:"maxUnavailable,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rolling_update_deployment.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rolling_update_deployment.go
new file mode 100644
index 00000000..535fb36f
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rolling_update_deployment.go
@@ -0,0 +1,16 @@
+package client
+
+import (
+	"k8s.io/apimachinery/pkg/util/intstr"
+)
+
+const (
+	RollingUpdateDeploymentType                = "rollingUpdateDeployment"
+	RollingUpdateDeploymentFieldMaxSurge       = "maxSurge"
+	RollingUpdateDeploymentFieldMaxUnavailable = "maxUnavailable"
+)
+
+type RollingUpdateDeployment struct {
+	MaxSurge       intstr.IntOrString `json:"maxSurge,omitempty" yaml:"maxSurge,omitempty"`
+	MaxUnavailable intstr.IntOrString `json:"maxUnavailable,omitempty" yaml:"maxUnavailable,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rotate_certificate_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rotate_certificate_input.go
new file mode 100644
index 00000000..e8274762
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rotate_certificate_input.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	RotateCertificateInputType                = "rotateCertificateInput"
+	RotateCertificateInputFieldCACertificates = "caCertificates"
+	RotateCertificateInputFieldServices       = "services"
+)
+
+type RotateCertificateInput struct {
+	CACertificates bool   `json:"caCertificates,omitempty" yaml:"caCertificates,omitempty"`
+	Services       string `json:"services,omitempty" yaml:"services,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rotate_certificate_output.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rotate_certificate_output.go
new file mode 100644
index 00000000..47c50ec8
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rotate_certificate_output.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	RotateCertificateOutputType         = "rotateCertificateOutput"
+	RotateCertificateOutputFieldMessage = "message"
+)
+
+type RotateCertificateOutput struct {
+	Message string `json:"message,omitempty" yaml:"message,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rotate_certificates.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rotate_certificates.go
new file mode 100644
index 00000000..219450f8
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rotate_certificates.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	RotateCertificatesType                = "rotateCertificates"
+	RotateCertificatesFieldCACertificates = "caCertificates"
+	RotateCertificatesFieldServices       = "services"
+)
+
+type RotateCertificates struct {
+	CACertificates bool   `json:"caCertificates,omitempty" yaml:"caCertificates,omitempty"`
+	Services       string `json:"services,omitempty" yaml:"services,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rotate_encryption_key_output.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rotate_encryption_key_output.go
new file mode 100644
index 00000000..23360d02
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_rotate_encryption_key_output.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	RotateEncryptionKeyOutputType         = "rotateEncryptionKeyOutput"
+	RotateEncryptionKeyOutputFieldMessage = "message"
+)
+
+type RotateEncryptionKeyOutput struct {
+	Message string `json:"message,omitempty" yaml:"message,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_route53provider_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_route53provider_config.go
new file mode 100644
index 00000000..0932c3f5
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_route53provider_config.go
@@ -0,0 +1,22 @@
+package client
+
+const (
+	Route53ProviderConfigType                   = "route53ProviderConfig"
+	Route53ProviderConfigFieldAccessKey         = "accessKey"
+	Route53ProviderConfigFieldAdditionalOptions = "additionalOptions"
+	Route53ProviderConfigFieldCredentialsPath   = "credentialsPath"
+	Route53ProviderConfigFieldRegion            = "region"
+	Route53ProviderConfigFieldRoleArn           = "roleArn"
+	Route53ProviderConfigFieldSecretKey         = "secretKey"
+	Route53ProviderConfigFieldZoneType          = "zoneType"
+)
+
+type Route53ProviderConfig struct {
+	AccessKey         string            `json:"accessKey,omitempty" yaml:"accessKey,omitempty"`
+	AdditionalOptions map[string]string `json:"additionalOptions,omitempty" yaml:"additionalOptions,omitempty"`
+	CredentialsPath   string            `json:"credentialsPath,omitempty" yaml:"credentialsPath,omitempty"`
+	Region            string            `json:"region,omitempty" yaml:"region,omitempty"`
+	RoleArn           string            `json:"roleArn,omitempty" yaml:"roleArn,omitempty"`
+	SecretKey         string            `json:"secretKey,omitempty" yaml:"secretKey,omitempty"`
+	ZoneType          string            `json:"zoneType,omitempty" yaml:"zoneType,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_route_openstack_opts.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_route_openstack_opts.go
new file mode 100644
index 00000000..ad6f9882
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_route_openstack_opts.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	RouteOpenstackOptsType          = "routeOpenstackOpts"
+	RouteOpenstackOptsFieldRouterID = "router-id"
+)
+
+type RouteOpenstackOpts struct {
+	RouterID string `json:"router-id,omitempty" yaml:"router-id,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_s3backup_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_s3backup_config.go
new file mode 100644
index 00000000..14ea5874
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_s3backup_config.go
@@ -0,0 +1,22 @@
+package client
+
+const (
+	S3BackupConfigType            = "s3BackupConfig"
+	S3BackupConfigFieldAccessKey  = "accessKey"
+	S3BackupConfigFieldBucketName = "bucketName"
+	S3BackupConfigFieldCustomCA   = "customCa"
+	S3BackupConfigFieldEndpoint   = "endpoint"
+	S3BackupConfigFieldFolder     = "folder"
+	S3BackupConfigFieldRegion     = "region"
+	S3BackupConfigFieldSecretKey  = "secretKey"
+)
+
+type S3BackupConfig struct {
+	AccessKey  string `json:"accessKey,omitempty" yaml:"accessKey,omitempty"`
+	BucketName string `json:"bucketName,omitempty" yaml:"bucketName,omitempty"`
+	CustomCA   string `json:"customCa,omitempty" yaml:"customCa,omitempty"`
+	Endpoint   string `json:"endpoint,omitempty" yaml:"endpoint,omitempty"`
+	Folder     string `json:"folder,omitempty" yaml:"folder,omitempty"`
+	Region     string `json:"region,omitempty" yaml:"region,omitempty"`
+	SecretKey  string `json:"secretKey,omitempty" yaml:"secretKey,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_s3credential_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_s3credential_config.go
new file mode 100644
index 00000000..f351e8a3
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_s3credential_config.go
@@ -0,0 +1,24 @@
+package client
+
+const (
+	S3CredentialConfigType                      = "s3CredentialConfig"
+	S3CredentialConfigFieldAccessKey            = "accessKey"
+	S3CredentialConfigFieldDefaultBucket        = "defaultBucket"
+	S3CredentialConfigFieldDefaultEndpoint      = "defaultEndpoint"
+	S3CredentialConfigFieldDefaultEndpointCA    = "defaultEndpointCA"
+	S3CredentialConfigFieldDefaultFolder        = "defaultFolder"
+	S3CredentialConfigFieldDefaultRegion        = "defaultRegion"
+	S3CredentialConfigFieldDefaultSkipSSLVerify = "defaultSkipSSLVerify"
+	S3CredentialConfigFieldSecretKey            = "secretKey"
+)
+
+type S3CredentialConfig struct {
+	AccessKey            string `json:"accessKey,omitempty" yaml:"accessKey,omitempty"`
+	DefaultBucket        string `json:"defaultBucket,omitempty" yaml:"defaultBucket,omitempty"`
+	DefaultEndpoint      string `json:"defaultEndpoint,omitempty" yaml:"defaultEndpoint,omitempty"`
+	DefaultEndpointCA    string `json:"defaultEndpointCA,omitempty" yaml:"defaultEndpointCA,omitempty"`
+	DefaultFolder        string `json:"defaultFolder,omitempty" yaml:"defaultFolder,omitempty"`
+	DefaultRegion        string `json:"defaultRegion,omitempty" yaml:"defaultRegion,omitempty"`
+	DefaultSkipSSLVerify string `json:"defaultSkipSSLVerify,omitempty" yaml:"defaultSkipSSLVerify,omitempty"`
+	SecretKey            string `json:"secretKey,omitempty" yaml:"secretKey,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_saml_config_test_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_saml_config_test_input.go
new file mode 100644
index 00000000..a7d31f93
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_saml_config_test_input.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	SamlConfigTestInputType                  = "samlConfigTestInput"
+	SamlConfigTestInputFieldFinalRedirectURL = "finalRedirectUrl"
+)
+
+type SamlConfigTestInput struct {
+	FinalRedirectURL string `json:"finalRedirectUrl,omitempty" yaml:"finalRedirectUrl,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_saml_config_test_output.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_saml_config_test_output.go
new file mode 100644
index 00000000..e9e5b95b
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_saml_config_test_output.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	SamlConfigTestOutputType                = "samlConfigTestOutput"
+	SamlConfigTestOutputFieldIdpRedirectURL = "idpRedirectUrl"
+)
+
+type SamlConfigTestOutput struct {
+	IdpRedirectURL string `json:"idpRedirectUrl,omitempty" yaml:"idpRedirectUrl,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_saml_token.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_saml_token.go
new file mode 100644
index 00000000..91f0fb3c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_saml_token.go
@@ -0,0 +1,124 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	SamlTokenType                 = "samlToken"
+	SamlTokenFieldAnnotations     = "annotations"
+	SamlTokenFieldCreated         = "created"
+	SamlTokenFieldCreatorID       = "creatorId"
+	SamlTokenFieldExpiresAt       = "expiresAt"
+	SamlTokenFieldLabels          = "labels"
+	SamlTokenFieldName            = "name"
+	SamlTokenFieldNamespaceId     = "namespaceId"
+	SamlTokenFieldOwnerReferences = "ownerReferences"
+	SamlTokenFieldRemoved         = "removed"
+	SamlTokenFieldToken           = "token"
+	SamlTokenFieldUUID            = "uuid"
+)
+
+type SamlToken struct {
+	types.Resource
+	Annotations     map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created         string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID       string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	ExpiresAt       string            `json:"expiresAt,omitempty" yaml:"expiresAt,omitempty"`
+	Labels          map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name            string            `json:"name,omitempty" yaml:"name,omitempty"`
+	NamespaceId     string            `json:"namespaceId,omitempty" yaml:"namespaceId,omitempty"`
+	OwnerReferences []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed         string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Token           string            `json:"token,omitempty" yaml:"token,omitempty"`
+	UUID            string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type SamlTokenCollection struct {
+	types.Collection
+	Data   []SamlToken `json:"data,omitempty"`
+	client *SamlTokenClient
+}
+
+type SamlTokenClient struct {
+	apiClient *Client
+}
+
+type SamlTokenOperations interface {
+	List(opts *types.ListOpts) (*SamlTokenCollection, error)
+	ListAll(opts *types.ListOpts) (*SamlTokenCollection, error)
+	Create(opts *SamlToken) (*SamlToken, error)
+	Update(existing *SamlToken, updates interface{}) (*SamlToken, error)
+	Replace(existing *SamlToken) (*SamlToken, error)
+	ByID(id string) (*SamlToken, error)
+	Delete(container *SamlToken) error
+}
+
+func newSamlTokenClient(apiClient *Client) *SamlTokenClient {
+	return &SamlTokenClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *SamlTokenClient) Create(container *SamlToken) (*SamlToken, error) {
+	resp := &SamlToken{}
+	err := c.apiClient.Ops.DoCreate(SamlTokenType, container, resp)
+	return resp, err
+}
+
+func (c *SamlTokenClient) Update(existing *SamlToken, updates interface{}) (*SamlToken, error) {
+	resp := &SamlToken{}
+	err := c.apiClient.Ops.DoUpdate(SamlTokenType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *SamlTokenClient) Replace(obj *SamlToken) (*SamlToken, error) {
+	resp := &SamlToken{}
+	err := c.apiClient.Ops.DoReplace(SamlTokenType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *SamlTokenClient) List(opts *types.ListOpts) (*SamlTokenCollection, error) {
+	resp := &SamlTokenCollection{}
+	err := c.apiClient.Ops.DoList(SamlTokenType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *SamlTokenClient) ListAll(opts *types.ListOpts) (*SamlTokenCollection, error) {
+	resp := &SamlTokenCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *SamlTokenCollection) Next() (*SamlTokenCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &SamlTokenCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *SamlTokenClient) ByID(id string) (*SamlToken, error) {
+	resp := &SamlToken{}
+	err := c.apiClient.Ops.DoByID(SamlTokenType, id, resp)
+	return resp, err
+}
+
+func (c *SamlTokenClient) Delete(container *SamlToken) error {
+	return c.apiClient.Ops.DoResourceDelete(SamlTokenType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_save_as_template_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_save_as_template_input.go
new file mode 100644
index 00000000..b756e4fe
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_save_as_template_input.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	SaveAsTemplateInputType                             = "saveAsTemplateInput"
+	SaveAsTemplateInputFieldClusterTemplateName         = "clusterTemplateName"
+	SaveAsTemplateInputFieldClusterTemplateRevisionName = "clusterTemplateRevisionName"
+)
+
+type SaveAsTemplateInput struct {
+	ClusterTemplateName         string `json:"clusterTemplateName,omitempty" yaml:"clusterTemplateName,omitempty"`
+	ClusterTemplateRevisionName string `json:"clusterTemplateRevisionName,omitempty" yaml:"clusterTemplateRevisionName,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_save_as_template_output.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_save_as_template_output.go
new file mode 100644
index 00000000..e5090105
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_save_as_template_output.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	SaveAsTemplateOutputType                             = "saveAsTemplateOutput"
+	SaveAsTemplateOutputFieldClusterTemplateName         = "clusterTemplateName"
+	SaveAsTemplateOutputFieldClusterTemplateRevisionName = "clusterTemplateRevisionName"
+)
+
+type SaveAsTemplateOutput struct {
+	ClusterTemplateName         string `json:"clusterTemplateName,omitempty" yaml:"clusterTemplateName,omitempty"`
+	ClusterTemplateRevisionName string `json:"clusterTemplateRevisionName,omitempty" yaml:"clusterTemplateRevisionName,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_scale_iovolume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_scale_iovolume_source.go
new file mode 100644
index 00000000..58e00091
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_scale_iovolume_source.go
@@ -0,0 +1,28 @@
+package client
+
+const (
+	ScaleIOVolumeSourceType                  = "scaleIOVolumeSource"
+	ScaleIOVolumeSourceFieldFSType           = "fsType"
+	ScaleIOVolumeSourceFieldGateway          = "gateway"
+	ScaleIOVolumeSourceFieldProtectionDomain = "protectionDomain"
+	ScaleIOVolumeSourceFieldReadOnly         = "readOnly"
+	ScaleIOVolumeSourceFieldSSLEnabled       = "sslEnabled"
+	ScaleIOVolumeSourceFieldSecretRef        = "secretRef"
+	ScaleIOVolumeSourceFieldStorageMode      = "storageMode"
+	ScaleIOVolumeSourceFieldStoragePool      = "storagePool"
+	ScaleIOVolumeSourceFieldSystem           = "system"
+	ScaleIOVolumeSourceFieldVolumeName       = "volumeName"
+)
+
+type ScaleIOVolumeSource struct {
+	FSType           string                `json:"fsType,omitempty" yaml:"fsType,omitempty"`
+	Gateway          string                `json:"gateway,omitempty" yaml:"gateway,omitempty"`
+	ProtectionDomain string                `json:"protectionDomain,omitempty" yaml:"protectionDomain,omitempty"`
+	ReadOnly         bool                  `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+	SSLEnabled       bool                  `json:"sslEnabled,omitempty" yaml:"sslEnabled,omitempty"`
+	SecretRef        *LocalObjectReference `json:"secretRef,omitempty" yaml:"secretRef,omitempty"`
+	StorageMode      string                `json:"storageMode,omitempty" yaml:"storageMode,omitempty"`
+	StoragePool      string                `json:"storagePool,omitempty" yaml:"storagePool,omitempty"`
+	System           string                `json:"system,omitempty" yaml:"system,omitempty"`
+	VolumeName       string                `json:"volumeName,omitempty" yaml:"volumeName,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_scheduler_service.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_scheduler_service.go
new file mode 100644
index 00000000..1af88dec
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_scheduler_service.go
@@ -0,0 +1,26 @@
+package client
+
+const (
+	SchedulerServiceType                       = "schedulerService"
+	SchedulerServiceFieldExtraArgs             = "extraArgs"
+	SchedulerServiceFieldExtraArgsArray        = "extraArgsArray"
+	SchedulerServiceFieldExtraBinds            = "extraBinds"
+	SchedulerServiceFieldExtraEnv              = "extraEnv"
+	SchedulerServiceFieldImage                 = "image"
+	SchedulerServiceFieldWindowsExtraArgs      = "winExtraArgs"
+	SchedulerServiceFieldWindowsExtraArgsArray = "winExtraArgsArray"
+	SchedulerServiceFieldWindowsExtraBinds     = "winExtraBinds"
+	SchedulerServiceFieldWindowsExtraEnv       = "winExtraEnv"
+)
+
+type SchedulerService struct {
+	ExtraArgs             map[string]string   `json:"extraArgs,omitempty" yaml:"extraArgs,omitempty"`
+	ExtraArgsArray        map[string][]string `json:"extraArgsArray,omitempty" yaml:"extraArgsArray,omitempty"`
+	ExtraBinds            []string            `json:"extraBinds,omitempty" yaml:"extraBinds,omitempty"`
+	ExtraEnv              []string            `json:"extraEnv,omitempty" yaml:"extraEnv,omitempty"`
+	Image                 string              `json:"image,omitempty" yaml:"image,omitempty"`
+	WindowsExtraArgs      map[string]string   `json:"winExtraArgs,omitempty" yaml:"winExtraArgs,omitempty"`
+	WindowsExtraArgsArray map[string][]string `json:"winExtraArgsArray,omitempty" yaml:"winExtraArgsArray,omitempty"`
+	WindowsExtraBinds     []string            `json:"winExtraBinds,omitempty" yaml:"winExtraBinds,omitempty"`
+	WindowsExtraEnv       []string            `json:"winExtraEnv,omitempty" yaml:"winExtraEnv,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_search_principals_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_search_principals_input.go
new file mode 100644
index 00000000..c486b4c2
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_search_principals_input.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	SearchPrincipalsInputType               = "searchPrincipalsInput"
+	SearchPrincipalsInputFieldName          = "name"
+	SearchPrincipalsInputFieldPrincipalType = "principalType"
+)
+
+type SearchPrincipalsInput struct {
+	Name          string `json:"name,omitempty" yaml:"name,omitempty"`
+	PrincipalType string `json:"principalType,omitempty" yaml:"principalType,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secret_key_selector.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secret_key_selector.go
new file mode 100644
index 00000000..9a236419
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secret_key_selector.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	SecretKeySelectorType          = "secretKeySelector"
+	SecretKeySelectorFieldKey      = "key"
+	SecretKeySelectorFieldName     = "name"
+	SecretKeySelectorFieldOptional = "optional"
+)
+
+type SecretKeySelector struct {
+	Key      string `json:"key,omitempty" yaml:"key,omitempty"`
+	Name     string `json:"name,omitempty" yaml:"name,omitempty"`
+	Optional *bool  `json:"optional,omitempty" yaml:"optional,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secret_projection.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secret_projection.go
new file mode 100644
index 00000000..684b025c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secret_projection.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	SecretProjectionType          = "secretProjection"
+	SecretProjectionFieldItems    = "items"
+	SecretProjectionFieldName     = "name"
+	SecretProjectionFieldOptional = "optional"
+)
+
+type SecretProjection struct {
+	Items    []KeyToPath `json:"items,omitempty" yaml:"items,omitempty"`
+	Name     string      `json:"name,omitempty" yaml:"name,omitempty"`
+	Optional *bool       `json:"optional,omitempty" yaml:"optional,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secret_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secret_volume_source.go
new file mode 100644
index 00000000..bdb5109b
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secret_volume_source.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	SecretVolumeSourceType             = "secretVolumeSource"
+	SecretVolumeSourceFieldDefaultMode = "defaultMode"
+	SecretVolumeSourceFieldItems       = "items"
+	SecretVolumeSourceFieldOptional    = "optional"
+	SecretVolumeSourceFieldSecretName  = "secretName"
+)
+
+type SecretVolumeSource struct {
+	DefaultMode *int64      `json:"defaultMode,omitempty" yaml:"defaultMode,omitempty"`
+	Items       []KeyToPath `json:"items,omitempty" yaml:"items,omitempty"`
+	Optional    *bool       `json:"optional,omitempty" yaml:"optional,omitempty"`
+	SecretName  string      `json:"secretName,omitempty" yaml:"secretName,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secretbox_configuration.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secretbox_configuration.go
new file mode 100644
index 00000000..c913985a
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secretbox_configuration.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	SecretboxConfigurationType      = "secretboxConfiguration"
+	SecretboxConfigurationFieldKeys = "keys"
+)
+
+type SecretboxConfiguration struct {
+	Keys []Key `json:"keys,omitempty" yaml:"keys,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secrets_encryption_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secrets_encryption_config.go
new file mode 100644
index 00000000..658ff6b5
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_secrets_encryption_config.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	SecretsEncryptionConfigType              = "secretsEncryptionConfig"
+	SecretsEncryptionConfigFieldCustomConfig = "customConfig"
+	SecretsEncryptionConfigFieldEnabled      = "enabled"
+)
+
+type SecretsEncryptionConfig struct {
+	CustomConfig *EncryptionConfiguration `json:"customConfig,omitempty" yaml:"customConfig,omitempty"`
+	Enabled      bool                     `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_service_account_token_projection.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_service_account_token_projection.go
new file mode 100644
index 00000000..7d2e880e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_service_account_token_projection.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	ServiceAccountTokenProjectionType                   = "serviceAccountTokenProjection"
+	ServiceAccountTokenProjectionFieldAudience          = "audience"
+	ServiceAccountTokenProjectionFieldExpirationSeconds = "expirationSeconds"
+	ServiceAccountTokenProjectionFieldPath              = "path"
+)
+
+type ServiceAccountTokenProjection struct {
+	Audience          string `json:"audience,omitempty" yaml:"audience,omitempty"`
+	ExpirationSeconds *int64 `json:"expirationSeconds,omitempty" yaml:"expirationSeconds,omitempty"`
+	Path              string `json:"path,omitempty" yaml:"path,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_service_override.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_service_override.go
new file mode 100644
index 00000000..96ed63c0
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_service_override.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	ServiceOverrideType               = "serviceOverride"
+	ServiceOverrideFieldRegion        = "region"
+	ServiceOverrideFieldService       = "service"
+	ServiceOverrideFieldSigningMethod = "signing-method"
+	ServiceOverrideFieldSigningName   = "signing-name"
+	ServiceOverrideFieldSigningRegion = "signing-region"
+	ServiceOverrideFieldURL           = "url"
+)
+
+type ServiceOverride struct {
+	Region        string `json:"region,omitempty" yaml:"region,omitempty"`
+	Service       string `json:"service,omitempty" yaml:"service,omitempty"`
+	SigningMethod string `json:"signing-method,omitempty" yaml:"signing-method,omitempty"`
+	SigningName   string `json:"signing-name,omitempty" yaml:"signing-name,omitempty"`
+	SigningRegion string `json:"signing-region,omitempty" yaml:"signing-region,omitempty"`
+	URL           string `json:"url,omitempty" yaml:"url,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_set_password_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_set_password_input.go
new file mode 100644
index 00000000..4dc32d6c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_set_password_input.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	SetPasswordInputType             = "setPasswordInput"
+	SetPasswordInputFieldNewPassword = "newPassword"
+)
+
+type SetPasswordInput struct {
+	NewPassword string `json:"newPassword,omitempty" yaml:"newPassword,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_setting.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_setting.go
new file mode 100644
index 00000000..6ea352ba
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_setting.go
@@ -0,0 +1,126 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	SettingType                 = "setting"
+	SettingFieldAnnotations     = "annotations"
+	SettingFieldCreated         = "created"
+	SettingFieldCreatorID       = "creatorId"
+	SettingFieldCustomized      = "customized"
+	SettingFieldDefault         = "default"
+	SettingFieldLabels          = "labels"
+	SettingFieldName            = "name"
+	SettingFieldOwnerReferences = "ownerReferences"
+	SettingFieldRemoved         = "removed"
+	SettingFieldSource          = "source"
+	SettingFieldUUID            = "uuid"
+	SettingFieldValue           = "value"
+)
+
+type Setting struct {
+	types.Resource
+	Annotations     map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created         string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID       string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Customized      bool              `json:"customized,omitempty" yaml:"customized,omitempty"`
+	Default         string            `json:"default,omitempty" yaml:"default,omitempty"`
+	Labels          map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name            string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed         string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	Source          string            `json:"source,omitempty" yaml:"source,omitempty"`
+	UUID            string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	Value           string            `json:"value,omitempty" yaml:"value,omitempty"`
+}
+
+type SettingCollection struct {
+	types.Collection
+	Data   []Setting `json:"data,omitempty"`
+	client *SettingClient
+}
+
+type SettingClient struct {
+	apiClient *Client
+}
+
+type SettingOperations interface {
+	List(opts *types.ListOpts) (*SettingCollection, error)
+	ListAll(opts *types.ListOpts) (*SettingCollection, error)
+	Create(opts *Setting) (*Setting, error)
+	Update(existing *Setting, updates interface{}) (*Setting, error)
+	Replace(existing *Setting) (*Setting, error)
+	ByID(id string) (*Setting, error)
+	Delete(container *Setting) error
+}
+
+func newSettingClient(apiClient *Client) *SettingClient {
+	return &SettingClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *SettingClient) Create(container *Setting) (*Setting, error) {
+	resp := &Setting{}
+	err := c.apiClient.Ops.DoCreate(SettingType, container, resp)
+	return resp, err
+}
+
+func (c *SettingClient) Update(existing *Setting, updates interface{}) (*Setting, error) {
+	resp := &Setting{}
+	err := c.apiClient.Ops.DoUpdate(SettingType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *SettingClient) Replace(obj *Setting) (*Setting, error) {
+	resp := &Setting{}
+	err := c.apiClient.Ops.DoReplace(SettingType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *SettingClient) List(opts *types.ListOpts) (*SettingCollection, error) {
+	resp := &SettingCollection{}
+	err := c.apiClient.Ops.DoList(SettingType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *SettingClient) ListAll(opts *types.ListOpts) (*SettingCollection, error) {
+	resp := &SettingCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *SettingCollection) Next() (*SettingCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &SettingCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *SettingClient) ByID(id string) (*Setting, error) {
+	resp := &Setting{}
+	err := c.apiClient.Ops.DoByID(SettingType, id, resp)
+	return resp, err
+}
+
+func (c *SettingClient) Delete(container *Setting) error {
+	return c.apiClient.Ops.DoResourceDelete(SettingType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_shibboleth_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_shibboleth_config.go
new file mode 100644
index 00000000..8ab4b89a
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_shibboleth_config.go
@@ -0,0 +1,54 @@
+package client
+
+const (
+	ShibbolethConfigType                     = "shibbolethConfig"
+	ShibbolethConfigFieldAccessMode          = "accessMode"
+	ShibbolethConfigFieldAllowedPrincipalIDs = "allowedPrincipalIds"
+	ShibbolethConfigFieldAnnotations         = "annotations"
+	ShibbolethConfigFieldCreated             = "created"
+	ShibbolethConfigFieldCreatorID           = "creatorId"
+	ShibbolethConfigFieldDisplayNameField    = "displayNameField"
+	ShibbolethConfigFieldEnabled             = "enabled"
+	ShibbolethConfigFieldEntityID            = "entityID"
+	ShibbolethConfigFieldGroupsField         = "groupsField"
+	ShibbolethConfigFieldIDPMetadataContent  = "idpMetadataContent"
+	ShibbolethConfigFieldLabels              = "labels"
+	ShibbolethConfigFieldName                = "name"
+	ShibbolethConfigFieldOpenLdapConfig      = "openLdapConfig"
+	ShibbolethConfigFieldOwnerReferences     = "ownerReferences"
+	ShibbolethConfigFieldRancherAPIHost      = "rancherApiHost"
+	ShibbolethConfigFieldRemoved             = "removed"
+	ShibbolethConfigFieldSpCert              = "spCert"
+	ShibbolethConfigFieldSpKey               = "spKey"
+	ShibbolethConfigFieldStatus              = "status"
+	ShibbolethConfigFieldType                = "type"
+	ShibbolethConfigFieldUIDField            = "uidField"
+	ShibbolethConfigFieldUUID                = "uuid"
+	ShibbolethConfigFieldUserNameField       = "userNameField"
+)
+
+type ShibbolethConfig struct {
+	AccessMode          string            `json:"accessMode,omitempty" yaml:"accessMode,omitempty"`
+	AllowedPrincipalIDs []string          `json:"allowedPrincipalIds,omitempty" yaml:"allowedPrincipalIds,omitempty"`
+	Annotations         map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created             string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID           string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	DisplayNameField    string            `json:"displayNameField,omitempty" yaml:"displayNameField,omitempty"`
+	Enabled             bool              `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	EntityID            string            `json:"entityID,omitempty" yaml:"entityID,omitempty"`
+	GroupsField         string            `json:"groupsField,omitempty" yaml:"groupsField,omitempty"`
+	IDPMetadataContent  string            `json:"idpMetadataContent,omitempty" yaml:"idpMetadataContent,omitempty"`
+	Labels              map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OpenLdapConfig      *LdapFields       `json:"openLdapConfig,omitempty" yaml:"openLdapConfig,omitempty"`
+	OwnerReferences     []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	RancherAPIHost      string            `json:"rancherApiHost,omitempty" yaml:"rancherApiHost,omitempty"`
+	Removed             string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	SpCert              string            `json:"spCert,omitempty" yaml:"spCert,omitempty"`
+	SpKey               string            `json:"spKey,omitempty" yaml:"spKey,omitempty"`
+	Status              *AuthConfigStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	Type                string            `json:"type,omitempty" yaml:"type,omitempty"`
+	UIDField            string            `json:"uidField,omitempty" yaml:"uidField,omitempty"`
+	UUID                string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserNameField       string            `json:"userNameField,omitempty" yaml:"userNameField,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_storage_osvolume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_storage_osvolume_source.go
new file mode 100644
index 00000000..46dc40fd
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_storage_osvolume_source.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	StorageOSVolumeSourceType                 = "storageOSVolumeSource"
+	StorageOSVolumeSourceFieldFSType          = "fsType"
+	StorageOSVolumeSourceFieldReadOnly        = "readOnly"
+	StorageOSVolumeSourceFieldSecretRef       = "secretRef"
+	StorageOSVolumeSourceFieldVolumeName      = "volumeName"
+	StorageOSVolumeSourceFieldVolumeNamespace = "volumeNamespace"
+)
+
+type StorageOSVolumeSource struct {
+	FSType          string                `json:"fsType,omitempty" yaml:"fsType,omitempty"`
+	ReadOnly        bool                  `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
+	SecretRef       *LocalObjectReference `json:"secretRef,omitempty" yaml:"secretRef,omitempty"`
+	VolumeName      string                `json:"volumeName,omitempty" yaml:"volumeName,omitempty"`
+	VolumeNamespace string                `json:"volumeNamespace,omitempty" yaml:"volumeNamespace,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_sub_question.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_sub_question.go
new file mode 100644
index 00000000..f0a47e0a
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_sub_question.go
@@ -0,0 +1,40 @@
+package client
+
+const (
+	SubQuestionType              = "subQuestion"
+	SubQuestionFieldDefault      = "default"
+	SubQuestionFieldDescription  = "description"
+	SubQuestionFieldGroup        = "group"
+	SubQuestionFieldInvalidChars = "invalidChars"
+	SubQuestionFieldLabel        = "label"
+	SubQuestionFieldMax          = "max"
+	SubQuestionFieldMaxLength    = "maxLength"
+	SubQuestionFieldMin          = "min"
+	SubQuestionFieldMinLength    = "minLength"
+	SubQuestionFieldOptions      = "options"
+	SubQuestionFieldRequired     = "required"
+	SubQuestionFieldSatisfies    = "satisfies"
+	SubQuestionFieldShowIf       = "showIf"
+	SubQuestionFieldType         = "type"
+	SubQuestionFieldValidChars   = "validChars"
+	SubQuestionFieldVariable     = "variable"
+)
+
+type SubQuestion struct {
+	Default      string   `json:"default,omitempty" yaml:"default,omitempty"`
+	Description  string   `json:"description,omitempty" yaml:"description,omitempty"`
+	Group        string   `json:"group,omitempty" yaml:"group,omitempty"`
+	InvalidChars string   `json:"invalidChars,omitempty" yaml:"invalidChars,omitempty"`
+	Label        string   `json:"label,omitempty" yaml:"label,omitempty"`
+	Max          int64    `json:"max,omitempty" yaml:"max,omitempty"`
+	MaxLength    int64    `json:"maxLength,omitempty" yaml:"maxLength,omitempty"`
+	Min          int64    `json:"min,omitempty" yaml:"min,omitempty"`
+	MinLength    int64    `json:"minLength,omitempty" yaml:"minLength,omitempty"`
+	Options      []string `json:"options,omitempty" yaml:"options,omitempty"`
+	Required     bool     `json:"required,omitempty" yaml:"required,omitempty"`
+	Satisfies    string   `json:"satisfies,omitempty" yaml:"satisfies,omitempty"`
+	ShowIf       string   `json:"showIf,omitempty" yaml:"showIf,omitempty"`
+	Type         string   `json:"type,omitempty" yaml:"type,omitempty"`
+	ValidChars   string   `json:"validChars,omitempty" yaml:"validChars,omitempty"`
+	Variable     string   `json:"variable,omitempty" yaml:"variable,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_taint.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_taint.go
new file mode 100644
index 00000000..cec2b5ff
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_taint.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	TaintType           = "taint"
+	TaintFieldEffect    = "effect"
+	TaintFieldKey       = "key"
+	TaintFieldTimeAdded = "timeAdded"
+	TaintFieldValue     = "value"
+)
+
+type Taint struct {
+	Effect    string `json:"effect,omitempty" yaml:"effect,omitempty"`
+	Key       string `json:"key,omitempty" yaml:"key,omitempty"`
+	TimeAdded string `json:"timeAdded,omitempty" yaml:"timeAdded,omitempty"`
+	Value     string `json:"value,omitempty" yaml:"value,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_target.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_target.go
new file mode 100644
index 00000000..cd8d7282
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_target.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	TargetType             = "target"
+	TargetFieldAppID       = "appId"
+	TargetFieldHealthstate = "healthState"
+	TargetFieldProjectID   = "projectId"
+	TargetFieldState       = "state"
+)
+
+type Target struct {
+	AppID       string `json:"appId,omitempty" yaml:"appId,omitempty"`
+	Healthstate string `json:"healthState,omitempty" yaml:"healthState,omitempty"`
+	ProjectID   string `json:"projectId,omitempty" yaml:"projectId,omitempty"`
+	State       string `json:"state,omitempty" yaml:"state,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template.go
new file mode 100644
index 00000000..9b155630
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template.go
@@ -0,0 +1,166 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	TemplateType                          = "template"
+	TemplateFieldAnnotations              = "annotations"
+	TemplateFieldCatalogID                = "catalogId"
+	TemplateFieldCategories               = "categories"
+	TemplateFieldCategory                 = "category"
+	TemplateFieldClusterCatalogID         = "clusterCatalogId"
+	TemplateFieldClusterID                = "clusterId"
+	TemplateFieldCreated                  = "created"
+	TemplateFieldCreatorID                = "creatorId"
+	TemplateFieldDefaultTemplateVersionID = "defaultTemplateVersionId"
+	TemplateFieldDefaultVersion           = "defaultVersion"
+	TemplateFieldDescription              = "description"
+	TemplateFieldFolderName               = "folderName"
+	TemplateFieldIcon                     = "icon"
+	TemplateFieldIconFilename             = "iconFilename"
+	TemplateFieldLabels                   = "labels"
+	TemplateFieldMaintainer               = "maintainer"
+	TemplateFieldName                     = "name"
+	TemplateFieldOwnerReferences          = "ownerReferences"
+	TemplateFieldPath                     = "path"
+	TemplateFieldProjectCatalogID         = "projectCatalogId"
+	TemplateFieldProjectID                = "projectId"
+	TemplateFieldProjectURL               = "projectURL"
+	TemplateFieldReadme                   = "readme"
+	TemplateFieldRemoved                  = "removed"
+	TemplateFieldState                    = "state"
+	TemplateFieldStatus                   = "status"
+	TemplateFieldTransitioning            = "transitioning"
+	TemplateFieldTransitioningMessage     = "transitioningMessage"
+	TemplateFieldUUID                     = "uuid"
+	TemplateFieldUpgradeFrom              = "upgradeFrom"
+	TemplateFieldVersionLinks             = "versionLinks"
+	TemplateFieldVersions                 = "versions"
+)
+
+type Template struct {
+	types.Resource
+	Annotations              map[string]string     `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	CatalogID                string                `json:"catalogId,omitempty" yaml:"catalogId,omitempty"`
+	Categories               []string              `json:"categories,omitempty" yaml:"categories,omitempty"`
+	Category                 string                `json:"category,omitempty" yaml:"category,omitempty"`
+	ClusterCatalogID         string                `json:"clusterCatalogId,omitempty" yaml:"clusterCatalogId,omitempty"`
+	ClusterID                string                `json:"clusterId,omitempty" yaml:"clusterId,omitempty"`
+	Created                  string                `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID                string                `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	DefaultTemplateVersionID string                `json:"defaultTemplateVersionId,omitempty" yaml:"defaultTemplateVersionId,omitempty"`
+	DefaultVersion           string                `json:"defaultVersion,omitempty" yaml:"defaultVersion,omitempty"`
+	Description              string                `json:"description,omitempty" yaml:"description,omitempty"`
+	FolderName               string                `json:"folderName,omitempty" yaml:"folderName,omitempty"`
+	Icon                     string                `json:"icon,omitempty" yaml:"icon,omitempty"`
+	IconFilename             string                `json:"iconFilename,omitempty" yaml:"iconFilename,omitempty"`
+	Labels                   map[string]string     `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Maintainer               string                `json:"maintainer,omitempty" yaml:"maintainer,omitempty"`
+	Name                     string                `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences          []OwnerReference      `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Path                     string                `json:"path,omitempty" yaml:"path,omitempty"`
+	ProjectCatalogID         string                `json:"projectCatalogId,omitempty" yaml:"projectCatalogId,omitempty"`
+	ProjectID                string                `json:"projectId,omitempty" yaml:"projectId,omitempty"`
+	ProjectURL               string                `json:"projectURL,omitempty" yaml:"projectURL,omitempty"`
+	Readme                   string                `json:"readme,omitempty" yaml:"readme,omitempty"`
+	Removed                  string                `json:"removed,omitempty" yaml:"removed,omitempty"`
+	State                    string                `json:"state,omitempty" yaml:"state,omitempty"`
+	Status                   *TemplateStatus       `json:"status,omitempty" yaml:"status,omitempty"`
+	Transitioning            string                `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage     string                `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                     string                `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UpgradeFrom              string                `json:"upgradeFrom,omitempty" yaml:"upgradeFrom,omitempty"`
+	VersionLinks             map[string]string     `json:"versionLinks,omitempty" yaml:"versionLinks,omitempty"`
+	Versions                 []TemplateVersionSpec `json:"versions,omitempty" yaml:"versions,omitempty"`
+}
+
+type TemplateCollection struct {
+	types.Collection
+	Data   []Template `json:"data,omitempty"`
+	client *TemplateClient
+}
+
+type TemplateClient struct {
+	apiClient *Client
+}
+
+type TemplateOperations interface {
+	List(opts *types.ListOpts) (*TemplateCollection, error)
+	ListAll(opts *types.ListOpts) (*TemplateCollection, error)
+	Create(opts *Template) (*Template, error)
+	Update(existing *Template, updates interface{}) (*Template, error)
+	Replace(existing *Template) (*Template, error)
+	ByID(id string) (*Template, error)
+	Delete(container *Template) error
+}
+
+func newTemplateClient(apiClient *Client) *TemplateClient {
+	return &TemplateClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *TemplateClient) Create(container *Template) (*Template, error) {
+	resp := &Template{}
+	err := c.apiClient.Ops.DoCreate(TemplateType, container, resp)
+	return resp, err
+}
+
+func (c *TemplateClient) Update(existing *Template, updates interface{}) (*Template, error) {
+	resp := &Template{}
+	err := c.apiClient.Ops.DoUpdate(TemplateType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *TemplateClient) Replace(obj *Template) (*Template, error) {
+	resp := &Template{}
+	err := c.apiClient.Ops.DoReplace(TemplateType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *TemplateClient) List(opts *types.ListOpts) (*TemplateCollection, error) {
+	resp := &TemplateCollection{}
+	err := c.apiClient.Ops.DoList(TemplateType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *TemplateClient) ListAll(opts *types.ListOpts) (*TemplateCollection, error) {
+	resp := &TemplateCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *TemplateCollection) Next() (*TemplateCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &TemplateCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *TemplateClient) ByID(id string) (*Template, error) {
+	resp := &Template{}
+	err := c.apiClient.Ops.DoByID(TemplateType, id, resp)
+	return resp, err
+}
+
+func (c *TemplateClient) Delete(container *Template) error {
+	return c.apiClient.Ops.DoResourceDelete(TemplateType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_content.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_content.go
new file mode 100644
index 00000000..14061ba7
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_content.go
@@ -0,0 +1,120 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	TemplateContentType                 = "templateContent"
+	TemplateContentFieldAnnotations     = "annotations"
+	TemplateContentFieldCreated         = "created"
+	TemplateContentFieldCreatorID       = "creatorId"
+	TemplateContentFieldData            = "data"
+	TemplateContentFieldLabels          = "labels"
+	TemplateContentFieldName            = "name"
+	TemplateContentFieldOwnerReferences = "ownerReferences"
+	TemplateContentFieldRemoved         = "removed"
+	TemplateContentFieldUUID            = "uuid"
+)
+
+type TemplateContent struct {
+	types.Resource
+	Annotations     map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created         string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID       string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Data            string            `json:"data,omitempty" yaml:"data,omitempty"`
+	Labels          map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name            string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed         string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	UUID            string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+}
+
+type TemplateContentCollection struct {
+	types.Collection
+	Data   []TemplateContent `json:"data,omitempty"`
+	client *TemplateContentClient
+}
+
+type TemplateContentClient struct {
+	apiClient *Client
+}
+
+type TemplateContentOperations interface {
+	List(opts *types.ListOpts) (*TemplateContentCollection, error)
+	ListAll(opts *types.ListOpts) (*TemplateContentCollection, error)
+	Create(opts *TemplateContent) (*TemplateContent, error)
+	Update(existing *TemplateContent, updates interface{}) (*TemplateContent, error)
+	Replace(existing *TemplateContent) (*TemplateContent, error)
+	ByID(id string) (*TemplateContent, error)
+	Delete(container *TemplateContent) error
+}
+
+func newTemplateContentClient(apiClient *Client) *TemplateContentClient {
+	return &TemplateContentClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *TemplateContentClient) Create(container *TemplateContent) (*TemplateContent, error) {
+	resp := &TemplateContent{}
+	err := c.apiClient.Ops.DoCreate(TemplateContentType, container, resp)
+	return resp, err
+}
+
+func (c *TemplateContentClient) Update(existing *TemplateContent, updates interface{}) (*TemplateContent, error) {
+	resp := &TemplateContent{}
+	err := c.apiClient.Ops.DoUpdate(TemplateContentType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *TemplateContentClient) Replace(obj *TemplateContent) (*TemplateContent, error) {
+	resp := &TemplateContent{}
+	err := c.apiClient.Ops.DoReplace(TemplateContentType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *TemplateContentClient) List(opts *types.ListOpts) (*TemplateContentCollection, error) {
+	resp := &TemplateContentCollection{}
+	err := c.apiClient.Ops.DoList(TemplateContentType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *TemplateContentClient) ListAll(opts *types.ListOpts) (*TemplateContentCollection, error) {
+	resp := &TemplateContentCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *TemplateContentCollection) Next() (*TemplateContentCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &TemplateContentCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *TemplateContentClient) ByID(id string) (*TemplateContent, error) {
+	resp := &TemplateContent{}
+	err := c.apiClient.Ops.DoByID(TemplateContentType, id, resp)
+	return resp, err
+}
+
+func (c *TemplateContentClient) Delete(container *TemplateContent) error {
+	return c.apiClient.Ops.DoResourceDelete(TemplateContentType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_spec.go
new file mode 100644
index 00000000..dbce148a
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_spec.go
@@ -0,0 +1,48 @@
+package client
+
+const (
+	TemplateSpecType                          = "templateSpec"
+	TemplateSpecFieldCatalogID                = "catalogId"
+	TemplateSpecFieldCategories               = "categories"
+	TemplateSpecFieldCategory                 = "category"
+	TemplateSpecFieldClusterCatalogID         = "clusterCatalogId"
+	TemplateSpecFieldClusterID                = "clusterId"
+	TemplateSpecFieldDefaultTemplateVersionID = "defaultTemplateVersionId"
+	TemplateSpecFieldDefaultVersion           = "defaultVersion"
+	TemplateSpecFieldDescription              = "description"
+	TemplateSpecFieldDisplayName              = "displayName"
+	TemplateSpecFieldFolderName               = "folderName"
+	TemplateSpecFieldIcon                     = "icon"
+	TemplateSpecFieldIconFilename             = "iconFilename"
+	TemplateSpecFieldMaintainer               = "maintainer"
+	TemplateSpecFieldPath                     = "path"
+	TemplateSpecFieldProjectCatalogID         = "projectCatalogId"
+	TemplateSpecFieldProjectID                = "projectId"
+	TemplateSpecFieldProjectURL               = "projectURL"
+	TemplateSpecFieldReadme                   = "readme"
+	TemplateSpecFieldUpgradeFrom              = "upgradeFrom"
+	TemplateSpecFieldVersions                 = "versions"
+)
+
+type TemplateSpec struct {
+	CatalogID                string                `json:"catalogId,omitempty" yaml:"catalogId,omitempty"`
+	Categories               []string              `json:"categories,omitempty" yaml:"categories,omitempty"`
+	Category                 string                `json:"category,omitempty" yaml:"category,omitempty"`
+	ClusterCatalogID         string                `json:"clusterCatalogId,omitempty" yaml:"clusterCatalogId,omitempty"`
+	ClusterID                string                `json:"clusterId,omitempty" yaml:"clusterId,omitempty"`
+	DefaultTemplateVersionID string                `json:"defaultTemplateVersionId,omitempty" yaml:"defaultTemplateVersionId,omitempty"`
+	DefaultVersion           string                `json:"defaultVersion,omitempty" yaml:"defaultVersion,omitempty"`
+	Description              string                `json:"description,omitempty" yaml:"description,omitempty"`
+	DisplayName              string                `json:"displayName,omitempty" yaml:"displayName,omitempty"`
+	FolderName               string                `json:"folderName,omitempty" yaml:"folderName,omitempty"`
+	Icon                     string                `json:"icon,omitempty" yaml:"icon,omitempty"`
+	IconFilename             string                `json:"iconFilename,omitempty" yaml:"iconFilename,omitempty"`
+	Maintainer               string                `json:"maintainer,omitempty" yaml:"maintainer,omitempty"`
+	Path                     string                `json:"path,omitempty" yaml:"path,omitempty"`
+	ProjectCatalogID         string                `json:"projectCatalogId,omitempty" yaml:"projectCatalogId,omitempty"`
+	ProjectID                string                `json:"projectId,omitempty" yaml:"projectId,omitempty"`
+	ProjectURL               string                `json:"projectURL,omitempty" yaml:"projectURL,omitempty"`
+	Readme                   string                `json:"readme,omitempty" yaml:"readme,omitempty"`
+	UpgradeFrom              string                `json:"upgradeFrom,omitempty" yaml:"upgradeFrom,omitempty"`
+	Versions                 []TemplateVersionSpec `json:"versions,omitempty" yaml:"versions,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_status.go
new file mode 100644
index 00000000..573947c5
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_status.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	TemplateStatusType             = "templateStatus"
+	TemplateStatusFieldHelmVersion = "helmVersion"
+)
+
+type TemplateStatus struct {
+	HelmVersion string `json:"helmVersion,omitempty" yaml:"helmVersion,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_version.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_version.go
new file mode 100644
index 00000000..f981e2c8
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_version.go
@@ -0,0 +1,158 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	TemplateVersionType                      = "templateVersion"
+	TemplateVersionFieldAnnotations          = "annotations"
+	TemplateVersionFieldAppReadme            = "appReadme"
+	TemplateVersionFieldCreated              = "created"
+	TemplateVersionFieldCreatorID            = "creatorId"
+	TemplateVersionFieldDigest               = "digest"
+	TemplateVersionFieldExternalID           = "externalId"
+	TemplateVersionFieldFiles                = "files"
+	TemplateVersionFieldKubeVersion          = "kubeVersion"
+	TemplateVersionFieldLabels               = "labels"
+	TemplateVersionFieldName                 = "name"
+	TemplateVersionFieldOwnerReferences      = "ownerReferences"
+	TemplateVersionFieldQuestions            = "questions"
+	TemplateVersionFieldRancherMaxVersion    = "rancherMaxVersion"
+	TemplateVersionFieldRancherMinVersion    = "rancherMinVersion"
+	TemplateVersionFieldRancherVersion       = "rancherVersion"
+	TemplateVersionFieldReadme               = "readme"
+	TemplateVersionFieldRemoved              = "removed"
+	TemplateVersionFieldRequiredNamespace    = "requiredNamespace"
+	TemplateVersionFieldState                = "state"
+	TemplateVersionFieldStatus               = "status"
+	TemplateVersionFieldTransitioning        = "transitioning"
+	TemplateVersionFieldTransitioningMessage = "transitioningMessage"
+	TemplateVersionFieldUUID                 = "uuid"
+	TemplateVersionFieldUpgradeVersionLinks  = "upgradeVersionLinks"
+	TemplateVersionFieldVersion              = "version"
+	TemplateVersionFieldVersionDir           = "versionDir"
+	TemplateVersionFieldVersionName          = "versionName"
+	TemplateVersionFieldVersionURLs          = "versionUrls"
+)
+
+type TemplateVersion struct {
+	types.Resource
+	Annotations          map[string]string      `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	AppReadme            string                 `json:"appReadme,omitempty" yaml:"appReadme,omitempty"`
+	Created              string                 `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID            string                 `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Digest               string                 `json:"digest,omitempty" yaml:"digest,omitempty"`
+	ExternalID           string                 `json:"externalId,omitempty" yaml:"externalId,omitempty"`
+	Files                map[string]string      `json:"files,omitempty" yaml:"files,omitempty"`
+	KubeVersion          string                 `json:"kubeVersion,omitempty" yaml:"kubeVersion,omitempty"`
+	Labels               map[string]string      `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                 string                 `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences      []OwnerReference       `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Questions            []Question             `json:"questions,omitempty" yaml:"questions,omitempty"`
+	RancherMaxVersion    string                 `json:"rancherMaxVersion,omitempty" yaml:"rancherMaxVersion,omitempty"`
+	RancherMinVersion    string                 `json:"rancherMinVersion,omitempty" yaml:"rancherMinVersion,omitempty"`
+	RancherVersion       string                 `json:"rancherVersion,omitempty" yaml:"rancherVersion,omitempty"`
+	Readme               string                 `json:"readme,omitempty" yaml:"readme,omitempty"`
+	Removed              string                 `json:"removed,omitempty" yaml:"removed,omitempty"`
+	RequiredNamespace    string                 `json:"requiredNamespace,omitempty" yaml:"requiredNamespace,omitempty"`
+	State                string                 `json:"state,omitempty" yaml:"state,omitempty"`
+	Status               *TemplateVersionStatus `json:"status,omitempty" yaml:"status,omitempty"`
+	Transitioning        string                 `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage string                 `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                 string                 `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UpgradeVersionLinks  map[string]string      `json:"upgradeVersionLinks,omitempty" yaml:"upgradeVersionLinks,omitempty"`
+	Version              string                 `json:"version,omitempty" yaml:"version,omitempty"`
+	VersionDir           string                 `json:"versionDir,omitempty" yaml:"versionDir,omitempty"`
+	VersionName          string                 `json:"versionName,omitempty" yaml:"versionName,omitempty"`
+	VersionURLs          []string               `json:"versionUrls,omitempty" yaml:"versionUrls,omitempty"`
+}
+
+type TemplateVersionCollection struct {
+	types.Collection
+	Data   []TemplateVersion `json:"data,omitempty"`
+	client *TemplateVersionClient
+}
+
+type TemplateVersionClient struct {
+	apiClient *Client
+}
+
+type TemplateVersionOperations interface {
+	List(opts *types.ListOpts) (*TemplateVersionCollection, error)
+	ListAll(opts *types.ListOpts) (*TemplateVersionCollection, error)
+	Create(opts *TemplateVersion) (*TemplateVersion, error)
+	Update(existing *TemplateVersion, updates interface{}) (*TemplateVersion, error)
+	Replace(existing *TemplateVersion) (*TemplateVersion, error)
+	ByID(id string) (*TemplateVersion, error)
+	Delete(container *TemplateVersion) error
+}
+
+func newTemplateVersionClient(apiClient *Client) *TemplateVersionClient {
+	return &TemplateVersionClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *TemplateVersionClient) Create(container *TemplateVersion) (*TemplateVersion, error) {
+	resp := &TemplateVersion{}
+	err := c.apiClient.Ops.DoCreate(TemplateVersionType, container, resp)
+	return resp, err
+}
+
+func (c *TemplateVersionClient) Update(existing *TemplateVersion, updates interface{}) (*TemplateVersion, error) {
+	resp := &TemplateVersion{}
+	err := c.apiClient.Ops.DoUpdate(TemplateVersionType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *TemplateVersionClient) Replace(obj *TemplateVersion) (*TemplateVersion, error) {
+	resp := &TemplateVersion{}
+	err := c.apiClient.Ops.DoReplace(TemplateVersionType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *TemplateVersionClient) List(opts *types.ListOpts) (*TemplateVersionCollection, error) {
+	resp := &TemplateVersionCollection{}
+	err := c.apiClient.Ops.DoList(TemplateVersionType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *TemplateVersionClient) ListAll(opts *types.ListOpts) (*TemplateVersionCollection, error) {
+	resp := &TemplateVersionCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *TemplateVersionCollection) Next() (*TemplateVersionCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &TemplateVersionCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *TemplateVersionClient) ByID(id string) (*TemplateVersion, error) {
+	resp := &TemplateVersion{}
+	err := c.apiClient.Ops.DoByID(TemplateVersionType, id, resp)
+	return resp, err
+}
+
+func (c *TemplateVersionClient) Delete(container *TemplateVersion) error {
+	return c.apiClient.Ops.DoResourceDelete(TemplateVersionType, &container.Resource)
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_version_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_version_spec.go
new file mode 100644
index 00000000..ba9dd9fe
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_version_spec.go
@@ -0,0 +1,40 @@
+package client
+
+const (
+	TemplateVersionSpecType                     = "templateVersionSpec"
+	TemplateVersionSpecFieldAppReadme           = "appReadme"
+	TemplateVersionSpecFieldDigest              = "digest"
+	TemplateVersionSpecFieldExternalID          = "externalId"
+	TemplateVersionSpecFieldFiles               = "files"
+	TemplateVersionSpecFieldKubeVersion         = "kubeVersion"
+	TemplateVersionSpecFieldQuestions           = "questions"
+	TemplateVersionSpecFieldRancherMaxVersion   = "rancherMaxVersion"
+	TemplateVersionSpecFieldRancherMinVersion   = "rancherMinVersion"
+	TemplateVersionSpecFieldRancherVersion      = "rancherVersion"
+	TemplateVersionSpecFieldReadme              = "readme"
+	TemplateVersionSpecFieldRequiredNamespace   = "requiredNamespace"
+	TemplateVersionSpecFieldUpgradeVersionLinks = "upgradeVersionLinks"
+	TemplateVersionSpecFieldVersion             = "version"
+	TemplateVersionSpecFieldVersionDir          = "versionDir"
+	TemplateVersionSpecFieldVersionName         = "versionName"
+	TemplateVersionSpecFieldVersionURLs         = "versionUrls"
+)
+
+type TemplateVersionSpec struct {
+	AppReadme           string            `json:"appReadme,omitempty" yaml:"appReadme,omitempty"`
+	Digest              string            `json:"digest,omitempty" yaml:"digest,omitempty"`
+	ExternalID          string            `json:"externalId,omitempty" yaml:"externalId,omitempty"`
+	Files               map[string]string `json:"files,omitempty" yaml:"files,omitempty"`
+	KubeVersion         string            `json:"kubeVersion,omitempty" yaml:"kubeVersion,omitempty"`
+	Questions           []Question        `json:"questions,omitempty" yaml:"questions,omitempty"`
+	RancherMaxVersion   string            `json:"rancherMaxVersion,omitempty" yaml:"rancherMaxVersion,omitempty"`
+	RancherMinVersion   string            `json:"rancherMinVersion,omitempty" yaml:"rancherMinVersion,omitempty"`
+	RancherVersion      string            `json:"rancherVersion,omitempty" yaml:"rancherVersion,omitempty"`
+	Readme              string            `json:"readme,omitempty" yaml:"readme,omitempty"`
+	RequiredNamespace   string            `json:"requiredNamespace,omitempty" yaml:"requiredNamespace,omitempty"`
+	UpgradeVersionLinks map[string]string `json:"upgradeVersionLinks,omitempty" yaml:"upgradeVersionLinks,omitempty"`
+	Version             string            `json:"version,omitempty" yaml:"version,omitempty"`
+	VersionDir          string            `json:"versionDir,omitempty" yaml:"versionDir,omitempty"`
+	VersionName         string            `json:"versionName,omitempty" yaml:"versionName,omitempty"`
+	VersionURLs         []string          `json:"versionUrls,omitempty" yaml:"versionUrls,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_version_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_version_status.go
new file mode 100644
index 00000000..ea736ff6
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_template_version_status.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	TemplateVersionStatusType             = "templateVersionStatus"
+	TemplateVersionStatusFieldHelmVersion = "helmVersion"
+)
+
+type TemplateVersionStatus struct {
+	HelmVersion string `json:"helmVersion,omitempty" yaml:"helmVersion,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_token.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_token.go
new file mode 100644
index 00000000..40c591dd
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_token.go
@@ -0,0 +1,155 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	TokenType                 = "token"
+	TokenFieldAnnotations     = "annotations"
+	TokenFieldAuthProvider    = "authProvider"
+	TokenFieldClusterID       = "clusterId"
+	TokenFieldCreated         = "created"
+	TokenFieldCreatorID       = "creatorId"
+	TokenFieldCurrent         = "current"
+	TokenFieldDescription     = "description"
+	TokenFieldEnabled         = "enabled"
+	TokenFieldExpired         = "expired"
+	TokenFieldExpiresAt       = "expiresAt"
+	TokenFieldGroupPrincipals = "groupPrincipals"
+	TokenFieldIsDerived       = "isDerived"
+	TokenFieldLabels          = "labels"
+	TokenFieldLastUpdateTime  = "lastUpdateTime"
+	TokenFieldName            = "name"
+	TokenFieldOwnerReferences = "ownerReferences"
+	TokenFieldProviderInfo    = "providerInfo"
+	TokenFieldRemoved         = "removed"
+	TokenFieldTTLMillis       = "ttl"
+	TokenFieldToken           = "token"
+	TokenFieldUUID            = "uuid"
+	TokenFieldUserID          = "userId"
+	TokenFieldUserPrincipal   = "userPrincipal"
+)
+
+type Token struct {
+	types.Resource
+	Annotations     map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	AuthProvider    string            `json:"authProvider,omitempty" yaml:"authProvider,omitempty"`
+	ClusterID       string            `json:"clusterId,omitempty" yaml:"clusterId,omitempty"`
+	Created         string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID       string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Current         bool              `json:"current,omitempty" yaml:"current,omitempty"`
+	Description     string            `json:"description,omitempty" yaml:"description,omitempty"`
+	Enabled         *bool             `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	Expired         bool              `json:"expired,omitempty" yaml:"expired,omitempty"`
+	ExpiresAt       string            `json:"expiresAt,omitempty" yaml:"expiresAt,omitempty"`
+	GroupPrincipals []string          `json:"groupPrincipals,omitempty" yaml:"groupPrincipals,omitempty"`
+	IsDerived       bool              `json:"isDerived,omitempty" yaml:"isDerived,omitempty"`
+	Labels          map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	LastUpdateTime  string            `json:"lastUpdateTime,omitempty" yaml:"lastUpdateTime,omitempty"`
+	Name            string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	ProviderInfo    map[string]string `json:"providerInfo,omitempty" yaml:"providerInfo,omitempty"`
+	Removed         string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	TTLMillis       int64             `json:"ttl,omitempty" yaml:"ttl,omitempty"`
+	Token           string            `json:"token,omitempty" yaml:"token,omitempty"`
+	UUID            string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserID          string            `json:"userId,omitempty" yaml:"userId,omitempty"`
+	UserPrincipal   string            `json:"userPrincipal,omitempty" yaml:"userPrincipal,omitempty"`
+}
+
+type TokenCollection struct {
+	types.Collection
+	Data   []Token `json:"data,omitempty"`
+	client *TokenClient
+}
+
+type TokenClient struct {
+	apiClient *Client
+}
+
+type TokenOperations interface {
+	List(opts *types.ListOpts) (*TokenCollection, error)
+	ListAll(opts *types.ListOpts) (*TokenCollection, error)
+	Create(opts *Token) (*Token, error)
+	Update(existing *Token, updates interface{}) (*Token, error)
+	Replace(existing *Token) (*Token, error)
+	ByID(id string) (*Token, error)
+	Delete(container *Token) error
+
+	CollectionActionLogout(resource *TokenCollection) error
+}
+
+func newTokenClient(apiClient *Client) *TokenClient {
+	return &TokenClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *TokenClient) Create(container *Token) (*Token, error) {
+	resp := &Token{}
+	err := c.apiClient.Ops.DoCreate(TokenType, container, resp)
+	return resp, err
+}
+
+func (c *TokenClient) Update(existing *Token, updates interface{}) (*Token, error) {
+	resp := &Token{}
+	err := c.apiClient.Ops.DoUpdate(TokenType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *TokenClient) Replace(obj *Token) (*Token, error) {
+	resp := &Token{}
+	err := c.apiClient.Ops.DoReplace(TokenType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *TokenClient) List(opts *types.ListOpts) (*TokenCollection, error) {
+	resp := &TokenCollection{}
+	err := c.apiClient.Ops.DoList(TokenType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *TokenClient) ListAll(opts *types.ListOpts) (*TokenCollection, error) {
+	resp := &TokenCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *TokenCollection) Next() (*TokenCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &TokenCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *TokenClient) ByID(id string) (*Token, error) {
+	resp := &Token{}
+	err := c.apiClient.Ops.DoByID(TokenType, id, resp)
+	return resp, err
+}
+
+func (c *TokenClient) Delete(container *Token) error {
+	return c.apiClient.Ops.DoResourceDelete(TokenType, &container.Resource)
+}
+
+func (c *TokenClient) CollectionActionLogout(resource *TokenCollection) error {
+	err := c.apiClient.Ops.DoCollectionAction(TokenType, "logout", &resource.Collection, nil, nil)
+	return err
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_toleration.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_toleration.go
new file mode 100644
index 00000000..eabdd9d9
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_toleration.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	TolerationType                   = "toleration"
+	TolerationFieldEffect            = "effect"
+	TolerationFieldKey               = "key"
+	TolerationFieldOperator          = "operator"
+	TolerationFieldTolerationSeconds = "tolerationSeconds"
+	TolerationFieldValue             = "value"
+)
+
+type Toleration struct {
+	Effect            string `json:"effect,omitempty" yaml:"effect,omitempty"`
+	Key               string `json:"key,omitempty" yaml:"key,omitempty"`
+	Operator          string `json:"operator,omitempty" yaml:"operator,omitempty"`
+	TolerationSeconds *int64 `json:"tolerationSeconds,omitempty" yaml:"tolerationSeconds,omitempty"`
+	Value             string `json:"value,omitempty" yaml:"value,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_typed_local_object_reference.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_typed_local_object_reference.go
new file mode 100644
index 00000000..0de2ebea
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_typed_local_object_reference.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	TypedLocalObjectReferenceType          = "typedLocalObjectReference"
+	TypedLocalObjectReferenceFieldAPIGroup = "apiGroup"
+	TypedLocalObjectReferenceFieldKind     = "kind"
+	TypedLocalObjectReferenceFieldName     = "name"
+)
+
+type TypedLocalObjectReference struct {
+	APIGroup string `json:"apiGroup,omitempty" yaml:"apiGroup,omitempty"`
+	Kind     string `json:"kind,omitempty" yaml:"kind,omitempty"`
+	Name     string `json:"name,omitempty" yaml:"name,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_typed_object_reference.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_typed_object_reference.go
new file mode 100644
index 00000000..d60df80a
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_typed_object_reference.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	TypedObjectReferenceType           = "typedObjectReference"
+	TypedObjectReferenceFieldAPIGroup  = "apiGroup"
+	TypedObjectReferenceFieldKind      = "kind"
+	TypedObjectReferenceFieldName      = "name"
+	TypedObjectReferenceFieldNamespace = "namespace"
+)
+
+type TypedObjectReference struct {
+	APIGroup  string `json:"apiGroup,omitempty" yaml:"apiGroup,omitempty"`
+	Kind      string `json:"kind,omitempty" yaml:"kind,omitempty"`
+	Name      string `json:"name,omitempty" yaml:"name,omitempty"`
+	Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_update_global_dnstargets_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_update_global_dnstargets_input.go
new file mode 100644
index 00000000..5aec4f78
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_update_global_dnstargets_input.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	UpdateGlobalDNSTargetsInputType            = "updateGlobalDNSTargetsInput"
+	UpdateGlobalDNSTargetsInputFieldProjectIDs = "projectIds"
+)
+
+type UpdateGlobalDNSTargetsInput struct {
+	ProjectIDs []string `json:"projectIds,omitempty" yaml:"projectIds,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_update_multi_cluster_app_targets_input.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_update_multi_cluster_app_targets_input.go
new file mode 100644
index 00000000..8ccaf6a1
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_update_multi_cluster_app_targets_input.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	UpdateMultiClusterAppTargetsInputType          = "updateMultiClusterAppTargetsInput"
+	UpdateMultiClusterAppTargetsInputFieldAnswers  = "answers"
+	UpdateMultiClusterAppTargetsInputFieldProjects = "projects"
+)
+
+type UpdateMultiClusterAppTargetsInput struct {
+	Answers  []Answer `json:"answers,omitempty" yaml:"answers,omitempty"`
+	Projects []string `json:"projects,omitempty" yaml:"projects,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_upgrade_strategy.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_upgrade_strategy.go
new file mode 100644
index 00000000..1bd375c9
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_upgrade_strategy.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	UpgradeStrategyType               = "upgradeStrategy"
+	UpgradeStrategyFieldRollingUpdate = "rollingUpdate"
+)
+
+type UpgradeStrategy struct {
+	RollingUpdate *RollingUpdate `json:"rollingUpdate,omitempty" yaml:"rollingUpdate,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user.go
new file mode 100644
index 00000000..454a2965
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user.go
@@ -0,0 +1,169 @@
+package client
+
+import (
+	"github.com/rancher/norman/types"
+)
+
+const (
+	UserType                      = "user"
+	UserFieldAnnotations          = "annotations"
+	UserFieldConditions           = "conditions"
+	UserFieldCreated              = "created"
+	UserFieldCreatorID            = "creatorId"
+	UserFieldDescription          = "description"
+	UserFieldEnabled              = "enabled"
+	UserFieldLabels               = "labels"
+	UserFieldMe                   = "me"
+	UserFieldMustChangePassword   = "mustChangePassword"
+	UserFieldName                 = "name"
+	UserFieldOwnerReferences      = "ownerReferences"
+	UserFieldPassword             = "password"
+	UserFieldPrincipalIDs         = "principalIds"
+	UserFieldRemoved              = "removed"
+	UserFieldState                = "state"
+	UserFieldTransitioning        = "transitioning"
+	UserFieldTransitioningMessage = "transitioningMessage"
+	UserFieldUUID                 = "uuid"
+	UserFieldUsername             = "username"
+)
+
+type User struct {
+	types.Resource
+	Annotations          map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Conditions           []UserCondition   `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	Created              string            `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID            string            `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	Description          string            `json:"description,omitempty" yaml:"description,omitempty"`
+	Enabled              *bool             `json:"enabled,omitempty" yaml:"enabled,omitempty"`
+	Labels               map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Me                   bool              `json:"me,omitempty" yaml:"me,omitempty"`
+	MustChangePassword   bool              `json:"mustChangePassword,omitempty" yaml:"mustChangePassword,omitempty"`
+	Name                 string            `json:"name,omitempty" yaml:"name,omitempty"`
+	OwnerReferences      []OwnerReference  `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Password             string            `json:"password,omitempty" yaml:"password,omitempty"`
+	PrincipalIDs         []string          `json:"principalIds,omitempty" yaml:"principalIds,omitempty"`
+	Removed              string            `json:"removed,omitempty" yaml:"removed,omitempty"`
+	State                string            `json:"state,omitempty" yaml:"state,omitempty"`
+	Transitioning        string            `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
+	TransitioningMessage string            `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
+	UUID                 string            `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	Username             string            `json:"username,omitempty" yaml:"username,omitempty"`
+}
+
+type UserCollection struct {
+	types.Collection
+	Data   []User `json:"data,omitempty"`
+	client *UserClient
+}
+
+type UserClient struct {
+	apiClient *Client
+}
+
+type UserOperations interface {
+	List(opts *types.ListOpts) (*UserCollection, error)
+	ListAll(opts *types.ListOpts) (*UserCollection, error)
+	Create(opts *User) (*User, error)
+	Update(existing *User, updates interface{}) (*User, error)
+	Replace(existing *User) (*User, error)
+	ByID(id string) (*User, error)
+	Delete(container *User) error
+
+	ActionRefreshauthprovideraccess(resource *User) error
+
+	ActionSetpassword(resource *User, input *SetPasswordInput) (*User, error)
+
+	CollectionActionChangepassword(resource *UserCollection, input *ChangePasswordInput) error
+
+	CollectionActionRefreshauthprovideraccess(resource *UserCollection) error
+}
+
+func newUserClient(apiClient *Client) *UserClient {
+	return &UserClient{
+		apiClient: apiClient,
+	}
+}
+
+func (c *UserClient) Create(container *User) (*User, error) {
+	resp := &User{}
+	err := c.apiClient.Ops.DoCreate(UserType, container, resp)
+	return resp, err
+}
+
+func (c *UserClient) Update(existing *User, updates interface{}) (*User, error) {
+	resp := &User{}
+	err := c.apiClient.Ops.DoUpdate(UserType, &existing.Resource, updates, resp)
+	return resp, err
+}
+
+func (c *UserClient) Replace(obj *User) (*User, error) {
+	resp := &User{}
+	err := c.apiClient.Ops.DoReplace(UserType, &obj.Resource, obj, resp)
+	return resp, err
+}
+
+func (c *UserClient) List(opts *types.ListOpts) (*UserCollection, error) {
+	resp := &UserCollection{}
+	err := c.apiClient.Ops.DoList(UserType, opts, resp)
+	resp.client = c
+	return resp, err
+}
+
+func (c *UserClient) ListAll(opts *types.ListOpts) (*UserCollection, error) {
+	resp := &UserCollection{}
+	resp, err := c.List(opts)
+	if err != nil {
+		return resp, err
+	}
+	data := resp.Data
+	for next, err := resp.Next(); next != nil && err == nil; next, err = next.Next() {
+		data = append(data, next.Data...)
+		resp = next
+		resp.Data = data
+	}
+	if err != nil {
+		return resp, err
+	}
+	return resp, err
+}
+
+func (cc *UserCollection) Next() (*UserCollection, error) {
+	if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
+		resp := &UserCollection{}
+		err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
+		resp.client = cc.client
+		return resp, err
+	}
+	return nil, nil
+}
+
+func (c *UserClient) ByID(id string) (*User, error) {
+	resp := &User{}
+	err := c.apiClient.Ops.DoByID(UserType, id, resp)
+	return resp, err
+}
+
+func (c *UserClient) Delete(container *User) error {
+	return c.apiClient.Ops.DoResourceDelete(UserType, &container.Resource)
+}
+
+func (c *UserClient) ActionRefreshauthprovideraccess(resource *User) error {
+	err := c.apiClient.Ops.DoAction(UserType, "refreshauthprovideraccess", &resource.Resource, nil, nil)
+	return err
+}
+
+func (c *UserClient) ActionSetpassword(resource *User, input *SetPasswordInput) (*User, error) {
+	resp := &User{}
+	err := c.apiClient.Ops.DoAction(UserType, "setpassword", &resource.Resource, input, resp)
+	return resp, err
+}
+
+func (c *UserClient) CollectionActionChangepassword(resource *UserCollection, input *ChangePasswordInput) error {
+	err := c.apiClient.Ops.DoCollectionAction(UserType, "changepassword", &resource.Collection, input, nil)
+	return err
+}
+
+func (c *UserClient) CollectionActionRefreshauthprovideraccess(resource *UserCollection) error {
+	err := c.apiClient.Ops.DoCollectionAction(UserType, "refreshauthprovideraccess", &resource.Collection, nil, nil)
+	return err
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user_attribute.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user_attribute.go
new file mode 100644
index 00000000..16ce8aad
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user_attribute.go
@@ -0,0 +1,40 @@
+package client
+
+const (
+	UserAttributeType                 = "userAttribute"
+	UserAttributeFieldAnnotations     = "annotations"
+	UserAttributeFieldCreated         = "created"
+	UserAttributeFieldCreatorID       = "creatorId"
+	UserAttributeFieldDeleteAfter     = "deleteAfter"
+	UserAttributeFieldDisableAfter    = "disableAfter"
+	UserAttributeFieldExtraByProvider = "extraByProvider"
+	UserAttributeFieldGroupPrincipals = "groupPrincipals"
+	UserAttributeFieldLabels          = "labels"
+	UserAttributeFieldLastLogin       = "lastLogin"
+	UserAttributeFieldLastRefresh     = "lastRefresh"
+	UserAttributeFieldName            = "name"
+	UserAttributeFieldNeedsRefresh    = "needsRefresh"
+	UserAttributeFieldOwnerReferences = "ownerReferences"
+	UserAttributeFieldRemoved         = "removed"
+	UserAttributeFieldUUID            = "uuid"
+	UserAttributeFieldUserName        = "userName"
+)
+
+type UserAttribute struct {
+	Annotations     map[string]string              `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Created         string                         `json:"created,omitempty" yaml:"created,omitempty"`
+	CreatorID       string                         `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
+	DeleteAfter     string                         `json:"deleteAfter,omitempty" yaml:"deleteAfter,omitempty"`
+	DisableAfter    string                         `json:"disableAfter,omitempty" yaml:"disableAfter,omitempty"`
+	ExtraByProvider map[string]map[string][]string `json:"extraByProvider,omitempty" yaml:"extraByProvider,omitempty"`
+	GroupPrincipals map[string]Principal           `json:"groupPrincipals,omitempty" yaml:"groupPrincipals,omitempty"`
+	Labels          map[string]string              `json:"labels,omitempty" yaml:"labels,omitempty"`
+	LastLogin       string                         `json:"lastLogin,omitempty" yaml:"lastLogin,omitempty"`
+	LastRefresh     string                         `json:"lastRefresh,omitempty" yaml:"lastRefresh,omitempty"`
+	Name            string                         `json:"name,omitempty" yaml:"name,omitempty"`
+	NeedsRefresh    bool                           `json:"needsRefresh,omitempty" yaml:"needsRefresh,omitempty"`
+	OwnerReferences []OwnerReference               `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
+	Removed         string                         `json:"removed,omitempty" yaml:"removed,omitempty"`
+	UUID            string                         `json:"uuid,omitempty" yaml:"uuid,omitempty"`
+	UserName        string                         `json:"userName,omitempty" yaml:"userName,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user_condition.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user_condition.go
new file mode 100644
index 00000000..7d19141d
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user_condition.go
@@ -0,0 +1,20 @@
+package client
+
+const (
+	UserConditionType                    = "userCondition"
+	UserConditionFieldLastTransitionTime = "lastTransitionTime"
+	UserConditionFieldLastUpdateTime     = "lastUpdateTime"
+	UserConditionFieldMessage            = "message"
+	UserConditionFieldReason             = "reason"
+	UserConditionFieldStatus             = "status"
+	UserConditionFieldType               = "type"
+)
+
+type UserCondition struct {
+	LastTransitionTime string `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty"`
+	LastUpdateTime     string `json:"lastUpdateTime,omitempty" yaml:"lastUpdateTime,omitempty"`
+	Message            string `json:"message,omitempty" yaml:"message,omitempty"`
+	Reason             string `json:"reason,omitempty" yaml:"reason,omitempty"`
+	Status             string `json:"status,omitempty" yaml:"status,omitempty"`
+	Type               string `json:"type,omitempty" yaml:"type,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user_spec.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user_spec.go
new file mode 100644
index 00000000..a3b927d3
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user_spec.go
@@ -0,0 +1,8 @@
+package client
+
+const (
+	UserSpecType = "userSpec"
+)
+
+type UserSpec struct {
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user_status.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user_status.go
new file mode 100644
index 00000000..a42c797d
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_user_status.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	UserStatusType            = "userStatus"
+	UserStatusFieldConditions = "conditions"
+)
+
+type UserStatus struct {
+	Conditions []UserCondition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_values.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_values.go
new file mode 100644
index 00000000..f8b87ddb
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_values.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	ValuesType                  = "values"
+	ValuesFieldBoolValue        = "boolValue"
+	ValuesFieldIntValue         = "intValue"
+	ValuesFieldStringSliceValue = "stringSliceValue"
+	ValuesFieldStringValue      = "stringValue"
+)
+
+type Values struct {
+	BoolValue        bool     `json:"boolValue,omitempty" yaml:"boolValue,omitempty"`
+	IntValue         int64    `json:"intValue,omitempty" yaml:"intValue,omitempty"`
+	StringSliceValue []string `json:"stringSliceValue,omitempty" yaml:"stringSliceValue,omitempty"`
+	StringValue      string   `json:"stringValue,omitempty" yaml:"stringValue,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_version_commits.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_version_commits.go
new file mode 100644
index 00000000..493b1e1e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_version_commits.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	VersionCommitsType       = "versionCommits"
+	VersionCommitsFieldValue = "Value"
+)
+
+type VersionCommits struct {
+	Value map[string]string `json:"Value,omitempty" yaml:"Value,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_virtual_center_config.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_virtual_center_config.go
new file mode 100644
index 00000000..b29d74df
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_virtual_center_config.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	VirtualCenterConfigType                   = "virtualCenterConfig"
+	VirtualCenterConfigFieldDatacenters       = "datacenters"
+	VirtualCenterConfigFieldPassword          = "password"
+	VirtualCenterConfigFieldRoundTripperCount = "soap-roundtrip-count"
+	VirtualCenterConfigFieldUser              = "user"
+	VirtualCenterConfigFieldVCenterPort       = "port"
+)
+
+type VirtualCenterConfig struct {
+	Datacenters       string `json:"datacenters,omitempty" yaml:"datacenters,omitempty"`
+	Password          string `json:"password,omitempty" yaml:"password,omitempty"`
+	RoundTripperCount int64  `json:"soap-roundtrip-count,omitempty" yaml:"soap-roundtrip-count,omitempty"`
+	User              string `json:"user,omitempty" yaml:"user,omitempty"`
+	VCenterPort       string `json:"port,omitempty" yaml:"port,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_volume_projection.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_volume_projection.go
new file mode 100644
index 00000000..d67ed14c
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_volume_projection.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	VolumeProjectionType                     = "volumeProjection"
+	VolumeProjectionFieldClusterTrustBundle  = "clusterTrustBundle"
+	VolumeProjectionFieldConfigMap           = "configMap"
+	VolumeProjectionFieldDownwardAPI         = "downwardAPI"
+	VolumeProjectionFieldSecret              = "secret"
+	VolumeProjectionFieldServiceAccountToken = "serviceAccountToken"
+)
+
+type VolumeProjection struct {
+	ClusterTrustBundle  *ClusterTrustBundleProjection  `json:"clusterTrustBundle,omitempty" yaml:"clusterTrustBundle,omitempty"`
+	ConfigMap           *ConfigMapProjection           `json:"configMap,omitempty" yaml:"configMap,omitempty"`
+	DownwardAPI         *DownwardAPIProjection         `json:"downwardAPI,omitempty" yaml:"downwardAPI,omitempty"`
+	Secret              *SecretProjection              `json:"secret,omitempty" yaml:"secret,omitempty"`
+	ServiceAccountToken *ServiceAccountTokenProjection `json:"serviceAccountToken,omitempty" yaml:"serviceAccountToken,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_volume_resource_requirements.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_volume_resource_requirements.go
new file mode 100644
index 00000000..780368bb
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_volume_resource_requirements.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	VolumeResourceRequirementsType          = "volumeResourceRequirements"
+	VolumeResourceRequirementsFieldLimits   = "limits"
+	VolumeResourceRequirementsFieldRequests = "requests"
+)
+
+type VolumeResourceRequirements struct {
+	Limits   map[string]string `json:"limits,omitempty" yaml:"limits,omitempty"`
+	Requests map[string]string `json:"requests,omitempty" yaml:"requests,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_vsphere_cloud_provider.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_vsphere_cloud_provider.go
new file mode 100644
index 00000000..63bbae2d
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_vsphere_cloud_provider.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	VsphereCloudProviderType               = "vsphereCloudProvider"
+	VsphereCloudProviderFieldDisk          = "disk"
+	VsphereCloudProviderFieldGlobal        = "global"
+	VsphereCloudProviderFieldNetwork       = "network"
+	VsphereCloudProviderFieldVirtualCenter = "virtualCenter"
+	VsphereCloudProviderFieldWorkspace     = "workspace"
+)
+
+type VsphereCloudProvider struct {
+	Disk          *DiskVsphereOpts               `json:"disk,omitempty" yaml:"disk,omitempty"`
+	Global        *GlobalVsphereOpts             `json:"global,omitempty" yaml:"global,omitempty"`
+	Network       *NetworkVshpereOpts            `json:"network,omitempty" yaml:"network,omitempty"`
+	VirtualCenter map[string]VirtualCenterConfig `json:"virtualCenter,omitempty" yaml:"virtualCenter,omitempty"`
+	Workspace     *WorkspaceVsphereOpts          `json:"workspace,omitempty" yaml:"workspace,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_vsphere_virtual_disk_volume_source.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_vsphere_virtual_disk_volume_source.go
new file mode 100644
index 00000000..ed671ad4
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_vsphere_virtual_disk_volume_source.go
@@ -0,0 +1,16 @@
+package client
+
+const (
+	VsphereVirtualDiskVolumeSourceType                   = "vsphereVirtualDiskVolumeSource"
+	VsphereVirtualDiskVolumeSourceFieldFSType            = "fsType"
+	VsphereVirtualDiskVolumeSourceFieldStoragePolicyID   = "storagePolicyID"
+	VsphereVirtualDiskVolumeSourceFieldStoragePolicyName = "storagePolicyName"
+	VsphereVirtualDiskVolumeSourceFieldVolumePath        = "volumePath"
+)
+
+type VsphereVirtualDiskVolumeSource struct {
+	FSType            string `json:"fsType,omitempty" yaml:"fsType,omitempty"`
+	StoragePolicyID   string `json:"storagePolicyID,omitempty" yaml:"storagePolicyID,omitempty"`
+	StoragePolicyName string `json:"storagePolicyName,omitempty" yaml:"storagePolicyName,omitempty"`
+	VolumePath        string `json:"volumePath,omitempty" yaml:"volumePath,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_weave_network_provider.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_weave_network_provider.go
new file mode 100644
index 00000000..2cd7b6fa
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_weave_network_provider.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	WeaveNetworkProviderType          = "weaveNetworkProvider"
+	WeaveNetworkProviderFieldPassword = "password"
+)
+
+type WeaveNetworkProvider struct {
+	Password string `json:"password,omitempty" yaml:"password,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_weighted_pod_affinity_term.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_weighted_pod_affinity_term.go
new file mode 100644
index 00000000..a046f5ae
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_weighted_pod_affinity_term.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	WeightedPodAffinityTermType                 = "weightedPodAffinityTerm"
+	WeightedPodAffinityTermFieldPodAffinityTerm = "podAffinityTerm"
+	WeightedPodAffinityTermFieldWeight          = "weight"
+)
+
+type WeightedPodAffinityTerm struct {
+	PodAffinityTerm *PodAffinityTerm `json:"podAffinityTerm,omitempty" yaml:"podAffinityTerm,omitempty"`
+	Weight          int64            `json:"weight,omitempty" yaml:"weight,omitempty"`
+}
diff --git a/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_workspace_vsphere_opts.go b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_workspace_vsphere_opts.go
new file mode 100644
index 00000000..3f13897e
--- /dev/null
+++ b/vendor/github.com/rancher/rancher/pkg/client/generated/management/v3/zz_generated_workspace_vsphere_opts.go
@@ -0,0 +1,18 @@
+package client
+
+const (
+	WorkspaceVsphereOptsType                  = "workspaceVsphereOpts"
+	WorkspaceVsphereOptsFieldDatacenter       = "datacenter"
+	WorkspaceVsphereOptsFieldDefaultDatastore = "default-datastore"
+	WorkspaceVsphereOptsFieldFolder           = "folder"
+	WorkspaceVsphereOptsFieldResourcePoolPath = "resourcepool-path"
+	WorkspaceVsphereOptsFieldVCenterIP        = "server"
+)
+
+type WorkspaceVsphereOpts struct {
+	Datacenter       string `json:"datacenter,omitempty" yaml:"datacenter,omitempty"`
+	DefaultDatastore string `json:"default-datastore,omitempty" yaml:"default-datastore,omitempty"`
+	Folder           string `json:"folder,omitempty" yaml:"folder,omitempty"`
+	ResourcePoolPath string `json:"resourcepool-path,omitempty" yaml:"resourcepool-path,omitempty"`
+	VCenterIP        string `json:"server,omitempty" yaml:"server,omitempty"`
+}
diff --git a/vendor/github.com/rancher/wrangler/v3/LICENSE b/vendor/github.com/rancher/wrangler/v3/LICENSE
new file mode 100644
index 00000000..e454a525
--- /dev/null
+++ b/vendor/github.com/rancher/wrangler/v3/LICENSE
@@ -0,0 +1,178 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
diff --git a/vendor/github.com/rancher/wrangler/v3/pkg/name/name.go b/vendor/github.com/rancher/wrangler/v3/pkg/name/name.go
new file mode 100644
index 00000000..99161dff
--- /dev/null
+++ b/vendor/github.com/rancher/wrangler/v3/pkg/name/name.go
@@ -0,0 +1,75 @@
+package name
+
+import (
+	"crypto/md5"
+	"crypto/sha256"
+	"encoding/hex"
+	"fmt"
+	"strings"
+)
+
+// GuessPluralName attempts to pluralize a noun.
+func GuessPluralName(name string) string {
+	if name == "" {
+		return name
+	}
+
+	if strings.EqualFold(name, "Endpoints") {
+		return name
+	}
+
+	if suffix(name, "s") || suffix(name, "ch") || suffix(name, "x") || suffix(name, "sh") {
+		return name + "es"
+	}
+
+	if suffix(name, "f") || suffix(name, "fe") {
+		return name + "ves"
+	}
+
+	if suffix(name, "y") && len(name) > 2 && !strings.ContainsAny(name[len(name)-2:len(name)-1], "[aeiou]") {
+		return name[0:len(name)-1] + "ies"
+	}
+
+	return name + "s"
+}
+
+func suffix(str, end string) bool {
+	return strings.HasSuffix(str, end)
+}
+
+// Limit the length of a string to count characters. If the string's length is
+// greater or equal to count, it will be truncated and a hash will be appended
+// to the end.
+// Warning: runtime error for count <= 5: https://go.dev/play/p/UAbpZIOvIYo
+func Limit(s string, count int) string {
+	if len(s) < count {
+		return s
+	}
+	return fmt.Sprintf("%s-%s", s[:count-6], Hex(s, 5))
+}
+
+// Hex gets the checksum of s, encodes it to hexadecimal and returns the first n characters of that hexadecimal.
+// Warning: runtime error for  n > 32 or n < 0.
+func Hex(s string, n int) string {
+	h := md5.Sum([]byte(s))
+	d := hex.EncodeToString(h[:])
+	return d[:n]
+}
+
+// SafeConcatName concatenates the given strings and ensures the returned name is under 64 characters
+// by cutting the string off at 57 characters and setting the last 6 with an encoded version of the concatenated string.
+func SafeConcatName(name ...string) string {
+	fullPath := strings.Join(name, "-")
+	if len(fullPath) < 64 {
+		return fullPath
+	}
+	digest := sha256.Sum256([]byte(fullPath))
+	// since we cut the string in the middle, the last char may not be compatible with what is expected in k8s
+	// we are checking and if necessary removing the last char
+	c := fullPath[56]
+	if 'a' <= c && c <= 'z' || '0' <= c && c <= '9' {
+		return fullPath[0:57] + "-" + hex.EncodeToString(digest[0:])[0:5]
+	}
+
+	return fullPath[0:56] + "-" + hex.EncodeToString(digest[0:])[0:6]
+}
diff --git a/vendor/github.com/sirupsen/logrus/.gitignore b/vendor/github.com/sirupsen/logrus/.gitignore
new file mode 100644
index 00000000..1fb13abe
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/.gitignore
@@ -0,0 +1,4 @@
+logrus
+vendor
+
+.idea/
diff --git a/vendor/github.com/sirupsen/logrus/.golangci.yml b/vendor/github.com/sirupsen/logrus/.golangci.yml
new file mode 100644
index 00000000..65dc2850
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/.golangci.yml
@@ -0,0 +1,40 @@
+run:
+  # do not run on test files yet
+  tests: false
+
+# all available settings of specific linters
+linters-settings:
+  errcheck:
+    # report about not checking of errors in type assetions: `a := b.(MyStruct)`;
+    # default is false: such cases aren't reported by default.
+    check-type-assertions: false
+
+    # report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`;
+    # default is false: such cases aren't reported by default.
+    check-blank: false
+
+  lll:
+    line-length: 100
+    tab-width: 4
+
+  prealloc:
+    simple: false
+    range-loops: false
+    for-loops: false
+
+  whitespace:
+    multi-if: false   # Enforces newlines (or comments) after every multi-line if statement
+    multi-func: false # Enforces newlines (or comments) after every multi-line function signature
+
+linters:
+  enable:
+    - megacheck
+    - govet
+  disable:
+    - maligned
+    - prealloc
+  disable-all: false
+  presets:
+    - bugs
+    - unused
+  fast: false
diff --git a/vendor/github.com/sirupsen/logrus/.travis.yml b/vendor/github.com/sirupsen/logrus/.travis.yml
new file mode 100644
index 00000000..c1dbd5a3
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/.travis.yml
@@ -0,0 +1,15 @@
+language: go
+go_import_path: github.com/sirupsen/logrus
+git:
+  depth: 1
+env:
+  - GO111MODULE=on
+go: 1.15.x
+os: linux
+install:
+  - ./travis/install.sh
+script:
+  - cd ci
+  - go run mage.go -v -w ../ crossBuild
+  - go run mage.go -v -w ../ lint
+  - go run mage.go -v -w ../ test
diff --git a/vendor/github.com/sirupsen/logrus/CHANGELOG.md b/vendor/github.com/sirupsen/logrus/CHANGELOG.md
new file mode 100644
index 00000000..7567f612
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/CHANGELOG.md
@@ -0,0 +1,259 @@
+# 1.8.1
+Code quality:
+  * move magefile in its own subdir/submodule to remove magefile dependency on logrus consumer
+  * improve timestamp format documentation
+
+Fixes:
+  * fix race condition on logger hooks
+
+
+# 1.8.0
+
+Correct versioning number replacing v1.7.1.
+
+# 1.7.1
+
+Beware this release has introduced a new public API and its semver is therefore incorrect.
+
+Code quality:
+  * use go 1.15 in travis
+  * use magefile as task runner
+
+Fixes:
+  * small fixes about new go 1.13 error formatting system
+  * Fix for long time race condiction with mutating data hooks
+
+Features:
+  * build support for zos
+
+# 1.7.0
+Fixes:
+  * the dependency toward a windows terminal library has been removed
+
+Features:
+  * a new buffer pool management API has been added
+  * a set of `<LogLevel>Fn()` functions have been added
+
+# 1.6.0
+Fixes:
+  * end of line cleanup
+  * revert the entry concurrency bug fix whic leads to deadlock under some circumstances
+  * update dependency on go-windows-terminal-sequences to fix a crash with go 1.14
+
+Features:
+  * add an option to the `TextFormatter` to completely disable fields quoting
+
+# 1.5.0
+Code quality:
+  * add golangci linter run on travis
+
+Fixes:
+  * add mutex for hooks concurrent access on `Entry` data
+  * caller function field for go1.14
+  * fix build issue for gopherjs target
+
+Feature:
+  * add an hooks/writer sub-package whose goal is to split output on different stream depending on the trace level
+  * add a `DisableHTMLEscape` option in the `JSONFormatter`
+  * add `ForceQuote` and `PadLevelText` options in the `TextFormatter`
+
+# 1.4.2
+  * Fixes build break for plan9, nacl, solaris
+# 1.4.1
+This new release introduces:
+  * Enhance TextFormatter to not print caller information when they are empty (#944)
+  * Remove dependency on golang.org/x/crypto (#932, #943)
+
+Fixes:
+  * Fix Entry.WithContext method to return a copy of the initial entry (#941)
+
+# 1.4.0
+This new release introduces:
+  * Add `DeferExitHandler`, similar to `RegisterExitHandler` but prepending the handler to the list of handlers (semantically like `defer`) (#848).
+  * Add `CallerPrettyfier` to `JSONFormatter` and `TextFormatter` (#909, #911)
+  * Add `Entry.WithContext()` and `Entry.Context`, to set a context on entries to be used e.g. in hooks (#919).
+
+Fixes:
+  * Fix wrong method calls `Logger.Print` and `Logger.Warningln` (#893).
+  * Update `Entry.Logf` to not do string formatting unless the log level is enabled (#903)
+  * Fix infinite recursion on unknown `Level.String()` (#907)
+  * Fix race condition in `getCaller` (#916).
+
+
+# 1.3.0
+This new release introduces:
+  * Log, Logf, Logln functions for Logger and Entry that take a Level
+
+Fixes:
+  * Building prometheus node_exporter on AIX (#840)
+  * Race condition in TextFormatter (#468)
+  * Travis CI import path (#868)
+  * Remove coloured output on Windows (#862)
+  * Pointer to func as field in JSONFormatter (#870)
+  * Properly marshal Levels (#873)
+
+# 1.2.0
+This new release introduces:
+  * A new method `SetReportCaller` in the `Logger` to enable the file, line and calling function from which the trace has been issued
+  * A new trace level named `Trace` whose level is below `Debug`
+  * A configurable exit function to be called upon a Fatal trace
+  * The `Level` object now implements `encoding.TextUnmarshaler` interface
+
+# 1.1.1
+This is a bug fix release.
+  * fix the build break on Solaris
+  * don't drop a whole trace in JSONFormatter when a field param is a function pointer which can not be serialized
+
+# 1.1.0
+This new release introduces:
+  * several fixes:
+    * a fix for a race condition on entry formatting
+    * proper cleanup of previously used entries before putting them back in the pool
+    * the extra new line at the end of message in text formatter has been removed
+  * a new global public API to check if a level is activated: IsLevelEnabled
+  * the following methods have been added to the Logger object
+    * IsLevelEnabled
+    * SetFormatter
+    * SetOutput
+    * ReplaceHooks
+  * introduction of go module
+  * an indent configuration for the json formatter
+  * output colour support for windows
+  * the field sort function is now configurable for text formatter
+  * the CLICOLOR and CLICOLOR\_FORCE environment variable support in text formater
+
+# 1.0.6
+
+This new release introduces:
+  * a new api WithTime which allows to easily force the time of the log entry
+    which is mostly useful for logger wrapper
+  * a fix reverting the immutability of the entry given as parameter to the hooks
+    a new configuration field of the json formatter in order to put all the fields
+    in a nested dictionnary
+  * a new SetOutput method in the Logger
+  * a new configuration of the textformatter to configure the name of the default keys
+  * a new configuration of the text formatter to disable the level truncation
+
+# 1.0.5
+
+* Fix hooks race (#707)
+* Fix panic deadlock (#695)
+
+# 1.0.4
+
+* Fix race when adding hooks (#612)
+* Fix terminal check in AppEngine (#635)
+
+# 1.0.3
+
+* Replace example files with testable examples
+
+# 1.0.2
+
+* bug: quote non-string values in text formatter (#583)
+* Make (*Logger) SetLevel a public method
+
+# 1.0.1
+
+* bug: fix escaping in text formatter (#575)
+
+# 1.0.0
+
+* Officially changed name to lower-case
+* bug: colors on Windows 10 (#541)
+* bug: fix race in accessing level (#512)
+
+# 0.11.5
+
+* feature: add writer and writerlevel to entry (#372)
+
+# 0.11.4
+
+* bug: fix undefined variable on solaris (#493)
+
+# 0.11.3
+
+* formatter: configure quoting of empty values (#484)
+* formatter: configure quoting character (default is `"`) (#484)
+* bug: fix not importing io correctly in non-linux environments (#481)
+
+# 0.11.2
+
+* bug: fix windows terminal detection (#476)
+
+# 0.11.1
+
+* bug: fix tty detection with custom out (#471)
+
+# 0.11.0
+
+* performance: Use bufferpool to allocate (#370)
+* terminal: terminal detection for app-engine (#343)
+* feature: exit handler (#375)
+
+# 0.10.0
+
+* feature: Add a test hook (#180)
+* feature: `ParseLevel` is now case-insensitive (#326)
+* feature: `FieldLogger` interface that generalizes `Logger` and `Entry` (#308)
+* performance: avoid re-allocations on `WithFields` (#335)
+
+# 0.9.0
+
+* logrus/text_formatter: don't emit empty msg
+* logrus/hooks/airbrake: move out of main repository
+* logrus/hooks/sentry: move out of main repository
+* logrus/hooks/papertrail: move out of main repository
+* logrus/hooks/bugsnag: move out of main repository
+* logrus/core: run tests with `-race`
+* logrus/core: detect TTY based on `stderr`
+* logrus/core: support `WithError` on logger
+* logrus/core: Solaris support
+
+# 0.8.7
+
+* logrus/core: fix possible race (#216)
+* logrus/doc: small typo fixes and doc improvements
+
+
+# 0.8.6
+
+* hooks/raven: allow passing an initialized client
+
+# 0.8.5
+
+* logrus/core: revert #208
+
+# 0.8.4
+
+* formatter/text: fix data race (#218)
+
+# 0.8.3
+
+* logrus/core: fix entry log level (#208)
+* logrus/core: improve performance of text formatter by 40%
+* logrus/core: expose `LevelHooks` type
+* logrus/core: add support for DragonflyBSD and NetBSD
+* formatter/text: print structs more verbosely
+
+# 0.8.2
+
+* logrus: fix more Fatal family functions
+
+# 0.8.1
+
+* logrus: fix not exiting on `Fatalf` and `Fatalln`
+
+# 0.8.0
+
+* logrus: defaults to stderr instead of stdout
+* hooks/sentry: add special field for `*http.Request`
+* formatter/text: ignore Windows for colors
+
+# 0.7.3
+
+* formatter/\*: allow configuration of timestamp layout
+
+# 0.7.2
+
+* formatter/text: Add configuration option for time format (#158)
diff --git a/vendor/github.com/sirupsen/logrus/LICENSE b/vendor/github.com/sirupsen/logrus/LICENSE
new file mode 100644
index 00000000..f090cb42
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Simon Eskildsen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/github.com/sirupsen/logrus/README.md b/vendor/github.com/sirupsen/logrus/README.md
new file mode 100644
index 00000000..d1d4a85f
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/README.md
@@ -0,0 +1,515 @@
+# Logrus <img src="http://i.imgur.com/hTeVwmJ.png" width="40" height="40" alt=":walrus:" class="emoji" title=":walrus:"/> [![Build Status](https://github.com/sirupsen/logrus/workflows/CI/badge.svg)](https://github.com/sirupsen/logrus/actions?query=workflow%3ACI) [![Build Status](https://travis-ci.org/sirupsen/logrus.svg?branch=master)](https://travis-ci.org/sirupsen/logrus) [![Go Reference](https://pkg.go.dev/badge/github.com/sirupsen/logrus.svg)](https://pkg.go.dev/github.com/sirupsen/logrus)
+
+Logrus is a structured logger for Go (golang), completely API compatible with
+the standard library logger.
+
+**Logrus is in maintenance-mode.** We will not be introducing new features. It's
+simply too hard to do in a way that won't break many people's projects, which is
+the last thing you want from your Logging library (again...).
+
+This does not mean Logrus is dead. Logrus will continue to be maintained for
+security, (backwards compatible) bug fixes, and performance (where we are
+limited by the interface).
+
+I believe Logrus' biggest contribution is to have played a part in today's
+widespread use of structured logging in Golang. There doesn't seem to be a
+reason to do a major, breaking iteration into Logrus V2, since the fantastic Go
+community has built those independently. Many fantastic alternatives have sprung
+up. Logrus would look like those, had it been re-designed with what we know
+about structured logging in Go today. Check out, for example,
+[Zerolog][zerolog], [Zap][zap], and [Apex][apex].
+
+[zerolog]: https://github.com/rs/zerolog
+[zap]: https://github.com/uber-go/zap
+[apex]: https://github.com/apex/log
+
+**Seeing weird case-sensitive problems?** It's in the past been possible to
+import Logrus as both upper- and lower-case. Due to the Go package environment,
+this caused issues in the community and we needed a standard. Some environments
+experienced problems with the upper-case variant, so the lower-case was decided.
+Everything using `logrus` will need to use the lower-case:
+`github.com/sirupsen/logrus`. Any package that isn't, should be changed.
+
+To fix Glide, see [these
+comments](https://github.com/sirupsen/logrus/issues/553#issuecomment-306591437).
+For an in-depth explanation of the casing issue, see [this
+comment](https://github.com/sirupsen/logrus/issues/570#issuecomment-313933276).
+
+Nicely color-coded in development (when a TTY is attached, otherwise just
+plain text):
+
+![Colored](http://i.imgur.com/PY7qMwd.png)
+
+With `log.SetFormatter(&log.JSONFormatter{})`, for easy parsing by logstash
+or Splunk:
+
+```text
+{"animal":"walrus","level":"info","msg":"A group of walrus emerges from the
+ocean","size":10,"time":"2014-03-10 19:57:38.562264131 -0400 EDT"}
+
+{"level":"warning","msg":"The group's number increased tremendously!",
+"number":122,"omg":true,"time":"2014-03-10 19:57:38.562471297 -0400 EDT"}
+
+{"animal":"walrus","level":"info","msg":"A giant walrus appears!",
+"size":10,"time":"2014-03-10 19:57:38.562500591 -0400 EDT"}
+
+{"animal":"walrus","level":"info","msg":"Tremendously sized cow enters the ocean.",
+"size":9,"time":"2014-03-10 19:57:38.562527896 -0400 EDT"}
+
+{"level":"fatal","msg":"The ice breaks!","number":100,"omg":true,
+"time":"2014-03-10 19:57:38.562543128 -0400 EDT"}
+```
+
+With the default `log.SetFormatter(&log.TextFormatter{})` when a TTY is not
+attached, the output is compatible with the
+[logfmt](http://godoc.org/github.com/kr/logfmt) format:
+
+```text
+time="2015-03-26T01:27:38-04:00" level=debug msg="Started observing beach" animal=walrus number=8
+time="2015-03-26T01:27:38-04:00" level=info msg="A group of walrus emerges from the ocean" animal=walrus size=10
+time="2015-03-26T01:27:38-04:00" level=warning msg="The group's number increased tremendously!" number=122 omg=true
+time="2015-03-26T01:27:38-04:00" level=debug msg="Temperature changes" temperature=-4
+time="2015-03-26T01:27:38-04:00" level=panic msg="It's over 9000!" animal=orca size=9009
+time="2015-03-26T01:27:38-04:00" level=fatal msg="The ice breaks!" err=&{0x2082280c0 map[animal:orca size:9009] 2015-03-26 01:27:38.441574009 -0400 EDT panic It's over 9000!} number=100 omg=true
+```
+To ensure this behaviour even if a TTY is attached, set your formatter as follows:
+
+```go
+	log.SetFormatter(&log.TextFormatter{
+		DisableColors: true,
+		FullTimestamp: true,
+	})
+```
+
+#### Logging Method Name
+
+If you wish to add the calling method as a field, instruct the logger via:
+```go
+log.SetReportCaller(true)
+```
+This adds the caller as 'method' like so:
+
+```json
+{"animal":"penguin","level":"fatal","method":"github.com/sirupsen/arcticcreatures.migrate","msg":"a penguin swims by",
+"time":"2014-03-10 19:57:38.562543129 -0400 EDT"}
+```
+
+```text
+time="2015-03-26T01:27:38-04:00" level=fatal method=github.com/sirupsen/arcticcreatures.migrate msg="a penguin swims by" animal=penguin
+```
+Note that this does add measurable overhead - the cost will depend on the version of Go, but is
+between 20 and 40% in recent tests with 1.6 and 1.7.  You can validate this in your
+environment via benchmarks:
+```
+go test -bench=.*CallerTracing
+```
+
+
+#### Case-sensitivity
+
+The organization's name was changed to lower-case--and this will not be changed
+back. If you are getting import conflicts due to case sensitivity, please use
+the lower-case import: `github.com/sirupsen/logrus`.
+
+#### Example
+
+The simplest way to use Logrus is simply the package-level exported logger:
+
+```go
+package main
+
+import (
+  log "github.com/sirupsen/logrus"
+)
+
+func main() {
+  log.WithFields(log.Fields{
+    "animal": "walrus",
+  }).Info("A walrus appears")
+}
+```
+
+Note that it's completely api-compatible with the stdlib logger, so you can
+replace your `log` imports everywhere with `log "github.com/sirupsen/logrus"`
+and you'll now have the flexibility of Logrus. You can customize it all you
+want:
+
+```go
+package main
+
+import (
+  "os"
+  log "github.com/sirupsen/logrus"
+)
+
+func init() {
+  // Log as JSON instead of the default ASCII formatter.
+  log.SetFormatter(&log.JSONFormatter{})
+
+  // Output to stdout instead of the default stderr
+  // Can be any io.Writer, see below for File example
+  log.SetOutput(os.Stdout)
+
+  // Only log the warning severity or above.
+  log.SetLevel(log.WarnLevel)
+}
+
+func main() {
+  log.WithFields(log.Fields{
+    "animal": "walrus",
+    "size":   10,
+  }).Info("A group of walrus emerges from the ocean")
+
+  log.WithFields(log.Fields{
+    "omg":    true,
+    "number": 122,
+  }).Warn("The group's number increased tremendously!")
+
+  log.WithFields(log.Fields{
+    "omg":    true,
+    "number": 100,
+  }).Fatal("The ice breaks!")
+
+  // A common pattern is to re-use fields between logging statements by re-using
+  // the logrus.Entry returned from WithFields()
+  contextLogger := log.WithFields(log.Fields{
+    "common": "this is a common field",
+    "other": "I also should be logged always",
+  })
+
+  contextLogger.Info("I'll be logged with common and other field")
+  contextLogger.Info("Me too")
+}
+```
+
+For more advanced usage such as logging to multiple locations from the same
+application, you can also create an instance of the `logrus` Logger:
+
+```go
+package main
+
+import (
+  "os"
+  "github.com/sirupsen/logrus"
+)
+
+// Create a new instance of the logger. You can have any number of instances.
+var log = logrus.New()
+
+func main() {
+  // The API for setting attributes is a little different than the package level
+  // exported logger. See Godoc.
+  log.Out = os.Stdout
+
+  // You could set this to any `io.Writer` such as a file
+  // file, err := os.OpenFile("logrus.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
+  // if err == nil {
+  //  log.Out = file
+  // } else {
+  //  log.Info("Failed to log to file, using default stderr")
+  // }
+
+  log.WithFields(logrus.Fields{
+    "animal": "walrus",
+    "size":   10,
+  }).Info("A group of walrus emerges from the ocean")
+}
+```
+
+#### Fields
+
+Logrus encourages careful, structured logging through logging fields instead of
+long, unparseable error messages. For example, instead of: `log.Fatalf("Failed
+to send event %s to topic %s with key %d")`, you should log the much more
+discoverable:
+
+```go
+log.WithFields(log.Fields{
+  "event": event,
+  "topic": topic,
+  "key": key,
+}).Fatal("Failed to send event")
+```
+
+We've found this API forces you to think about logging in a way that produces
+much more useful logging messages. We've been in countless situations where just
+a single added field to a log statement that was already there would've saved us
+hours. The `WithFields` call is optional.
+
+In general, with Logrus using any of the `printf`-family functions should be
+seen as a hint you should add a field, however, you can still use the
+`printf`-family functions with Logrus.
+
+#### Default Fields
+
+Often it's helpful to have fields _always_ attached to log statements in an
+application or parts of one. For example, you may want to always log the
+`request_id` and `user_ip` in the context of a request. Instead of writing
+`log.WithFields(log.Fields{"request_id": request_id, "user_ip": user_ip})` on
+every line, you can create a `logrus.Entry` to pass around instead:
+
+```go
+requestLogger := log.WithFields(log.Fields{"request_id": request_id, "user_ip": user_ip})
+requestLogger.Info("something happened on that request") # will log request_id and user_ip
+requestLogger.Warn("something not great happened")
+```
+
+#### Hooks
+
+You can add hooks for logging levels. For example to send errors to an exception
+tracking service on `Error`, `Fatal` and `Panic`, info to StatsD or log to
+multiple places simultaneously, e.g. syslog.
+
+Logrus comes with [built-in hooks](hooks/). Add those, or your custom hook, in
+`init`:
+
+```go
+import (
+  log "github.com/sirupsen/logrus"
+  "gopkg.in/gemnasium/logrus-airbrake-hook.v2" // the package is named "airbrake"
+  logrus_syslog "github.com/sirupsen/logrus/hooks/syslog"
+  "log/syslog"
+)
+
+func init() {
+
+  // Use the Airbrake hook to report errors that have Error severity or above to
+  // an exception tracker. You can create custom hooks, see the Hooks section.
+  log.AddHook(airbrake.NewHook(123, "xyz", "production"))
+
+  hook, err := logrus_syslog.NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "")
+  if err != nil {
+    log.Error("Unable to connect to local syslog daemon")
+  } else {
+    log.AddHook(hook)
+  }
+}
+```
+Note: Syslog hook also support connecting to local syslog (Ex. "/dev/log" or "/var/run/syslog" or "/var/run/log"). For the detail, please check the [syslog hook README](hooks/syslog/README.md).
+
+A list of currently known service hooks can be found in this wiki [page](https://github.com/sirupsen/logrus/wiki/Hooks)
+
+
+#### Level logging
+
+Logrus has seven logging levels: Trace, Debug, Info, Warning, Error, Fatal and Panic.
+
+```go
+log.Trace("Something very low level.")
+log.Debug("Useful debugging information.")
+log.Info("Something noteworthy happened!")
+log.Warn("You should probably take a look at this.")
+log.Error("Something failed but I'm not quitting.")
+// Calls os.Exit(1) after logging
+log.Fatal("Bye.")
+// Calls panic() after logging
+log.Panic("I'm bailing.")
+```
+
+You can set the logging level on a `Logger`, then it will only log entries with
+that severity or anything above it:
+
+```go
+// Will log anything that is info or above (warn, error, fatal, panic). Default.
+log.SetLevel(log.InfoLevel)
+```
+
+It may be useful to set `log.Level = logrus.DebugLevel` in a debug or verbose
+environment if your application has that.
+
+Note: If you want different log levels for global (`log.SetLevel(...)`) and syslog logging, please check the [syslog hook README](hooks/syslog/README.md#different-log-levels-for-local-and-remote-logging).
+
+#### Entries
+
+Besides the fields added with `WithField` or `WithFields` some fields are
+automatically added to all logging events:
+
+1. `time`. The timestamp when the entry was created.
+2. `msg`. The logging message passed to `{Info,Warn,Error,Fatal,Panic}` after
+   the `AddFields` call. E.g. `Failed to send event.`
+3. `level`. The logging level. E.g. `info`.
+
+#### Environments
+
+Logrus has no notion of environment.
+
+If you wish for hooks and formatters to only be used in specific environments,
+you should handle that yourself. For example, if your application has a global
+variable `Environment`, which is a string representation of the environment you
+could do:
+
+```go
+import (
+  log "github.com/sirupsen/logrus"
+)
+
+func init() {
+  // do something here to set environment depending on an environment variable
+  // or command-line flag
+  if Environment == "production" {
+    log.SetFormatter(&log.JSONFormatter{})
+  } else {
+    // The TextFormatter is default, you don't actually have to do this.
+    log.SetFormatter(&log.TextFormatter{})
+  }
+}
+```
+
+This configuration is how `logrus` was intended to be used, but JSON in
+production is mostly only useful if you do log aggregation with tools like
+Splunk or Logstash.
+
+#### Formatters
+
+The built-in logging formatters are:
+
+* `logrus.TextFormatter`. Logs the event in colors if stdout is a tty, otherwise
+  without colors.
+  * *Note:* to force colored output when there is no TTY, set the `ForceColors`
+    field to `true`.  To force no colored output even if there is a TTY  set the
+    `DisableColors` field to `true`. For Windows, see
+    [github.com/mattn/go-colorable](https://github.com/mattn/go-colorable).
+  * When colors are enabled, levels are truncated to 4 characters by default. To disable
+    truncation set the `DisableLevelTruncation` field to `true`.
+  * When outputting to a TTY, it's often helpful to visually scan down a column where all the levels are the same width. Setting the `PadLevelText` field to `true` enables this behavior, by adding padding to the level text.
+  * All options are listed in the [generated docs](https://godoc.org/github.com/sirupsen/logrus#TextFormatter).
+* `logrus.JSONFormatter`. Logs fields as JSON.
+  * All options are listed in the [generated docs](https://godoc.org/github.com/sirupsen/logrus#JSONFormatter).
+
+Third party logging formatters:
+
+* [`FluentdFormatter`](https://github.com/joonix/log). Formats entries that can be parsed by Kubernetes and Google Container Engine.
+* [`GELF`](https://github.com/fabienm/go-logrus-formatters). Formats entries so they comply to Graylog's [GELF 1.1 specification](http://docs.graylog.org/en/2.4/pages/gelf.html).
+* [`logstash`](https://github.com/bshuster-repo/logrus-logstash-hook). Logs fields as [Logstash](http://logstash.net) Events.
+* [`prefixed`](https://github.com/x-cray/logrus-prefixed-formatter). Displays log entry source along with alternative layout.
+* [`zalgo`](https://github.com/aybabtme/logzalgo). Invoking the Power of Zalgo.
+* [`nested-logrus-formatter`](https://github.com/antonfisher/nested-logrus-formatter). Converts logrus fields to a nested structure.
+* [`powerful-logrus-formatter`](https://github.com/zput/zxcTool). get fileName, log's line number and the latest function's name when print log; Sava log to files.
+* [`caption-json-formatter`](https://github.com/nolleh/caption_json_formatter). logrus's message json formatter with human-readable caption added.
+
+You can define your formatter by implementing the `Formatter` interface,
+requiring a `Format` method. `Format` takes an `*Entry`. `entry.Data` is a
+`Fields` type (`map[string]interface{}`) with all your fields as well as the
+default ones (see Entries section above):
+
+```go
+type MyJSONFormatter struct {
+}
+
+log.SetFormatter(new(MyJSONFormatter))
+
+func (f *MyJSONFormatter) Format(entry *Entry) ([]byte, error) {
+  // Note this doesn't include Time, Level and Message which are available on
+  // the Entry. Consult `godoc` on information about those fields or read the
+  // source of the official loggers.
+  serialized, err := json.Marshal(entry.Data)
+    if err != nil {
+      return nil, fmt.Errorf("Failed to marshal fields to JSON, %w", err)
+    }
+  return append(serialized, '\n'), nil
+}
+```
+
+#### Logger as an `io.Writer`
+
+Logrus can be transformed into an `io.Writer`. That writer is the end of an `io.Pipe` and it is your responsibility to close it.
+
+```go
+w := logger.Writer()
+defer w.Close()
+
+srv := http.Server{
+    // create a stdlib log.Logger that writes to
+    // logrus.Logger.
+    ErrorLog: log.New(w, "", 0),
+}
+```
+
+Each line written to that writer will be printed the usual way, using formatters
+and hooks. The level for those entries is `info`.
+
+This means that we can override the standard library logger easily:
+
+```go
+logger := logrus.New()
+logger.Formatter = &logrus.JSONFormatter{}
+
+// Use logrus for standard log output
+// Note that `log` here references stdlib's log
+// Not logrus imported under the name `log`.
+log.SetOutput(logger.Writer())
+```
+
+#### Rotation
+
+Log rotation is not provided with Logrus. Log rotation should be done by an
+external program (like `logrotate(8)`) that can compress and delete old log
+entries. It should not be a feature of the application-level logger.
+
+#### Tools
+
+| Tool | Description |
+| ---- | ----------- |
+|[Logrus Mate](https://github.com/gogap/logrus_mate)|Logrus mate is a tool for Logrus to manage loggers, you can initial logger's level, hook and formatter by config file, the logger will be generated with different configs in different environments.|
+|[Logrus Viper Helper](https://github.com/heirko/go-contrib/tree/master/logrusHelper)|An Helper around Logrus to wrap with spf13/Viper to load configuration with fangs! And to simplify Logrus configuration use some behavior of [Logrus Mate](https://github.com/gogap/logrus_mate). [sample](https://github.com/heirko/iris-contrib/blob/master/middleware/logrus-logger/example) |
+
+#### Testing
+
+Logrus has a built in facility for asserting the presence of log messages. This is implemented through the `test` hook and provides:
+
+* decorators for existing logger (`test.NewLocal` and `test.NewGlobal`) which basically just adds the `test` hook
+* a test logger (`test.NewNullLogger`) that just records log messages (and does not output any):
+
+```go
+import(
+  "github.com/sirupsen/logrus"
+  "github.com/sirupsen/logrus/hooks/test"
+  "github.com/stretchr/testify/assert"
+  "testing"
+)
+
+func TestSomething(t*testing.T){
+  logger, hook := test.NewNullLogger()
+  logger.Error("Helloerror")
+
+  assert.Equal(t, 1, len(hook.Entries))
+  assert.Equal(t, logrus.ErrorLevel, hook.LastEntry().Level)
+  assert.Equal(t, "Helloerror", hook.LastEntry().Message)
+
+  hook.Reset()
+  assert.Nil(t, hook.LastEntry())
+}
+```
+
+#### Fatal handlers
+
+Logrus can register one or more functions that will be called when any `fatal`
+level message is logged. The registered handlers will be executed before
+logrus performs an `os.Exit(1)`. This behavior may be helpful if callers need
+to gracefully shutdown. Unlike a `panic("Something went wrong...")` call which can be intercepted with a deferred `recover` a call to `os.Exit(1)` can not be intercepted.
+
+```
+...
+handler := func() {
+  // gracefully shutdown something...
+}
+logrus.RegisterExitHandler(handler)
+...
+```
+
+#### Thread safety
+
+By default, Logger is protected by a mutex for concurrent writes. The mutex is held when calling hooks and writing logs.
+If you are sure such locking is not needed, you can call logger.SetNoLock() to disable the locking.
+
+Situation when locking is not needed includes:
+
+* You have no hooks registered, or hooks calling is already thread-safe.
+
+* Writing to logger.Out is already thread-safe, for example:
+
+  1) logger.Out is protected by locks.
+
+  2) logger.Out is an os.File handler opened with `O_APPEND` flag, and every write is smaller than 4k. (This allows multi-thread/multi-process writing)
+
+     (Refer to http://www.notthewizard.com/2014/06/17/are-files-appends-really-atomic/)
diff --git a/vendor/github.com/sirupsen/logrus/alt_exit.go b/vendor/github.com/sirupsen/logrus/alt_exit.go
new file mode 100644
index 00000000..8fd189e1
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/alt_exit.go
@@ -0,0 +1,76 @@
+package logrus
+
+// The following code was sourced and modified from the
+// https://github.com/tebeka/atexit package governed by the following license:
+//
+// Copyright (c) 2012 Miki Tebeka <miki.tebeka@gmail.com>.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of
+// this software and associated documentation files (the "Software"), to deal in
+// the Software without restriction, including without limitation the rights to
+// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+// the Software, and to permit persons to whom the Software is furnished to do so,
+// subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+import (
+	"fmt"
+	"os"
+)
+
+var handlers = []func(){}
+
+func runHandler(handler func()) {
+	defer func() {
+		if err := recover(); err != nil {
+			fmt.Fprintln(os.Stderr, "Error: Logrus exit handler error:", err)
+		}
+	}()
+
+	handler()
+}
+
+func runHandlers() {
+	for _, handler := range handlers {
+		runHandler(handler)
+	}
+}
+
+// Exit runs all the Logrus atexit handlers and then terminates the program using os.Exit(code)
+func Exit(code int) {
+	runHandlers()
+	os.Exit(code)
+}
+
+// RegisterExitHandler appends a Logrus Exit handler to the list of handlers,
+// call logrus.Exit to invoke all handlers. The handlers will also be invoked when
+// any Fatal log entry is made.
+//
+// This method is useful when a caller wishes to use logrus to log a fatal
+// message but also needs to gracefully shutdown. An example usecase could be
+// closing database connections, or sending a alert that the application is
+// closing.
+func RegisterExitHandler(handler func()) {
+	handlers = append(handlers, handler)
+}
+
+// DeferExitHandler prepends a Logrus Exit handler to the list of handlers,
+// call logrus.Exit to invoke all handlers. The handlers will also be invoked when
+// any Fatal log entry is made.
+//
+// This method is useful when a caller wishes to use logrus to log a fatal
+// message but also needs to gracefully shutdown. An example usecase could be
+// closing database connections, or sending a alert that the application is
+// closing.
+func DeferExitHandler(handler func()) {
+	handlers = append([]func(){handler}, handlers...)
+}
diff --git a/vendor/github.com/sirupsen/logrus/appveyor.yml b/vendor/github.com/sirupsen/logrus/appveyor.yml
new file mode 100644
index 00000000..df9d65c3
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/appveyor.yml
@@ -0,0 +1,14 @@
+version: "{build}"
+platform: x64
+clone_folder: c:\gopath\src\github.com\sirupsen\logrus
+environment:
+  GOPATH: c:\gopath
+branches:
+  only:
+    - master
+install:
+  - set PATH=%GOPATH%\bin;c:\go\bin;%PATH%
+  - go version
+build_script:
+  - go get -t
+  - go test
diff --git a/vendor/github.com/sirupsen/logrus/buffer_pool.go b/vendor/github.com/sirupsen/logrus/buffer_pool.go
new file mode 100644
index 00000000..c7787f77
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/buffer_pool.go
@@ -0,0 +1,43 @@
+package logrus
+
+import (
+	"bytes"
+	"sync"
+)
+
+var (
+	bufferPool BufferPool
+)
+
+type BufferPool interface {
+	Put(*bytes.Buffer)
+	Get() *bytes.Buffer
+}
+
+type defaultPool struct {
+	pool *sync.Pool
+}
+
+func (p *defaultPool) Put(buf *bytes.Buffer) {
+	p.pool.Put(buf)
+}
+
+func (p *defaultPool) Get() *bytes.Buffer {
+	return p.pool.Get().(*bytes.Buffer)
+}
+
+// SetBufferPool allows to replace the default logrus buffer pool
+// to better meets the specific needs of an application.
+func SetBufferPool(bp BufferPool) {
+	bufferPool = bp
+}
+
+func init() {
+	SetBufferPool(&defaultPool{
+		pool: &sync.Pool{
+			New: func() interface{} {
+				return new(bytes.Buffer)
+			},
+		},
+	})
+}
diff --git a/vendor/github.com/sirupsen/logrus/doc.go b/vendor/github.com/sirupsen/logrus/doc.go
new file mode 100644
index 00000000..da67aba0
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/doc.go
@@ -0,0 +1,26 @@
+/*
+Package logrus is a structured logger for Go, completely API compatible with the standard library logger.
+
+
+The simplest way to use Logrus is simply the package-level exported logger:
+
+  package main
+
+  import (
+    log "github.com/sirupsen/logrus"
+  )
+
+  func main() {
+    log.WithFields(log.Fields{
+      "animal": "walrus",
+      "number": 1,
+      "size":   10,
+    }).Info("A walrus appears")
+  }
+
+Output:
+  time="2015-09-07T08:48:33Z" level=info msg="A walrus appears" animal=walrus number=1 size=10
+
+For a full guide visit https://github.com/sirupsen/logrus
+*/
+package logrus
diff --git a/vendor/github.com/sirupsen/logrus/entry.go b/vendor/github.com/sirupsen/logrus/entry.go
new file mode 100644
index 00000000..71cdbbc3
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/entry.go
@@ -0,0 +1,442 @@
+package logrus
+
+import (
+	"bytes"
+	"context"
+	"fmt"
+	"os"
+	"reflect"
+	"runtime"
+	"strings"
+	"sync"
+	"time"
+)
+
+var (
+
+	// qualified package name, cached at first use
+	logrusPackage string
+
+	// Positions in the call stack when tracing to report the calling method
+	minimumCallerDepth int
+
+	// Used for caller information initialisation
+	callerInitOnce sync.Once
+)
+
+const (
+	maximumCallerDepth int = 25
+	knownLogrusFrames  int = 4
+)
+
+func init() {
+	// start at the bottom of the stack before the package-name cache is primed
+	minimumCallerDepth = 1
+}
+
+// Defines the key when adding errors using WithError.
+var ErrorKey = "error"
+
+// An entry is the final or intermediate Logrus logging entry. It contains all
+// the fields passed with WithField{,s}. It's finally logged when Trace, Debug,
+// Info, Warn, Error, Fatal or Panic is called on it. These objects can be
+// reused and passed around as much as you wish to avoid field duplication.
+type Entry struct {
+	Logger *Logger
+
+	// Contains all the fields set by the user.
+	Data Fields
+
+	// Time at which the log entry was created
+	Time time.Time
+
+	// Level the log entry was logged at: Trace, Debug, Info, Warn, Error, Fatal or Panic
+	// This field will be set on entry firing and the value will be equal to the one in Logger struct field.
+	Level Level
+
+	// Calling method, with package name
+	Caller *runtime.Frame
+
+	// Message passed to Trace, Debug, Info, Warn, Error, Fatal or Panic
+	Message string
+
+	// When formatter is called in entry.log(), a Buffer may be set to entry
+	Buffer *bytes.Buffer
+
+	// Contains the context set by the user. Useful for hook processing etc.
+	Context context.Context
+
+	// err may contain a field formatting error
+	err string
+}
+
+func NewEntry(logger *Logger) *Entry {
+	return &Entry{
+		Logger: logger,
+		// Default is three fields, plus one optional.  Give a little extra room.
+		Data: make(Fields, 6),
+	}
+}
+
+func (entry *Entry) Dup() *Entry {
+	data := make(Fields, len(entry.Data))
+	for k, v := range entry.Data {
+		data[k] = v
+	}
+	return &Entry{Logger: entry.Logger, Data: data, Time: entry.Time, Context: entry.Context, err: entry.err}
+}
+
+// Returns the bytes representation of this entry from the formatter.
+func (entry *Entry) Bytes() ([]byte, error) {
+	return entry.Logger.Formatter.Format(entry)
+}
+
+// Returns the string representation from the reader and ultimately the
+// formatter.
+func (entry *Entry) String() (string, error) {
+	serialized, err := entry.Bytes()
+	if err != nil {
+		return "", err
+	}
+	str := string(serialized)
+	return str, nil
+}
+
+// Add an error as single field (using the key defined in ErrorKey) to the Entry.
+func (entry *Entry) WithError(err error) *Entry {
+	return entry.WithField(ErrorKey, err)
+}
+
+// Add a context to the Entry.
+func (entry *Entry) WithContext(ctx context.Context) *Entry {
+	dataCopy := make(Fields, len(entry.Data))
+	for k, v := range entry.Data {
+		dataCopy[k] = v
+	}
+	return &Entry{Logger: entry.Logger, Data: dataCopy, Time: entry.Time, err: entry.err, Context: ctx}
+}
+
+// Add a single field to the Entry.
+func (entry *Entry) WithField(key string, value interface{}) *Entry {
+	return entry.WithFields(Fields{key: value})
+}
+
+// Add a map of fields to the Entry.
+func (entry *Entry) WithFields(fields Fields) *Entry {
+	data := make(Fields, len(entry.Data)+len(fields))
+	for k, v := range entry.Data {
+		data[k] = v
+	}
+	fieldErr := entry.err
+	for k, v := range fields {
+		isErrField := false
+		if t := reflect.TypeOf(v); t != nil {
+			switch {
+			case t.Kind() == reflect.Func, t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Func:
+				isErrField = true
+			}
+		}
+		if isErrField {
+			tmp := fmt.Sprintf("can not add field %q", k)
+			if fieldErr != "" {
+				fieldErr = entry.err + ", " + tmp
+			} else {
+				fieldErr = tmp
+			}
+		} else {
+			data[k] = v
+		}
+	}
+	return &Entry{Logger: entry.Logger, Data: data, Time: entry.Time, err: fieldErr, Context: entry.Context}
+}
+
+// Overrides the time of the Entry.
+func (entry *Entry) WithTime(t time.Time) *Entry {
+	dataCopy := make(Fields, len(entry.Data))
+	for k, v := range entry.Data {
+		dataCopy[k] = v
+	}
+	return &Entry{Logger: entry.Logger, Data: dataCopy, Time: t, err: entry.err, Context: entry.Context}
+}
+
+// getPackageName reduces a fully qualified function name to the package name
+// There really ought to be to be a better way...
+func getPackageName(f string) string {
+	for {
+		lastPeriod := strings.LastIndex(f, ".")
+		lastSlash := strings.LastIndex(f, "/")
+		if lastPeriod > lastSlash {
+			f = f[:lastPeriod]
+		} else {
+			break
+		}
+	}
+
+	return f
+}
+
+// getCaller retrieves the name of the first non-logrus calling function
+func getCaller() *runtime.Frame {
+	// cache this package's fully-qualified name
+	callerInitOnce.Do(func() {
+		pcs := make([]uintptr, maximumCallerDepth)
+		_ = runtime.Callers(0, pcs)
+
+		// dynamic get the package name and the minimum caller depth
+		for i := 0; i < maximumCallerDepth; i++ {
+			funcName := runtime.FuncForPC(pcs[i]).Name()
+			if strings.Contains(funcName, "getCaller") {
+				logrusPackage = getPackageName(funcName)
+				break
+			}
+		}
+
+		minimumCallerDepth = knownLogrusFrames
+	})
+
+	// Restrict the lookback frames to avoid runaway lookups
+	pcs := make([]uintptr, maximumCallerDepth)
+	depth := runtime.Callers(minimumCallerDepth, pcs)
+	frames := runtime.CallersFrames(pcs[:depth])
+
+	for f, again := frames.Next(); again; f, again = frames.Next() {
+		pkg := getPackageName(f.Function)
+
+		// If the caller isn't part of this package, we're done
+		if pkg != logrusPackage {
+			return &f //nolint:scopelint
+		}
+	}
+
+	// if we got here, we failed to find the caller's context
+	return nil
+}
+
+func (entry Entry) HasCaller() (has bool) {
+	return entry.Logger != nil &&
+		entry.Logger.ReportCaller &&
+		entry.Caller != nil
+}
+
+func (entry *Entry) log(level Level, msg string) {
+	var buffer *bytes.Buffer
+
+	newEntry := entry.Dup()
+
+	if newEntry.Time.IsZero() {
+		newEntry.Time = time.Now()
+	}
+
+	newEntry.Level = level
+	newEntry.Message = msg
+
+	newEntry.Logger.mu.Lock()
+	reportCaller := newEntry.Logger.ReportCaller
+	bufPool := newEntry.getBufferPool()
+	newEntry.Logger.mu.Unlock()
+
+	if reportCaller {
+		newEntry.Caller = getCaller()
+	}
+
+	newEntry.fireHooks()
+	buffer = bufPool.Get()
+	defer func() {
+		newEntry.Buffer = nil
+		buffer.Reset()
+		bufPool.Put(buffer)
+	}()
+	buffer.Reset()
+	newEntry.Buffer = buffer
+
+	newEntry.write()
+
+	newEntry.Buffer = nil
+
+	// To avoid Entry#log() returning a value that only would make sense for
+	// panic() to use in Entry#Panic(), we avoid the allocation by checking
+	// directly here.
+	if level <= PanicLevel {
+		panic(newEntry)
+	}
+}
+
+func (entry *Entry) getBufferPool() (pool BufferPool) {
+	if entry.Logger.BufferPool != nil {
+		return entry.Logger.BufferPool
+	}
+	return bufferPool
+}
+
+func (entry *Entry) fireHooks() {
+	var tmpHooks LevelHooks
+	entry.Logger.mu.Lock()
+	tmpHooks = make(LevelHooks, len(entry.Logger.Hooks))
+	for k, v := range entry.Logger.Hooks {
+		tmpHooks[k] = v
+	}
+	entry.Logger.mu.Unlock()
+
+	err := tmpHooks.Fire(entry.Level, entry)
+	if err != nil {
+		fmt.Fprintf(os.Stderr, "Failed to fire hook: %v\n", err)
+	}
+}
+
+func (entry *Entry) write() {
+	entry.Logger.mu.Lock()
+	defer entry.Logger.mu.Unlock()
+	serialized, err := entry.Logger.Formatter.Format(entry)
+	if err != nil {
+		fmt.Fprintf(os.Stderr, "Failed to obtain reader, %v\n", err)
+		return
+	}
+	if _, err := entry.Logger.Out.Write(serialized); err != nil {
+		fmt.Fprintf(os.Stderr, "Failed to write to log, %v\n", err)
+	}
+}
+
+// Log will log a message at the level given as parameter.
+// Warning: using Log at Panic or Fatal level will not respectively Panic nor Exit.
+// For this behaviour Entry.Panic or Entry.Fatal should be used instead.
+func (entry *Entry) Log(level Level, args ...interface{}) {
+	if entry.Logger.IsLevelEnabled(level) {
+		entry.log(level, fmt.Sprint(args...))
+	}
+}
+
+func (entry *Entry) Trace(args ...interface{}) {
+	entry.Log(TraceLevel, args...)
+}
+
+func (entry *Entry) Debug(args ...interface{}) {
+	entry.Log(DebugLevel, args...)
+}
+
+func (entry *Entry) Print(args ...interface{}) {
+	entry.Info(args...)
+}
+
+func (entry *Entry) Info(args ...interface{}) {
+	entry.Log(InfoLevel, args...)
+}
+
+func (entry *Entry) Warn(args ...interface{}) {
+	entry.Log(WarnLevel, args...)
+}
+
+func (entry *Entry) Warning(args ...interface{}) {
+	entry.Warn(args...)
+}
+
+func (entry *Entry) Error(args ...interface{}) {
+	entry.Log(ErrorLevel, args...)
+}
+
+func (entry *Entry) Fatal(args ...interface{}) {
+	entry.Log(FatalLevel, args...)
+	entry.Logger.Exit(1)
+}
+
+func (entry *Entry) Panic(args ...interface{}) {
+	entry.Log(PanicLevel, args...)
+}
+
+// Entry Printf family functions
+
+func (entry *Entry) Logf(level Level, format string, args ...interface{}) {
+	if entry.Logger.IsLevelEnabled(level) {
+		entry.Log(level, fmt.Sprintf(format, args...))
+	}
+}
+
+func (entry *Entry) Tracef(format string, args ...interface{}) {
+	entry.Logf(TraceLevel, format, args...)
+}
+
+func (entry *Entry) Debugf(format string, args ...interface{}) {
+	entry.Logf(DebugLevel, format, args...)
+}
+
+func (entry *Entry) Infof(format string, args ...interface{}) {
+	entry.Logf(InfoLevel, format, args...)
+}
+
+func (entry *Entry) Printf(format string, args ...interface{}) {
+	entry.Infof(format, args...)
+}
+
+func (entry *Entry) Warnf(format string, args ...interface{}) {
+	entry.Logf(WarnLevel, format, args...)
+}
+
+func (entry *Entry) Warningf(format string, args ...interface{}) {
+	entry.Warnf(format, args...)
+}
+
+func (entry *Entry) Errorf(format string, args ...interface{}) {
+	entry.Logf(ErrorLevel, format, args...)
+}
+
+func (entry *Entry) Fatalf(format string, args ...interface{}) {
+	entry.Logf(FatalLevel, format, args...)
+	entry.Logger.Exit(1)
+}
+
+func (entry *Entry) Panicf(format string, args ...interface{}) {
+	entry.Logf(PanicLevel, format, args...)
+}
+
+// Entry Println family functions
+
+func (entry *Entry) Logln(level Level, args ...interface{}) {
+	if entry.Logger.IsLevelEnabled(level) {
+		entry.Log(level, entry.sprintlnn(args...))
+	}
+}
+
+func (entry *Entry) Traceln(args ...interface{}) {
+	entry.Logln(TraceLevel, args...)
+}
+
+func (entry *Entry) Debugln(args ...interface{}) {
+	entry.Logln(DebugLevel, args...)
+}
+
+func (entry *Entry) Infoln(args ...interface{}) {
+	entry.Logln(InfoLevel, args...)
+}
+
+func (entry *Entry) Println(args ...interface{}) {
+	entry.Infoln(args...)
+}
+
+func (entry *Entry) Warnln(args ...interface{}) {
+	entry.Logln(WarnLevel, args...)
+}
+
+func (entry *Entry) Warningln(args ...interface{}) {
+	entry.Warnln(args...)
+}
+
+func (entry *Entry) Errorln(args ...interface{}) {
+	entry.Logln(ErrorLevel, args...)
+}
+
+func (entry *Entry) Fatalln(args ...interface{}) {
+	entry.Logln(FatalLevel, args...)
+	entry.Logger.Exit(1)
+}
+
+func (entry *Entry) Panicln(args ...interface{}) {
+	entry.Logln(PanicLevel, args...)
+}
+
+// Sprintlnn => Sprint no newline. This is to get the behavior of how
+// fmt.Sprintln where spaces are always added between operands, regardless of
+// their type. Instead of vendoring the Sprintln implementation to spare a
+// string allocation, we do the simplest thing.
+func (entry *Entry) sprintlnn(args ...interface{}) string {
+	msg := fmt.Sprintln(args...)
+	return msg[:len(msg)-1]
+}
diff --git a/vendor/github.com/sirupsen/logrus/exported.go b/vendor/github.com/sirupsen/logrus/exported.go
new file mode 100644
index 00000000..017c30ce
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/exported.go
@@ -0,0 +1,270 @@
+package logrus
+
+import (
+	"context"
+	"io"
+	"time"
+)
+
+var (
+	// std is the name of the standard logger in stdlib `log`
+	std = New()
+)
+
+func StandardLogger() *Logger {
+	return std
+}
+
+// SetOutput sets the standard logger output.
+func SetOutput(out io.Writer) {
+	std.SetOutput(out)
+}
+
+// SetFormatter sets the standard logger formatter.
+func SetFormatter(formatter Formatter) {
+	std.SetFormatter(formatter)
+}
+
+// SetReportCaller sets whether the standard logger will include the calling
+// method as a field.
+func SetReportCaller(include bool) {
+	std.SetReportCaller(include)
+}
+
+// SetLevel sets the standard logger level.
+func SetLevel(level Level) {
+	std.SetLevel(level)
+}
+
+// GetLevel returns the standard logger level.
+func GetLevel() Level {
+	return std.GetLevel()
+}
+
+// IsLevelEnabled checks if the log level of the standard logger is greater than the level param
+func IsLevelEnabled(level Level) bool {
+	return std.IsLevelEnabled(level)
+}
+
+// AddHook adds a hook to the standard logger hooks.
+func AddHook(hook Hook) {
+	std.AddHook(hook)
+}
+
+// WithError creates an entry from the standard logger and adds an error to it, using the value defined in ErrorKey as key.
+func WithError(err error) *Entry {
+	return std.WithField(ErrorKey, err)
+}
+
+// WithContext creates an entry from the standard logger and adds a context to it.
+func WithContext(ctx context.Context) *Entry {
+	return std.WithContext(ctx)
+}
+
+// WithField creates an entry from the standard logger and adds a field to
+// it. If you want multiple fields, use `WithFields`.
+//
+// Note that it doesn't log until you call Debug, Print, Info, Warn, Fatal
+// or Panic on the Entry it returns.
+func WithField(key string, value interface{}) *Entry {
+	return std.WithField(key, value)
+}
+
+// WithFields creates an entry from the standard logger and adds multiple
+// fields to it. This is simply a helper for `WithField`, invoking it
+// once for each field.
+//
+// Note that it doesn't log until you call Debug, Print, Info, Warn, Fatal
+// or Panic on the Entry it returns.
+func WithFields(fields Fields) *Entry {
+	return std.WithFields(fields)
+}
+
+// WithTime creates an entry from the standard logger and overrides the time of
+// logs generated with it.
+//
+// Note that it doesn't log until you call Debug, Print, Info, Warn, Fatal
+// or Panic on the Entry it returns.
+func WithTime(t time.Time) *Entry {
+	return std.WithTime(t)
+}
+
+// Trace logs a message at level Trace on the standard logger.
+func Trace(args ...interface{}) {
+	std.Trace(args...)
+}
+
+// Debug logs a message at level Debug on the standard logger.
+func Debug(args ...interface{}) {
+	std.Debug(args...)
+}
+
+// Print logs a message at level Info on the standard logger.
+func Print(args ...interface{}) {
+	std.Print(args...)
+}
+
+// Info logs a message at level Info on the standard logger.
+func Info(args ...interface{}) {
+	std.Info(args...)
+}
+
+// Warn logs a message at level Warn on the standard logger.
+func Warn(args ...interface{}) {
+	std.Warn(args...)
+}
+
+// Warning logs a message at level Warn on the standard logger.
+func Warning(args ...interface{}) {
+	std.Warning(args...)
+}
+
+// Error logs a message at level Error on the standard logger.
+func Error(args ...interface{}) {
+	std.Error(args...)
+}
+
+// Panic logs a message at level Panic on the standard logger.
+func Panic(args ...interface{}) {
+	std.Panic(args...)
+}
+
+// Fatal logs a message at level Fatal on the standard logger then the process will exit with status set to 1.
+func Fatal(args ...interface{}) {
+	std.Fatal(args...)
+}
+
+// TraceFn logs a message from a func at level Trace on the standard logger.
+func TraceFn(fn LogFunction) {
+	std.TraceFn(fn)
+}
+
+// DebugFn logs a message from a func at level Debug on the standard logger.
+func DebugFn(fn LogFunction) {
+	std.DebugFn(fn)
+}
+
+// PrintFn logs a message from a func at level Info on the standard logger.
+func PrintFn(fn LogFunction) {
+	std.PrintFn(fn)
+}
+
+// InfoFn logs a message from a func at level Info on the standard logger.
+func InfoFn(fn LogFunction) {
+	std.InfoFn(fn)
+}
+
+// WarnFn logs a message from a func at level Warn on the standard logger.
+func WarnFn(fn LogFunction) {
+	std.WarnFn(fn)
+}
+
+// WarningFn logs a message from a func at level Warn on the standard logger.
+func WarningFn(fn LogFunction) {
+	std.WarningFn(fn)
+}
+
+// ErrorFn logs a message from a func at level Error on the standard logger.
+func ErrorFn(fn LogFunction) {
+	std.ErrorFn(fn)
+}
+
+// PanicFn logs a message from a func at level Panic on the standard logger.
+func PanicFn(fn LogFunction) {
+	std.PanicFn(fn)
+}
+
+// FatalFn logs a message from a func at level Fatal on the standard logger then the process will exit with status set to 1.
+func FatalFn(fn LogFunction) {
+	std.FatalFn(fn)
+}
+
+// Tracef logs a message at level Trace on the standard logger.
+func Tracef(format string, args ...interface{}) {
+	std.Tracef(format, args...)
+}
+
+// Debugf logs a message at level Debug on the standard logger.
+func Debugf(format string, args ...interface{}) {
+	std.Debugf(format, args...)
+}
+
+// Printf logs a message at level Info on the standard logger.
+func Printf(format string, args ...interface{}) {
+	std.Printf(format, args...)
+}
+
+// Infof logs a message at level Info on the standard logger.
+func Infof(format string, args ...interface{}) {
+	std.Infof(format, args...)
+}
+
+// Warnf logs a message at level Warn on the standard logger.
+func Warnf(format string, args ...interface{}) {
+	std.Warnf(format, args...)
+}
+
+// Warningf logs a message at level Warn on the standard logger.
+func Warningf(format string, args ...interface{}) {
+	std.Warningf(format, args...)
+}
+
+// Errorf logs a message at level Error on the standard logger.
+func Errorf(format string, args ...interface{}) {
+	std.Errorf(format, args...)
+}
+
+// Panicf logs a message at level Panic on the standard logger.
+func Panicf(format string, args ...interface{}) {
+	std.Panicf(format, args...)
+}
+
+// Fatalf logs a message at level Fatal on the standard logger then the process will exit with status set to 1.
+func Fatalf(format string, args ...interface{}) {
+	std.Fatalf(format, args...)
+}
+
+// Traceln logs a message at level Trace on the standard logger.
+func Traceln(args ...interface{}) {
+	std.Traceln(args...)
+}
+
+// Debugln logs a message at level Debug on the standard logger.
+func Debugln(args ...interface{}) {
+	std.Debugln(args...)
+}
+
+// Println logs a message at level Info on the standard logger.
+func Println(args ...interface{}) {
+	std.Println(args...)
+}
+
+// Infoln logs a message at level Info on the standard logger.
+func Infoln(args ...interface{}) {
+	std.Infoln(args...)
+}
+
+// Warnln logs a message at level Warn on the standard logger.
+func Warnln(args ...interface{}) {
+	std.Warnln(args...)
+}
+
+// Warningln logs a message at level Warn on the standard logger.
+func Warningln(args ...interface{}) {
+	std.Warningln(args...)
+}
+
+// Errorln logs a message at level Error on the standard logger.
+func Errorln(args ...interface{}) {
+	std.Errorln(args...)
+}
+
+// Panicln logs a message at level Panic on the standard logger.
+func Panicln(args ...interface{}) {
+	std.Panicln(args...)
+}
+
+// Fatalln logs a message at level Fatal on the standard logger then the process will exit with status set to 1.
+func Fatalln(args ...interface{}) {
+	std.Fatalln(args...)
+}
diff --git a/vendor/github.com/sirupsen/logrus/formatter.go b/vendor/github.com/sirupsen/logrus/formatter.go
new file mode 100644
index 00000000..40888377
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/formatter.go
@@ -0,0 +1,78 @@
+package logrus
+
+import "time"
+
+// Default key names for the default fields
+const (
+	defaultTimestampFormat = time.RFC3339
+	FieldKeyMsg            = "msg"
+	FieldKeyLevel          = "level"
+	FieldKeyTime           = "time"
+	FieldKeyLogrusError    = "logrus_error"
+	FieldKeyFunc           = "func"
+	FieldKeyFile           = "file"
+)
+
+// The Formatter interface is used to implement a custom Formatter. It takes an
+// `Entry`. It exposes all the fields, including the default ones:
+//
+// * `entry.Data["msg"]`. The message passed from Info, Warn, Error ..
+// * `entry.Data["time"]`. The timestamp.
+// * `entry.Data["level"]. The level the entry was logged at.
+//
+// Any additional fields added with `WithField` or `WithFields` are also in
+// `entry.Data`. Format is expected to return an array of bytes which are then
+// logged to `logger.Out`.
+type Formatter interface {
+	Format(*Entry) ([]byte, error)
+}
+
+// This is to not silently overwrite `time`, `msg`, `func` and `level` fields when
+// dumping it. If this code wasn't there doing:
+//
+//  logrus.WithField("level", 1).Info("hello")
+//
+// Would just silently drop the user provided level. Instead with this code
+// it'll logged as:
+//
+//  {"level": "info", "fields.level": 1, "msg": "hello", "time": "..."}
+//
+// It's not exported because it's still using Data in an opinionated way. It's to
+// avoid code duplication between the two default formatters.
+func prefixFieldClashes(data Fields, fieldMap FieldMap, reportCaller bool) {
+	timeKey := fieldMap.resolve(FieldKeyTime)
+	if t, ok := data[timeKey]; ok {
+		data["fields."+timeKey] = t
+		delete(data, timeKey)
+	}
+
+	msgKey := fieldMap.resolve(FieldKeyMsg)
+	if m, ok := data[msgKey]; ok {
+		data["fields."+msgKey] = m
+		delete(data, msgKey)
+	}
+
+	levelKey := fieldMap.resolve(FieldKeyLevel)
+	if l, ok := data[levelKey]; ok {
+		data["fields."+levelKey] = l
+		delete(data, levelKey)
+	}
+
+	logrusErrKey := fieldMap.resolve(FieldKeyLogrusError)
+	if l, ok := data[logrusErrKey]; ok {
+		data["fields."+logrusErrKey] = l
+		delete(data, logrusErrKey)
+	}
+
+	// If reportCaller is not set, 'func' will not conflict.
+	if reportCaller {
+		funcKey := fieldMap.resolve(FieldKeyFunc)
+		if l, ok := data[funcKey]; ok {
+			data["fields."+funcKey] = l
+		}
+		fileKey := fieldMap.resolve(FieldKeyFile)
+		if l, ok := data[fileKey]; ok {
+			data["fields."+fileKey] = l
+		}
+	}
+}
diff --git a/vendor/github.com/sirupsen/logrus/hooks.go b/vendor/github.com/sirupsen/logrus/hooks.go
new file mode 100644
index 00000000..3f151cdc
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/hooks.go
@@ -0,0 +1,34 @@
+package logrus
+
+// A hook to be fired when logging on the logging levels returned from
+// `Levels()` on your implementation of the interface. Note that this is not
+// fired in a goroutine or a channel with workers, you should handle such
+// functionality yourself if your call is non-blocking and you don't wish for
+// the logging calls for levels returned from `Levels()` to block.
+type Hook interface {
+	Levels() []Level
+	Fire(*Entry) error
+}
+
+// Internal type for storing the hooks on a logger instance.
+type LevelHooks map[Level][]Hook
+
+// Add a hook to an instance of logger. This is called with
+// `log.Hooks.Add(new(MyHook))` where `MyHook` implements the `Hook` interface.
+func (hooks LevelHooks) Add(hook Hook) {
+	for _, level := range hook.Levels() {
+		hooks[level] = append(hooks[level], hook)
+	}
+}
+
+// Fire all the hooks for the passed level. Used by `entry.log` to fire
+// appropriate hooks for a log entry.
+func (hooks LevelHooks) Fire(level Level, entry *Entry) error {
+	for _, hook := range hooks[level] {
+		if err := hook.Fire(entry); err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
diff --git a/vendor/github.com/sirupsen/logrus/json_formatter.go b/vendor/github.com/sirupsen/logrus/json_formatter.go
new file mode 100644
index 00000000..c96dc563
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/json_formatter.go
@@ -0,0 +1,128 @@
+package logrus
+
+import (
+	"bytes"
+	"encoding/json"
+	"fmt"
+	"runtime"
+)
+
+type fieldKey string
+
+// FieldMap allows customization of the key names for default fields.
+type FieldMap map[fieldKey]string
+
+func (f FieldMap) resolve(key fieldKey) string {
+	if k, ok := f[key]; ok {
+		return k
+	}
+
+	return string(key)
+}
+
+// JSONFormatter formats logs into parsable json
+type JSONFormatter struct {
+	// TimestampFormat sets the format used for marshaling timestamps.
+	// The format to use is the same than for time.Format or time.Parse from the standard
+	// library.
+	// The standard Library already provides a set of predefined format.
+	TimestampFormat string
+
+	// DisableTimestamp allows disabling automatic timestamps in output
+	DisableTimestamp bool
+
+	// DisableHTMLEscape allows disabling html escaping in output
+	DisableHTMLEscape bool
+
+	// DataKey allows users to put all the log entry parameters into a nested dictionary at a given key.
+	DataKey string
+
+	// FieldMap allows users to customize the names of keys for default fields.
+	// As an example:
+	// formatter := &JSONFormatter{
+	//   	FieldMap: FieldMap{
+	// 		 FieldKeyTime:  "@timestamp",
+	// 		 FieldKeyLevel: "@level",
+	// 		 FieldKeyMsg:   "@message",
+	// 		 FieldKeyFunc:  "@caller",
+	//    },
+	// }
+	FieldMap FieldMap
+
+	// CallerPrettyfier can be set by the user to modify the content
+	// of the function and file keys in the json data when ReportCaller is
+	// activated. If any of the returned value is the empty string the
+	// corresponding key will be removed from json fields.
+	CallerPrettyfier func(*runtime.Frame) (function string, file string)
+
+	// PrettyPrint will indent all json logs
+	PrettyPrint bool
+}
+
+// Format renders a single log entry
+func (f *JSONFormatter) Format(entry *Entry) ([]byte, error) {
+	data := make(Fields, len(entry.Data)+4)
+	for k, v := range entry.Data {
+		switch v := v.(type) {
+		case error:
+			// Otherwise errors are ignored by `encoding/json`
+			// https://github.com/sirupsen/logrus/issues/137
+			data[k] = v.Error()
+		default:
+			data[k] = v
+		}
+	}
+
+	if f.DataKey != "" {
+		newData := make(Fields, 4)
+		newData[f.DataKey] = data
+		data = newData
+	}
+
+	prefixFieldClashes(data, f.FieldMap, entry.HasCaller())
+
+	timestampFormat := f.TimestampFormat
+	if timestampFormat == "" {
+		timestampFormat = defaultTimestampFormat
+	}
+
+	if entry.err != "" {
+		data[f.FieldMap.resolve(FieldKeyLogrusError)] = entry.err
+	}
+	if !f.DisableTimestamp {
+		data[f.FieldMap.resolve(FieldKeyTime)] = entry.Time.Format(timestampFormat)
+	}
+	data[f.FieldMap.resolve(FieldKeyMsg)] = entry.Message
+	data[f.FieldMap.resolve(FieldKeyLevel)] = entry.Level.String()
+	if entry.HasCaller() {
+		funcVal := entry.Caller.Function
+		fileVal := fmt.Sprintf("%s:%d", entry.Caller.File, entry.Caller.Line)
+		if f.CallerPrettyfier != nil {
+			funcVal, fileVal = f.CallerPrettyfier(entry.Caller)
+		}
+		if funcVal != "" {
+			data[f.FieldMap.resolve(FieldKeyFunc)] = funcVal
+		}
+		if fileVal != "" {
+			data[f.FieldMap.resolve(FieldKeyFile)] = fileVal
+		}
+	}
+
+	var b *bytes.Buffer
+	if entry.Buffer != nil {
+		b = entry.Buffer
+	} else {
+		b = &bytes.Buffer{}
+	}
+
+	encoder := json.NewEncoder(b)
+	encoder.SetEscapeHTML(!f.DisableHTMLEscape)
+	if f.PrettyPrint {
+		encoder.SetIndent("", "  ")
+	}
+	if err := encoder.Encode(data); err != nil {
+		return nil, fmt.Errorf("failed to marshal fields to JSON, %w", err)
+	}
+
+	return b.Bytes(), nil
+}
diff --git a/vendor/github.com/sirupsen/logrus/logger.go b/vendor/github.com/sirupsen/logrus/logger.go
new file mode 100644
index 00000000..5ff0aef6
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/logger.go
@@ -0,0 +1,417 @@
+package logrus
+
+import (
+	"context"
+	"io"
+	"os"
+	"sync"
+	"sync/atomic"
+	"time"
+)
+
+// LogFunction For big messages, it can be more efficient to pass a function
+// and only call it if the log level is actually enables rather than
+// generating the log message and then checking if the level is enabled
+type LogFunction func() []interface{}
+
+type Logger struct {
+	// The logs are `io.Copy`'d to this in a mutex. It's common to set this to a
+	// file, or leave it default which is `os.Stderr`. You can also set this to
+	// something more adventurous, such as logging to Kafka.
+	Out io.Writer
+	// Hooks for the logger instance. These allow firing events based on logging
+	// levels and log entries. For example, to send errors to an error tracking
+	// service, log to StatsD or dump the core on fatal errors.
+	Hooks LevelHooks
+	// All log entries pass through the formatter before logged to Out. The
+	// included formatters are `TextFormatter` and `JSONFormatter` for which
+	// TextFormatter is the default. In development (when a TTY is attached) it
+	// logs with colors, but to a file it wouldn't. You can easily implement your
+	// own that implements the `Formatter` interface, see the `README` or included
+	// formatters for examples.
+	Formatter Formatter
+
+	// Flag for whether to log caller info (off by default)
+	ReportCaller bool
+
+	// The logging level the logger should log at. This is typically (and defaults
+	// to) `logrus.Info`, which allows Info(), Warn(), Error() and Fatal() to be
+	// logged.
+	Level Level
+	// Used to sync writing to the log. Locking is enabled by Default
+	mu MutexWrap
+	// Reusable empty entry
+	entryPool sync.Pool
+	// Function to exit the application, defaults to `os.Exit()`
+	ExitFunc exitFunc
+	// The buffer pool used to format the log. If it is nil, the default global
+	// buffer pool will be used.
+	BufferPool BufferPool
+}
+
+type exitFunc func(int)
+
+type MutexWrap struct {
+	lock     sync.Mutex
+	disabled bool
+}
+
+func (mw *MutexWrap) Lock() {
+	if !mw.disabled {
+		mw.lock.Lock()
+	}
+}
+
+func (mw *MutexWrap) Unlock() {
+	if !mw.disabled {
+		mw.lock.Unlock()
+	}
+}
+
+func (mw *MutexWrap) Disable() {
+	mw.disabled = true
+}
+
+// Creates a new logger. Configuration should be set by changing `Formatter`,
+// `Out` and `Hooks` directly on the default logger instance. You can also just
+// instantiate your own:
+//
+//    var log = &logrus.Logger{
+//      Out: os.Stderr,
+//      Formatter: new(logrus.TextFormatter),
+//      Hooks: make(logrus.LevelHooks),
+//      Level: logrus.DebugLevel,
+//    }
+//
+// It's recommended to make this a global instance called `log`.
+func New() *Logger {
+	return &Logger{
+		Out:          os.Stderr,
+		Formatter:    new(TextFormatter),
+		Hooks:        make(LevelHooks),
+		Level:        InfoLevel,
+		ExitFunc:     os.Exit,
+		ReportCaller: false,
+	}
+}
+
+func (logger *Logger) newEntry() *Entry {
+	entry, ok := logger.entryPool.Get().(*Entry)
+	if ok {
+		return entry
+	}
+	return NewEntry(logger)
+}
+
+func (logger *Logger) releaseEntry(entry *Entry) {
+	entry.Data = map[string]interface{}{}
+	logger.entryPool.Put(entry)
+}
+
+// WithField allocates a new entry and adds a field to it.
+// Debug, Print, Info, Warn, Error, Fatal or Panic must be then applied to
+// this new returned entry.
+// If you want multiple fields, use `WithFields`.
+func (logger *Logger) WithField(key string, value interface{}) *Entry {
+	entry := logger.newEntry()
+	defer logger.releaseEntry(entry)
+	return entry.WithField(key, value)
+}
+
+// Adds a struct of fields to the log entry. All it does is call `WithField` for
+// each `Field`.
+func (logger *Logger) WithFields(fields Fields) *Entry {
+	entry := logger.newEntry()
+	defer logger.releaseEntry(entry)
+	return entry.WithFields(fields)
+}
+
+// Add an error as single field to the log entry.  All it does is call
+// `WithError` for the given `error`.
+func (logger *Logger) WithError(err error) *Entry {
+	entry := logger.newEntry()
+	defer logger.releaseEntry(entry)
+	return entry.WithError(err)
+}
+
+// Add a context to the log entry.
+func (logger *Logger) WithContext(ctx context.Context) *Entry {
+	entry := logger.newEntry()
+	defer logger.releaseEntry(entry)
+	return entry.WithContext(ctx)
+}
+
+// Overrides the time of the log entry.
+func (logger *Logger) WithTime(t time.Time) *Entry {
+	entry := logger.newEntry()
+	defer logger.releaseEntry(entry)
+	return entry.WithTime(t)
+}
+
+func (logger *Logger) Logf(level Level, format string, args ...interface{}) {
+	if logger.IsLevelEnabled(level) {
+		entry := logger.newEntry()
+		entry.Logf(level, format, args...)
+		logger.releaseEntry(entry)
+	}
+}
+
+func (logger *Logger) Tracef(format string, args ...interface{}) {
+	logger.Logf(TraceLevel, format, args...)
+}
+
+func (logger *Logger) Debugf(format string, args ...interface{}) {
+	logger.Logf(DebugLevel, format, args...)
+}
+
+func (logger *Logger) Infof(format string, args ...interface{}) {
+	logger.Logf(InfoLevel, format, args...)
+}
+
+func (logger *Logger) Printf(format string, args ...interface{}) {
+	entry := logger.newEntry()
+	entry.Printf(format, args...)
+	logger.releaseEntry(entry)
+}
+
+func (logger *Logger) Warnf(format string, args ...interface{}) {
+	logger.Logf(WarnLevel, format, args...)
+}
+
+func (logger *Logger) Warningf(format string, args ...interface{}) {
+	logger.Warnf(format, args...)
+}
+
+func (logger *Logger) Errorf(format string, args ...interface{}) {
+	logger.Logf(ErrorLevel, format, args...)
+}
+
+func (logger *Logger) Fatalf(format string, args ...interface{}) {
+	logger.Logf(FatalLevel, format, args...)
+	logger.Exit(1)
+}
+
+func (logger *Logger) Panicf(format string, args ...interface{}) {
+	logger.Logf(PanicLevel, format, args...)
+}
+
+// Log will log a message at the level given as parameter.
+// Warning: using Log at Panic or Fatal level will not respectively Panic nor Exit.
+// For this behaviour Logger.Panic or Logger.Fatal should be used instead.
+func (logger *Logger) Log(level Level, args ...interface{}) {
+	if logger.IsLevelEnabled(level) {
+		entry := logger.newEntry()
+		entry.Log(level, args...)
+		logger.releaseEntry(entry)
+	}
+}
+
+func (logger *Logger) LogFn(level Level, fn LogFunction) {
+	if logger.IsLevelEnabled(level) {
+		entry := logger.newEntry()
+		entry.Log(level, fn()...)
+		logger.releaseEntry(entry)
+	}
+}
+
+func (logger *Logger) Trace(args ...interface{}) {
+	logger.Log(TraceLevel, args...)
+}
+
+func (logger *Logger) Debug(args ...interface{}) {
+	logger.Log(DebugLevel, args...)
+}
+
+func (logger *Logger) Info(args ...interface{}) {
+	logger.Log(InfoLevel, args...)
+}
+
+func (logger *Logger) Print(args ...interface{}) {
+	entry := logger.newEntry()
+	entry.Print(args...)
+	logger.releaseEntry(entry)
+}
+
+func (logger *Logger) Warn(args ...interface{}) {
+	logger.Log(WarnLevel, args...)
+}
+
+func (logger *Logger) Warning(args ...interface{}) {
+	logger.Warn(args...)
+}
+
+func (logger *Logger) Error(args ...interface{}) {
+	logger.Log(ErrorLevel, args...)
+}
+
+func (logger *Logger) Fatal(args ...interface{}) {
+	logger.Log(FatalLevel, args...)
+	logger.Exit(1)
+}
+
+func (logger *Logger) Panic(args ...interface{}) {
+	logger.Log(PanicLevel, args...)
+}
+
+func (logger *Logger) TraceFn(fn LogFunction) {
+	logger.LogFn(TraceLevel, fn)
+}
+
+func (logger *Logger) DebugFn(fn LogFunction) {
+	logger.LogFn(DebugLevel, fn)
+}
+
+func (logger *Logger) InfoFn(fn LogFunction) {
+	logger.LogFn(InfoLevel, fn)
+}
+
+func (logger *Logger) PrintFn(fn LogFunction) {
+	entry := logger.newEntry()
+	entry.Print(fn()...)
+	logger.releaseEntry(entry)
+}
+
+func (logger *Logger) WarnFn(fn LogFunction) {
+	logger.LogFn(WarnLevel, fn)
+}
+
+func (logger *Logger) WarningFn(fn LogFunction) {
+	logger.WarnFn(fn)
+}
+
+func (logger *Logger) ErrorFn(fn LogFunction) {
+	logger.LogFn(ErrorLevel, fn)
+}
+
+func (logger *Logger) FatalFn(fn LogFunction) {
+	logger.LogFn(FatalLevel, fn)
+	logger.Exit(1)
+}
+
+func (logger *Logger) PanicFn(fn LogFunction) {
+	logger.LogFn(PanicLevel, fn)
+}
+
+func (logger *Logger) Logln(level Level, args ...interface{}) {
+	if logger.IsLevelEnabled(level) {
+		entry := logger.newEntry()
+		entry.Logln(level, args...)
+		logger.releaseEntry(entry)
+	}
+}
+
+func (logger *Logger) Traceln(args ...interface{}) {
+	logger.Logln(TraceLevel, args...)
+}
+
+func (logger *Logger) Debugln(args ...interface{}) {
+	logger.Logln(DebugLevel, args...)
+}
+
+func (logger *Logger) Infoln(args ...interface{}) {
+	logger.Logln(InfoLevel, args...)
+}
+
+func (logger *Logger) Println(args ...interface{}) {
+	entry := logger.newEntry()
+	entry.Println(args...)
+	logger.releaseEntry(entry)
+}
+
+func (logger *Logger) Warnln(args ...interface{}) {
+	logger.Logln(WarnLevel, args...)
+}
+
+func (logger *Logger) Warningln(args ...interface{}) {
+	logger.Warnln(args...)
+}
+
+func (logger *Logger) Errorln(args ...interface{}) {
+	logger.Logln(ErrorLevel, args...)
+}
+
+func (logger *Logger) Fatalln(args ...interface{}) {
+	logger.Logln(FatalLevel, args...)
+	logger.Exit(1)
+}
+
+func (logger *Logger) Panicln(args ...interface{}) {
+	logger.Logln(PanicLevel, args...)
+}
+
+func (logger *Logger) Exit(code int) {
+	runHandlers()
+	if logger.ExitFunc == nil {
+		logger.ExitFunc = os.Exit
+	}
+	logger.ExitFunc(code)
+}
+
+//When file is opened with appending mode, it's safe to
+//write concurrently to a file (within 4k message on Linux).
+//In these cases user can choose to disable the lock.
+func (logger *Logger) SetNoLock() {
+	logger.mu.Disable()
+}
+
+func (logger *Logger) level() Level {
+	return Level(atomic.LoadUint32((*uint32)(&logger.Level)))
+}
+
+// SetLevel sets the logger level.
+func (logger *Logger) SetLevel(level Level) {
+	atomic.StoreUint32((*uint32)(&logger.Level), uint32(level))
+}
+
+// GetLevel returns the logger level.
+func (logger *Logger) GetLevel() Level {
+	return logger.level()
+}
+
+// AddHook adds a hook to the logger hooks.
+func (logger *Logger) AddHook(hook Hook) {
+	logger.mu.Lock()
+	defer logger.mu.Unlock()
+	logger.Hooks.Add(hook)
+}
+
+// IsLevelEnabled checks if the log level of the logger is greater than the level param
+func (logger *Logger) IsLevelEnabled(level Level) bool {
+	return logger.level() >= level
+}
+
+// SetFormatter sets the logger formatter.
+func (logger *Logger) SetFormatter(formatter Formatter) {
+	logger.mu.Lock()
+	defer logger.mu.Unlock()
+	logger.Formatter = formatter
+}
+
+// SetOutput sets the logger output.
+func (logger *Logger) SetOutput(output io.Writer) {
+	logger.mu.Lock()
+	defer logger.mu.Unlock()
+	logger.Out = output
+}
+
+func (logger *Logger) SetReportCaller(reportCaller bool) {
+	logger.mu.Lock()
+	defer logger.mu.Unlock()
+	logger.ReportCaller = reportCaller
+}
+
+// ReplaceHooks replaces the logger hooks and returns the old ones
+func (logger *Logger) ReplaceHooks(hooks LevelHooks) LevelHooks {
+	logger.mu.Lock()
+	oldHooks := logger.Hooks
+	logger.Hooks = hooks
+	logger.mu.Unlock()
+	return oldHooks
+}
+
+// SetBufferPool sets the logger buffer pool.
+func (logger *Logger) SetBufferPool(pool BufferPool) {
+	logger.mu.Lock()
+	defer logger.mu.Unlock()
+	logger.BufferPool = pool
+}
diff --git a/vendor/github.com/sirupsen/logrus/logrus.go b/vendor/github.com/sirupsen/logrus/logrus.go
new file mode 100644
index 00000000..2f16224c
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/logrus.go
@@ -0,0 +1,186 @@
+package logrus
+
+import (
+	"fmt"
+	"log"
+	"strings"
+)
+
+// Fields type, used to pass to `WithFields`.
+type Fields map[string]interface{}
+
+// Level type
+type Level uint32
+
+// Convert the Level to a string. E.g. PanicLevel becomes "panic".
+func (level Level) String() string {
+	if b, err := level.MarshalText(); err == nil {
+		return string(b)
+	} else {
+		return "unknown"
+	}
+}
+
+// ParseLevel takes a string level and returns the Logrus log level constant.
+func ParseLevel(lvl string) (Level, error) {
+	switch strings.ToLower(lvl) {
+	case "panic":
+		return PanicLevel, nil
+	case "fatal":
+		return FatalLevel, nil
+	case "error":
+		return ErrorLevel, nil
+	case "warn", "warning":
+		return WarnLevel, nil
+	case "info":
+		return InfoLevel, nil
+	case "debug":
+		return DebugLevel, nil
+	case "trace":
+		return TraceLevel, nil
+	}
+
+	var l Level
+	return l, fmt.Errorf("not a valid logrus Level: %q", lvl)
+}
+
+// UnmarshalText implements encoding.TextUnmarshaler.
+func (level *Level) UnmarshalText(text []byte) error {
+	l, err := ParseLevel(string(text))
+	if err != nil {
+		return err
+	}
+
+	*level = l
+
+	return nil
+}
+
+func (level Level) MarshalText() ([]byte, error) {
+	switch level {
+	case TraceLevel:
+		return []byte("trace"), nil
+	case DebugLevel:
+		return []byte("debug"), nil
+	case InfoLevel:
+		return []byte("info"), nil
+	case WarnLevel:
+		return []byte("warning"), nil
+	case ErrorLevel:
+		return []byte("error"), nil
+	case FatalLevel:
+		return []byte("fatal"), nil
+	case PanicLevel:
+		return []byte("panic"), nil
+	}
+
+	return nil, fmt.Errorf("not a valid logrus level %d", level)
+}
+
+// A constant exposing all logging levels
+var AllLevels = []Level{
+	PanicLevel,
+	FatalLevel,
+	ErrorLevel,
+	WarnLevel,
+	InfoLevel,
+	DebugLevel,
+	TraceLevel,
+}
+
+// These are the different logging levels. You can set the logging level to log
+// on your instance of logger, obtained with `logrus.New()`.
+const (
+	// PanicLevel level, highest level of severity. Logs and then calls panic with the
+	// message passed to Debug, Info, ...
+	PanicLevel Level = iota
+	// FatalLevel level. Logs and then calls `logger.Exit(1)`. It will exit even if the
+	// logging level is set to Panic.
+	FatalLevel
+	// ErrorLevel level. Logs. Used for errors that should definitely be noted.
+	// Commonly used for hooks to send errors to an error tracking service.
+	ErrorLevel
+	// WarnLevel level. Non-critical entries that deserve eyes.
+	WarnLevel
+	// InfoLevel level. General operational entries about what's going on inside the
+	// application.
+	InfoLevel
+	// DebugLevel level. Usually only enabled when debugging. Very verbose logging.
+	DebugLevel
+	// TraceLevel level. Designates finer-grained informational events than the Debug.
+	TraceLevel
+)
+
+// Won't compile if StdLogger can't be realized by a log.Logger
+var (
+	_ StdLogger = &log.Logger{}
+	_ StdLogger = &Entry{}
+	_ StdLogger = &Logger{}
+)
+
+// StdLogger is what your logrus-enabled library should take, that way
+// it'll accept a stdlib logger and a logrus logger. There's no standard
+// interface, this is the closest we get, unfortunately.
+type StdLogger interface {
+	Print(...interface{})
+	Printf(string, ...interface{})
+	Println(...interface{})
+
+	Fatal(...interface{})
+	Fatalf(string, ...interface{})
+	Fatalln(...interface{})
+
+	Panic(...interface{})
+	Panicf(string, ...interface{})
+	Panicln(...interface{})
+}
+
+// The FieldLogger interface generalizes the Entry and Logger types
+type FieldLogger interface {
+	WithField(key string, value interface{}) *Entry
+	WithFields(fields Fields) *Entry
+	WithError(err error) *Entry
+
+	Debugf(format string, args ...interface{})
+	Infof(format string, args ...interface{})
+	Printf(format string, args ...interface{})
+	Warnf(format string, args ...interface{})
+	Warningf(format string, args ...interface{})
+	Errorf(format string, args ...interface{})
+	Fatalf(format string, args ...interface{})
+	Panicf(format string, args ...interface{})
+
+	Debug(args ...interface{})
+	Info(args ...interface{})
+	Print(args ...interface{})
+	Warn(args ...interface{})
+	Warning(args ...interface{})
+	Error(args ...interface{})
+	Fatal(args ...interface{})
+	Panic(args ...interface{})
+
+	Debugln(args ...interface{})
+	Infoln(args ...interface{})
+	Println(args ...interface{})
+	Warnln(args ...interface{})
+	Warningln(args ...interface{})
+	Errorln(args ...interface{})
+	Fatalln(args ...interface{})
+	Panicln(args ...interface{})
+
+	// IsDebugEnabled() bool
+	// IsInfoEnabled() bool
+	// IsWarnEnabled() bool
+	// IsErrorEnabled() bool
+	// IsFatalEnabled() bool
+	// IsPanicEnabled() bool
+}
+
+// Ext1FieldLogger (the first extension to FieldLogger) is superfluous, it is
+// here for consistancy. Do not use. Use Logger or Entry instead.
+type Ext1FieldLogger interface {
+	FieldLogger
+	Tracef(format string, args ...interface{})
+	Trace(args ...interface{})
+	Traceln(args ...interface{})
+}
diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_appengine.go b/vendor/github.com/sirupsen/logrus/terminal_check_appengine.go
new file mode 100644
index 00000000..2403de98
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/terminal_check_appengine.go
@@ -0,0 +1,11 @@
+// +build appengine
+
+package logrus
+
+import (
+	"io"
+)
+
+func checkIfTerminal(w io.Writer) bool {
+	return true
+}
diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_bsd.go b/vendor/github.com/sirupsen/logrus/terminal_check_bsd.go
new file mode 100644
index 00000000..49978998
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/terminal_check_bsd.go
@@ -0,0 +1,13 @@
+// +build darwin dragonfly freebsd netbsd openbsd
+// +build !js
+
+package logrus
+
+import "golang.org/x/sys/unix"
+
+const ioctlReadTermios = unix.TIOCGETA
+
+func isTerminal(fd int) bool {
+	_, err := unix.IoctlGetTermios(fd, ioctlReadTermios)
+	return err == nil
+}
diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_js.go b/vendor/github.com/sirupsen/logrus/terminal_check_js.go
new file mode 100644
index 00000000..ebdae3ec
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/terminal_check_js.go
@@ -0,0 +1,7 @@
+// +build js
+
+package logrus
+
+func isTerminal(fd int) bool {
+	return false
+}
diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_no_terminal.go b/vendor/github.com/sirupsen/logrus/terminal_check_no_terminal.go
new file mode 100644
index 00000000..97af92c6
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/terminal_check_no_terminal.go
@@ -0,0 +1,11 @@
+// +build js nacl plan9
+
+package logrus
+
+import (
+	"io"
+)
+
+func checkIfTerminal(w io.Writer) bool {
+	return false
+}
diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_notappengine.go b/vendor/github.com/sirupsen/logrus/terminal_check_notappengine.go
new file mode 100644
index 00000000..3293fb3c
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/terminal_check_notappengine.go
@@ -0,0 +1,17 @@
+// +build !appengine,!js,!windows,!nacl,!plan9
+
+package logrus
+
+import (
+	"io"
+	"os"
+)
+
+func checkIfTerminal(w io.Writer) bool {
+	switch v := w.(type) {
+	case *os.File:
+		return isTerminal(int(v.Fd()))
+	default:
+		return false
+	}
+}
diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_solaris.go b/vendor/github.com/sirupsen/logrus/terminal_check_solaris.go
new file mode 100644
index 00000000..f6710b3b
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/terminal_check_solaris.go
@@ -0,0 +1,11 @@
+package logrus
+
+import (
+	"golang.org/x/sys/unix"
+)
+
+// IsTerminal returns true if the given file descriptor is a terminal.
+func isTerminal(fd int) bool {
+	_, err := unix.IoctlGetTermio(fd, unix.TCGETA)
+	return err == nil
+}
diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_unix.go b/vendor/github.com/sirupsen/logrus/terminal_check_unix.go
new file mode 100644
index 00000000..04748b85
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/terminal_check_unix.go
@@ -0,0 +1,13 @@
+// +build linux aix zos
+// +build !js
+
+package logrus
+
+import "golang.org/x/sys/unix"
+
+const ioctlReadTermios = unix.TCGETS
+
+func isTerminal(fd int) bool {
+	_, err := unix.IoctlGetTermios(fd, ioctlReadTermios)
+	return err == nil
+}
diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_windows.go b/vendor/github.com/sirupsen/logrus/terminal_check_windows.go
new file mode 100644
index 00000000..2879eb50
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/terminal_check_windows.go
@@ -0,0 +1,27 @@
+// +build !appengine,!js,windows
+
+package logrus
+
+import (
+	"io"
+	"os"
+
+	"golang.org/x/sys/windows"
+)
+
+func checkIfTerminal(w io.Writer) bool {
+	switch v := w.(type) {
+	case *os.File:
+		handle := windows.Handle(v.Fd())
+		var mode uint32
+		if err := windows.GetConsoleMode(handle, &mode); err != nil {
+			return false
+		}
+		mode |= windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING
+		if err := windows.SetConsoleMode(handle, mode); err != nil {
+			return false
+		}
+		return true
+	}
+	return false
+}
diff --git a/vendor/github.com/sirupsen/logrus/text_formatter.go b/vendor/github.com/sirupsen/logrus/text_formatter.go
new file mode 100644
index 00000000..be2c6efe
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/text_formatter.go
@@ -0,0 +1,339 @@
+package logrus
+
+import (
+	"bytes"
+	"fmt"
+	"os"
+	"runtime"
+	"sort"
+	"strconv"
+	"strings"
+	"sync"
+	"time"
+	"unicode/utf8"
+)
+
+const (
+	red    = 31
+	yellow = 33
+	blue   = 36
+	gray   = 37
+)
+
+var baseTimestamp time.Time
+
+func init() {
+	baseTimestamp = time.Now()
+}
+
+// TextFormatter formats logs into text
+type TextFormatter struct {
+	// Set to true to bypass checking for a TTY before outputting colors.
+	ForceColors bool
+
+	// Force disabling colors.
+	DisableColors bool
+
+	// Force quoting of all values
+	ForceQuote bool
+
+	// DisableQuote disables quoting for all values.
+	// DisableQuote will have a lower priority than ForceQuote.
+	// If both of them are set to true, quote will be forced on all values.
+	DisableQuote bool
+
+	// Override coloring based on CLICOLOR and CLICOLOR_FORCE. - https://bixense.com/clicolors/
+	EnvironmentOverrideColors bool
+
+	// Disable timestamp logging. useful when output is redirected to logging
+	// system that already adds timestamps.
+	DisableTimestamp bool
+
+	// Enable logging the full timestamp when a TTY is attached instead of just
+	// the time passed since beginning of execution.
+	FullTimestamp bool
+
+	// TimestampFormat to use for display when a full timestamp is printed.
+	// The format to use is the same than for time.Format or time.Parse from the standard
+	// library.
+	// The standard Library already provides a set of predefined format.
+	TimestampFormat string
+
+	// The fields are sorted by default for a consistent output. For applications
+	// that log extremely frequently and don't use the JSON formatter this may not
+	// be desired.
+	DisableSorting bool
+
+	// The keys sorting function, when uninitialized it uses sort.Strings.
+	SortingFunc func([]string)
+
+	// Disables the truncation of the level text to 4 characters.
+	DisableLevelTruncation bool
+
+	// PadLevelText Adds padding the level text so that all the levels output at the same length
+	// PadLevelText is a superset of the DisableLevelTruncation option
+	PadLevelText bool
+
+	// QuoteEmptyFields will wrap empty fields in quotes if true
+	QuoteEmptyFields bool
+
+	// Whether the logger's out is to a terminal
+	isTerminal bool
+
+	// FieldMap allows users to customize the names of keys for default fields.
+	// As an example:
+	// formatter := &TextFormatter{
+	//     FieldMap: FieldMap{
+	//         FieldKeyTime:  "@timestamp",
+	//         FieldKeyLevel: "@level",
+	//         FieldKeyMsg:   "@message"}}
+	FieldMap FieldMap
+
+	// CallerPrettyfier can be set by the user to modify the content
+	// of the function and file keys in the data when ReportCaller is
+	// activated. If any of the returned value is the empty string the
+	// corresponding key will be removed from fields.
+	CallerPrettyfier func(*runtime.Frame) (function string, file string)
+
+	terminalInitOnce sync.Once
+
+	// The max length of the level text, generated dynamically on init
+	levelTextMaxLength int
+}
+
+func (f *TextFormatter) init(entry *Entry) {
+	if entry.Logger != nil {
+		f.isTerminal = checkIfTerminal(entry.Logger.Out)
+	}
+	// Get the max length of the level text
+	for _, level := range AllLevels {
+		levelTextLength := utf8.RuneCount([]byte(level.String()))
+		if levelTextLength > f.levelTextMaxLength {
+			f.levelTextMaxLength = levelTextLength
+		}
+	}
+}
+
+func (f *TextFormatter) isColored() bool {
+	isColored := f.ForceColors || (f.isTerminal && (runtime.GOOS != "windows"))
+
+	if f.EnvironmentOverrideColors {
+		switch force, ok := os.LookupEnv("CLICOLOR_FORCE"); {
+		case ok && force != "0":
+			isColored = true
+		case ok && force == "0", os.Getenv("CLICOLOR") == "0":
+			isColored = false
+		}
+	}
+
+	return isColored && !f.DisableColors
+}
+
+// Format renders a single log entry
+func (f *TextFormatter) Format(entry *Entry) ([]byte, error) {
+	data := make(Fields)
+	for k, v := range entry.Data {
+		data[k] = v
+	}
+	prefixFieldClashes(data, f.FieldMap, entry.HasCaller())
+	keys := make([]string, 0, len(data))
+	for k := range data {
+		keys = append(keys, k)
+	}
+
+	var funcVal, fileVal string
+
+	fixedKeys := make([]string, 0, 4+len(data))
+	if !f.DisableTimestamp {
+		fixedKeys = append(fixedKeys, f.FieldMap.resolve(FieldKeyTime))
+	}
+	fixedKeys = append(fixedKeys, f.FieldMap.resolve(FieldKeyLevel))
+	if entry.Message != "" {
+		fixedKeys = append(fixedKeys, f.FieldMap.resolve(FieldKeyMsg))
+	}
+	if entry.err != "" {
+		fixedKeys = append(fixedKeys, f.FieldMap.resolve(FieldKeyLogrusError))
+	}
+	if entry.HasCaller() {
+		if f.CallerPrettyfier != nil {
+			funcVal, fileVal = f.CallerPrettyfier(entry.Caller)
+		} else {
+			funcVal = entry.Caller.Function
+			fileVal = fmt.Sprintf("%s:%d", entry.Caller.File, entry.Caller.Line)
+		}
+
+		if funcVal != "" {
+			fixedKeys = append(fixedKeys, f.FieldMap.resolve(FieldKeyFunc))
+		}
+		if fileVal != "" {
+			fixedKeys = append(fixedKeys, f.FieldMap.resolve(FieldKeyFile))
+		}
+	}
+
+	if !f.DisableSorting {
+		if f.SortingFunc == nil {
+			sort.Strings(keys)
+			fixedKeys = append(fixedKeys, keys...)
+		} else {
+			if !f.isColored() {
+				fixedKeys = append(fixedKeys, keys...)
+				f.SortingFunc(fixedKeys)
+			} else {
+				f.SortingFunc(keys)
+			}
+		}
+	} else {
+		fixedKeys = append(fixedKeys, keys...)
+	}
+
+	var b *bytes.Buffer
+	if entry.Buffer != nil {
+		b = entry.Buffer
+	} else {
+		b = &bytes.Buffer{}
+	}
+
+	f.terminalInitOnce.Do(func() { f.init(entry) })
+
+	timestampFormat := f.TimestampFormat
+	if timestampFormat == "" {
+		timestampFormat = defaultTimestampFormat
+	}
+	if f.isColored() {
+		f.printColored(b, entry, keys, data, timestampFormat)
+	} else {
+
+		for _, key := range fixedKeys {
+			var value interface{}
+			switch {
+			case key == f.FieldMap.resolve(FieldKeyTime):
+				value = entry.Time.Format(timestampFormat)
+			case key == f.FieldMap.resolve(FieldKeyLevel):
+				value = entry.Level.String()
+			case key == f.FieldMap.resolve(FieldKeyMsg):
+				value = entry.Message
+			case key == f.FieldMap.resolve(FieldKeyLogrusError):
+				value = entry.err
+			case key == f.FieldMap.resolve(FieldKeyFunc) && entry.HasCaller():
+				value = funcVal
+			case key == f.FieldMap.resolve(FieldKeyFile) && entry.HasCaller():
+				value = fileVal
+			default:
+				value = data[key]
+			}
+			f.appendKeyValue(b, key, value)
+		}
+	}
+
+	b.WriteByte('\n')
+	return b.Bytes(), nil
+}
+
+func (f *TextFormatter) printColored(b *bytes.Buffer, entry *Entry, keys []string, data Fields, timestampFormat string) {
+	var levelColor int
+	switch entry.Level {
+	case DebugLevel, TraceLevel:
+		levelColor = gray
+	case WarnLevel:
+		levelColor = yellow
+	case ErrorLevel, FatalLevel, PanicLevel:
+		levelColor = red
+	case InfoLevel:
+		levelColor = blue
+	default:
+		levelColor = blue
+	}
+
+	levelText := strings.ToUpper(entry.Level.String())
+	if !f.DisableLevelTruncation && !f.PadLevelText {
+		levelText = levelText[0:4]
+	}
+	if f.PadLevelText {
+		// Generates the format string used in the next line, for example "%-6s" or "%-7s".
+		// Based on the max level text length.
+		formatString := "%-" + strconv.Itoa(f.levelTextMaxLength) + "s"
+		// Formats the level text by appending spaces up to the max length, for example:
+		// 	- "INFO   "
+		//	- "WARNING"
+		levelText = fmt.Sprintf(formatString, levelText)
+	}
+
+	// Remove a single newline if it already exists in the message to keep
+	// the behavior of logrus text_formatter the same as the stdlib log package
+	entry.Message = strings.TrimSuffix(entry.Message, "\n")
+
+	caller := ""
+	if entry.HasCaller() {
+		funcVal := fmt.Sprintf("%s()", entry.Caller.Function)
+		fileVal := fmt.Sprintf("%s:%d", entry.Caller.File, entry.Caller.Line)
+
+		if f.CallerPrettyfier != nil {
+			funcVal, fileVal = f.CallerPrettyfier(entry.Caller)
+		}
+
+		if fileVal == "" {
+			caller = funcVal
+		} else if funcVal == "" {
+			caller = fileVal
+		} else {
+			caller = fileVal + " " + funcVal
+		}
+	}
+
+	switch {
+	case f.DisableTimestamp:
+		fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m%s %-44s ", levelColor, levelText, caller, entry.Message)
+	case !f.FullTimestamp:
+		fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%04d]%s %-44s ", levelColor, levelText, int(entry.Time.Sub(baseTimestamp)/time.Second), caller, entry.Message)
+	default:
+		fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%s]%s %-44s ", levelColor, levelText, entry.Time.Format(timestampFormat), caller, entry.Message)
+	}
+	for _, k := range keys {
+		v := data[k]
+		fmt.Fprintf(b, " \x1b[%dm%s\x1b[0m=", levelColor, k)
+		f.appendValue(b, v)
+	}
+}
+
+func (f *TextFormatter) needsQuoting(text string) bool {
+	if f.ForceQuote {
+		return true
+	}
+	if f.QuoteEmptyFields && len(text) == 0 {
+		return true
+	}
+	if f.DisableQuote {
+		return false
+	}
+	for _, ch := range text {
+		if !((ch >= 'a' && ch <= 'z') ||
+			(ch >= 'A' && ch <= 'Z') ||
+			(ch >= '0' && ch <= '9') ||
+			ch == '-' || ch == '.' || ch == '_' || ch == '/' || ch == '@' || ch == '^' || ch == '+') {
+			return true
+		}
+	}
+	return false
+}
+
+func (f *TextFormatter) appendKeyValue(b *bytes.Buffer, key string, value interface{}) {
+	if b.Len() > 0 {
+		b.WriteByte(' ')
+	}
+	b.WriteString(key)
+	b.WriteByte('=')
+	f.appendValue(b, value)
+}
+
+func (f *TextFormatter) appendValue(b *bytes.Buffer, value interface{}) {
+	stringVal, ok := value.(string)
+	if !ok {
+		stringVal = fmt.Sprint(value)
+	}
+
+	if !f.needsQuoting(stringVal) {
+		b.WriteString(stringVal)
+	} else {
+		b.WriteString(fmt.Sprintf("%q", stringVal))
+	}
+}
diff --git a/vendor/github.com/sirupsen/logrus/writer.go b/vendor/github.com/sirupsen/logrus/writer.go
new file mode 100644
index 00000000..074fd4b8
--- /dev/null
+++ b/vendor/github.com/sirupsen/logrus/writer.go
@@ -0,0 +1,102 @@
+package logrus
+
+import (
+	"bufio"
+	"io"
+	"runtime"
+	"strings"
+)
+
+// Writer at INFO level. See WriterLevel for details.
+func (logger *Logger) Writer() *io.PipeWriter {
+	return logger.WriterLevel(InfoLevel)
+}
+
+// WriterLevel returns an io.Writer that can be used to write arbitrary text to
+// the logger at the given log level. Each line written to the writer will be
+// printed in the usual way using formatters and hooks. The writer is part of an
+// io.Pipe and it is the callers responsibility to close the writer when done.
+// This can be used to override the standard library logger easily.
+func (logger *Logger) WriterLevel(level Level) *io.PipeWriter {
+	return NewEntry(logger).WriterLevel(level)
+}
+
+// Writer returns an io.Writer that writes to the logger at the info log level
+func (entry *Entry) Writer() *io.PipeWriter {
+	return entry.WriterLevel(InfoLevel)
+}
+
+// WriterLevel returns an io.Writer that writes to the logger at the given log level
+func (entry *Entry) WriterLevel(level Level) *io.PipeWriter {
+	reader, writer := io.Pipe()
+
+	var printFunc func(args ...interface{})
+
+	// Determine which log function to use based on the specified log level
+	switch level {
+	case TraceLevel:
+		printFunc = entry.Trace
+	case DebugLevel:
+		printFunc = entry.Debug
+	case InfoLevel:
+		printFunc = entry.Info
+	case WarnLevel:
+		printFunc = entry.Warn
+	case ErrorLevel:
+		printFunc = entry.Error
+	case FatalLevel:
+		printFunc = entry.Fatal
+	case PanicLevel:
+		printFunc = entry.Panic
+	default:
+		printFunc = entry.Print
+	}
+
+	// Start a new goroutine to scan the input and write it to the logger using the specified print function.
+	// It splits the input into chunks of up to 64KB to avoid buffer overflows.
+	go entry.writerScanner(reader, printFunc)
+
+	// Set a finalizer function to close the writer when it is garbage collected
+	runtime.SetFinalizer(writer, writerFinalizer)
+
+	return writer
+}
+
+// writerScanner scans the input from the reader and writes it to the logger
+func (entry *Entry) writerScanner(reader *io.PipeReader, printFunc func(args ...interface{})) {
+	scanner := bufio.NewScanner(reader)
+
+	// Set the buffer size to the maximum token size to avoid buffer overflows
+	scanner.Buffer(make([]byte, bufio.MaxScanTokenSize), bufio.MaxScanTokenSize)
+
+	// Define a split function to split the input into chunks of up to 64KB
+	chunkSize := bufio.MaxScanTokenSize // 64KB
+	splitFunc := func(data []byte, atEOF bool) (int, []byte, error) {
+		if len(data) >= chunkSize {
+			return chunkSize, data[:chunkSize], nil
+		}
+
+		return bufio.ScanLines(data, atEOF)
+	}
+
+	// Use the custom split function to split the input
+	scanner.Split(splitFunc)
+
+	// Scan the input and write it to the logger using the specified print function
+	for scanner.Scan() {
+		printFunc(strings.TrimRight(scanner.Text(), "\r\n"))
+	}
+
+	// If there was an error while scanning the input, log an error
+	if err := scanner.Err(); err != nil {
+		entry.Errorf("Error while reading from Writer: %s", err)
+	}
+
+	// Close the reader when we are done
+	reader.Close()
+}
+
+// WriterFinalizer is a finalizer function that closes then given writer when it is garbage collected
+func writerFinalizer(writer *io.PipeWriter) {
+	writer.Close()
+}
diff --git a/vendor/golang.org/x/net/LICENSE b/vendor/golang.org/x/net/LICENSE
index 6a66aea5..2a7cf70d 100644
--- a/vendor/golang.org/x/net/LICENSE
+++ b/vendor/golang.org/x/net/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2009 The Go Authors. All rights reserved.
+Copyright 2009 The Go Authors.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
@@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer.
 copyright notice, this list of conditions and the following disclaimer
 in the documentation and/or other materials provided with the
 distribution.
-   * Neither the name of Google Inc. nor the names of its
+   * Neither the name of Google LLC nor the names of its
 contributors may be used to endorse or promote products derived from
 this software without specific prior written permission.
 
diff --git a/vendor/golang.org/x/net/internal/socks/client.go b/vendor/golang.org/x/net/internal/socks/client.go
new file mode 100644
index 00000000..3d6f516a
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socks/client.go
@@ -0,0 +1,168 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socks
+
+import (
+	"context"
+	"errors"
+	"io"
+	"net"
+	"strconv"
+	"time"
+)
+
+var (
+	noDeadline   = time.Time{}
+	aLongTimeAgo = time.Unix(1, 0)
+)
+
+func (d *Dialer) connect(ctx context.Context, c net.Conn, address string) (_ net.Addr, ctxErr error) {
+	host, port, err := splitHostPort(address)
+	if err != nil {
+		return nil, err
+	}
+	if deadline, ok := ctx.Deadline(); ok && !deadline.IsZero() {
+		c.SetDeadline(deadline)
+		defer c.SetDeadline(noDeadline)
+	}
+	if ctx != context.Background() {
+		errCh := make(chan error, 1)
+		done := make(chan struct{})
+		defer func() {
+			close(done)
+			if ctxErr == nil {
+				ctxErr = <-errCh
+			}
+		}()
+		go func() {
+			select {
+			case <-ctx.Done():
+				c.SetDeadline(aLongTimeAgo)
+				errCh <- ctx.Err()
+			case <-done:
+				errCh <- nil
+			}
+		}()
+	}
+
+	b := make([]byte, 0, 6+len(host)) // the size here is just an estimate
+	b = append(b, Version5)
+	if len(d.AuthMethods) == 0 || d.Authenticate == nil {
+		b = append(b, 1, byte(AuthMethodNotRequired))
+	} else {
+		ams := d.AuthMethods
+		if len(ams) > 255 {
+			return nil, errors.New("too many authentication methods")
+		}
+		b = append(b, byte(len(ams)))
+		for _, am := range ams {
+			b = append(b, byte(am))
+		}
+	}
+	if _, ctxErr = c.Write(b); ctxErr != nil {
+		return
+	}
+
+	if _, ctxErr = io.ReadFull(c, b[:2]); ctxErr != nil {
+		return
+	}
+	if b[0] != Version5 {
+		return nil, errors.New("unexpected protocol version " + strconv.Itoa(int(b[0])))
+	}
+	am := AuthMethod(b[1])
+	if am == AuthMethodNoAcceptableMethods {
+		return nil, errors.New("no acceptable authentication methods")
+	}
+	if d.Authenticate != nil {
+		if ctxErr = d.Authenticate(ctx, c, am); ctxErr != nil {
+			return
+		}
+	}
+
+	b = b[:0]
+	b = append(b, Version5, byte(d.cmd), 0)
+	if ip := net.ParseIP(host); ip != nil {
+		if ip4 := ip.To4(); ip4 != nil {
+			b = append(b, AddrTypeIPv4)
+			b = append(b, ip4...)
+		} else if ip6 := ip.To16(); ip6 != nil {
+			b = append(b, AddrTypeIPv6)
+			b = append(b, ip6...)
+		} else {
+			return nil, errors.New("unknown address type")
+		}
+	} else {
+		if len(host) > 255 {
+			return nil, errors.New("FQDN too long")
+		}
+		b = append(b, AddrTypeFQDN)
+		b = append(b, byte(len(host)))
+		b = append(b, host...)
+	}
+	b = append(b, byte(port>>8), byte(port))
+	if _, ctxErr = c.Write(b); ctxErr != nil {
+		return
+	}
+
+	if _, ctxErr = io.ReadFull(c, b[:4]); ctxErr != nil {
+		return
+	}
+	if b[0] != Version5 {
+		return nil, errors.New("unexpected protocol version " + strconv.Itoa(int(b[0])))
+	}
+	if cmdErr := Reply(b[1]); cmdErr != StatusSucceeded {
+		return nil, errors.New("unknown error " + cmdErr.String())
+	}
+	if b[2] != 0 {
+		return nil, errors.New("non-zero reserved field")
+	}
+	l := 2
+	var a Addr
+	switch b[3] {
+	case AddrTypeIPv4:
+		l += net.IPv4len
+		a.IP = make(net.IP, net.IPv4len)
+	case AddrTypeIPv6:
+		l += net.IPv6len
+		a.IP = make(net.IP, net.IPv6len)
+	case AddrTypeFQDN:
+		if _, err := io.ReadFull(c, b[:1]); err != nil {
+			return nil, err
+		}
+		l += int(b[0])
+	default:
+		return nil, errors.New("unknown address type " + strconv.Itoa(int(b[3])))
+	}
+	if cap(b) < l {
+		b = make([]byte, l)
+	} else {
+		b = b[:l]
+	}
+	if _, ctxErr = io.ReadFull(c, b); ctxErr != nil {
+		return
+	}
+	if a.IP != nil {
+		copy(a.IP, b)
+	} else {
+		a.Name = string(b[:len(b)-2])
+	}
+	a.Port = int(b[len(b)-2])<<8 | int(b[len(b)-1])
+	return &a, nil
+}
+
+func splitHostPort(address string) (string, int, error) {
+	host, port, err := net.SplitHostPort(address)
+	if err != nil {
+		return "", 0, err
+	}
+	portnum, err := strconv.Atoi(port)
+	if err != nil {
+		return "", 0, err
+	}
+	if 1 > portnum || portnum > 0xffff {
+		return "", 0, errors.New("port number out of range " + port)
+	}
+	return host, portnum, nil
+}
diff --git a/vendor/golang.org/x/net/internal/socks/socks.go b/vendor/golang.org/x/net/internal/socks/socks.go
new file mode 100644
index 00000000..84fcc32b
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socks/socks.go
@@ -0,0 +1,317 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package socks provides a SOCKS version 5 client implementation.
+//
+// SOCKS protocol version 5 is defined in RFC 1928.
+// Username/Password authentication for SOCKS version 5 is defined in
+// RFC 1929.
+package socks
+
+import (
+	"context"
+	"errors"
+	"io"
+	"net"
+	"strconv"
+)
+
+// A Command represents a SOCKS command.
+type Command int
+
+func (cmd Command) String() string {
+	switch cmd {
+	case CmdConnect:
+		return "socks connect"
+	case cmdBind:
+		return "socks bind"
+	default:
+		return "socks " + strconv.Itoa(int(cmd))
+	}
+}
+
+// An AuthMethod represents a SOCKS authentication method.
+type AuthMethod int
+
+// A Reply represents a SOCKS command reply code.
+type Reply int
+
+func (code Reply) String() string {
+	switch code {
+	case StatusSucceeded:
+		return "succeeded"
+	case 0x01:
+		return "general SOCKS server failure"
+	case 0x02:
+		return "connection not allowed by ruleset"
+	case 0x03:
+		return "network unreachable"
+	case 0x04:
+		return "host unreachable"
+	case 0x05:
+		return "connection refused"
+	case 0x06:
+		return "TTL expired"
+	case 0x07:
+		return "command not supported"
+	case 0x08:
+		return "address type not supported"
+	default:
+		return "unknown code: " + strconv.Itoa(int(code))
+	}
+}
+
+// Wire protocol constants.
+const (
+	Version5 = 0x05
+
+	AddrTypeIPv4 = 0x01
+	AddrTypeFQDN = 0x03
+	AddrTypeIPv6 = 0x04
+
+	CmdConnect Command = 0x01 // establishes an active-open forward proxy connection
+	cmdBind    Command = 0x02 // establishes a passive-open forward proxy connection
+
+	AuthMethodNotRequired         AuthMethod = 0x00 // no authentication required
+	AuthMethodUsernamePassword    AuthMethod = 0x02 // use username/password
+	AuthMethodNoAcceptableMethods AuthMethod = 0xff // no acceptable authentication methods
+
+	StatusSucceeded Reply = 0x00
+)
+
+// An Addr represents a SOCKS-specific address.
+// Either Name or IP is used exclusively.
+type Addr struct {
+	Name string // fully-qualified domain name
+	IP   net.IP
+	Port int
+}
+
+func (a *Addr) Network() string { return "socks" }
+
+func (a *Addr) String() string {
+	if a == nil {
+		return "<nil>"
+	}
+	port := strconv.Itoa(a.Port)
+	if a.IP == nil {
+		return net.JoinHostPort(a.Name, port)
+	}
+	return net.JoinHostPort(a.IP.String(), port)
+}
+
+// A Conn represents a forward proxy connection.
+type Conn struct {
+	net.Conn
+
+	boundAddr net.Addr
+}
+
+// BoundAddr returns the address assigned by the proxy server for
+// connecting to the command target address from the proxy server.
+func (c *Conn) BoundAddr() net.Addr {
+	if c == nil {
+		return nil
+	}
+	return c.boundAddr
+}
+
+// A Dialer holds SOCKS-specific options.
+type Dialer struct {
+	cmd          Command // either CmdConnect or cmdBind
+	proxyNetwork string  // network between a proxy server and a client
+	proxyAddress string  // proxy server address
+
+	// ProxyDial specifies the optional dial function for
+	// establishing the transport connection.
+	ProxyDial func(context.Context, string, string) (net.Conn, error)
+
+	// AuthMethods specifies the list of request authentication
+	// methods.
+	// If empty, SOCKS client requests only AuthMethodNotRequired.
+	AuthMethods []AuthMethod
+
+	// Authenticate specifies the optional authentication
+	// function. It must be non-nil when AuthMethods is not empty.
+	// It must return an error when the authentication is failed.
+	Authenticate func(context.Context, io.ReadWriter, AuthMethod) error
+}
+
+// DialContext connects to the provided address on the provided
+// network.
+//
+// The returned error value may be a net.OpError. When the Op field of
+// net.OpError contains "socks", the Source field contains a proxy
+// server address and the Addr field contains a command target
+// address.
+//
+// See func Dial of the net package of standard library for a
+// description of the network and address parameters.
+func (d *Dialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
+	if err := d.validateTarget(network, address); err != nil {
+		proxy, dst, _ := d.pathAddrs(address)
+		return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err}
+	}
+	if ctx == nil {
+		proxy, dst, _ := d.pathAddrs(address)
+		return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: errors.New("nil context")}
+	}
+	var err error
+	var c net.Conn
+	if d.ProxyDial != nil {
+		c, err = d.ProxyDial(ctx, d.proxyNetwork, d.proxyAddress)
+	} else {
+		var dd net.Dialer
+		c, err = dd.DialContext(ctx, d.proxyNetwork, d.proxyAddress)
+	}
+	if err != nil {
+		proxy, dst, _ := d.pathAddrs(address)
+		return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err}
+	}
+	a, err := d.connect(ctx, c, address)
+	if err != nil {
+		c.Close()
+		proxy, dst, _ := d.pathAddrs(address)
+		return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err}
+	}
+	return &Conn{Conn: c, boundAddr: a}, nil
+}
+
+// DialWithConn initiates a connection from SOCKS server to the target
+// network and address using the connection c that is already
+// connected to the SOCKS server.
+//
+// It returns the connection's local address assigned by the SOCKS
+// server.
+func (d *Dialer) DialWithConn(ctx context.Context, c net.Conn, network, address string) (net.Addr, error) {
+	if err := d.validateTarget(network, address); err != nil {
+		proxy, dst, _ := d.pathAddrs(address)
+		return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err}
+	}
+	if ctx == nil {
+		proxy, dst, _ := d.pathAddrs(address)
+		return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: errors.New("nil context")}
+	}
+	a, err := d.connect(ctx, c, address)
+	if err != nil {
+		proxy, dst, _ := d.pathAddrs(address)
+		return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err}
+	}
+	return a, nil
+}
+
+// Dial connects to the provided address on the provided network.
+//
+// Unlike DialContext, it returns a raw transport connection instead
+// of a forward proxy connection.
+//
+// Deprecated: Use DialContext or DialWithConn instead.
+func (d *Dialer) Dial(network, address string) (net.Conn, error) {
+	if err := d.validateTarget(network, address); err != nil {
+		proxy, dst, _ := d.pathAddrs(address)
+		return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err}
+	}
+	var err error
+	var c net.Conn
+	if d.ProxyDial != nil {
+		c, err = d.ProxyDial(context.Background(), d.proxyNetwork, d.proxyAddress)
+	} else {
+		c, err = net.Dial(d.proxyNetwork, d.proxyAddress)
+	}
+	if err != nil {
+		proxy, dst, _ := d.pathAddrs(address)
+		return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err}
+	}
+	if _, err := d.DialWithConn(context.Background(), c, network, address); err != nil {
+		c.Close()
+		return nil, err
+	}
+	return c, nil
+}
+
+func (d *Dialer) validateTarget(network, address string) error {
+	switch network {
+	case "tcp", "tcp6", "tcp4":
+	default:
+		return errors.New("network not implemented")
+	}
+	switch d.cmd {
+	case CmdConnect, cmdBind:
+	default:
+		return errors.New("command not implemented")
+	}
+	return nil
+}
+
+func (d *Dialer) pathAddrs(address string) (proxy, dst net.Addr, err error) {
+	for i, s := range []string{d.proxyAddress, address} {
+		host, port, err := splitHostPort(s)
+		if err != nil {
+			return nil, nil, err
+		}
+		a := &Addr{Port: port}
+		a.IP = net.ParseIP(host)
+		if a.IP == nil {
+			a.Name = host
+		}
+		if i == 0 {
+			proxy = a
+		} else {
+			dst = a
+		}
+	}
+	return
+}
+
+// NewDialer returns a new Dialer that dials through the provided
+// proxy server's network and address.
+func NewDialer(network, address string) *Dialer {
+	return &Dialer{proxyNetwork: network, proxyAddress: address, cmd: CmdConnect}
+}
+
+const (
+	authUsernamePasswordVersion = 0x01
+	authStatusSucceeded         = 0x00
+)
+
+// UsernamePassword are the credentials for the username/password
+// authentication method.
+type UsernamePassword struct {
+	Username string
+	Password string
+}
+
+// Authenticate authenticates a pair of username and password with the
+// proxy server.
+func (up *UsernamePassword) Authenticate(ctx context.Context, rw io.ReadWriter, auth AuthMethod) error {
+	switch auth {
+	case AuthMethodNotRequired:
+		return nil
+	case AuthMethodUsernamePassword:
+		if len(up.Username) == 0 || len(up.Username) > 255 || len(up.Password) > 255 {
+			return errors.New("invalid username/password")
+		}
+		b := []byte{authUsernamePasswordVersion}
+		b = append(b, byte(len(up.Username)))
+		b = append(b, up.Username...)
+		b = append(b, byte(len(up.Password)))
+		b = append(b, up.Password...)
+		// TODO(mikio): handle IO deadlines and cancelation if
+		// necessary
+		if _, err := rw.Write(b); err != nil {
+			return err
+		}
+		if _, err := io.ReadFull(rw, b[:2]); err != nil {
+			return err
+		}
+		if b[0] != authUsernamePasswordVersion {
+			return errors.New("invalid username/password version")
+		}
+		if b[1] != authStatusSucceeded {
+			return errors.New("username/password authentication failed")
+		}
+		return nil
+	}
+	return errors.New("unsupported authentication method " + strconv.Itoa(int(auth)))
+}
diff --git a/vendor/golang.org/x/net/proxy/dial.go b/vendor/golang.org/x/net/proxy/dial.go
new file mode 100644
index 00000000..811c2e4e
--- /dev/null
+++ b/vendor/golang.org/x/net/proxy/dial.go
@@ -0,0 +1,54 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package proxy
+
+import (
+	"context"
+	"net"
+)
+
+// A ContextDialer dials using a context.
+type ContextDialer interface {
+	DialContext(ctx context.Context, network, address string) (net.Conn, error)
+}
+
+// Dial works like DialContext on net.Dialer but using a dialer returned by FromEnvironment.
+//
+// The passed ctx is only used for returning the Conn, not the lifetime of the Conn.
+//
+// Custom dialers (registered via RegisterDialerType) that do not implement ContextDialer
+// can leak a goroutine for as long as it takes the underlying Dialer implementation to timeout.
+//
+// A Conn returned from a successful Dial after the context has been cancelled will be immediately closed.
+func Dial(ctx context.Context, network, address string) (net.Conn, error) {
+	d := FromEnvironment()
+	if xd, ok := d.(ContextDialer); ok {
+		return xd.DialContext(ctx, network, address)
+	}
+	return dialContext(ctx, d, network, address)
+}
+
+// WARNING: this can leak a goroutine for as long as the underlying Dialer implementation takes to timeout
+// A Conn returned from a successful Dial after the context has been cancelled will be immediately closed.
+func dialContext(ctx context.Context, d Dialer, network, address string) (net.Conn, error) {
+	var (
+		conn net.Conn
+		done = make(chan struct{}, 1)
+		err  error
+	)
+	go func() {
+		conn, err = d.Dial(network, address)
+		close(done)
+		if conn != nil && ctx.Err() != nil {
+			conn.Close()
+		}
+	}()
+	select {
+	case <-ctx.Done():
+		err = ctx.Err()
+	case <-done:
+	}
+	return conn, err
+}
diff --git a/vendor/golang.org/x/net/proxy/direct.go b/vendor/golang.org/x/net/proxy/direct.go
new file mode 100644
index 00000000..3d66bdef
--- /dev/null
+++ b/vendor/golang.org/x/net/proxy/direct.go
@@ -0,0 +1,31 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package proxy
+
+import (
+	"context"
+	"net"
+)
+
+type direct struct{}
+
+// Direct implements Dialer by making network connections directly using net.Dial or net.DialContext.
+var Direct = direct{}
+
+var (
+	_ Dialer        = Direct
+	_ ContextDialer = Direct
+)
+
+// Dial directly invokes net.Dial with the supplied parameters.
+func (direct) Dial(network, addr string) (net.Conn, error) {
+	return net.Dial(network, addr)
+}
+
+// DialContext instantiates a net.Dialer and invokes its DialContext receiver with the supplied parameters.
+func (direct) DialContext(ctx context.Context, network, addr string) (net.Conn, error) {
+	var d net.Dialer
+	return d.DialContext(ctx, network, addr)
+}
diff --git a/vendor/golang.org/x/net/proxy/per_host.go b/vendor/golang.org/x/net/proxy/per_host.go
new file mode 100644
index 00000000..d7d4b8b6
--- /dev/null
+++ b/vendor/golang.org/x/net/proxy/per_host.go
@@ -0,0 +1,151 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package proxy
+
+import (
+	"context"
+	"net"
+	"strings"
+)
+
+// A PerHost directs connections to a default Dialer unless the host name
+// requested matches one of a number of exceptions.
+type PerHost struct {
+	def, bypass Dialer
+
+	bypassNetworks []*net.IPNet
+	bypassIPs      []net.IP
+	bypassZones    []string
+	bypassHosts    []string
+}
+
+// NewPerHost returns a PerHost Dialer that directs connections to either
+// defaultDialer or bypass, depending on whether the connection matches one of
+// the configured rules.
+func NewPerHost(defaultDialer, bypass Dialer) *PerHost {
+	return &PerHost{
+		def:    defaultDialer,
+		bypass: bypass,
+	}
+}
+
+// Dial connects to the address addr on the given network through either
+// defaultDialer or bypass.
+func (p *PerHost) Dial(network, addr string) (c net.Conn, err error) {
+	host, _, err := net.SplitHostPort(addr)
+	if err != nil {
+		return nil, err
+	}
+
+	return p.dialerForRequest(host).Dial(network, addr)
+}
+
+// DialContext connects to the address addr on the given network through either
+// defaultDialer or bypass.
+func (p *PerHost) DialContext(ctx context.Context, network, addr string) (c net.Conn, err error) {
+	host, _, err := net.SplitHostPort(addr)
+	if err != nil {
+		return nil, err
+	}
+	d := p.dialerForRequest(host)
+	if x, ok := d.(ContextDialer); ok {
+		return x.DialContext(ctx, network, addr)
+	}
+	return dialContext(ctx, d, network, addr)
+}
+
+func (p *PerHost) dialerForRequest(host string) Dialer {
+	if ip := net.ParseIP(host); ip != nil {
+		for _, net := range p.bypassNetworks {
+			if net.Contains(ip) {
+				return p.bypass
+			}
+		}
+		for _, bypassIP := range p.bypassIPs {
+			if bypassIP.Equal(ip) {
+				return p.bypass
+			}
+		}
+		return p.def
+	}
+
+	for _, zone := range p.bypassZones {
+		if strings.HasSuffix(host, zone) {
+			return p.bypass
+		}
+		if host == zone[1:] {
+			// For a zone ".example.com", we match "example.com"
+			// too.
+			return p.bypass
+		}
+	}
+	for _, bypassHost := range p.bypassHosts {
+		if bypassHost == host {
+			return p.bypass
+		}
+	}
+	return p.def
+}
+
+// AddFromString parses a string that contains comma-separated values
+// specifying hosts that should use the bypass proxy. Each value is either an
+// IP address, a CIDR range, a zone (*.example.com) or a host name
+// (localhost). A best effort is made to parse the string and errors are
+// ignored.
+func (p *PerHost) AddFromString(s string) {
+	hosts := strings.Split(s, ",")
+	for _, host := range hosts {
+		host = strings.TrimSpace(host)
+		if len(host) == 0 {
+			continue
+		}
+		if strings.Contains(host, "/") {
+			// We assume that it's a CIDR address like 127.0.0.0/8
+			if _, net, err := net.ParseCIDR(host); err == nil {
+				p.AddNetwork(net)
+			}
+			continue
+		}
+		if ip := net.ParseIP(host); ip != nil {
+			p.AddIP(ip)
+			continue
+		}
+		if strings.HasPrefix(host, "*.") {
+			p.AddZone(host[1:])
+			continue
+		}
+		p.AddHost(host)
+	}
+}
+
+// AddIP specifies an IP address that will use the bypass proxy. Note that
+// this will only take effect if a literal IP address is dialed. A connection
+// to a named host will never match an IP.
+func (p *PerHost) AddIP(ip net.IP) {
+	p.bypassIPs = append(p.bypassIPs, ip)
+}
+
+// AddNetwork specifies an IP range that will use the bypass proxy. Note that
+// this will only take effect if a literal IP address is dialed. A connection
+// to a named host will never match.
+func (p *PerHost) AddNetwork(net *net.IPNet) {
+	p.bypassNetworks = append(p.bypassNetworks, net)
+}
+
+// AddZone specifies a DNS suffix that will use the bypass proxy. A zone of
+// "example.com" matches "example.com" and all of its subdomains.
+func (p *PerHost) AddZone(zone string) {
+	zone = strings.TrimSuffix(zone, ".")
+	if !strings.HasPrefix(zone, ".") {
+		zone = "." + zone
+	}
+	p.bypassZones = append(p.bypassZones, zone)
+}
+
+// AddHost specifies a host name that will use the bypass proxy.
+func (p *PerHost) AddHost(host string) {
+	host = strings.TrimSuffix(host, ".")
+	p.bypassHosts = append(p.bypassHosts, host)
+}
diff --git a/vendor/golang.org/x/net/proxy/proxy.go b/vendor/golang.org/x/net/proxy/proxy.go
new file mode 100644
index 00000000..9ff4b9a7
--- /dev/null
+++ b/vendor/golang.org/x/net/proxy/proxy.go
@@ -0,0 +1,149 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package proxy provides support for a variety of protocols to proxy network
+// data.
+package proxy // import "golang.org/x/net/proxy"
+
+import (
+	"errors"
+	"net"
+	"net/url"
+	"os"
+	"sync"
+)
+
+// A Dialer is a means to establish a connection.
+// Custom dialers should also implement ContextDialer.
+type Dialer interface {
+	// Dial connects to the given address via the proxy.
+	Dial(network, addr string) (c net.Conn, err error)
+}
+
+// Auth contains authentication parameters that specific Dialers may require.
+type Auth struct {
+	User, Password string
+}
+
+// FromEnvironment returns the dialer specified by the proxy-related
+// variables in the environment and makes underlying connections
+// directly.
+func FromEnvironment() Dialer {
+	return FromEnvironmentUsing(Direct)
+}
+
+// FromEnvironmentUsing returns the dialer specify by the proxy-related
+// variables in the environment and makes underlying connections
+// using the provided forwarding Dialer (for instance, a *net.Dialer
+// with desired configuration).
+func FromEnvironmentUsing(forward Dialer) Dialer {
+	allProxy := allProxyEnv.Get()
+	if len(allProxy) == 0 {
+		return forward
+	}
+
+	proxyURL, err := url.Parse(allProxy)
+	if err != nil {
+		return forward
+	}
+	proxy, err := FromURL(proxyURL, forward)
+	if err != nil {
+		return forward
+	}
+
+	noProxy := noProxyEnv.Get()
+	if len(noProxy) == 0 {
+		return proxy
+	}
+
+	perHost := NewPerHost(proxy, forward)
+	perHost.AddFromString(noProxy)
+	return perHost
+}
+
+// proxySchemes is a map from URL schemes to a function that creates a Dialer
+// from a URL with such a scheme.
+var proxySchemes map[string]func(*url.URL, Dialer) (Dialer, error)
+
+// RegisterDialerType takes a URL scheme and a function to generate Dialers from
+// a URL with that scheme and a forwarding Dialer. Registered schemes are used
+// by FromURL.
+func RegisterDialerType(scheme string, f func(*url.URL, Dialer) (Dialer, error)) {
+	if proxySchemes == nil {
+		proxySchemes = make(map[string]func(*url.URL, Dialer) (Dialer, error))
+	}
+	proxySchemes[scheme] = f
+}
+
+// FromURL returns a Dialer given a URL specification and an underlying
+// Dialer for it to make network requests.
+func FromURL(u *url.URL, forward Dialer) (Dialer, error) {
+	var auth *Auth
+	if u.User != nil {
+		auth = new(Auth)
+		auth.User = u.User.Username()
+		if p, ok := u.User.Password(); ok {
+			auth.Password = p
+		}
+	}
+
+	switch u.Scheme {
+	case "socks5", "socks5h":
+		addr := u.Hostname()
+		port := u.Port()
+		if port == "" {
+			port = "1080"
+		}
+		return SOCKS5("tcp", net.JoinHostPort(addr, port), auth, forward)
+	}
+
+	// If the scheme doesn't match any of the built-in schemes, see if it
+	// was registered by another package.
+	if proxySchemes != nil {
+		if f, ok := proxySchemes[u.Scheme]; ok {
+			return f(u, forward)
+		}
+	}
+
+	return nil, errors.New("proxy: unknown scheme: " + u.Scheme)
+}
+
+var (
+	allProxyEnv = &envOnce{
+		names: []string{"ALL_PROXY", "all_proxy"},
+	}
+	noProxyEnv = &envOnce{
+		names: []string{"NO_PROXY", "no_proxy"},
+	}
+)
+
+// envOnce looks up an environment variable (optionally by multiple
+// names) once. It mitigates expensive lookups on some platforms
+// (e.g. Windows).
+// (Borrowed from net/http/transport.go)
+type envOnce struct {
+	names []string
+	once  sync.Once
+	val   string
+}
+
+func (e *envOnce) Get() string {
+	e.once.Do(e.init)
+	return e.val
+}
+
+func (e *envOnce) init() {
+	for _, n := range e.names {
+		e.val = os.Getenv(n)
+		if e.val != "" {
+			return
+		}
+	}
+}
+
+// reset is used by tests
+func (e *envOnce) reset() {
+	e.once = sync.Once{}
+	e.val = ""
+}
diff --git a/vendor/golang.org/x/net/proxy/socks5.go b/vendor/golang.org/x/net/proxy/socks5.go
new file mode 100644
index 00000000..c91651f9
--- /dev/null
+++ b/vendor/golang.org/x/net/proxy/socks5.go
@@ -0,0 +1,42 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package proxy
+
+import (
+	"context"
+	"net"
+
+	"golang.org/x/net/internal/socks"
+)
+
+// SOCKS5 returns a Dialer that makes SOCKSv5 connections to the given
+// address with an optional username and password.
+// See RFC 1928 and RFC 1929.
+func SOCKS5(network, address string, auth *Auth, forward Dialer) (Dialer, error) {
+	d := socks.NewDialer(network, address)
+	if forward != nil {
+		if f, ok := forward.(ContextDialer); ok {
+			d.ProxyDial = func(ctx context.Context, network string, address string) (net.Conn, error) {
+				return f.DialContext(ctx, network, address)
+			}
+		} else {
+			d.ProxyDial = func(ctx context.Context, network string, address string) (net.Conn, error) {
+				return dialContext(ctx, forward, network, address)
+			}
+		}
+	}
+	if auth != nil {
+		up := socks.UsernamePassword{
+			Username: auth.User,
+			Password: auth.Password,
+		}
+		d.AuthMethods = []socks.AuthMethod{
+			socks.AuthMethodNotRequired,
+			socks.AuthMethodUsernamePassword,
+		}
+		d.Authenticate = up.Authenticate
+	}
+	return d, nil
+}
diff --git a/vendor/golang.org/x/oauth2/LICENSE b/vendor/golang.org/x/oauth2/LICENSE
index 6a66aea5..2a7cf70d 100644
--- a/vendor/golang.org/x/oauth2/LICENSE
+++ b/vendor/golang.org/x/oauth2/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2009 The Go Authors. All rights reserved.
+Copyright 2009 The Go Authors.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
@@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer.
 copyright notice, this list of conditions and the following disclaimer
 in the documentation and/or other materials provided with the
 distribution.
-   * Neither the name of Google Inc. nor the names of its
+   * Neither the name of Google LLC nor the names of its
 contributors may be used to endorse or promote products derived from
 this software without specific prior written permission.
 
diff --git a/vendor/golang.org/x/sys/LICENSE b/vendor/golang.org/x/sys/LICENSE
index 6a66aea5..2a7cf70d 100644
--- a/vendor/golang.org/x/sys/LICENSE
+++ b/vendor/golang.org/x/sys/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2009 The Go Authors. All rights reserved.
+Copyright 2009 The Go Authors.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
@@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer.
 copyright notice, this list of conditions and the following disclaimer
 in the documentation and/or other materials provided with the
 distribution.
-   * Neither the name of Google Inc. nor the names of its
+   * Neither the name of Google LLC nor the names of its
 contributors may be used to endorse or promote products derived from
 this software without specific prior written permission.
 
diff --git a/vendor/golang.org/x/sys/unix/README.md b/vendor/golang.org/x/sys/unix/README.md
index 7d3c060e..6e08a76a 100644
--- a/vendor/golang.org/x/sys/unix/README.md
+++ b/vendor/golang.org/x/sys/unix/README.md
@@ -156,7 +156,7 @@ from the generated architecture-specific files listed below, and merge these
 into a common file for each OS.
 
 The merge is performed in the following steps:
-1. Construct the set of common code that is idential in all architecture-specific files.
+1. Construct the set of common code that is identical in all architecture-specific files.
 2. Write this common code to the merged file.
 3. Remove the common code from all architecture-specific files.
 
diff --git a/vendor/golang.org/x/sys/unix/ioctl_linux.go b/vendor/golang.org/x/sys/unix/ioctl_linux.go
index dbe680ea..7ca4fa12 100644
--- a/vendor/golang.org/x/sys/unix/ioctl_linux.go
+++ b/vendor/golang.org/x/sys/unix/ioctl_linux.go
@@ -58,6 +58,102 @@ func IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) {
 	return &value, err
 }
 
+// IoctlGetEthtoolTsInfo fetches ethtool timestamping and PHC
+// association for the network device specified by ifname.
+func IoctlGetEthtoolTsInfo(fd int, ifname string) (*EthtoolTsInfo, error) {
+	ifr, err := NewIfreq(ifname)
+	if err != nil {
+		return nil, err
+	}
+
+	value := EthtoolTsInfo{Cmd: ETHTOOL_GET_TS_INFO}
+	ifrd := ifr.withData(unsafe.Pointer(&value))
+
+	err = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd)
+	return &value, err
+}
+
+// IoctlGetHwTstamp retrieves the hardware timestamping configuration
+// for the network device specified by ifname.
+func IoctlGetHwTstamp(fd int, ifname string) (*HwTstampConfig, error) {
+	ifr, err := NewIfreq(ifname)
+	if err != nil {
+		return nil, err
+	}
+
+	value := HwTstampConfig{}
+	ifrd := ifr.withData(unsafe.Pointer(&value))
+
+	err = ioctlIfreqData(fd, SIOCGHWTSTAMP, &ifrd)
+	return &value, err
+}
+
+// IoctlSetHwTstamp updates the hardware timestamping configuration for
+// the network device specified by ifname.
+func IoctlSetHwTstamp(fd int, ifname string, cfg *HwTstampConfig) error {
+	ifr, err := NewIfreq(ifname)
+	if err != nil {
+		return err
+	}
+	ifrd := ifr.withData(unsafe.Pointer(cfg))
+	return ioctlIfreqData(fd, SIOCSHWTSTAMP, &ifrd)
+}
+
+// FdToClockID derives the clock ID from the file descriptor number
+// - see clock_gettime(3), FD_TO_CLOCKID macros. The resulting ID is
+// suitable for system calls like ClockGettime.
+func FdToClockID(fd int) int32 { return int32((int(^fd) << 3) | 3) }
+
+// IoctlPtpClockGetcaps returns the description of a given PTP device.
+func IoctlPtpClockGetcaps(fd int) (*PtpClockCaps, error) {
+	var value PtpClockCaps
+	err := ioctlPtr(fd, PTP_CLOCK_GETCAPS2, unsafe.Pointer(&value))
+	return &value, err
+}
+
+// IoctlPtpSysOffsetPrecise returns a description of the clock
+// offset compared to the system clock.
+func IoctlPtpSysOffsetPrecise(fd int) (*PtpSysOffsetPrecise, error) {
+	var value PtpSysOffsetPrecise
+	err := ioctlPtr(fd, PTP_SYS_OFFSET_PRECISE2, unsafe.Pointer(&value))
+	return &value, err
+}
+
+// IoctlPtpSysOffsetExtended returns an extended description of the
+// clock offset compared to the system clock. The samples parameter
+// specifies the desired number of measurements.
+func IoctlPtpSysOffsetExtended(fd int, samples uint) (*PtpSysOffsetExtended, error) {
+	value := PtpSysOffsetExtended{Samples: uint32(samples)}
+	err := ioctlPtr(fd, PTP_SYS_OFFSET_EXTENDED2, unsafe.Pointer(&value))
+	return &value, err
+}
+
+// IoctlPtpPinGetfunc returns the configuration of the specified
+// I/O pin on given PTP device.
+func IoctlPtpPinGetfunc(fd int, index uint) (*PtpPinDesc, error) {
+	value := PtpPinDesc{Index: uint32(index)}
+	err := ioctlPtr(fd, PTP_PIN_GETFUNC2, unsafe.Pointer(&value))
+	return &value, err
+}
+
+// IoctlPtpPinSetfunc updates configuration of the specified PTP
+// I/O pin.
+func IoctlPtpPinSetfunc(fd int, pd *PtpPinDesc) error {
+	return ioctlPtr(fd, PTP_PIN_SETFUNC2, unsafe.Pointer(pd))
+}
+
+// IoctlPtpPeroutRequest configures the periodic output mode of the
+// PTP I/O pins.
+func IoctlPtpPeroutRequest(fd int, r *PtpPeroutRequest) error {
+	return ioctlPtr(fd, PTP_PEROUT_REQUEST2, unsafe.Pointer(r))
+}
+
+// IoctlPtpExttsRequest configures the external timestamping mode
+// of the PTP I/O pins.
+func IoctlPtpExttsRequest(fd int, r *PtpExttsRequest) error {
+	return ioctlPtr(fd, PTP_EXTTS_REQUEST2, unsafe.Pointer(r))
+}
+
 // IoctlGetWatchdogInfo fetches information about a watchdog device from the
 // Linux watchdog API. For more information, see:
 // https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.
diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh
index 4ed2e488..6ab02b6c 100644
--- a/vendor/golang.org/x/sys/unix/mkerrors.sh
+++ b/vendor/golang.org/x/sys/unix/mkerrors.sh
@@ -58,6 +58,7 @@ includes_Darwin='
 #define _DARWIN_USE_64_BIT_INODE
 #define __APPLE_USE_RFC_3542
 #include <stdint.h>
+#include <sys/stdio.h>
 #include <sys/attr.h>
 #include <sys/clonefile.h>
 #include <sys/kern_control.h>
@@ -157,6 +158,16 @@ includes_Linux='
 #endif
 #define _GNU_SOURCE
 
+// See the description in unix/linux/types.go
+#if defined(__ARM_EABI__) || \
+	(defined(__mips__) && (_MIPS_SIM == _ABIO32)) || \
+	(defined(__powerpc__) && (!defined(__powerpc64__)))
+# ifdef   _TIME_BITS
+#  undef  _TIME_BITS
+# endif
+# define  _TIME_BITS 32
+#endif
+
 // <sys/ioctl.h> is broken on powerpc64, as it fails to include definitions of
 // these structures. We just include them copied from <bits/termios.h>.
 #if defined(__powerpc__)
@@ -255,6 +266,7 @@ struct ltchars {
 #include <linux/nsfs.h>
 #include <linux/perf_event.h>
 #include <linux/pps.h>
+#include <linux/ptp_clock.h>
 #include <linux/ptrace.h>
 #include <linux/random.h>
 #include <linux/reboot.h>
@@ -526,6 +538,7 @@ ccflags="$@"
 		$2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MREMAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT|UDP)_/ ||
 		$2 ~ /^NFC_(GENL|PROTO|COMM|RF|SE|DIRECTION|LLCP|SOCKPROTO)_/ ||
 		$2 ~ /^NFC_.*_(MAX)?SIZE$/ ||
+		$2 ~ /^PTP_/ ||
 		$2 ~ /^RAW_PAYLOAD_/ ||
 		$2 ~ /^[US]F_/ ||
 		$2 ~ /^TP_STATUS_/ ||
@@ -551,6 +564,7 @@ ccflags="$@"
 		$2 !~ /^RTC_VL_(ACCURACY|BACKUP|DATA)/ &&
 		$2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ ||
 		$2 ~ /^SOCK_|SK_DIAG_|SKNLGRP_$/ ||
+		$2 ~ /^(CONNECT|SAE)_/ ||
 		$2 ~ /^FIORDCHK$/ ||
 		$2 ~ /^SIOC/ ||
 		$2 ~ /^TIOC/ ||
@@ -654,7 +668,7 @@ errors=$(
 signals=$(
 	echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |
 	awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' |
-	grep -v 'SIGSTKSIZE\|SIGSTKSZ\|SIGRT\|SIGMAX64' |
+	grep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' |
 	sort
 )
 
@@ -664,7 +678,7 @@ echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags |
 	sort >_error.grep
 echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |
 	awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print "^\t" $2 "[ \t]*=" }' |
-	grep -v 'SIGSTKSIZE\|SIGSTKSZ\|SIGRT\|SIGMAX64' |
+	grep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' |
 	sort >_signal.grep
 
 echo '// mkerrors.sh' "$@"
diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go
index 67ce6cef..6f15ba1e 100644
--- a/vendor/golang.org/x/sys/unix/syscall_aix.go
+++ b/vendor/golang.org/x/sys/unix/syscall_aix.go
@@ -360,7 +360,7 @@ func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int,
 	var status _C_int
 	var r Pid_t
 	err = ERESTART
-	// AIX wait4 may return with ERESTART errno, while the processus is still
+	// AIX wait4 may return with ERESTART errno, while the process is still
 	// active.
 	for err == ERESTART {
 		r, err = wait4(Pid_t(pid), &status, options, rusage)
diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go
index 4cc7b005..099867de 100644
--- a/vendor/golang.org/x/sys/unix/syscall_darwin.go
+++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go
@@ -402,6 +402,18 @@ func IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error {
 	return ioctlPtr(fd, SIOCSIFMTU, unsafe.Pointer(ifreq))
 }
 
+//sys	renamexNp(from string, to string, flag uint32) (err error)
+
+func RenamexNp(from string, to string, flag uint32) (err error) {
+	return renamexNp(from, to, flag)
+}
+
+//sys	renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error)
+
+func RenameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) {
+	return renameatxNp(fromfd, from, tofd, to, flag)
+}
+
 //sys	sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL
 
 func Uname(uname *Utsname) error {
@@ -554,6 +566,43 @@ func PthreadFchdir(fd int) (err error) {
 	return pthread_fchdir_np(fd)
 }
 
+// Connectx calls connectx(2) to initiate a connection on a socket.
+//
+// srcIf, srcAddr, and dstAddr are filled into a [SaEndpoints] struct and passed as the endpoints argument.
+//
+//   - srcIf is the optional source interface index. 0 means unspecified.
+//   - srcAddr is the optional source address. nil means unspecified.
+//   - dstAddr is the destination address.
+//
+// On success, Connectx returns the number of bytes enqueued for transmission.
+func Connectx(fd int, srcIf uint32, srcAddr, dstAddr Sockaddr, associd SaeAssocID, flags uint32, iov []Iovec, connid *SaeConnID) (n uintptr, err error) {
+	endpoints := SaEndpoints{
+		Srcif: srcIf,
+	}
+
+	if srcAddr != nil {
+		addrp, addrlen, err := srcAddr.sockaddr()
+		if err != nil {
+			return 0, err
+		}
+		endpoints.Srcaddr = (*RawSockaddr)(addrp)
+		endpoints.Srcaddrlen = uint32(addrlen)
+	}
+
+	if dstAddr != nil {
+		addrp, addrlen, err := dstAddr.sockaddr()
+		if err != nil {
+			return 0, err
+		}
+		endpoints.Dstaddr = (*RawSockaddr)(addrp)
+		endpoints.Dstaddrlen = uint32(addrlen)
+	}
+
+	err = connectx(fd, &endpoints, associd, flags, iov, &n, connid)
+	return
+}
+
+//sys	connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error)
 //sys	sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error)
 
 //sys	shmat(id int, addr uintptr, flag int) (ret uintptr, err error)
diff --git a/vendor/golang.org/x/sys/unix/syscall_hurd.go b/vendor/golang.org/x/sys/unix/syscall_hurd.go
index ba46651f..a6a2d2fc 100644
--- a/vendor/golang.org/x/sys/unix/syscall_hurd.go
+++ b/vendor/golang.org/x/sys/unix/syscall_hurd.go
@@ -11,6 +11,7 @@ package unix
 int ioctl(int, unsigned long int, uintptr_t);
 */
 import "C"
+import "unsafe"
 
 func ioctl(fd int, req uint, arg uintptr) (err error) {
 	r0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(arg))
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go
index 5682e262..230a9454 100644
--- a/vendor/golang.org/x/sys/unix/syscall_linux.go
+++ b/vendor/golang.org/x/sys/unix/syscall_linux.go
@@ -1295,6 +1295,48 @@ func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) {
 	return &value, err
 }
 
+// GetsockoptTCPCCVegasInfo returns algorithm specific congestion control information for a socket using the "vegas"
+// algorithm.
+//
+// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option:
+//
+//	algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION)
+func GetsockoptTCPCCVegasInfo(fd, level, opt int) (*TCPVegasInfo, error) {
+	var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment
+	vallen := _Socklen(SizeofTCPCCInfo)
+	err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)
+	out := (*TCPVegasInfo)(unsafe.Pointer(&value[0]))
+	return out, err
+}
+
+// GetsockoptTCPCCDCTCPInfo returns algorithm specific congestion control information for a socket using the "dctp"
+// algorithm.
+//
+// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option:
+//
+//	algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION)
+func GetsockoptTCPCCDCTCPInfo(fd, level, opt int) (*TCPDCTCPInfo, error) {
+	var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment
+	vallen := _Socklen(SizeofTCPCCInfo)
+	err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)
+	out := (*TCPDCTCPInfo)(unsafe.Pointer(&value[0]))
+	return out, err
+}
+
+// GetsockoptTCPCCBBRInfo returns algorithm specific congestion control information for a socket using the "bbr"
+// algorithm.
+//
+// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option:
+//
+//	algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION)
+func GetsockoptTCPCCBBRInfo(fd, level, opt int) (*TCPBBRInfo, error) {
+	var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment
+	vallen := _Socklen(SizeofTCPCCInfo)
+	err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)
+	out := (*TCPBBRInfo)(unsafe.Pointer(&value[0]))
+	return out, err
+}
+
 // GetsockoptString returns the string value of the socket option opt for the
 // socket associated with fd at the given socket level.
 func GetsockoptString(fd, level, opt int) (string, error) {
@@ -1818,6 +1860,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
 //sys	ClockAdjtime(clockid int32, buf *Timex) (state int, err error)
 //sys	ClockGetres(clockid int32, res *Timespec) (err error)
 //sys	ClockGettime(clockid int32, time *Timespec) (err error)
+//sys	ClockSettime(clockid int32, time *Timespec) (err error)
 //sys	ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error)
 //sys	Close(fd int) (err error)
 //sys	CloseRange(first uint, last uint, flags uint) (err error)
@@ -1959,7 +2002,26 @@ func Getpgrp() (pid int) {
 //sysnb	Getpid() (pid int)
 //sysnb	Getppid() (ppid int)
 //sys	Getpriority(which int, who int) (prio int, err error)
-//sys	Getrandom(buf []byte, flags int) (n int, err error)
+
+func Getrandom(buf []byte, flags int) (n int, err error) {
+	vdsoRet, supported := vgetrandom(buf, uint32(flags))
+	if supported {
+		if vdsoRet < 0 {
+			return 0, errnoErr(syscall.Errno(-vdsoRet))
+		}
+		return vdsoRet, nil
+	}
+	var p *byte
+	if len(buf) > 0 {
+		p = &buf[0]
+	}
+	r, _, e := Syscall(SYS_GETRANDOM, uintptr(unsafe.Pointer(p)), uintptr(len(buf)), uintptr(flags))
+	if e != 0 {
+		return 0, errnoErr(e)
+	}
+	return int(r), nil
+}
+
 //sysnb	Getrusage(who int, rusage *Rusage) (err error)
 //sysnb	Getsid(pid int) (sid int, err error)
 //sysnb	Gettid() (tid int)
@@ -2592,3 +2654,4 @@ func SchedGetAttr(pid int, flags uint) (*SchedAttr, error) {
 }
 
 //sys	Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error)
+//sys	Mseal(b []byte, flags uint) (err error)
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go
index cf2ee6c7..745e5c7e 100644
--- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go
+++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go
@@ -182,3 +182,5 @@ func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error
 	}
 	return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
 }
+
+const SYS_FSTATAT = SYS_NEWFSTATAT
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go b/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go
index 3d0e9845..dd2262a4 100644
--- a/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go
+++ b/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go
@@ -214,3 +214,5 @@ func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error
 	}
 	return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
 }
+
+const SYS_FSTATAT = SYS_NEWFSTATAT
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go
index 6f5a2889..8cf3670b 100644
--- a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go
+++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go
@@ -187,3 +187,5 @@ func RISCVHWProbe(pairs []RISCVHWProbePairs, set *CPUSet, flags uint) (err error
 	}
 	return riscvHWProbe(pairs, setSize, set, flags)
 }
+
+const SYS_FSTATAT = SYS_NEWFSTATAT
diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go
index b25343c7..b86ded54 100644
--- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go
+++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go
@@ -293,6 +293,7 @@ func Uname(uname *Utsname) error {
 //sys	Mkfifoat(dirfd int, path string, mode uint32) (err error)
 //sys	Mknod(path string, mode uint32, dev int) (err error)
 //sys	Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
+//sys	Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error)
 //sys	Nanosleep(time *Timespec, leftover *Timespec) (err error)
 //sys	Open(path string, mode int, perm uint32) (fd int, err error)
 //sys	Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error)
diff --git a/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go
index 312ae6ac..7bf5c04b 100644
--- a/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go
+++ b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go
@@ -768,6 +768,15 @@ func Munmap(b []byte) (err error) {
 	return mapper.Munmap(b)
 }
 
+func MmapPtr(fd int, offset int64, addr unsafe.Pointer, length uintptr, prot int, flags int) (ret unsafe.Pointer, err error) {
+	xaddr, err := mapper.mmap(uintptr(addr), length, prot, flags, fd, offset)
+	return unsafe.Pointer(xaddr), err
+}
+
+func MunmapPtr(addr unsafe.Pointer, length uintptr) (err error) {
+	return mapper.munmap(uintptr(addr), length)
+}
+
 //sys   Gethostname(buf []byte) (err error) = SYS___GETHOSTNAME_A
 //sysnb	Getgid() (gid int)
 //sysnb	Getpid() (pid int)
@@ -816,10 +825,10 @@ func Lstat(path string, stat *Stat_t) (err error) {
 // for checking symlinks begins with $VERSION/ $SYSNAME/ $SYSSYMR/ $SYSSYMA/
 func isSpecialPath(path []byte) (v bool) {
 	var special = [4][8]byte{
-		[8]byte{'V', 'E', 'R', 'S', 'I', 'O', 'N', '/'},
-		[8]byte{'S', 'Y', 'S', 'N', 'A', 'M', 'E', '/'},
-		[8]byte{'S', 'Y', 'S', 'S', 'Y', 'M', 'R', '/'},
-		[8]byte{'S', 'Y', 'S', 'S', 'Y', 'M', 'A', '/'}}
+		{'V', 'E', 'R', 'S', 'I', 'O', 'N', '/'},
+		{'S', 'Y', 'S', 'N', 'A', 'M', 'E', '/'},
+		{'S', 'Y', 'S', 'S', 'Y', 'M', 'R', '/'},
+		{'S', 'Y', 'S', 'S', 'Y', 'M', 'A', '/'}}
 
 	var i, j int
 	for i = 0; i < len(special); i++ {
@@ -3115,3 +3124,90 @@ func legacy_Mkfifoat(dirfd int, path string, mode uint32) (err error) {
 //sys	Posix_openpt(oflag int) (fd int, err error) = SYS_POSIX_OPENPT
 //sys	Grantpt(fildes int) (rc int, err error) = SYS_GRANTPT
 //sys	Unlockpt(fildes int) (rc int, err error) = SYS_UNLOCKPT
+
+func fcntlAsIs(fd uintptr, cmd int, arg uintptr) (val int, err error) {
+	runtime.EnterSyscall()
+	r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), arg)
+	runtime.ExitSyscall()
+	val = int(r0)
+	if int64(r0) == -1 {
+		err = errnoErr2(e1, e2)
+	}
+	return
+}
+
+func Fcntl(fd uintptr, cmd int, op interface{}) (ret int, err error) {
+	switch op.(type) {
+	case *Flock_t:
+		err = FcntlFlock(fd, cmd, op.(*Flock_t))
+		if err != nil {
+			ret = -1
+		}
+		return
+	case int:
+		return FcntlInt(fd, cmd, op.(int))
+	case *F_cnvrt:
+		return fcntlAsIs(fd, cmd, uintptr(unsafe.Pointer(op.(*F_cnvrt))))
+	case unsafe.Pointer:
+		return fcntlAsIs(fd, cmd, uintptr(op.(unsafe.Pointer)))
+	default:
+		return -1, EINVAL
+	}
+	return
+}
+
+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+	if raceenabled {
+		raceReleaseMerge(unsafe.Pointer(&ioSync))
+	}
+	return sendfile(outfd, infd, offset, count)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+	// TODO: use LE call instead if the call is implemented
+	originalOffset, err := Seek(infd, 0, SEEK_CUR)
+	if err != nil {
+		return -1, err
+	}
+	//start reading data from in_fd
+	if offset != nil {
+		_, err := Seek(infd, *offset, SEEK_SET)
+		if err != nil {
+			return -1, err
+		}
+	}
+
+	buf := make([]byte, count)
+	readBuf := make([]byte, 0)
+	var n int = 0
+	for i := 0; i < count; i += n {
+		n, err := Read(infd, buf)
+		if n == 0 {
+			if err != nil {
+				return -1, err
+			} else { // EOF
+				break
+			}
+		}
+		readBuf = append(readBuf, buf...)
+		buf = buf[0:0]
+	}
+
+	n2, err := Write(outfd, readBuf)
+	if err != nil {
+		return -1, err
+	}
+
+	//When sendfile() returns, this variable will be set to the
+	// offset of the byte following the last byte that was read.
+	if offset != nil {
+		*offset = *offset + int64(n)
+		// If offset is not NULL, then sendfile() does not modify the file
+		// offset of in_fd
+		_, err := Seek(infd, originalOffset, SEEK_SET)
+		if err != nil {
+			return -1, err
+		}
+	}
+	return n2, nil
+}
diff --git a/vendor/golang.org/x/sys/unix/vgetrandom_linux.go b/vendor/golang.org/x/sys/unix/vgetrandom_linux.go
new file mode 100644
index 00000000..07ac8e09
--- /dev/null
+++ b/vendor/golang.org/x/sys/unix/vgetrandom_linux.go
@@ -0,0 +1,13 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:build linux && go1.24
+
+package unix
+
+import _ "unsafe"
+
+//go:linkname vgetrandom runtime.vgetrandom
+//go:noescape
+func vgetrandom(p []byte, flags uint32) (ret int, supported bool)
diff --git a/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go b/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go
new file mode 100644
index 00000000..297e97bc
--- /dev/null
+++ b/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go
@@ -0,0 +1,11 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:build !linux || !go1.24
+
+package unix
+
+func vgetrandom(p []byte, flags uint32) (ret int, supported bool) {
+	return -1, false
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go
index e40fa852..d73c4652 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go
@@ -237,6 +237,9 @@ const (
 	CLOCK_UPTIME_RAW_APPROX                 = 0x9
 	CLONE_NOFOLLOW                          = 0x1
 	CLONE_NOOWNERCOPY                       = 0x2
+	CONNECT_DATA_AUTHENTICATED              = 0x4
+	CONNECT_DATA_IDEMPOTENT                 = 0x2
+	CONNECT_RESUME_ON_READ_WRITE            = 0x1
 	CR0                                     = 0x0
 	CR1                                     = 0x1000
 	CR2                                     = 0x2000
@@ -1169,6 +1172,11 @@ const (
 	PT_WRITE_D                              = 0x5
 	PT_WRITE_I                              = 0x4
 	PT_WRITE_U                              = 0x6
+	RENAME_EXCL                             = 0x4
+	RENAME_NOFOLLOW_ANY                     = 0x10
+	RENAME_RESERVED1                        = 0x8
+	RENAME_SECLUDE                          = 0x1
+	RENAME_SWAP                             = 0x2
 	RLIMIT_AS                               = 0x5
 	RLIMIT_CORE                             = 0x4
 	RLIMIT_CPU                              = 0x0
@@ -1260,6 +1268,10 @@ const (
 	RTV_SSTHRESH                            = 0x20
 	RUSAGE_CHILDREN                         = -0x1
 	RUSAGE_SELF                             = 0x0
+	SAE_ASSOCID_ALL                         = 0xffffffff
+	SAE_ASSOCID_ANY                         = 0x0
+	SAE_CONNID_ALL                          = 0xffffffff
+	SAE_CONNID_ANY                          = 0x0
 	SCM_CREDS                               = 0x3
 	SCM_RIGHTS                              = 0x1
 	SCM_TIMESTAMP                           = 0x2
diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go
index bb02aa6c..4a55a400 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go
@@ -237,6 +237,9 @@ const (
 	CLOCK_UPTIME_RAW_APPROX                 = 0x9
 	CLONE_NOFOLLOW                          = 0x1
 	CLONE_NOOWNERCOPY                       = 0x2
+	CONNECT_DATA_AUTHENTICATED              = 0x4
+	CONNECT_DATA_IDEMPOTENT                 = 0x2
+	CONNECT_RESUME_ON_READ_WRITE            = 0x1
 	CR0                                     = 0x0
 	CR1                                     = 0x1000
 	CR2                                     = 0x2000
@@ -1169,6 +1172,11 @@ const (
 	PT_WRITE_D                              = 0x5
 	PT_WRITE_I                              = 0x4
 	PT_WRITE_U                              = 0x6
+	RENAME_EXCL                             = 0x4
+	RENAME_NOFOLLOW_ANY                     = 0x10
+	RENAME_RESERVED1                        = 0x8
+	RENAME_SECLUDE                          = 0x1
+	RENAME_SWAP                             = 0x2
 	RLIMIT_AS                               = 0x5
 	RLIMIT_CORE                             = 0x4
 	RLIMIT_CPU                              = 0x0
@@ -1260,6 +1268,10 @@ const (
 	RTV_SSTHRESH                            = 0x20
 	RUSAGE_CHILDREN                         = -0x1
 	RUSAGE_SELF                             = 0x0
+	SAE_ASSOCID_ALL                         = 0xffffffff
+	SAE_ASSOCID_ANY                         = 0x0
+	SAE_CONNID_ALL                          = 0xffffffff
+	SAE_CONNID_ANY                          = 0x0
 	SCM_CREDS                               = 0x3
 	SCM_RIGHTS                              = 0x1
 	SCM_TIMESTAMP                           = 0x2
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go
index 877a62b4..6ebc48b3 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go
@@ -321,6 +321,9 @@ const (
 	AUDIT_INTEGRITY_STATUS                      = 0x70a
 	AUDIT_IPC                                   = 0x517
 	AUDIT_IPC_SET_PERM                          = 0x51f
+	AUDIT_IPE_ACCESS                            = 0x58c
+	AUDIT_IPE_CONFIG_CHANGE                     = 0x58d
+	AUDIT_IPE_POLICY_LOAD                       = 0x58e
 	AUDIT_KERNEL                                = 0x7d0
 	AUDIT_KERNEL_OTHER                          = 0x524
 	AUDIT_KERN_MODULE                           = 0x532
@@ -457,6 +460,7 @@ const (
 	B600                                        = 0x8
 	B75                                         = 0x2
 	B9600                                       = 0xd
+	BCACHEFS_SUPER_MAGIC                        = 0xca451a4e
 	BDEVFS_MAGIC                                = 0x62646576
 	BINDERFS_SUPER_MAGIC                        = 0x6c6f6f70
 	BINFMTFS_MAGIC                              = 0x42494e4d
@@ -488,12 +492,14 @@ const (
 	BPF_F_ID                                    = 0x20
 	BPF_F_NETFILTER_IP_DEFRAG                   = 0x1
 	BPF_F_QUERY_EFFECTIVE                       = 0x1
+	BPF_F_REDIRECT_FLAGS                        = 0x19
 	BPF_F_REPLACE                               = 0x4
 	BPF_F_SLEEPABLE                             = 0x10
 	BPF_F_STRICT_ALIGNMENT                      = 0x1
 	BPF_F_TEST_REG_INVARIANTS                   = 0x80
 	BPF_F_TEST_RND_HI32                         = 0x4
 	BPF_F_TEST_RUN_ON_CPU                       = 0x1
+	BPF_F_TEST_SKB_CHECKSUM_COMPLETE            = 0x4
 	BPF_F_TEST_STATE_FREQ                       = 0x8
 	BPF_F_TEST_XDP_LIVE_FRAMES                  = 0x2
 	BPF_F_XDP_DEV_BOUND_ONLY                    = 0x40
@@ -928,6 +934,7 @@ const (
 	EPOLL_CTL_ADD                               = 0x1
 	EPOLL_CTL_DEL                               = 0x2
 	EPOLL_CTL_MOD                               = 0x3
+	EPOLL_IOC_TYPE                              = 0x8a
 	EROFS_SUPER_MAGIC_V1                        = 0xe0f5e1e2
 	ESP_V4_FLOW                                 = 0xa
 	ESP_V6_FLOW                                 = 0xc
@@ -941,9 +948,6 @@ const (
 	ETHTOOL_FEC_OFF                             = 0x4
 	ETHTOOL_FEC_RS                              = 0x8
 	ETHTOOL_FLAG_ALL                            = 0x7
-	ETHTOOL_FLAG_COMPACT_BITSETS                = 0x1
-	ETHTOOL_FLAG_OMIT_REPLY                     = 0x2
-	ETHTOOL_FLAG_STATS                          = 0x4
 	ETHTOOL_FLASHDEV                            = 0x33
 	ETHTOOL_FLASH_MAX_FILENAME                  = 0x80
 	ETHTOOL_FWVERS_LEN                          = 0x20
@@ -1166,6 +1170,7 @@ const (
 	EXTA                                        = 0xe
 	EXTB                                        = 0xf
 	F2FS_SUPER_MAGIC                            = 0xf2f52010
+	FALLOC_FL_ALLOCATE_RANGE                    = 0x0
 	FALLOC_FL_COLLAPSE_RANGE                    = 0x8
 	FALLOC_FL_INSERT_RANGE                      = 0x20
 	FALLOC_FL_KEEP_SIZE                         = 0x1
@@ -1705,6 +1710,7 @@ const (
 	KEXEC_ARCH_S390                             = 0x160000
 	KEXEC_ARCH_SH                               = 0x2a0000
 	KEXEC_ARCH_X86_64                           = 0x3e0000
+	KEXEC_CRASH_HOTPLUG_SUPPORT                 = 0x8
 	KEXEC_FILE_DEBUG                            = 0x8
 	KEXEC_FILE_NO_INITRAMFS                     = 0x4
 	KEXEC_FILE_ON_CRASH                         = 0x2
@@ -1780,6 +1786,7 @@ const (
 	KEY_SPEC_USER_KEYRING                       = -0x4
 	KEY_SPEC_USER_SESSION_KEYRING               = -0x5
 	LANDLOCK_ACCESS_FS_EXECUTE                  = 0x1
+	LANDLOCK_ACCESS_FS_IOCTL_DEV                = 0x8000
 	LANDLOCK_ACCESS_FS_MAKE_BLOCK               = 0x800
 	LANDLOCK_ACCESS_FS_MAKE_CHAR                = 0x40
 	LANDLOCK_ACCESS_FS_MAKE_DIR                 = 0x80
@@ -1797,6 +1804,8 @@ const (
 	LANDLOCK_ACCESS_NET_BIND_TCP                = 0x1
 	LANDLOCK_ACCESS_NET_CONNECT_TCP             = 0x2
 	LANDLOCK_CREATE_RULESET_VERSION             = 0x1
+	LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET         = 0x1
+	LANDLOCK_SCOPE_SIGNAL                       = 0x2
 	LINUX_REBOOT_CMD_CAD_OFF                    = 0x0
 	LINUX_REBOOT_CMD_CAD_ON                     = 0x89abcdef
 	LINUX_REBOOT_CMD_HALT                       = 0xcdef0123
@@ -1861,6 +1870,19 @@ const (
 	MAP_FILE                                    = 0x0
 	MAP_FIXED                                   = 0x10
 	MAP_FIXED_NOREPLACE                         = 0x100000
+	MAP_HUGE_16GB                               = 0x88000000
+	MAP_HUGE_16KB                               = 0x38000000
+	MAP_HUGE_16MB                               = 0x60000000
+	MAP_HUGE_1GB                                = 0x78000000
+	MAP_HUGE_1MB                                = 0x50000000
+	MAP_HUGE_256MB                              = 0x70000000
+	MAP_HUGE_2GB                                = 0x7c000000
+	MAP_HUGE_2MB                                = 0x54000000
+	MAP_HUGE_32MB                               = 0x64000000
+	MAP_HUGE_512KB                              = 0x4c000000
+	MAP_HUGE_512MB                              = 0x74000000
+	MAP_HUGE_64KB                               = 0x40000000
+	MAP_HUGE_8MB                                = 0x5c000000
 	MAP_HUGE_MASK                               = 0x3f
 	MAP_HUGE_SHIFT                              = 0x1a
 	MAP_PRIVATE                                 = 0x2
@@ -1908,6 +1930,8 @@ const (
 	MNT_EXPIRE                                  = 0x4
 	MNT_FORCE                                   = 0x1
 	MNT_ID_REQ_SIZE_VER0                        = 0x18
+	MNT_ID_REQ_SIZE_VER1                        = 0x20
+	MNT_NS_INFO_SIZE_VER0                       = 0x10
 	MODULE_INIT_COMPRESSED_FILE                 = 0x4
 	MODULE_INIT_IGNORE_MODVERSIONS              = 0x1
 	MODULE_INIT_IGNORE_VERMAGIC                 = 0x2
@@ -2173,7 +2197,7 @@ const (
 	NFT_REG_SIZE                                = 0x10
 	NFT_REJECT_ICMPX_MAX                        = 0x3
 	NFT_RT_MAX                                  = 0x4
-	NFT_SECMARK_CTX_MAXLEN                      = 0x100
+	NFT_SECMARK_CTX_MAXLEN                      = 0x1000
 	NFT_SET_MAXNAMELEN                          = 0x100
 	NFT_SOCKET_MAX                              = 0x3
 	NFT_TABLE_F_MASK                            = 0x7
@@ -2342,9 +2366,11 @@ const (
 	PERF_MEM_LVLNUM_IO                          = 0xa
 	PERF_MEM_LVLNUM_L1                          = 0x1
 	PERF_MEM_LVLNUM_L2                          = 0x2
+	PERF_MEM_LVLNUM_L2_MHB                      = 0x5
 	PERF_MEM_LVLNUM_L3                          = 0x3
 	PERF_MEM_LVLNUM_L4                          = 0x4
 	PERF_MEM_LVLNUM_LFB                         = 0xc
+	PERF_MEM_LVLNUM_MSC                         = 0x6
 	PERF_MEM_LVLNUM_NA                          = 0xf
 	PERF_MEM_LVLNUM_PMEM                        = 0xe
 	PERF_MEM_LVLNUM_RAM                         = 0xd
@@ -2417,6 +2443,7 @@ const (
 	PRIO_PGRP                                   = 0x1
 	PRIO_PROCESS                                = 0x0
 	PRIO_USER                                   = 0x2
+	PROCFS_IOCTL_MAGIC                          = 'f'
 	PROC_SUPER_MAGIC                            = 0x9fa0
 	PROT_EXEC                                   = 0x4
 	PROT_GROWSDOWN                              = 0x1000000
@@ -2498,6 +2525,23 @@ const (
 	PR_PAC_GET_ENABLED_KEYS                     = 0x3d
 	PR_PAC_RESET_KEYS                           = 0x36
 	PR_PAC_SET_ENABLED_KEYS                     = 0x3c
+	PR_PPC_DEXCR_CTRL_CLEAR                     = 0x4
+	PR_PPC_DEXCR_CTRL_CLEAR_ONEXEC              = 0x10
+	PR_PPC_DEXCR_CTRL_EDITABLE                  = 0x1
+	PR_PPC_DEXCR_CTRL_MASK                      = 0x1f
+	PR_PPC_DEXCR_CTRL_SET                       = 0x2
+	PR_PPC_DEXCR_CTRL_SET_ONEXEC                = 0x8
+	PR_PPC_DEXCR_IBRTPD                         = 0x1
+	PR_PPC_DEXCR_NPHIE                          = 0x3
+	PR_PPC_DEXCR_SBHE                           = 0x0
+	PR_PPC_DEXCR_SRAPD                          = 0x2
+	PR_PPC_GET_DEXCR                            = 0x48
+	PR_PPC_SET_DEXCR                            = 0x49
+	PR_RISCV_CTX_SW_FENCEI_OFF                  = 0x1
+	PR_RISCV_CTX_SW_FENCEI_ON                   = 0x0
+	PR_RISCV_SCOPE_PER_PROCESS                  = 0x0
+	PR_RISCV_SCOPE_PER_THREAD                   = 0x1
+	PR_RISCV_SET_ICACHE_FLUSH_CTX               = 0x47
 	PR_RISCV_V_GET_CONTROL                      = 0x46
 	PR_RISCV_V_SET_CONTROL                      = 0x45
 	PR_RISCV_V_VSTATE_CTRL_CUR_MASK             = 0x3
@@ -2589,6 +2633,28 @@ const (
 	PR_UNALIGN_NOPRINT                          = 0x1
 	PR_UNALIGN_SIGBUS                           = 0x2
 	PSTOREFS_MAGIC                              = 0x6165676c
+	PTP_CLK_MAGIC                               = '='
+	PTP_ENABLE_FEATURE                          = 0x1
+	PTP_EXTTS_EDGES                             = 0x6
+	PTP_EXTTS_EVENT_VALID                       = 0x1
+	PTP_EXTTS_V1_VALID_FLAGS                    = 0x7
+	PTP_EXTTS_VALID_FLAGS                       = 0x1f
+	PTP_EXT_OFFSET                              = 0x10
+	PTP_FALLING_EDGE                            = 0x4
+	PTP_MAX_SAMPLES                             = 0x19
+	PTP_PEROUT_DUTY_CYCLE                       = 0x2
+	PTP_PEROUT_ONE_SHOT                         = 0x1
+	PTP_PEROUT_PHASE                            = 0x4
+	PTP_PEROUT_V1_VALID_FLAGS                   = 0x0
+	PTP_PEROUT_VALID_FLAGS                      = 0x7
+	PTP_PIN_GETFUNC                             = 0xc0603d06
+	PTP_PIN_GETFUNC2                            = 0xc0603d0f
+	PTP_RISING_EDGE                             = 0x2
+	PTP_STRICT_FLAGS                            = 0x8
+	PTP_SYS_OFFSET_EXTENDED                     = 0xc4c03d09
+	PTP_SYS_OFFSET_EXTENDED2                    = 0xc4c03d12
+	PTP_SYS_OFFSET_PRECISE                      = 0xc0403d08
+	PTP_SYS_OFFSET_PRECISE2                     = 0xc0403d11
 	PTRACE_ATTACH                               = 0x10
 	PTRACE_CONT                                 = 0x7
 	PTRACE_DETACH                               = 0x11
@@ -2902,15 +2968,17 @@ const (
 	RUSAGE_SELF                                 = 0x0
 	RUSAGE_THREAD                               = 0x1
 	RWF_APPEND                                  = 0x10
+	RWF_ATOMIC                                  = 0x40
 	RWF_DSYNC                                   = 0x2
 	RWF_HIPRI                                   = 0x1
 	RWF_NOAPPEND                                = 0x20
 	RWF_NOWAIT                                  = 0x8
-	RWF_SUPPORTED                               = 0x3f
+	RWF_SUPPORTED                               = 0x7f
 	RWF_SYNC                                    = 0x4
 	RWF_WRITE_LIFE_NOT_SET                      = 0x0
 	SCHED_BATCH                                 = 0x3
 	SCHED_DEADLINE                              = 0x6
+	SCHED_EXT                                   = 0x7
 	SCHED_FIFO                                  = 0x1
 	SCHED_FLAG_ALL                              = 0x7f
 	SCHED_FLAG_DL_OVERRUN                       = 0x4
@@ -3179,6 +3247,7 @@ const (
 	STATX_ATTR_MOUNT_ROOT                       = 0x2000
 	STATX_ATTR_NODUMP                           = 0x40
 	STATX_ATTR_VERITY                           = 0x100000
+	STATX_ATTR_WRITE_ATOMIC                     = 0x400000
 	STATX_BASIC_STATS                           = 0x7ff
 	STATX_BLOCKS                                = 0x400
 	STATX_BTIME                                 = 0x800
@@ -3192,8 +3261,10 @@ const (
 	STATX_MTIME                                 = 0x40
 	STATX_NLINK                                 = 0x4
 	STATX_SIZE                                  = 0x200
+	STATX_SUBVOL                                = 0x8000
 	STATX_TYPE                                  = 0x1
 	STATX_UID                                   = 0x8
+	STATX_WRITE_ATOMIC                          = 0x10000
 	STATX__RESERVED                             = 0x80000000
 	SYNC_FILE_RANGE_WAIT_AFTER                  = 0x4
 	SYNC_FILE_RANGE_WAIT_BEFORE                 = 0x1
@@ -3592,6 +3663,7 @@ const (
 	XDP_UMEM_PGOFF_COMPLETION_RING              = 0x180000000
 	XDP_UMEM_PGOFF_FILL_RING                    = 0x100000000
 	XDP_UMEM_REG                                = 0x4
+	XDP_UMEM_TX_METADATA_LEN                    = 0x4
 	XDP_UMEM_TX_SW_CSUM                         = 0x2
 	XDP_UMEM_UNALIGNED_CHUNK_FLAG               = 0x1
 	XDP_USE_NEED_WAKEUP                         = 0x8
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go
index e4bc0bd5..c0d45e32 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go
@@ -78,6 +78,8 @@ const (
 	ECHOPRT                          = 0x400
 	EFD_CLOEXEC                      = 0x80000
 	EFD_NONBLOCK                     = 0x800
+	EPIOCGPARAMS                     = 0x80088a02
+	EPIOCSPARAMS                     = 0x40088a01
 	EPOLL_CLOEXEC                    = 0x80000
 	EXTPROC                          = 0x10000
 	FF1                              = 0x8000
@@ -107,6 +109,7 @@ const (
 	HIDIOCGRAWINFO                   = 0x80084803
 	HIDIOCGRDESC                     = 0x90044802
 	HIDIOCGRDESCSIZE                 = 0x80044801
+	HIDIOCREVOKE                     = 0x4004480d
 	HUPCL                            = 0x400
 	ICANON                           = 0x2
 	IEXTEN                           = 0x8000
@@ -151,9 +154,14 @@ const (
 	NFDBITS                          = 0x20
 	NLDLY                            = 0x100
 	NOFLSH                           = 0x80
+	NS_GET_MNTNS_ID                  = 0x8008b705
 	NS_GET_NSTYPE                    = 0xb703
 	NS_GET_OWNER_UID                 = 0xb704
 	NS_GET_PARENT                    = 0xb702
+	NS_GET_PID_FROM_PIDNS            = 0x8004b706
+	NS_GET_PID_IN_PIDNS              = 0x8004b708
+	NS_GET_TGID_FROM_PIDNS           = 0x8004b707
+	NS_GET_TGID_IN_PIDNS             = 0x8004b709
 	NS_GET_USERNS                    = 0xb701
 	OLCUC                            = 0x2
 	ONLCR                            = 0x4
@@ -230,6 +238,20 @@ const (
 	PPPIOCUNBRIDGECHAN               = 0x7434
 	PPPIOCXFERUNIT                   = 0x744e
 	PR_SET_PTRACER_ANY               = 0xffffffff
+	PTP_CLOCK_GETCAPS                = 0x80503d01
+	PTP_CLOCK_GETCAPS2               = 0x80503d0a
+	PTP_ENABLE_PPS                   = 0x40043d04
+	PTP_ENABLE_PPS2                  = 0x40043d0d
+	PTP_EXTTS_REQUEST                = 0x40103d02
+	PTP_EXTTS_REQUEST2               = 0x40103d0b
+	PTP_MASK_CLEAR_ALL               = 0x3d13
+	PTP_MASK_EN_SINGLE               = 0x40043d14
+	PTP_PEROUT_REQUEST               = 0x40383d03
+	PTP_PEROUT_REQUEST2              = 0x40383d0c
+	PTP_PIN_SETFUNC                  = 0x40603d07
+	PTP_PIN_SETFUNC2                 = 0x40603d10
+	PTP_SYS_OFFSET                   = 0x43403d05
+	PTP_SYS_OFFSET2                  = 0x43403d0e
 	PTRACE_GETFPREGS                 = 0xe
 	PTRACE_GETFPXREGS                = 0x12
 	PTRACE_GET_THREAD_AREA           = 0x19
@@ -276,6 +298,8 @@ const (
 	RTC_WIE_ON                       = 0x700f
 	RTC_WKALM_RD                     = 0x80287010
 	RTC_WKALM_SET                    = 0x4028700f
+	SCM_DEVMEM_DMABUF                = 0x4f
+	SCM_DEVMEM_LINEAR                = 0x4e
 	SCM_TIMESTAMPING                 = 0x25
 	SCM_TIMESTAMPING_OPT_STATS       = 0x36
 	SCM_TIMESTAMPING_PKTINFO         = 0x3a
@@ -314,6 +338,9 @@ const (
 	SO_CNX_ADVICE                    = 0x35
 	SO_COOKIE                        = 0x39
 	SO_DETACH_REUSEPORT_BPF          = 0x44
+	SO_DEVMEM_DMABUF                 = 0x4f
+	SO_DEVMEM_DONTNEED               = 0x50
+	SO_DEVMEM_LINEAR                 = 0x4e
 	SO_DOMAIN                        = 0x27
 	SO_DONTROUTE                     = 0x5
 	SO_ERROR                         = 0x4
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
index 689317af..c731d24f 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
@@ -78,6 +78,8 @@ const (
 	ECHOPRT                          = 0x400
 	EFD_CLOEXEC                      = 0x80000
 	EFD_NONBLOCK                     = 0x800
+	EPIOCGPARAMS                     = 0x80088a02
+	EPIOCSPARAMS                     = 0x40088a01
 	EPOLL_CLOEXEC                    = 0x80000
 	EXTPROC                          = 0x10000
 	FF1                              = 0x8000
@@ -107,6 +109,7 @@ const (
 	HIDIOCGRAWINFO                   = 0x80084803
 	HIDIOCGRDESC                     = 0x90044802
 	HIDIOCGRDESCSIZE                 = 0x80044801
+	HIDIOCREVOKE                     = 0x4004480d
 	HUPCL                            = 0x400
 	ICANON                           = 0x2
 	IEXTEN                           = 0x8000
@@ -151,9 +154,14 @@ const (
 	NFDBITS                          = 0x40
 	NLDLY                            = 0x100
 	NOFLSH                           = 0x80
+	NS_GET_MNTNS_ID                  = 0x8008b705
 	NS_GET_NSTYPE                    = 0xb703
 	NS_GET_OWNER_UID                 = 0xb704
 	NS_GET_PARENT                    = 0xb702
+	NS_GET_PID_FROM_PIDNS            = 0x8004b706
+	NS_GET_PID_IN_PIDNS              = 0x8004b708
+	NS_GET_TGID_FROM_PIDNS           = 0x8004b707
+	NS_GET_TGID_IN_PIDNS             = 0x8004b709
 	NS_GET_USERNS                    = 0xb701
 	OLCUC                            = 0x2
 	ONLCR                            = 0x4
@@ -230,6 +238,20 @@ const (
 	PPPIOCUNBRIDGECHAN               = 0x7434
 	PPPIOCXFERUNIT                   = 0x744e
 	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
+	PTP_CLOCK_GETCAPS                = 0x80503d01
+	PTP_CLOCK_GETCAPS2               = 0x80503d0a
+	PTP_ENABLE_PPS                   = 0x40043d04
+	PTP_ENABLE_PPS2                  = 0x40043d0d
+	PTP_EXTTS_REQUEST                = 0x40103d02
+	PTP_EXTTS_REQUEST2               = 0x40103d0b
+	PTP_MASK_CLEAR_ALL               = 0x3d13
+	PTP_MASK_EN_SINGLE               = 0x40043d14
+	PTP_PEROUT_REQUEST               = 0x40383d03
+	PTP_PEROUT_REQUEST2              = 0x40383d0c
+	PTP_PIN_SETFUNC                  = 0x40603d07
+	PTP_PIN_SETFUNC2                 = 0x40603d10
+	PTP_SYS_OFFSET                   = 0x43403d05
+	PTP_SYS_OFFSET2                  = 0x43403d0e
 	PTRACE_ARCH_PRCTL                = 0x1e
 	PTRACE_GETFPREGS                 = 0xe
 	PTRACE_GETFPXREGS                = 0x12
@@ -277,6 +299,8 @@ const (
 	RTC_WIE_ON                       = 0x700f
 	RTC_WKALM_RD                     = 0x80287010
 	RTC_WKALM_SET                    = 0x4028700f
+	SCM_DEVMEM_DMABUF                = 0x4f
+	SCM_DEVMEM_LINEAR                = 0x4e
 	SCM_TIMESTAMPING                 = 0x25
 	SCM_TIMESTAMPING_OPT_STATS       = 0x36
 	SCM_TIMESTAMPING_PKTINFO         = 0x3a
@@ -315,6 +339,9 @@ const (
 	SO_CNX_ADVICE                    = 0x35
 	SO_COOKIE                        = 0x39
 	SO_DETACH_REUSEPORT_BPF          = 0x44
+	SO_DEVMEM_DMABUF                 = 0x4f
+	SO_DEVMEM_DONTNEED               = 0x50
+	SO_DEVMEM_LINEAR                 = 0x4e
 	SO_DOMAIN                        = 0x27
 	SO_DONTROUTE                     = 0x5
 	SO_ERROR                         = 0x4
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
index 5cca668a..680018a4 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
@@ -78,6 +78,8 @@ const (
 	ECHOPRT                          = 0x400
 	EFD_CLOEXEC                      = 0x80000
 	EFD_NONBLOCK                     = 0x800
+	EPIOCGPARAMS                     = 0x80088a02
+	EPIOCSPARAMS                     = 0x40088a01
 	EPOLL_CLOEXEC                    = 0x80000
 	EXTPROC                          = 0x10000
 	FF1                              = 0x8000
@@ -106,6 +108,7 @@ const (
 	HIDIOCGRAWINFO                   = 0x80084803
 	HIDIOCGRDESC                     = 0x90044802
 	HIDIOCGRDESCSIZE                 = 0x80044801
+	HIDIOCREVOKE                     = 0x4004480d
 	HUPCL                            = 0x400
 	ICANON                           = 0x2
 	IEXTEN                           = 0x8000
@@ -148,9 +151,14 @@ const (
 	NFDBITS                          = 0x20
 	NLDLY                            = 0x100
 	NOFLSH                           = 0x80
+	NS_GET_MNTNS_ID                  = 0x8008b705
 	NS_GET_NSTYPE                    = 0xb703
 	NS_GET_OWNER_UID                 = 0xb704
 	NS_GET_PARENT                    = 0xb702
+	NS_GET_PID_FROM_PIDNS            = 0x8004b706
+	NS_GET_PID_IN_PIDNS              = 0x8004b708
+	NS_GET_TGID_FROM_PIDNS           = 0x8004b707
+	NS_GET_TGID_IN_PIDNS             = 0x8004b709
 	NS_GET_USERNS                    = 0xb701
 	OLCUC                            = 0x2
 	ONLCR                            = 0x4
@@ -227,6 +235,20 @@ const (
 	PPPIOCUNBRIDGECHAN               = 0x7434
 	PPPIOCXFERUNIT                   = 0x744e
 	PR_SET_PTRACER_ANY               = 0xffffffff
+	PTP_CLOCK_GETCAPS                = 0x80503d01
+	PTP_CLOCK_GETCAPS2               = 0x80503d0a
+	PTP_ENABLE_PPS                   = 0x40043d04
+	PTP_ENABLE_PPS2                  = 0x40043d0d
+	PTP_EXTTS_REQUEST                = 0x40103d02
+	PTP_EXTTS_REQUEST2               = 0x40103d0b
+	PTP_MASK_CLEAR_ALL               = 0x3d13
+	PTP_MASK_EN_SINGLE               = 0x40043d14
+	PTP_PEROUT_REQUEST               = 0x40383d03
+	PTP_PEROUT_REQUEST2              = 0x40383d0c
+	PTP_PIN_SETFUNC                  = 0x40603d07
+	PTP_PIN_SETFUNC2                 = 0x40603d10
+	PTP_SYS_OFFSET                   = 0x43403d05
+	PTP_SYS_OFFSET2                  = 0x43403d0e
 	PTRACE_GETCRUNCHREGS             = 0x19
 	PTRACE_GETFDPIC                  = 0x1f
 	PTRACE_GETFDPIC_EXEC             = 0x0
@@ -282,6 +304,8 @@ const (
 	RTC_WIE_ON                       = 0x700f
 	RTC_WKALM_RD                     = 0x80287010
 	RTC_WKALM_SET                    = 0x4028700f
+	SCM_DEVMEM_DMABUF                = 0x4f
+	SCM_DEVMEM_LINEAR                = 0x4e
 	SCM_TIMESTAMPING                 = 0x25
 	SCM_TIMESTAMPING_OPT_STATS       = 0x36
 	SCM_TIMESTAMPING_PKTINFO         = 0x3a
@@ -320,6 +344,9 @@ const (
 	SO_CNX_ADVICE                    = 0x35
 	SO_COOKIE                        = 0x39
 	SO_DETACH_REUSEPORT_BPF          = 0x44
+	SO_DEVMEM_DMABUF                 = 0x4f
+	SO_DEVMEM_DONTNEED               = 0x50
+	SO_DEVMEM_LINEAR                 = 0x4e
 	SO_DOMAIN                        = 0x27
 	SO_DONTROUTE                     = 0x5
 	SO_ERROR                         = 0x4
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
index 14270508..a63909f3 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
@@ -78,6 +78,8 @@ const (
 	ECHOPRT                          = 0x400
 	EFD_CLOEXEC                      = 0x80000
 	EFD_NONBLOCK                     = 0x800
+	EPIOCGPARAMS                     = 0x80088a02
+	EPIOCSPARAMS                     = 0x40088a01
 	EPOLL_CLOEXEC                    = 0x80000
 	ESR_MAGIC                        = 0x45535201
 	EXTPROC                          = 0x10000
@@ -110,6 +112,7 @@ const (
 	HIDIOCGRAWINFO                   = 0x80084803
 	HIDIOCGRDESC                     = 0x90044802
 	HIDIOCGRDESCSIZE                 = 0x80044801
+	HIDIOCREVOKE                     = 0x4004480d
 	HUPCL                            = 0x400
 	ICANON                           = 0x2
 	IEXTEN                           = 0x8000
@@ -152,9 +155,14 @@ const (
 	NFDBITS                          = 0x40
 	NLDLY                            = 0x100
 	NOFLSH                           = 0x80
+	NS_GET_MNTNS_ID                  = 0x8008b705
 	NS_GET_NSTYPE                    = 0xb703
 	NS_GET_OWNER_UID                 = 0xb704
 	NS_GET_PARENT                    = 0xb702
+	NS_GET_PID_FROM_PIDNS            = 0x8004b706
+	NS_GET_PID_IN_PIDNS              = 0x8004b708
+	NS_GET_TGID_FROM_PIDNS           = 0x8004b707
+	NS_GET_TGID_IN_PIDNS             = 0x8004b709
 	NS_GET_USERNS                    = 0xb701
 	OLCUC                            = 0x2
 	ONLCR                            = 0x4
@@ -198,6 +206,7 @@ const (
 	PERF_EVENT_IOC_SET_BPF           = 0x40042408
 	PERF_EVENT_IOC_SET_FILTER        = 0x40082406
 	PERF_EVENT_IOC_SET_OUTPUT        = 0x2405
+	POE_MAGIC                        = 0x504f4530
 	PPPIOCATTACH                     = 0x4004743d
 	PPPIOCATTCHAN                    = 0x40047438
 	PPPIOCBRIDGECHAN                 = 0x40047435
@@ -233,6 +242,20 @@ const (
 	PROT_BTI                         = 0x10
 	PROT_MTE                         = 0x20
 	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
+	PTP_CLOCK_GETCAPS                = 0x80503d01
+	PTP_CLOCK_GETCAPS2               = 0x80503d0a
+	PTP_ENABLE_PPS                   = 0x40043d04
+	PTP_ENABLE_PPS2                  = 0x40043d0d
+	PTP_EXTTS_REQUEST                = 0x40103d02
+	PTP_EXTTS_REQUEST2               = 0x40103d0b
+	PTP_MASK_CLEAR_ALL               = 0x3d13
+	PTP_MASK_EN_SINGLE               = 0x40043d14
+	PTP_PEROUT_REQUEST               = 0x40383d03
+	PTP_PEROUT_REQUEST2              = 0x40383d0c
+	PTP_PIN_SETFUNC                  = 0x40603d07
+	PTP_PIN_SETFUNC2                 = 0x40603d10
+	PTP_SYS_OFFSET                   = 0x43403d05
+	PTP_SYS_OFFSET2                  = 0x43403d0e
 	PTRACE_PEEKMTETAGS               = 0x21
 	PTRACE_POKEMTETAGS               = 0x22
 	PTRACE_SYSEMU                    = 0x1f
@@ -273,6 +296,8 @@ const (
 	RTC_WIE_ON                       = 0x700f
 	RTC_WKALM_RD                     = 0x80287010
 	RTC_WKALM_SET                    = 0x4028700f
+	SCM_DEVMEM_DMABUF                = 0x4f
+	SCM_DEVMEM_LINEAR                = 0x4e
 	SCM_TIMESTAMPING                 = 0x25
 	SCM_TIMESTAMPING_OPT_STATS       = 0x36
 	SCM_TIMESTAMPING_PKTINFO         = 0x3a
@@ -311,6 +336,9 @@ const (
 	SO_CNX_ADVICE                    = 0x35
 	SO_COOKIE                        = 0x39
 	SO_DETACH_REUSEPORT_BPF          = 0x44
+	SO_DEVMEM_DMABUF                 = 0x4f
+	SO_DEVMEM_DONTNEED               = 0x50
+	SO_DEVMEM_LINEAR                 = 0x4e
 	SO_DOMAIN                        = 0x27
 	SO_DONTROUTE                     = 0x5
 	SO_ERROR                         = 0x4
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go
index 28e39afd..9b0a2573 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go
@@ -78,6 +78,8 @@ const (
 	ECHOPRT                          = 0x400
 	EFD_CLOEXEC                      = 0x80000
 	EFD_NONBLOCK                     = 0x800
+	EPIOCGPARAMS                     = 0x80088a02
+	EPIOCSPARAMS                     = 0x40088a01
 	EPOLL_CLOEXEC                    = 0x80000
 	EXTPROC                          = 0x10000
 	FF1                              = 0x8000
@@ -107,6 +109,7 @@ const (
 	HIDIOCGRAWINFO                   = 0x80084803
 	HIDIOCGRDESC                     = 0x90044802
 	HIDIOCGRDESCSIZE                 = 0x80044801
+	HIDIOCREVOKE                     = 0x4004480d
 	HUPCL                            = 0x400
 	ICANON                           = 0x2
 	IEXTEN                           = 0x8000
@@ -152,9 +155,14 @@ const (
 	NFDBITS                          = 0x40
 	NLDLY                            = 0x100
 	NOFLSH                           = 0x80
+	NS_GET_MNTNS_ID                  = 0x8008b705
 	NS_GET_NSTYPE                    = 0xb703
 	NS_GET_OWNER_UID                 = 0xb704
 	NS_GET_PARENT                    = 0xb702
+	NS_GET_PID_FROM_PIDNS            = 0x8004b706
+	NS_GET_PID_IN_PIDNS              = 0x8004b708
+	NS_GET_TGID_FROM_PIDNS           = 0x8004b707
+	NS_GET_TGID_IN_PIDNS             = 0x8004b709
 	NS_GET_USERNS                    = 0xb701
 	OLCUC                            = 0x2
 	ONLCR                            = 0x4
@@ -231,6 +239,20 @@ const (
 	PPPIOCUNBRIDGECHAN               = 0x7434
 	PPPIOCXFERUNIT                   = 0x744e
 	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
+	PTP_CLOCK_GETCAPS                = 0x80503d01
+	PTP_CLOCK_GETCAPS2               = 0x80503d0a
+	PTP_ENABLE_PPS                   = 0x40043d04
+	PTP_ENABLE_PPS2                  = 0x40043d0d
+	PTP_EXTTS_REQUEST                = 0x40103d02
+	PTP_EXTTS_REQUEST2               = 0x40103d0b
+	PTP_MASK_CLEAR_ALL               = 0x3d13
+	PTP_MASK_EN_SINGLE               = 0x40043d14
+	PTP_PEROUT_REQUEST               = 0x40383d03
+	PTP_PEROUT_REQUEST2              = 0x40383d0c
+	PTP_PIN_SETFUNC                  = 0x40603d07
+	PTP_PIN_SETFUNC2                 = 0x40603d10
+	PTP_SYS_OFFSET                   = 0x43403d05
+	PTP_SYS_OFFSET2                  = 0x43403d0e
 	PTRACE_SYSEMU                    = 0x1f
 	PTRACE_SYSEMU_SINGLESTEP         = 0x20
 	RLIMIT_AS                        = 0x9
@@ -269,6 +291,8 @@ const (
 	RTC_WIE_ON                       = 0x700f
 	RTC_WKALM_RD                     = 0x80287010
 	RTC_WKALM_SET                    = 0x4028700f
+	SCM_DEVMEM_DMABUF                = 0x4f
+	SCM_DEVMEM_LINEAR                = 0x4e
 	SCM_TIMESTAMPING                 = 0x25
 	SCM_TIMESTAMPING_OPT_STATS       = 0x36
 	SCM_TIMESTAMPING_PKTINFO         = 0x3a
@@ -307,6 +331,9 @@ const (
 	SO_CNX_ADVICE                    = 0x35
 	SO_COOKIE                        = 0x39
 	SO_DETACH_REUSEPORT_BPF          = 0x44
+	SO_DEVMEM_DMABUF                 = 0x4f
+	SO_DEVMEM_DONTNEED               = 0x50
+	SO_DEVMEM_LINEAR                 = 0x4e
 	SO_DOMAIN                        = 0x27
 	SO_DONTROUTE                     = 0x5
 	SO_ERROR                         = 0x4
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
index cd66e92c..958e6e06 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
@@ -78,6 +78,8 @@ const (
 	ECHOPRT                          = 0x400
 	EFD_CLOEXEC                      = 0x80000
 	EFD_NONBLOCK                     = 0x80
+	EPIOCGPARAMS                     = 0x40088a02
+	EPIOCSPARAMS                     = 0x80088a01
 	EPOLL_CLOEXEC                    = 0x80000
 	EXTPROC                          = 0x10000
 	FF1                              = 0x8000
@@ -106,6 +108,7 @@ const (
 	HIDIOCGRAWINFO                   = 0x40084803
 	HIDIOCGRDESC                     = 0x50044802
 	HIDIOCGRDESCSIZE                 = 0x40044801
+	HIDIOCREVOKE                     = 0x8004480d
 	HUPCL                            = 0x400
 	ICANON                           = 0x2
 	IEXTEN                           = 0x100
@@ -148,9 +151,14 @@ const (
 	NFDBITS                          = 0x20
 	NLDLY                            = 0x100
 	NOFLSH                           = 0x80
+	NS_GET_MNTNS_ID                  = 0x4008b705
 	NS_GET_NSTYPE                    = 0x2000b703
 	NS_GET_OWNER_UID                 = 0x2000b704
 	NS_GET_PARENT                    = 0x2000b702
+	NS_GET_PID_FROM_PIDNS            = 0x4004b706
+	NS_GET_PID_IN_PIDNS              = 0x4004b708
+	NS_GET_TGID_FROM_PIDNS           = 0x4004b707
+	NS_GET_TGID_IN_PIDNS             = 0x4004b709
 	NS_GET_USERNS                    = 0x2000b701
 	OLCUC                            = 0x2
 	ONLCR                            = 0x4
@@ -227,6 +235,20 @@ const (
 	PPPIOCUNBRIDGECHAN               = 0x20007434
 	PPPIOCXFERUNIT                   = 0x2000744e
 	PR_SET_PTRACER_ANY               = 0xffffffff
+	PTP_CLOCK_GETCAPS                = 0x40503d01
+	PTP_CLOCK_GETCAPS2               = 0x40503d0a
+	PTP_ENABLE_PPS                   = 0x80043d04
+	PTP_ENABLE_PPS2                  = 0x80043d0d
+	PTP_EXTTS_REQUEST                = 0x80103d02
+	PTP_EXTTS_REQUEST2               = 0x80103d0b
+	PTP_MASK_CLEAR_ALL               = 0x20003d13
+	PTP_MASK_EN_SINGLE               = 0x80043d14
+	PTP_PEROUT_REQUEST               = 0x80383d03
+	PTP_PEROUT_REQUEST2              = 0x80383d0c
+	PTP_PIN_SETFUNC                  = 0x80603d07
+	PTP_PIN_SETFUNC2                 = 0x80603d10
+	PTP_SYS_OFFSET                   = 0x83403d05
+	PTP_SYS_OFFSET2                  = 0x83403d0e
 	PTRACE_GETFPREGS                 = 0xe
 	PTRACE_GET_THREAD_AREA           = 0x19
 	PTRACE_GET_THREAD_AREA_3264      = 0xc4
@@ -275,6 +297,8 @@ const (
 	RTC_WIE_ON                       = 0x2000700f
 	RTC_WKALM_RD                     = 0x40287010
 	RTC_WKALM_SET                    = 0x8028700f
+	SCM_DEVMEM_DMABUF                = 0x4f
+	SCM_DEVMEM_LINEAR                = 0x4e
 	SCM_TIMESTAMPING                 = 0x25
 	SCM_TIMESTAMPING_OPT_STATS       = 0x36
 	SCM_TIMESTAMPING_PKTINFO         = 0x3a
@@ -313,6 +337,9 @@ const (
 	SO_CNX_ADVICE                    = 0x35
 	SO_COOKIE                        = 0x39
 	SO_DETACH_REUSEPORT_BPF          = 0x44
+	SO_DEVMEM_DMABUF                 = 0x4f
+	SO_DEVMEM_DONTNEED               = 0x50
+	SO_DEVMEM_LINEAR                 = 0x4e
 	SO_DOMAIN                        = 0x1029
 	SO_DONTROUTE                     = 0x10
 	SO_ERROR                         = 0x1007
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
index c1595eba..50c7f25b 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
@@ -78,6 +78,8 @@ const (
 	ECHOPRT                          = 0x400
 	EFD_CLOEXEC                      = 0x80000
 	EFD_NONBLOCK                     = 0x80
+	EPIOCGPARAMS                     = 0x40088a02
+	EPIOCSPARAMS                     = 0x80088a01
 	EPOLL_CLOEXEC                    = 0x80000
 	EXTPROC                          = 0x10000
 	FF1                              = 0x8000
@@ -106,6 +108,7 @@ const (
 	HIDIOCGRAWINFO                   = 0x40084803
 	HIDIOCGRDESC                     = 0x50044802
 	HIDIOCGRDESCSIZE                 = 0x40044801
+	HIDIOCREVOKE                     = 0x8004480d
 	HUPCL                            = 0x400
 	ICANON                           = 0x2
 	IEXTEN                           = 0x100
@@ -148,9 +151,14 @@ const (
 	NFDBITS                          = 0x40
 	NLDLY                            = 0x100
 	NOFLSH                           = 0x80
+	NS_GET_MNTNS_ID                  = 0x4008b705
 	NS_GET_NSTYPE                    = 0x2000b703
 	NS_GET_OWNER_UID                 = 0x2000b704
 	NS_GET_PARENT                    = 0x2000b702
+	NS_GET_PID_FROM_PIDNS            = 0x4004b706
+	NS_GET_PID_IN_PIDNS              = 0x4004b708
+	NS_GET_TGID_FROM_PIDNS           = 0x4004b707
+	NS_GET_TGID_IN_PIDNS             = 0x4004b709
 	NS_GET_USERNS                    = 0x2000b701
 	OLCUC                            = 0x2
 	ONLCR                            = 0x4
@@ -227,6 +235,20 @@ const (
 	PPPIOCUNBRIDGECHAN               = 0x20007434
 	PPPIOCXFERUNIT                   = 0x2000744e
 	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
+	PTP_CLOCK_GETCAPS                = 0x40503d01
+	PTP_CLOCK_GETCAPS2               = 0x40503d0a
+	PTP_ENABLE_PPS                   = 0x80043d04
+	PTP_ENABLE_PPS2                  = 0x80043d0d
+	PTP_EXTTS_REQUEST                = 0x80103d02
+	PTP_EXTTS_REQUEST2               = 0x80103d0b
+	PTP_MASK_CLEAR_ALL               = 0x20003d13
+	PTP_MASK_EN_SINGLE               = 0x80043d14
+	PTP_PEROUT_REQUEST               = 0x80383d03
+	PTP_PEROUT_REQUEST2              = 0x80383d0c
+	PTP_PIN_SETFUNC                  = 0x80603d07
+	PTP_PIN_SETFUNC2                 = 0x80603d10
+	PTP_SYS_OFFSET                   = 0x83403d05
+	PTP_SYS_OFFSET2                  = 0x83403d0e
 	PTRACE_GETFPREGS                 = 0xe
 	PTRACE_GET_THREAD_AREA           = 0x19
 	PTRACE_GET_THREAD_AREA_3264      = 0xc4
@@ -275,6 +297,8 @@ const (
 	RTC_WIE_ON                       = 0x2000700f
 	RTC_WKALM_RD                     = 0x40287010
 	RTC_WKALM_SET                    = 0x8028700f
+	SCM_DEVMEM_DMABUF                = 0x4f
+	SCM_DEVMEM_LINEAR                = 0x4e
 	SCM_TIMESTAMPING                 = 0x25
 	SCM_TIMESTAMPING_OPT_STATS       = 0x36
 	SCM_TIMESTAMPING_PKTINFO         = 0x3a
@@ -313,6 +337,9 @@ const (
 	SO_CNX_ADVICE                    = 0x35
 	SO_COOKIE                        = 0x39
 	SO_DETACH_REUSEPORT_BPF          = 0x44
+	SO_DEVMEM_DMABUF                 = 0x4f
+	SO_DEVMEM_DONTNEED               = 0x50
+	SO_DEVMEM_LINEAR                 = 0x4e
 	SO_DOMAIN                        = 0x1029
 	SO_DONTROUTE                     = 0x10
 	SO_ERROR                         = 0x1007
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
index ee9456b0..ced21d66 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
@@ -78,6 +78,8 @@ const (
 	ECHOPRT                          = 0x400
 	EFD_CLOEXEC                      = 0x80000
 	EFD_NONBLOCK                     = 0x80
+	EPIOCGPARAMS                     = 0x40088a02
+	EPIOCSPARAMS                     = 0x80088a01
 	EPOLL_CLOEXEC                    = 0x80000
 	EXTPROC                          = 0x10000
 	FF1                              = 0x8000
@@ -106,6 +108,7 @@ const (
 	HIDIOCGRAWINFO                   = 0x40084803
 	HIDIOCGRDESC                     = 0x50044802
 	HIDIOCGRDESCSIZE                 = 0x40044801
+	HIDIOCREVOKE                     = 0x8004480d
 	HUPCL                            = 0x400
 	ICANON                           = 0x2
 	IEXTEN                           = 0x100
@@ -148,9 +151,14 @@ const (
 	NFDBITS                          = 0x40
 	NLDLY                            = 0x100
 	NOFLSH                           = 0x80
+	NS_GET_MNTNS_ID                  = 0x4008b705
 	NS_GET_NSTYPE                    = 0x2000b703
 	NS_GET_OWNER_UID                 = 0x2000b704
 	NS_GET_PARENT                    = 0x2000b702
+	NS_GET_PID_FROM_PIDNS            = 0x4004b706
+	NS_GET_PID_IN_PIDNS              = 0x4004b708
+	NS_GET_TGID_FROM_PIDNS           = 0x4004b707
+	NS_GET_TGID_IN_PIDNS             = 0x4004b709
 	NS_GET_USERNS                    = 0x2000b701
 	OLCUC                            = 0x2
 	ONLCR                            = 0x4
@@ -227,6 +235,20 @@ const (
 	PPPIOCUNBRIDGECHAN               = 0x20007434
 	PPPIOCXFERUNIT                   = 0x2000744e
 	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
+	PTP_CLOCK_GETCAPS                = 0x40503d01
+	PTP_CLOCK_GETCAPS2               = 0x40503d0a
+	PTP_ENABLE_PPS                   = 0x80043d04
+	PTP_ENABLE_PPS2                  = 0x80043d0d
+	PTP_EXTTS_REQUEST                = 0x80103d02
+	PTP_EXTTS_REQUEST2               = 0x80103d0b
+	PTP_MASK_CLEAR_ALL               = 0x20003d13
+	PTP_MASK_EN_SINGLE               = 0x80043d14
+	PTP_PEROUT_REQUEST               = 0x80383d03
+	PTP_PEROUT_REQUEST2              = 0x80383d0c
+	PTP_PIN_SETFUNC                  = 0x80603d07
+	PTP_PIN_SETFUNC2                 = 0x80603d10
+	PTP_SYS_OFFSET                   = 0x83403d05
+	PTP_SYS_OFFSET2                  = 0x83403d0e
 	PTRACE_GETFPREGS                 = 0xe
 	PTRACE_GET_THREAD_AREA           = 0x19
 	PTRACE_GET_THREAD_AREA_3264      = 0xc4
@@ -275,6 +297,8 @@ const (
 	RTC_WIE_ON                       = 0x2000700f
 	RTC_WKALM_RD                     = 0x40287010
 	RTC_WKALM_SET                    = 0x8028700f
+	SCM_DEVMEM_DMABUF                = 0x4f
+	SCM_DEVMEM_LINEAR                = 0x4e
 	SCM_TIMESTAMPING                 = 0x25
 	SCM_TIMESTAMPING_OPT_STATS       = 0x36
 	SCM_TIMESTAMPING_PKTINFO         = 0x3a
@@ -313,6 +337,9 @@ const (
 	SO_CNX_ADVICE                    = 0x35
 	SO_COOKIE                        = 0x39
 	SO_DETACH_REUSEPORT_BPF          = 0x44
+	SO_DEVMEM_DMABUF                 = 0x4f
+	SO_DEVMEM_DONTNEED               = 0x50
+	SO_DEVMEM_LINEAR                 = 0x4e
 	SO_DOMAIN                        = 0x1029
 	SO_DONTROUTE                     = 0x10
 	SO_ERROR                         = 0x1007
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
index 8cfca81e..226c0441 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
@@ -78,6 +78,8 @@ const (
 	ECHOPRT                          = 0x400
 	EFD_CLOEXEC                      = 0x80000
 	EFD_NONBLOCK                     = 0x80
+	EPIOCGPARAMS                     = 0x40088a02
+	EPIOCSPARAMS                     = 0x80088a01
 	EPOLL_CLOEXEC                    = 0x80000
 	EXTPROC                          = 0x10000
 	FF1                              = 0x8000
@@ -106,6 +108,7 @@ const (
 	HIDIOCGRAWINFO                   = 0x40084803
 	HIDIOCGRDESC                     = 0x50044802
 	HIDIOCGRDESCSIZE                 = 0x40044801
+	HIDIOCREVOKE                     = 0x8004480d
 	HUPCL                            = 0x400
 	ICANON                           = 0x2
 	IEXTEN                           = 0x100
@@ -148,9 +151,14 @@ const (
 	NFDBITS                          = 0x20
 	NLDLY                            = 0x100
 	NOFLSH                           = 0x80
+	NS_GET_MNTNS_ID                  = 0x4008b705
 	NS_GET_NSTYPE                    = 0x2000b703
 	NS_GET_OWNER_UID                 = 0x2000b704
 	NS_GET_PARENT                    = 0x2000b702
+	NS_GET_PID_FROM_PIDNS            = 0x4004b706
+	NS_GET_PID_IN_PIDNS              = 0x4004b708
+	NS_GET_TGID_FROM_PIDNS           = 0x4004b707
+	NS_GET_TGID_IN_PIDNS             = 0x4004b709
 	NS_GET_USERNS                    = 0x2000b701
 	OLCUC                            = 0x2
 	ONLCR                            = 0x4
@@ -227,6 +235,20 @@ const (
 	PPPIOCUNBRIDGECHAN               = 0x20007434
 	PPPIOCXFERUNIT                   = 0x2000744e
 	PR_SET_PTRACER_ANY               = 0xffffffff
+	PTP_CLOCK_GETCAPS                = 0x40503d01
+	PTP_CLOCK_GETCAPS2               = 0x40503d0a
+	PTP_ENABLE_PPS                   = 0x80043d04
+	PTP_ENABLE_PPS2                  = 0x80043d0d
+	PTP_EXTTS_REQUEST                = 0x80103d02
+	PTP_EXTTS_REQUEST2               = 0x80103d0b
+	PTP_MASK_CLEAR_ALL               = 0x20003d13
+	PTP_MASK_EN_SINGLE               = 0x80043d14
+	PTP_PEROUT_REQUEST               = 0x80383d03
+	PTP_PEROUT_REQUEST2              = 0x80383d0c
+	PTP_PIN_SETFUNC                  = 0x80603d07
+	PTP_PIN_SETFUNC2                 = 0x80603d10
+	PTP_SYS_OFFSET                   = 0x83403d05
+	PTP_SYS_OFFSET2                  = 0x83403d0e
 	PTRACE_GETFPREGS                 = 0xe
 	PTRACE_GET_THREAD_AREA           = 0x19
 	PTRACE_GET_THREAD_AREA_3264      = 0xc4
@@ -275,6 +297,8 @@ const (
 	RTC_WIE_ON                       = 0x2000700f
 	RTC_WKALM_RD                     = 0x40287010
 	RTC_WKALM_SET                    = 0x8028700f
+	SCM_DEVMEM_DMABUF                = 0x4f
+	SCM_DEVMEM_LINEAR                = 0x4e
 	SCM_TIMESTAMPING                 = 0x25
 	SCM_TIMESTAMPING_OPT_STATS       = 0x36
 	SCM_TIMESTAMPING_PKTINFO         = 0x3a
@@ -313,6 +337,9 @@ const (
 	SO_CNX_ADVICE                    = 0x35
 	SO_COOKIE                        = 0x39
 	SO_DETACH_REUSEPORT_BPF          = 0x44
+	SO_DEVMEM_DMABUF                 = 0x4f
+	SO_DEVMEM_DONTNEED               = 0x50
+	SO_DEVMEM_LINEAR                 = 0x4e
 	SO_DOMAIN                        = 0x1029
 	SO_DONTROUTE                     = 0x10
 	SO_ERROR                         = 0x1007
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go
index 60b0deb3..3122737c 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go
@@ -78,6 +78,8 @@ const (
 	ECHOPRT                          = 0x20
 	EFD_CLOEXEC                      = 0x80000
 	EFD_NONBLOCK                     = 0x800
+	EPIOCGPARAMS                     = 0x40088a02
+	EPIOCSPARAMS                     = 0x80088a01
 	EPOLL_CLOEXEC                    = 0x80000
 	EXTPROC                          = 0x10000000
 	FF1                              = 0x4000
@@ -106,6 +108,7 @@ const (
 	HIDIOCGRAWINFO                   = 0x40084803
 	HIDIOCGRDESC                     = 0x50044802
 	HIDIOCGRDESCSIZE                 = 0x40044801
+	HIDIOCREVOKE                     = 0x8004480d
 	HUPCL                            = 0x4000
 	ICANON                           = 0x100
 	IEXTEN                           = 0x400
@@ -150,9 +153,14 @@ const (
 	NL3                              = 0x300
 	NLDLY                            = 0x300
 	NOFLSH                           = 0x80000000
+	NS_GET_MNTNS_ID                  = 0x4008b705
 	NS_GET_NSTYPE                    = 0x2000b703
 	NS_GET_OWNER_UID                 = 0x2000b704
 	NS_GET_PARENT                    = 0x2000b702
+	NS_GET_PID_FROM_PIDNS            = 0x4004b706
+	NS_GET_PID_IN_PIDNS              = 0x4004b708
+	NS_GET_TGID_FROM_PIDNS           = 0x4004b707
+	NS_GET_TGID_IN_PIDNS             = 0x4004b709
 	NS_GET_USERNS                    = 0x2000b701
 	OLCUC                            = 0x4
 	ONLCR                            = 0x2
@@ -230,6 +238,20 @@ const (
 	PPPIOCXFERUNIT                   = 0x2000744e
 	PROT_SAO                         = 0x10
 	PR_SET_PTRACER_ANY               = 0xffffffff
+	PTP_CLOCK_GETCAPS                = 0x40503d01
+	PTP_CLOCK_GETCAPS2               = 0x40503d0a
+	PTP_ENABLE_PPS                   = 0x80043d04
+	PTP_ENABLE_PPS2                  = 0x80043d0d
+	PTP_EXTTS_REQUEST                = 0x80103d02
+	PTP_EXTTS_REQUEST2               = 0x80103d0b
+	PTP_MASK_CLEAR_ALL               = 0x20003d13
+	PTP_MASK_EN_SINGLE               = 0x80043d14
+	PTP_PEROUT_REQUEST               = 0x80383d03
+	PTP_PEROUT_REQUEST2              = 0x80383d0c
+	PTP_PIN_SETFUNC                  = 0x80603d07
+	PTP_PIN_SETFUNC2                 = 0x80603d10
+	PTP_SYS_OFFSET                   = 0x83403d05
+	PTP_SYS_OFFSET2                  = 0x83403d0e
 	PTRACE_GETEVRREGS                = 0x14
 	PTRACE_GETFPREGS                 = 0xe
 	PTRACE_GETREGS64                 = 0x16
@@ -330,6 +352,8 @@ const (
 	RTC_WIE_ON                       = 0x2000700f
 	RTC_WKALM_RD                     = 0x40287010
 	RTC_WKALM_SET                    = 0x8028700f
+	SCM_DEVMEM_DMABUF                = 0x4f
+	SCM_DEVMEM_LINEAR                = 0x4e
 	SCM_TIMESTAMPING                 = 0x25
 	SCM_TIMESTAMPING_OPT_STATS       = 0x36
 	SCM_TIMESTAMPING_PKTINFO         = 0x3a
@@ -368,6 +392,9 @@ const (
 	SO_CNX_ADVICE                    = 0x35
 	SO_COOKIE                        = 0x39
 	SO_DETACH_REUSEPORT_BPF          = 0x44
+	SO_DEVMEM_DMABUF                 = 0x4f
+	SO_DEVMEM_DONTNEED               = 0x50
+	SO_DEVMEM_LINEAR                 = 0x4e
 	SO_DOMAIN                        = 0x27
 	SO_DONTROUTE                     = 0x5
 	SO_ERROR                         = 0x4
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
index f90aa728..eb5d3467 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
@@ -78,6 +78,8 @@ const (
 	ECHOPRT                          = 0x20
 	EFD_CLOEXEC                      = 0x80000
 	EFD_NONBLOCK                     = 0x800
+	EPIOCGPARAMS                     = 0x40088a02
+	EPIOCSPARAMS                     = 0x80088a01
 	EPOLL_CLOEXEC                    = 0x80000
 	EXTPROC                          = 0x10000000
 	FF1                              = 0x4000
@@ -106,6 +108,7 @@ const (
 	HIDIOCGRAWINFO                   = 0x40084803
 	HIDIOCGRDESC                     = 0x50044802
 	HIDIOCGRDESCSIZE                 = 0x40044801
+	HIDIOCREVOKE                     = 0x8004480d
 	HUPCL                            = 0x4000
 	ICANON                           = 0x100
 	IEXTEN                           = 0x400
@@ -150,9 +153,14 @@ const (
 	NL3                              = 0x300
 	NLDLY                            = 0x300
 	NOFLSH                           = 0x80000000
+	NS_GET_MNTNS_ID                  = 0x4008b705
 	NS_GET_NSTYPE                    = 0x2000b703
 	NS_GET_OWNER_UID                 = 0x2000b704
 	NS_GET_PARENT                    = 0x2000b702
+	NS_GET_PID_FROM_PIDNS            = 0x4004b706
+	NS_GET_PID_IN_PIDNS              = 0x4004b708
+	NS_GET_TGID_FROM_PIDNS           = 0x4004b707
+	NS_GET_TGID_IN_PIDNS             = 0x4004b709
 	NS_GET_USERNS                    = 0x2000b701
 	OLCUC                            = 0x4
 	ONLCR                            = 0x2
@@ -230,6 +238,20 @@ const (
 	PPPIOCXFERUNIT                   = 0x2000744e
 	PROT_SAO                         = 0x10
 	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
+	PTP_CLOCK_GETCAPS                = 0x40503d01
+	PTP_CLOCK_GETCAPS2               = 0x40503d0a
+	PTP_ENABLE_PPS                   = 0x80043d04
+	PTP_ENABLE_PPS2                  = 0x80043d0d
+	PTP_EXTTS_REQUEST                = 0x80103d02
+	PTP_EXTTS_REQUEST2               = 0x80103d0b
+	PTP_MASK_CLEAR_ALL               = 0x20003d13
+	PTP_MASK_EN_SINGLE               = 0x80043d14
+	PTP_PEROUT_REQUEST               = 0x80383d03
+	PTP_PEROUT_REQUEST2              = 0x80383d0c
+	PTP_PIN_SETFUNC                  = 0x80603d07
+	PTP_PIN_SETFUNC2                 = 0x80603d10
+	PTP_SYS_OFFSET                   = 0x83403d05
+	PTP_SYS_OFFSET2                  = 0x83403d0e
 	PTRACE_GETEVRREGS                = 0x14
 	PTRACE_GETFPREGS                 = 0xe
 	PTRACE_GETREGS64                 = 0x16
@@ -334,6 +356,8 @@ const (
 	RTC_WIE_ON                       = 0x2000700f
 	RTC_WKALM_RD                     = 0x40287010
 	RTC_WKALM_SET                    = 0x8028700f
+	SCM_DEVMEM_DMABUF                = 0x4f
+	SCM_DEVMEM_LINEAR                = 0x4e
 	SCM_TIMESTAMPING                 = 0x25
 	SCM_TIMESTAMPING_OPT_STATS       = 0x36
 	SCM_TIMESTAMPING_PKTINFO         = 0x3a
@@ -372,6 +396,9 @@ const (
 	SO_CNX_ADVICE                    = 0x35
 	SO_COOKIE                        = 0x39
 	SO_DETACH_REUSEPORT_BPF          = 0x44
+	SO_DEVMEM_DMABUF                 = 0x4f
+	SO_DEVMEM_DONTNEED               = 0x50
+	SO_DEVMEM_LINEAR                 = 0x4e
 	SO_DOMAIN                        = 0x27
 	SO_DONTROUTE                     = 0x5
 	SO_ERROR                         = 0x4
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
index ba9e0150..e921ebc6 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
@@ -78,6 +78,8 @@ const (
 	ECHOPRT                          = 0x20
 	EFD_CLOEXEC                      = 0x80000
 	EFD_NONBLOCK                     = 0x800
+	EPIOCGPARAMS                     = 0x40088a02
+	EPIOCSPARAMS                     = 0x80088a01
 	EPOLL_CLOEXEC                    = 0x80000
 	EXTPROC                          = 0x10000000
 	FF1                              = 0x4000
@@ -106,6 +108,7 @@ const (
 	HIDIOCGRAWINFO                   = 0x40084803
 	HIDIOCGRDESC                     = 0x50044802
 	HIDIOCGRDESCSIZE                 = 0x40044801
+	HIDIOCREVOKE                     = 0x8004480d
 	HUPCL                            = 0x4000
 	ICANON                           = 0x100
 	IEXTEN                           = 0x400
@@ -150,9 +153,14 @@ const (
 	NL3                              = 0x300
 	NLDLY                            = 0x300
 	NOFLSH                           = 0x80000000
+	NS_GET_MNTNS_ID                  = 0x4008b705
 	NS_GET_NSTYPE                    = 0x2000b703
 	NS_GET_OWNER_UID                 = 0x2000b704
 	NS_GET_PARENT                    = 0x2000b702
+	NS_GET_PID_FROM_PIDNS            = 0x4004b706
+	NS_GET_PID_IN_PIDNS              = 0x4004b708
+	NS_GET_TGID_FROM_PIDNS           = 0x4004b707
+	NS_GET_TGID_IN_PIDNS             = 0x4004b709
 	NS_GET_USERNS                    = 0x2000b701
 	OLCUC                            = 0x4
 	ONLCR                            = 0x2
@@ -230,6 +238,20 @@ const (
 	PPPIOCXFERUNIT                   = 0x2000744e
 	PROT_SAO                         = 0x10
 	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
+	PTP_CLOCK_GETCAPS                = 0x40503d01
+	PTP_CLOCK_GETCAPS2               = 0x40503d0a
+	PTP_ENABLE_PPS                   = 0x80043d04
+	PTP_ENABLE_PPS2                  = 0x80043d0d
+	PTP_EXTTS_REQUEST                = 0x80103d02
+	PTP_EXTTS_REQUEST2               = 0x80103d0b
+	PTP_MASK_CLEAR_ALL               = 0x20003d13
+	PTP_MASK_EN_SINGLE               = 0x80043d14
+	PTP_PEROUT_REQUEST               = 0x80383d03
+	PTP_PEROUT_REQUEST2              = 0x80383d0c
+	PTP_PIN_SETFUNC                  = 0x80603d07
+	PTP_PIN_SETFUNC2                 = 0x80603d10
+	PTP_SYS_OFFSET                   = 0x83403d05
+	PTP_SYS_OFFSET2                  = 0x83403d0e
 	PTRACE_GETEVRREGS                = 0x14
 	PTRACE_GETFPREGS                 = 0xe
 	PTRACE_GETREGS64                 = 0x16
@@ -334,6 +356,8 @@ const (
 	RTC_WIE_ON                       = 0x2000700f
 	RTC_WKALM_RD                     = 0x40287010
 	RTC_WKALM_SET                    = 0x8028700f
+	SCM_DEVMEM_DMABUF                = 0x4f
+	SCM_DEVMEM_LINEAR                = 0x4e
 	SCM_TIMESTAMPING                 = 0x25
 	SCM_TIMESTAMPING_OPT_STATS       = 0x36
 	SCM_TIMESTAMPING_PKTINFO         = 0x3a
@@ -372,6 +396,9 @@ const (
 	SO_CNX_ADVICE                    = 0x35
 	SO_COOKIE                        = 0x39
 	SO_DETACH_REUSEPORT_BPF          = 0x44
+	SO_DEVMEM_DMABUF                 = 0x4f
+	SO_DEVMEM_DONTNEED               = 0x50
+	SO_DEVMEM_LINEAR                 = 0x4e
 	SO_DOMAIN                        = 0x27
 	SO_DONTROUTE                     = 0x5
 	SO_ERROR                         = 0x4
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
index 07cdfd6e..38ba81c5 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
@@ -78,6 +78,8 @@ const (
 	ECHOPRT                          = 0x400
 	EFD_CLOEXEC                      = 0x80000
 	EFD_NONBLOCK                     = 0x800
+	EPIOCGPARAMS                     = 0x80088a02
+	EPIOCSPARAMS                     = 0x40088a01
 	EPOLL_CLOEXEC                    = 0x80000
 	EXTPROC                          = 0x10000
 	FF1                              = 0x8000
@@ -106,6 +108,7 @@ const (
 	HIDIOCGRAWINFO                   = 0x80084803
 	HIDIOCGRDESC                     = 0x90044802
 	HIDIOCGRDESCSIZE                 = 0x80044801
+	HIDIOCREVOKE                     = 0x4004480d
 	HUPCL                            = 0x400
 	ICANON                           = 0x2
 	IEXTEN                           = 0x8000
@@ -148,9 +151,14 @@ const (
 	NFDBITS                          = 0x40
 	NLDLY                            = 0x100
 	NOFLSH                           = 0x80
+	NS_GET_MNTNS_ID                  = 0x8008b705
 	NS_GET_NSTYPE                    = 0xb703
 	NS_GET_OWNER_UID                 = 0xb704
 	NS_GET_PARENT                    = 0xb702
+	NS_GET_PID_FROM_PIDNS            = 0x8004b706
+	NS_GET_PID_IN_PIDNS              = 0x8004b708
+	NS_GET_TGID_FROM_PIDNS           = 0x8004b707
+	NS_GET_TGID_IN_PIDNS             = 0x8004b709
 	NS_GET_USERNS                    = 0xb701
 	OLCUC                            = 0x2
 	ONLCR                            = 0x4
@@ -227,6 +235,20 @@ const (
 	PPPIOCUNBRIDGECHAN               = 0x7434
 	PPPIOCXFERUNIT                   = 0x744e
 	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
+	PTP_CLOCK_GETCAPS                = 0x80503d01
+	PTP_CLOCK_GETCAPS2               = 0x80503d0a
+	PTP_ENABLE_PPS                   = 0x40043d04
+	PTP_ENABLE_PPS2                  = 0x40043d0d
+	PTP_EXTTS_REQUEST                = 0x40103d02
+	PTP_EXTTS_REQUEST2               = 0x40103d0b
+	PTP_MASK_CLEAR_ALL               = 0x3d13
+	PTP_MASK_EN_SINGLE               = 0x40043d14
+	PTP_PEROUT_REQUEST               = 0x40383d03
+	PTP_PEROUT_REQUEST2              = 0x40383d0c
+	PTP_PIN_SETFUNC                  = 0x40603d07
+	PTP_PIN_SETFUNC2                 = 0x40603d10
+	PTP_SYS_OFFSET                   = 0x43403d05
+	PTP_SYS_OFFSET2                  = 0x43403d0e
 	PTRACE_GETFDPIC                  = 0x21
 	PTRACE_GETFDPIC_EXEC             = 0x0
 	PTRACE_GETFDPIC_INTERP           = 0x1
@@ -266,6 +288,8 @@ const (
 	RTC_WIE_ON                       = 0x700f
 	RTC_WKALM_RD                     = 0x80287010
 	RTC_WKALM_SET                    = 0x4028700f
+	SCM_DEVMEM_DMABUF                = 0x4f
+	SCM_DEVMEM_LINEAR                = 0x4e
 	SCM_TIMESTAMPING                 = 0x25
 	SCM_TIMESTAMPING_OPT_STATS       = 0x36
 	SCM_TIMESTAMPING_PKTINFO         = 0x3a
@@ -304,6 +328,9 @@ const (
 	SO_CNX_ADVICE                    = 0x35
 	SO_COOKIE                        = 0x39
 	SO_DETACH_REUSEPORT_BPF          = 0x44
+	SO_DEVMEM_DMABUF                 = 0x4f
+	SO_DEVMEM_DONTNEED               = 0x50
+	SO_DEVMEM_LINEAR                 = 0x4e
 	SO_DOMAIN                        = 0x27
 	SO_DONTROUTE                     = 0x5
 	SO_ERROR                         = 0x4
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
index 2f1dd214..71f04009 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
@@ -78,6 +78,8 @@ const (
 	ECHOPRT                          = 0x400
 	EFD_CLOEXEC                      = 0x80000
 	EFD_NONBLOCK                     = 0x800
+	EPIOCGPARAMS                     = 0x80088a02
+	EPIOCSPARAMS                     = 0x40088a01
 	EPOLL_CLOEXEC                    = 0x80000
 	EXTPROC                          = 0x10000
 	FF1                              = 0x8000
@@ -106,6 +108,7 @@ const (
 	HIDIOCGRAWINFO                   = 0x80084803
 	HIDIOCGRDESC                     = 0x90044802
 	HIDIOCGRDESCSIZE                 = 0x80044801
+	HIDIOCREVOKE                     = 0x4004480d
 	HUPCL                            = 0x400
 	ICANON                           = 0x2
 	IEXTEN                           = 0x8000
@@ -148,9 +151,14 @@ const (
 	NFDBITS                          = 0x40
 	NLDLY                            = 0x100
 	NOFLSH                           = 0x80
+	NS_GET_MNTNS_ID                  = 0x8008b705
 	NS_GET_NSTYPE                    = 0xb703
 	NS_GET_OWNER_UID                 = 0xb704
 	NS_GET_PARENT                    = 0xb702
+	NS_GET_PID_FROM_PIDNS            = 0x8004b706
+	NS_GET_PID_IN_PIDNS              = 0x8004b708
+	NS_GET_TGID_FROM_PIDNS           = 0x8004b707
+	NS_GET_TGID_IN_PIDNS             = 0x8004b709
 	NS_GET_USERNS                    = 0xb701
 	OLCUC                            = 0x2
 	ONLCR                            = 0x4
@@ -227,6 +235,20 @@ const (
 	PPPIOCUNBRIDGECHAN               = 0x7434
 	PPPIOCXFERUNIT                   = 0x744e
 	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
+	PTP_CLOCK_GETCAPS                = 0x80503d01
+	PTP_CLOCK_GETCAPS2               = 0x80503d0a
+	PTP_ENABLE_PPS                   = 0x40043d04
+	PTP_ENABLE_PPS2                  = 0x40043d0d
+	PTP_EXTTS_REQUEST                = 0x40103d02
+	PTP_EXTTS_REQUEST2               = 0x40103d0b
+	PTP_MASK_CLEAR_ALL               = 0x3d13
+	PTP_MASK_EN_SINGLE               = 0x40043d14
+	PTP_PEROUT_REQUEST               = 0x40383d03
+	PTP_PEROUT_REQUEST2              = 0x40383d0c
+	PTP_PIN_SETFUNC                  = 0x40603d07
+	PTP_PIN_SETFUNC2                 = 0x40603d10
+	PTP_SYS_OFFSET                   = 0x43403d05
+	PTP_SYS_OFFSET2                  = 0x43403d0e
 	PTRACE_DISABLE_TE                = 0x5010
 	PTRACE_ENABLE_TE                 = 0x5009
 	PTRACE_GET_LAST_BREAK            = 0x5006
@@ -338,6 +360,8 @@ const (
 	RTC_WIE_ON                       = 0x700f
 	RTC_WKALM_RD                     = 0x80287010
 	RTC_WKALM_SET                    = 0x4028700f
+	SCM_DEVMEM_DMABUF                = 0x4f
+	SCM_DEVMEM_LINEAR                = 0x4e
 	SCM_TIMESTAMPING                 = 0x25
 	SCM_TIMESTAMPING_OPT_STATS       = 0x36
 	SCM_TIMESTAMPING_PKTINFO         = 0x3a
@@ -376,6 +400,9 @@ const (
 	SO_CNX_ADVICE                    = 0x35
 	SO_COOKIE                        = 0x39
 	SO_DETACH_REUSEPORT_BPF          = 0x44
+	SO_DEVMEM_DMABUF                 = 0x4f
+	SO_DEVMEM_DONTNEED               = 0x50
+	SO_DEVMEM_LINEAR                 = 0x4e
 	SO_DOMAIN                        = 0x27
 	SO_DONTROUTE                     = 0x5
 	SO_ERROR                         = 0x4
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
index f40519d9..c44a3133 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
@@ -82,6 +82,8 @@ const (
 	EFD_CLOEXEC                      = 0x400000
 	EFD_NONBLOCK                     = 0x4000
 	EMT_TAGOVF                       = 0x1
+	EPIOCGPARAMS                     = 0x40088a02
+	EPIOCSPARAMS                     = 0x80088a01
 	EPOLL_CLOEXEC                    = 0x400000
 	EXTPROC                          = 0x10000
 	FF1                              = 0x8000
@@ -110,6 +112,7 @@ const (
 	HIDIOCGRAWINFO                   = 0x40084803
 	HIDIOCGRDESC                     = 0x50044802
 	HIDIOCGRDESCSIZE                 = 0x40044801
+	HIDIOCREVOKE                     = 0x8004480d
 	HUPCL                            = 0x400
 	ICANON                           = 0x2
 	IEXTEN                           = 0x8000
@@ -153,9 +156,14 @@ const (
 	NFDBITS                          = 0x40
 	NLDLY                            = 0x100
 	NOFLSH                           = 0x80
+	NS_GET_MNTNS_ID                  = 0x4008b705
 	NS_GET_NSTYPE                    = 0x2000b703
 	NS_GET_OWNER_UID                 = 0x2000b704
 	NS_GET_PARENT                    = 0x2000b702
+	NS_GET_PID_FROM_PIDNS            = 0x4004b706
+	NS_GET_PID_IN_PIDNS              = 0x4004b708
+	NS_GET_TGID_FROM_PIDNS           = 0x4004b707
+	NS_GET_TGID_IN_PIDNS             = 0x4004b709
 	NS_GET_USERNS                    = 0x2000b701
 	OLCUC                            = 0x2
 	ONLCR                            = 0x4
@@ -232,6 +240,20 @@ const (
 	PPPIOCUNBRIDGECHAN               = 0x20007434
 	PPPIOCXFERUNIT                   = 0x2000744e
 	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
+	PTP_CLOCK_GETCAPS                = 0x40503d01
+	PTP_CLOCK_GETCAPS2               = 0x40503d0a
+	PTP_ENABLE_PPS                   = 0x80043d04
+	PTP_ENABLE_PPS2                  = 0x80043d0d
+	PTP_EXTTS_REQUEST                = 0x80103d02
+	PTP_EXTTS_REQUEST2               = 0x80103d0b
+	PTP_MASK_CLEAR_ALL               = 0x20003d13
+	PTP_MASK_EN_SINGLE               = 0x80043d14
+	PTP_PEROUT_REQUEST               = 0x80383d03
+	PTP_PEROUT_REQUEST2              = 0x80383d0c
+	PTP_PIN_SETFUNC                  = 0x80603d07
+	PTP_PIN_SETFUNC2                 = 0x80603d10
+	PTP_SYS_OFFSET                   = 0x83403d05
+	PTP_SYS_OFFSET2                  = 0x83403d0e
 	PTRACE_GETFPAREGS                = 0x14
 	PTRACE_GETFPREGS                 = 0xe
 	PTRACE_GETFPREGS64               = 0x19
@@ -329,6 +351,8 @@ const (
 	RTC_WIE_ON                       = 0x2000700f
 	RTC_WKALM_RD                     = 0x40287010
 	RTC_WKALM_SET                    = 0x8028700f
+	SCM_DEVMEM_DMABUF                = 0x58
+	SCM_DEVMEM_LINEAR                = 0x57
 	SCM_TIMESTAMPING                 = 0x23
 	SCM_TIMESTAMPING_OPT_STATS       = 0x38
 	SCM_TIMESTAMPING_PKTINFO         = 0x3c
@@ -415,6 +439,9 @@ const (
 	SO_CNX_ADVICE                    = 0x37
 	SO_COOKIE                        = 0x3b
 	SO_DETACH_REUSEPORT_BPF          = 0x47
+	SO_DEVMEM_DMABUF                 = 0x58
+	SO_DEVMEM_DONTNEED               = 0x59
+	SO_DEVMEM_LINEAR                 = 0x57
 	SO_DOMAIN                        = 0x1029
 	SO_DONTROUTE                     = 0x10
 	SO_ERROR                         = 0x1007
diff --git a/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go
index da08b2ab..1ec2b140 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go
@@ -581,6 +581,8 @@ const (
 	AT_EMPTY_PATH                   = 0x1000
 	AT_REMOVEDIR                    = 0x200
 	RENAME_NOREPLACE                = 1 << 0
+	ST_RDONLY                       = 1
+	ST_NOSUID                       = 2
 )
 
 const (
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
index 07642c30..24b346e1 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
@@ -740,6 +740,54 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func renamexNp(from string, to string, flag uint32) (err error) {
+	var _p0 *byte
+	_p0, err = BytePtrFromString(from)
+	if err != nil {
+		return
+	}
+	var _p1 *byte
+	_p1, err = BytePtrFromString(to)
+	if err != nil {
+		return
+	}
+	_, _, e1 := syscall_syscall(libc_renamex_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag))
+	if e1 != 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
+var libc_renamex_np_trampoline_addr uintptr
+
+//go:cgo_import_dynamic libc_renamex_np renamex_np "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) {
+	var _p0 *byte
+	_p0, err = BytePtrFromString(from)
+	if err != nil {
+		return
+	}
+	var _p1 *byte
+	_p1, err = BytePtrFromString(to)
+	if err != nil {
+		return
+	}
+	_, _, e1 := syscall_syscall6(libc_renameatx_np_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), uintptr(flag), 0)
+	if e1 != 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
+var libc_renameatx_np_trampoline_addr uintptr
+
+//go:cgo_import_dynamic libc_renameatx_np renameatx_np "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
 	var _p0 unsafe.Pointer
 	if len(mib) > 0 {
@@ -793,6 +841,26 @@ var libc_pthread_fchdir_np_trampoline_addr uintptr
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) {
+	var _p0 unsafe.Pointer
+	if len(iov) > 0 {
+		_p0 = unsafe.Pointer(&iov[0])
+	} else {
+		_p0 = unsafe.Pointer(&_zero)
+	}
+	_, _, e1 := syscall_syscall9(libc_connectx_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(endpoints)), uintptr(associd), uintptr(flags), uintptr(_p0), uintptr(len(iov)), uintptr(unsafe.Pointer(n)), uintptr(unsafe.Pointer(connid)), 0)
+	if e1 != 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
+var libc_connectx_trampoline_addr uintptr
+
+//go:cgo_import_dynamic libc_connectx connectx "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
 	_, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))
 	if e1 != 0 {
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s
index 923e08cb..ebd21310 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s
+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s
@@ -223,6 +223,16 @@ TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0
 GLOBL	·libc_ioctl_trampoline_addr(SB), RODATA, $8
 DATA	·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)
 
+TEXT libc_renamex_np_trampoline<>(SB),NOSPLIT,$0-0
+	JMP	libc_renamex_np(SB)
+GLOBL	·libc_renamex_np_trampoline_addr(SB), RODATA, $8
+DATA	·libc_renamex_np_trampoline_addr(SB)/8, $libc_renamex_np_trampoline<>(SB)
+
+TEXT libc_renameatx_np_trampoline<>(SB),NOSPLIT,$0-0
+	JMP	libc_renameatx_np(SB)
+GLOBL	·libc_renameatx_np_trampoline_addr(SB), RODATA, $8
+DATA	·libc_renameatx_np_trampoline_addr(SB)/8, $libc_renameatx_np_trampoline<>(SB)
+
 TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0
 	JMP	libc_sysctl(SB)
 GLOBL	·libc_sysctl_trampoline_addr(SB), RODATA, $8
@@ -238,6 +248,11 @@ TEXT libc_pthread_fchdir_np_trampoline<>(SB),NOSPLIT,$0-0
 GLOBL	·libc_pthread_fchdir_np_trampoline_addr(SB), RODATA, $8
 DATA	·libc_pthread_fchdir_np_trampoline_addr(SB)/8, $libc_pthread_fchdir_np_trampoline<>(SB)
 
+TEXT libc_connectx_trampoline<>(SB),NOSPLIT,$0-0
+	JMP	libc_connectx(SB)
+GLOBL	·libc_connectx_trampoline_addr(SB), RODATA, $8
+DATA	·libc_connectx_trampoline_addr(SB)/8, $libc_connectx_trampoline<>(SB)
+
 TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0
 	JMP	libc_sendfile(SB)
 GLOBL	·libc_sendfile_trampoline_addr(SB), RODATA, $8
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
index 7d73dda6..824b9c2d 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
@@ -740,6 +740,54 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func renamexNp(from string, to string, flag uint32) (err error) {
+	var _p0 *byte
+	_p0, err = BytePtrFromString(from)
+	if err != nil {
+		return
+	}
+	var _p1 *byte
+	_p1, err = BytePtrFromString(to)
+	if err != nil {
+		return
+	}
+	_, _, e1 := syscall_syscall(libc_renamex_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag))
+	if e1 != 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
+var libc_renamex_np_trampoline_addr uintptr
+
+//go:cgo_import_dynamic libc_renamex_np renamex_np "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) {
+	var _p0 *byte
+	_p0, err = BytePtrFromString(from)
+	if err != nil {
+		return
+	}
+	var _p1 *byte
+	_p1, err = BytePtrFromString(to)
+	if err != nil {
+		return
+	}
+	_, _, e1 := syscall_syscall6(libc_renameatx_np_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), uintptr(flag), 0)
+	if e1 != 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
+var libc_renameatx_np_trampoline_addr uintptr
+
+//go:cgo_import_dynamic libc_renameatx_np renameatx_np "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
 	var _p0 unsafe.Pointer
 	if len(mib) > 0 {
@@ -793,6 +841,26 @@ var libc_pthread_fchdir_np_trampoline_addr uintptr
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) {
+	var _p0 unsafe.Pointer
+	if len(iov) > 0 {
+		_p0 = unsafe.Pointer(&iov[0])
+	} else {
+		_p0 = unsafe.Pointer(&_zero)
+	}
+	_, _, e1 := syscall_syscall9(libc_connectx_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(endpoints)), uintptr(associd), uintptr(flags), uintptr(_p0), uintptr(len(iov)), uintptr(unsafe.Pointer(n)), uintptr(unsafe.Pointer(connid)), 0)
+	if e1 != 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
+var libc_connectx_trampoline_addr uintptr
+
+//go:cgo_import_dynamic libc_connectx connectx "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
 	_, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))
 	if e1 != 0 {
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s
index 05770011..4f178a22 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s
+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s
@@ -223,6 +223,16 @@ TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0
 GLOBL	·libc_ioctl_trampoline_addr(SB), RODATA, $8
 DATA	·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)
 
+TEXT libc_renamex_np_trampoline<>(SB),NOSPLIT,$0-0
+	JMP	libc_renamex_np(SB)
+GLOBL	·libc_renamex_np_trampoline_addr(SB), RODATA, $8
+DATA	·libc_renamex_np_trampoline_addr(SB)/8, $libc_renamex_np_trampoline<>(SB)
+
+TEXT libc_renameatx_np_trampoline<>(SB),NOSPLIT,$0-0
+	JMP	libc_renameatx_np(SB)
+GLOBL	·libc_renameatx_np_trampoline_addr(SB), RODATA, $8
+DATA	·libc_renameatx_np_trampoline_addr(SB)/8, $libc_renameatx_np_trampoline<>(SB)
+
 TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0
 	JMP	libc_sysctl(SB)
 GLOBL	·libc_sysctl_trampoline_addr(SB), RODATA, $8
@@ -238,6 +248,11 @@ TEXT libc_pthread_fchdir_np_trampoline<>(SB),NOSPLIT,$0-0
 GLOBL	·libc_pthread_fchdir_np_trampoline_addr(SB), RODATA, $8
 DATA	·libc_pthread_fchdir_np_trampoline_addr(SB)/8, $libc_pthread_fchdir_np_trampoline<>(SB)
 
+TEXT libc_connectx_trampoline<>(SB),NOSPLIT,$0-0
+	JMP	libc_connectx(SB)
+GLOBL	·libc_connectx_trampoline_addr(SB), RODATA, $8
+DATA	·libc_connectx_trampoline_addr(SB)/8, $libc_connectx_trampoline<>(SB)
+
 TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0
 	JMP	libc_sendfile(SB)
 GLOBL	·libc_sendfile_trampoline_addr(SB), RODATA, $8
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go
index 87d8612a..5cc1e8eb 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_linux.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go
@@ -592,6 +592,16 @@ func ClockGettime(clockid int32, time *Timespec) (err error) {
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func ClockSettime(clockid int32, time *Timespec) (err error) {
+	_, _, e1 := Syscall(SYS_CLOCK_SETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
+	if e1 != 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) {
 	_, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0)
 	if e1 != 0 {
@@ -971,23 +981,6 @@ func Getpriority(which int, who int) (prio int, err error) {
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
-func Getrandom(buf []byte, flags int) (n int, err error) {
-	var _p0 unsafe.Pointer
-	if len(buf) > 0 {
-		_p0 = unsafe.Pointer(&buf[0])
-	} else {
-		_p0 = unsafe.Pointer(&_zero)
-	}
-	r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
-	n = int(r0)
-	if e1 != 0 {
-		err = errnoErr(e1)
-	}
-	return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
 func Getrusage(who int, rusage *Rusage) (err error) {
 	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
 	if e1 != 0 {
@@ -2229,3 +2222,19 @@ func Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint)
 	}
 	return
 }
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mseal(b []byte, flags uint) (err error) {
+	var _p0 unsafe.Pointer
+	if len(b) > 0 {
+		_p0 = unsafe.Pointer(&b[0])
+	} else {
+		_p0 = unsafe.Pointer(&_zero)
+	}
+	_, _, e1 := Syscall(SYS_MSEAL, uintptr(_p0), uintptr(len(b)), uintptr(flags))
+	if e1 != 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go
index 9dc42410..1851df14 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go
@@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {
+	var _p0 *byte
+	_p0, err = BytePtrFromString(fsType)
+	if err != nil {
+		return
+	}
+	var _p1 *byte
+	_p1, err = BytePtrFromString(dir)
+	if err != nil {
+		return
+	}
+	_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)
+	if e1 != 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
+var libc_mount_trampoline_addr uintptr
+
+//go:cgo_import_dynamic libc_mount mount "libc.so"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
 	_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
 	if e1 != 0 {
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s
index 41b56173..0b43c693 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s
@@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0
 GLOBL	·libc_mknodat_trampoline_addr(SB), RODATA, $4
 DATA	·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB)
 
+TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0
+	JMP	libc_mount(SB)
+GLOBL	·libc_mount_trampoline_addr(SB), RODATA, $4
+DATA	·libc_mount_trampoline_addr(SB)/4, $libc_mount_trampoline<>(SB)
+
 TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0
 	JMP	libc_nanosleep(SB)
 GLOBL	·libc_nanosleep_trampoline_addr(SB), RODATA, $4
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
index 0d3a0751..e1ec0dbe 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
@@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {
+	var _p0 *byte
+	_p0, err = BytePtrFromString(fsType)
+	if err != nil {
+		return
+	}
+	var _p1 *byte
+	_p1, err = BytePtrFromString(dir)
+	if err != nil {
+		return
+	}
+	_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)
+	if e1 != 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
+var libc_mount_trampoline_addr uintptr
+
+//go:cgo_import_dynamic libc_mount mount "libc.so"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
 	_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
 	if e1 != 0 {
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s
index 4019a656..880c6d6e 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s
@@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0
 GLOBL	·libc_mknodat_trampoline_addr(SB), RODATA, $8
 DATA	·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)
 
+TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0
+	JMP	libc_mount(SB)
+GLOBL	·libc_mount_trampoline_addr(SB), RODATA, $8
+DATA	·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)
+
 TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0
 	JMP	libc_nanosleep(SB)
 GLOBL	·libc_nanosleep_trampoline_addr(SB), RODATA, $8
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go
index c39f7776..7c8452a6 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go
@@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {
+	var _p0 *byte
+	_p0, err = BytePtrFromString(fsType)
+	if err != nil {
+		return
+	}
+	var _p1 *byte
+	_p1, err = BytePtrFromString(dir)
+	if err != nil {
+		return
+	}
+	_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)
+	if e1 != 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
+var libc_mount_trampoline_addr uintptr
+
+//go:cgo_import_dynamic libc_mount mount "libc.so"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
 	_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
 	if e1 != 0 {
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s
index ac4af24f..b8ef95b0 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s
@@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0
 GLOBL	·libc_mknodat_trampoline_addr(SB), RODATA, $4
 DATA	·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB)
 
+TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0
+	JMP	libc_mount(SB)
+GLOBL	·libc_mount_trampoline_addr(SB), RODATA, $4
+DATA	·libc_mount_trampoline_addr(SB)/4, $libc_mount_trampoline<>(SB)
+
 TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0
 	JMP	libc_nanosleep(SB)
 GLOBL	·libc_nanosleep_trampoline_addr(SB), RODATA, $4
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go
index 57571d07..2ffdf861 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go
@@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {
+	var _p0 *byte
+	_p0, err = BytePtrFromString(fsType)
+	if err != nil {
+		return
+	}
+	var _p1 *byte
+	_p1, err = BytePtrFromString(dir)
+	if err != nil {
+		return
+	}
+	_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)
+	if e1 != 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
+var libc_mount_trampoline_addr uintptr
+
+//go:cgo_import_dynamic libc_mount mount "libc.so"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
 	_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
 	if e1 != 0 {
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s
index f77d5321..2af3b5c7 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s
@@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0
 GLOBL	·libc_mknodat_trampoline_addr(SB), RODATA, $8
 DATA	·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)
 
+TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0
+	JMP	libc_mount(SB)
+GLOBL	·libc_mount_trampoline_addr(SB), RODATA, $8
+DATA	·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)
+
 TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0
 	JMP	libc_nanosleep(SB)
 GLOBL	·libc_nanosleep_trampoline_addr(SB), RODATA, $8
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go
index e62963e6..1da08d52 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go
@@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {
+	var _p0 *byte
+	_p0, err = BytePtrFromString(fsType)
+	if err != nil {
+		return
+	}
+	var _p1 *byte
+	_p1, err = BytePtrFromString(dir)
+	if err != nil {
+		return
+	}
+	_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)
+	if e1 != 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
+var libc_mount_trampoline_addr uintptr
+
+//go:cgo_import_dynamic libc_mount mount "libc.so"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
 	_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
 	if e1 != 0 {
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s
index fae140b6..b7a25135 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s
@@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0
 GLOBL	·libc_mknodat_trampoline_addr(SB), RODATA, $8
 DATA	·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)
 
+TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0
+	JMP	libc_mount(SB)
+GLOBL	·libc_mount_trampoline_addr(SB), RODATA, $8
+DATA	·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)
+
 TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0
 	JMP	libc_nanosleep(SB)
 GLOBL	·libc_nanosleep_trampoline_addr(SB), RODATA, $8
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go
index 00831354..6e85b0aa 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go
@@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {
+	var _p0 *byte
+	_p0, err = BytePtrFromString(fsType)
+	if err != nil {
+		return
+	}
+	var _p1 *byte
+	_p1, err = BytePtrFromString(dir)
+	if err != nil {
+		return
+	}
+	_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)
+	if e1 != 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
+var libc_mount_trampoline_addr uintptr
+
+//go:cgo_import_dynamic libc_mount mount "libc.so"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
 	_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
 	if e1 != 0 {
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s
index 9d1e0ff0..f15dadf0 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s
@@ -555,6 +555,12 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0
 GLOBL	·libc_mknodat_trampoline_addr(SB), RODATA, $8
 DATA	·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)
 
+TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0
+	CALL	libc_mount(SB)
+	RET
+GLOBL	·libc_mount_trampoline_addr(SB), RODATA, $8
+DATA	·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)
+
 TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0
 	CALL	libc_nanosleep(SB)
 	RET
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go
index 79029ed5..28b487df 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go
@@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {
+	var _p0 *byte
+	_p0, err = BytePtrFromString(fsType)
+	if err != nil {
+		return
+	}
+	var _p1 *byte
+	_p1, err = BytePtrFromString(dir)
+	if err != nil {
+		return
+	}
+	_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)
+	if e1 != 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
+var libc_mount_trampoline_addr uintptr
+
+//go:cgo_import_dynamic libc_mount mount "libc.so"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
 	_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
 	if e1 != 0 {
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s
index da115f9a..1e7f321e 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s
@@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0
 GLOBL	·libc_mknodat_trampoline_addr(SB), RODATA, $8
 DATA	·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)
 
+TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0
+	JMP	libc_mount(SB)
+GLOBL	·libc_mount_trampoline_addr(SB), RODATA, $8
+DATA	·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)
+
 TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0
 	JMP	libc_nanosleep(SB)
 GLOBL	·libc_nanosleep_trampoline_addr(SB), RODATA, $8
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go
index 53aef5dc..524b0820 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go
@@ -457,4 +457,5 @@ const (
 	SYS_LSM_GET_SELF_ATTR            = 459
 	SYS_LSM_SET_SELF_ATTR            = 460
 	SYS_LSM_LIST_MODULES             = 461
+	SYS_MSEAL                        = 462
 )
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go
index 71d52476..f485dbf4 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go
@@ -341,6 +341,7 @@ const (
 	SYS_STATX                   = 332
 	SYS_IO_PGETEVENTS           = 333
 	SYS_RSEQ                    = 334
+	SYS_URETPROBE               = 335
 	SYS_PIDFD_SEND_SIGNAL       = 424
 	SYS_IO_URING_SETUP          = 425
 	SYS_IO_URING_ENTER          = 426
@@ -379,4 +380,5 @@ const (
 	SYS_LSM_GET_SELF_ATTR       = 459
 	SYS_LSM_SET_SELF_ATTR       = 460
 	SYS_LSM_LIST_MODULES        = 461
+	SYS_MSEAL                   = 462
 )
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go
index c7477061..70b35bf3 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go
@@ -421,4 +421,5 @@ const (
 	SYS_LSM_GET_SELF_ATTR            = 459
 	SYS_LSM_SET_SELF_ATTR            = 460
 	SYS_LSM_LIST_MODULES             = 461
+	SYS_MSEAL                        = 462
 )
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
index f96e214f..1893e2fe 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
@@ -85,7 +85,7 @@ const (
 	SYS_SPLICE                  = 76
 	SYS_TEE                     = 77
 	SYS_READLINKAT              = 78
-	SYS_FSTATAT                 = 79
+	SYS_NEWFSTATAT              = 79
 	SYS_FSTAT                   = 80
 	SYS_SYNC                    = 81
 	SYS_FSYNC                   = 82
@@ -324,4 +324,5 @@ const (
 	SYS_LSM_GET_SELF_ATTR       = 459
 	SYS_LSM_SET_SELF_ATTR       = 460
 	SYS_LSM_LIST_MODULES        = 461
+	SYS_MSEAL                   = 462
 )
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go
index 28425346..16a4017d 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go
@@ -84,6 +84,8 @@ const (
 	SYS_SPLICE                  = 76
 	SYS_TEE                     = 77
 	SYS_READLINKAT              = 78
+	SYS_NEWFSTATAT              = 79
+	SYS_FSTAT                   = 80
 	SYS_SYNC                    = 81
 	SYS_FSYNC                   = 82
 	SYS_FDATASYNC               = 83
@@ -318,4 +320,5 @@ const (
 	SYS_LSM_GET_SELF_ATTR       = 459
 	SYS_LSM_SET_SELF_ATTR       = 460
 	SYS_LSM_LIST_MODULES        = 461
+	SYS_MSEAL                   = 462
 )
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go
index d0953018..7e567f1e 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go
@@ -441,4 +441,5 @@ const (
 	SYS_LSM_GET_SELF_ATTR            = 4459
 	SYS_LSM_SET_SELF_ATTR            = 4460
 	SYS_LSM_LIST_MODULES             = 4461
+	SYS_MSEAL                        = 4462
 )
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go
index 295c7f4b..38ae55e5 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go
@@ -371,4 +371,5 @@ const (
 	SYS_LSM_GET_SELF_ATTR       = 5459
 	SYS_LSM_SET_SELF_ATTR       = 5460
 	SYS_LSM_LIST_MODULES        = 5461
+	SYS_MSEAL                   = 5462
 )
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go
index d1a9eaca..55e92e60 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go
@@ -371,4 +371,5 @@ const (
 	SYS_LSM_GET_SELF_ATTR       = 5459
 	SYS_LSM_SET_SELF_ATTR       = 5460
 	SYS_LSM_LIST_MODULES        = 5461
+	SYS_MSEAL                   = 5462
 )
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go
index bec157c3..60658d6a 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go
@@ -441,4 +441,5 @@ const (
 	SYS_LSM_GET_SELF_ATTR            = 4459
 	SYS_LSM_SET_SELF_ATTR            = 4460
 	SYS_LSM_LIST_MODULES             = 4461
+	SYS_MSEAL                        = 4462
 )
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go
index 7ee7bdc4..e203e8a7 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go
@@ -448,4 +448,5 @@ const (
 	SYS_LSM_GET_SELF_ATTR            = 459
 	SYS_LSM_SET_SELF_ATTR            = 460
 	SYS_LSM_LIST_MODULES             = 461
+	SYS_MSEAL                        = 462
 )
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go
index fad1f25b..5944b97d 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go
@@ -420,4 +420,5 @@ const (
 	SYS_LSM_GET_SELF_ATTR       = 459
 	SYS_LSM_SET_SELF_ATTR       = 460
 	SYS_LSM_LIST_MODULES        = 461
+	SYS_MSEAL                   = 462
 )
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go
index 7d3e1635..c66d416d 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go
@@ -420,4 +420,5 @@ const (
 	SYS_LSM_GET_SELF_ATTR       = 459
 	SYS_LSM_SET_SELF_ATTR       = 460
 	SYS_LSM_LIST_MODULES        = 461
+	SYS_MSEAL                   = 462
 )
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go
index 0ed53ad9..a5459e76 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go
@@ -84,7 +84,7 @@ const (
 	SYS_SPLICE                  = 76
 	SYS_TEE                     = 77
 	SYS_READLINKAT              = 78
-	SYS_FSTATAT                 = 79
+	SYS_NEWFSTATAT              = 79
 	SYS_FSTAT                   = 80
 	SYS_SYNC                    = 81
 	SYS_FSYNC                   = 82
@@ -325,4 +325,5 @@ const (
 	SYS_LSM_GET_SELF_ATTR       = 459
 	SYS_LSM_SET_SELF_ATTR       = 460
 	SYS_LSM_LIST_MODULES        = 461
+	SYS_MSEAL                   = 462
 )
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go
index 2fba04ad..01d86825 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go
@@ -386,4 +386,5 @@ const (
 	SYS_LSM_GET_SELF_ATTR       = 459
 	SYS_LSM_SET_SELF_ATTR       = 460
 	SYS_LSM_LIST_MODULES        = 461
+	SYS_MSEAL                   = 462
 )
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go
index 621d00d7..7b703e77 100644
--- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go
+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go
@@ -399,4 +399,5 @@ const (
 	SYS_LSM_GET_SELF_ATTR       = 459
 	SYS_LSM_SET_SELF_ATTR       = 460
 	SYS_LSM_LIST_MODULES        = 461
+	SYS_MSEAL                   = 462
 )
diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
index 091d107f..17c53bd9 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
@@ -306,6 +306,19 @@ type XVSockPgen struct {
 
 type _Socklen uint32
 
+type SaeAssocID uint32
+
+type SaeConnID uint32
+
+type SaEndpoints struct {
+	Srcif      uint32
+	Srcaddr    *RawSockaddr
+	Srcaddrlen uint32
+	Dstaddr    *RawSockaddr
+	Dstaddrlen uint32
+	_          [4]byte
+}
+
 type Xucred struct {
 	Version uint32
 	Uid     uint32
@@ -449,11 +462,14 @@ type FdSet struct {
 
 const (
 	SizeofIfMsghdr    = 0x70
+	SizeofIfMsghdr2   = 0xa0
 	SizeofIfData      = 0x60
+	SizeofIfData64    = 0x80
 	SizeofIfaMsghdr   = 0x14
 	SizeofIfmaMsghdr  = 0x10
 	SizeofIfmaMsghdr2 = 0x14
 	SizeofRtMsghdr    = 0x5c
+	SizeofRtMsghdr2   = 0x5c
 	SizeofRtMetrics   = 0x38
 )
 
@@ -467,6 +483,20 @@ type IfMsghdr struct {
 	Data    IfData
 }
 
+type IfMsghdr2 struct {
+	Msglen     uint16
+	Version    uint8
+	Type       uint8
+	Addrs      int32
+	Flags      int32
+	Index      uint16
+	Snd_len    int32
+	Snd_maxlen int32
+	Snd_drops  int32
+	Timer      int32
+	Data       IfData64
+}
+
 type IfData struct {
 	Type       uint8
 	Typelen    uint8
@@ -499,6 +529,34 @@ type IfData struct {
 	Reserved2  uint32
 }
 
+type IfData64 struct {
+	Type       uint8
+	Typelen    uint8
+	Physical   uint8
+	Addrlen    uint8
+	Hdrlen     uint8
+	Recvquota  uint8
+	Xmitquota  uint8
+	Unused1    uint8
+	Mtu        uint32
+	Metric     uint32
+	Baudrate   uint64
+	Ipackets   uint64
+	Ierrors    uint64
+	Opackets   uint64
+	Oerrors    uint64
+	Collisions uint64
+	Ibytes     uint64
+	Obytes     uint64
+	Imcasts    uint64
+	Omcasts    uint64
+	Iqdrops    uint64
+	Noproto    uint64
+	Recvtiming uint32
+	Xmittiming uint32
+	Lastchange Timeval32
+}
+
 type IfaMsghdr struct {
 	Msglen  uint16
 	Version uint8
@@ -544,6 +602,21 @@ type RtMsghdr struct {
 	Rmx     RtMetrics
 }
 
+type RtMsghdr2 struct {
+	Msglen      uint16
+	Version     uint8
+	Type        uint8
+	Index       uint16
+	Flags       int32
+	Addrs       int32
+	Refcnt      int32
+	Parentflags int32
+	Reserved    int32
+	Use         int32
+	Inits       uint32
+	Rmx         RtMetrics
+}
+
 type RtMetrics struct {
 	Locks    uint32
 	Mtu      uint32
diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
index 28ff4ef7..2392226a 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
@@ -306,6 +306,19 @@ type XVSockPgen struct {
 
 type _Socklen uint32
 
+type SaeAssocID uint32
+
+type SaeConnID uint32
+
+type SaEndpoints struct {
+	Srcif      uint32
+	Srcaddr    *RawSockaddr
+	Srcaddrlen uint32
+	Dstaddr    *RawSockaddr
+	Dstaddrlen uint32
+	_          [4]byte
+}
+
 type Xucred struct {
 	Version uint32
 	Uid     uint32
@@ -449,11 +462,14 @@ type FdSet struct {
 
 const (
 	SizeofIfMsghdr    = 0x70
+	SizeofIfMsghdr2   = 0xa0
 	SizeofIfData      = 0x60
+	SizeofIfData64    = 0x80
 	SizeofIfaMsghdr   = 0x14
 	SizeofIfmaMsghdr  = 0x10
 	SizeofIfmaMsghdr2 = 0x14
 	SizeofRtMsghdr    = 0x5c
+	SizeofRtMsghdr2   = 0x5c
 	SizeofRtMetrics   = 0x38
 )
 
@@ -467,6 +483,20 @@ type IfMsghdr struct {
 	Data    IfData
 }
 
+type IfMsghdr2 struct {
+	Msglen     uint16
+	Version    uint8
+	Type       uint8
+	Addrs      int32
+	Flags      int32
+	Index      uint16
+	Snd_len    int32
+	Snd_maxlen int32
+	Snd_drops  int32
+	Timer      int32
+	Data       IfData64
+}
+
 type IfData struct {
 	Type       uint8
 	Typelen    uint8
@@ -499,6 +529,34 @@ type IfData struct {
 	Reserved2  uint32
 }
 
+type IfData64 struct {
+	Type       uint8
+	Typelen    uint8
+	Physical   uint8
+	Addrlen    uint8
+	Hdrlen     uint8
+	Recvquota  uint8
+	Xmitquota  uint8
+	Unused1    uint8
+	Mtu        uint32
+	Metric     uint32
+	Baudrate   uint64
+	Ipackets   uint64
+	Ierrors    uint64
+	Opackets   uint64
+	Oerrors    uint64
+	Collisions uint64
+	Ibytes     uint64
+	Obytes     uint64
+	Imcasts    uint64
+	Omcasts    uint64
+	Iqdrops    uint64
+	Noproto    uint64
+	Recvtiming uint32
+	Xmittiming uint32
+	Lastchange Timeval32
+}
+
 type IfaMsghdr struct {
 	Msglen  uint16
 	Version uint8
@@ -544,6 +602,21 @@ type RtMsghdr struct {
 	Rmx     RtMetrics
 }
 
+type RtMsghdr2 struct {
+	Msglen      uint16
+	Version     uint8
+	Type        uint8
+	Index       uint16
+	Flags       int32
+	Addrs       int32
+	Refcnt      int32
+	Parentflags int32
+	Reserved    int32
+	Use         int32
+	Inits       uint32
+	Rmx         RtMetrics
+}
+
 type RtMetrics struct {
 	Locks    uint32
 	Mtu      uint32
diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go
index 6cbd094a..51e13eb0 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go
@@ -625,6 +625,7 @@ const (
 	POLLRDNORM   = 0x40
 	POLLWRBAND   = 0x100
 	POLLWRNORM   = 0x4
+	POLLRDHUP    = 0x4000
 )
 
 type CapRights struct {
diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
index 7c03b6ee..d002d8ef 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
@@ -630,6 +630,7 @@ const (
 	POLLRDNORM   = 0x40
 	POLLWRBAND   = 0x100
 	POLLWRNORM   = 0x4
+	POLLRDHUP    = 0x4000
 )
 
 type CapRights struct {
diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go
index 422107ee..3f863d89 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go
@@ -616,6 +616,7 @@ const (
 	POLLRDNORM   = 0x40
 	POLLWRBAND   = 0x100
 	POLLWRNORM   = 0x4
+	POLLRDHUP    = 0x4000
 )
 
 type CapRights struct {
diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go
index 505a12ac..61c72931 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go
@@ -610,6 +610,7 @@ const (
 	POLLRDNORM   = 0x40
 	POLLWRBAND   = 0x100
 	POLLWRNORM   = 0x4
+	POLLRDHUP    = 0x4000
 )
 
 type CapRights struct {
diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go
index cc986c79..b5d17414 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go
@@ -612,6 +612,7 @@ const (
 	POLLRDNORM   = 0x40
 	POLLWRBAND   = 0x100
 	POLLWRNORM   = 0x4
+	POLLRDHUP    = 0x4000
 )
 
 type CapRights struct {
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go
index 4740b834..5537148d 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_linux.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go
@@ -87,30 +87,35 @@ type StatxTimestamp struct {
 }
 
 type Statx_t struct {
-	Mask             uint32
-	Blksize          uint32
-	Attributes       uint64
-	Nlink            uint32
-	Uid              uint32
-	Gid              uint32
-	Mode             uint16
-	_                [1]uint16
-	Ino              uint64
-	Size             uint64
-	Blocks           uint64
-	Attributes_mask  uint64
-	Atime            StatxTimestamp
-	Btime            StatxTimestamp
-	Ctime            StatxTimestamp
-	Mtime            StatxTimestamp
-	Rdev_major       uint32
-	Rdev_minor       uint32
-	Dev_major        uint32
-	Dev_minor        uint32
-	Mnt_id           uint64
-	Dio_mem_align    uint32
-	Dio_offset_align uint32
-	_                [12]uint64
+	Mask                      uint32
+	Blksize                   uint32
+	Attributes                uint64
+	Nlink                     uint32
+	Uid                       uint32
+	Gid                       uint32
+	Mode                      uint16
+	_                         [1]uint16
+	Ino                       uint64
+	Size                      uint64
+	Blocks                    uint64
+	Attributes_mask           uint64
+	Atime                     StatxTimestamp
+	Btime                     StatxTimestamp
+	Ctime                     StatxTimestamp
+	Mtime                     StatxTimestamp
+	Rdev_major                uint32
+	Rdev_minor                uint32
+	Dev_major                 uint32
+	Dev_minor                 uint32
+	Mnt_id                    uint64
+	Dio_mem_align             uint32
+	Dio_offset_align          uint32
+	Subvol                    uint64
+	Atomic_write_unit_min     uint32
+	Atomic_write_unit_max     uint32
+	Atomic_write_segments_max uint32
+	_                         [1]uint32
+	_                         [9]uint64
 }
 
 type Fsid struct {
@@ -515,6 +520,29 @@ type TCPInfo struct {
 	Total_rto_time       uint32
 }
 
+type TCPVegasInfo struct {
+	Enabled uint32
+	Rttcnt  uint32
+	Rtt     uint32
+	Minrtt  uint32
+}
+
+type TCPDCTCPInfo struct {
+	Enabled  uint16
+	Ce_state uint16
+	Alpha    uint32
+	Ab_ecn   uint32
+	Ab_tot   uint32
+}
+
+type TCPBBRInfo struct {
+	Bw_lo       uint32
+	Bw_hi       uint32
+	Min_rtt     uint32
+	Pacing_gain uint32
+	Cwnd_gain   uint32
+}
+
 type CanFilter struct {
 	Id   uint32
 	Mask uint32
@@ -556,6 +584,7 @@ const (
 	SizeofICMPv6Filter      = 0x20
 	SizeofUcred             = 0xc
 	SizeofTCPInfo           = 0xf8
+	SizeofTCPCCInfo         = 0x14
 	SizeofCanFilter         = 0x8
 	SizeofTCPRepairOpt      = 0x8
 )
@@ -1723,12 +1752,6 @@ const (
 	IFLA_IPVLAN_UNSPEC                         = 0x0
 	IFLA_IPVLAN_MODE                           = 0x1
 	IFLA_IPVLAN_FLAGS                          = 0x2
-	NETKIT_NEXT                                = -0x1
-	NETKIT_PASS                                = 0x0
-	NETKIT_DROP                                = 0x2
-	NETKIT_REDIRECT                            = 0x7
-	NETKIT_L2                                  = 0x0
-	NETKIT_L3                                  = 0x1
 	IFLA_NETKIT_UNSPEC                         = 0x0
 	IFLA_NETKIT_PEER_INFO                      = 0x1
 	IFLA_NETKIT_PRIMARY                        = 0x2
@@ -1767,6 +1790,7 @@ const (
 	IFLA_VXLAN_DF                              = 0x1d
 	IFLA_VXLAN_VNIFILTER                       = 0x1e
 	IFLA_VXLAN_LOCALBYPASS                     = 0x1f
+	IFLA_VXLAN_LABEL_POLICY                    = 0x20
 	IFLA_GENEVE_UNSPEC                         = 0x0
 	IFLA_GENEVE_ID                             = 0x1
 	IFLA_GENEVE_REMOTE                         = 0x2
@@ -1796,6 +1820,8 @@ const (
 	IFLA_GTP_ROLE                              = 0x4
 	IFLA_GTP_CREATE_SOCKETS                    = 0x5
 	IFLA_GTP_RESTART_COUNT                     = 0x6
+	IFLA_GTP_LOCAL                             = 0x7
+	IFLA_GTP_LOCAL6                            = 0x8
 	IFLA_BOND_UNSPEC                           = 0x0
 	IFLA_BOND_MODE                             = 0x1
 	IFLA_BOND_ACTIVE_SLAVE                     = 0x2
@@ -1828,6 +1854,7 @@ const (
 	IFLA_BOND_AD_LACP_ACTIVE                   = 0x1d
 	IFLA_BOND_MISSED_MAX                       = 0x1e
 	IFLA_BOND_NS_IP6_TARGET                    = 0x1f
+	IFLA_BOND_COUPLED_CONTROL                  = 0x20
 	IFLA_BOND_AD_INFO_UNSPEC                   = 0x0
 	IFLA_BOND_AD_INFO_AGGREGATOR               = 0x1
 	IFLA_BOND_AD_INFO_NUM_PORTS                = 0x2
@@ -1896,6 +1923,7 @@ const (
 	IFLA_HSR_SEQ_NR                            = 0x5
 	IFLA_HSR_VERSION                           = 0x6
 	IFLA_HSR_PROTOCOL                          = 0x7
+	IFLA_HSR_INTERLINK                         = 0x8
 	IFLA_STATS_UNSPEC                          = 0x0
 	IFLA_STATS_LINK_64                         = 0x1
 	IFLA_STATS_LINK_XSTATS                     = 0x2
@@ -1948,6 +1976,15 @@ const (
 	IFLA_DSA_MASTER                            = 0x1
 )
 
+const (
+	NETKIT_NEXT     = -0x1
+	NETKIT_PASS     = 0x0
+	NETKIT_DROP     = 0x2
+	NETKIT_REDIRECT = 0x7
+	NETKIT_L2       = 0x0
+	NETKIT_L3       = 0x1
+)
+
 const (
 	NF_INET_PRE_ROUTING  = 0x0
 	NF_INET_LOCAL_IN     = 0x1
@@ -2485,7 +2522,7 @@ type XDPMmapOffsets struct {
 type XDPUmemReg struct {
 	Addr            uint64
 	Len             uint64
-	Chunk_size      uint32
+	Size            uint32
 	Headroom        uint32
 	Flags           uint32
 	Tx_metadata_len uint32
@@ -2557,8 +2594,8 @@ const (
 	SOF_TIMESTAMPING_BIND_PHC     = 0x8000
 	SOF_TIMESTAMPING_OPT_ID_TCP   = 0x10000
 
-	SOF_TIMESTAMPING_LAST = 0x10000
-	SOF_TIMESTAMPING_MASK = 0x1ffff
+	SOF_TIMESTAMPING_LAST = 0x20000
+	SOF_TIMESTAMPING_MASK = 0x3ffff
 
 	SCM_TSTAMP_SND   = 0x0
 	SCM_TSTAMP_SCHED = 0x1
@@ -3473,7 +3510,7 @@ const (
 	DEVLINK_PORT_FN_ATTR_STATE                         = 0x2
 	DEVLINK_PORT_FN_ATTR_OPSTATE                       = 0x3
 	DEVLINK_PORT_FN_ATTR_CAPS                          = 0x4
-	DEVLINK_PORT_FUNCTION_ATTR_MAX                     = 0x5
+	DEVLINK_PORT_FUNCTION_ATTR_MAX                     = 0x6
 )
 
 type FsverityDigest struct {
@@ -3504,7 +3541,7 @@ type Nhmsg struct {
 type NexthopGrp struct {
 	Id     uint32
 	Weight uint8
-	Resvd1 uint8
+	High   uint8
 	Resvd2 uint16
 }
 
@@ -3765,7 +3802,7 @@ const (
 	ETHTOOL_MSG_PSE_GET                       = 0x24
 	ETHTOOL_MSG_PSE_SET                       = 0x25
 	ETHTOOL_MSG_RSS_GET                       = 0x26
-	ETHTOOL_MSG_USER_MAX                      = 0x2b
+	ETHTOOL_MSG_USER_MAX                      = 0x2d
 	ETHTOOL_MSG_KERNEL_NONE                   = 0x0
 	ETHTOOL_MSG_STRSET_GET_REPLY              = 0x1
 	ETHTOOL_MSG_LINKINFO_GET_REPLY            = 0x2
@@ -3805,12 +3842,15 @@ const (
 	ETHTOOL_MSG_MODULE_NTF                    = 0x24
 	ETHTOOL_MSG_PSE_GET_REPLY                 = 0x25
 	ETHTOOL_MSG_RSS_GET_REPLY                 = 0x26
-	ETHTOOL_MSG_KERNEL_MAX                    = 0x2b
+	ETHTOOL_MSG_KERNEL_MAX                    = 0x2e
+	ETHTOOL_FLAG_COMPACT_BITSETS              = 0x1
+	ETHTOOL_FLAG_OMIT_REPLY                   = 0x2
+	ETHTOOL_FLAG_STATS                        = 0x4
 	ETHTOOL_A_HEADER_UNSPEC                   = 0x0
 	ETHTOOL_A_HEADER_DEV_INDEX                = 0x1
 	ETHTOOL_A_HEADER_DEV_NAME                 = 0x2
 	ETHTOOL_A_HEADER_FLAGS                    = 0x3
-	ETHTOOL_A_HEADER_MAX                      = 0x3
+	ETHTOOL_A_HEADER_MAX                      = 0x4
 	ETHTOOL_A_BITSET_BIT_UNSPEC               = 0x0
 	ETHTOOL_A_BITSET_BIT_INDEX                = 0x1
 	ETHTOOL_A_BITSET_BIT_NAME                 = 0x2
@@ -3947,7 +3987,7 @@ const (
 	ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL   = 0x17
 	ETHTOOL_A_COALESCE_USE_CQE_MODE_TX        = 0x18
 	ETHTOOL_A_COALESCE_USE_CQE_MODE_RX        = 0x19
-	ETHTOOL_A_COALESCE_MAX                    = 0x1c
+	ETHTOOL_A_COALESCE_MAX                    = 0x1e
 	ETHTOOL_A_PAUSE_UNSPEC                    = 0x0
 	ETHTOOL_A_PAUSE_HEADER                    = 0x1
 	ETHTOOL_A_PAUSE_AUTONEG                   = 0x2
@@ -3975,7 +4015,7 @@ const (
 	ETHTOOL_A_TSINFO_TX_TYPES                 = 0x3
 	ETHTOOL_A_TSINFO_RX_FILTERS               = 0x4
 	ETHTOOL_A_TSINFO_PHC_INDEX                = 0x5
-	ETHTOOL_A_TSINFO_MAX                      = 0x5
+	ETHTOOL_A_TSINFO_MAX                      = 0x6
 	ETHTOOL_A_CABLE_TEST_UNSPEC               = 0x0
 	ETHTOOL_A_CABLE_TEST_HEADER               = 0x1
 	ETHTOOL_A_CABLE_TEST_MAX                  = 0x1
@@ -3991,11 +4031,11 @@ const (
 	ETHTOOL_A_CABLE_RESULT_UNSPEC             = 0x0
 	ETHTOOL_A_CABLE_RESULT_PAIR               = 0x1
 	ETHTOOL_A_CABLE_RESULT_CODE               = 0x2
-	ETHTOOL_A_CABLE_RESULT_MAX                = 0x2
+	ETHTOOL_A_CABLE_RESULT_MAX                = 0x3
 	ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC       = 0x0
 	ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR         = 0x1
 	ETHTOOL_A_CABLE_FAULT_LENGTH_CM           = 0x2
-	ETHTOOL_A_CABLE_FAULT_LENGTH_MAX          = 0x2
+	ETHTOOL_A_CABLE_FAULT_LENGTH_MAX          = 0x3
 	ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC    = 0x0
 	ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED   = 0x1
 	ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 0x2
@@ -4078,6 +4118,107 @@ type EthtoolDrvinfo struct {
 	Regdump_len  uint32
 }
 
+type EthtoolTsInfo struct {
+	Cmd             uint32
+	So_timestamping uint32
+	Phc_index       int32
+	Tx_types        uint32
+	Tx_reserved     [3]uint32
+	Rx_filters      uint32
+	Rx_reserved     [3]uint32
+}
+
+type HwTstampConfig struct {
+	Flags     int32
+	Tx_type   int32
+	Rx_filter int32
+}
+
+const (
+	HWTSTAMP_FILTER_NONE            = 0x0
+	HWTSTAMP_FILTER_ALL             = 0x1
+	HWTSTAMP_FILTER_SOME            = 0x2
+	HWTSTAMP_FILTER_PTP_V1_L4_EVENT = 0x3
+	HWTSTAMP_FILTER_PTP_V2_L4_EVENT = 0x6
+	HWTSTAMP_FILTER_PTP_V2_L2_EVENT = 0x9
+	HWTSTAMP_FILTER_PTP_V2_EVENT    = 0xc
+)
+
+const (
+	HWTSTAMP_TX_OFF          = 0x0
+	HWTSTAMP_TX_ON           = 0x1
+	HWTSTAMP_TX_ONESTEP_SYNC = 0x2
+)
+
+type (
+	PtpClockCaps struct {
+		Max_adj            int32
+		N_alarm            int32
+		N_ext_ts           int32
+		N_per_out          int32
+		Pps                int32
+		N_pins             int32
+		Cross_timestamping int32
+		Adjust_phase       int32
+		Max_phase_adj      int32
+		Rsv                [11]int32
+	}
+	PtpClockTime struct {
+		Sec      int64
+		Nsec     uint32
+		Reserved uint32
+	}
+	PtpExttsEvent struct {
+		T     PtpClockTime
+		Index uint32
+		Flags uint32
+		Rsv   [2]uint32
+	}
+	PtpExttsRequest struct {
+		Index uint32
+		Flags uint32
+		Rsv   [2]uint32
+	}
+	PtpPeroutRequest struct {
+		StartOrPhase PtpClockTime
+		Period       PtpClockTime
+		Index        uint32
+		Flags        uint32
+		On           PtpClockTime
+	}
+	PtpPinDesc struct {
+		Name  [64]byte
+		Index uint32
+		Func  uint32
+		Chan  uint32
+		Rsv   [5]uint32
+	}
+	PtpSysOffset struct {
+		Samples uint32
+		Rsv     [3]uint32
+		Ts      [51]PtpClockTime
+	}
+	PtpSysOffsetExtended struct {
+		Samples uint32
+		Clockid int32
+		Rsv     [2]uint32
+		Ts      [25][3]PtpClockTime
+	}
+	PtpSysOffsetPrecise struct {
+		Device   PtpClockTime
+		Realtime PtpClockTime
+		Monoraw  PtpClockTime
+		Rsv      [4]uint32
+	}
+)
+
+const (
+	PTP_PF_NONE    = 0x0
+	PTP_PF_EXTTS   = 0x1
+	PTP_PF_PEROUT  = 0x2
+	PTP_PF_PHYSYNC = 0x3
+)
+
 type (
 	HIDRawReportDescriptor struct {
 		Size  uint32
@@ -4259,6 +4400,7 @@ const (
 type LandlockRulesetAttr struct {
 	Access_fs  uint64
 	Access_net uint64
+	Scoped     uint64
 }
 
 type LandlockPathBeneathAttr struct {
@@ -4605,7 +4747,7 @@ const (
 	NL80211_ATTR_MAC_HINT                                   = 0xc8
 	NL80211_ATTR_MAC_MASK                                   = 0xd7
 	NL80211_ATTR_MAX_AP_ASSOC_STA                           = 0xca
-	NL80211_ATTR_MAX                                        = 0x14a
+	NL80211_ATTR_MAX                                        = 0x14c
 	NL80211_ATTR_MAX_CRIT_PROT_DURATION                     = 0xb4
 	NL80211_ATTR_MAX_CSA_COUNTERS                           = 0xce
 	NL80211_ATTR_MAX_MATCH_SETS                             = 0x85
@@ -5209,7 +5351,7 @@ const (
 	NL80211_FREQUENCY_ATTR_GO_CONCURRENT                    = 0xf
 	NL80211_FREQUENCY_ATTR_INDOOR_ONLY                      = 0xe
 	NL80211_FREQUENCY_ATTR_IR_CONCURRENT                    = 0xf
-	NL80211_FREQUENCY_ATTR_MAX                              = 0x20
+	NL80211_FREQUENCY_ATTR_MAX                              = 0x21
 	NL80211_FREQUENCY_ATTR_MAX_TX_POWER                     = 0x6
 	NL80211_FREQUENCY_ATTR_NO_10MHZ                         = 0x11
 	NL80211_FREQUENCY_ATTR_NO_160MHZ                        = 0xc
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go
index 15adc041..ad05b51a 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go
@@ -727,6 +727,37 @@ const (
 	RISCV_HWPROBE_EXT_ZBA                = 0x8
 	RISCV_HWPROBE_EXT_ZBB                = 0x10
 	RISCV_HWPROBE_EXT_ZBS                = 0x20
+	RISCV_HWPROBE_EXT_ZICBOZ             = 0x40
+	RISCV_HWPROBE_EXT_ZBC                = 0x80
+	RISCV_HWPROBE_EXT_ZBKB               = 0x100
+	RISCV_HWPROBE_EXT_ZBKC               = 0x200
+	RISCV_HWPROBE_EXT_ZBKX               = 0x400
+	RISCV_HWPROBE_EXT_ZKND               = 0x800
+	RISCV_HWPROBE_EXT_ZKNE               = 0x1000
+	RISCV_HWPROBE_EXT_ZKNH               = 0x2000
+	RISCV_HWPROBE_EXT_ZKSED              = 0x4000
+	RISCV_HWPROBE_EXT_ZKSH               = 0x8000
+	RISCV_HWPROBE_EXT_ZKT                = 0x10000
+	RISCV_HWPROBE_EXT_ZVBB               = 0x20000
+	RISCV_HWPROBE_EXT_ZVBC               = 0x40000
+	RISCV_HWPROBE_EXT_ZVKB               = 0x80000
+	RISCV_HWPROBE_EXT_ZVKG               = 0x100000
+	RISCV_HWPROBE_EXT_ZVKNED             = 0x200000
+	RISCV_HWPROBE_EXT_ZVKNHA             = 0x400000
+	RISCV_HWPROBE_EXT_ZVKNHB             = 0x800000
+	RISCV_HWPROBE_EXT_ZVKSED             = 0x1000000
+	RISCV_HWPROBE_EXT_ZVKSH              = 0x2000000
+	RISCV_HWPROBE_EXT_ZVKT               = 0x4000000
+	RISCV_HWPROBE_EXT_ZFH                = 0x8000000
+	RISCV_HWPROBE_EXT_ZFHMIN             = 0x10000000
+	RISCV_HWPROBE_EXT_ZIHINTNTL          = 0x20000000
+	RISCV_HWPROBE_EXT_ZVFH               = 0x40000000
+	RISCV_HWPROBE_EXT_ZVFHMIN            = 0x80000000
+	RISCV_HWPROBE_EXT_ZFA                = 0x100000000
+	RISCV_HWPROBE_EXT_ZTSO               = 0x200000000
+	RISCV_HWPROBE_EXT_ZACAS              = 0x400000000
+	RISCV_HWPROBE_EXT_ZICOND             = 0x800000000
+	RISCV_HWPROBE_EXT_ZIHINTPAUSE        = 0x1000000000
 	RISCV_HWPROBE_KEY_CPUPERF_0          = 0x5
 	RISCV_HWPROBE_MISALIGNED_UNKNOWN     = 0x0
 	RISCV_HWPROBE_MISALIGNED_EMULATED    = 0x1
@@ -734,4 +765,6 @@ const (
 	RISCV_HWPROBE_MISALIGNED_FAST        = 0x3
 	RISCV_HWPROBE_MISALIGNED_UNSUPPORTED = 0x4
 	RISCV_HWPROBE_MISALIGNED_MASK        = 0x7
+	RISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE  = 0x6
+	RISCV_HWPROBE_WHICH_CPUS             = 0x1
 )
diff --git a/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go
index d9a13af4..2e5d5a44 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go
@@ -377,6 +377,12 @@ type Flock_t struct {
 	Pid    int32
 }
 
+type F_cnvrt struct {
+	Cvtcmd int32
+	Pccsid int16
+	Fccsid int16
+}
+
 type Termios struct {
 	Cflag uint32
 	Iflag uint32
diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go
index 115341fb..4e613cf6 100644
--- a/vendor/golang.org/x/sys/windows/dll_windows.go
+++ b/vendor/golang.org/x/sys/windows/dll_windows.go
@@ -65,7 +65,7 @@ func LoadDLL(name string) (dll *DLL, err error) {
 	return d, nil
 }
 
-// MustLoadDLL is like LoadDLL but panics if load operation failes.
+// MustLoadDLL is like LoadDLL but panics if load operation fails.
 func MustLoadDLL(name string) *DLL {
 	d, e := LoadDLL(name)
 	if e != nil {
diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go
index 97651b5b..b6e1ab76 100644
--- a/vendor/golang.org/x/sys/windows/security_windows.go
+++ b/vendor/golang.org/x/sys/windows/security_windows.go
@@ -1179,7 +1179,7 @@ type OBJECTS_AND_NAME struct {
 //sys	makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) = advapi32.MakeSelfRelativeSD
 
 //sys	setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) = advapi32.SetEntriesInAclW
-//sys	GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (ret error) = advapi32.GetAce
+//sys	GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (err error) = advapi32.GetAce
 
 // Control returns the security descriptor control bits.
 func (sd *SECURITY_DESCRIPTOR) Control() (control SECURITY_DESCRIPTOR_CONTROL, revision uint32, err error) {
diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go
index 6525c62f..4a325438 100644
--- a/vendor/golang.org/x/sys/windows/syscall_windows.go
+++ b/vendor/golang.org/x/sys/windows/syscall_windows.go
@@ -17,8 +17,10 @@ import (
 	"unsafe"
 )
 
-type Handle uintptr
-type HWND uintptr
+type (
+	Handle uintptr
+	HWND   uintptr
+)
 
 const (
 	InvalidHandle = ^Handle(0)
@@ -166,6 +168,8 @@ func NewCallbackCDecl(fn interface{}) uintptr {
 //sys	CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error)  [failretval==InvalidHandle] = CreateNamedPipeW
 //sys	ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error)
 //sys	DisconnectNamedPipe(pipe Handle) (err error)
+//sys   GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error)
+//sys   GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error)
 //sys	GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error)
 //sys	GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW
 //sys	SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState
@@ -211,6 +215,10 @@ func NewCallbackCDecl(fn interface{}) uintptr {
 //sys	OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error)
 //sys	ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW
 //sys	GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) = user32.GetWindowThreadProcessId
+//sys	LoadKeyboardLayout(name *uint16, flags uint32) (hkl Handle, err error) [failretval==0] = user32.LoadKeyboardLayoutW
+//sys	UnloadKeyboardLayout(hkl Handle) (err error) = user32.UnloadKeyboardLayout
+//sys	GetKeyboardLayout(tid uint32) (hkl Handle) = user32.GetKeyboardLayout
+//sys	ToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32) = user32.ToUnicodeEx
 //sys	GetShellWindow() (shellWindow HWND) = user32.GetShellWindow
 //sys	MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW
 //sys	ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx
@@ -307,6 +315,10 @@ func NewCallbackCDecl(fn interface{}) uintptr {
 //sys	SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode
 //sys	GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo
 //sys	setConsoleCursorPosition(console Handle, position uint32) (err error) = kernel32.SetConsoleCursorPosition
+//sys	GetConsoleCP() (cp uint32, err error) = kernel32.GetConsoleCP
+//sys	GetConsoleOutputCP() (cp uint32, err error) = kernel32.GetConsoleOutputCP
+//sys	SetConsoleCP(cp uint32) (err error) = kernel32.SetConsoleCP
+//sys	SetConsoleOutputCP(cp uint32) (err error) = kernel32.SetConsoleOutputCP
 //sys	WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW
 //sys	ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW
 //sys	resizePseudoConsole(pconsole Handle, size uint32) (hr error) = kernel32.ResizePseudoConsole
@@ -715,20 +727,12 @@ func DurationSinceBoot() time.Duration {
 }
 
 func Ftruncate(fd Handle, length int64) (err error) {
-	curoffset, e := Seek(fd, 0, 1)
-	if e != nil {
-		return e
-	}
-	defer Seek(fd, curoffset, 0)
-	_, e = Seek(fd, length, 0)
-	if e != nil {
-		return e
+	type _FILE_END_OF_FILE_INFO struct {
+		EndOfFile int64
 	}
-	e = SetEndOfFile(fd)
-	if e != nil {
-		return e
-	}
-	return nil
+	var info _FILE_END_OF_FILE_INFO
+	info.EndOfFile = length
+	return SetFileInformationByHandle(fd, FileEndOfFileInfo, (*byte)(unsafe.Pointer(&info)), uint32(unsafe.Sizeof(info)))
 }
 
 func Gettimeofday(tv *Timeval) (err error) {
@@ -884,6 +888,11 @@ const socket_error = uintptr(^uint32(0))
 //sys	GetACP() (acp uint32) = kernel32.GetACP
 //sys	MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar
 //sys	getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) = iphlpapi.GetBestInterfaceEx
+//sys   GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) = iphlpapi.GetIfEntry2Ex
+//sys   GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) = iphlpapi.GetUnicastIpAddressEntry
+//sys   NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyIpInterfaceChange
+//sys   NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyUnicastIpAddressChange
+//sys   CancelMibChangeNotify2(notificationHandle Handle) (errcode error) = iphlpapi.CancelMibChangeNotify2
 
 // For testing: clients can set this flag to force
 // creation of IPv6 sockets to return EAFNOSUPPORT.
@@ -1368,9 +1377,11 @@ func SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) {
 func SetsockoptInet4Addr(fd Handle, level, opt int, value [4]byte) (err error) {
 	return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&value[0])), 4)
 }
+
 func SetsockoptIPMreq(fd Handle, level, opt int, mreq *IPMreq) (err error) {
 	return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(mreq)), int32(unsafe.Sizeof(*mreq)))
 }
+
 func SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) {
 	return syscall.EWINDOWS
 }
@@ -1673,13 +1684,16 @@ func (s NTStatus) Error() string {
 // do not use NTUnicodeString, and instead UTF16PtrFromString should be used for
 // the more common *uint16 string type.
 func NewNTUnicodeString(s string) (*NTUnicodeString, error) {
-	var u NTUnicodeString
-	s16, err := UTF16PtrFromString(s)
+	s16, err := UTF16FromString(s)
 	if err != nil {
 		return nil, err
 	}
-	RtlInitUnicodeString(&u, s16)
-	return &u, nil
+	n := uint16(len(s16) * 2)
+	return &NTUnicodeString{
+		Length:        n - 2, // subtract 2 bytes for the NULL terminator
+		MaximumLength: n,
+		Buffer:        &s16[0],
+	}, nil
 }
 
 // Slice returns a uint16 slice that aliases the data in the NTUnicodeString.
diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go
index d8cb71db..9d138de5 100644
--- a/vendor/golang.org/x/sys/windows/types_windows.go
+++ b/vendor/golang.org/x/sys/windows/types_windows.go
@@ -176,6 +176,7 @@ const (
 	WAIT_FAILED    = 0xFFFFFFFF
 
 	// Access rights for process.
+	PROCESS_ALL_ACCESS                = 0xFFFF
 	PROCESS_CREATE_PROCESS            = 0x0080
 	PROCESS_CREATE_THREAD             = 0x0002
 	PROCESS_DUP_HANDLE                = 0x0040
@@ -1060,6 +1061,7 @@ const (
 	SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6
 	SIO_KEEPALIVE_VALS                 = IOC_IN | IOC_VENDOR | 4
 	SIO_UDP_CONNRESET                  = IOC_IN | IOC_VENDOR | 12
+	SIO_UDP_NETRESET                   = IOC_IN | IOC_VENDOR | 15
 
 	// cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460
 
@@ -2003,7 +2005,21 @@ const (
 	MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20
 )
 
-const GAA_FLAG_INCLUDE_PREFIX = 0x00000010
+// Flags for GetAdaptersAddresses, see
+// https://learn.microsoft.com/en-us/windows/win32/api/iphlpapi/nf-iphlpapi-getadaptersaddresses.
+const (
+	GAA_FLAG_SKIP_UNICAST                = 0x1
+	GAA_FLAG_SKIP_ANYCAST                = 0x2
+	GAA_FLAG_SKIP_MULTICAST              = 0x4
+	GAA_FLAG_SKIP_DNS_SERVER             = 0x8
+	GAA_FLAG_INCLUDE_PREFIX              = 0x10
+	GAA_FLAG_SKIP_FRIENDLY_NAME          = 0x20
+	GAA_FLAG_INCLUDE_WINS_INFO           = 0x40
+	GAA_FLAG_INCLUDE_GATEWAYS            = 0x80
+	GAA_FLAG_INCLUDE_ALL_INTERFACES      = 0x100
+	GAA_FLAG_INCLUDE_ALL_COMPARTMENTS    = 0x200
+	GAA_FLAG_INCLUDE_TUNNEL_BINDINGORDER = 0x400
+)
 
 const (
 	IF_TYPE_OTHER              = 1
@@ -2017,6 +2033,50 @@ const (
 	IF_TYPE_IEEE1394           = 144
 )
 
+// Enum NL_PREFIX_ORIGIN for [IpAdapterUnicastAddress], see
+// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_prefix_origin
+const (
+	IpPrefixOriginOther               = 0
+	IpPrefixOriginManual              = 1
+	IpPrefixOriginWellKnown           = 2
+	IpPrefixOriginDhcp                = 3
+	IpPrefixOriginRouterAdvertisement = 4
+	IpPrefixOriginUnchanged           = 1 << 4
+)
+
+// Enum NL_SUFFIX_ORIGIN for [IpAdapterUnicastAddress], see
+// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_suffix_origin
+const (
+	NlsoOther                      = 0
+	NlsoManual                     = 1
+	NlsoWellKnown                  = 2
+	NlsoDhcp                       = 3
+	NlsoLinkLayerAddress           = 4
+	NlsoRandom                     = 5
+	IpSuffixOriginOther            = 0
+	IpSuffixOriginManual           = 1
+	IpSuffixOriginWellKnown        = 2
+	IpSuffixOriginDhcp             = 3
+	IpSuffixOriginLinkLayerAddress = 4
+	IpSuffixOriginRandom           = 5
+	IpSuffixOriginUnchanged        = 1 << 4
+)
+
+// Enum NL_DAD_STATE for [IpAdapterUnicastAddress], see
+// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_dad_state
+const (
+	NldsInvalid          = 0
+	NldsTentative        = 1
+	NldsDuplicate        = 2
+	NldsDeprecated       = 3
+	NldsPreferred        = 4
+	IpDadStateInvalid    = 0
+	IpDadStateTentative  = 1
+	IpDadStateDuplicate  = 2
+	IpDadStateDeprecated = 3
+	IpDadStatePreferred  = 4
+)
+
 type SocketAddress struct {
 	Sockaddr       *syscall.RawSockaddrAny
 	SockaddrLength int32
@@ -2144,6 +2204,132 @@ const (
 	IfOperStatusLowerLayerDown = 7
 )
 
+const (
+	IF_MAX_PHYS_ADDRESS_LENGTH = 32
+	IF_MAX_STRING_SIZE         = 256
+)
+
+// MIB_IF_ENTRY_LEVEL enumeration from netioapi.h or
+// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/nf-netioapi-getifentry2ex.
+const (
+	MibIfEntryNormal                  = 0
+	MibIfEntryNormalWithoutStatistics = 2
+)
+
+// MIB_NOTIFICATION_TYPE enumeration from netioapi.h or
+// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ne-netioapi-mib_notification_type.
+const (
+	MibParameterNotification = 0
+	MibAddInstance           = 1
+	MibDeleteInstance        = 2
+	MibInitialNotification   = 3
+)
+
+// MibIfRow2 stores information about a particular interface. See
+// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_if_row2.
+type MibIfRow2 struct {
+	InterfaceLuid               uint64
+	InterfaceIndex              uint32
+	InterfaceGuid               GUID
+	Alias                       [IF_MAX_STRING_SIZE + 1]uint16
+	Description                 [IF_MAX_STRING_SIZE + 1]uint16
+	PhysicalAddressLength       uint32
+	PhysicalAddress             [IF_MAX_PHYS_ADDRESS_LENGTH]uint8
+	PermanentPhysicalAddress    [IF_MAX_PHYS_ADDRESS_LENGTH]uint8
+	Mtu                         uint32
+	Type                        uint32
+	TunnelType                  uint32
+	MediaType                   uint32
+	PhysicalMediumType          uint32
+	AccessType                  uint32
+	DirectionType               uint32
+	InterfaceAndOperStatusFlags uint8
+	OperStatus                  uint32
+	AdminStatus                 uint32
+	MediaConnectState           uint32
+	NetworkGuid                 GUID
+	ConnectionType              uint32
+	TransmitLinkSpeed           uint64
+	ReceiveLinkSpeed            uint64
+	InOctets                    uint64
+	InUcastPkts                 uint64
+	InNUcastPkts                uint64
+	InDiscards                  uint64
+	InErrors                    uint64
+	InUnknownProtos             uint64
+	InUcastOctets               uint64
+	InMulticastOctets           uint64
+	InBroadcastOctets           uint64
+	OutOctets                   uint64
+	OutUcastPkts                uint64
+	OutNUcastPkts               uint64
+	OutDiscards                 uint64
+	OutErrors                   uint64
+	OutUcastOctets              uint64
+	OutMulticastOctets          uint64
+	OutBroadcastOctets          uint64
+	OutQLen                     uint64
+}
+
+// MIB_UNICASTIPADDRESS_ROW stores information about a unicast IP address. See
+// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_unicastipaddress_row.
+type MibUnicastIpAddressRow struct {
+	Address            RawSockaddrInet6 // SOCKADDR_INET union
+	InterfaceLuid      uint64
+	InterfaceIndex     uint32
+	PrefixOrigin       uint32
+	SuffixOrigin       uint32
+	ValidLifetime      uint32
+	PreferredLifetime  uint32
+	OnLinkPrefixLength uint8
+	SkipAsSource       uint8
+	DadState           uint32
+	ScopeId            uint32
+	CreationTimeStamp  Filetime
+}
+
+const ScopeLevelCount = 16
+
+// MIB_IPINTERFACE_ROW stores interface management information for a particular IP address family on a network interface.
+// See https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipinterface_row.
+type MibIpInterfaceRow struct {
+	Family                               uint16
+	InterfaceLuid                        uint64
+	InterfaceIndex                       uint32
+	MaxReassemblySize                    uint32
+	InterfaceIdentifier                  uint64
+	MinRouterAdvertisementInterval       uint32
+	MaxRouterAdvertisementInterval       uint32
+	AdvertisingEnabled                   uint8
+	ForwardingEnabled                    uint8
+	WeakHostSend                         uint8
+	WeakHostReceive                      uint8
+	UseAutomaticMetric                   uint8
+	UseNeighborUnreachabilityDetection   uint8
+	ManagedAddressConfigurationSupported uint8
+	OtherStatefulConfigurationSupported  uint8
+	AdvertiseDefaultRoute                uint8
+	RouterDiscoveryBehavior              uint32
+	DadTransmits                         uint32
+	BaseReachableTime                    uint32
+	RetransmitTime                       uint32
+	PathMtuDiscoveryTimeout              uint32
+	LinkLocalAddressBehavior             uint32
+	LinkLocalAddressTimeout              uint32
+	ZoneIndices                          [ScopeLevelCount]uint32
+	SitePrefixLength                     uint32
+	Metric                               uint32
+	NlMtu                                uint32
+	Connected                            uint8
+	SupportsWakeUpPatterns               uint8
+	SupportsNeighborDiscovery            uint8
+	SupportsRouterDiscovery              uint8
+	ReachableTime                        uint32
+	TransmitOffload                      uint32
+	ReceiveOffload                       uint32
+	DisableDefaultRoutes                 uint8
+}
+
 // Console related constants used for the mode parameter to SetConsoleMode. See
 // https://docs.microsoft.com/en-us/windows/console/setconsolemode for details.
 
@@ -3404,3 +3590,14 @@ type DCB struct {
 	EvtChar    byte
 	wReserved1 uint16
 }
+
+// Keyboard Layout Flags.
+// See https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-loadkeyboardlayoutw
+const (
+	KLF_ACTIVATE      = 0x00000001
+	KLF_SUBSTITUTE_OK = 0x00000002
+	KLF_REORDER       = 0x00000008
+	KLF_REPLACELANG   = 0x00000010
+	KLF_NOTELLSHELL   = 0x00000080
+	KLF_SETFORPROCESS = 0x00000100
+)
diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go
index eba76101..01c0716c 100644
--- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go
+++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go
@@ -181,10 +181,15 @@ var (
 	procDnsRecordListFree                                    = moddnsapi.NewProc("DnsRecordListFree")
 	procDwmGetWindowAttribute                                = moddwmapi.NewProc("DwmGetWindowAttribute")
 	procDwmSetWindowAttribute                                = moddwmapi.NewProc("DwmSetWindowAttribute")
+	procCancelMibChangeNotify2                               = modiphlpapi.NewProc("CancelMibChangeNotify2")
 	procGetAdaptersAddresses                                 = modiphlpapi.NewProc("GetAdaptersAddresses")
 	procGetAdaptersInfo                                      = modiphlpapi.NewProc("GetAdaptersInfo")
 	procGetBestInterfaceEx                                   = modiphlpapi.NewProc("GetBestInterfaceEx")
 	procGetIfEntry                                           = modiphlpapi.NewProc("GetIfEntry")
+	procGetIfEntry2Ex                                        = modiphlpapi.NewProc("GetIfEntry2Ex")
+	procGetUnicastIpAddressEntry                             = modiphlpapi.NewProc("GetUnicastIpAddressEntry")
+	procNotifyIpInterfaceChange                              = modiphlpapi.NewProc("NotifyIpInterfaceChange")
+	procNotifyUnicastIpAddressChange                         = modiphlpapi.NewProc("NotifyUnicastIpAddressChange")
 	procAddDllDirectory                                      = modkernel32.NewProc("AddDllDirectory")
 	procAssignProcessToJobObject                             = modkernel32.NewProc("AssignProcessToJobObject")
 	procCancelIo                                             = modkernel32.NewProc("CancelIo")
@@ -247,7 +252,9 @@ var (
 	procGetCommandLineW                                      = modkernel32.NewProc("GetCommandLineW")
 	procGetComputerNameExW                                   = modkernel32.NewProc("GetComputerNameExW")
 	procGetComputerNameW                                     = modkernel32.NewProc("GetComputerNameW")
+	procGetConsoleCP                                         = modkernel32.NewProc("GetConsoleCP")
 	procGetConsoleMode                                       = modkernel32.NewProc("GetConsoleMode")
+	procGetConsoleOutputCP                                   = modkernel32.NewProc("GetConsoleOutputCP")
 	procGetConsoleScreenBufferInfo                           = modkernel32.NewProc("GetConsoleScreenBufferInfo")
 	procGetCurrentDirectoryW                                 = modkernel32.NewProc("GetCurrentDirectoryW")
 	procGetCurrentProcessId                                  = modkernel32.NewProc("GetCurrentProcessId")
@@ -273,8 +280,10 @@ var (
 	procGetMaximumProcessorCount                             = modkernel32.NewProc("GetMaximumProcessorCount")
 	procGetModuleFileNameW                                   = modkernel32.NewProc("GetModuleFileNameW")
 	procGetModuleHandleExW                                   = modkernel32.NewProc("GetModuleHandleExW")
+	procGetNamedPipeClientProcessId                          = modkernel32.NewProc("GetNamedPipeClientProcessId")
 	procGetNamedPipeHandleStateW                             = modkernel32.NewProc("GetNamedPipeHandleStateW")
 	procGetNamedPipeInfo                                     = modkernel32.NewProc("GetNamedPipeInfo")
+	procGetNamedPipeServerProcessId                          = modkernel32.NewProc("GetNamedPipeServerProcessId")
 	procGetOverlappedResult                                  = modkernel32.NewProc("GetOverlappedResult")
 	procGetPriorityClass                                     = modkernel32.NewProc("GetPriorityClass")
 	procGetProcAddress                                       = modkernel32.NewProc("GetProcAddress")
@@ -347,8 +356,10 @@ var (
 	procSetCommMask                                          = modkernel32.NewProc("SetCommMask")
 	procSetCommState                                         = modkernel32.NewProc("SetCommState")
 	procSetCommTimeouts                                      = modkernel32.NewProc("SetCommTimeouts")
+	procSetConsoleCP                                         = modkernel32.NewProc("SetConsoleCP")
 	procSetConsoleCursorPosition                             = modkernel32.NewProc("SetConsoleCursorPosition")
 	procSetConsoleMode                                       = modkernel32.NewProc("SetConsoleMode")
+	procSetConsoleOutputCP                                   = modkernel32.NewProc("SetConsoleOutputCP")
 	procSetCurrentDirectoryW                                 = modkernel32.NewProc("SetCurrentDirectoryW")
 	procSetDefaultDllDirectories                             = modkernel32.NewProc("SetDefaultDllDirectories")
 	procSetDllDirectoryW                                     = modkernel32.NewProc("SetDllDirectoryW")
@@ -478,12 +489,16 @@ var (
 	procGetDesktopWindow                                     = moduser32.NewProc("GetDesktopWindow")
 	procGetForegroundWindow                                  = moduser32.NewProc("GetForegroundWindow")
 	procGetGUIThreadInfo                                     = moduser32.NewProc("GetGUIThreadInfo")
+	procGetKeyboardLayout                                    = moduser32.NewProc("GetKeyboardLayout")
 	procGetShellWindow                                       = moduser32.NewProc("GetShellWindow")
 	procGetWindowThreadProcessId                             = moduser32.NewProc("GetWindowThreadProcessId")
 	procIsWindow                                             = moduser32.NewProc("IsWindow")
 	procIsWindowUnicode                                      = moduser32.NewProc("IsWindowUnicode")
 	procIsWindowVisible                                      = moduser32.NewProc("IsWindowVisible")
+	procLoadKeyboardLayoutW                                  = moduser32.NewProc("LoadKeyboardLayoutW")
 	procMessageBoxW                                          = moduser32.NewProc("MessageBoxW")
+	procToUnicodeEx                                          = moduser32.NewProc("ToUnicodeEx")
+	procUnloadKeyboardLayout                                 = moduser32.NewProc("UnloadKeyboardLayout")
 	procCreateEnvironmentBlock                               = moduserenv.NewProc("CreateEnvironmentBlock")
 	procDestroyEnvironmentBlock                              = moduserenv.NewProc("DestroyEnvironmentBlock")
 	procGetUserProfileDirectoryW                             = moduserenv.NewProc("GetUserProfileDirectoryW")
@@ -789,6 +804,14 @@ func FreeSid(sid *SID) (err error) {
 	return
 }
 
+func GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (err error) {
+	r1, _, e1 := syscall.Syscall(procGetAce.Addr(), 3, uintptr(unsafe.Pointer(acl)), uintptr(aceIndex), uintptr(unsafe.Pointer(pAce)))
+	if r1 == 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
 func GetLengthSid(sid *SID) (len uint32) {
 	r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
 	len = uint32(r0)
@@ -1225,14 +1248,6 @@ func setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCE
 	return
 }
 
-func GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (ret error) {
-	r0, _, _ := syscall.Syscall(procGetAce.Addr(), 3, uintptr(unsafe.Pointer(acl)), uintptr(aceIndex), uintptr(unsafe.Pointer(pAce)))
-	if r0 == 0 {
-		ret = GetLastError()
-	}
-	return
-}
-
 func SetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) {
 	r1, _, e1 := syscall.Syscall(procSetKernelObjectSecurity.Addr(), 3, uintptr(handle), uintptr(securityInformation), uintptr(unsafe.Pointer(securityDescriptor)))
 	if r1 == 0 {
@@ -1598,6 +1613,14 @@ func DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, si
 	return
 }
 
+func CancelMibChangeNotify2(notificationHandle Handle) (errcode error) {
+	r0, _, _ := syscall.Syscall(procCancelMibChangeNotify2.Addr(), 1, uintptr(notificationHandle), 0, 0)
+	if r0 != 0 {
+		errcode = syscall.Errno(r0)
+	}
+	return
+}
+
 func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {
 	r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0)
 	if r0 != 0 {
@@ -1630,6 +1653,46 @@ func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
 	return
 }
 
+func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) {
+	r0, _, _ := syscall.Syscall(procGetIfEntry2Ex.Addr(), 2, uintptr(level), uintptr(unsafe.Pointer(row)), 0)
+	if r0 != 0 {
+		errcode = syscall.Errno(r0)
+	}
+	return
+}
+
+func GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) {
+	r0, _, _ := syscall.Syscall(procGetUnicastIpAddressEntry.Addr(), 1, uintptr(unsafe.Pointer(row)), 0, 0)
+	if r0 != 0 {
+		errcode = syscall.Errno(r0)
+	}
+	return
+}
+
+func NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) {
+	var _p0 uint32
+	if initialNotification {
+		_p0 = 1
+	}
+	r0, _, _ := syscall.Syscall6(procNotifyIpInterfaceChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0)
+	if r0 != 0 {
+		errcode = syscall.Errno(r0)
+	}
+	return
+}
+
+func NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) {
+	var _p0 uint32
+	if initialNotification {
+		_p0 = 1
+	}
+	r0, _, _ := syscall.Syscall6(procNotifyUnicastIpAddressChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0)
+	if r0 != 0 {
+		errcode = syscall.Errno(r0)
+	}
+	return
+}
+
 func AddDllDirectory(path *uint16) (cookie uintptr, err error) {
 	r0, _, e1 := syscall.Syscall(procAddDllDirectory.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
 	cookie = uintptr(r0)
@@ -2158,6 +2221,15 @@ func GetComputerName(buf *uint16, n *uint32) (err error) {
 	return
 }
 
+func GetConsoleCP() (cp uint32, err error) {
+	r0, _, e1 := syscall.Syscall(procGetConsoleCP.Addr(), 0, 0, 0, 0)
+	cp = uint32(r0)
+	if cp == 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
 func GetConsoleMode(console Handle, mode *uint32) (err error) {
 	r1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0)
 	if r1 == 0 {
@@ -2166,6 +2238,15 @@ func GetConsoleMode(console Handle, mode *uint32) (err error) {
 	return
 }
 
+func GetConsoleOutputCP() (cp uint32, err error) {
+	r0, _, e1 := syscall.Syscall(procGetConsoleOutputCP.Addr(), 0, 0, 0, 0)
+	cp = uint32(r0)
+	if cp == 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
 func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) {
 	r1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(info)), 0)
 	if r1 == 0 {
@@ -2367,6 +2448,14 @@ func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err er
 	return
 }
 
+func GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) {
+	r1, _, e1 := syscall.Syscall(procGetNamedPipeClientProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(clientProcessID)), 0)
+	if r1 == 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
 func GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) {
 	r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0)
 	if r1 == 0 {
@@ -2383,6 +2472,14 @@ func GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint3
 	return
 }
 
+func GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) {
+	r1, _, e1 := syscall.Syscall(procGetNamedPipeServerProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(serverProcessID)), 0)
+	if r1 == 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
 func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) {
 	var _p0 uint32
 	if wait {
@@ -3034,6 +3131,14 @@ func SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) {
 	return
 }
 
+func SetConsoleCP(cp uint32) (err error) {
+	r1, _, e1 := syscall.Syscall(procSetConsoleCP.Addr(), 1, uintptr(cp), 0, 0)
+	if r1 == 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
 func setConsoleCursorPosition(console Handle, position uint32) (err error) {
 	r1, _, e1 := syscall.Syscall(procSetConsoleCursorPosition.Addr(), 2, uintptr(console), uintptr(position), 0)
 	if r1 == 0 {
@@ -3050,6 +3155,14 @@ func SetConsoleMode(console Handle, mode uint32) (err error) {
 	return
 }
 
+func SetConsoleOutputCP(cp uint32) (err error) {
+	r1, _, e1 := syscall.Syscall(procSetConsoleOutputCP.Addr(), 1, uintptr(cp), 0, 0)
+	if r1 == 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
 func SetCurrentDirectory(path *uint16) (err error) {
 	r1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
 	if r1 == 0 {
@@ -4082,6 +4195,12 @@ func GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) {
 	return
 }
 
+func GetKeyboardLayout(tid uint32) (hkl Handle) {
+	r0, _, _ := syscall.Syscall(procGetKeyboardLayout.Addr(), 1, uintptr(tid), 0, 0)
+	hkl = Handle(r0)
+	return
+}
+
 func GetShellWindow() (shellWindow HWND) {
 	r0, _, _ := syscall.Syscall(procGetShellWindow.Addr(), 0, 0, 0, 0)
 	shellWindow = HWND(r0)
@@ -4115,6 +4234,15 @@ func IsWindowVisible(hwnd HWND) (isVisible bool) {
 	return
 }
 
+func LoadKeyboardLayout(name *uint16, flags uint32) (hkl Handle, err error) {
+	r0, _, e1 := syscall.Syscall(procLoadKeyboardLayoutW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(flags), 0)
+	hkl = Handle(r0)
+	if hkl == 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
 func MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) {
 	r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0)
 	ret = int32(r0)
@@ -4124,6 +4252,20 @@ func MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret i
 	return
 }
 
+func ToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32) {
+	r0, _, _ := syscall.Syscall9(procToUnicodeEx.Addr(), 7, uintptr(vkey), uintptr(scancode), uintptr(unsafe.Pointer(keystate)), uintptr(unsafe.Pointer(pwszBuff)), uintptr(cchBuff), uintptr(flags), uintptr(hkl), 0, 0)
+	ret = int32(r0)
+	return
+}
+
+func UnloadKeyboardLayout(hkl Handle) (err error) {
+	r1, _, e1 := syscall.Syscall(procUnloadKeyboardLayout.Addr(), 1, uintptr(hkl), 0, 0)
+	if r1 == 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
 func CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) {
 	var _p0 uint32
 	if inheritExisting {
diff --git a/vendor/golang.org/x/term/LICENSE b/vendor/golang.org/x/term/LICENSE
index 6a66aea5..2a7cf70d 100644
--- a/vendor/golang.org/x/term/LICENSE
+++ b/vendor/golang.org/x/term/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2009 The Go Authors. All rights reserved.
+Copyright 2009 The Go Authors.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
@@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer.
 copyright notice, this list of conditions and the following disclaimer
 in the documentation and/or other materials provided with the
 distribution.
-   * Neither the name of Google Inc. nor the names of its
+   * Neither the name of Google LLC nor the names of its
 contributors may be used to endorse or promote products derived from
 this software without specific prior written permission.
 
diff --git a/vendor/golang.org/x/term/README.md b/vendor/golang.org/x/term/README.md
index d03d0aef..05ff623f 100644
--- a/vendor/golang.org/x/term/README.md
+++ b/vendor/golang.org/x/term/README.md
@@ -4,16 +4,13 @@
 
 This repository provides Go terminal and console support packages.
 
-## Download/Install
-
-The easiest way to install is to run `go get -u golang.org/x/term`. You can
-also manually git clone the repository to `$GOPATH/src/golang.org/x/term`.
-
 ## Report Issues / Send Patches
 
 This repository uses Gerrit for code changes. To learn how to submit changes to
-this repository, see https://golang.org/doc/contribute.html.
+this repository, see https://go.dev/doc/contribute.
+
+The git repository is https://go.googlesource.com/term.
 
 The main issue tracker for the term repository is located at
-https://github.com/golang/go/issues. Prefix your issue with "x/term:" in the
+https://go.dev/issues. Prefix your issue with "x/term:" in the
 subject line, so it is easy to find.
diff --git a/vendor/golang.org/x/term/term_windows.go b/vendor/golang.org/x/term/term_windows.go
index 465f5606..df6bf948 100644
--- a/vendor/golang.org/x/term/term_windows.go
+++ b/vendor/golang.org/x/term/term_windows.go
@@ -26,6 +26,7 @@ func makeRaw(fd int) (*State, error) {
 		return nil, err
 	}
 	raw := st &^ (windows.ENABLE_ECHO_INPUT | windows.ENABLE_PROCESSED_INPUT | windows.ENABLE_LINE_INPUT | windows.ENABLE_PROCESSED_OUTPUT)
+	raw |= windows.ENABLE_VIRTUAL_TERMINAL_INPUT
 	if err := windows.SetConsoleMode(windows.Handle(fd), raw); err != nil {
 		return nil, err
 	}
diff --git a/vendor/golang.org/x/text/LICENSE b/vendor/golang.org/x/text/LICENSE
index 6a66aea5..2a7cf70d 100644
--- a/vendor/golang.org/x/text/LICENSE
+++ b/vendor/golang.org/x/text/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2009 The Go Authors. All rights reserved.
+Copyright 2009 The Go Authors.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
@@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer.
 copyright notice, this list of conditions and the following disclaimer
 in the documentation and/or other materials provided with the
 distribution.
-   * Neither the name of Google Inc. nor the names of its
+   * Neither the name of Google LLC nor the names of its
 contributors may be used to endorse or promote products derived from
 this software without specific prior written permission.
 
diff --git a/vendor/golang.org/x/text/cases/cases.go b/vendor/golang.org/x/text/cases/cases.go
new file mode 100644
index 00000000..752cdf03
--- /dev/null
+++ b/vendor/golang.org/x/text/cases/cases.go
@@ -0,0 +1,162 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:generate go run gen.go gen_trieval.go
+
+// Package cases provides general and language-specific case mappers.
+package cases // import "golang.org/x/text/cases"
+
+import (
+	"golang.org/x/text/language"
+	"golang.org/x/text/transform"
+)
+
+// References:
+// - Unicode Reference Manual Chapter 3.13, 4.2, and 5.18.
+// - https://www.unicode.org/reports/tr29/
+// - https://www.unicode.org/Public/6.3.0/ucd/CaseFolding.txt
+// - https://www.unicode.org/Public/6.3.0/ucd/SpecialCasing.txt
+// - https://www.unicode.org/Public/6.3.0/ucd/DerivedCoreProperties.txt
+// - https://www.unicode.org/Public/6.3.0/ucd/auxiliary/WordBreakProperty.txt
+// - https://www.unicode.org/Public/6.3.0/ucd/auxiliary/WordBreakTest.txt
+// - http://userguide.icu-project.org/transforms/casemappings
+
+// TODO:
+// - Case folding
+// - Wide and Narrow?
+// - Segmenter option for title casing.
+// - ASCII fast paths
+// - Encode Soft-Dotted property within trie somehow.
+
+// A Caser transforms given input to a certain case. It implements
+// transform.Transformer.
+//
+// A Caser may be stateful and should therefore not be shared between
+// goroutines.
+type Caser struct {
+	t transform.SpanningTransformer
+}
+
+// Bytes returns a new byte slice with the result of converting b to the case
+// form implemented by c.
+func (c Caser) Bytes(b []byte) []byte {
+	b, _, _ = transform.Bytes(c.t, b)
+	return b
+}
+
+// String returns a string with the result of transforming s to the case form
+// implemented by c.
+func (c Caser) String(s string) string {
+	s, _, _ = transform.String(c.t, s)
+	return s
+}
+
+// Reset resets the Caser to be reused for new input after a previous call to
+// Transform.
+func (c Caser) Reset() { c.t.Reset() }
+
+// Transform implements the transform.Transformer interface and transforms the
+// given input to the case form implemented by c.
+func (c Caser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+	return c.t.Transform(dst, src, atEOF)
+}
+
+// Span implements the transform.SpanningTransformer interface.
+func (c Caser) Span(src []byte, atEOF bool) (n int, err error) {
+	return c.t.Span(src, atEOF)
+}
+
+// Upper returns a Caser for language-specific uppercasing.
+func Upper(t language.Tag, opts ...Option) Caser {
+	return Caser{makeUpper(t, getOpts(opts...))}
+}
+
+// Lower returns a Caser for language-specific lowercasing.
+func Lower(t language.Tag, opts ...Option) Caser {
+	return Caser{makeLower(t, getOpts(opts...))}
+}
+
+// Title returns a Caser for language-specific title casing. It uses an
+// approximation of the default Unicode Word Break algorithm.
+func Title(t language.Tag, opts ...Option) Caser {
+	return Caser{makeTitle(t, getOpts(opts...))}
+}
+
+// Fold returns a Caser that implements Unicode case folding. The returned Caser
+// is stateless and safe to use concurrently by multiple goroutines.
+//
+// Case folding does not normalize the input and may not preserve a normal form.
+// Use the collate or search package for more convenient and linguistically
+// sound comparisons. Use golang.org/x/text/secure/precis for string comparisons
+// where security aspects are a concern.
+func Fold(opts ...Option) Caser {
+	return Caser{makeFold(getOpts(opts...))}
+}
+
+// An Option is used to modify the behavior of a Caser.
+type Option func(o options) options
+
+// TODO: consider these options to take a boolean as well, like FinalSigma.
+// The advantage of using this approach is that other providers of a lower-case
+// algorithm could set different defaults by prefixing a user-provided slice
+// of options with their own. This is handy, for instance, for the precis
+// package which would override the default to not handle the Greek final sigma.
+
+var (
+	// NoLower disables the lowercasing of non-leading letters for a title
+	// caser.
+	NoLower Option = noLower
+
+	// Compact omits mappings in case folding for characters that would grow the
+	// input. (Unimplemented.)
+	Compact Option = compact
+)
+
+// TODO: option to preserve a normal form, if applicable?
+
+type options struct {
+	noLower bool
+	simple  bool
+
+	// TODO: segmenter, max ignorable, alternative versions, etc.
+
+	ignoreFinalSigma bool
+}
+
+func getOpts(o ...Option) (res options) {
+	for _, f := range o {
+		res = f(res)
+	}
+	return
+}
+
+func noLower(o options) options {
+	o.noLower = true
+	return o
+}
+
+func compact(o options) options {
+	o.simple = true
+	return o
+}
+
+// HandleFinalSigma specifies whether the special handling of Greek final sigma
+// should be enabled. Unicode prescribes handling the Greek final sigma for all
+// locales, but standards like IDNA and PRECIS override this default.
+func HandleFinalSigma(enable bool) Option {
+	if enable {
+		return handleFinalSigma
+	}
+	return ignoreFinalSigma
+}
+
+func ignoreFinalSigma(o options) options {
+	o.ignoreFinalSigma = true
+	return o
+}
+
+func handleFinalSigma(o options) options {
+	o.ignoreFinalSigma = false
+	return o
+}
diff --git a/vendor/golang.org/x/text/cases/context.go b/vendor/golang.org/x/text/cases/context.go
new file mode 100644
index 00000000..e9aa9e19
--- /dev/null
+++ b/vendor/golang.org/x/text/cases/context.go
@@ -0,0 +1,376 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package cases
+
+import "golang.org/x/text/transform"
+
+// A context is used for iterating over source bytes, fetching case info and
+// writing to a destination buffer.
+//
+// Casing operations may need more than one rune of context to decide how a rune
+// should be cased. Casing implementations should call checkpoint on context
+// whenever it is known to be safe to return the runes processed so far.
+//
+// It is recommended for implementations to not allow for more than 30 case
+// ignorables as lookahead (analogous to the limit in norm) and to use state if
+// unbounded lookahead is needed for cased runes.
+type context struct {
+	dst, src []byte
+	atEOF    bool
+
+	pDst int // pDst points past the last written rune in dst.
+	pSrc int // pSrc points to the start of the currently scanned rune.
+
+	// checkpoints safe to return in Transform, where nDst <= pDst and nSrc <= pSrc.
+	nDst, nSrc int
+	err        error
+
+	sz   int  // size of current rune
+	info info // case information of currently scanned rune
+
+	// State preserved across calls to Transform.
+	isMidWord bool // false if next cased letter needs to be title-cased.
+}
+
+func (c *context) Reset() {
+	c.isMidWord = false
+}
+
+// ret returns the return values for the Transform method. It checks whether
+// there were insufficient bytes in src to complete and introduces an error
+// accordingly, if necessary.
+func (c *context) ret() (nDst, nSrc int, err error) {
+	if c.err != nil || c.nSrc == len(c.src) {
+		return c.nDst, c.nSrc, c.err
+	}
+	// This point is only reached by mappers if there was no short destination
+	// buffer. This means that the source buffer was exhausted and that c.sz was
+	// set to 0 by next.
+	if c.atEOF && c.pSrc == len(c.src) {
+		return c.pDst, c.pSrc, nil
+	}
+	return c.nDst, c.nSrc, transform.ErrShortSrc
+}
+
+// retSpan returns the return values for the Span method. It checks whether
+// there were insufficient bytes in src to complete and introduces an error
+// accordingly, if necessary.
+func (c *context) retSpan() (n int, err error) {
+	_, nSrc, err := c.ret()
+	return nSrc, err
+}
+
+// checkpoint sets the return value buffer points for Transform to the current
+// positions.
+func (c *context) checkpoint() {
+	if c.err == nil {
+		c.nDst, c.nSrc = c.pDst, c.pSrc+c.sz
+	}
+}
+
+// unreadRune causes the last rune read by next to be reread on the next
+// invocation of next. Only one unreadRune may be called after a call to next.
+func (c *context) unreadRune() {
+	c.sz = 0
+}
+
+func (c *context) next() bool {
+	c.pSrc += c.sz
+	if c.pSrc == len(c.src) || c.err != nil {
+		c.info, c.sz = 0, 0
+		return false
+	}
+	v, sz := trie.lookup(c.src[c.pSrc:])
+	c.info, c.sz = info(v), sz
+	if c.sz == 0 {
+		if c.atEOF {
+			// A zero size means we have an incomplete rune. If we are atEOF,
+			// this means it is an illegal rune, which we will consume one
+			// byte at a time.
+			c.sz = 1
+		} else {
+			c.err = transform.ErrShortSrc
+			return false
+		}
+	}
+	return true
+}
+
+// writeBytes adds bytes to dst.
+func (c *context) writeBytes(b []byte) bool {
+	if len(c.dst)-c.pDst < len(b) {
+		c.err = transform.ErrShortDst
+		return false
+	}
+	// This loop is faster than using copy.
+	for _, ch := range b {
+		c.dst[c.pDst] = ch
+		c.pDst++
+	}
+	return true
+}
+
+// writeString writes the given string to dst.
+func (c *context) writeString(s string) bool {
+	if len(c.dst)-c.pDst < len(s) {
+		c.err = transform.ErrShortDst
+		return false
+	}
+	// This loop is faster than using copy.
+	for i := 0; i < len(s); i++ {
+		c.dst[c.pDst] = s[i]
+		c.pDst++
+	}
+	return true
+}
+
+// copy writes the current rune to dst.
+func (c *context) copy() bool {
+	return c.writeBytes(c.src[c.pSrc : c.pSrc+c.sz])
+}
+
+// copyXOR copies the current rune to dst and modifies it by applying the XOR
+// pattern of the case info. It is the responsibility of the caller to ensure
+// that this is a rune with a XOR pattern defined.
+func (c *context) copyXOR() bool {
+	if !c.copy() {
+		return false
+	}
+	if c.info&xorIndexBit == 0 {
+		// Fast path for 6-bit XOR pattern, which covers most cases.
+		c.dst[c.pDst-1] ^= byte(c.info >> xorShift)
+	} else {
+		// Interpret XOR bits as an index.
+		// TODO: test performance for unrolling this loop. Verify that we have
+		// at least two bytes and at most three.
+		idx := c.info >> xorShift
+		for p := c.pDst - 1; ; p-- {
+			c.dst[p] ^= xorData[idx]
+			idx--
+			if xorData[idx] == 0 {
+				break
+			}
+		}
+	}
+	return true
+}
+
+// hasPrefix returns true if src[pSrc:] starts with the given string.
+func (c *context) hasPrefix(s string) bool {
+	b := c.src[c.pSrc:]
+	if len(b) < len(s) {
+		return false
+	}
+	for i, c := range b[:len(s)] {
+		if c != s[i] {
+			return false
+		}
+	}
+	return true
+}
+
+// caseType returns an info with only the case bits, normalized to either
+// cLower, cUpper, cTitle or cUncased.
+func (c *context) caseType() info {
+	cm := c.info & 0x7
+	if cm < 4 {
+		return cm
+	}
+	if cm >= cXORCase {
+		// xor the last bit of the rune with the case type bits.
+		b := c.src[c.pSrc+c.sz-1]
+		return info(b&1) ^ cm&0x3
+	}
+	if cm == cIgnorableCased {
+		return cLower
+	}
+	return cUncased
+}
+
+// lower writes the lowercase version of the current rune to dst.
+func lower(c *context) bool {
+	ct := c.caseType()
+	if c.info&hasMappingMask == 0 || ct == cLower {
+		return c.copy()
+	}
+	if c.info&exceptionBit == 0 {
+		return c.copyXOR()
+	}
+	e := exceptions[c.info>>exceptionShift:]
+	offset := 2 + e[0]&lengthMask // size of header + fold string
+	if nLower := (e[1] >> lengthBits) & lengthMask; nLower != noChange {
+		return c.writeString(e[offset : offset+nLower])
+	}
+	return c.copy()
+}
+
+func isLower(c *context) bool {
+	ct := c.caseType()
+	if c.info&hasMappingMask == 0 || ct == cLower {
+		return true
+	}
+	if c.info&exceptionBit == 0 {
+		c.err = transform.ErrEndOfSpan
+		return false
+	}
+	e := exceptions[c.info>>exceptionShift:]
+	if nLower := (e[1] >> lengthBits) & lengthMask; nLower != noChange {
+		c.err = transform.ErrEndOfSpan
+		return false
+	}
+	return true
+}
+
+// upper writes the uppercase version of the current rune to dst.
+func upper(c *context) bool {
+	ct := c.caseType()
+	if c.info&hasMappingMask == 0 || ct == cUpper {
+		return c.copy()
+	}
+	if c.info&exceptionBit == 0 {
+		return c.copyXOR()
+	}
+	e := exceptions[c.info>>exceptionShift:]
+	offset := 2 + e[0]&lengthMask // size of header + fold string
+	// Get length of first special case mapping.
+	n := (e[1] >> lengthBits) & lengthMask
+	if ct == cTitle {
+		// The first special case mapping is for lower. Set n to the second.
+		if n == noChange {
+			n = 0
+		}
+		n, e = e[1]&lengthMask, e[n:]
+	}
+	if n != noChange {
+		return c.writeString(e[offset : offset+n])
+	}
+	return c.copy()
+}
+
+// isUpper writes the isUppercase version of the current rune to dst.
+func isUpper(c *context) bool {
+	ct := c.caseType()
+	if c.info&hasMappingMask == 0 || ct == cUpper {
+		return true
+	}
+	if c.info&exceptionBit == 0 {
+		c.err = transform.ErrEndOfSpan
+		return false
+	}
+	e := exceptions[c.info>>exceptionShift:]
+	// Get length of first special case mapping.
+	n := (e[1] >> lengthBits) & lengthMask
+	if ct == cTitle {
+		n = e[1] & lengthMask
+	}
+	if n != noChange {
+		c.err = transform.ErrEndOfSpan
+		return false
+	}
+	return true
+}
+
+// title writes the title case version of the current rune to dst.
+func title(c *context) bool {
+	ct := c.caseType()
+	if c.info&hasMappingMask == 0 || ct == cTitle {
+		return c.copy()
+	}
+	if c.info&exceptionBit == 0 {
+		if ct == cLower {
+			return c.copyXOR()
+		}
+		return c.copy()
+	}
+	// Get the exception data.
+	e := exceptions[c.info>>exceptionShift:]
+	offset := 2 + e[0]&lengthMask // size of header + fold string
+
+	nFirst := (e[1] >> lengthBits) & lengthMask
+	if nTitle := e[1] & lengthMask; nTitle != noChange {
+		if nFirst != noChange {
+			e = e[nFirst:]
+		}
+		return c.writeString(e[offset : offset+nTitle])
+	}
+	if ct == cLower && nFirst != noChange {
+		// Use the uppercase version instead.
+		return c.writeString(e[offset : offset+nFirst])
+	}
+	// Already in correct case.
+	return c.copy()
+}
+
+// isTitle reports whether the current rune is in title case.
+func isTitle(c *context) bool {
+	ct := c.caseType()
+	if c.info&hasMappingMask == 0 || ct == cTitle {
+		return true
+	}
+	if c.info&exceptionBit == 0 {
+		if ct == cLower {
+			c.err = transform.ErrEndOfSpan
+			return false
+		}
+		return true
+	}
+	// Get the exception data.
+	e := exceptions[c.info>>exceptionShift:]
+	if nTitle := e[1] & lengthMask; nTitle != noChange {
+		c.err = transform.ErrEndOfSpan
+		return false
+	}
+	nFirst := (e[1] >> lengthBits) & lengthMask
+	if ct == cLower && nFirst != noChange {
+		c.err = transform.ErrEndOfSpan
+		return false
+	}
+	return true
+}
+
+// foldFull writes the foldFull version of the current rune to dst.
+func foldFull(c *context) bool {
+	if c.info&hasMappingMask == 0 {
+		return c.copy()
+	}
+	ct := c.caseType()
+	if c.info&exceptionBit == 0 {
+		if ct != cLower || c.info&inverseFoldBit != 0 {
+			return c.copyXOR()
+		}
+		return c.copy()
+	}
+	e := exceptions[c.info>>exceptionShift:]
+	n := e[0] & lengthMask
+	if n == 0 {
+		if ct == cLower {
+			return c.copy()
+		}
+		n = (e[1] >> lengthBits) & lengthMask
+	}
+	return c.writeString(e[2 : 2+n])
+}
+
+// isFoldFull reports whether the current run is mapped to foldFull
+func isFoldFull(c *context) bool {
+	if c.info&hasMappingMask == 0 {
+		return true
+	}
+	ct := c.caseType()
+	if c.info&exceptionBit == 0 {
+		if ct != cLower || c.info&inverseFoldBit != 0 {
+			c.err = transform.ErrEndOfSpan
+			return false
+		}
+		return true
+	}
+	e := exceptions[c.info>>exceptionShift:]
+	n := e[0] & lengthMask
+	if n == 0 && ct == cLower {
+		return true
+	}
+	c.err = transform.ErrEndOfSpan
+	return false
+}
diff --git a/vendor/golang.org/x/text/cases/fold.go b/vendor/golang.org/x/text/cases/fold.go
new file mode 100644
index 00000000..85cc434f
--- /dev/null
+++ b/vendor/golang.org/x/text/cases/fold.go
@@ -0,0 +1,34 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package cases
+
+import "golang.org/x/text/transform"
+
+type caseFolder struct{ transform.NopResetter }
+
+// caseFolder implements the Transformer interface for doing case folding.
+func (t *caseFolder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+	c := context{dst: dst, src: src, atEOF: atEOF}
+	for c.next() {
+		foldFull(&c)
+		c.checkpoint()
+	}
+	return c.ret()
+}
+
+func (t *caseFolder) Span(src []byte, atEOF bool) (n int, err error) {
+	c := context{src: src, atEOF: atEOF}
+	for c.next() && isFoldFull(&c) {
+		c.checkpoint()
+	}
+	return c.retSpan()
+}
+
+func makeFold(o options) transform.SpanningTransformer {
+	// TODO: Special case folding, through option Language, Special/Turkic, or
+	// both.
+	// TODO: Implement Compact options.
+	return &caseFolder{}
+}
diff --git a/vendor/golang.org/x/text/cases/icu.go b/vendor/golang.org/x/text/cases/icu.go
new file mode 100644
index 00000000..db7c237c
--- /dev/null
+++ b/vendor/golang.org/x/text/cases/icu.go
@@ -0,0 +1,61 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:build icu
+
+package cases
+
+// Ideally these functions would be defined in a test file, but go test doesn't
+// allow CGO in tests. The build tag should ensure either way that these
+// functions will not end up in the package.
+
+// TODO: Ensure that the correct ICU version is set.
+
+/*
+#cgo LDFLAGS: -licui18n.57 -licuuc.57
+#include <stdlib.h>
+#include <unicode/ustring.h>
+#include <unicode/utypes.h>
+#include <unicode/localpointer.h>
+#include <unicode/ucasemap.h>
+*/
+import "C"
+
+import "unsafe"
+
+func doICU(tag, caser, input string) string {
+	err := C.UErrorCode(0)
+	loc := C.CString(tag)
+	cm := C.ucasemap_open(loc, C.uint32_t(0), &err)
+
+	buf := make([]byte, len(input)*4)
+	dst := (*C.char)(unsafe.Pointer(&buf[0]))
+	src := C.CString(input)
+
+	cn := C.int32_t(0)
+
+	switch caser {
+	case "fold":
+		cn = C.ucasemap_utf8FoldCase(cm,
+			dst, C.int32_t(len(buf)),
+			src, C.int32_t(len(input)),
+			&err)
+	case "lower":
+		cn = C.ucasemap_utf8ToLower(cm,
+			dst, C.int32_t(len(buf)),
+			src, C.int32_t(len(input)),
+			&err)
+	case "upper":
+		cn = C.ucasemap_utf8ToUpper(cm,
+			dst, C.int32_t(len(buf)),
+			src, C.int32_t(len(input)),
+			&err)
+	case "title":
+		cn = C.ucasemap_utf8ToTitle(cm,
+			dst, C.int32_t(len(buf)),
+			src, C.int32_t(len(input)),
+			&err)
+	}
+	return string(buf[:cn])
+}
diff --git a/vendor/golang.org/x/text/cases/info.go b/vendor/golang.org/x/text/cases/info.go
new file mode 100644
index 00000000..87a7c3e9
--- /dev/null
+++ b/vendor/golang.org/x/text/cases/info.go
@@ -0,0 +1,82 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package cases
+
+func (c info) cccVal() info {
+	if c&exceptionBit != 0 {
+		return info(exceptions[c>>exceptionShift]) & cccMask
+	}
+	return c & cccMask
+}
+
+func (c info) cccType() info {
+	ccc := c.cccVal()
+	if ccc <= cccZero {
+		return cccZero
+	}
+	return ccc
+}
+
+// TODO: Implement full Unicode breaking algorithm:
+// 1) Implement breaking in separate package.
+// 2) Use the breaker here.
+// 3) Compare table size and performance of using the more generic breaker.
+//
+// Note that we can extend the current algorithm to be much more accurate. This
+// only makes sense, though, if the performance and/or space penalty of using
+// the generic breaker is big. Extra data will only be needed for non-cased
+// runes, which means there are sufficient bits left in the caseType.
+// ICU prohibits breaking in such cases as well.
+
+// For the purpose of title casing we use an approximation of the Unicode Word
+// Breaking algorithm defined in Annex #29:
+// https://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table.
+//
+// For our approximation, we group the Word Break types into the following
+// categories, with associated rules:
+//
+// 1) Letter:
+//    ALetter, Hebrew_Letter, Numeric, ExtendNumLet, Extend, Format_FE, ZWJ.
+//    Rule: Never break between consecutive runes of this category.
+//
+// 2) Mid:
+//    MidLetter, MidNumLet, Single_Quote.
+//    (Cf. case-ignorable: MidLetter, MidNumLet, Single_Quote or cat is Mn,
+//    Me, Cf, Lm or Sk).
+//    Rule: Don't break between Letter and Mid, but break between two Mids.
+//
+// 3) Break:
+//    Any other category: NewLine, MidNum, CR, LF, Double_Quote, Katakana, and
+//    Other.
+//    These categories should always result in a break between two cased letters.
+//    Rule: Always break.
+//
+// Note 1: the Katakana and MidNum categories can, in esoteric cases, result in
+// preventing a break between two cased letters. For now we will ignore this
+// (e.g. [ALetter] [ExtendNumLet] [Katakana] [ExtendNumLet] [ALetter] and
+// [ALetter] [Numeric] [MidNum] [Numeric] [ALetter].)
+//
+// Note 2: the rule for Mid is very approximate, but works in most cases. To
+// improve, we could store the categories in the trie value and use a FA to
+// manage breaks. See TODO comment above.
+//
+// Note 3: according to the spec, it is possible for the Extend category to
+// introduce breaks between other categories grouped in Letter. However, this
+// is undesirable for our purposes. ICU prevents breaks in such cases as well.
+
+// isBreak returns whether this rune should introduce a break.
+func (c info) isBreak() bool {
+	return c.cccVal() == cccBreak
+}
+
+// isLetter returns whether the rune is of break type ALetter, Hebrew_Letter,
+// Numeric, ExtendNumLet, or Extend.
+func (c info) isLetter() bool {
+	ccc := c.cccVal()
+	if ccc == cccZero {
+		return !c.isCaseIgnorable()
+	}
+	return ccc != cccBreak
+}
diff --git a/vendor/golang.org/x/text/cases/map.go b/vendor/golang.org/x/text/cases/map.go
new file mode 100644
index 00000000..0f7c6a14
--- /dev/null
+++ b/vendor/golang.org/x/text/cases/map.go
@@ -0,0 +1,816 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package cases
+
+// This file contains the definitions of case mappings for all supported
+// languages. The rules for the language-specific tailorings were taken and
+// modified from the CLDR transform definitions in common/transforms.
+
+import (
+	"strings"
+	"unicode"
+	"unicode/utf8"
+
+	"golang.org/x/text/internal"
+	"golang.org/x/text/language"
+	"golang.org/x/text/transform"
+	"golang.org/x/text/unicode/norm"
+)
+
+// A mapFunc takes a context set to the current rune and writes the mapped
+// version to the same context. It may advance the context to the next rune. It
+// returns whether a checkpoint is possible: whether the pDst bytes written to
+// dst so far won't need changing as we see more source bytes.
+type mapFunc func(*context) bool
+
+// A spanFunc takes a context set to the current rune and returns whether this
+// rune would be altered when written to the output. It may advance the context
+// to the next rune. It returns whether a checkpoint is possible.
+type spanFunc func(*context) bool
+
+// maxIgnorable defines the maximum number of ignorables to consider for
+// lookahead operations.
+const maxIgnorable = 30
+
+// supported lists the language tags for which we have tailorings.
+const supported = "und af az el lt nl tr"
+
+func init() {
+	tags := []language.Tag{}
+	for _, s := range strings.Split(supported, " ") {
+		tags = append(tags, language.MustParse(s))
+	}
+	matcher = internal.NewInheritanceMatcher(tags)
+	Supported = language.NewCoverage(tags)
+}
+
+var (
+	matcher *internal.InheritanceMatcher
+
+	Supported language.Coverage
+
+	// We keep the following lists separate, instead of having a single per-
+	// language struct, to give the compiler a chance to remove unused code.
+
+	// Some uppercase mappers are stateless, so we can precompute the
+	// Transformers and save a bit on runtime allocations.
+	upperFunc = []struct {
+		upper mapFunc
+		span  spanFunc
+	}{
+		{nil, nil},                  // und
+		{nil, nil},                  // af
+		{aztrUpper(upper), isUpper}, // az
+		{elUpper, noSpan},           // el
+		{ltUpper(upper), noSpan},    // lt
+		{nil, nil},                  // nl
+		{aztrUpper(upper), isUpper}, // tr
+	}
+
+	undUpper            transform.SpanningTransformer = &undUpperCaser{}
+	undLower            transform.SpanningTransformer = &undLowerCaser{}
+	undLowerIgnoreSigma transform.SpanningTransformer = &undLowerIgnoreSigmaCaser{}
+
+	lowerFunc = []mapFunc{
+		nil,       // und
+		nil,       // af
+		aztrLower, // az
+		nil,       // el
+		ltLower,   // lt
+		nil,       // nl
+		aztrLower, // tr
+	}
+
+	titleInfos = []struct {
+		title     mapFunc
+		lower     mapFunc
+		titleSpan spanFunc
+		rewrite   func(*context)
+	}{
+		{title, lower, isTitle, nil},                // und
+		{title, lower, isTitle, afnlRewrite},        // af
+		{aztrUpper(title), aztrLower, isTitle, nil}, // az
+		{title, lower, isTitle, nil},                // el
+		{ltUpper(title), ltLower, noSpan, nil},      // lt
+		{nlTitle, lower, nlTitleSpan, afnlRewrite},  // nl
+		{aztrUpper(title), aztrLower, isTitle, nil}, // tr
+	}
+)
+
+func makeUpper(t language.Tag, o options) transform.SpanningTransformer {
+	_, i, _ := matcher.Match(t)
+	f := upperFunc[i].upper
+	if f == nil {
+		return undUpper
+	}
+	return &simpleCaser{f: f, span: upperFunc[i].span}
+}
+
+func makeLower(t language.Tag, o options) transform.SpanningTransformer {
+	_, i, _ := matcher.Match(t)
+	f := lowerFunc[i]
+	if f == nil {
+		if o.ignoreFinalSigma {
+			return undLowerIgnoreSigma
+		}
+		return undLower
+	}
+	if o.ignoreFinalSigma {
+		return &simpleCaser{f: f, span: isLower}
+	}
+	return &lowerCaser{
+		first:   f,
+		midWord: finalSigma(f),
+	}
+}
+
+func makeTitle(t language.Tag, o options) transform.SpanningTransformer {
+	_, i, _ := matcher.Match(t)
+	x := &titleInfos[i]
+	lower := x.lower
+	if o.noLower {
+		lower = (*context).copy
+	} else if !o.ignoreFinalSigma {
+		lower = finalSigma(lower)
+	}
+	return &titleCaser{
+		title:     x.title,
+		lower:     lower,
+		titleSpan: x.titleSpan,
+		rewrite:   x.rewrite,
+	}
+}
+
+func noSpan(c *context) bool {
+	c.err = transform.ErrEndOfSpan
+	return false
+}
+
+// TODO: consider a similar special case for the fast majority lower case. This
+// is a bit more involved so will require some more precise benchmarking to
+// justify it.
+
+type undUpperCaser struct{ transform.NopResetter }
+
+// undUpperCaser implements the Transformer interface for doing an upper case
+// mapping for the root locale (und). It eliminates the need for an allocation
+// as it prevents escaping by not using function pointers.
+func (t undUpperCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+	c := context{dst: dst, src: src, atEOF: atEOF}
+	for c.next() {
+		upper(&c)
+		c.checkpoint()
+	}
+	return c.ret()
+}
+
+func (t undUpperCaser) Span(src []byte, atEOF bool) (n int, err error) {
+	c := context{src: src, atEOF: atEOF}
+	for c.next() && isUpper(&c) {
+		c.checkpoint()
+	}
+	return c.retSpan()
+}
+
+// undLowerIgnoreSigmaCaser implements the Transformer interface for doing
+// a lower case mapping for the root locale (und) ignoring final sigma
+// handling. This casing algorithm is used in some performance-critical packages
+// like secure/precis and x/net/http/idna, which warrants its special-casing.
+type undLowerIgnoreSigmaCaser struct{ transform.NopResetter }
+
+func (t undLowerIgnoreSigmaCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+	c := context{dst: dst, src: src, atEOF: atEOF}
+	for c.next() && lower(&c) {
+		c.checkpoint()
+	}
+	return c.ret()
+
+}
+
+// Span implements a generic lower-casing. This is possible as isLower works
+// for all lowercasing variants. All lowercase variants only vary in how they
+// transform a non-lowercase letter. They will never change an already lowercase
+// letter. In addition, there is no state.
+func (t undLowerIgnoreSigmaCaser) Span(src []byte, atEOF bool) (n int, err error) {
+	c := context{src: src, atEOF: atEOF}
+	for c.next() && isLower(&c) {
+		c.checkpoint()
+	}
+	return c.retSpan()
+}
+
+type simpleCaser struct {
+	context
+	f    mapFunc
+	span spanFunc
+}
+
+// simpleCaser implements the Transformer interface for doing a case operation
+// on a rune-by-rune basis.
+func (t *simpleCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+	c := context{dst: dst, src: src, atEOF: atEOF}
+	for c.next() && t.f(&c) {
+		c.checkpoint()
+	}
+	return c.ret()
+}
+
+func (t *simpleCaser) Span(src []byte, atEOF bool) (n int, err error) {
+	c := context{src: src, atEOF: atEOF}
+	for c.next() && t.span(&c) {
+		c.checkpoint()
+	}
+	return c.retSpan()
+}
+
+// undLowerCaser implements the Transformer interface for doing a lower case
+// mapping for the root locale (und) ignoring final sigma handling. This casing
+// algorithm is used in some performance-critical packages like secure/precis
+// and x/net/http/idna, which warrants its special-casing.
+type undLowerCaser struct{ transform.NopResetter }
+
+func (t undLowerCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+	c := context{dst: dst, src: src, atEOF: atEOF}
+
+	for isInterWord := true; c.next(); {
+		if isInterWord {
+			if c.info.isCased() {
+				if !lower(&c) {
+					break
+				}
+				isInterWord = false
+			} else if !c.copy() {
+				break
+			}
+		} else {
+			if c.info.isNotCasedAndNotCaseIgnorable() {
+				if !c.copy() {
+					break
+				}
+				isInterWord = true
+			} else if !c.hasPrefix("Σ") {
+				if !lower(&c) {
+					break
+				}
+			} else if !finalSigmaBody(&c) {
+				break
+			}
+		}
+		c.checkpoint()
+	}
+	return c.ret()
+}
+
+func (t undLowerCaser) Span(src []byte, atEOF bool) (n int, err error) {
+	c := context{src: src, atEOF: atEOF}
+	for c.next() && isLower(&c) {
+		c.checkpoint()
+	}
+	return c.retSpan()
+}
+
+// lowerCaser implements the Transformer interface. The default Unicode lower
+// casing requires different treatment for the first and subsequent characters
+// of a word, most notably to handle the Greek final Sigma.
+type lowerCaser struct {
+	undLowerIgnoreSigmaCaser
+
+	context
+
+	first, midWord mapFunc
+}
+
+func (t *lowerCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+	t.context = context{dst: dst, src: src, atEOF: atEOF}
+	c := &t.context
+
+	for isInterWord := true; c.next(); {
+		if isInterWord {
+			if c.info.isCased() {
+				if !t.first(c) {
+					break
+				}
+				isInterWord = false
+			} else if !c.copy() {
+				break
+			}
+		} else {
+			if c.info.isNotCasedAndNotCaseIgnorable() {
+				if !c.copy() {
+					break
+				}
+				isInterWord = true
+			} else if !t.midWord(c) {
+				break
+			}
+		}
+		c.checkpoint()
+	}
+	return c.ret()
+}
+
+// titleCaser implements the Transformer interface. Title casing algorithms
+// distinguish between the first letter of a word and subsequent letters of the
+// same word. It uses state to avoid requiring a potentially infinite lookahead.
+type titleCaser struct {
+	context
+
+	// rune mappings used by the actual casing algorithms.
+	title     mapFunc
+	lower     mapFunc
+	titleSpan spanFunc
+
+	rewrite func(*context)
+}
+
+// Transform implements the standard Unicode title case algorithm as defined in
+// Chapter 3 of The Unicode Standard:
+// toTitlecase(X): Find the word boundaries in X according to Unicode Standard
+// Annex #29, "Unicode Text Segmentation." For each word boundary, find the
+// first cased character F following the word boundary. If F exists, map F to
+// Titlecase_Mapping(F); then map all characters C between F and the following
+// word boundary to Lowercase_Mapping(C).
+func (t *titleCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+	t.context = context{dst: dst, src: src, atEOF: atEOF, isMidWord: t.isMidWord}
+	c := &t.context
+
+	if !c.next() {
+		return c.ret()
+	}
+
+	for {
+		p := c.info
+		if t.rewrite != nil {
+			t.rewrite(c)
+		}
+
+		wasMid := p.isMid()
+		// Break out of this loop on failure to ensure we do not modify the
+		// state incorrectly.
+		if p.isCased() {
+			if !c.isMidWord {
+				if !t.title(c) {
+					break
+				}
+				c.isMidWord = true
+			} else if !t.lower(c) {
+				break
+			}
+		} else if !c.copy() {
+			break
+		} else if p.isBreak() {
+			c.isMidWord = false
+		}
+
+		// As we save the state of the transformer, it is safe to call
+		// checkpoint after any successful write.
+		if !(c.isMidWord && wasMid) {
+			c.checkpoint()
+		}
+
+		if !c.next() {
+			break
+		}
+		if wasMid && c.info.isMid() {
+			c.isMidWord = false
+		}
+	}
+	return c.ret()
+}
+
+func (t *titleCaser) Span(src []byte, atEOF bool) (n int, err error) {
+	t.context = context{src: src, atEOF: atEOF, isMidWord: t.isMidWord}
+	c := &t.context
+
+	if !c.next() {
+		return c.retSpan()
+	}
+
+	for {
+		p := c.info
+		if t.rewrite != nil {
+			t.rewrite(c)
+		}
+
+		wasMid := p.isMid()
+		// Break out of this loop on failure to ensure we do not modify the
+		// state incorrectly.
+		if p.isCased() {
+			if !c.isMidWord {
+				if !t.titleSpan(c) {
+					break
+				}
+				c.isMidWord = true
+			} else if !isLower(c) {
+				break
+			}
+		} else if p.isBreak() {
+			c.isMidWord = false
+		}
+		// As we save the state of the transformer, it is safe to call
+		// checkpoint after any successful write.
+		if !(c.isMidWord && wasMid) {
+			c.checkpoint()
+		}
+
+		if !c.next() {
+			break
+		}
+		if wasMid && c.info.isMid() {
+			c.isMidWord = false
+		}
+	}
+	return c.retSpan()
+}
+
+// finalSigma adds Greek final Sigma handing to another casing function. It
+// determines whether a lowercased sigma should be σ or ς, by looking ahead for
+// case-ignorables and a cased letters.
+func finalSigma(f mapFunc) mapFunc {
+	return func(c *context) bool {
+		if !c.hasPrefix("Σ") {
+			return f(c)
+		}
+		return finalSigmaBody(c)
+	}
+}
+
+func finalSigmaBody(c *context) bool {
+	// Current rune must be ∑.
+
+	// ::NFD();
+	// # 03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA
+	// Σ } [:case-ignorable:]* [:cased:] → σ;
+	// [:cased:] [:case-ignorable:]* { Σ → ς;
+	// ::Any-Lower;
+	// ::NFC();
+
+	p := c.pDst
+	c.writeString("ς")
+
+	// TODO: we should do this here, but right now this will never have an
+	// effect as this is called when the prefix is Sigma, whereas Dutch and
+	// Afrikaans only test for an apostrophe.
+	//
+	// if t.rewrite != nil {
+	// 	t.rewrite(c)
+	// }
+
+	// We need to do one more iteration after maxIgnorable, as a cased
+	// letter is not an ignorable and may modify the result.
+	wasMid := false
+	for i := 0; i < maxIgnorable+1; i++ {
+		if !c.next() {
+			return false
+		}
+		if !c.info.isCaseIgnorable() {
+			// All Midword runes are also case ignorable, so we are
+			// guaranteed to have a letter or word break here. As we are
+			// unreading the run, there is no need to unset c.isMidWord;
+			// the title caser will handle this.
+			if c.info.isCased() {
+				// p+1 is guaranteed to be in bounds: if writing ς was
+				// successful, p+1 will contain the second byte of ς. If not,
+				// this function will have returned after c.next returned false.
+				c.dst[p+1]++ // ς → σ
+			}
+			c.unreadRune()
+			return true
+		}
+		// A case ignorable may also introduce a word break, so we may need
+		// to continue searching even after detecting a break.
+		isMid := c.info.isMid()
+		if (wasMid && isMid) || c.info.isBreak() {
+			c.isMidWord = false
+		}
+		wasMid = isMid
+		c.copy()
+	}
+	return true
+}
+
+// finalSigmaSpan would be the same as isLower.
+
+// elUpper implements Greek upper casing, which entails removing a predefined
+// set of non-blocked modifiers. Note that these accents should not be removed
+// for title casing!
+// Example: "Οδός" -> "ΟΔΟΣ".
+func elUpper(c *context) bool {
+	// From CLDR:
+	// [:Greek:] [^[:ccc=Not_Reordered:][:ccc=Above:]]*? { [\u0313\u0314\u0301\u0300\u0306\u0342\u0308\u0304] → ;
+	// [:Greek:] [^[:ccc=Not_Reordered:][:ccc=Iota_Subscript:]]*? { \u0345 → ;
+
+	r, _ := utf8.DecodeRune(c.src[c.pSrc:])
+	oldPDst := c.pDst
+	if !upper(c) {
+		return false
+	}
+	if !unicode.Is(unicode.Greek, r) {
+		return true
+	}
+	i := 0
+	// Take the properties of the uppercased rune that is already written to the
+	// destination. This saves us the trouble of having to uppercase the
+	// decomposed rune again.
+	if b := norm.NFD.Properties(c.dst[oldPDst:]).Decomposition(); b != nil {
+		// Restore the destination position and process the decomposed rune.
+		r, sz := utf8.DecodeRune(b)
+		if r <= 0xFF { // See A.6.1
+			return true
+		}
+		c.pDst = oldPDst
+		// Insert the first rune and ignore the modifiers. See A.6.2.
+		c.writeBytes(b[:sz])
+		i = len(b[sz:]) / 2 // Greek modifiers are always of length 2.
+	}
+
+	for ; i < maxIgnorable && c.next(); i++ {
+		switch r, _ := utf8.DecodeRune(c.src[c.pSrc:]); r {
+		// Above and Iota Subscript
+		case 0x0300, // U+0300 COMBINING GRAVE ACCENT
+			0x0301, // U+0301 COMBINING ACUTE ACCENT
+			0x0304, // U+0304 COMBINING MACRON
+			0x0306, // U+0306 COMBINING BREVE
+			0x0308, // U+0308 COMBINING DIAERESIS
+			0x0313, // U+0313 COMBINING COMMA ABOVE
+			0x0314, // U+0314 COMBINING REVERSED COMMA ABOVE
+			0x0342, // U+0342 COMBINING GREEK PERISPOMENI
+			0x0345: // U+0345 COMBINING GREEK YPOGEGRAMMENI
+			// No-op. Gobble the modifier.
+
+		default:
+			switch v, _ := trie.lookup(c.src[c.pSrc:]); info(v).cccType() {
+			case cccZero:
+				c.unreadRune()
+				return true
+
+			// We don't need to test for IotaSubscript as the only rune that
+			// qualifies (U+0345) was already excluded in the switch statement
+			// above. See A.4.
+
+			case cccAbove:
+				return c.copy()
+			default:
+				// Some other modifier. We're still allowed to gobble Greek
+				// modifiers after this.
+				c.copy()
+			}
+		}
+	}
+	return i == maxIgnorable
+}
+
+// TODO: implement elUpperSpan (low-priority: complex and infrequent).
+
+func ltLower(c *context) bool {
+	// From CLDR:
+	// # Introduce an explicit dot above when lowercasing capital I's and J's
+	// # whenever there are more accents above.
+	// # (of the accents used in Lithuanian: grave, acute, tilde above, and ogonek)
+	// # 0049; 0069 0307; 0049; 0049; lt More_Above; # LATIN CAPITAL LETTER I
+	// # 004A; 006A 0307; 004A; 004A; lt More_Above; # LATIN CAPITAL LETTER J
+	// # 012E; 012F 0307; 012E; 012E; lt More_Above; # LATIN CAPITAL LETTER I WITH OGONEK
+	// # 00CC; 0069 0307 0300; 00CC; 00CC; lt; # LATIN CAPITAL LETTER I WITH GRAVE
+	// # 00CD; 0069 0307 0301; 00CD; 00CD; lt; # LATIN CAPITAL LETTER I WITH ACUTE
+	// # 0128; 0069 0307 0303; 0128; 0128; lt; # LATIN CAPITAL LETTER I WITH TILDE
+	// ::NFD();
+	// I } [^[:ccc=Not_Reordered:][:ccc=Above:]]* [:ccc=Above:] → i \u0307;
+	// J } [^[:ccc=Not_Reordered:][:ccc=Above:]]* [:ccc=Above:] → j \u0307;
+	// I \u0328 (Į) } [^[:ccc=Not_Reordered:][:ccc=Above:]]* [:ccc=Above:] → i \u0328 \u0307;
+	// I \u0300 (Ì) → i \u0307 \u0300;
+	// I \u0301 (Í) → i \u0307 \u0301;
+	// I \u0303 (Ĩ) → i \u0307 \u0303;
+	// ::Any-Lower();
+	// ::NFC();
+
+	i := 0
+	if r := c.src[c.pSrc]; r < utf8.RuneSelf {
+		lower(c)
+		if r != 'I' && r != 'J' {
+			return true
+		}
+	} else {
+		p := norm.NFD.Properties(c.src[c.pSrc:])
+		if d := p.Decomposition(); len(d) >= 3 && (d[0] == 'I' || d[0] == 'J') {
+			// UTF-8 optimization: the decomposition will only have an above
+			// modifier if the last rune of the decomposition is in [U+300-U+311].
+			// In all other cases, a decomposition starting with I is always
+			// an I followed by modifiers that are not cased themselves. See A.2.
+			if d[1] == 0xCC && d[2] <= 0x91 { // A.2.4.
+				if !c.writeBytes(d[:1]) {
+					return false
+				}
+				c.dst[c.pDst-1] += 'a' - 'A' // lower
+
+				// Assumption: modifier never changes on lowercase. See A.1.
+				// Assumption: all modifiers added have CCC = Above. See A.2.3.
+				return c.writeString("\u0307") && c.writeBytes(d[1:])
+			}
+			// In all other cases the additional modifiers will have a CCC
+			// that is less than 230 (Above). We will insert the U+0307, if
+			// needed, after these modifiers so that a string in FCD form
+			// will remain so. See A.2.2.
+			lower(c)
+			i = 1
+		} else {
+			return lower(c)
+		}
+	}
+
+	for ; i < maxIgnorable && c.next(); i++ {
+		switch c.info.cccType() {
+		case cccZero:
+			c.unreadRune()
+			return true
+		case cccAbove:
+			return c.writeString("\u0307") && c.copy() // See A.1.
+		default:
+			c.copy() // See A.1.
+		}
+	}
+	return i == maxIgnorable
+}
+
+// ltLowerSpan would be the same as isLower.
+
+func ltUpper(f mapFunc) mapFunc {
+	return func(c *context) bool {
+		// Unicode:
+		// 0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE
+		//
+		// From CLDR:
+		// # Remove \u0307 following soft-dotteds (i, j, and the like), with possible
+		// # intervening non-230 marks.
+		// ::NFD();
+		// [:Soft_Dotted:] [^[:ccc=Not_Reordered:][:ccc=Above:]]* { \u0307 → ;
+		// ::Any-Upper();
+		// ::NFC();
+
+		// TODO: See A.5. A soft-dotted rune never has an exception. This would
+		// allow us to overload the exception bit and encode this property in
+		// info. Need to measure performance impact of this.
+		r, _ := utf8.DecodeRune(c.src[c.pSrc:])
+		oldPDst := c.pDst
+		if !f(c) {
+			return false
+		}
+		if !unicode.Is(unicode.Soft_Dotted, r) {
+			return true
+		}
+
+		// We don't need to do an NFD normalization, as a soft-dotted rune never
+		// contains U+0307. See A.3.
+
+		i := 0
+		for ; i < maxIgnorable && c.next(); i++ {
+			switch c.info.cccType() {
+			case cccZero:
+				c.unreadRune()
+				return true
+			case cccAbove:
+				if c.hasPrefix("\u0307") {
+					// We don't do a full NFC, but rather combine runes for
+					// some of the common cases. (Returning NFC or
+					// preserving normal form is neither a requirement nor
+					// a possibility anyway).
+					if !c.next() {
+						return false
+					}
+					if c.dst[oldPDst] == 'I' && c.pDst == oldPDst+1 && c.src[c.pSrc] == 0xcc {
+						s := ""
+						switch c.src[c.pSrc+1] {
+						case 0x80: // U+0300 COMBINING GRAVE ACCENT
+							s = "\u00cc" // U+00CC LATIN CAPITAL LETTER I WITH GRAVE
+						case 0x81: // U+0301 COMBINING ACUTE ACCENT
+							s = "\u00cd" // U+00CD LATIN CAPITAL LETTER I WITH ACUTE
+						case 0x83: // U+0303 COMBINING TILDE
+							s = "\u0128" // U+0128 LATIN CAPITAL LETTER I WITH TILDE
+						case 0x88: // U+0308 COMBINING DIAERESIS
+							s = "\u00cf" // U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS
+						default:
+						}
+						if s != "" {
+							c.pDst = oldPDst
+							return c.writeString(s)
+						}
+					}
+				}
+				return c.copy()
+			default:
+				c.copy()
+			}
+		}
+		return i == maxIgnorable
+	}
+}
+
+// TODO: implement ltUpperSpan (low priority: complex and infrequent).
+
+func aztrUpper(f mapFunc) mapFunc {
+	return func(c *context) bool {
+		// i→İ;
+		if c.src[c.pSrc] == 'i' {
+			return c.writeString("İ")
+		}
+		return f(c)
+	}
+}
+
+func aztrLower(c *context) (done bool) {
+	// From CLDR:
+	// # I and i-dotless; I-dot and i are case pairs in Turkish and Azeri
+	// # 0130; 0069; 0130; 0130; tr; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+	// İ→i;
+	// # When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i.
+	// # This matches the behavior of the canonically equivalent I-dot_above
+	// # 0307; ; 0307; 0307; tr After_I; # COMBINING DOT ABOVE
+	// # When lowercasing, unless an I is before a dot_above, it turns into a dotless i.
+	// # 0049; 0131; 0049; 0049; tr Not_Before_Dot; # LATIN CAPITAL LETTER I
+	// I([^[:ccc=Not_Reordered:][:ccc=Above:]]*)\u0307 → i$1 ;
+	// I→ı ;
+	// ::Any-Lower();
+	if c.hasPrefix("\u0130") { // İ
+		return c.writeString("i")
+	}
+	if c.src[c.pSrc] != 'I' {
+		return lower(c)
+	}
+
+	// We ignore the lower-case I for now, but insert it later when we know
+	// which form we need.
+	start := c.pSrc + c.sz
+
+	i := 0
+Loop:
+	// We check for up to n ignorables before \u0307. As \u0307 is an
+	// ignorable as well, n is maxIgnorable-1.
+	for ; i < maxIgnorable && c.next(); i++ {
+		switch c.info.cccType() {
+		case cccAbove:
+			if c.hasPrefix("\u0307") {
+				return c.writeString("i") && c.writeBytes(c.src[start:c.pSrc]) // ignore U+0307
+			}
+			done = true
+			break Loop
+		case cccZero:
+			c.unreadRune()
+			done = true
+			break Loop
+		default:
+			// We'll write this rune after we know which starter to use.
+		}
+	}
+	if i == maxIgnorable {
+		done = true
+	}
+	return c.writeString("ı") && c.writeBytes(c.src[start:c.pSrc+c.sz]) && done
+}
+
+// aztrLowerSpan would be the same as isLower.
+
+func nlTitle(c *context) bool {
+	// From CLDR:
+	// # Special titlecasing for Dutch initial "ij".
+	// ::Any-Title();
+	// # Fix up Ij at the beginning of a "word" (per Any-Title, notUAX #29)
+	// [:^WB=ALetter:] [:WB=Extend:]* [[:WB=MidLetter:][:WB=MidNumLet:]]? { Ij } → IJ ;
+	if c.src[c.pSrc] != 'I' && c.src[c.pSrc] != 'i' {
+		return title(c)
+	}
+
+	if !c.writeString("I") || !c.next() {
+		return false
+	}
+	if c.src[c.pSrc] == 'j' || c.src[c.pSrc] == 'J' {
+		return c.writeString("J")
+	}
+	c.unreadRune()
+	return true
+}
+
+func nlTitleSpan(c *context) bool {
+	// From CLDR:
+	// # Special titlecasing for Dutch initial "ij".
+	// ::Any-Title();
+	// # Fix up Ij at the beginning of a "word" (per Any-Title, notUAX #29)
+	// [:^WB=ALetter:] [:WB=Extend:]* [[:WB=MidLetter:][:WB=MidNumLet:]]? { Ij } → IJ ;
+	if c.src[c.pSrc] != 'I' {
+		return isTitle(c)
+	}
+	if !c.next() || c.src[c.pSrc] == 'j' {
+		return false
+	}
+	if c.src[c.pSrc] != 'J' {
+		c.unreadRune()
+	}
+	return true
+}
+
+// Not part of CLDR, but see https://unicode.org/cldr/trac/ticket/7078.
+func afnlRewrite(c *context) {
+	if c.hasPrefix("'") || c.hasPrefix("’") {
+		c.isMidWord = true
+	}
+}
diff --git a/vendor/golang.org/x/text/cases/tables10.0.0.go b/vendor/golang.org/x/text/cases/tables10.0.0.go
new file mode 100644
index 00000000..bd28ae14
--- /dev/null
+++ b/vendor/golang.org/x/text/cases/tables10.0.0.go
@@ -0,0 +1,2255 @@
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
+
+//go:build go1.10 && !go1.13
+
+package cases
+
+// UnicodeVersion is the Unicode version from which the tables in this package are derived.
+const UnicodeVersion = "10.0.0"
+
+var xorData string = "" + // Size: 185 bytes
+	"\x00\x06\x07\x00\x01?\x00\x0f\x03\x00\x0f\x12\x00\x0f\x1f\x00\x0f\x1d" +
+	"\x00\x01\x13\x00\x0f\x16\x00\x0f\x0b\x00\x0f3\x00\x0f7\x00\x01#\x00\x0f?" +
+	"\x00\x0e'\x00\x0f/\x00\x0e>\x00\x0f*\x00\x0c&\x00\x0c*\x00\x0c;\x00\x0c9" +
+	"\x00\x0c%\x00\x01\x08\x00\x03\x0d\x00\x03\x09\x00\x02\x06\x00\x02\x02" +
+	"\x00\x02\x0c\x00\x01\x00\x00\x01\x03\x00\x01\x01\x00\x01 \x00\x01\x0c" +
+	"\x00\x01\x10\x00\x03\x10\x00\x036 \x00\x037 \x00\x0b#\x10\x00\x0b 0\x00" +
+	"\x0b!\x10\x00\x0b!0\x00\x0b(\x04\x00\x03\x04\x1e\x00\x03\x0a\x00\x02:" +
+	"\x00\x02>\x00\x02,\x00\x02\x00\x00\x02\x10\x00\x01<\x00\x01&\x00\x01*" +
+	"\x00\x01.\x00\x010\x003 \x00\x01\x18\x00\x01(\x00\x01\x1e\x00\x01\x22"
+
+var exceptions string = "" + // Size: 2068 bytes
+	"\x00\x12\x12μΜΜ\x12\x12ssSSSs\x13\x18i̇i̇\x10\x09II\x13\x1bʼnʼNʼN\x11" +
+	"\x09sSS\x12\x12dždžDž\x12\x12dždžDŽ\x10\x12DŽDž\x12\x12ljljLj\x12\x12ljljLJ\x10\x12LJLj" +
+	"\x12\x12njnjNj\x12\x12njnjNJ\x10\x12NJNj\x13\x1bǰJ̌J̌\x12\x12dzdzDz\x12\x12dzdzDZ\x10" +
+	"\x12DZDz\x13\x18ⱥⱥ\x13\x18ⱦⱦ\x10\x1bⱾⱾ\x10\x1bⱿⱿ\x10\x1bⱯⱯ\x10\x1bⱭⱭ\x10" +
+	"\x1bⱰⱰ\x10\x1bꞫꞫ\x10\x1bꞬꞬ\x10\x1bꞍꞍ\x10\x1bꞪꞪ\x10\x1bꞮꞮ\x10\x1bⱢⱢ\x10" +
+	"\x1bꞭꞭ\x10\x1bⱮⱮ\x10\x1bⱤⱤ\x10\x1bꞱꞱ\x10\x1bꞲꞲ\x10\x1bꞰꞰ2\x12ιΙΙ\x166ΐ" +
+	"Ϊ́Ϊ́\x166ΰΫ́Ϋ́\x12\x12σΣΣ\x12\x12βΒΒ\x12\x12θΘΘ\x12\x12φΦΦ\x12" +
+	"\x12πΠΠ\x12\x12κΚΚ\x12\x12ρΡΡ\x12\x12εΕΕ\x14$եւԵՒԵւ\x12\x12вВВ\x12\x12дД" +
+	"Д\x12\x12оОО\x12\x12сСС\x12\x12тТТ\x12\x12тТТ\x12\x12ъЪЪ\x12\x12ѣѢѢ\x13" +
+	"\x1bꙋꙊꙊ\x13\x1bẖH̱H̱\x13\x1bẗT̈T̈\x13\x1bẘW̊W̊\x13\x1bẙY̊Y̊\x13\x1ba" +
+	"ʾAʾAʾ\x13\x1bṡṠṠ\x12\x10ssß\x14$ὐΥ̓Υ̓\x166ὒΥ̓̀Υ̓̀\x166ὔΥ̓́Υ̓́\x166" +
+	"ὖΥ̓͂Υ̓͂\x15+ἀιἈΙᾈ\x15+ἁιἉΙᾉ\x15+ἂιἊΙᾊ\x15+ἃιἋΙᾋ\x15+ἄιἌΙᾌ\x15+ἅιἍΙᾍ" +
+	"\x15+ἆιἎΙᾎ\x15+ἇιἏΙᾏ\x15\x1dἀιᾀἈΙ\x15\x1dἁιᾁἉΙ\x15\x1dἂιᾂἊΙ\x15\x1dἃιᾃἋΙ" +
+	"\x15\x1dἄιᾄἌΙ\x15\x1dἅιᾅἍΙ\x15\x1dἆιᾆἎΙ\x15\x1dἇιᾇἏΙ\x15+ἠιἨΙᾘ\x15+ἡιἩΙᾙ" +
+	"\x15+ἢιἪΙᾚ\x15+ἣιἫΙᾛ\x15+ἤιἬΙᾜ\x15+ἥιἭΙᾝ\x15+ἦιἮΙᾞ\x15+ἧιἯΙᾟ\x15\x1dἠιᾐἨ" +
+	"Ι\x15\x1dἡιᾑἩΙ\x15\x1dἢιᾒἪΙ\x15\x1dἣιᾓἫΙ\x15\x1dἤιᾔἬΙ\x15\x1dἥιᾕἭΙ\x15" +
+	"\x1dἦιᾖἮΙ\x15\x1dἧιᾗἯΙ\x15+ὠιὨΙᾨ\x15+ὡιὩΙᾩ\x15+ὢιὪΙᾪ\x15+ὣιὫΙᾫ\x15+ὤιὬΙᾬ" +
+	"\x15+ὥιὭΙᾭ\x15+ὦιὮΙᾮ\x15+ὧιὯΙᾯ\x15\x1dὠιᾠὨΙ\x15\x1dὡιᾡὩΙ\x15\x1dὢιᾢὪΙ" +
+	"\x15\x1dὣιᾣὫΙ\x15\x1dὤιᾤὬΙ\x15\x1dὥιᾥὭΙ\x15\x1dὦιᾦὮΙ\x15\x1dὧιᾧὯΙ\x15-ὰι" +
+	"ᾺΙᾺͅ\x14#αιΑΙᾼ\x14$άιΆΙΆͅ\x14$ᾶΑ͂Α͂\x166ᾶιΑ͂Ιᾼ͂\x14\x1cαιᾳΑΙ\x12" +
+	"\x12ιΙΙ\x15-ὴιῊΙῊͅ\x14#ηιΗΙῌ\x14$ήιΉΙΉͅ\x14$ῆΗ͂Η͂\x166ῆιΗ͂Ιῌ͂\x14\x1c" +
+	"ηιῃΗΙ\x166ῒΪ̀Ϊ̀\x166ΐΪ́Ϊ́\x14$ῖΙ͂Ι͂\x166ῗΪ͂Ϊ͂\x166ῢΫ̀Ϋ" +
+	"̀\x166ΰΫ́Ϋ́\x14$ῤΡ̓Ρ̓\x14$ῦΥ͂Υ͂\x166ῧΫ͂Ϋ͂\x15-ὼιῺΙῺͅ\x14#ωιΩΙ" +
+	"ῼ\x14$ώιΏΙΏͅ\x14$ῶΩ͂Ω͂\x166ῶιΩ͂Ιῼ͂\x14\x1cωιῳΩΙ\x12\x10ωω\x11\x08kk" +
+	"\x12\x10åå\x12\x10ɫɫ\x12\x10ɽɽ\x10\x12ȺȺ\x10\x12ȾȾ\x12\x10ɑɑ\x12\x10ɱɱ" +
+	"\x12\x10ɐɐ\x12\x10ɒɒ\x12\x10ȿȿ\x12\x10ɀɀ\x12\x10ɥɥ\x12\x10ɦɦ\x12\x10ɜɜ" +
+	"\x12\x10ɡɡ\x12\x10ɬɬ\x12\x10ɪɪ\x12\x10ʞʞ\x12\x10ʇʇ\x12\x10ʝʝ\x12\x12ffFF" +
+	"Ff\x12\x12fiFIFi\x12\x12flFLFl\x13\x1bffiFFIFfi\x13\x1bfflFFLFfl\x12\x12" +
+	"stSTSt\x12\x12stSTSt\x14$մնՄՆՄն\x14$մեՄԵՄե\x14$միՄԻՄի\x14$վնՎՆՎն\x14$մխՄ" +
+	"ԽՄխ"
+
+// lookup returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *caseTrie) lookup(s []byte) (v uint16, sz int) {
+	c0 := s[0]
+	switch {
+	case c0 < 0x80: // is ASCII
+		return caseValues[c0], 1
+	case c0 < 0xC2:
+		return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+	case c0 < 0xE0: // 2-byte UTF-8
+		if len(s) < 2 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c1), 2
+	case c0 < 0xF0: // 3-byte UTF-8
+		if len(s) < 3 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c2), 3
+	case c0 < 0xF8: // 4-byte UTF-8
+		if len(s) < 4 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		o = uint32(i)<<6 + uint32(c2)
+		i = caseIndex[o]
+		c3 := s[3]
+		if c3 < 0x80 || 0xC0 <= c3 {
+			return 0, 3 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c3), 4
+	}
+	// Illegal rune
+	return 0, 1
+}
+
+// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *caseTrie) lookupUnsafe(s []byte) uint16 {
+	c0 := s[0]
+	if c0 < 0x80 { // is ASCII
+		return caseValues[c0]
+	}
+	i := caseIndex[c0]
+	if c0 < 0xE0 { // 2-byte UTF-8
+		return t.lookupValue(uint32(i), s[1])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[1])]
+	if c0 < 0xF0 { // 3-byte UTF-8
+		return t.lookupValue(uint32(i), s[2])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[2])]
+	if c0 < 0xF8 { // 4-byte UTF-8
+		return t.lookupValue(uint32(i), s[3])
+	}
+	return 0
+}
+
+// lookupString returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *caseTrie) lookupString(s string) (v uint16, sz int) {
+	c0 := s[0]
+	switch {
+	case c0 < 0x80: // is ASCII
+		return caseValues[c0], 1
+	case c0 < 0xC2:
+		return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+	case c0 < 0xE0: // 2-byte UTF-8
+		if len(s) < 2 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c1), 2
+	case c0 < 0xF0: // 3-byte UTF-8
+		if len(s) < 3 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c2), 3
+	case c0 < 0xF8: // 4-byte UTF-8
+		if len(s) < 4 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		o = uint32(i)<<6 + uint32(c2)
+		i = caseIndex[o]
+		c3 := s[3]
+		if c3 < 0x80 || 0xC0 <= c3 {
+			return 0, 3 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c3), 4
+	}
+	// Illegal rune
+	return 0, 1
+}
+
+// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *caseTrie) lookupStringUnsafe(s string) uint16 {
+	c0 := s[0]
+	if c0 < 0x80 { // is ASCII
+		return caseValues[c0]
+	}
+	i := caseIndex[c0]
+	if c0 < 0xE0 { // 2-byte UTF-8
+		return t.lookupValue(uint32(i), s[1])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[1])]
+	if c0 < 0xF0 { // 3-byte UTF-8
+		return t.lookupValue(uint32(i), s[2])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[2])]
+	if c0 < 0xF8 { // 4-byte UTF-8
+		return t.lookupValue(uint32(i), s[3])
+	}
+	return 0
+}
+
+// caseTrie. Total size: 11892 bytes (11.61 KiB). Checksum: c6f15484b7653775.
+type caseTrie struct{}
+
+func newCaseTrie(i int) *caseTrie {
+	return &caseTrie{}
+}
+
+// lookupValue determines the type of block n and looks up the value for b.
+func (t *caseTrie) lookupValue(n uint32, b byte) uint16 {
+	switch {
+	case n < 18:
+		return uint16(caseValues[n<<6+uint32(b)])
+	default:
+		n -= 18
+		return uint16(sparse.lookup(n, b))
+	}
+}
+
+// caseValues: 20 blocks, 1280 entries, 2560 bytes
+// The third block is the zero block.
+var caseValues = [1280]uint16{
+	// Block 0x0, offset 0x0
+	0x27: 0x0054,
+	0x2e: 0x0054,
+	0x30: 0x0010, 0x31: 0x0010, 0x32: 0x0010, 0x33: 0x0010, 0x34: 0x0010, 0x35: 0x0010,
+	0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0054,
+	// Block 0x1, offset 0x40
+	0x41: 0x2013, 0x42: 0x2013, 0x43: 0x2013, 0x44: 0x2013, 0x45: 0x2013,
+	0x46: 0x2013, 0x47: 0x2013, 0x48: 0x2013, 0x49: 0x2013, 0x4a: 0x2013, 0x4b: 0x2013,
+	0x4c: 0x2013, 0x4d: 0x2013, 0x4e: 0x2013, 0x4f: 0x2013, 0x50: 0x2013, 0x51: 0x2013,
+	0x52: 0x2013, 0x53: 0x2013, 0x54: 0x2013, 0x55: 0x2013, 0x56: 0x2013, 0x57: 0x2013,
+	0x58: 0x2013, 0x59: 0x2013, 0x5a: 0x2013,
+	0x5e: 0x0004, 0x5f: 0x0010, 0x60: 0x0004, 0x61: 0x2012, 0x62: 0x2012, 0x63: 0x2012,
+	0x64: 0x2012, 0x65: 0x2012, 0x66: 0x2012, 0x67: 0x2012, 0x68: 0x2012, 0x69: 0x2012,
+	0x6a: 0x2012, 0x6b: 0x2012, 0x6c: 0x2012, 0x6d: 0x2012, 0x6e: 0x2012, 0x6f: 0x2012,
+	0x70: 0x2012, 0x71: 0x2012, 0x72: 0x2012, 0x73: 0x2012, 0x74: 0x2012, 0x75: 0x2012,
+	0x76: 0x2012, 0x77: 0x2012, 0x78: 0x2012, 0x79: 0x2012, 0x7a: 0x2012,
+	// Block 0x2, offset 0x80
+	// Block 0x3, offset 0xc0
+	0xc0: 0x0852, 0xc1: 0x0b53, 0xc2: 0x0113, 0xc3: 0x0112, 0xc4: 0x0113, 0xc5: 0x0112,
+	0xc6: 0x0b53, 0xc7: 0x0f13, 0xc8: 0x0f12, 0xc9: 0x0e53, 0xca: 0x1153, 0xcb: 0x0713,
+	0xcc: 0x0712, 0xcd: 0x0012, 0xce: 0x1453, 0xcf: 0x1753, 0xd0: 0x1a53, 0xd1: 0x0313,
+	0xd2: 0x0312, 0xd3: 0x1d53, 0xd4: 0x2053, 0xd5: 0x2352, 0xd6: 0x2653, 0xd7: 0x2653,
+	0xd8: 0x0113, 0xd9: 0x0112, 0xda: 0x2952, 0xdb: 0x0012, 0xdc: 0x1d53, 0xdd: 0x2c53,
+	0xde: 0x2f52, 0xdf: 0x3253, 0xe0: 0x0113, 0xe1: 0x0112, 0xe2: 0x0113, 0xe3: 0x0112,
+	0xe4: 0x0113, 0xe5: 0x0112, 0xe6: 0x3553, 0xe7: 0x0f13, 0xe8: 0x0f12, 0xe9: 0x3853,
+	0xea: 0x0012, 0xeb: 0x0012, 0xec: 0x0113, 0xed: 0x0112, 0xee: 0x3553, 0xef: 0x1f13,
+	0xf0: 0x1f12, 0xf1: 0x3b53, 0xf2: 0x3e53, 0xf3: 0x0713, 0xf4: 0x0712, 0xf5: 0x0313,
+	0xf6: 0x0312, 0xf7: 0x4153, 0xf8: 0x0113, 0xf9: 0x0112, 0xfa: 0x0012, 0xfb: 0x0010,
+	0xfc: 0x0113, 0xfd: 0x0112, 0xfe: 0x0012, 0xff: 0x4452,
+	// Block 0x4, offset 0x100
+	0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x02db, 0x105: 0x0359,
+	0x106: 0x03da, 0x107: 0x043b, 0x108: 0x04b9, 0x109: 0x053a, 0x10a: 0x059b, 0x10b: 0x0619,
+	0x10c: 0x069a, 0x10d: 0x0313, 0x10e: 0x0312, 0x10f: 0x1f13, 0x110: 0x1f12, 0x111: 0x0313,
+	0x112: 0x0312, 0x113: 0x0713, 0x114: 0x0712, 0x115: 0x0313, 0x116: 0x0312, 0x117: 0x0f13,
+	0x118: 0x0f12, 0x119: 0x0313, 0x11a: 0x0312, 0x11b: 0x0713, 0x11c: 0x0712, 0x11d: 0x1452,
+	0x11e: 0x0113, 0x11f: 0x0112, 0x120: 0x0113, 0x121: 0x0112, 0x122: 0x0113, 0x123: 0x0112,
+	0x124: 0x0113, 0x125: 0x0112, 0x126: 0x0113, 0x127: 0x0112, 0x128: 0x0113, 0x129: 0x0112,
+	0x12a: 0x0113, 0x12b: 0x0112, 0x12c: 0x0113, 0x12d: 0x0112, 0x12e: 0x0113, 0x12f: 0x0112,
+	0x130: 0x06fa, 0x131: 0x07ab, 0x132: 0x0829, 0x133: 0x08aa, 0x134: 0x0113, 0x135: 0x0112,
+	0x136: 0x2353, 0x137: 0x4453, 0x138: 0x0113, 0x139: 0x0112, 0x13a: 0x0113, 0x13b: 0x0112,
+	0x13c: 0x0113, 0x13d: 0x0112, 0x13e: 0x0113, 0x13f: 0x0112,
+	// Block 0x5, offset 0x140
+	0x140: 0x0a8a, 0x141: 0x0313, 0x142: 0x0312, 0x143: 0x0853, 0x144: 0x4753, 0x145: 0x4a53,
+	0x146: 0x0113, 0x147: 0x0112, 0x148: 0x0113, 0x149: 0x0112, 0x14a: 0x0113, 0x14b: 0x0112,
+	0x14c: 0x0113, 0x14d: 0x0112, 0x14e: 0x0113, 0x14f: 0x0112, 0x150: 0x0b0a, 0x151: 0x0b8a,
+	0x152: 0x0c0a, 0x153: 0x0b52, 0x154: 0x0b52, 0x155: 0x0012, 0x156: 0x0e52, 0x157: 0x1152,
+	0x158: 0x0012, 0x159: 0x1752, 0x15a: 0x0012, 0x15b: 0x1a52, 0x15c: 0x0c8a, 0x15d: 0x0012,
+	0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1d52, 0x161: 0x0d0a, 0x162: 0x0012, 0x163: 0x2052,
+	0x164: 0x0012, 0x165: 0x0d8a, 0x166: 0x0e0a, 0x167: 0x0012, 0x168: 0x2652, 0x169: 0x2652,
+	0x16a: 0x0e8a, 0x16b: 0x0f0a, 0x16c: 0x0f8a, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1d52,
+	0x170: 0x0012, 0x171: 0x100a, 0x172: 0x2c52, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x3252,
+	0x176: 0x0012, 0x177: 0x0012, 0x178: 0x0012, 0x179: 0x0012, 0x17a: 0x0012, 0x17b: 0x0012,
+	0x17c: 0x0012, 0x17d: 0x108a, 0x17e: 0x0012, 0x17f: 0x0012,
+	// Block 0x6, offset 0x180
+	0x180: 0x3552, 0x181: 0x0012, 0x182: 0x0012, 0x183: 0x3852, 0x184: 0x0012, 0x185: 0x0012,
+	0x186: 0x0012, 0x187: 0x110a, 0x188: 0x3552, 0x189: 0x4752, 0x18a: 0x3b52, 0x18b: 0x3e52,
+	0x18c: 0x4a52, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012,
+	0x192: 0x4152, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012,
+	0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x118a,
+	0x19e: 0x120a, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012,
+	0x1a4: 0x0012, 0x1a5: 0x0012, 0x1a6: 0x0012, 0x1a7: 0x0012, 0x1a8: 0x0012, 0x1a9: 0x0012,
+	0x1aa: 0x0012, 0x1ab: 0x0012, 0x1ac: 0x0012, 0x1ad: 0x0012, 0x1ae: 0x0012, 0x1af: 0x0012,
+	0x1b0: 0x0015, 0x1b1: 0x0015, 0x1b2: 0x0015, 0x1b3: 0x0015, 0x1b4: 0x0015, 0x1b5: 0x0015,
+	0x1b6: 0x0015, 0x1b7: 0x0015, 0x1b8: 0x0015, 0x1b9: 0x0014, 0x1ba: 0x0014, 0x1bb: 0x0014,
+	0x1bc: 0x0014, 0x1bd: 0x0014, 0x1be: 0x0014, 0x1bf: 0x0014,
+	// Block 0x7, offset 0x1c0
+	0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x128d,
+	0x1c6: 0x0024, 0x1c7: 0x0034, 0x1c8: 0x0034, 0x1c9: 0x0034, 0x1ca: 0x0024, 0x1cb: 0x0024,
+	0x1cc: 0x0024, 0x1cd: 0x0034, 0x1ce: 0x0034, 0x1cf: 0x0014, 0x1d0: 0x0024, 0x1d1: 0x0024,
+	0x1d2: 0x0024, 0x1d3: 0x0034, 0x1d4: 0x0034, 0x1d5: 0x0034, 0x1d6: 0x0034, 0x1d7: 0x0024,
+	0x1d8: 0x0034, 0x1d9: 0x0034, 0x1da: 0x0034, 0x1db: 0x0024, 0x1dc: 0x0034, 0x1dd: 0x0034,
+	0x1de: 0x0034, 0x1df: 0x0034, 0x1e0: 0x0034, 0x1e1: 0x0034, 0x1e2: 0x0034, 0x1e3: 0x0024,
+	0x1e4: 0x0024, 0x1e5: 0x0024, 0x1e6: 0x0024, 0x1e7: 0x0024, 0x1e8: 0x0024, 0x1e9: 0x0024,
+	0x1ea: 0x0024, 0x1eb: 0x0024, 0x1ec: 0x0024, 0x1ed: 0x0024, 0x1ee: 0x0024, 0x1ef: 0x0024,
+	0x1f0: 0x0113, 0x1f1: 0x0112, 0x1f2: 0x0113, 0x1f3: 0x0112, 0x1f4: 0x0014, 0x1f5: 0x0004,
+	0x1f6: 0x0113, 0x1f7: 0x0112, 0x1fa: 0x0015, 0x1fb: 0x4d52,
+	0x1fc: 0x5052, 0x1fd: 0x5052, 0x1ff: 0x5353,
+	// Block 0x8, offset 0x200
+	0x204: 0x0004, 0x205: 0x0004,
+	0x206: 0x2a13, 0x207: 0x0054, 0x208: 0x2513, 0x209: 0x2713, 0x20a: 0x2513,
+	0x20c: 0x5653, 0x20e: 0x5953, 0x20f: 0x5c53, 0x210: 0x130a, 0x211: 0x2013,
+	0x212: 0x2013, 0x213: 0x2013, 0x214: 0x2013, 0x215: 0x2013, 0x216: 0x2013, 0x217: 0x2013,
+	0x218: 0x2013, 0x219: 0x2013, 0x21a: 0x2013, 0x21b: 0x2013, 0x21c: 0x2013, 0x21d: 0x2013,
+	0x21e: 0x2013, 0x21f: 0x2013, 0x220: 0x5f53, 0x221: 0x5f53, 0x223: 0x5f53,
+	0x224: 0x5f53, 0x225: 0x5f53, 0x226: 0x5f53, 0x227: 0x5f53, 0x228: 0x5f53, 0x229: 0x5f53,
+	0x22a: 0x5f53, 0x22b: 0x5f53, 0x22c: 0x2a12, 0x22d: 0x2512, 0x22e: 0x2712, 0x22f: 0x2512,
+	0x230: 0x144a, 0x231: 0x2012, 0x232: 0x2012, 0x233: 0x2012, 0x234: 0x2012, 0x235: 0x2012,
+	0x236: 0x2012, 0x237: 0x2012, 0x238: 0x2012, 0x239: 0x2012, 0x23a: 0x2012, 0x23b: 0x2012,
+	0x23c: 0x2012, 0x23d: 0x2012, 0x23e: 0x2012, 0x23f: 0x2012,
+	// Block 0x9, offset 0x240
+	0x240: 0x5f52, 0x241: 0x5f52, 0x242: 0x158a, 0x243: 0x5f52, 0x244: 0x5f52, 0x245: 0x5f52,
+	0x246: 0x5f52, 0x247: 0x5f52, 0x248: 0x5f52, 0x249: 0x5f52, 0x24a: 0x5f52, 0x24b: 0x5f52,
+	0x24c: 0x5652, 0x24d: 0x5952, 0x24e: 0x5c52, 0x24f: 0x1813, 0x250: 0x160a, 0x251: 0x168a,
+	0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x170a, 0x256: 0x178a, 0x257: 0x1812,
+	0x258: 0x0113, 0x259: 0x0112, 0x25a: 0x0113, 0x25b: 0x0112, 0x25c: 0x0113, 0x25d: 0x0112,
+	0x25e: 0x0113, 0x25f: 0x0112, 0x260: 0x0113, 0x261: 0x0112, 0x262: 0x0113, 0x263: 0x0112,
+	0x264: 0x0113, 0x265: 0x0112, 0x266: 0x0113, 0x267: 0x0112, 0x268: 0x0113, 0x269: 0x0112,
+	0x26a: 0x0113, 0x26b: 0x0112, 0x26c: 0x0113, 0x26d: 0x0112, 0x26e: 0x0113, 0x26f: 0x0112,
+	0x270: 0x180a, 0x271: 0x188a, 0x272: 0x0b12, 0x273: 0x5352, 0x274: 0x6253, 0x275: 0x190a,
+	0x277: 0x0f13, 0x278: 0x0f12, 0x279: 0x0b13, 0x27a: 0x0113, 0x27b: 0x0112,
+	0x27c: 0x0012, 0x27d: 0x4d53, 0x27e: 0x5053, 0x27f: 0x5053,
+	// Block 0xa, offset 0x280
+	0x280: 0x0812, 0x281: 0x0812, 0x282: 0x0812, 0x283: 0x0812, 0x284: 0x0812, 0x285: 0x0812,
+	0x288: 0x0813, 0x289: 0x0813, 0x28a: 0x0813, 0x28b: 0x0813,
+	0x28c: 0x0813, 0x28d: 0x0813, 0x290: 0x239a, 0x291: 0x0812,
+	0x292: 0x247a, 0x293: 0x0812, 0x294: 0x25ba, 0x295: 0x0812, 0x296: 0x26fa, 0x297: 0x0812,
+	0x299: 0x0813, 0x29b: 0x0813, 0x29d: 0x0813,
+	0x29f: 0x0813, 0x2a0: 0x0812, 0x2a1: 0x0812, 0x2a2: 0x0812, 0x2a3: 0x0812,
+	0x2a4: 0x0812, 0x2a5: 0x0812, 0x2a6: 0x0812, 0x2a7: 0x0812, 0x2a8: 0x0813, 0x2a9: 0x0813,
+	0x2aa: 0x0813, 0x2ab: 0x0813, 0x2ac: 0x0813, 0x2ad: 0x0813, 0x2ae: 0x0813, 0x2af: 0x0813,
+	0x2b0: 0x8b52, 0x2b1: 0x8b52, 0x2b2: 0x8e52, 0x2b3: 0x8e52, 0x2b4: 0x9152, 0x2b5: 0x9152,
+	0x2b6: 0x9452, 0x2b7: 0x9452, 0x2b8: 0x9752, 0x2b9: 0x9752, 0x2ba: 0x9a52, 0x2bb: 0x9a52,
+	0x2bc: 0x4d52, 0x2bd: 0x4d52,
+	// Block 0xb, offset 0x2c0
+	0x2c0: 0x283a, 0x2c1: 0x292a, 0x2c2: 0x2a1a, 0x2c3: 0x2b0a, 0x2c4: 0x2bfa, 0x2c5: 0x2cea,
+	0x2c6: 0x2dda, 0x2c7: 0x2eca, 0x2c8: 0x2fb9, 0x2c9: 0x30a9, 0x2ca: 0x3199, 0x2cb: 0x3289,
+	0x2cc: 0x3379, 0x2cd: 0x3469, 0x2ce: 0x3559, 0x2cf: 0x3649, 0x2d0: 0x373a, 0x2d1: 0x382a,
+	0x2d2: 0x391a, 0x2d3: 0x3a0a, 0x2d4: 0x3afa, 0x2d5: 0x3bea, 0x2d6: 0x3cda, 0x2d7: 0x3dca,
+	0x2d8: 0x3eb9, 0x2d9: 0x3fa9, 0x2da: 0x4099, 0x2db: 0x4189, 0x2dc: 0x4279, 0x2dd: 0x4369,
+	0x2de: 0x4459, 0x2df: 0x4549, 0x2e0: 0x463a, 0x2e1: 0x472a, 0x2e2: 0x481a, 0x2e3: 0x490a,
+	0x2e4: 0x49fa, 0x2e5: 0x4aea, 0x2e6: 0x4bda, 0x2e7: 0x4cca, 0x2e8: 0x4db9, 0x2e9: 0x4ea9,
+	0x2ea: 0x4f99, 0x2eb: 0x5089, 0x2ec: 0x5179, 0x2ed: 0x5269, 0x2ee: 0x5359, 0x2ef: 0x5449,
+	0x2f0: 0x0812, 0x2f1: 0x0812, 0x2f2: 0x553a, 0x2f3: 0x564a, 0x2f4: 0x571a,
+	0x2f6: 0x57fa, 0x2f7: 0x58da, 0x2f8: 0x0813, 0x2f9: 0x0813, 0x2fa: 0x8b53, 0x2fb: 0x8b53,
+	0x2fc: 0x5a19, 0x2fd: 0x0004, 0x2fe: 0x5aea, 0x2ff: 0x0004,
+	// Block 0xc, offset 0x300
+	0x300: 0x0004, 0x301: 0x0004, 0x302: 0x5b6a, 0x303: 0x5c7a, 0x304: 0x5d4a,
+	0x306: 0x5e2a, 0x307: 0x5f0a, 0x308: 0x8e53, 0x309: 0x8e53, 0x30a: 0x9153, 0x30b: 0x9153,
+	0x30c: 0x6049, 0x30d: 0x0004, 0x30e: 0x0004, 0x30f: 0x0004, 0x310: 0x0812, 0x311: 0x0812,
+	0x312: 0x611a, 0x313: 0x625a, 0x316: 0x639a, 0x317: 0x647a,
+	0x318: 0x0813, 0x319: 0x0813, 0x31a: 0x9453, 0x31b: 0x9453, 0x31d: 0x0004,
+	0x31e: 0x0004, 0x31f: 0x0004, 0x320: 0x0812, 0x321: 0x0812, 0x322: 0x65ba, 0x323: 0x66fa,
+	0x324: 0x683a, 0x325: 0x0912, 0x326: 0x691a, 0x327: 0x69fa, 0x328: 0x0813, 0x329: 0x0813,
+	0x32a: 0x9a53, 0x32b: 0x9a53, 0x32c: 0x0913, 0x32d: 0x0004, 0x32e: 0x0004, 0x32f: 0x0004,
+	0x332: 0x6b3a, 0x333: 0x6c4a, 0x334: 0x6d1a,
+	0x336: 0x6dfa, 0x337: 0x6eda, 0x338: 0x9753, 0x339: 0x9753, 0x33a: 0x4d53, 0x33b: 0x4d53,
+	0x33c: 0x7019, 0x33d: 0x0004, 0x33e: 0x0004,
+	// Block 0xd, offset 0x340
+	0x342: 0x0013,
+	0x347: 0x0013, 0x34a: 0x0012, 0x34b: 0x0013,
+	0x34c: 0x0013, 0x34d: 0x0013, 0x34e: 0x0012, 0x34f: 0x0012, 0x350: 0x0013, 0x351: 0x0013,
+	0x352: 0x0013, 0x353: 0x0012, 0x355: 0x0013,
+	0x359: 0x0013, 0x35a: 0x0013, 0x35b: 0x0013, 0x35c: 0x0013, 0x35d: 0x0013,
+	0x364: 0x0013, 0x366: 0x70eb, 0x368: 0x0013,
+	0x36a: 0x714b, 0x36b: 0x718b, 0x36c: 0x0013, 0x36d: 0x0013, 0x36f: 0x0012,
+	0x370: 0x0013, 0x371: 0x0013, 0x372: 0x9d53, 0x373: 0x0013, 0x374: 0x0012, 0x375: 0x0010,
+	0x376: 0x0010, 0x377: 0x0010, 0x378: 0x0010, 0x379: 0x0012,
+	0x37c: 0x0012, 0x37d: 0x0012, 0x37e: 0x0013, 0x37f: 0x0013,
+	// Block 0xe, offset 0x380
+	0x380: 0x1a13, 0x381: 0x1a13, 0x382: 0x1e13, 0x383: 0x1e13, 0x384: 0x1a13, 0x385: 0x1a13,
+	0x386: 0x2613, 0x387: 0x2613, 0x388: 0x2a13, 0x389: 0x2a13, 0x38a: 0x2e13, 0x38b: 0x2e13,
+	0x38c: 0x2a13, 0x38d: 0x2a13, 0x38e: 0x2613, 0x38f: 0x2613, 0x390: 0xa052, 0x391: 0xa052,
+	0x392: 0xa352, 0x393: 0xa352, 0x394: 0xa652, 0x395: 0xa652, 0x396: 0xa352, 0x397: 0xa352,
+	0x398: 0xa052, 0x399: 0xa052, 0x39a: 0x1a12, 0x39b: 0x1a12, 0x39c: 0x1e12, 0x39d: 0x1e12,
+	0x39e: 0x1a12, 0x39f: 0x1a12, 0x3a0: 0x2612, 0x3a1: 0x2612, 0x3a2: 0x2a12, 0x3a3: 0x2a12,
+	0x3a4: 0x2e12, 0x3a5: 0x2e12, 0x3a6: 0x2a12, 0x3a7: 0x2a12, 0x3a8: 0x2612, 0x3a9: 0x2612,
+	// Block 0xf, offset 0x3c0
+	0x3c0: 0x6552, 0x3c1: 0x6552, 0x3c2: 0x6552, 0x3c3: 0x6552, 0x3c4: 0x6552, 0x3c5: 0x6552,
+	0x3c6: 0x6552, 0x3c7: 0x6552, 0x3c8: 0x6552, 0x3c9: 0x6552, 0x3ca: 0x6552, 0x3cb: 0x6552,
+	0x3cc: 0x6552, 0x3cd: 0x6552, 0x3ce: 0x6552, 0x3cf: 0x6552, 0x3d0: 0xa952, 0x3d1: 0xa952,
+	0x3d2: 0xa952, 0x3d3: 0xa952, 0x3d4: 0xa952, 0x3d5: 0xa952, 0x3d6: 0xa952, 0x3d7: 0xa952,
+	0x3d8: 0xa952, 0x3d9: 0xa952, 0x3da: 0xa952, 0x3db: 0xa952, 0x3dc: 0xa952, 0x3dd: 0xa952,
+	0x3de: 0xa952, 0x3e0: 0x0113, 0x3e1: 0x0112, 0x3e2: 0x71eb, 0x3e3: 0x8853,
+	0x3e4: 0x724b, 0x3e5: 0x72aa, 0x3e6: 0x730a, 0x3e7: 0x0f13, 0x3e8: 0x0f12, 0x3e9: 0x0313,
+	0x3ea: 0x0312, 0x3eb: 0x0713, 0x3ec: 0x0712, 0x3ed: 0x736b, 0x3ee: 0x73cb, 0x3ef: 0x742b,
+	0x3f0: 0x748b, 0x3f1: 0x0012, 0x3f2: 0x0113, 0x3f3: 0x0112, 0x3f4: 0x0012, 0x3f5: 0x0313,
+	0x3f6: 0x0312, 0x3f7: 0x0012, 0x3f8: 0x0012, 0x3f9: 0x0012, 0x3fa: 0x0012, 0x3fb: 0x0012,
+	0x3fc: 0x0015, 0x3fd: 0x0015, 0x3fe: 0x74eb, 0x3ff: 0x754b,
+	// Block 0x10, offset 0x400
+	0x400: 0x0113, 0x401: 0x0112, 0x402: 0x0113, 0x403: 0x0112, 0x404: 0x0113, 0x405: 0x0112,
+	0x406: 0x0113, 0x407: 0x0112, 0x408: 0x0014, 0x409: 0x0014, 0x40a: 0x0014, 0x40b: 0x0713,
+	0x40c: 0x0712, 0x40d: 0x75ab, 0x40e: 0x0012, 0x40f: 0x0010, 0x410: 0x0113, 0x411: 0x0112,
+	0x412: 0x0113, 0x413: 0x0112, 0x414: 0x0012, 0x415: 0x0012, 0x416: 0x0113, 0x417: 0x0112,
+	0x418: 0x0113, 0x419: 0x0112, 0x41a: 0x0113, 0x41b: 0x0112, 0x41c: 0x0113, 0x41d: 0x0112,
+	0x41e: 0x0113, 0x41f: 0x0112, 0x420: 0x0113, 0x421: 0x0112, 0x422: 0x0113, 0x423: 0x0112,
+	0x424: 0x0113, 0x425: 0x0112, 0x426: 0x0113, 0x427: 0x0112, 0x428: 0x0113, 0x429: 0x0112,
+	0x42a: 0x760b, 0x42b: 0x766b, 0x42c: 0x76cb, 0x42d: 0x772b, 0x42e: 0x778b,
+	0x430: 0x77eb, 0x431: 0x784b, 0x432: 0x78ab, 0x433: 0xac53, 0x434: 0x0113, 0x435: 0x0112,
+	0x436: 0x0113, 0x437: 0x0112,
+	// Block 0x11, offset 0x440
+	0x440: 0x790a, 0x441: 0x798a, 0x442: 0x7a0a, 0x443: 0x7a8a, 0x444: 0x7b3a, 0x445: 0x7bea,
+	0x446: 0x7c6a,
+	0x453: 0x7cea, 0x454: 0x7dca, 0x455: 0x7eaa, 0x456: 0x7f8a, 0x457: 0x806a,
+	0x45d: 0x0010,
+	0x45e: 0x0034, 0x45f: 0x0010, 0x460: 0x0010, 0x461: 0x0010, 0x462: 0x0010, 0x463: 0x0010,
+	0x464: 0x0010, 0x465: 0x0010, 0x466: 0x0010, 0x467: 0x0010, 0x468: 0x0010,
+	0x46a: 0x0010, 0x46b: 0x0010, 0x46c: 0x0010, 0x46d: 0x0010, 0x46e: 0x0010, 0x46f: 0x0010,
+	0x470: 0x0010, 0x471: 0x0010, 0x472: 0x0010, 0x473: 0x0010, 0x474: 0x0010, 0x475: 0x0010,
+	0x476: 0x0010, 0x478: 0x0010, 0x479: 0x0010, 0x47a: 0x0010, 0x47b: 0x0010,
+	0x47c: 0x0010, 0x47e: 0x0010,
+	// Block 0x12, offset 0x480
+	0x480: 0x2213, 0x481: 0x2213, 0x482: 0x2613, 0x483: 0x2613, 0x484: 0x2213, 0x485: 0x2213,
+	0x486: 0x2e13, 0x487: 0x2e13, 0x488: 0x2213, 0x489: 0x2213, 0x48a: 0x2613, 0x48b: 0x2613,
+	0x48c: 0x2213, 0x48d: 0x2213, 0x48e: 0x3e13, 0x48f: 0x3e13, 0x490: 0x2213, 0x491: 0x2213,
+	0x492: 0x2613, 0x493: 0x2613, 0x494: 0x2213, 0x495: 0x2213, 0x496: 0x2e13, 0x497: 0x2e13,
+	0x498: 0x2213, 0x499: 0x2213, 0x49a: 0x2613, 0x49b: 0x2613, 0x49c: 0x2213, 0x49d: 0x2213,
+	0x49e: 0xb553, 0x49f: 0xb553, 0x4a0: 0xb853, 0x4a1: 0xb853, 0x4a2: 0x2212, 0x4a3: 0x2212,
+	0x4a4: 0x2612, 0x4a5: 0x2612, 0x4a6: 0x2212, 0x4a7: 0x2212, 0x4a8: 0x2e12, 0x4a9: 0x2e12,
+	0x4aa: 0x2212, 0x4ab: 0x2212, 0x4ac: 0x2612, 0x4ad: 0x2612, 0x4ae: 0x2212, 0x4af: 0x2212,
+	0x4b0: 0x3e12, 0x4b1: 0x3e12, 0x4b2: 0x2212, 0x4b3: 0x2212, 0x4b4: 0x2612, 0x4b5: 0x2612,
+	0x4b6: 0x2212, 0x4b7: 0x2212, 0x4b8: 0x2e12, 0x4b9: 0x2e12, 0x4ba: 0x2212, 0x4bb: 0x2212,
+	0x4bc: 0x2612, 0x4bd: 0x2612, 0x4be: 0x2212, 0x4bf: 0x2212,
+	// Block 0x13, offset 0x4c0
+	0x4c2: 0x0010,
+	0x4c7: 0x0010, 0x4c9: 0x0010, 0x4cb: 0x0010,
+	0x4cd: 0x0010, 0x4ce: 0x0010, 0x4cf: 0x0010, 0x4d1: 0x0010,
+	0x4d2: 0x0010, 0x4d4: 0x0010, 0x4d7: 0x0010,
+	0x4d9: 0x0010, 0x4db: 0x0010, 0x4dd: 0x0010,
+	0x4df: 0x0010, 0x4e1: 0x0010, 0x4e2: 0x0010,
+	0x4e4: 0x0010, 0x4e7: 0x0010, 0x4e8: 0x0010, 0x4e9: 0x0010,
+	0x4ea: 0x0010, 0x4ec: 0x0010, 0x4ed: 0x0010, 0x4ee: 0x0010, 0x4ef: 0x0010,
+	0x4f0: 0x0010, 0x4f1: 0x0010, 0x4f2: 0x0010, 0x4f4: 0x0010, 0x4f5: 0x0010,
+	0x4f6: 0x0010, 0x4f7: 0x0010, 0x4f9: 0x0010, 0x4fa: 0x0010, 0x4fb: 0x0010,
+	0x4fc: 0x0010, 0x4fe: 0x0010,
+}
+
+// caseIndex: 25 blocks, 1600 entries, 3200 bytes
+// Block 0 is the zero block.
+var caseIndex = [1600]uint16{
+	// Block 0x0, offset 0x0
+	// Block 0x1, offset 0x40
+	// Block 0x2, offset 0x80
+	// Block 0x3, offset 0xc0
+	0xc2: 0x12, 0xc3: 0x13, 0xc4: 0x14, 0xc5: 0x15, 0xc6: 0x01, 0xc7: 0x02,
+	0xc8: 0x16, 0xc9: 0x03, 0xca: 0x04, 0xcb: 0x17, 0xcc: 0x18, 0xcd: 0x05, 0xce: 0x06, 0xcf: 0x07,
+	0xd0: 0x19, 0xd1: 0x1a, 0xd2: 0x1b, 0xd3: 0x1c, 0xd4: 0x1d, 0xd5: 0x1e, 0xd6: 0x1f, 0xd7: 0x20,
+	0xd8: 0x21, 0xd9: 0x22, 0xda: 0x23, 0xdb: 0x24, 0xdc: 0x25, 0xdd: 0x26, 0xde: 0x27, 0xdf: 0x28,
+	0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,
+	0xea: 0x06, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x08, 0xef: 0x09,
+	0xf0: 0x14, 0xf3: 0x16,
+	// Block 0x4, offset 0x100
+	0x120: 0x29, 0x121: 0x2a, 0x122: 0x2b, 0x123: 0x2c, 0x124: 0x2d, 0x125: 0x2e, 0x126: 0x2f, 0x127: 0x30,
+	0x128: 0x31, 0x129: 0x32, 0x12a: 0x33, 0x12b: 0x34, 0x12c: 0x35, 0x12d: 0x36, 0x12e: 0x37, 0x12f: 0x38,
+	0x130: 0x39, 0x131: 0x3a, 0x132: 0x3b, 0x133: 0x3c, 0x134: 0x3d, 0x135: 0x3e, 0x136: 0x3f, 0x137: 0x40,
+	0x138: 0x41, 0x139: 0x42, 0x13a: 0x43, 0x13b: 0x44, 0x13c: 0x45, 0x13d: 0x46, 0x13e: 0x47, 0x13f: 0x48,
+	// Block 0x5, offset 0x140
+	0x140: 0x49, 0x141: 0x4a, 0x142: 0x4b, 0x143: 0x4c, 0x144: 0x23, 0x145: 0x23, 0x146: 0x23, 0x147: 0x23,
+	0x148: 0x23, 0x149: 0x4d, 0x14a: 0x4e, 0x14b: 0x4f, 0x14c: 0x50, 0x14d: 0x51, 0x14e: 0x52, 0x14f: 0x53,
+	0x150: 0x54, 0x151: 0x23, 0x152: 0x23, 0x153: 0x23, 0x154: 0x23, 0x155: 0x23, 0x156: 0x23, 0x157: 0x23,
+	0x158: 0x23, 0x159: 0x55, 0x15a: 0x56, 0x15b: 0x57, 0x15c: 0x58, 0x15d: 0x59, 0x15e: 0x5a, 0x15f: 0x5b,
+	0x160: 0x5c, 0x161: 0x5d, 0x162: 0x5e, 0x163: 0x5f, 0x164: 0x60, 0x165: 0x61, 0x167: 0x62,
+	0x168: 0x63, 0x169: 0x64, 0x16a: 0x65, 0x16c: 0x66, 0x16d: 0x67, 0x16e: 0x68, 0x16f: 0x69,
+	0x170: 0x6a, 0x171: 0x6b, 0x172: 0x6c, 0x173: 0x6d, 0x174: 0x6e, 0x175: 0x6f, 0x176: 0x70, 0x177: 0x71,
+	0x178: 0x72, 0x179: 0x72, 0x17a: 0x73, 0x17b: 0x72, 0x17c: 0x74, 0x17d: 0x08, 0x17e: 0x09, 0x17f: 0x0a,
+	// Block 0x6, offset 0x180
+	0x180: 0x75, 0x181: 0x76, 0x182: 0x77, 0x183: 0x78, 0x184: 0x0b, 0x185: 0x79, 0x186: 0x7a,
+	0x192: 0x7b, 0x193: 0x0c,
+	0x1b0: 0x7c, 0x1b1: 0x0d, 0x1b2: 0x72, 0x1b3: 0x7d, 0x1b4: 0x7e, 0x1b5: 0x7f, 0x1b6: 0x80, 0x1b7: 0x81,
+	0x1b8: 0x82,
+	// Block 0x7, offset 0x1c0
+	0x1c0: 0x83, 0x1c2: 0x84, 0x1c3: 0x85, 0x1c4: 0x86, 0x1c5: 0x23, 0x1c6: 0x87,
+	// Block 0x8, offset 0x200
+	0x200: 0x88, 0x201: 0x23, 0x202: 0x23, 0x203: 0x23, 0x204: 0x23, 0x205: 0x23, 0x206: 0x23, 0x207: 0x23,
+	0x208: 0x23, 0x209: 0x23, 0x20a: 0x23, 0x20b: 0x23, 0x20c: 0x23, 0x20d: 0x23, 0x20e: 0x23, 0x20f: 0x23,
+	0x210: 0x23, 0x211: 0x23, 0x212: 0x89, 0x213: 0x8a, 0x214: 0x23, 0x215: 0x23, 0x216: 0x23, 0x217: 0x23,
+	0x218: 0x8b, 0x219: 0x8c, 0x21a: 0x8d, 0x21b: 0x8e, 0x21c: 0x8f, 0x21d: 0x90, 0x21e: 0x0e, 0x21f: 0x91,
+	0x220: 0x92, 0x221: 0x93, 0x222: 0x23, 0x223: 0x94, 0x224: 0x95, 0x225: 0x96, 0x226: 0x97, 0x227: 0x98,
+	0x228: 0x99, 0x229: 0x9a, 0x22a: 0x9b, 0x22b: 0x9c, 0x22c: 0x9d, 0x22d: 0x9e, 0x22e: 0x9f, 0x22f: 0xa0,
+	0x230: 0x23, 0x231: 0x23, 0x232: 0x23, 0x233: 0x23, 0x234: 0x23, 0x235: 0x23, 0x236: 0x23, 0x237: 0x23,
+	0x238: 0x23, 0x239: 0x23, 0x23a: 0x23, 0x23b: 0x23, 0x23c: 0x23, 0x23d: 0x23, 0x23e: 0x23, 0x23f: 0x23,
+	// Block 0x9, offset 0x240
+	0x240: 0x23, 0x241: 0x23, 0x242: 0x23, 0x243: 0x23, 0x244: 0x23, 0x245: 0x23, 0x246: 0x23, 0x247: 0x23,
+	0x248: 0x23, 0x249: 0x23, 0x24a: 0x23, 0x24b: 0x23, 0x24c: 0x23, 0x24d: 0x23, 0x24e: 0x23, 0x24f: 0x23,
+	0x250: 0x23, 0x251: 0x23, 0x252: 0x23, 0x253: 0x23, 0x254: 0x23, 0x255: 0x23, 0x256: 0x23, 0x257: 0x23,
+	0x258: 0x23, 0x259: 0x23, 0x25a: 0x23, 0x25b: 0x23, 0x25c: 0x23, 0x25d: 0x23, 0x25e: 0x23, 0x25f: 0x23,
+	0x260: 0x23, 0x261: 0x23, 0x262: 0x23, 0x263: 0x23, 0x264: 0x23, 0x265: 0x23, 0x266: 0x23, 0x267: 0x23,
+	0x268: 0x23, 0x269: 0x23, 0x26a: 0x23, 0x26b: 0x23, 0x26c: 0x23, 0x26d: 0x23, 0x26e: 0x23, 0x26f: 0x23,
+	0x270: 0x23, 0x271: 0x23, 0x272: 0x23, 0x273: 0x23, 0x274: 0x23, 0x275: 0x23, 0x276: 0x23, 0x277: 0x23,
+	0x278: 0x23, 0x279: 0x23, 0x27a: 0x23, 0x27b: 0x23, 0x27c: 0x23, 0x27d: 0x23, 0x27e: 0x23, 0x27f: 0x23,
+	// Block 0xa, offset 0x280
+	0x280: 0x23, 0x281: 0x23, 0x282: 0x23, 0x283: 0x23, 0x284: 0x23, 0x285: 0x23, 0x286: 0x23, 0x287: 0x23,
+	0x288: 0x23, 0x289: 0x23, 0x28a: 0x23, 0x28b: 0x23, 0x28c: 0x23, 0x28d: 0x23, 0x28e: 0x23, 0x28f: 0x23,
+	0x290: 0x23, 0x291: 0x23, 0x292: 0x23, 0x293: 0x23, 0x294: 0x23, 0x295: 0x23, 0x296: 0x23, 0x297: 0x23,
+	0x298: 0x23, 0x299: 0x23, 0x29a: 0x23, 0x29b: 0x23, 0x29c: 0x23, 0x29d: 0x23, 0x29e: 0xa1, 0x29f: 0xa2,
+	// Block 0xb, offset 0x2c0
+	0x2ec: 0x0f, 0x2ed: 0xa3, 0x2ee: 0xa4, 0x2ef: 0xa5,
+	0x2f0: 0x23, 0x2f1: 0x23, 0x2f2: 0x23, 0x2f3: 0x23, 0x2f4: 0xa6, 0x2f5: 0xa7, 0x2f6: 0xa8, 0x2f7: 0xa9,
+	0x2f8: 0xaa, 0x2f9: 0xab, 0x2fa: 0x23, 0x2fb: 0xac, 0x2fc: 0xad, 0x2fd: 0xae, 0x2fe: 0xaf, 0x2ff: 0xb0,
+	// Block 0xc, offset 0x300
+	0x300: 0xb1, 0x301: 0xb2, 0x302: 0x23, 0x303: 0xb3, 0x305: 0xb4, 0x307: 0xb5,
+	0x30a: 0xb6, 0x30b: 0xb7, 0x30c: 0xb8, 0x30d: 0xb9, 0x30e: 0xba, 0x30f: 0xbb,
+	0x310: 0xbc, 0x311: 0xbd, 0x312: 0xbe, 0x313: 0xbf, 0x314: 0xc0, 0x315: 0xc1,
+	0x318: 0x23, 0x319: 0x23, 0x31a: 0x23, 0x31b: 0x23, 0x31c: 0xc2, 0x31d: 0xc3,
+	0x320: 0xc4, 0x321: 0xc5, 0x322: 0xc6, 0x323: 0xc7, 0x324: 0xc8, 0x326: 0xc9,
+	0x328: 0xca, 0x329: 0xcb, 0x32a: 0xcc, 0x32b: 0xcd, 0x32c: 0x5f, 0x32d: 0xce, 0x32e: 0xcf,
+	0x330: 0x23, 0x331: 0xd0, 0x332: 0xd1, 0x333: 0xd2,
+	// Block 0xd, offset 0x340
+	0x340: 0xd3, 0x341: 0xd4, 0x342: 0xd5, 0x343: 0xd6, 0x344: 0xd7, 0x345: 0xd8, 0x346: 0xd9, 0x347: 0xda,
+	0x348: 0xdb, 0x34a: 0xdc, 0x34b: 0xdd, 0x34c: 0xde, 0x34d: 0xdf,
+	0x350: 0xe0, 0x351: 0xe1, 0x352: 0xe2, 0x353: 0xe3, 0x356: 0xe4, 0x357: 0xe5,
+	0x358: 0xe6, 0x359: 0xe7, 0x35a: 0xe8, 0x35b: 0xe9, 0x35c: 0xea,
+	0x362: 0xeb, 0x363: 0xec,
+	0x368: 0xed, 0x369: 0xee, 0x36a: 0xef, 0x36b: 0xf0,
+	0x370: 0xf1, 0x371: 0xf2, 0x372: 0xf3, 0x374: 0xf4, 0x375: 0xf5,
+	// Block 0xe, offset 0x380
+	0x380: 0x23, 0x381: 0x23, 0x382: 0x23, 0x383: 0x23, 0x384: 0x23, 0x385: 0x23, 0x386: 0x23, 0x387: 0x23,
+	0x388: 0x23, 0x389: 0x23, 0x38a: 0x23, 0x38b: 0x23, 0x38c: 0x23, 0x38d: 0x23, 0x38e: 0xf6,
+	0x390: 0x23, 0x391: 0xf7, 0x392: 0x23, 0x393: 0x23, 0x394: 0x23, 0x395: 0xf8,
+	// Block 0xf, offset 0x3c0
+	0x3c0: 0x23, 0x3c1: 0x23, 0x3c2: 0x23, 0x3c3: 0x23, 0x3c4: 0x23, 0x3c5: 0x23, 0x3c6: 0x23, 0x3c7: 0x23,
+	0x3c8: 0x23, 0x3c9: 0x23, 0x3ca: 0x23, 0x3cb: 0x23, 0x3cc: 0x23, 0x3cd: 0x23, 0x3ce: 0x23, 0x3cf: 0x23,
+	0x3d0: 0xf7,
+	// Block 0x10, offset 0x400
+	0x410: 0x23, 0x411: 0x23, 0x412: 0x23, 0x413: 0x23, 0x414: 0x23, 0x415: 0x23, 0x416: 0x23, 0x417: 0x23,
+	0x418: 0x23, 0x419: 0xf9,
+	// Block 0x11, offset 0x440
+	0x460: 0x23, 0x461: 0x23, 0x462: 0x23, 0x463: 0x23, 0x464: 0x23, 0x465: 0x23, 0x466: 0x23, 0x467: 0x23,
+	0x468: 0xf0, 0x469: 0xfa, 0x46b: 0xfb, 0x46c: 0xfc, 0x46d: 0xfd, 0x46e: 0xfe,
+	0x47c: 0x23, 0x47d: 0xff, 0x47e: 0x100, 0x47f: 0x101,
+	// Block 0x12, offset 0x480
+	0x4b0: 0x23, 0x4b1: 0x102, 0x4b2: 0x103,
+	// Block 0x13, offset 0x4c0
+	0x4c5: 0x104, 0x4c6: 0x105,
+	0x4c9: 0x106,
+	0x4d0: 0x107, 0x4d1: 0x108, 0x4d2: 0x109, 0x4d3: 0x10a, 0x4d4: 0x10b, 0x4d5: 0x10c, 0x4d6: 0x10d, 0x4d7: 0x10e,
+	0x4d8: 0x10f, 0x4d9: 0x110, 0x4da: 0x111, 0x4db: 0x112, 0x4dc: 0x113, 0x4dd: 0x114, 0x4de: 0x115, 0x4df: 0x116,
+	0x4e8: 0x117, 0x4e9: 0x118, 0x4ea: 0x119,
+	// Block 0x14, offset 0x500
+	0x500: 0x11a,
+	0x520: 0x23, 0x521: 0x23, 0x522: 0x23, 0x523: 0x11b, 0x524: 0x10, 0x525: 0x11c,
+	0x538: 0x11d, 0x539: 0x11, 0x53a: 0x11e,
+	// Block 0x15, offset 0x540
+	0x544: 0x11f, 0x545: 0x120, 0x546: 0x121,
+	0x54f: 0x122,
+	// Block 0x16, offset 0x580
+	0x590: 0x0a, 0x591: 0x0b, 0x592: 0x0c, 0x593: 0x0d, 0x594: 0x0e, 0x596: 0x0f,
+	0x59b: 0x10, 0x59d: 0x11, 0x59e: 0x12, 0x59f: 0x13,
+	// Block 0x17, offset 0x5c0
+	0x5c0: 0x123, 0x5c1: 0x124, 0x5c4: 0x124, 0x5c5: 0x124, 0x5c6: 0x124, 0x5c7: 0x125,
+	// Block 0x18, offset 0x600
+	0x620: 0x15,
+}
+
+// sparseOffsets: 277 entries, 554 bytes
+var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x35, 0x38, 0x3c, 0x3f, 0x43, 0x4d, 0x4f, 0x54, 0x64, 0x6b, 0x70, 0x7e, 0x7f, 0x8d, 0x9c, 0xa6, 0xa9, 0xaf, 0xb7, 0xba, 0xbc, 0xca, 0xd0, 0xde, 0xe9, 0xf5, 0x100, 0x10c, 0x116, 0x122, 0x12d, 0x139, 0x145, 0x14d, 0x155, 0x15f, 0x16a, 0x176, 0x17d, 0x188, 0x18d, 0x195, 0x198, 0x19d, 0x1a1, 0x1a5, 0x1ac, 0x1b5, 0x1bd, 0x1be, 0x1c7, 0x1ce, 0x1d6, 0x1dc, 0x1e2, 0x1e7, 0x1eb, 0x1ee, 0x1f0, 0x1f3, 0x1f8, 0x1f9, 0x1fb, 0x1fd, 0x1ff, 0x206, 0x20b, 0x20f, 0x218, 0x21b, 0x21e, 0x224, 0x225, 0x230, 0x231, 0x232, 0x237, 0x244, 0x24c, 0x254, 0x25d, 0x266, 0x26f, 0x274, 0x277, 0x280, 0x28d, 0x28f, 0x296, 0x298, 0x2a4, 0x2a5, 0x2b0, 0x2b8, 0x2c0, 0x2c6, 0x2c7, 0x2d5, 0x2da, 0x2dd, 0x2e2, 0x2e6, 0x2ec, 0x2f1, 0x2f4, 0x2f9, 0x2fe, 0x2ff, 0x305, 0x307, 0x308, 0x30a, 0x30c, 0x30f, 0x310, 0x312, 0x315, 0x31b, 0x31f, 0x321, 0x326, 0x32d, 0x331, 0x33a, 0x33b, 0x343, 0x347, 0x34c, 0x354, 0x35a, 0x360, 0x36a, 0x36f, 0x378, 0x37e, 0x385, 0x389, 0x391, 0x393, 0x395, 0x398, 0x39a, 0x39c, 0x39d, 0x39e, 0x3a0, 0x3a2, 0x3a8, 0x3ad, 0x3af, 0x3b5, 0x3b8, 0x3ba, 0x3c0, 0x3c5, 0x3c7, 0x3c8, 0x3c9, 0x3ca, 0x3cc, 0x3ce, 0x3d0, 0x3d3, 0x3d5, 0x3d8, 0x3e0, 0x3e3, 0x3e7, 0x3ef, 0x3f1, 0x3f2, 0x3f3, 0x3f5, 0x3fb, 0x3fd, 0x3fe, 0x400, 0x402, 0x404, 0x411, 0x412, 0x413, 0x417, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x421, 0x425, 0x42b, 0x42d, 0x434, 0x437, 0x43b, 0x441, 0x44a, 0x450, 0x456, 0x460, 0x46a, 0x46c, 0x473, 0x479, 0x47f, 0x485, 0x488, 0x48e, 0x491, 0x499, 0x49a, 0x4a1, 0x4a2, 0x4a5, 0x4af, 0x4b5, 0x4bb, 0x4bc, 0x4c2, 0x4c5, 0x4cd, 0x4d4, 0x4db, 0x4dc, 0x4dd, 0x4de, 0x4df, 0x4e1, 0x4e3, 0x4e5, 0x4e9, 0x4ea, 0x4ec, 0x4ed, 0x4ee, 0x4f0, 0x4f5, 0x4fa, 0x4fe, 0x4ff, 0x502, 0x506, 0x511, 0x515, 0x51d, 0x522, 0x526, 0x529, 0x52d, 0x530, 0x533, 0x538, 0x53c, 0x540, 0x544, 0x548, 0x54a, 0x54c, 0x54f, 0x554, 0x556, 0x55b, 0x564, 0x569, 0x56a, 0x56d, 0x56e, 0x56f, 0x571, 0x572, 0x573}
+
+// sparseValues: 1395 entries, 5580 bytes
+var sparseValues = [1395]valueRange{
+	// Block 0x0, offset 0x0
+	{value: 0x0004, lo: 0xa8, hi: 0xa8},
+	{value: 0x0012, lo: 0xaa, hi: 0xaa},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0004, lo: 0xaf, hi: 0xaf},
+	{value: 0x0004, lo: 0xb4, hi: 0xb4},
+	{value: 0x001a, lo: 0xb5, hi: 0xb5},
+	{value: 0x0054, lo: 0xb7, hi: 0xb7},
+	{value: 0x0004, lo: 0xb8, hi: 0xb8},
+	{value: 0x0012, lo: 0xba, hi: 0xba},
+	// Block 0x1, offset 0x9
+	{value: 0x2013, lo: 0x80, hi: 0x96},
+	{value: 0x2013, lo: 0x98, hi: 0x9e},
+	{value: 0x009a, lo: 0x9f, hi: 0x9f},
+	{value: 0x2012, lo: 0xa0, hi: 0xb6},
+	{value: 0x2012, lo: 0xb8, hi: 0xbe},
+	{value: 0x0252, lo: 0xbf, hi: 0xbf},
+	// Block 0x2, offset 0xf
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x011b, lo: 0xb0, hi: 0xb0},
+	{value: 0x019a, lo: 0xb1, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xb7},
+	{value: 0x0012, lo: 0xb8, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x0316, lo: 0xbd, hi: 0xbe},
+	{value: 0x0553, lo: 0xbf, hi: 0xbf},
+	// Block 0x3, offset 0x18
+	{value: 0x0552, lo: 0x80, hi: 0x80},
+	{value: 0x0316, lo: 0x81, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0316, lo: 0x85, hi: 0x86},
+	{value: 0x0f16, lo: 0x87, hi: 0x88},
+	{value: 0x01da, lo: 0x89, hi: 0x89},
+	{value: 0x0117, lo: 0x8a, hi: 0xb7},
+	{value: 0x0253, lo: 0xb8, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x0316, lo: 0xbd, hi: 0xbe},
+	{value: 0x028a, lo: 0xbf, hi: 0xbf},
+	// Block 0x4, offset 0x24
+	{value: 0x0117, lo: 0x80, hi: 0x9f},
+	{value: 0x2f53, lo: 0xa0, hi: 0xa0},
+	{value: 0x0012, lo: 0xa1, hi: 0xa1},
+	{value: 0x0117, lo: 0xa2, hi: 0xb3},
+	{value: 0x0012, lo: 0xb4, hi: 0xb9},
+	{value: 0x090b, lo: 0xba, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x2953, lo: 0xbd, hi: 0xbd},
+	{value: 0x098b, lo: 0xbe, hi: 0xbe},
+	{value: 0x0a0a, lo: 0xbf, hi: 0xbf},
+	// Block 0x5, offset 0x2e
+	{value: 0x0015, lo: 0x80, hi: 0x81},
+	{value: 0x0014, lo: 0x82, hi: 0x97},
+	{value: 0x0004, lo: 0x98, hi: 0x9d},
+	{value: 0x0014, lo: 0x9e, hi: 0x9f},
+	{value: 0x0015, lo: 0xa0, hi: 0xa4},
+	{value: 0x0004, lo: 0xa5, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xbf},
+	// Block 0x6, offset 0x35
+	{value: 0x0024, lo: 0x80, hi: 0x94},
+	{value: 0x0034, lo: 0x95, hi: 0xbc},
+	{value: 0x0024, lo: 0xbd, hi: 0xbf},
+	// Block 0x7, offset 0x38
+	{value: 0x6553, lo: 0x80, hi: 0x8f},
+	{value: 0x2013, lo: 0x90, hi: 0x9f},
+	{value: 0x5f53, lo: 0xa0, hi: 0xaf},
+	{value: 0x2012, lo: 0xb0, hi: 0xbf},
+	// Block 0x8, offset 0x3c
+	{value: 0x5f52, lo: 0x80, hi: 0x8f},
+	{value: 0x6552, lo: 0x90, hi: 0x9f},
+	{value: 0x0117, lo: 0xa0, hi: 0xbf},
+	// Block 0x9, offset 0x3f
+	{value: 0x0117, lo: 0x80, hi: 0x81},
+	{value: 0x0024, lo: 0x83, hi: 0x87},
+	{value: 0x0014, lo: 0x88, hi: 0x89},
+	{value: 0x0117, lo: 0x8a, hi: 0xbf},
+	// Block 0xa, offset 0x43
+	{value: 0x0f13, lo: 0x80, hi: 0x80},
+	{value: 0x0316, lo: 0x81, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0316, lo: 0x85, hi: 0x86},
+	{value: 0x0f16, lo: 0x87, hi: 0x88},
+	{value: 0x0316, lo: 0x89, hi: 0x8a},
+	{value: 0x0716, lo: 0x8b, hi: 0x8c},
+	{value: 0x0316, lo: 0x8d, hi: 0x8e},
+	{value: 0x0f12, lo: 0x8f, hi: 0x8f},
+	{value: 0x0117, lo: 0x90, hi: 0xbf},
+	// Block 0xb, offset 0x4d
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x6553, lo: 0xb1, hi: 0xbf},
+	// Block 0xc, offset 0x4f
+	{value: 0x3013, lo: 0x80, hi: 0x8f},
+	{value: 0x6853, lo: 0x90, hi: 0x96},
+	{value: 0x0014, lo: 0x99, hi: 0x99},
+	{value: 0x6552, lo: 0xa1, hi: 0xaf},
+	{value: 0x3012, lo: 0xb0, hi: 0xbf},
+	// Block 0xd, offset 0x54
+	{value: 0x6852, lo: 0x80, hi: 0x86},
+	{value: 0x198a, lo: 0x87, hi: 0x87},
+	{value: 0x0034, lo: 0x91, hi: 0x91},
+	{value: 0x0024, lo: 0x92, hi: 0x95},
+	{value: 0x0034, lo: 0x96, hi: 0x96},
+	{value: 0x0024, lo: 0x97, hi: 0x99},
+	{value: 0x0034, lo: 0x9a, hi: 0x9b},
+	{value: 0x0024, lo: 0x9c, hi: 0xa1},
+	{value: 0x0034, lo: 0xa2, hi: 0xa7},
+	{value: 0x0024, lo: 0xa8, hi: 0xa9},
+	{value: 0x0034, lo: 0xaa, hi: 0xaa},
+	{value: 0x0024, lo: 0xab, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xae},
+	{value: 0x0024, lo: 0xaf, hi: 0xaf},
+	{value: 0x0034, lo: 0xb0, hi: 0xbd},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xe, offset 0x64
+	{value: 0x0034, lo: 0x81, hi: 0x82},
+	{value: 0x0024, lo: 0x84, hi: 0x84},
+	{value: 0x0034, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xb3},
+	{value: 0x0054, lo: 0xb4, hi: 0xb4},
+	// Block 0xf, offset 0x6b
+	{value: 0x0014, lo: 0x80, hi: 0x85},
+	{value: 0x0024, lo: 0x90, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x9a},
+	{value: 0x0014, lo: 0x9c, hi: 0x9c},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x10, offset 0x70
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x8a},
+	{value: 0x0034, lo: 0x8b, hi: 0x92},
+	{value: 0x0024, lo: 0x93, hi: 0x94},
+	{value: 0x0034, lo: 0x95, hi: 0x96},
+	{value: 0x0024, lo: 0x97, hi: 0x9b},
+	{value: 0x0034, lo: 0x9c, hi: 0x9c},
+	{value: 0x0024, lo: 0x9d, hi: 0x9e},
+	{value: 0x0034, lo: 0x9f, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0010, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0034, lo: 0xb0, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xbf},
+	// Block 0x11, offset 0x7e
+	{value: 0x0010, lo: 0x80, hi: 0xbf},
+	// Block 0x12, offset 0x7f
+	{value: 0x0010, lo: 0x80, hi: 0x93},
+	{value: 0x0010, lo: 0x95, hi: 0x95},
+	{value: 0x0024, lo: 0x96, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x0024, lo: 0x9f, hi: 0xa2},
+	{value: 0x0034, lo: 0xa3, hi: 0xa3},
+	{value: 0x0024, lo: 0xa4, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa6},
+	{value: 0x0024, lo: 0xa7, hi: 0xa8},
+	{value: 0x0034, lo: 0xaa, hi: 0xaa},
+	{value: 0x0024, lo: 0xab, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xbc},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x13, offset 0x8d
+	{value: 0x0014, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0034, lo: 0x91, hi: 0x91},
+	{value: 0x0010, lo: 0x92, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	{value: 0x0034, lo: 0xb1, hi: 0xb1},
+	{value: 0x0024, lo: 0xb2, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0024, lo: 0xb5, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb9},
+	{value: 0x0024, lo: 0xba, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbc},
+	{value: 0x0024, lo: 0xbd, hi: 0xbd},
+	{value: 0x0034, lo: 0xbe, hi: 0xbe},
+	{value: 0x0024, lo: 0xbf, hi: 0xbf},
+	// Block 0x14, offset 0x9c
+	{value: 0x0024, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0024, lo: 0x83, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0024, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0024, lo: 0x87, hi: 0x87},
+	{value: 0x0034, lo: 0x88, hi: 0x88},
+	{value: 0x0024, lo: 0x89, hi: 0x8a},
+	{value: 0x0010, lo: 0x8d, hi: 0xbf},
+	// Block 0x15, offset 0xa6
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0014, lo: 0xa6, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	// Block 0x16, offset 0xa9
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0024, lo: 0xab, hi: 0xb1},
+	{value: 0x0034, lo: 0xb2, hi: 0xb2},
+	{value: 0x0024, lo: 0xb3, hi: 0xb3},
+	{value: 0x0014, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	// Block 0x17, offset 0xaf
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0024, lo: 0x96, hi: 0x99},
+	{value: 0x0014, lo: 0x9a, hi: 0x9a},
+	{value: 0x0024, lo: 0x9b, hi: 0xa3},
+	{value: 0x0014, lo: 0xa4, hi: 0xa4},
+	{value: 0x0024, lo: 0xa5, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa8},
+	{value: 0x0024, lo: 0xa9, hi: 0xad},
+	// Block 0x18, offset 0xb7
+	{value: 0x0010, lo: 0x80, hi: 0x98},
+	{value: 0x0034, lo: 0x99, hi: 0x9b},
+	{value: 0x0010, lo: 0xa0, hi: 0xaa},
+	// Block 0x19, offset 0xba
+	{value: 0x0010, lo: 0xa0, hi: 0xb4},
+	{value: 0x0010, lo: 0xb6, hi: 0xbd},
+	// Block 0x1a, offset 0xbc
+	{value: 0x0024, lo: 0x94, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa2},
+	{value: 0x0034, lo: 0xa3, hi: 0xa3},
+	{value: 0x0024, lo: 0xa4, hi: 0xa5},
+	{value: 0x0034, lo: 0xa6, hi: 0xa6},
+	{value: 0x0024, lo: 0xa7, hi: 0xa8},
+	{value: 0x0034, lo: 0xa9, hi: 0xa9},
+	{value: 0x0024, lo: 0xaa, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xb2},
+	{value: 0x0024, lo: 0xb3, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb6},
+	{value: 0x0024, lo: 0xb7, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0024, lo: 0xbb, hi: 0xbf},
+	// Block 0x1b, offset 0xca
+	{value: 0x0014, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xb9},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x1c, offset 0xd0
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x88},
+	{value: 0x0010, lo: 0x89, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0024, lo: 0x91, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x92},
+	{value: 0x0024, lo: 0x93, hi: 0x94},
+	{value: 0x0014, lo: 0x95, hi: 0x97},
+	{value: 0x0010, lo: 0x98, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xbf},
+	// Block 0x1d, offset 0xde
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb2},
+	{value: 0x0010, lo: 0xb6, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x1e, offset 0xe9
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x8e},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9c, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xb1},
+	{value: 0x0010, lo: 0xbc, hi: 0xbc},
+	// Block 0x1f, offset 0xf5
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8a},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb6},
+	{value: 0x0010, lo: 0xb8, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x20, offset 0x100
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0014, lo: 0x87, hi: 0x88},
+	{value: 0x0014, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x91, hi: 0x91},
+	{value: 0x0010, lo: 0x99, hi: 0x9c},
+	{value: 0x0010, lo: 0x9e, hi: 0x9e},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb5},
+	// Block 0x21, offset 0x10c
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x91},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x22, offset 0x116
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x85},
+	{value: 0x0014, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x89, hi: 0x89},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	{value: 0x0014, lo: 0xba, hi: 0xbf},
+	// Block 0x23, offset 0x122
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x24, offset 0x12d
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x96, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9c, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	// Block 0x25, offset 0x139
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8a},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0x95},
+	{value: 0x0010, lo: 0x99, hi: 0x9a},
+	{value: 0x0010, lo: 0x9c, hi: 0x9c},
+	{value: 0x0010, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa3, hi: 0xa4},
+	{value: 0x0010, lo: 0xa8, hi: 0xaa},
+	{value: 0x0010, lo: 0xae, hi: 0xb9},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x26, offset 0x145
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x86, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	// Block 0x27, offset 0x14d
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb9},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbf},
+	// Block 0x28, offset 0x155
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0014, lo: 0x86, hi: 0x88},
+	{value: 0x0014, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0034, lo: 0x95, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9a},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	// Block 0x29, offset 0x15f
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x2a, offset 0x16a
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0014, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x95, hi: 0x96},
+	{value: 0x0010, lo: 0x9e, hi: 0x9e},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb1, hi: 0xb2},
+	// Block 0x2b, offset 0x176
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x2c, offset 0x17d
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x86, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x8e},
+	{value: 0x0010, lo: 0x94, hi: 0x97},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xba, hi: 0xbf},
+	// Block 0x2d, offset 0x188
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x96},
+	{value: 0x0010, lo: 0x9a, hi: 0xb1},
+	{value: 0x0010, lo: 0xb3, hi: 0xbb},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	// Block 0x2e, offset 0x18d
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0010, lo: 0x8f, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x94},
+	{value: 0x0014, lo: 0x96, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9f},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	// Block 0x2f, offset 0x195
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb4, hi: 0xb7},
+	{value: 0x0034, lo: 0xb8, hi: 0xba},
+	// Block 0x30, offset 0x198
+	{value: 0x0004, lo: 0x86, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x87},
+	{value: 0x0034, lo: 0x88, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x31, offset 0x19d
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb4, hi: 0xb7},
+	{value: 0x0034, lo: 0xb8, hi: 0xb9},
+	{value: 0x0014, lo: 0xbb, hi: 0xbc},
+	// Block 0x32, offset 0x1a1
+	{value: 0x0004, lo: 0x86, hi: 0x86},
+	{value: 0x0034, lo: 0x88, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x33, offset 0x1a5
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0034, lo: 0x98, hi: 0x99},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0034, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	{value: 0x0034, lo: 0xb9, hi: 0xb9},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x34, offset 0x1ac
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0x89, hi: 0xac},
+	{value: 0x0034, lo: 0xb1, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xba, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x35, offset 0x1b5
+	{value: 0x0034, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0024, lo: 0x82, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0024, lo: 0x86, hi: 0x87},
+	{value: 0x0010, lo: 0x88, hi: 0x8c},
+	{value: 0x0014, lo: 0x8d, hi: 0x97},
+	{value: 0x0014, lo: 0x99, hi: 0xbc},
+	// Block 0x36, offset 0x1bd
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	// Block 0x37, offset 0x1be
+	{value: 0x0010, lo: 0xab, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	{value: 0x0010, lo: 0xb8, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbc},
+	{value: 0x0014, lo: 0xbd, hi: 0xbe},
+	// Block 0x38, offset 0x1c7
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x96, hi: 0x97},
+	{value: 0x0014, lo: 0x98, hi: 0x99},
+	{value: 0x0014, lo: 0x9e, hi: 0xa0},
+	{value: 0x0010, lo: 0xa2, hi: 0xa4},
+	{value: 0x0010, lo: 0xa7, hi: 0xad},
+	{value: 0x0014, lo: 0xb1, hi: 0xb4},
+	// Block 0x39, offset 0x1ce
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x6c53, lo: 0xa0, hi: 0xbf},
+	// Block 0x3a, offset 0x1d6
+	{value: 0x7053, lo: 0x80, hi: 0x85},
+	{value: 0x7053, lo: 0x87, hi: 0x87},
+	{value: 0x7053, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0xba},
+	{value: 0x0014, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x3b, offset 0x1dc
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x98},
+	{value: 0x0010, lo: 0x9a, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x3c, offset 0x1e2
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb5},
+	{value: 0x0010, lo: 0xb8, hi: 0xbe},
+	// Block 0x3d, offset 0x1e7
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x82, hi: 0x85},
+	{value: 0x0010, lo: 0x88, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0xbf},
+	// Block 0x3e, offset 0x1eb
+	{value: 0x0010, lo: 0x80, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0x95},
+	{value: 0x0010, lo: 0x98, hi: 0xbf},
+	// Block 0x3f, offset 0x1ee
+	{value: 0x0010, lo: 0x80, hi: 0x9a},
+	{value: 0x0024, lo: 0x9d, hi: 0x9f},
+	// Block 0x40, offset 0x1f0
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x7453, lo: 0xa0, hi: 0xaf},
+	{value: 0x7853, lo: 0xb0, hi: 0xbf},
+	// Block 0x41, offset 0x1f3
+	{value: 0x7c53, lo: 0x80, hi: 0x8f},
+	{value: 0x8053, lo: 0x90, hi: 0x9f},
+	{value: 0x7c53, lo: 0xa0, hi: 0xaf},
+	{value: 0x0813, lo: 0xb0, hi: 0xb5},
+	{value: 0x0892, lo: 0xb8, hi: 0xbd},
+	// Block 0x42, offset 0x1f8
+	{value: 0x0010, lo: 0x81, hi: 0xbf},
+	// Block 0x43, offset 0x1f9
+	{value: 0x0010, lo: 0x80, hi: 0xac},
+	{value: 0x0010, lo: 0xaf, hi: 0xbf},
+	// Block 0x44, offset 0x1fb
+	{value: 0x0010, lo: 0x81, hi: 0x9a},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x45, offset 0x1fd
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0010, lo: 0xae, hi: 0xb8},
+	// Block 0x46, offset 0x1ff
+	{value: 0x0010, lo: 0x80, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x93},
+	{value: 0x0034, lo: 0x94, hi: 0x94},
+	{value: 0x0010, lo: 0xa0, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	// Block 0x47, offset 0x206
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x93},
+	{value: 0x0010, lo: 0xa0, hi: 0xac},
+	{value: 0x0010, lo: 0xae, hi: 0xb0},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	// Block 0x48, offset 0x20b
+	{value: 0x0014, lo: 0xb4, hi: 0xb5},
+	{value: 0x0010, lo: 0xb6, hi: 0xb6},
+	{value: 0x0014, lo: 0xb7, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x49, offset 0x20f
+	{value: 0x0010, lo: 0x80, hi: 0x85},
+	{value: 0x0014, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0014, lo: 0x89, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x92},
+	{value: 0x0014, lo: 0x93, hi: 0x93},
+	{value: 0x0004, lo: 0x97, hi: 0x97},
+	{value: 0x0024, lo: 0x9d, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	// Block 0x4a, offset 0x218
+	{value: 0x0014, lo: 0x8b, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x4b, offset 0x21b
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0xb7},
+	// Block 0x4c, offset 0x21e
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0xa8},
+	{value: 0x0034, lo: 0xa9, hi: 0xa9},
+	{value: 0x0010, lo: 0xaa, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x4d, offset 0x224
+	{value: 0x0010, lo: 0x80, hi: 0xb5},
+	// Block 0x4e, offset 0x225
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0014, lo: 0xa0, hi: 0xa2},
+	{value: 0x0010, lo: 0xa3, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xab},
+	{value: 0x0010, lo: 0xb0, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb2},
+	{value: 0x0010, lo: 0xb3, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xb9},
+	{value: 0x0024, lo: 0xba, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbb},
+	// Block 0x4f, offset 0x230
+	{value: 0x0010, lo: 0x86, hi: 0x8f},
+	// Block 0x50, offset 0x231
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x51, offset 0x232
+	{value: 0x0010, lo: 0x80, hi: 0x96},
+	{value: 0x0024, lo: 0x97, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x98},
+	{value: 0x0010, lo: 0x99, hi: 0x9a},
+	{value: 0x0014, lo: 0x9b, hi: 0x9b},
+	// Block 0x52, offset 0x237
+	{value: 0x0010, lo: 0x95, hi: 0x95},
+	{value: 0x0014, lo: 0x96, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0014, lo: 0x98, hi: 0x9e},
+	{value: 0x0034, lo: 0xa0, hi: 0xa0},
+	{value: 0x0010, lo: 0xa1, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa2},
+	{value: 0x0010, lo: 0xa3, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xac},
+	{value: 0x0010, lo: 0xad, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb4},
+	{value: 0x0024, lo: 0xb5, hi: 0xbc},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x53, offset 0x244
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0004, lo: 0xa7, hi: 0xa7},
+	{value: 0x0024, lo: 0xb0, hi: 0xb4},
+	{value: 0x0034, lo: 0xb5, hi: 0xba},
+	{value: 0x0024, lo: 0xbb, hi: 0xbc},
+	{value: 0x0034, lo: 0xbd, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	// Block 0x54, offset 0x24c
+	{value: 0x0014, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x55, offset 0x254
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0030, lo: 0x84, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x8b},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0024, lo: 0xab, hi: 0xab},
+	{value: 0x0034, lo: 0xac, hi: 0xac},
+	{value: 0x0024, lo: 0xad, hi: 0xb3},
+	// Block 0x56, offset 0x25d
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa9},
+	{value: 0x0030, lo: 0xaa, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xbf},
+	// Block 0x57, offset 0x266
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0034, lo: 0xa6, hi: 0xa6},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa9},
+	{value: 0x0010, lo: 0xaa, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xae},
+	{value: 0x0014, lo: 0xaf, hi: 0xb1},
+	{value: 0x0030, lo: 0xb2, hi: 0xb3},
+	// Block 0x58, offset 0x26f
+	{value: 0x0010, lo: 0x80, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	// Block 0x59, offset 0x274
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x8d, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	// Block 0x5a, offset 0x277
+	{value: 0x1a6a, lo: 0x80, hi: 0x80},
+	{value: 0x1aea, lo: 0x81, hi: 0x81},
+	{value: 0x1b6a, lo: 0x82, hi: 0x82},
+	{value: 0x1bea, lo: 0x83, hi: 0x83},
+	{value: 0x1c6a, lo: 0x84, hi: 0x84},
+	{value: 0x1cea, lo: 0x85, hi: 0x85},
+	{value: 0x1d6a, lo: 0x86, hi: 0x86},
+	{value: 0x1dea, lo: 0x87, hi: 0x87},
+	{value: 0x1e6a, lo: 0x88, hi: 0x88},
+	// Block 0x5b, offset 0x280
+	{value: 0x0024, lo: 0x90, hi: 0x92},
+	{value: 0x0034, lo: 0x94, hi: 0x99},
+	{value: 0x0024, lo: 0x9a, hi: 0x9b},
+	{value: 0x0034, lo: 0x9c, hi: 0x9f},
+	{value: 0x0024, lo: 0xa0, hi: 0xa0},
+	{value: 0x0010, lo: 0xa1, hi: 0xa1},
+	{value: 0x0034, lo: 0xa2, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xb3},
+	{value: 0x0024, lo: 0xb4, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb7},
+	{value: 0x0024, lo: 0xb8, hi: 0xb9},
+	// Block 0x5c, offset 0x28d
+	{value: 0x0012, lo: 0x80, hi: 0xab},
+	{value: 0x0015, lo: 0xac, hi: 0xbf},
+	// Block 0x5d, offset 0x28f
+	{value: 0x0015, lo: 0x80, hi: 0xaa},
+	{value: 0x0012, lo: 0xab, hi: 0xb7},
+	{value: 0x0015, lo: 0xb8, hi: 0xb8},
+	{value: 0x8452, lo: 0xb9, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xbc},
+	{value: 0x8852, lo: 0xbd, hi: 0xbd},
+	{value: 0x0012, lo: 0xbe, hi: 0xbf},
+	// Block 0x5e, offset 0x296
+	{value: 0x0012, lo: 0x80, hi: 0x9a},
+	{value: 0x0015, lo: 0x9b, hi: 0xbf},
+	// Block 0x5f, offset 0x298
+	{value: 0x0024, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0024, lo: 0x83, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0024, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x90},
+	{value: 0x0024, lo: 0x91, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb9},
+	{value: 0x0024, lo: 0xbb, hi: 0xbb},
+	{value: 0x0034, lo: 0xbc, hi: 0xbd},
+	{value: 0x0024, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x60, offset 0x2a4
+	{value: 0x0117, lo: 0x80, hi: 0xbf},
+	// Block 0x61, offset 0x2a5
+	{value: 0x0117, lo: 0x80, hi: 0x95},
+	{value: 0x1f1a, lo: 0x96, hi: 0x96},
+	{value: 0x1fca, lo: 0x97, hi: 0x97},
+	{value: 0x207a, lo: 0x98, hi: 0x98},
+	{value: 0x212a, lo: 0x99, hi: 0x99},
+	{value: 0x21da, lo: 0x9a, hi: 0x9a},
+	{value: 0x228a, lo: 0x9b, hi: 0x9b},
+	{value: 0x0012, lo: 0x9c, hi: 0x9d},
+	{value: 0x233b, lo: 0x9e, hi: 0x9e},
+	{value: 0x0012, lo: 0x9f, hi: 0x9f},
+	{value: 0x0117, lo: 0xa0, hi: 0xbf},
+	// Block 0x62, offset 0x2b0
+	{value: 0x0812, lo: 0x80, hi: 0x87},
+	{value: 0x0813, lo: 0x88, hi: 0x8f},
+	{value: 0x0812, lo: 0x90, hi: 0x95},
+	{value: 0x0813, lo: 0x98, hi: 0x9d},
+	{value: 0x0812, lo: 0xa0, hi: 0xa7},
+	{value: 0x0813, lo: 0xa8, hi: 0xaf},
+	{value: 0x0812, lo: 0xb0, hi: 0xb7},
+	{value: 0x0813, lo: 0xb8, hi: 0xbf},
+	// Block 0x63, offset 0x2b8
+	{value: 0x0004, lo: 0x8b, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8f},
+	{value: 0x0054, lo: 0x98, hi: 0x99},
+	{value: 0x0054, lo: 0xa4, hi: 0xa4},
+	{value: 0x0054, lo: 0xa7, hi: 0xa7},
+	{value: 0x0014, lo: 0xaa, hi: 0xae},
+	{value: 0x0010, lo: 0xaf, hi: 0xaf},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x64, offset 0x2c0
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x94, hi: 0x94},
+	{value: 0x0014, lo: 0xa0, hi: 0xa4},
+	{value: 0x0014, lo: 0xa6, hi: 0xaf},
+	{value: 0x0015, lo: 0xb1, hi: 0xb1},
+	{value: 0x0015, lo: 0xbf, hi: 0xbf},
+	// Block 0x65, offset 0x2c6
+	{value: 0x0015, lo: 0x90, hi: 0x9c},
+	// Block 0x66, offset 0x2c7
+	{value: 0x0024, lo: 0x90, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x93},
+	{value: 0x0024, lo: 0x94, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x9a},
+	{value: 0x0024, lo: 0x9b, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0xa0},
+	{value: 0x0024, lo: 0xa1, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa4},
+	{value: 0x0034, lo: 0xa5, hi: 0xa6},
+	{value: 0x0024, lo: 0xa7, hi: 0xa7},
+	{value: 0x0034, lo: 0xa8, hi: 0xa8},
+	{value: 0x0024, lo: 0xa9, hi: 0xa9},
+	{value: 0x0034, lo: 0xaa, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	// Block 0x67, offset 0x2d5
+	{value: 0x0016, lo: 0x85, hi: 0x86},
+	{value: 0x0012, lo: 0x87, hi: 0x89},
+	{value: 0x9d52, lo: 0x8e, hi: 0x8e},
+	{value: 0x1013, lo: 0xa0, hi: 0xaf},
+	{value: 0x1012, lo: 0xb0, hi: 0xbf},
+	// Block 0x68, offset 0x2da
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x88},
+	// Block 0x69, offset 0x2dd
+	{value: 0xa053, lo: 0xb6, hi: 0xb7},
+	{value: 0xa353, lo: 0xb8, hi: 0xb9},
+	{value: 0xa653, lo: 0xba, hi: 0xbb},
+	{value: 0xa353, lo: 0xbc, hi: 0xbd},
+	{value: 0xa053, lo: 0xbe, hi: 0xbf},
+	// Block 0x6a, offset 0x2e2
+	{value: 0x3013, lo: 0x80, hi: 0x8f},
+	{value: 0x6553, lo: 0x90, hi: 0x9f},
+	{value: 0xa953, lo: 0xa0, hi: 0xae},
+	{value: 0x3012, lo: 0xb0, hi: 0xbf},
+	// Block 0x6b, offset 0x2e6
+	{value: 0x0117, lo: 0x80, hi: 0xa3},
+	{value: 0x0012, lo: 0xa4, hi: 0xa4},
+	{value: 0x0716, lo: 0xab, hi: 0xac},
+	{value: 0x0316, lo: 0xad, hi: 0xae},
+	{value: 0x0024, lo: 0xaf, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xb3},
+	// Block 0x6c, offset 0x2ec
+	{value: 0x6c52, lo: 0x80, hi: 0x9f},
+	{value: 0x7052, lo: 0xa0, hi: 0xa5},
+	{value: 0x7052, lo: 0xa7, hi: 0xa7},
+	{value: 0x7052, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x6d, offset 0x2f1
+	{value: 0x0010, lo: 0x80, hi: 0xa7},
+	{value: 0x0014, lo: 0xaf, hi: 0xaf},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x6e, offset 0x2f4
+	{value: 0x0010, lo: 0x80, hi: 0x96},
+	{value: 0x0010, lo: 0xa0, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xae},
+	{value: 0x0010, lo: 0xb0, hi: 0xb6},
+	{value: 0x0010, lo: 0xb8, hi: 0xbe},
+	// Block 0x6f, offset 0x2f9
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x88, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9e},
+	{value: 0x0024, lo: 0xa0, hi: 0xbf},
+	// Block 0x70, offset 0x2fe
+	{value: 0x0014, lo: 0xaf, hi: 0xaf},
+	// Block 0x71, offset 0x2ff
+	{value: 0x0014, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0xaa, hi: 0xad},
+	{value: 0x0030, lo: 0xae, hi: 0xaf},
+	{value: 0x0004, lo: 0xb1, hi: 0xb5},
+	{value: 0x0014, lo: 0xbb, hi: 0xbb},
+	{value: 0x0010, lo: 0xbc, hi: 0xbc},
+	// Block 0x72, offset 0x305
+	{value: 0x0034, lo: 0x99, hi: 0x9a},
+	{value: 0x0004, lo: 0x9b, hi: 0x9e},
+	// Block 0x73, offset 0x307
+	{value: 0x0004, lo: 0xbc, hi: 0xbe},
+	// Block 0x74, offset 0x308
+	{value: 0x0010, lo: 0x85, hi: 0xae},
+	{value: 0x0010, lo: 0xb1, hi: 0xbf},
+	// Block 0x75, offset 0x30a
+	{value: 0x0010, lo: 0x80, hi: 0x8e},
+	{value: 0x0010, lo: 0xa0, hi: 0xba},
+	// Block 0x76, offset 0x30c
+	{value: 0x0010, lo: 0x80, hi: 0x94},
+	{value: 0x0014, lo: 0x95, hi: 0x95},
+	{value: 0x0010, lo: 0x96, hi: 0xbf},
+	// Block 0x77, offset 0x30f
+	{value: 0x0010, lo: 0x80, hi: 0x8c},
+	// Block 0x78, offset 0x310
+	{value: 0x0010, lo: 0x90, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	// Block 0x79, offset 0x312
+	{value: 0x0010, lo: 0x80, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0010, lo: 0x90, hi: 0xab},
+	// Block 0x7a, offset 0x315
+	{value: 0x0117, lo: 0x80, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xae},
+	{value: 0x0024, lo: 0xaf, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb2},
+	{value: 0x0024, lo: 0xb4, hi: 0xbd},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x7b, offset 0x31b
+	{value: 0x0117, lo: 0x80, hi: 0x9b},
+	{value: 0x0015, lo: 0x9c, hi: 0x9d},
+	{value: 0x0024, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x7c, offset 0x31f
+	{value: 0x0010, lo: 0x80, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb1},
+	// Block 0x7d, offset 0x321
+	{value: 0x0004, lo: 0x80, hi: 0x96},
+	{value: 0x0014, lo: 0x97, hi: 0xa1},
+	{value: 0x0117, lo: 0xa2, hi: 0xaf},
+	{value: 0x0012, lo: 0xb0, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xbf},
+	// Block 0x7e, offset 0x326
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x0015, lo: 0xb0, hi: 0xb0},
+	{value: 0x0012, lo: 0xb1, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x8453, lo: 0xbd, hi: 0xbd},
+	{value: 0x0117, lo: 0xbe, hi: 0xbf},
+	// Block 0x7f, offset 0x32d
+	{value: 0x0010, lo: 0xb7, hi: 0xb7},
+	{value: 0x0015, lo: 0xb8, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbf},
+	// Block 0x80, offset 0x331
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8a},
+	{value: 0x0014, lo: 0x8b, hi: 0x8b},
+	{value: 0x0010, lo: 0x8c, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa6},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	// Block 0x81, offset 0x33a
+	{value: 0x0010, lo: 0x80, hi: 0xb3},
+	// Block 0x82, offset 0x33b
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x85},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0024, lo: 0xa0, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb7},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	// Block 0x83, offset 0x343
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0014, lo: 0xa6, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x84, offset 0x347
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x91},
+	{value: 0x0010, lo: 0x92, hi: 0x92},
+	{value: 0x0030, lo: 0x93, hi: 0x93},
+	{value: 0x0010, lo: 0xa0, hi: 0xbc},
+	// Block 0x85, offset 0x34c
+	{value: 0x0014, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xb9},
+	{value: 0x0010, lo: 0xba, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x86, offset 0x354
+	{value: 0x0030, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0014, lo: 0xa5, hi: 0xa5},
+	{value: 0x0004, lo: 0xa6, hi: 0xa6},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x87, offset 0x35a
+	{value: 0x0010, lo: 0x80, hi: 0xa8},
+	{value: 0x0014, lo: 0xa9, hi: 0xae},
+	{value: 0x0010, lo: 0xaf, hi: 0xb0},
+	{value: 0x0014, lo: 0xb1, hi: 0xb2},
+	{value: 0x0010, lo: 0xb3, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb6},
+	// Block 0x88, offset 0x360
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0010, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0004, lo: 0xb0, hi: 0xb0},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	// Block 0x89, offset 0x36a
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	{value: 0x0024, lo: 0xb2, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0024, lo: 0xb7, hi: 0xb8},
+	{value: 0x0024, lo: 0xbe, hi: 0xbf},
+	// Block 0x8a, offset 0x36f
+	{value: 0x0024, lo: 0x81, hi: 0x81},
+	{value: 0x0004, lo: 0x9d, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0010, lo: 0xb2, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb6},
+	// Block 0x8b, offset 0x378
+	{value: 0x0010, lo: 0x81, hi: 0x86},
+	{value: 0x0010, lo: 0x89, hi: 0x8e},
+	{value: 0x0010, lo: 0x91, hi: 0x96},
+	{value: 0x0010, lo: 0xa0, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xae},
+	{value: 0x0012, lo: 0xb0, hi: 0xbf},
+	// Block 0x8c, offset 0x37e
+	{value: 0x0012, lo: 0x80, hi: 0x92},
+	{value: 0xac52, lo: 0x93, hi: 0x93},
+	{value: 0x0012, lo: 0x94, hi: 0x9a},
+	{value: 0x0014, lo: 0x9b, hi: 0x9b},
+	{value: 0x0015, lo: 0x9c, hi: 0x9f},
+	{value: 0x0012, lo: 0xa0, hi: 0xa5},
+	{value: 0x74d2, lo: 0xb0, hi: 0xbf},
+	// Block 0x8d, offset 0x385
+	{value: 0x78d2, lo: 0x80, hi: 0x8f},
+	{value: 0x7cd2, lo: 0x90, hi: 0x9f},
+	{value: 0x80d2, lo: 0xa0, hi: 0xaf},
+	{value: 0x7cd2, lo: 0xb0, hi: 0xbf},
+	// Block 0x8e, offset 0x389
+	{value: 0x0010, lo: 0x80, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xaa},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x8f, offset 0x391
+	{value: 0x0010, lo: 0x80, hi: 0xa3},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x90, offset 0x393
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x8b, hi: 0xbb},
+	// Block 0x91, offset 0x395
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x86, hi: 0xbf},
+	// Block 0x92, offset 0x398
+	{value: 0x0010, lo: 0x80, hi: 0xb1},
+	{value: 0x0004, lo: 0xb2, hi: 0xbf},
+	// Block 0x93, offset 0x39a
+	{value: 0x0004, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x93, hi: 0xbf},
+	// Block 0x94, offset 0x39c
+	{value: 0x0010, lo: 0x80, hi: 0xbd},
+	// Block 0x95, offset 0x39d
+	{value: 0x0010, lo: 0x90, hi: 0xbf},
+	// Block 0x96, offset 0x39e
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x0010, lo: 0x92, hi: 0xbf},
+	// Block 0x97, offset 0x3a0
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0xb0, hi: 0xbb},
+	// Block 0x98, offset 0x3a2
+	{value: 0x0014, lo: 0x80, hi: 0x8f},
+	{value: 0x0054, lo: 0x93, hi: 0x93},
+	{value: 0x0024, lo: 0xa0, hi: 0xa6},
+	{value: 0x0034, lo: 0xa7, hi: 0xad},
+	{value: 0x0024, lo: 0xae, hi: 0xaf},
+	{value: 0x0010, lo: 0xb3, hi: 0xb4},
+	// Block 0x99, offset 0x3a8
+	{value: 0x0010, lo: 0x8d, hi: 0x8f},
+	{value: 0x0054, lo: 0x92, hi: 0x92},
+	{value: 0x0054, lo: 0x95, hi: 0x95},
+	{value: 0x0010, lo: 0xb0, hi: 0xb4},
+	{value: 0x0010, lo: 0xb6, hi: 0xbf},
+	// Block 0x9a, offset 0x3ad
+	{value: 0x0010, lo: 0x80, hi: 0xbc},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x9b, offset 0x3af
+	{value: 0x0054, lo: 0x87, hi: 0x87},
+	{value: 0x0054, lo: 0x8e, hi: 0x8e},
+	{value: 0x0054, lo: 0x9a, hi: 0x9a},
+	{value: 0x5f53, lo: 0xa1, hi: 0xba},
+	{value: 0x0004, lo: 0xbe, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x9c, offset 0x3b5
+	{value: 0x0004, lo: 0x80, hi: 0x80},
+	{value: 0x5f52, lo: 0x81, hi: 0x9a},
+	{value: 0x0004, lo: 0xb0, hi: 0xb0},
+	// Block 0x9d, offset 0x3b8
+	{value: 0x0014, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xbe},
+	// Block 0x9e, offset 0x3ba
+	{value: 0x0010, lo: 0x82, hi: 0x87},
+	{value: 0x0010, lo: 0x8a, hi: 0x8f},
+	{value: 0x0010, lo: 0x92, hi: 0x97},
+	{value: 0x0010, lo: 0x9a, hi: 0x9c},
+	{value: 0x0004, lo: 0xa3, hi: 0xa3},
+	{value: 0x0014, lo: 0xb9, hi: 0xbb},
+	// Block 0x9f, offset 0x3c0
+	{value: 0x0010, lo: 0x80, hi: 0x8b},
+	{value: 0x0010, lo: 0x8d, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xba},
+	{value: 0x0010, lo: 0xbc, hi: 0xbd},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xa0, offset 0x3c5
+	{value: 0x0010, lo: 0x80, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x9d},
+	// Block 0xa1, offset 0x3c7
+	{value: 0x0010, lo: 0x80, hi: 0xba},
+	// Block 0xa2, offset 0x3c8
+	{value: 0x0010, lo: 0x80, hi: 0xb4},
+	// Block 0xa3, offset 0x3c9
+	{value: 0x0034, lo: 0xbd, hi: 0xbd},
+	// Block 0xa4, offset 0x3ca
+	{value: 0x0010, lo: 0x80, hi: 0x9c},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0xa5, offset 0x3cc
+	{value: 0x0010, lo: 0x80, hi: 0x90},
+	{value: 0x0034, lo: 0xa0, hi: 0xa0},
+	// Block 0xa6, offset 0x3ce
+	{value: 0x0010, lo: 0x80, hi: 0x9f},
+	{value: 0x0010, lo: 0xad, hi: 0xbf},
+	// Block 0xa7, offset 0x3d0
+	{value: 0x0010, lo: 0x80, hi: 0x8a},
+	{value: 0x0010, lo: 0x90, hi: 0xb5},
+	{value: 0x0024, lo: 0xb6, hi: 0xba},
+	// Block 0xa8, offset 0x3d3
+	{value: 0x0010, lo: 0x80, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0xa9, offset 0x3d5
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x88, hi: 0x8f},
+	{value: 0x0010, lo: 0x91, hi: 0x95},
+	// Block 0xaa, offset 0x3d8
+	{value: 0x2813, lo: 0x80, hi: 0x87},
+	{value: 0x3813, lo: 0x88, hi: 0x8f},
+	{value: 0x2813, lo: 0x90, hi: 0x97},
+	{value: 0xaf53, lo: 0x98, hi: 0x9f},
+	{value: 0xb253, lo: 0xa0, hi: 0xa7},
+	{value: 0x2812, lo: 0xa8, hi: 0xaf},
+	{value: 0x3812, lo: 0xb0, hi: 0xb7},
+	{value: 0x2812, lo: 0xb8, hi: 0xbf},
+	// Block 0xab, offset 0x3e0
+	{value: 0xaf52, lo: 0x80, hi: 0x87},
+	{value: 0xb252, lo: 0x88, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0xbf},
+	// Block 0xac, offset 0x3e3
+	{value: 0x0010, lo: 0x80, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0xb253, lo: 0xb0, hi: 0xb7},
+	{value: 0xaf53, lo: 0xb8, hi: 0xbf},
+	// Block 0xad, offset 0x3e7
+	{value: 0x2813, lo: 0x80, hi: 0x87},
+	{value: 0x3813, lo: 0x88, hi: 0x8f},
+	{value: 0x2813, lo: 0x90, hi: 0x93},
+	{value: 0xb252, lo: 0x98, hi: 0x9f},
+	{value: 0xaf52, lo: 0xa0, hi: 0xa7},
+	{value: 0x2812, lo: 0xa8, hi: 0xaf},
+	{value: 0x3812, lo: 0xb0, hi: 0xb7},
+	{value: 0x2812, lo: 0xb8, hi: 0xbb},
+	// Block 0xae, offset 0x3ef
+	{value: 0x0010, lo: 0x80, hi: 0xa7},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xaf, offset 0x3f1
+	{value: 0x0010, lo: 0x80, hi: 0xa3},
+	// Block 0xb0, offset 0x3f2
+	{value: 0x0010, lo: 0x80, hi: 0xb6},
+	// Block 0xb1, offset 0x3f3
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xa7},
+	// Block 0xb2, offset 0x3f5
+	{value: 0x0010, lo: 0x80, hi: 0x85},
+	{value: 0x0010, lo: 0x88, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0xb5},
+	{value: 0x0010, lo: 0xb7, hi: 0xb8},
+	{value: 0x0010, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xb3, offset 0x3fb
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb6},
+	// Block 0xb4, offset 0x3fd
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	// Block 0xb5, offset 0x3fe
+	{value: 0x0010, lo: 0xa0, hi: 0xb2},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	// Block 0xb6, offset 0x400
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb9},
+	// Block 0xb7, offset 0x402
+	{value: 0x0010, lo: 0x80, hi: 0xb7},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0xb8, offset 0x404
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x83},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x8e, hi: 0x8e},
+	{value: 0x0024, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x93},
+	{value: 0x0010, lo: 0x95, hi: 0x97},
+	{value: 0x0010, lo: 0x99, hi: 0xb3},
+	{value: 0x0024, lo: 0xb8, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xb9, offset 0x411
+	{value: 0x0010, lo: 0xa0, hi: 0xbc},
+	// Block 0xba, offset 0x412
+	{value: 0x0010, lo: 0x80, hi: 0x9c},
+	// Block 0xbb, offset 0x413
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0x89, hi: 0xa4},
+	{value: 0x0024, lo: 0xa5, hi: 0xa5},
+	{value: 0x0034, lo: 0xa6, hi: 0xa6},
+	// Block 0xbc, offset 0x417
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb2},
+	// Block 0xbd, offset 0x419
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	// Block 0xbe, offset 0x41a
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	// Block 0xbf, offset 0x41b
+	{value: 0x5653, lo: 0x80, hi: 0xb2},
+	// Block 0xc0, offset 0x41c
+	{value: 0x5652, lo: 0x80, hi: 0xb2},
+	// Block 0xc1, offset 0x41d
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbf},
+	// Block 0xc2, offset 0x421
+	{value: 0x0014, lo: 0x80, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xc3, offset 0x425
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb6},
+	{value: 0x0010, lo: 0xb7, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0014, lo: 0xbd, hi: 0xbd},
+	// Block 0xc4, offset 0x42b
+	{value: 0x0010, lo: 0x90, hi: 0xa8},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xc5, offset 0x42d
+	{value: 0x0024, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xab},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb4},
+	{value: 0x0010, lo: 0xb6, hi: 0xbf},
+	// Block 0xc6, offset 0x434
+	{value: 0x0010, lo: 0x90, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb3},
+	{value: 0x0010, lo: 0xb6, hi: 0xb6},
+	// Block 0xc7, offset 0x437
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xc8, offset 0x43b
+	{value: 0x0030, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0014, lo: 0x8b, hi: 0x8c},
+	{value: 0x0010, lo: 0x90, hi: 0x9a},
+	{value: 0x0010, lo: 0x9c, hi: 0x9c},
+	// Block 0xc9, offset 0x441
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	{value: 0x0010, lo: 0x93, hi: 0xae},
+	{value: 0x0014, lo: 0xaf, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0014, lo: 0xb4, hi: 0xb4},
+	{value: 0x0030, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb6},
+	{value: 0x0014, lo: 0xb7, hi: 0xb7},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	// Block 0xca, offset 0x44a
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x88, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa8},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xcb, offset 0x450
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0014, lo: 0x9f, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa2},
+	{value: 0x0014, lo: 0xa3, hi: 0xa8},
+	{value: 0x0034, lo: 0xa9, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xcc, offset 0x456
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0xcd, offset 0x460
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0030, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9d, hi: 0xa3},
+	{value: 0x0024, lo: 0xa6, hi: 0xac},
+	{value: 0x0024, lo: 0xb0, hi: 0xb4},
+	// Block 0xce, offset 0x46a
+	{value: 0x0010, lo: 0x80, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbf},
+	// Block 0xcf, offset 0x46c
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8a},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xd0, offset 0x473
+	{value: 0x0010, lo: 0x80, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb8},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0xd1, offset 0x479
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0x85},
+	{value: 0x0010, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xd2, offset 0x47f
+	{value: 0x0010, lo: 0x80, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb5},
+	{value: 0x0010, lo: 0xb8, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xd3, offset 0x485
+	{value: 0x0034, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x98, hi: 0x9b},
+	{value: 0x0014, lo: 0x9c, hi: 0x9d},
+	// Block 0xd4, offset 0x488
+	{value: 0x0010, lo: 0x80, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbc},
+	{value: 0x0014, lo: 0xbd, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xd5, offset 0x48e
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x84, hi: 0x84},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xd6, offset 0x491
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0014, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb5},
+	{value: 0x0030, lo: 0xb6, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	// Block 0xd7, offset 0x499
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	// Block 0xd8, offset 0x49a
+	{value: 0x0014, lo: 0x9d, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xd9, offset 0x4a1
+	{value: 0x5f53, lo: 0xa0, hi: 0xbf},
+	// Block 0xda, offset 0x4a2
+	{value: 0x5f52, lo: 0x80, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xdb, offset 0x4a5
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0014, lo: 0x89, hi: 0x8a},
+	{value: 0x0010, lo: 0x8b, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb8},
+	{value: 0x0010, lo: 0xb9, hi: 0xba},
+	{value: 0x0014, lo: 0xbb, hi: 0xbe},
+	// Block 0xdc, offset 0x4af
+	{value: 0x0034, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0014, lo: 0x91, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x98},
+	{value: 0x0014, lo: 0x99, hi: 0x9b},
+	{value: 0x0010, lo: 0x9c, hi: 0xbf},
+	// Block 0xdd, offset 0x4b5
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x86, hi: 0x89},
+	{value: 0x0014, lo: 0x8a, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0014, lo: 0x98, hi: 0x98},
+	{value: 0x0034, lo: 0x99, hi: 0x99},
+	// Block 0xde, offset 0x4bb
+	{value: 0x0010, lo: 0x80, hi: 0xb8},
+	// Block 0xdf, offset 0x4bc
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb6},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xe0, offset 0x4c2
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xb2, hi: 0xbf},
+	// Block 0xe1, offset 0x4c5
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x0014, lo: 0x92, hi: 0xa7},
+	{value: 0x0010, lo: 0xa9, hi: 0xa9},
+	{value: 0x0014, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb6},
+	// Block 0xe2, offset 0x4cd
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x88, hi: 0x89},
+	{value: 0x0010, lo: 0x8b, hi: 0xb0},
+	{value: 0x0014, lo: 0xb1, hi: 0xb6},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0014, lo: 0xbc, hi: 0xbd},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0xe3, offset 0x4d4
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x85},
+	{value: 0x0010, lo: 0x86, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xe4, offset 0x4db
+	{value: 0x0010, lo: 0x80, hi: 0x99},
+	// Block 0xe5, offset 0x4dc
+	{value: 0x0010, lo: 0x80, hi: 0xae},
+	// Block 0xe6, offset 0x4dd
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	// Block 0xe7, offset 0x4de
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	// Block 0xe8, offset 0x4df
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	// Block 0xe9, offset 0x4e1
+	{value: 0x0010, lo: 0x90, hi: 0xad},
+	{value: 0x0034, lo: 0xb0, hi: 0xb4},
+	// Block 0xea, offset 0x4e3
+	{value: 0x0010, lo: 0x80, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb6},
+	// Block 0xeb, offset 0x4e5
+	{value: 0x0014, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xa3, hi: 0xb7},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0xec, offset 0x4e9
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	// Block 0xed, offset 0x4ea
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0010, lo: 0x90, hi: 0xbe},
+	// Block 0xee, offset 0x4ec
+	{value: 0x0014, lo: 0x8f, hi: 0x9f},
+	// Block 0xef, offset 0x4ed
+	{value: 0x0014, lo: 0xa0, hi: 0xa1},
+	// Block 0xf0, offset 0x4ee
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xbc},
+	// Block 0xf1, offset 0x4f0
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x0034, lo: 0x9e, hi: 0x9e},
+	{value: 0x0014, lo: 0xa0, hi: 0xa3},
+	// Block 0xf2, offset 0x4f5
+	{value: 0x0030, lo: 0xa5, hi: 0xa6},
+	{value: 0x0034, lo: 0xa7, hi: 0xa9},
+	{value: 0x0030, lo: 0xad, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbf},
+	// Block 0xf3, offset 0x4fa
+	{value: 0x0034, lo: 0x80, hi: 0x82},
+	{value: 0x0024, lo: 0x85, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8b},
+	{value: 0x0024, lo: 0xaa, hi: 0xad},
+	// Block 0xf4, offset 0x4fe
+	{value: 0x0024, lo: 0x82, hi: 0x84},
+	// Block 0xf5, offset 0x4ff
+	{value: 0x0013, lo: 0x80, hi: 0x99},
+	{value: 0x0012, lo: 0x9a, hi: 0xb3},
+	{value: 0x0013, lo: 0xb4, hi: 0xbf},
+	// Block 0xf6, offset 0x502
+	{value: 0x0013, lo: 0x80, hi: 0x8d},
+	{value: 0x0012, lo: 0x8e, hi: 0x94},
+	{value: 0x0012, lo: 0x96, hi: 0xa7},
+	{value: 0x0013, lo: 0xa8, hi: 0xbf},
+	// Block 0xf7, offset 0x506
+	{value: 0x0013, lo: 0x80, hi: 0x81},
+	{value: 0x0012, lo: 0x82, hi: 0x9b},
+	{value: 0x0013, lo: 0x9c, hi: 0x9c},
+	{value: 0x0013, lo: 0x9e, hi: 0x9f},
+	{value: 0x0013, lo: 0xa2, hi: 0xa2},
+	{value: 0x0013, lo: 0xa5, hi: 0xa6},
+	{value: 0x0013, lo: 0xa9, hi: 0xac},
+	{value: 0x0013, lo: 0xae, hi: 0xb5},
+	{value: 0x0012, lo: 0xb6, hi: 0xb9},
+	{value: 0x0012, lo: 0xbb, hi: 0xbb},
+	{value: 0x0012, lo: 0xbd, hi: 0xbf},
+	// Block 0xf8, offset 0x511
+	{value: 0x0012, lo: 0x80, hi: 0x83},
+	{value: 0x0012, lo: 0x85, hi: 0x8f},
+	{value: 0x0013, lo: 0x90, hi: 0xa9},
+	{value: 0x0012, lo: 0xaa, hi: 0xbf},
+	// Block 0xf9, offset 0x515
+	{value: 0x0012, lo: 0x80, hi: 0x83},
+	{value: 0x0013, lo: 0x84, hi: 0x85},
+	{value: 0x0013, lo: 0x87, hi: 0x8a},
+	{value: 0x0013, lo: 0x8d, hi: 0x94},
+	{value: 0x0013, lo: 0x96, hi: 0x9c},
+	{value: 0x0012, lo: 0x9e, hi: 0xb7},
+	{value: 0x0013, lo: 0xb8, hi: 0xb9},
+	{value: 0x0013, lo: 0xbb, hi: 0xbe},
+	// Block 0xfa, offset 0x51d
+	{value: 0x0013, lo: 0x80, hi: 0x84},
+	{value: 0x0013, lo: 0x86, hi: 0x86},
+	{value: 0x0013, lo: 0x8a, hi: 0x90},
+	{value: 0x0012, lo: 0x92, hi: 0xab},
+	{value: 0x0013, lo: 0xac, hi: 0xbf},
+	// Block 0xfb, offset 0x522
+	{value: 0x0013, lo: 0x80, hi: 0x85},
+	{value: 0x0012, lo: 0x86, hi: 0x9f},
+	{value: 0x0013, lo: 0xa0, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xbf},
+	// Block 0xfc, offset 0x526
+	{value: 0x0012, lo: 0x80, hi: 0x93},
+	{value: 0x0013, lo: 0x94, hi: 0xad},
+	{value: 0x0012, lo: 0xae, hi: 0xbf},
+	// Block 0xfd, offset 0x529
+	{value: 0x0012, lo: 0x80, hi: 0x87},
+	{value: 0x0013, lo: 0x88, hi: 0xa1},
+	{value: 0x0012, lo: 0xa2, hi: 0xbb},
+	{value: 0x0013, lo: 0xbc, hi: 0xbf},
+	// Block 0xfe, offset 0x52d
+	{value: 0x0013, lo: 0x80, hi: 0x95},
+	{value: 0x0012, lo: 0x96, hi: 0xaf},
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0xff, offset 0x530
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	{value: 0x0012, lo: 0x8a, hi: 0xa5},
+	{value: 0x0013, lo: 0xa8, hi: 0xbf},
+	// Block 0x100, offset 0x533
+	{value: 0x0013, lo: 0x80, hi: 0x80},
+	{value: 0x0012, lo: 0x82, hi: 0x9a},
+	{value: 0x0012, lo: 0x9c, hi: 0xa1},
+	{value: 0x0013, lo: 0xa2, hi: 0xba},
+	{value: 0x0012, lo: 0xbc, hi: 0xbf},
+	// Block 0x101, offset 0x538
+	{value: 0x0012, lo: 0x80, hi: 0x94},
+	{value: 0x0012, lo: 0x96, hi: 0x9b},
+	{value: 0x0013, lo: 0x9c, hi: 0xb4},
+	{value: 0x0012, lo: 0xb6, hi: 0xbf},
+	// Block 0x102, offset 0x53c
+	{value: 0x0012, lo: 0x80, hi: 0x8e},
+	{value: 0x0012, lo: 0x90, hi: 0x95},
+	{value: 0x0013, lo: 0x96, hi: 0xae},
+	{value: 0x0012, lo: 0xb0, hi: 0xbf},
+	// Block 0x103, offset 0x540
+	{value: 0x0012, lo: 0x80, hi: 0x88},
+	{value: 0x0012, lo: 0x8a, hi: 0x8f},
+	{value: 0x0013, lo: 0x90, hi: 0xa8},
+	{value: 0x0012, lo: 0xaa, hi: 0xbf},
+	// Block 0x104, offset 0x544
+	{value: 0x0012, lo: 0x80, hi: 0x82},
+	{value: 0x0012, lo: 0x84, hi: 0x89},
+	{value: 0x0017, lo: 0x8a, hi: 0x8b},
+	{value: 0x0010, lo: 0x8e, hi: 0xbf},
+	// Block 0x105, offset 0x548
+	{value: 0x0014, lo: 0x80, hi: 0xb6},
+	{value: 0x0014, lo: 0xbb, hi: 0xbf},
+	// Block 0x106, offset 0x54a
+	{value: 0x0014, lo: 0x80, hi: 0xac},
+	{value: 0x0014, lo: 0xb5, hi: 0xb5},
+	// Block 0x107, offset 0x54c
+	{value: 0x0014, lo: 0x84, hi: 0x84},
+	{value: 0x0014, lo: 0x9b, hi: 0x9f},
+	{value: 0x0014, lo: 0xa1, hi: 0xaf},
+	// Block 0x108, offset 0x54f
+	{value: 0x0024, lo: 0x80, hi: 0x86},
+	{value: 0x0024, lo: 0x88, hi: 0x98},
+	{value: 0x0024, lo: 0x9b, hi: 0xa1},
+	{value: 0x0024, lo: 0xa3, hi: 0xa4},
+	{value: 0x0024, lo: 0xa6, hi: 0xaa},
+	// Block 0x109, offset 0x554
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0034, lo: 0x90, hi: 0x96},
+	// Block 0x10a, offset 0x556
+	{value: 0xb552, lo: 0x80, hi: 0x81},
+	{value: 0xb852, lo: 0x82, hi: 0x83},
+	{value: 0x0024, lo: 0x84, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x10b, offset 0x55b
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x9f},
+	{value: 0x0010, lo: 0xa1, hi: 0xa2},
+	{value: 0x0010, lo: 0xa4, hi: 0xa4},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0010, lo: 0xa9, hi: 0xb2},
+	{value: 0x0010, lo: 0xb4, hi: 0xb7},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	// Block 0x10c, offset 0x564
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x8b, hi: 0x9b},
+	{value: 0x0010, lo: 0xa1, hi: 0xa3},
+	{value: 0x0010, lo: 0xa5, hi: 0xa9},
+	{value: 0x0010, lo: 0xab, hi: 0xbb},
+	// Block 0x10d, offset 0x569
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0x10e, offset 0x56a
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	{value: 0x0013, lo: 0x90, hi: 0xa9},
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0x10f, offset 0x56d
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	// Block 0x110, offset 0x56e
+	{value: 0x0004, lo: 0xbb, hi: 0xbf},
+	// Block 0x111, offset 0x56f
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0014, lo: 0xa0, hi: 0xbf},
+	// Block 0x112, offset 0x571
+	{value: 0x0014, lo: 0x80, hi: 0xbf},
+	// Block 0x113, offset 0x572
+	{value: 0x0014, lo: 0x80, hi: 0xaf},
+}
+
+// Total table size 14177 bytes (13KiB); checksum: F17D40E8
diff --git a/vendor/golang.org/x/text/cases/tables11.0.0.go b/vendor/golang.org/x/text/cases/tables11.0.0.go
new file mode 100644
index 00000000..ce00ce37
--- /dev/null
+++ b/vendor/golang.org/x/text/cases/tables11.0.0.go
@@ -0,0 +1,2316 @@
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
+
+//go:build go1.13 && !go1.14
+
+package cases
+
+// UnicodeVersion is the Unicode version from which the tables in this package are derived.
+const UnicodeVersion = "11.0.0"
+
+var xorData string = "" + // Size: 188 bytes
+	"\x00\x06\x07\x00\x01?\x00\x0f\x03\x00\x0f\x12\x00\x0f\x1f\x00\x0f\x1d" +
+	"\x00\x01\x13\x00\x0f\x16\x00\x0f\x0b\x00\x0f3\x00\x0f7\x00\x01#\x00\x0f?" +
+	"\x00\x0e'\x00\x0f/\x00\x0e>\x00\x0f*\x00\x0c&\x00\x0c*\x00\x0c;\x00\x0c9" +
+	"\x00\x0c%\x00\x01\x08\x00\x03\x0d\x00\x03\x09\x00\x02\x06\x00\x02\x02" +
+	"\x00\x02\x0c\x00\x01\x00\x00\x01\x03\x00\x01\x01\x00\x01 \x00\x01\x0c" +
+	"\x00\x01\x10\x00\x03\x10\x00\x036 \x00\x037 \x00\x0b#\x10\x00\x0b 0\x00" +
+	"\x0b!\x10\x00\x0b!0\x001\x00\x00\x0b(\x04\x00\x03\x04\x1e\x00\x03\x0a" +
+	"\x00\x02:\x00\x02>\x00\x02,\x00\x02\x00\x00\x02\x10\x00\x01<\x00\x01&" +
+	"\x00\x01*\x00\x01.\x00\x010\x003 \x00\x01\x18\x00\x01(\x00\x01\x1e\x00" +
+	"\x01\x22"
+
+var exceptions string = "" + // Size: 2436 bytes
+	"\x00\x12\x12μΜΜ\x12\x12ssSSSs\x13\x18i̇i̇\x10\x09II\x13\x1bʼnʼNʼN\x11" +
+	"\x09sSS\x12\x12dždžDž\x12\x12dždžDŽ\x10\x12DŽDž\x12\x12ljljLj\x12\x12ljljLJ\x10\x12LJLj" +
+	"\x12\x12njnjNj\x12\x12njnjNJ\x10\x12NJNj\x13\x1bǰJ̌J̌\x12\x12dzdzDz\x12\x12dzdzDZ\x10" +
+	"\x12DZDz\x13\x18ⱥⱥ\x13\x18ⱦⱦ\x10\x1bⱾⱾ\x10\x1bⱿⱿ\x10\x1bⱯⱯ\x10\x1bⱭⱭ\x10" +
+	"\x1bⱰⱰ\x10\x1bꞫꞫ\x10\x1bꞬꞬ\x10\x1bꞍꞍ\x10\x1bꞪꞪ\x10\x1bꞮꞮ\x10\x1bⱢⱢ\x10" +
+	"\x1bꞭꞭ\x10\x1bⱮⱮ\x10\x1bⱤⱤ\x10\x1bꞱꞱ\x10\x1bꞲꞲ\x10\x1bꞰꞰ2\x12ιΙΙ\x166ΐ" +
+	"Ϊ́Ϊ́\x166ΰΫ́Ϋ́\x12\x12σΣΣ\x12\x12βΒΒ\x12\x12θΘΘ\x12\x12φΦΦ\x12" +
+	"\x12πΠΠ\x12\x12κΚΚ\x12\x12ρΡΡ\x12\x12εΕΕ\x14$եւԵՒԵւ\x10\x1bᲐა\x10\x1bᲑბ" +
+	"\x10\x1bᲒგ\x10\x1bᲓდ\x10\x1bᲔე\x10\x1bᲕვ\x10\x1bᲖზ\x10\x1bᲗთ\x10\x1bᲘი" +
+	"\x10\x1bᲙკ\x10\x1bᲚლ\x10\x1bᲛმ\x10\x1bᲜნ\x10\x1bᲝო\x10\x1bᲞპ\x10\x1bᲟჟ" +
+	"\x10\x1bᲠრ\x10\x1bᲡს\x10\x1bᲢტ\x10\x1bᲣუ\x10\x1bᲤფ\x10\x1bᲥქ\x10\x1bᲦღ" +
+	"\x10\x1bᲧყ\x10\x1bᲨშ\x10\x1bᲩჩ\x10\x1bᲪც\x10\x1bᲫძ\x10\x1bᲬწ\x10\x1bᲭჭ" +
+	"\x10\x1bᲮხ\x10\x1bᲯჯ\x10\x1bᲰჰ\x10\x1bᲱჱ\x10\x1bᲲჲ\x10\x1bᲳჳ\x10\x1bᲴჴ" +
+	"\x10\x1bᲵჵ\x10\x1bᲶჶ\x10\x1bᲷჷ\x10\x1bᲸჸ\x10\x1bᲹჹ\x10\x1bᲺჺ\x10\x1bᲽჽ" +
+	"\x10\x1bᲾჾ\x10\x1bᲿჿ\x12\x12вВВ\x12\x12дДД\x12\x12оОО\x12\x12сСС\x12\x12" +
+	"тТТ\x12\x12тТТ\x12\x12ъЪЪ\x12\x12ѣѢѢ\x13\x1bꙋꙊꙊ\x13\x1bẖH̱H̱\x13\x1bẗ" +
+	"T̈T̈\x13\x1bẘW̊W̊\x13\x1bẙY̊Y̊\x13\x1baʾAʾAʾ\x13\x1bṡṠṠ\x12\x10ssß\x14" +
+	"$ὐΥ̓Υ̓\x166ὒΥ̓̀Υ̓̀\x166ὔΥ̓́Υ̓́\x166ὖΥ̓͂Υ̓͂\x15+ἀιἈΙᾈ\x15+ἁιἉΙᾉ" +
+	"\x15+ἂιἊΙᾊ\x15+ἃιἋΙᾋ\x15+ἄιἌΙᾌ\x15+ἅιἍΙᾍ\x15+ἆιἎΙᾎ\x15+ἇιἏΙᾏ\x15\x1dἀιᾀἈ" +
+	"Ι\x15\x1dἁιᾁἉΙ\x15\x1dἂιᾂἊΙ\x15\x1dἃιᾃἋΙ\x15\x1dἄιᾄἌΙ\x15\x1dἅιᾅἍΙ\x15" +
+	"\x1dἆιᾆἎΙ\x15\x1dἇιᾇἏΙ\x15+ἠιἨΙᾘ\x15+ἡιἩΙᾙ\x15+ἢιἪΙᾚ\x15+ἣιἫΙᾛ\x15+ἤιἬΙᾜ" +
+	"\x15+ἥιἭΙᾝ\x15+ἦιἮΙᾞ\x15+ἧιἯΙᾟ\x15\x1dἠιᾐἨΙ\x15\x1dἡιᾑἩΙ\x15\x1dἢιᾒἪΙ" +
+	"\x15\x1dἣιᾓἫΙ\x15\x1dἤιᾔἬΙ\x15\x1dἥιᾕἭΙ\x15\x1dἦιᾖἮΙ\x15\x1dἧιᾗἯΙ\x15+ὠι" +
+	"ὨΙᾨ\x15+ὡιὩΙᾩ\x15+ὢιὪΙᾪ\x15+ὣιὫΙᾫ\x15+ὤιὬΙᾬ\x15+ὥιὭΙᾭ\x15+ὦιὮΙᾮ\x15+ὧι" +
+	"ὯΙᾯ\x15\x1dὠιᾠὨΙ\x15\x1dὡιᾡὩΙ\x15\x1dὢιᾢὪΙ\x15\x1dὣιᾣὫΙ\x15\x1dὤιᾤὬΙ" +
+	"\x15\x1dὥιᾥὭΙ\x15\x1dὦιᾦὮΙ\x15\x1dὧιᾧὯΙ\x15-ὰιᾺΙᾺͅ\x14#αιΑΙᾼ\x14$άιΆΙΆͅ" +
+	"\x14$ᾶΑ͂Α͂\x166ᾶιΑ͂Ιᾼ͂\x14\x1cαιᾳΑΙ\x12\x12ιΙΙ\x15-ὴιῊΙῊͅ\x14#ηιΗΙῌ" +
+	"\x14$ήιΉΙΉͅ\x14$ῆΗ͂Η͂\x166ῆιΗ͂Ιῌ͂\x14\x1cηιῃΗΙ\x166ῒΪ̀Ϊ̀\x166ΐΙ" +
+	"̈́Ϊ́\x14$ῖΙ͂Ι͂\x166ῗΪ͂Ϊ͂\x166ῢΫ̀Ϋ̀\x166ΰΫ́Ϋ́\x14$ῤΡ̓Ρ̓" +
+	"\x14$ῦΥ͂Υ͂\x166ῧΫ͂Ϋ͂\x15-ὼιῺΙῺͅ\x14#ωιΩΙῼ\x14$ώιΏΙΏͅ\x14$ῶΩ͂Ω͂\x16" +
+	"6ῶιΩ͂Ιῼ͂\x14\x1cωιῳΩΙ\x12\x10ωω\x11\x08kk\x12\x10åå\x12\x10ɫɫ\x12\x10ɽ" +
+	"ɽ\x10\x12ȺȺ\x10\x12ȾȾ\x12\x10ɑɑ\x12\x10ɱɱ\x12\x10ɐɐ\x12\x10ɒɒ\x12\x10ȿȿ" +
+	"\x12\x10ɀɀ\x12\x10ɥɥ\x12\x10ɦɦ\x12\x10ɜɜ\x12\x10ɡɡ\x12\x10ɬɬ\x12\x10ɪɪ" +
+	"\x12\x10ʞʞ\x12\x10ʇʇ\x12\x10ʝʝ\x12\x12ffFFFf\x12\x12fiFIFi\x12\x12flFLFl" +
+	"\x13\x1bffiFFIFfi\x13\x1bfflFFLFfl\x12\x12stSTSt\x12\x12stSTSt\x14$մնՄՆՄ" +
+	"ն\x14$մեՄԵՄե\x14$միՄԻՄի\x14$վնՎՆՎն\x14$մխՄԽՄխ"
+
+// lookup returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *caseTrie) lookup(s []byte) (v uint16, sz int) {
+	c0 := s[0]
+	switch {
+	case c0 < 0x80: // is ASCII
+		return caseValues[c0], 1
+	case c0 < 0xC2:
+		return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+	case c0 < 0xE0: // 2-byte UTF-8
+		if len(s) < 2 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c1), 2
+	case c0 < 0xF0: // 3-byte UTF-8
+		if len(s) < 3 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c2), 3
+	case c0 < 0xF8: // 4-byte UTF-8
+		if len(s) < 4 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		o = uint32(i)<<6 + uint32(c2)
+		i = caseIndex[o]
+		c3 := s[3]
+		if c3 < 0x80 || 0xC0 <= c3 {
+			return 0, 3 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c3), 4
+	}
+	// Illegal rune
+	return 0, 1
+}
+
+// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *caseTrie) lookupUnsafe(s []byte) uint16 {
+	c0 := s[0]
+	if c0 < 0x80 { // is ASCII
+		return caseValues[c0]
+	}
+	i := caseIndex[c0]
+	if c0 < 0xE0 { // 2-byte UTF-8
+		return t.lookupValue(uint32(i), s[1])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[1])]
+	if c0 < 0xF0 { // 3-byte UTF-8
+		return t.lookupValue(uint32(i), s[2])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[2])]
+	if c0 < 0xF8 { // 4-byte UTF-8
+		return t.lookupValue(uint32(i), s[3])
+	}
+	return 0
+}
+
+// lookupString returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *caseTrie) lookupString(s string) (v uint16, sz int) {
+	c0 := s[0]
+	switch {
+	case c0 < 0x80: // is ASCII
+		return caseValues[c0], 1
+	case c0 < 0xC2:
+		return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+	case c0 < 0xE0: // 2-byte UTF-8
+		if len(s) < 2 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c1), 2
+	case c0 < 0xF0: // 3-byte UTF-8
+		if len(s) < 3 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c2), 3
+	case c0 < 0xF8: // 4-byte UTF-8
+		if len(s) < 4 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		o = uint32(i)<<6 + uint32(c2)
+		i = caseIndex[o]
+		c3 := s[3]
+		if c3 < 0x80 || 0xC0 <= c3 {
+			return 0, 3 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c3), 4
+	}
+	// Illegal rune
+	return 0, 1
+}
+
+// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *caseTrie) lookupStringUnsafe(s string) uint16 {
+	c0 := s[0]
+	if c0 < 0x80 { // is ASCII
+		return caseValues[c0]
+	}
+	i := caseIndex[c0]
+	if c0 < 0xE0 { // 2-byte UTF-8
+		return t.lookupValue(uint32(i), s[1])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[1])]
+	if c0 < 0xF0 { // 3-byte UTF-8
+		return t.lookupValue(uint32(i), s[2])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[2])]
+	if c0 < 0xF8 { // 4-byte UTF-8
+		return t.lookupValue(uint32(i), s[3])
+	}
+	return 0
+}
+
+// caseTrie. Total size: 12250 bytes (11.96 KiB). Checksum: 53ff6cb7321675e1.
+type caseTrie struct{}
+
+func newCaseTrie(i int) *caseTrie {
+	return &caseTrie{}
+}
+
+// lookupValue determines the type of block n and looks up the value for b.
+func (t *caseTrie) lookupValue(n uint32, b byte) uint16 {
+	switch {
+	case n < 20:
+		return uint16(caseValues[n<<6+uint32(b)])
+	default:
+		n -= 20
+		return uint16(sparse.lookup(n, b))
+	}
+}
+
+// caseValues: 22 blocks, 1408 entries, 2816 bytes
+// The third block is the zero block.
+var caseValues = [1408]uint16{
+	// Block 0x0, offset 0x0
+	0x27: 0x0054,
+	0x2e: 0x0054,
+	0x30: 0x0010, 0x31: 0x0010, 0x32: 0x0010, 0x33: 0x0010, 0x34: 0x0010, 0x35: 0x0010,
+	0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0054,
+	// Block 0x1, offset 0x40
+	0x41: 0x2013, 0x42: 0x2013, 0x43: 0x2013, 0x44: 0x2013, 0x45: 0x2013,
+	0x46: 0x2013, 0x47: 0x2013, 0x48: 0x2013, 0x49: 0x2013, 0x4a: 0x2013, 0x4b: 0x2013,
+	0x4c: 0x2013, 0x4d: 0x2013, 0x4e: 0x2013, 0x4f: 0x2013, 0x50: 0x2013, 0x51: 0x2013,
+	0x52: 0x2013, 0x53: 0x2013, 0x54: 0x2013, 0x55: 0x2013, 0x56: 0x2013, 0x57: 0x2013,
+	0x58: 0x2013, 0x59: 0x2013, 0x5a: 0x2013,
+	0x5e: 0x0004, 0x5f: 0x0010, 0x60: 0x0004, 0x61: 0x2012, 0x62: 0x2012, 0x63: 0x2012,
+	0x64: 0x2012, 0x65: 0x2012, 0x66: 0x2012, 0x67: 0x2012, 0x68: 0x2012, 0x69: 0x2012,
+	0x6a: 0x2012, 0x6b: 0x2012, 0x6c: 0x2012, 0x6d: 0x2012, 0x6e: 0x2012, 0x6f: 0x2012,
+	0x70: 0x2012, 0x71: 0x2012, 0x72: 0x2012, 0x73: 0x2012, 0x74: 0x2012, 0x75: 0x2012,
+	0x76: 0x2012, 0x77: 0x2012, 0x78: 0x2012, 0x79: 0x2012, 0x7a: 0x2012,
+	// Block 0x2, offset 0x80
+	// Block 0x3, offset 0xc0
+	0xc0: 0x0852, 0xc1: 0x0b53, 0xc2: 0x0113, 0xc3: 0x0112, 0xc4: 0x0113, 0xc5: 0x0112,
+	0xc6: 0x0b53, 0xc7: 0x0f13, 0xc8: 0x0f12, 0xc9: 0x0e53, 0xca: 0x1153, 0xcb: 0x0713,
+	0xcc: 0x0712, 0xcd: 0x0012, 0xce: 0x1453, 0xcf: 0x1753, 0xd0: 0x1a53, 0xd1: 0x0313,
+	0xd2: 0x0312, 0xd3: 0x1d53, 0xd4: 0x2053, 0xd5: 0x2352, 0xd6: 0x2653, 0xd7: 0x2653,
+	0xd8: 0x0113, 0xd9: 0x0112, 0xda: 0x2952, 0xdb: 0x0012, 0xdc: 0x1d53, 0xdd: 0x2c53,
+	0xde: 0x2f52, 0xdf: 0x3253, 0xe0: 0x0113, 0xe1: 0x0112, 0xe2: 0x0113, 0xe3: 0x0112,
+	0xe4: 0x0113, 0xe5: 0x0112, 0xe6: 0x3553, 0xe7: 0x0f13, 0xe8: 0x0f12, 0xe9: 0x3853,
+	0xea: 0x0012, 0xeb: 0x0012, 0xec: 0x0113, 0xed: 0x0112, 0xee: 0x3553, 0xef: 0x1f13,
+	0xf0: 0x1f12, 0xf1: 0x3b53, 0xf2: 0x3e53, 0xf3: 0x0713, 0xf4: 0x0712, 0xf5: 0x0313,
+	0xf6: 0x0312, 0xf7: 0x4153, 0xf8: 0x0113, 0xf9: 0x0112, 0xfa: 0x0012, 0xfb: 0x0010,
+	0xfc: 0x0113, 0xfd: 0x0112, 0xfe: 0x0012, 0xff: 0x4452,
+	// Block 0x4, offset 0x100
+	0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x02db, 0x105: 0x0359,
+	0x106: 0x03da, 0x107: 0x043b, 0x108: 0x04b9, 0x109: 0x053a, 0x10a: 0x059b, 0x10b: 0x0619,
+	0x10c: 0x069a, 0x10d: 0x0313, 0x10e: 0x0312, 0x10f: 0x1f13, 0x110: 0x1f12, 0x111: 0x0313,
+	0x112: 0x0312, 0x113: 0x0713, 0x114: 0x0712, 0x115: 0x0313, 0x116: 0x0312, 0x117: 0x0f13,
+	0x118: 0x0f12, 0x119: 0x0313, 0x11a: 0x0312, 0x11b: 0x0713, 0x11c: 0x0712, 0x11d: 0x1452,
+	0x11e: 0x0113, 0x11f: 0x0112, 0x120: 0x0113, 0x121: 0x0112, 0x122: 0x0113, 0x123: 0x0112,
+	0x124: 0x0113, 0x125: 0x0112, 0x126: 0x0113, 0x127: 0x0112, 0x128: 0x0113, 0x129: 0x0112,
+	0x12a: 0x0113, 0x12b: 0x0112, 0x12c: 0x0113, 0x12d: 0x0112, 0x12e: 0x0113, 0x12f: 0x0112,
+	0x130: 0x06fa, 0x131: 0x07ab, 0x132: 0x0829, 0x133: 0x08aa, 0x134: 0x0113, 0x135: 0x0112,
+	0x136: 0x2353, 0x137: 0x4453, 0x138: 0x0113, 0x139: 0x0112, 0x13a: 0x0113, 0x13b: 0x0112,
+	0x13c: 0x0113, 0x13d: 0x0112, 0x13e: 0x0113, 0x13f: 0x0112,
+	// Block 0x5, offset 0x140
+	0x140: 0x0a8a, 0x141: 0x0313, 0x142: 0x0312, 0x143: 0x0853, 0x144: 0x4753, 0x145: 0x4a53,
+	0x146: 0x0113, 0x147: 0x0112, 0x148: 0x0113, 0x149: 0x0112, 0x14a: 0x0113, 0x14b: 0x0112,
+	0x14c: 0x0113, 0x14d: 0x0112, 0x14e: 0x0113, 0x14f: 0x0112, 0x150: 0x0b0a, 0x151: 0x0b8a,
+	0x152: 0x0c0a, 0x153: 0x0b52, 0x154: 0x0b52, 0x155: 0x0012, 0x156: 0x0e52, 0x157: 0x1152,
+	0x158: 0x0012, 0x159: 0x1752, 0x15a: 0x0012, 0x15b: 0x1a52, 0x15c: 0x0c8a, 0x15d: 0x0012,
+	0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1d52, 0x161: 0x0d0a, 0x162: 0x0012, 0x163: 0x2052,
+	0x164: 0x0012, 0x165: 0x0d8a, 0x166: 0x0e0a, 0x167: 0x0012, 0x168: 0x2652, 0x169: 0x2652,
+	0x16a: 0x0e8a, 0x16b: 0x0f0a, 0x16c: 0x0f8a, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1d52,
+	0x170: 0x0012, 0x171: 0x100a, 0x172: 0x2c52, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x3252,
+	0x176: 0x0012, 0x177: 0x0012, 0x178: 0x0012, 0x179: 0x0012, 0x17a: 0x0012, 0x17b: 0x0012,
+	0x17c: 0x0012, 0x17d: 0x108a, 0x17e: 0x0012, 0x17f: 0x0012,
+	// Block 0x6, offset 0x180
+	0x180: 0x3552, 0x181: 0x0012, 0x182: 0x0012, 0x183: 0x3852, 0x184: 0x0012, 0x185: 0x0012,
+	0x186: 0x0012, 0x187: 0x110a, 0x188: 0x3552, 0x189: 0x4752, 0x18a: 0x3b52, 0x18b: 0x3e52,
+	0x18c: 0x4a52, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012,
+	0x192: 0x4152, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012,
+	0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x118a,
+	0x19e: 0x120a, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012,
+	0x1a4: 0x0012, 0x1a5: 0x0012, 0x1a6: 0x0012, 0x1a7: 0x0012, 0x1a8: 0x0012, 0x1a9: 0x0012,
+	0x1aa: 0x0012, 0x1ab: 0x0012, 0x1ac: 0x0012, 0x1ad: 0x0012, 0x1ae: 0x0012, 0x1af: 0x0012,
+	0x1b0: 0x0015, 0x1b1: 0x0015, 0x1b2: 0x0015, 0x1b3: 0x0015, 0x1b4: 0x0015, 0x1b5: 0x0015,
+	0x1b6: 0x0015, 0x1b7: 0x0015, 0x1b8: 0x0015, 0x1b9: 0x0014, 0x1ba: 0x0014, 0x1bb: 0x0014,
+	0x1bc: 0x0014, 0x1bd: 0x0014, 0x1be: 0x0014, 0x1bf: 0x0014,
+	// Block 0x7, offset 0x1c0
+	0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x128d,
+	0x1c6: 0x0024, 0x1c7: 0x0034, 0x1c8: 0x0034, 0x1c9: 0x0034, 0x1ca: 0x0024, 0x1cb: 0x0024,
+	0x1cc: 0x0024, 0x1cd: 0x0034, 0x1ce: 0x0034, 0x1cf: 0x0014, 0x1d0: 0x0024, 0x1d1: 0x0024,
+	0x1d2: 0x0024, 0x1d3: 0x0034, 0x1d4: 0x0034, 0x1d5: 0x0034, 0x1d6: 0x0034, 0x1d7: 0x0024,
+	0x1d8: 0x0034, 0x1d9: 0x0034, 0x1da: 0x0034, 0x1db: 0x0024, 0x1dc: 0x0034, 0x1dd: 0x0034,
+	0x1de: 0x0034, 0x1df: 0x0034, 0x1e0: 0x0034, 0x1e1: 0x0034, 0x1e2: 0x0034, 0x1e3: 0x0024,
+	0x1e4: 0x0024, 0x1e5: 0x0024, 0x1e6: 0x0024, 0x1e7: 0x0024, 0x1e8: 0x0024, 0x1e9: 0x0024,
+	0x1ea: 0x0024, 0x1eb: 0x0024, 0x1ec: 0x0024, 0x1ed: 0x0024, 0x1ee: 0x0024, 0x1ef: 0x0024,
+	0x1f0: 0x0113, 0x1f1: 0x0112, 0x1f2: 0x0113, 0x1f3: 0x0112, 0x1f4: 0x0014, 0x1f5: 0x0004,
+	0x1f6: 0x0113, 0x1f7: 0x0112, 0x1fa: 0x0015, 0x1fb: 0x4d52,
+	0x1fc: 0x5052, 0x1fd: 0x5052, 0x1ff: 0x5353,
+	// Block 0x8, offset 0x200
+	0x204: 0x0004, 0x205: 0x0004,
+	0x206: 0x2a13, 0x207: 0x0054, 0x208: 0x2513, 0x209: 0x2713, 0x20a: 0x2513,
+	0x20c: 0x5653, 0x20e: 0x5953, 0x20f: 0x5c53, 0x210: 0x130a, 0x211: 0x2013,
+	0x212: 0x2013, 0x213: 0x2013, 0x214: 0x2013, 0x215: 0x2013, 0x216: 0x2013, 0x217: 0x2013,
+	0x218: 0x2013, 0x219: 0x2013, 0x21a: 0x2013, 0x21b: 0x2013, 0x21c: 0x2013, 0x21d: 0x2013,
+	0x21e: 0x2013, 0x21f: 0x2013, 0x220: 0x5f53, 0x221: 0x5f53, 0x223: 0x5f53,
+	0x224: 0x5f53, 0x225: 0x5f53, 0x226: 0x5f53, 0x227: 0x5f53, 0x228: 0x5f53, 0x229: 0x5f53,
+	0x22a: 0x5f53, 0x22b: 0x5f53, 0x22c: 0x2a12, 0x22d: 0x2512, 0x22e: 0x2712, 0x22f: 0x2512,
+	0x230: 0x144a, 0x231: 0x2012, 0x232: 0x2012, 0x233: 0x2012, 0x234: 0x2012, 0x235: 0x2012,
+	0x236: 0x2012, 0x237: 0x2012, 0x238: 0x2012, 0x239: 0x2012, 0x23a: 0x2012, 0x23b: 0x2012,
+	0x23c: 0x2012, 0x23d: 0x2012, 0x23e: 0x2012, 0x23f: 0x2012,
+	// Block 0x9, offset 0x240
+	0x240: 0x5f52, 0x241: 0x5f52, 0x242: 0x158a, 0x243: 0x5f52, 0x244: 0x5f52, 0x245: 0x5f52,
+	0x246: 0x5f52, 0x247: 0x5f52, 0x248: 0x5f52, 0x249: 0x5f52, 0x24a: 0x5f52, 0x24b: 0x5f52,
+	0x24c: 0x5652, 0x24d: 0x5952, 0x24e: 0x5c52, 0x24f: 0x1813, 0x250: 0x160a, 0x251: 0x168a,
+	0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x170a, 0x256: 0x178a, 0x257: 0x1812,
+	0x258: 0x0113, 0x259: 0x0112, 0x25a: 0x0113, 0x25b: 0x0112, 0x25c: 0x0113, 0x25d: 0x0112,
+	0x25e: 0x0113, 0x25f: 0x0112, 0x260: 0x0113, 0x261: 0x0112, 0x262: 0x0113, 0x263: 0x0112,
+	0x264: 0x0113, 0x265: 0x0112, 0x266: 0x0113, 0x267: 0x0112, 0x268: 0x0113, 0x269: 0x0112,
+	0x26a: 0x0113, 0x26b: 0x0112, 0x26c: 0x0113, 0x26d: 0x0112, 0x26e: 0x0113, 0x26f: 0x0112,
+	0x270: 0x180a, 0x271: 0x188a, 0x272: 0x0b12, 0x273: 0x5352, 0x274: 0x6253, 0x275: 0x190a,
+	0x277: 0x0f13, 0x278: 0x0f12, 0x279: 0x0b13, 0x27a: 0x0113, 0x27b: 0x0112,
+	0x27c: 0x0012, 0x27d: 0x4d53, 0x27e: 0x5053, 0x27f: 0x5053,
+	// Block 0xa, offset 0x280
+	0x280: 0x6852, 0x281: 0x6852, 0x282: 0x6852, 0x283: 0x6852, 0x284: 0x6852, 0x285: 0x6852,
+	0x286: 0x6852, 0x287: 0x198a, 0x288: 0x0012,
+	0x291: 0x0034,
+	0x292: 0x0024, 0x293: 0x0024, 0x294: 0x0024, 0x295: 0x0024, 0x296: 0x0034, 0x297: 0x0024,
+	0x298: 0x0024, 0x299: 0x0024, 0x29a: 0x0034, 0x29b: 0x0034, 0x29c: 0x0024, 0x29d: 0x0024,
+	0x29e: 0x0024, 0x29f: 0x0024, 0x2a0: 0x0024, 0x2a1: 0x0024, 0x2a2: 0x0034, 0x2a3: 0x0034,
+	0x2a4: 0x0034, 0x2a5: 0x0034, 0x2a6: 0x0034, 0x2a7: 0x0034, 0x2a8: 0x0024, 0x2a9: 0x0024,
+	0x2aa: 0x0034, 0x2ab: 0x0024, 0x2ac: 0x0024, 0x2ad: 0x0034, 0x2ae: 0x0034, 0x2af: 0x0024,
+	0x2b0: 0x0034, 0x2b1: 0x0034, 0x2b2: 0x0034, 0x2b3: 0x0034, 0x2b4: 0x0034, 0x2b5: 0x0034,
+	0x2b6: 0x0034, 0x2b7: 0x0034, 0x2b8: 0x0034, 0x2b9: 0x0034, 0x2ba: 0x0034, 0x2bb: 0x0034,
+	0x2bc: 0x0034, 0x2bd: 0x0034, 0x2bf: 0x0034,
+	// Block 0xb, offset 0x2c0
+	0x2c0: 0x7053, 0x2c1: 0x7053, 0x2c2: 0x7053, 0x2c3: 0x7053, 0x2c4: 0x7053, 0x2c5: 0x7053,
+	0x2c7: 0x7053,
+	0x2cd: 0x7053, 0x2d0: 0x1a6a, 0x2d1: 0x1aea,
+	0x2d2: 0x1b6a, 0x2d3: 0x1bea, 0x2d4: 0x1c6a, 0x2d5: 0x1cea, 0x2d6: 0x1d6a, 0x2d7: 0x1dea,
+	0x2d8: 0x1e6a, 0x2d9: 0x1eea, 0x2da: 0x1f6a, 0x2db: 0x1fea, 0x2dc: 0x206a, 0x2dd: 0x20ea,
+	0x2de: 0x216a, 0x2df: 0x21ea, 0x2e0: 0x226a, 0x2e1: 0x22ea, 0x2e2: 0x236a, 0x2e3: 0x23ea,
+	0x2e4: 0x246a, 0x2e5: 0x24ea, 0x2e6: 0x256a, 0x2e7: 0x25ea, 0x2e8: 0x266a, 0x2e9: 0x26ea,
+	0x2ea: 0x276a, 0x2eb: 0x27ea, 0x2ec: 0x286a, 0x2ed: 0x28ea, 0x2ee: 0x296a, 0x2ef: 0x29ea,
+	0x2f0: 0x2a6a, 0x2f1: 0x2aea, 0x2f2: 0x2b6a, 0x2f3: 0x2bea, 0x2f4: 0x2c6a, 0x2f5: 0x2cea,
+	0x2f6: 0x2d6a, 0x2f7: 0x2dea, 0x2f8: 0x2e6a, 0x2f9: 0x2eea, 0x2fa: 0x2f6a,
+	0x2fc: 0x0014, 0x2fd: 0x2fea, 0x2fe: 0x306a, 0x2ff: 0x30ea,
+	// Block 0xc, offset 0x300
+	0x300: 0x0812, 0x301: 0x0812, 0x302: 0x0812, 0x303: 0x0812, 0x304: 0x0812, 0x305: 0x0812,
+	0x308: 0x0813, 0x309: 0x0813, 0x30a: 0x0813, 0x30b: 0x0813,
+	0x30c: 0x0813, 0x30d: 0x0813, 0x310: 0x3a9a, 0x311: 0x0812,
+	0x312: 0x3b7a, 0x313: 0x0812, 0x314: 0x3cba, 0x315: 0x0812, 0x316: 0x3dfa, 0x317: 0x0812,
+	0x319: 0x0813, 0x31b: 0x0813, 0x31d: 0x0813,
+	0x31f: 0x0813, 0x320: 0x0812, 0x321: 0x0812, 0x322: 0x0812, 0x323: 0x0812,
+	0x324: 0x0812, 0x325: 0x0812, 0x326: 0x0812, 0x327: 0x0812, 0x328: 0x0813, 0x329: 0x0813,
+	0x32a: 0x0813, 0x32b: 0x0813, 0x32c: 0x0813, 0x32d: 0x0813, 0x32e: 0x0813, 0x32f: 0x0813,
+	0x330: 0x8e52, 0x331: 0x8e52, 0x332: 0x9152, 0x333: 0x9152, 0x334: 0x9452, 0x335: 0x9452,
+	0x336: 0x9752, 0x337: 0x9752, 0x338: 0x9a52, 0x339: 0x9a52, 0x33a: 0x9d52, 0x33b: 0x9d52,
+	0x33c: 0x4d52, 0x33d: 0x4d52,
+	// Block 0xd, offset 0x340
+	0x340: 0x3f3a, 0x341: 0x402a, 0x342: 0x411a, 0x343: 0x420a, 0x344: 0x42fa, 0x345: 0x43ea,
+	0x346: 0x44da, 0x347: 0x45ca, 0x348: 0x46b9, 0x349: 0x47a9, 0x34a: 0x4899, 0x34b: 0x4989,
+	0x34c: 0x4a79, 0x34d: 0x4b69, 0x34e: 0x4c59, 0x34f: 0x4d49, 0x350: 0x4e3a, 0x351: 0x4f2a,
+	0x352: 0x501a, 0x353: 0x510a, 0x354: 0x51fa, 0x355: 0x52ea, 0x356: 0x53da, 0x357: 0x54ca,
+	0x358: 0x55b9, 0x359: 0x56a9, 0x35a: 0x5799, 0x35b: 0x5889, 0x35c: 0x5979, 0x35d: 0x5a69,
+	0x35e: 0x5b59, 0x35f: 0x5c49, 0x360: 0x5d3a, 0x361: 0x5e2a, 0x362: 0x5f1a, 0x363: 0x600a,
+	0x364: 0x60fa, 0x365: 0x61ea, 0x366: 0x62da, 0x367: 0x63ca, 0x368: 0x64b9, 0x369: 0x65a9,
+	0x36a: 0x6699, 0x36b: 0x6789, 0x36c: 0x6879, 0x36d: 0x6969, 0x36e: 0x6a59, 0x36f: 0x6b49,
+	0x370: 0x0812, 0x371: 0x0812, 0x372: 0x6c3a, 0x373: 0x6d4a, 0x374: 0x6e1a,
+	0x376: 0x6efa, 0x377: 0x6fda, 0x378: 0x0813, 0x379: 0x0813, 0x37a: 0x8e53, 0x37b: 0x8e53,
+	0x37c: 0x7119, 0x37d: 0x0004, 0x37e: 0x71ea, 0x37f: 0x0004,
+	// Block 0xe, offset 0x380
+	0x380: 0x0004, 0x381: 0x0004, 0x382: 0x726a, 0x383: 0x737a, 0x384: 0x744a,
+	0x386: 0x752a, 0x387: 0x760a, 0x388: 0x9153, 0x389: 0x9153, 0x38a: 0x9453, 0x38b: 0x9453,
+	0x38c: 0x7749, 0x38d: 0x0004, 0x38e: 0x0004, 0x38f: 0x0004, 0x390: 0x0812, 0x391: 0x0812,
+	0x392: 0x781a, 0x393: 0x795a, 0x396: 0x7a9a, 0x397: 0x7b7a,
+	0x398: 0x0813, 0x399: 0x0813, 0x39a: 0x9753, 0x39b: 0x9753, 0x39d: 0x0004,
+	0x39e: 0x0004, 0x39f: 0x0004, 0x3a0: 0x0812, 0x3a1: 0x0812, 0x3a2: 0x7cba, 0x3a3: 0x7dfa,
+	0x3a4: 0x7f3a, 0x3a5: 0x0912, 0x3a6: 0x801a, 0x3a7: 0x80fa, 0x3a8: 0x0813, 0x3a9: 0x0813,
+	0x3aa: 0x9d53, 0x3ab: 0x9d53, 0x3ac: 0x0913, 0x3ad: 0x0004, 0x3ae: 0x0004, 0x3af: 0x0004,
+	0x3b2: 0x823a, 0x3b3: 0x834a, 0x3b4: 0x841a,
+	0x3b6: 0x84fa, 0x3b7: 0x85da, 0x3b8: 0x9a53, 0x3b9: 0x9a53, 0x3ba: 0x4d53, 0x3bb: 0x4d53,
+	0x3bc: 0x8719, 0x3bd: 0x0004, 0x3be: 0x0004,
+	// Block 0xf, offset 0x3c0
+	0x3c2: 0x0013,
+	0x3c7: 0x0013, 0x3ca: 0x0012, 0x3cb: 0x0013,
+	0x3cc: 0x0013, 0x3cd: 0x0013, 0x3ce: 0x0012, 0x3cf: 0x0012, 0x3d0: 0x0013, 0x3d1: 0x0013,
+	0x3d2: 0x0013, 0x3d3: 0x0012, 0x3d5: 0x0013,
+	0x3d9: 0x0013, 0x3da: 0x0013, 0x3db: 0x0013, 0x3dc: 0x0013, 0x3dd: 0x0013,
+	0x3e4: 0x0013, 0x3e6: 0x87eb, 0x3e8: 0x0013,
+	0x3ea: 0x884b, 0x3eb: 0x888b, 0x3ec: 0x0013, 0x3ed: 0x0013, 0x3ef: 0x0012,
+	0x3f0: 0x0013, 0x3f1: 0x0013, 0x3f2: 0xa053, 0x3f3: 0x0013, 0x3f4: 0x0012, 0x3f5: 0x0010,
+	0x3f6: 0x0010, 0x3f7: 0x0010, 0x3f8: 0x0010, 0x3f9: 0x0012,
+	0x3fc: 0x0012, 0x3fd: 0x0012, 0x3fe: 0x0013, 0x3ff: 0x0013,
+	// Block 0x10, offset 0x400
+	0x400: 0x1a13, 0x401: 0x1a13, 0x402: 0x1e13, 0x403: 0x1e13, 0x404: 0x1a13, 0x405: 0x1a13,
+	0x406: 0x2613, 0x407: 0x2613, 0x408: 0x2a13, 0x409: 0x2a13, 0x40a: 0x2e13, 0x40b: 0x2e13,
+	0x40c: 0x2a13, 0x40d: 0x2a13, 0x40e: 0x2613, 0x40f: 0x2613, 0x410: 0xa352, 0x411: 0xa352,
+	0x412: 0xa652, 0x413: 0xa652, 0x414: 0xa952, 0x415: 0xa952, 0x416: 0xa652, 0x417: 0xa652,
+	0x418: 0xa352, 0x419: 0xa352, 0x41a: 0x1a12, 0x41b: 0x1a12, 0x41c: 0x1e12, 0x41d: 0x1e12,
+	0x41e: 0x1a12, 0x41f: 0x1a12, 0x420: 0x2612, 0x421: 0x2612, 0x422: 0x2a12, 0x423: 0x2a12,
+	0x424: 0x2e12, 0x425: 0x2e12, 0x426: 0x2a12, 0x427: 0x2a12, 0x428: 0x2612, 0x429: 0x2612,
+	// Block 0x11, offset 0x440
+	0x440: 0x6552, 0x441: 0x6552, 0x442: 0x6552, 0x443: 0x6552, 0x444: 0x6552, 0x445: 0x6552,
+	0x446: 0x6552, 0x447: 0x6552, 0x448: 0x6552, 0x449: 0x6552, 0x44a: 0x6552, 0x44b: 0x6552,
+	0x44c: 0x6552, 0x44d: 0x6552, 0x44e: 0x6552, 0x44f: 0x6552, 0x450: 0xac52, 0x451: 0xac52,
+	0x452: 0xac52, 0x453: 0xac52, 0x454: 0xac52, 0x455: 0xac52, 0x456: 0xac52, 0x457: 0xac52,
+	0x458: 0xac52, 0x459: 0xac52, 0x45a: 0xac52, 0x45b: 0xac52, 0x45c: 0xac52, 0x45d: 0xac52,
+	0x45e: 0xac52, 0x460: 0x0113, 0x461: 0x0112, 0x462: 0x88eb, 0x463: 0x8b53,
+	0x464: 0x894b, 0x465: 0x89aa, 0x466: 0x8a0a, 0x467: 0x0f13, 0x468: 0x0f12, 0x469: 0x0313,
+	0x46a: 0x0312, 0x46b: 0x0713, 0x46c: 0x0712, 0x46d: 0x8a6b, 0x46e: 0x8acb, 0x46f: 0x8b2b,
+	0x470: 0x8b8b, 0x471: 0x0012, 0x472: 0x0113, 0x473: 0x0112, 0x474: 0x0012, 0x475: 0x0313,
+	0x476: 0x0312, 0x477: 0x0012, 0x478: 0x0012, 0x479: 0x0012, 0x47a: 0x0012, 0x47b: 0x0012,
+	0x47c: 0x0015, 0x47d: 0x0015, 0x47e: 0x8beb, 0x47f: 0x8c4b,
+	// Block 0x12, offset 0x480
+	0x480: 0x0113, 0x481: 0x0112, 0x482: 0x0113, 0x483: 0x0112, 0x484: 0x0113, 0x485: 0x0112,
+	0x486: 0x0113, 0x487: 0x0112, 0x488: 0x0014, 0x489: 0x0014, 0x48a: 0x0014, 0x48b: 0x0713,
+	0x48c: 0x0712, 0x48d: 0x8cab, 0x48e: 0x0012, 0x48f: 0x0010, 0x490: 0x0113, 0x491: 0x0112,
+	0x492: 0x0113, 0x493: 0x0112, 0x494: 0x0012, 0x495: 0x0012, 0x496: 0x0113, 0x497: 0x0112,
+	0x498: 0x0113, 0x499: 0x0112, 0x49a: 0x0113, 0x49b: 0x0112, 0x49c: 0x0113, 0x49d: 0x0112,
+	0x49e: 0x0113, 0x49f: 0x0112, 0x4a0: 0x0113, 0x4a1: 0x0112, 0x4a2: 0x0113, 0x4a3: 0x0112,
+	0x4a4: 0x0113, 0x4a5: 0x0112, 0x4a6: 0x0113, 0x4a7: 0x0112, 0x4a8: 0x0113, 0x4a9: 0x0112,
+	0x4aa: 0x8d0b, 0x4ab: 0x8d6b, 0x4ac: 0x8dcb, 0x4ad: 0x8e2b, 0x4ae: 0x8e8b, 0x4af: 0x0012,
+	0x4b0: 0x8eeb, 0x4b1: 0x8f4b, 0x4b2: 0x8fab, 0x4b3: 0xaf53, 0x4b4: 0x0113, 0x4b5: 0x0112,
+	0x4b6: 0x0113, 0x4b7: 0x0112, 0x4b8: 0x0113, 0x4b9: 0x0112,
+	// Block 0x13, offset 0x4c0
+	0x4c0: 0x900a, 0x4c1: 0x908a, 0x4c2: 0x910a, 0x4c3: 0x918a, 0x4c4: 0x923a, 0x4c5: 0x92ea,
+	0x4c6: 0x936a,
+	0x4d3: 0x93ea, 0x4d4: 0x94ca, 0x4d5: 0x95aa, 0x4d6: 0x968a, 0x4d7: 0x976a,
+	0x4dd: 0x0010,
+	0x4de: 0x0034, 0x4df: 0x0010, 0x4e0: 0x0010, 0x4e1: 0x0010, 0x4e2: 0x0010, 0x4e3: 0x0010,
+	0x4e4: 0x0010, 0x4e5: 0x0010, 0x4e6: 0x0010, 0x4e7: 0x0010, 0x4e8: 0x0010,
+	0x4ea: 0x0010, 0x4eb: 0x0010, 0x4ec: 0x0010, 0x4ed: 0x0010, 0x4ee: 0x0010, 0x4ef: 0x0010,
+	0x4f0: 0x0010, 0x4f1: 0x0010, 0x4f2: 0x0010, 0x4f3: 0x0010, 0x4f4: 0x0010, 0x4f5: 0x0010,
+	0x4f6: 0x0010, 0x4f8: 0x0010, 0x4f9: 0x0010, 0x4fa: 0x0010, 0x4fb: 0x0010,
+	0x4fc: 0x0010, 0x4fe: 0x0010,
+	// Block 0x14, offset 0x500
+	0x500: 0x2213, 0x501: 0x2213, 0x502: 0x2613, 0x503: 0x2613, 0x504: 0x2213, 0x505: 0x2213,
+	0x506: 0x2e13, 0x507: 0x2e13, 0x508: 0x2213, 0x509: 0x2213, 0x50a: 0x2613, 0x50b: 0x2613,
+	0x50c: 0x2213, 0x50d: 0x2213, 0x50e: 0x3e13, 0x50f: 0x3e13, 0x510: 0x2213, 0x511: 0x2213,
+	0x512: 0x2613, 0x513: 0x2613, 0x514: 0x2213, 0x515: 0x2213, 0x516: 0x2e13, 0x517: 0x2e13,
+	0x518: 0x2213, 0x519: 0x2213, 0x51a: 0x2613, 0x51b: 0x2613, 0x51c: 0x2213, 0x51d: 0x2213,
+	0x51e: 0xb853, 0x51f: 0xb853, 0x520: 0xbb53, 0x521: 0xbb53, 0x522: 0x2212, 0x523: 0x2212,
+	0x524: 0x2612, 0x525: 0x2612, 0x526: 0x2212, 0x527: 0x2212, 0x528: 0x2e12, 0x529: 0x2e12,
+	0x52a: 0x2212, 0x52b: 0x2212, 0x52c: 0x2612, 0x52d: 0x2612, 0x52e: 0x2212, 0x52f: 0x2212,
+	0x530: 0x3e12, 0x531: 0x3e12, 0x532: 0x2212, 0x533: 0x2212, 0x534: 0x2612, 0x535: 0x2612,
+	0x536: 0x2212, 0x537: 0x2212, 0x538: 0x2e12, 0x539: 0x2e12, 0x53a: 0x2212, 0x53b: 0x2212,
+	0x53c: 0x2612, 0x53d: 0x2612, 0x53e: 0x2212, 0x53f: 0x2212,
+	// Block 0x15, offset 0x540
+	0x542: 0x0010,
+	0x547: 0x0010, 0x549: 0x0010, 0x54b: 0x0010,
+	0x54d: 0x0010, 0x54e: 0x0010, 0x54f: 0x0010, 0x551: 0x0010,
+	0x552: 0x0010, 0x554: 0x0010, 0x557: 0x0010,
+	0x559: 0x0010, 0x55b: 0x0010, 0x55d: 0x0010,
+	0x55f: 0x0010, 0x561: 0x0010, 0x562: 0x0010,
+	0x564: 0x0010, 0x567: 0x0010, 0x568: 0x0010, 0x569: 0x0010,
+	0x56a: 0x0010, 0x56c: 0x0010, 0x56d: 0x0010, 0x56e: 0x0010, 0x56f: 0x0010,
+	0x570: 0x0010, 0x571: 0x0010, 0x572: 0x0010, 0x574: 0x0010, 0x575: 0x0010,
+	0x576: 0x0010, 0x577: 0x0010, 0x579: 0x0010, 0x57a: 0x0010, 0x57b: 0x0010,
+	0x57c: 0x0010, 0x57e: 0x0010,
+}
+
+// caseIndex: 25 blocks, 1600 entries, 3200 bytes
+// Block 0 is the zero block.
+var caseIndex = [1600]uint16{
+	// Block 0x0, offset 0x0
+	// Block 0x1, offset 0x40
+	// Block 0x2, offset 0x80
+	// Block 0x3, offset 0xc0
+	0xc2: 0x14, 0xc3: 0x15, 0xc4: 0x16, 0xc5: 0x17, 0xc6: 0x01, 0xc7: 0x02,
+	0xc8: 0x18, 0xc9: 0x03, 0xca: 0x04, 0xcb: 0x19, 0xcc: 0x1a, 0xcd: 0x05, 0xce: 0x06, 0xcf: 0x07,
+	0xd0: 0x1b, 0xd1: 0x1c, 0xd2: 0x1d, 0xd3: 0x1e, 0xd4: 0x1f, 0xd5: 0x20, 0xd6: 0x08, 0xd7: 0x21,
+	0xd8: 0x22, 0xd9: 0x23, 0xda: 0x24, 0xdb: 0x25, 0xdc: 0x26, 0xdd: 0x27, 0xde: 0x28, 0xdf: 0x29,
+	0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,
+	0xea: 0x06, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x08, 0xef: 0x09,
+	0xf0: 0x14, 0xf3: 0x16,
+	// Block 0x4, offset 0x100
+	0x120: 0x2a, 0x121: 0x2b, 0x122: 0x2c, 0x123: 0x2d, 0x124: 0x2e, 0x125: 0x2f, 0x126: 0x30, 0x127: 0x31,
+	0x128: 0x32, 0x129: 0x33, 0x12a: 0x34, 0x12b: 0x35, 0x12c: 0x36, 0x12d: 0x37, 0x12e: 0x38, 0x12f: 0x39,
+	0x130: 0x3a, 0x131: 0x3b, 0x132: 0x3c, 0x133: 0x3d, 0x134: 0x3e, 0x135: 0x3f, 0x136: 0x40, 0x137: 0x41,
+	0x138: 0x42, 0x139: 0x43, 0x13a: 0x44, 0x13b: 0x45, 0x13c: 0x46, 0x13d: 0x47, 0x13e: 0x48, 0x13f: 0x49,
+	// Block 0x5, offset 0x140
+	0x140: 0x4a, 0x141: 0x4b, 0x142: 0x4c, 0x143: 0x09, 0x144: 0x24, 0x145: 0x24, 0x146: 0x24, 0x147: 0x24,
+	0x148: 0x24, 0x149: 0x4d, 0x14a: 0x4e, 0x14b: 0x4f, 0x14c: 0x50, 0x14d: 0x51, 0x14e: 0x52, 0x14f: 0x53,
+	0x150: 0x54, 0x151: 0x24, 0x152: 0x24, 0x153: 0x24, 0x154: 0x24, 0x155: 0x24, 0x156: 0x24, 0x157: 0x24,
+	0x158: 0x24, 0x159: 0x55, 0x15a: 0x56, 0x15b: 0x57, 0x15c: 0x58, 0x15d: 0x59, 0x15e: 0x5a, 0x15f: 0x5b,
+	0x160: 0x5c, 0x161: 0x5d, 0x162: 0x5e, 0x163: 0x5f, 0x164: 0x60, 0x165: 0x61, 0x167: 0x62,
+	0x168: 0x63, 0x169: 0x64, 0x16a: 0x65, 0x16c: 0x66, 0x16d: 0x67, 0x16e: 0x68, 0x16f: 0x69,
+	0x170: 0x6a, 0x171: 0x6b, 0x172: 0x6c, 0x173: 0x6d, 0x174: 0x6e, 0x175: 0x6f, 0x176: 0x70, 0x177: 0x71,
+	0x178: 0x72, 0x179: 0x72, 0x17a: 0x73, 0x17b: 0x72, 0x17c: 0x74, 0x17d: 0x0a, 0x17e: 0x0b, 0x17f: 0x0c,
+	// Block 0x6, offset 0x180
+	0x180: 0x75, 0x181: 0x76, 0x182: 0x77, 0x183: 0x78, 0x184: 0x0d, 0x185: 0x79, 0x186: 0x7a,
+	0x192: 0x7b, 0x193: 0x0e,
+	0x1b0: 0x7c, 0x1b1: 0x0f, 0x1b2: 0x72, 0x1b3: 0x7d, 0x1b4: 0x7e, 0x1b5: 0x7f, 0x1b6: 0x80, 0x1b7: 0x81,
+	0x1b8: 0x82,
+	// Block 0x7, offset 0x1c0
+	0x1c0: 0x83, 0x1c2: 0x84, 0x1c3: 0x85, 0x1c4: 0x86, 0x1c5: 0x24, 0x1c6: 0x87,
+	// Block 0x8, offset 0x200
+	0x200: 0x88, 0x201: 0x24, 0x202: 0x24, 0x203: 0x24, 0x204: 0x24, 0x205: 0x24, 0x206: 0x24, 0x207: 0x24,
+	0x208: 0x24, 0x209: 0x24, 0x20a: 0x24, 0x20b: 0x24, 0x20c: 0x24, 0x20d: 0x24, 0x20e: 0x24, 0x20f: 0x24,
+	0x210: 0x24, 0x211: 0x24, 0x212: 0x89, 0x213: 0x8a, 0x214: 0x24, 0x215: 0x24, 0x216: 0x24, 0x217: 0x24,
+	0x218: 0x8b, 0x219: 0x8c, 0x21a: 0x8d, 0x21b: 0x8e, 0x21c: 0x8f, 0x21d: 0x90, 0x21e: 0x10, 0x21f: 0x91,
+	0x220: 0x92, 0x221: 0x93, 0x222: 0x24, 0x223: 0x94, 0x224: 0x95, 0x225: 0x96, 0x226: 0x97, 0x227: 0x98,
+	0x228: 0x99, 0x229: 0x9a, 0x22a: 0x9b, 0x22b: 0x9c, 0x22c: 0x9d, 0x22d: 0x9e, 0x22e: 0x9f, 0x22f: 0xa0,
+	0x230: 0x24, 0x231: 0x24, 0x232: 0x24, 0x233: 0x24, 0x234: 0x24, 0x235: 0x24, 0x236: 0x24, 0x237: 0x24,
+	0x238: 0x24, 0x239: 0x24, 0x23a: 0x24, 0x23b: 0x24, 0x23c: 0x24, 0x23d: 0x24, 0x23e: 0x24, 0x23f: 0x24,
+	// Block 0x9, offset 0x240
+	0x240: 0x24, 0x241: 0x24, 0x242: 0x24, 0x243: 0x24, 0x244: 0x24, 0x245: 0x24, 0x246: 0x24, 0x247: 0x24,
+	0x248: 0x24, 0x249: 0x24, 0x24a: 0x24, 0x24b: 0x24, 0x24c: 0x24, 0x24d: 0x24, 0x24e: 0x24, 0x24f: 0x24,
+	0x250: 0x24, 0x251: 0x24, 0x252: 0x24, 0x253: 0x24, 0x254: 0x24, 0x255: 0x24, 0x256: 0x24, 0x257: 0x24,
+	0x258: 0x24, 0x259: 0x24, 0x25a: 0x24, 0x25b: 0x24, 0x25c: 0x24, 0x25d: 0x24, 0x25e: 0x24, 0x25f: 0x24,
+	0x260: 0x24, 0x261: 0x24, 0x262: 0x24, 0x263: 0x24, 0x264: 0x24, 0x265: 0x24, 0x266: 0x24, 0x267: 0x24,
+	0x268: 0x24, 0x269: 0x24, 0x26a: 0x24, 0x26b: 0x24, 0x26c: 0x24, 0x26d: 0x24, 0x26e: 0x24, 0x26f: 0x24,
+	0x270: 0x24, 0x271: 0x24, 0x272: 0x24, 0x273: 0x24, 0x274: 0x24, 0x275: 0x24, 0x276: 0x24, 0x277: 0x24,
+	0x278: 0x24, 0x279: 0x24, 0x27a: 0x24, 0x27b: 0x24, 0x27c: 0x24, 0x27d: 0x24, 0x27e: 0x24, 0x27f: 0x24,
+	// Block 0xa, offset 0x280
+	0x280: 0x24, 0x281: 0x24, 0x282: 0x24, 0x283: 0x24, 0x284: 0x24, 0x285: 0x24, 0x286: 0x24, 0x287: 0x24,
+	0x288: 0x24, 0x289: 0x24, 0x28a: 0x24, 0x28b: 0x24, 0x28c: 0x24, 0x28d: 0x24, 0x28e: 0x24, 0x28f: 0x24,
+	0x290: 0x24, 0x291: 0x24, 0x292: 0x24, 0x293: 0x24, 0x294: 0x24, 0x295: 0x24, 0x296: 0x24, 0x297: 0x24,
+	0x298: 0x24, 0x299: 0x24, 0x29a: 0x24, 0x29b: 0x24, 0x29c: 0x24, 0x29d: 0x24, 0x29e: 0xa1, 0x29f: 0xa2,
+	// Block 0xb, offset 0x2c0
+	0x2ec: 0x11, 0x2ed: 0xa3, 0x2ee: 0xa4, 0x2ef: 0xa5,
+	0x2f0: 0x24, 0x2f1: 0x24, 0x2f2: 0x24, 0x2f3: 0x24, 0x2f4: 0xa6, 0x2f5: 0xa7, 0x2f6: 0xa8, 0x2f7: 0xa9,
+	0x2f8: 0xaa, 0x2f9: 0xab, 0x2fa: 0x24, 0x2fb: 0xac, 0x2fc: 0xad, 0x2fd: 0xae, 0x2fe: 0xaf, 0x2ff: 0xb0,
+	// Block 0xc, offset 0x300
+	0x300: 0xb1, 0x301: 0xb2, 0x302: 0x24, 0x303: 0xb3, 0x305: 0xb4, 0x307: 0xb5,
+	0x30a: 0xb6, 0x30b: 0xb7, 0x30c: 0xb8, 0x30d: 0xb9, 0x30e: 0xba, 0x30f: 0xbb,
+	0x310: 0xbc, 0x311: 0xbd, 0x312: 0xbe, 0x313: 0xbf, 0x314: 0xc0, 0x315: 0xc1,
+	0x318: 0x24, 0x319: 0x24, 0x31a: 0x24, 0x31b: 0x24, 0x31c: 0xc2, 0x31d: 0xc3,
+	0x320: 0xc4, 0x321: 0xc5, 0x322: 0xc6, 0x323: 0xc7, 0x324: 0xc8, 0x326: 0xc9,
+	0x328: 0xca, 0x329: 0xcb, 0x32a: 0xcc, 0x32b: 0xcd, 0x32c: 0x5f, 0x32d: 0xce, 0x32e: 0xcf,
+	0x330: 0x24, 0x331: 0xd0, 0x332: 0xd1, 0x333: 0xd2, 0x334: 0xd3,
+	0x33c: 0xd4, 0x33d: 0xd5,
+	// Block 0xd, offset 0x340
+	0x340: 0xd6, 0x341: 0xd7, 0x342: 0xd8, 0x343: 0xd9, 0x344: 0xda, 0x345: 0xdb, 0x346: 0xdc, 0x347: 0xdd,
+	0x348: 0xde, 0x34a: 0xdf, 0x34b: 0xe0, 0x34c: 0xe1, 0x34d: 0xe2,
+	0x350: 0xe3, 0x351: 0xe4, 0x352: 0xe5, 0x353: 0xe6, 0x356: 0xe7, 0x357: 0xe8,
+	0x358: 0xe9, 0x359: 0xea, 0x35a: 0xeb, 0x35b: 0xec, 0x35c: 0xed,
+	0x360: 0xee, 0x362: 0xef, 0x363: 0xf0,
+	0x368: 0xf1, 0x369: 0xf2, 0x36a: 0xf3, 0x36b: 0xf4,
+	0x370: 0xf5, 0x371: 0xf6, 0x372: 0xf7, 0x374: 0xf8, 0x375: 0xf9, 0x376: 0xfa,
+	0x37b: 0xfb,
+	// Block 0xe, offset 0x380
+	0x380: 0x24, 0x381: 0x24, 0x382: 0x24, 0x383: 0x24, 0x384: 0x24, 0x385: 0x24, 0x386: 0x24, 0x387: 0x24,
+	0x388: 0x24, 0x389: 0x24, 0x38a: 0x24, 0x38b: 0x24, 0x38c: 0x24, 0x38d: 0x24, 0x38e: 0xfc,
+	0x390: 0x24, 0x391: 0xfd, 0x392: 0x24, 0x393: 0x24, 0x394: 0x24, 0x395: 0xfe,
+	// Block 0xf, offset 0x3c0
+	0x3c0: 0x24, 0x3c1: 0x24, 0x3c2: 0x24, 0x3c3: 0x24, 0x3c4: 0x24, 0x3c5: 0x24, 0x3c6: 0x24, 0x3c7: 0x24,
+	0x3c8: 0x24, 0x3c9: 0x24, 0x3ca: 0x24, 0x3cb: 0x24, 0x3cc: 0x24, 0x3cd: 0x24, 0x3ce: 0x24, 0x3cf: 0x24,
+	0x3d0: 0xfd,
+	// Block 0x10, offset 0x400
+	0x410: 0x24, 0x411: 0x24, 0x412: 0x24, 0x413: 0x24, 0x414: 0x24, 0x415: 0x24, 0x416: 0x24, 0x417: 0x24,
+	0x418: 0x24, 0x419: 0xff,
+	// Block 0x11, offset 0x440
+	0x460: 0x24, 0x461: 0x24, 0x462: 0x24, 0x463: 0x24, 0x464: 0x24, 0x465: 0x24, 0x466: 0x24, 0x467: 0x24,
+	0x468: 0xf4, 0x469: 0x100, 0x46b: 0x101, 0x46c: 0x102, 0x46d: 0x103, 0x46e: 0x104,
+	0x479: 0x105, 0x47c: 0x24, 0x47d: 0x106, 0x47e: 0x107, 0x47f: 0x108,
+	// Block 0x12, offset 0x480
+	0x4b0: 0x24, 0x4b1: 0x109, 0x4b2: 0x10a,
+	// Block 0x13, offset 0x4c0
+	0x4c5: 0x10b, 0x4c6: 0x10c,
+	0x4c9: 0x10d,
+	0x4d0: 0x10e, 0x4d1: 0x10f, 0x4d2: 0x110, 0x4d3: 0x111, 0x4d4: 0x112, 0x4d5: 0x113, 0x4d6: 0x114, 0x4d7: 0x115,
+	0x4d8: 0x116, 0x4d9: 0x117, 0x4da: 0x118, 0x4db: 0x119, 0x4dc: 0x11a, 0x4dd: 0x11b, 0x4de: 0x11c, 0x4df: 0x11d,
+	0x4e8: 0x11e, 0x4e9: 0x11f, 0x4ea: 0x120,
+	// Block 0x14, offset 0x500
+	0x500: 0x121,
+	0x520: 0x24, 0x521: 0x24, 0x522: 0x24, 0x523: 0x122, 0x524: 0x12, 0x525: 0x123,
+	0x538: 0x124, 0x539: 0x13, 0x53a: 0x125,
+	// Block 0x15, offset 0x540
+	0x544: 0x126, 0x545: 0x127, 0x546: 0x128,
+	0x54f: 0x129,
+	// Block 0x16, offset 0x580
+	0x590: 0x0a, 0x591: 0x0b, 0x592: 0x0c, 0x593: 0x0d, 0x594: 0x0e, 0x596: 0x0f,
+	0x59b: 0x10, 0x59d: 0x11, 0x59e: 0x12, 0x59f: 0x13,
+	// Block 0x17, offset 0x5c0
+	0x5c0: 0x12a, 0x5c1: 0x12b, 0x5c4: 0x12b, 0x5c5: 0x12b, 0x5c6: 0x12b, 0x5c7: 0x12c,
+	// Block 0x18, offset 0x600
+	0x620: 0x15,
+}
+
+// sparseOffsets: 282 entries, 564 bytes
+var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x35, 0x38, 0x3c, 0x3f, 0x43, 0x4d, 0x4f, 0x57, 0x5e, 0x63, 0x71, 0x72, 0x80, 0x8f, 0x99, 0x9c, 0xa3, 0xab, 0xae, 0xb0, 0xbf, 0xc5, 0xd3, 0xde, 0xeb, 0xf6, 0x102, 0x10c, 0x118, 0x123, 0x12f, 0x13b, 0x143, 0x14c, 0x156, 0x161, 0x16d, 0x174, 0x17f, 0x184, 0x18c, 0x18f, 0x194, 0x198, 0x19c, 0x1a3, 0x1ac, 0x1b4, 0x1b5, 0x1be, 0x1c5, 0x1cd, 0x1d3, 0x1d8, 0x1dc, 0x1df, 0x1e1, 0x1e4, 0x1e9, 0x1ea, 0x1ec, 0x1ee, 0x1f0, 0x1f7, 0x1fc, 0x200, 0x209, 0x20c, 0x20f, 0x215, 0x216, 0x221, 0x222, 0x223, 0x228, 0x235, 0x23d, 0x245, 0x24e, 0x257, 0x260, 0x265, 0x268, 0x273, 0x280, 0x282, 0x289, 0x28b, 0x297, 0x298, 0x2a3, 0x2ab, 0x2b3, 0x2b9, 0x2ba, 0x2c8, 0x2cd, 0x2d0, 0x2d5, 0x2d9, 0x2df, 0x2e4, 0x2e7, 0x2ec, 0x2f1, 0x2f2, 0x2f8, 0x2fa, 0x2fb, 0x2fd, 0x2ff, 0x302, 0x303, 0x305, 0x308, 0x30e, 0x312, 0x314, 0x319, 0x320, 0x324, 0x32d, 0x32e, 0x337, 0x33b, 0x340, 0x348, 0x34e, 0x354, 0x35e, 0x363, 0x36c, 0x372, 0x379, 0x37d, 0x385, 0x387, 0x389, 0x38c, 0x38e, 0x390, 0x391, 0x392, 0x394, 0x396, 0x39c, 0x3a1, 0x3a3, 0x3a9, 0x3ac, 0x3ae, 0x3b4, 0x3b9, 0x3bb, 0x3bc, 0x3bd, 0x3be, 0x3c0, 0x3c2, 0x3c4, 0x3c7, 0x3c9, 0x3cc, 0x3d4, 0x3d7, 0x3db, 0x3e3, 0x3e5, 0x3e6, 0x3e7, 0x3e9, 0x3ef, 0x3f1, 0x3f2, 0x3f4, 0x3f6, 0x3f8, 0x405, 0x406, 0x407, 0x40b, 0x40d, 0x40e, 0x40f, 0x410, 0x411, 0x414, 0x417, 0x41d, 0x421, 0x425, 0x42b, 0x42e, 0x435, 0x439, 0x43d, 0x444, 0x44d, 0x453, 0x459, 0x463, 0x46d, 0x46f, 0x477, 0x47d, 0x483, 0x489, 0x48c, 0x492, 0x495, 0x49d, 0x49e, 0x4a5, 0x4a9, 0x4aa, 0x4ad, 0x4b5, 0x4bb, 0x4c2, 0x4c3, 0x4c9, 0x4cc, 0x4d4, 0x4db, 0x4e5, 0x4ed, 0x4f0, 0x4f1, 0x4f2, 0x4f3, 0x4f4, 0x4f6, 0x4f8, 0x4fa, 0x4fe, 0x4ff, 0x501, 0x503, 0x504, 0x505, 0x507, 0x50c, 0x511, 0x515, 0x516, 0x519, 0x51d, 0x528, 0x52c, 0x534, 0x539, 0x53d, 0x540, 0x544, 0x547, 0x54a, 0x54f, 0x553, 0x557, 0x55b, 0x55f, 0x561, 0x563, 0x566, 0x56b, 0x56d, 0x572, 0x57b, 0x580, 0x581, 0x584, 0x585, 0x586, 0x588, 0x589, 0x58a}
+
+// sparseValues: 1418 entries, 5672 bytes
+var sparseValues = [1418]valueRange{
+	// Block 0x0, offset 0x0
+	{value: 0x0004, lo: 0xa8, hi: 0xa8},
+	{value: 0x0012, lo: 0xaa, hi: 0xaa},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0004, lo: 0xaf, hi: 0xaf},
+	{value: 0x0004, lo: 0xb4, hi: 0xb4},
+	{value: 0x001a, lo: 0xb5, hi: 0xb5},
+	{value: 0x0054, lo: 0xb7, hi: 0xb7},
+	{value: 0x0004, lo: 0xb8, hi: 0xb8},
+	{value: 0x0012, lo: 0xba, hi: 0xba},
+	// Block 0x1, offset 0x9
+	{value: 0x2013, lo: 0x80, hi: 0x96},
+	{value: 0x2013, lo: 0x98, hi: 0x9e},
+	{value: 0x009a, lo: 0x9f, hi: 0x9f},
+	{value: 0x2012, lo: 0xa0, hi: 0xb6},
+	{value: 0x2012, lo: 0xb8, hi: 0xbe},
+	{value: 0x0252, lo: 0xbf, hi: 0xbf},
+	// Block 0x2, offset 0xf
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x011b, lo: 0xb0, hi: 0xb0},
+	{value: 0x019a, lo: 0xb1, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xb7},
+	{value: 0x0012, lo: 0xb8, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x0316, lo: 0xbd, hi: 0xbe},
+	{value: 0x0553, lo: 0xbf, hi: 0xbf},
+	// Block 0x3, offset 0x18
+	{value: 0x0552, lo: 0x80, hi: 0x80},
+	{value: 0x0316, lo: 0x81, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0316, lo: 0x85, hi: 0x86},
+	{value: 0x0f16, lo: 0x87, hi: 0x88},
+	{value: 0x01da, lo: 0x89, hi: 0x89},
+	{value: 0x0117, lo: 0x8a, hi: 0xb7},
+	{value: 0x0253, lo: 0xb8, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x0316, lo: 0xbd, hi: 0xbe},
+	{value: 0x028a, lo: 0xbf, hi: 0xbf},
+	// Block 0x4, offset 0x24
+	{value: 0x0117, lo: 0x80, hi: 0x9f},
+	{value: 0x2f53, lo: 0xa0, hi: 0xa0},
+	{value: 0x0012, lo: 0xa1, hi: 0xa1},
+	{value: 0x0117, lo: 0xa2, hi: 0xb3},
+	{value: 0x0012, lo: 0xb4, hi: 0xb9},
+	{value: 0x090b, lo: 0xba, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x2953, lo: 0xbd, hi: 0xbd},
+	{value: 0x098b, lo: 0xbe, hi: 0xbe},
+	{value: 0x0a0a, lo: 0xbf, hi: 0xbf},
+	// Block 0x5, offset 0x2e
+	{value: 0x0015, lo: 0x80, hi: 0x81},
+	{value: 0x0014, lo: 0x82, hi: 0x97},
+	{value: 0x0004, lo: 0x98, hi: 0x9d},
+	{value: 0x0014, lo: 0x9e, hi: 0x9f},
+	{value: 0x0015, lo: 0xa0, hi: 0xa4},
+	{value: 0x0004, lo: 0xa5, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xbf},
+	// Block 0x6, offset 0x35
+	{value: 0x0024, lo: 0x80, hi: 0x94},
+	{value: 0x0034, lo: 0x95, hi: 0xbc},
+	{value: 0x0024, lo: 0xbd, hi: 0xbf},
+	// Block 0x7, offset 0x38
+	{value: 0x6553, lo: 0x80, hi: 0x8f},
+	{value: 0x2013, lo: 0x90, hi: 0x9f},
+	{value: 0x5f53, lo: 0xa0, hi: 0xaf},
+	{value: 0x2012, lo: 0xb0, hi: 0xbf},
+	// Block 0x8, offset 0x3c
+	{value: 0x5f52, lo: 0x80, hi: 0x8f},
+	{value: 0x6552, lo: 0x90, hi: 0x9f},
+	{value: 0x0117, lo: 0xa0, hi: 0xbf},
+	// Block 0x9, offset 0x3f
+	{value: 0x0117, lo: 0x80, hi: 0x81},
+	{value: 0x0024, lo: 0x83, hi: 0x87},
+	{value: 0x0014, lo: 0x88, hi: 0x89},
+	{value: 0x0117, lo: 0x8a, hi: 0xbf},
+	// Block 0xa, offset 0x43
+	{value: 0x0f13, lo: 0x80, hi: 0x80},
+	{value: 0x0316, lo: 0x81, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0316, lo: 0x85, hi: 0x86},
+	{value: 0x0f16, lo: 0x87, hi: 0x88},
+	{value: 0x0316, lo: 0x89, hi: 0x8a},
+	{value: 0x0716, lo: 0x8b, hi: 0x8c},
+	{value: 0x0316, lo: 0x8d, hi: 0x8e},
+	{value: 0x0f12, lo: 0x8f, hi: 0x8f},
+	{value: 0x0117, lo: 0x90, hi: 0xbf},
+	// Block 0xb, offset 0x4d
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x6553, lo: 0xb1, hi: 0xbf},
+	// Block 0xc, offset 0x4f
+	{value: 0x3013, lo: 0x80, hi: 0x8f},
+	{value: 0x6853, lo: 0x90, hi: 0x96},
+	{value: 0x0014, lo: 0x99, hi: 0x99},
+	{value: 0x0010, lo: 0x9b, hi: 0x9c},
+	{value: 0x0010, lo: 0x9e, hi: 0x9e},
+	{value: 0x0012, lo: 0xa0, hi: 0xa0},
+	{value: 0x6552, lo: 0xa1, hi: 0xaf},
+	{value: 0x3012, lo: 0xb0, hi: 0xbf},
+	// Block 0xd, offset 0x57
+	{value: 0x0034, lo: 0x81, hi: 0x82},
+	{value: 0x0024, lo: 0x84, hi: 0x84},
+	{value: 0x0034, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0xaa},
+	{value: 0x0010, lo: 0xaf, hi: 0xb3},
+	{value: 0x0054, lo: 0xb4, hi: 0xb4},
+	// Block 0xe, offset 0x5e
+	{value: 0x0014, lo: 0x80, hi: 0x85},
+	{value: 0x0024, lo: 0x90, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x9a},
+	{value: 0x0014, lo: 0x9c, hi: 0x9c},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0xf, offset 0x63
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x8a},
+	{value: 0x0034, lo: 0x8b, hi: 0x92},
+	{value: 0x0024, lo: 0x93, hi: 0x94},
+	{value: 0x0034, lo: 0x95, hi: 0x96},
+	{value: 0x0024, lo: 0x97, hi: 0x9b},
+	{value: 0x0034, lo: 0x9c, hi: 0x9c},
+	{value: 0x0024, lo: 0x9d, hi: 0x9e},
+	{value: 0x0034, lo: 0x9f, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0010, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0034, lo: 0xb0, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xbf},
+	// Block 0x10, offset 0x71
+	{value: 0x0010, lo: 0x80, hi: 0xbf},
+	// Block 0x11, offset 0x72
+	{value: 0x0010, lo: 0x80, hi: 0x93},
+	{value: 0x0010, lo: 0x95, hi: 0x95},
+	{value: 0x0024, lo: 0x96, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x0024, lo: 0x9f, hi: 0xa2},
+	{value: 0x0034, lo: 0xa3, hi: 0xa3},
+	{value: 0x0024, lo: 0xa4, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa6},
+	{value: 0x0024, lo: 0xa7, hi: 0xa8},
+	{value: 0x0034, lo: 0xaa, hi: 0xaa},
+	{value: 0x0024, lo: 0xab, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xbc},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x12, offset 0x80
+	{value: 0x0014, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0034, lo: 0x91, hi: 0x91},
+	{value: 0x0010, lo: 0x92, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	{value: 0x0034, lo: 0xb1, hi: 0xb1},
+	{value: 0x0024, lo: 0xb2, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0024, lo: 0xb5, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb9},
+	{value: 0x0024, lo: 0xba, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbc},
+	{value: 0x0024, lo: 0xbd, hi: 0xbd},
+	{value: 0x0034, lo: 0xbe, hi: 0xbe},
+	{value: 0x0024, lo: 0xbf, hi: 0xbf},
+	// Block 0x13, offset 0x8f
+	{value: 0x0024, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0024, lo: 0x83, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0024, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0024, lo: 0x87, hi: 0x87},
+	{value: 0x0034, lo: 0x88, hi: 0x88},
+	{value: 0x0024, lo: 0x89, hi: 0x8a},
+	{value: 0x0010, lo: 0x8d, hi: 0xbf},
+	// Block 0x14, offset 0x99
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0014, lo: 0xa6, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	// Block 0x15, offset 0x9c
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0024, lo: 0xab, hi: 0xb1},
+	{value: 0x0034, lo: 0xb2, hi: 0xb2},
+	{value: 0x0024, lo: 0xb3, hi: 0xb3},
+	{value: 0x0014, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0034, lo: 0xbd, hi: 0xbd},
+	// Block 0x16, offset 0xa3
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0024, lo: 0x96, hi: 0x99},
+	{value: 0x0014, lo: 0x9a, hi: 0x9a},
+	{value: 0x0024, lo: 0x9b, hi: 0xa3},
+	{value: 0x0014, lo: 0xa4, hi: 0xa4},
+	{value: 0x0024, lo: 0xa5, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa8},
+	{value: 0x0024, lo: 0xa9, hi: 0xad},
+	// Block 0x17, offset 0xab
+	{value: 0x0010, lo: 0x80, hi: 0x98},
+	{value: 0x0034, lo: 0x99, hi: 0x9b},
+	{value: 0x0010, lo: 0xa0, hi: 0xaa},
+	// Block 0x18, offset 0xae
+	{value: 0x0010, lo: 0xa0, hi: 0xb4},
+	{value: 0x0010, lo: 0xb6, hi: 0xbd},
+	// Block 0x19, offset 0xb0
+	{value: 0x0034, lo: 0x93, hi: 0x93},
+	{value: 0x0024, lo: 0x94, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa2},
+	{value: 0x0034, lo: 0xa3, hi: 0xa3},
+	{value: 0x0024, lo: 0xa4, hi: 0xa5},
+	{value: 0x0034, lo: 0xa6, hi: 0xa6},
+	{value: 0x0024, lo: 0xa7, hi: 0xa8},
+	{value: 0x0034, lo: 0xa9, hi: 0xa9},
+	{value: 0x0024, lo: 0xaa, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xb2},
+	{value: 0x0024, lo: 0xb3, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb6},
+	{value: 0x0024, lo: 0xb7, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0024, lo: 0xbb, hi: 0xbf},
+	// Block 0x1a, offset 0xbf
+	{value: 0x0014, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xb9},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x1b, offset 0xc5
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x88},
+	{value: 0x0010, lo: 0x89, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0024, lo: 0x91, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x92},
+	{value: 0x0024, lo: 0x93, hi: 0x94},
+	{value: 0x0014, lo: 0x95, hi: 0x97},
+	{value: 0x0010, lo: 0x98, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xbf},
+	// Block 0x1c, offset 0xd3
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb2},
+	{value: 0x0010, lo: 0xb6, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x1d, offset 0xde
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x8e},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9c, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xb1},
+	{value: 0x0010, lo: 0xbc, hi: 0xbc},
+	{value: 0x0024, lo: 0xbe, hi: 0xbe},
+	// Block 0x1e, offset 0xeb
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8a},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb6},
+	{value: 0x0010, lo: 0xb8, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x1f, offset 0xf6
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0014, lo: 0x87, hi: 0x88},
+	{value: 0x0014, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x91, hi: 0x91},
+	{value: 0x0010, lo: 0x99, hi: 0x9c},
+	{value: 0x0010, lo: 0x9e, hi: 0x9e},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb5},
+	// Block 0x20, offset 0x102
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x91},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x21, offset 0x10c
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x85},
+	{value: 0x0014, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x89, hi: 0x89},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	{value: 0x0014, lo: 0xba, hi: 0xbf},
+	// Block 0x22, offset 0x118
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x23, offset 0x123
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x96, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9c, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	// Block 0x24, offset 0x12f
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8a},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0x95},
+	{value: 0x0010, lo: 0x99, hi: 0x9a},
+	{value: 0x0010, lo: 0x9c, hi: 0x9c},
+	{value: 0x0010, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa3, hi: 0xa4},
+	{value: 0x0010, lo: 0xa8, hi: 0xaa},
+	{value: 0x0010, lo: 0xae, hi: 0xb9},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x25, offset 0x13b
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x86, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	// Block 0x26, offset 0x143
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x83},
+	{value: 0x0014, lo: 0x84, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb9},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbf},
+	// Block 0x27, offset 0x14c
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0014, lo: 0x86, hi: 0x88},
+	{value: 0x0014, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0034, lo: 0x95, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9a},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	// Block 0x28, offset 0x156
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x29, offset 0x161
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0014, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x95, hi: 0x96},
+	{value: 0x0010, lo: 0x9e, hi: 0x9e},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb1, hi: 0xb2},
+	// Block 0x2a, offset 0x16d
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x2b, offset 0x174
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x86, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x8e},
+	{value: 0x0010, lo: 0x94, hi: 0x97},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xba, hi: 0xbf},
+	// Block 0x2c, offset 0x17f
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x96},
+	{value: 0x0010, lo: 0x9a, hi: 0xb1},
+	{value: 0x0010, lo: 0xb3, hi: 0xbb},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	// Block 0x2d, offset 0x184
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0010, lo: 0x8f, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x94},
+	{value: 0x0014, lo: 0x96, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9f},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	// Block 0x2e, offset 0x18c
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb4, hi: 0xb7},
+	{value: 0x0034, lo: 0xb8, hi: 0xba},
+	// Block 0x2f, offset 0x18f
+	{value: 0x0004, lo: 0x86, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x87},
+	{value: 0x0034, lo: 0x88, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x30, offset 0x194
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb4, hi: 0xb7},
+	{value: 0x0034, lo: 0xb8, hi: 0xb9},
+	{value: 0x0014, lo: 0xbb, hi: 0xbc},
+	// Block 0x31, offset 0x198
+	{value: 0x0004, lo: 0x86, hi: 0x86},
+	{value: 0x0034, lo: 0x88, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x32, offset 0x19c
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0034, lo: 0x98, hi: 0x99},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0034, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	{value: 0x0034, lo: 0xb9, hi: 0xb9},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x33, offset 0x1a3
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0x89, hi: 0xac},
+	{value: 0x0034, lo: 0xb1, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xba, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x34, offset 0x1ac
+	{value: 0x0034, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0024, lo: 0x82, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0024, lo: 0x86, hi: 0x87},
+	{value: 0x0010, lo: 0x88, hi: 0x8c},
+	{value: 0x0014, lo: 0x8d, hi: 0x97},
+	{value: 0x0014, lo: 0x99, hi: 0xbc},
+	// Block 0x35, offset 0x1b4
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	// Block 0x36, offset 0x1b5
+	{value: 0x0010, lo: 0xab, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	{value: 0x0010, lo: 0xb8, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbc},
+	{value: 0x0014, lo: 0xbd, hi: 0xbe},
+	// Block 0x37, offset 0x1be
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x96, hi: 0x97},
+	{value: 0x0014, lo: 0x98, hi: 0x99},
+	{value: 0x0014, lo: 0x9e, hi: 0xa0},
+	{value: 0x0010, lo: 0xa2, hi: 0xa4},
+	{value: 0x0010, lo: 0xa7, hi: 0xad},
+	{value: 0x0014, lo: 0xb1, hi: 0xb4},
+	// Block 0x38, offset 0x1c5
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x6c53, lo: 0xa0, hi: 0xbf},
+	// Block 0x39, offset 0x1cd
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x98},
+	{value: 0x0010, lo: 0x9a, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x3a, offset 0x1d3
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb5},
+	{value: 0x0010, lo: 0xb8, hi: 0xbe},
+	// Block 0x3b, offset 0x1d8
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x82, hi: 0x85},
+	{value: 0x0010, lo: 0x88, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0xbf},
+	// Block 0x3c, offset 0x1dc
+	{value: 0x0010, lo: 0x80, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0x95},
+	{value: 0x0010, lo: 0x98, hi: 0xbf},
+	// Block 0x3d, offset 0x1df
+	{value: 0x0010, lo: 0x80, hi: 0x9a},
+	{value: 0x0024, lo: 0x9d, hi: 0x9f},
+	// Block 0x3e, offset 0x1e1
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x7453, lo: 0xa0, hi: 0xaf},
+	{value: 0x7853, lo: 0xb0, hi: 0xbf},
+	// Block 0x3f, offset 0x1e4
+	{value: 0x7c53, lo: 0x80, hi: 0x8f},
+	{value: 0x8053, lo: 0x90, hi: 0x9f},
+	{value: 0x7c53, lo: 0xa0, hi: 0xaf},
+	{value: 0x0813, lo: 0xb0, hi: 0xb5},
+	{value: 0x0892, lo: 0xb8, hi: 0xbd},
+	// Block 0x40, offset 0x1e9
+	{value: 0x0010, lo: 0x81, hi: 0xbf},
+	// Block 0x41, offset 0x1ea
+	{value: 0x0010, lo: 0x80, hi: 0xac},
+	{value: 0x0010, lo: 0xaf, hi: 0xbf},
+	// Block 0x42, offset 0x1ec
+	{value: 0x0010, lo: 0x81, hi: 0x9a},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x43, offset 0x1ee
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0010, lo: 0xae, hi: 0xb8},
+	// Block 0x44, offset 0x1f0
+	{value: 0x0010, lo: 0x80, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x93},
+	{value: 0x0034, lo: 0x94, hi: 0x94},
+	{value: 0x0010, lo: 0xa0, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	// Block 0x45, offset 0x1f7
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x93},
+	{value: 0x0010, lo: 0xa0, hi: 0xac},
+	{value: 0x0010, lo: 0xae, hi: 0xb0},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	// Block 0x46, offset 0x1fc
+	{value: 0x0014, lo: 0xb4, hi: 0xb5},
+	{value: 0x0010, lo: 0xb6, hi: 0xb6},
+	{value: 0x0014, lo: 0xb7, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x47, offset 0x200
+	{value: 0x0010, lo: 0x80, hi: 0x85},
+	{value: 0x0014, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0014, lo: 0x89, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x92},
+	{value: 0x0014, lo: 0x93, hi: 0x93},
+	{value: 0x0004, lo: 0x97, hi: 0x97},
+	{value: 0x0024, lo: 0x9d, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	// Block 0x48, offset 0x209
+	{value: 0x0014, lo: 0x8b, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x49, offset 0x20c
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0xb8},
+	// Block 0x4a, offset 0x20f
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0xa8},
+	{value: 0x0034, lo: 0xa9, hi: 0xa9},
+	{value: 0x0010, lo: 0xaa, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x4b, offset 0x215
+	{value: 0x0010, lo: 0x80, hi: 0xb5},
+	// Block 0x4c, offset 0x216
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0014, lo: 0xa0, hi: 0xa2},
+	{value: 0x0010, lo: 0xa3, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xab},
+	{value: 0x0010, lo: 0xb0, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb2},
+	{value: 0x0010, lo: 0xb3, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xb9},
+	{value: 0x0024, lo: 0xba, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbb},
+	// Block 0x4d, offset 0x221
+	{value: 0x0010, lo: 0x86, hi: 0x8f},
+	// Block 0x4e, offset 0x222
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x4f, offset 0x223
+	{value: 0x0010, lo: 0x80, hi: 0x96},
+	{value: 0x0024, lo: 0x97, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x98},
+	{value: 0x0010, lo: 0x99, hi: 0x9a},
+	{value: 0x0014, lo: 0x9b, hi: 0x9b},
+	// Block 0x50, offset 0x228
+	{value: 0x0010, lo: 0x95, hi: 0x95},
+	{value: 0x0014, lo: 0x96, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0014, lo: 0x98, hi: 0x9e},
+	{value: 0x0034, lo: 0xa0, hi: 0xa0},
+	{value: 0x0010, lo: 0xa1, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa2},
+	{value: 0x0010, lo: 0xa3, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xac},
+	{value: 0x0010, lo: 0xad, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb4},
+	{value: 0x0024, lo: 0xb5, hi: 0xbc},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x51, offset 0x235
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0004, lo: 0xa7, hi: 0xa7},
+	{value: 0x0024, lo: 0xb0, hi: 0xb4},
+	{value: 0x0034, lo: 0xb5, hi: 0xba},
+	{value: 0x0024, lo: 0xbb, hi: 0xbc},
+	{value: 0x0034, lo: 0xbd, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	// Block 0x52, offset 0x23d
+	{value: 0x0014, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x53, offset 0x245
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0030, lo: 0x84, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x8b},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0024, lo: 0xab, hi: 0xab},
+	{value: 0x0034, lo: 0xac, hi: 0xac},
+	{value: 0x0024, lo: 0xad, hi: 0xb3},
+	// Block 0x54, offset 0x24e
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa9},
+	{value: 0x0030, lo: 0xaa, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xbf},
+	// Block 0x55, offset 0x257
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0034, lo: 0xa6, hi: 0xa6},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa9},
+	{value: 0x0010, lo: 0xaa, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xae},
+	{value: 0x0014, lo: 0xaf, hi: 0xb1},
+	{value: 0x0030, lo: 0xb2, hi: 0xb3},
+	// Block 0x56, offset 0x260
+	{value: 0x0010, lo: 0x80, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	// Block 0x57, offset 0x265
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x8d, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	// Block 0x58, offset 0x268
+	{value: 0x316a, lo: 0x80, hi: 0x80},
+	{value: 0x31ea, lo: 0x81, hi: 0x81},
+	{value: 0x326a, lo: 0x82, hi: 0x82},
+	{value: 0x32ea, lo: 0x83, hi: 0x83},
+	{value: 0x336a, lo: 0x84, hi: 0x84},
+	{value: 0x33ea, lo: 0x85, hi: 0x85},
+	{value: 0x346a, lo: 0x86, hi: 0x86},
+	{value: 0x34ea, lo: 0x87, hi: 0x87},
+	{value: 0x356a, lo: 0x88, hi: 0x88},
+	{value: 0x8353, lo: 0x90, hi: 0xba},
+	{value: 0x8353, lo: 0xbd, hi: 0xbf},
+	// Block 0x59, offset 0x273
+	{value: 0x0024, lo: 0x90, hi: 0x92},
+	{value: 0x0034, lo: 0x94, hi: 0x99},
+	{value: 0x0024, lo: 0x9a, hi: 0x9b},
+	{value: 0x0034, lo: 0x9c, hi: 0x9f},
+	{value: 0x0024, lo: 0xa0, hi: 0xa0},
+	{value: 0x0010, lo: 0xa1, hi: 0xa1},
+	{value: 0x0034, lo: 0xa2, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xb3},
+	{value: 0x0024, lo: 0xb4, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb7},
+	{value: 0x0024, lo: 0xb8, hi: 0xb9},
+	// Block 0x5a, offset 0x280
+	{value: 0x0012, lo: 0x80, hi: 0xab},
+	{value: 0x0015, lo: 0xac, hi: 0xbf},
+	// Block 0x5b, offset 0x282
+	{value: 0x0015, lo: 0x80, hi: 0xaa},
+	{value: 0x0012, lo: 0xab, hi: 0xb7},
+	{value: 0x0015, lo: 0xb8, hi: 0xb8},
+	{value: 0x8752, lo: 0xb9, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xbc},
+	{value: 0x8b52, lo: 0xbd, hi: 0xbd},
+	{value: 0x0012, lo: 0xbe, hi: 0xbf},
+	// Block 0x5c, offset 0x289
+	{value: 0x0012, lo: 0x80, hi: 0x9a},
+	{value: 0x0015, lo: 0x9b, hi: 0xbf},
+	// Block 0x5d, offset 0x28b
+	{value: 0x0024, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0024, lo: 0x83, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0024, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x90},
+	{value: 0x0024, lo: 0x91, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb9},
+	{value: 0x0024, lo: 0xbb, hi: 0xbb},
+	{value: 0x0034, lo: 0xbc, hi: 0xbd},
+	{value: 0x0024, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x5e, offset 0x297
+	{value: 0x0117, lo: 0x80, hi: 0xbf},
+	// Block 0x5f, offset 0x298
+	{value: 0x0117, lo: 0x80, hi: 0x95},
+	{value: 0x361a, lo: 0x96, hi: 0x96},
+	{value: 0x36ca, lo: 0x97, hi: 0x97},
+	{value: 0x377a, lo: 0x98, hi: 0x98},
+	{value: 0x382a, lo: 0x99, hi: 0x99},
+	{value: 0x38da, lo: 0x9a, hi: 0x9a},
+	{value: 0x398a, lo: 0x9b, hi: 0x9b},
+	{value: 0x0012, lo: 0x9c, hi: 0x9d},
+	{value: 0x3a3b, lo: 0x9e, hi: 0x9e},
+	{value: 0x0012, lo: 0x9f, hi: 0x9f},
+	{value: 0x0117, lo: 0xa0, hi: 0xbf},
+	// Block 0x60, offset 0x2a3
+	{value: 0x0812, lo: 0x80, hi: 0x87},
+	{value: 0x0813, lo: 0x88, hi: 0x8f},
+	{value: 0x0812, lo: 0x90, hi: 0x95},
+	{value: 0x0813, lo: 0x98, hi: 0x9d},
+	{value: 0x0812, lo: 0xa0, hi: 0xa7},
+	{value: 0x0813, lo: 0xa8, hi: 0xaf},
+	{value: 0x0812, lo: 0xb0, hi: 0xb7},
+	{value: 0x0813, lo: 0xb8, hi: 0xbf},
+	// Block 0x61, offset 0x2ab
+	{value: 0x0004, lo: 0x8b, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8f},
+	{value: 0x0054, lo: 0x98, hi: 0x99},
+	{value: 0x0054, lo: 0xa4, hi: 0xa4},
+	{value: 0x0054, lo: 0xa7, hi: 0xa7},
+	{value: 0x0014, lo: 0xaa, hi: 0xae},
+	{value: 0x0010, lo: 0xaf, hi: 0xaf},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x62, offset 0x2b3
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x94, hi: 0x94},
+	{value: 0x0014, lo: 0xa0, hi: 0xa4},
+	{value: 0x0014, lo: 0xa6, hi: 0xaf},
+	{value: 0x0015, lo: 0xb1, hi: 0xb1},
+	{value: 0x0015, lo: 0xbf, hi: 0xbf},
+	// Block 0x63, offset 0x2b9
+	{value: 0x0015, lo: 0x90, hi: 0x9c},
+	// Block 0x64, offset 0x2ba
+	{value: 0x0024, lo: 0x90, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x93},
+	{value: 0x0024, lo: 0x94, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x9a},
+	{value: 0x0024, lo: 0x9b, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0xa0},
+	{value: 0x0024, lo: 0xa1, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa4},
+	{value: 0x0034, lo: 0xa5, hi: 0xa6},
+	{value: 0x0024, lo: 0xa7, hi: 0xa7},
+	{value: 0x0034, lo: 0xa8, hi: 0xa8},
+	{value: 0x0024, lo: 0xa9, hi: 0xa9},
+	{value: 0x0034, lo: 0xaa, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	// Block 0x65, offset 0x2c8
+	{value: 0x0016, lo: 0x85, hi: 0x86},
+	{value: 0x0012, lo: 0x87, hi: 0x89},
+	{value: 0xa052, lo: 0x8e, hi: 0x8e},
+	{value: 0x1013, lo: 0xa0, hi: 0xaf},
+	{value: 0x1012, lo: 0xb0, hi: 0xbf},
+	// Block 0x66, offset 0x2cd
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x88},
+	// Block 0x67, offset 0x2d0
+	{value: 0xa353, lo: 0xb6, hi: 0xb7},
+	{value: 0xa653, lo: 0xb8, hi: 0xb9},
+	{value: 0xa953, lo: 0xba, hi: 0xbb},
+	{value: 0xa653, lo: 0xbc, hi: 0xbd},
+	{value: 0xa353, lo: 0xbe, hi: 0xbf},
+	// Block 0x68, offset 0x2d5
+	{value: 0x3013, lo: 0x80, hi: 0x8f},
+	{value: 0x6553, lo: 0x90, hi: 0x9f},
+	{value: 0xac53, lo: 0xa0, hi: 0xae},
+	{value: 0x3012, lo: 0xb0, hi: 0xbf},
+	// Block 0x69, offset 0x2d9
+	{value: 0x0117, lo: 0x80, hi: 0xa3},
+	{value: 0x0012, lo: 0xa4, hi: 0xa4},
+	{value: 0x0716, lo: 0xab, hi: 0xac},
+	{value: 0x0316, lo: 0xad, hi: 0xae},
+	{value: 0x0024, lo: 0xaf, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xb3},
+	// Block 0x6a, offset 0x2df
+	{value: 0x6c52, lo: 0x80, hi: 0x9f},
+	{value: 0x7052, lo: 0xa0, hi: 0xa5},
+	{value: 0x7052, lo: 0xa7, hi: 0xa7},
+	{value: 0x7052, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x6b, offset 0x2e4
+	{value: 0x0010, lo: 0x80, hi: 0xa7},
+	{value: 0x0014, lo: 0xaf, hi: 0xaf},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x6c, offset 0x2e7
+	{value: 0x0010, lo: 0x80, hi: 0x96},
+	{value: 0x0010, lo: 0xa0, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xae},
+	{value: 0x0010, lo: 0xb0, hi: 0xb6},
+	{value: 0x0010, lo: 0xb8, hi: 0xbe},
+	// Block 0x6d, offset 0x2ec
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x88, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9e},
+	{value: 0x0024, lo: 0xa0, hi: 0xbf},
+	// Block 0x6e, offset 0x2f1
+	{value: 0x0014, lo: 0xaf, hi: 0xaf},
+	// Block 0x6f, offset 0x2f2
+	{value: 0x0014, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0xaa, hi: 0xad},
+	{value: 0x0030, lo: 0xae, hi: 0xaf},
+	{value: 0x0004, lo: 0xb1, hi: 0xb5},
+	{value: 0x0014, lo: 0xbb, hi: 0xbb},
+	{value: 0x0010, lo: 0xbc, hi: 0xbc},
+	// Block 0x70, offset 0x2f8
+	{value: 0x0034, lo: 0x99, hi: 0x9a},
+	{value: 0x0004, lo: 0x9b, hi: 0x9e},
+	// Block 0x71, offset 0x2fa
+	{value: 0x0004, lo: 0xbc, hi: 0xbe},
+	// Block 0x72, offset 0x2fb
+	{value: 0x0010, lo: 0x85, hi: 0xaf},
+	{value: 0x0010, lo: 0xb1, hi: 0xbf},
+	// Block 0x73, offset 0x2fd
+	{value: 0x0010, lo: 0x80, hi: 0x8e},
+	{value: 0x0010, lo: 0xa0, hi: 0xba},
+	// Block 0x74, offset 0x2ff
+	{value: 0x0010, lo: 0x80, hi: 0x94},
+	{value: 0x0014, lo: 0x95, hi: 0x95},
+	{value: 0x0010, lo: 0x96, hi: 0xbf},
+	// Block 0x75, offset 0x302
+	{value: 0x0010, lo: 0x80, hi: 0x8c},
+	// Block 0x76, offset 0x303
+	{value: 0x0010, lo: 0x90, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	// Block 0x77, offset 0x305
+	{value: 0x0010, lo: 0x80, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0010, lo: 0x90, hi: 0xab},
+	// Block 0x78, offset 0x308
+	{value: 0x0117, lo: 0x80, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xae},
+	{value: 0x0024, lo: 0xaf, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb2},
+	{value: 0x0024, lo: 0xb4, hi: 0xbd},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x79, offset 0x30e
+	{value: 0x0117, lo: 0x80, hi: 0x9b},
+	{value: 0x0015, lo: 0x9c, hi: 0x9d},
+	{value: 0x0024, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x7a, offset 0x312
+	{value: 0x0010, lo: 0x80, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb1},
+	// Block 0x7b, offset 0x314
+	{value: 0x0004, lo: 0x80, hi: 0x96},
+	{value: 0x0014, lo: 0x97, hi: 0xa1},
+	{value: 0x0117, lo: 0xa2, hi: 0xaf},
+	{value: 0x0012, lo: 0xb0, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xbf},
+	// Block 0x7c, offset 0x319
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x0015, lo: 0xb0, hi: 0xb0},
+	{value: 0x0012, lo: 0xb1, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x8753, lo: 0xbd, hi: 0xbd},
+	{value: 0x0117, lo: 0xbe, hi: 0xbf},
+	// Block 0x7d, offset 0x320
+	{value: 0x0010, lo: 0xb7, hi: 0xb7},
+	{value: 0x0015, lo: 0xb8, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbf},
+	// Block 0x7e, offset 0x324
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8a},
+	{value: 0x0014, lo: 0x8b, hi: 0x8b},
+	{value: 0x0010, lo: 0x8c, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa6},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	// Block 0x7f, offset 0x32d
+	{value: 0x0010, lo: 0x80, hi: 0xb3},
+	// Block 0x80, offset 0x32e
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x85},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0024, lo: 0xa0, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb7},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0010, lo: 0xbd, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x81, offset 0x337
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0014, lo: 0xa6, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x82, offset 0x33b
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x91},
+	{value: 0x0010, lo: 0x92, hi: 0x92},
+	{value: 0x0030, lo: 0x93, hi: 0x93},
+	{value: 0x0010, lo: 0xa0, hi: 0xbc},
+	// Block 0x83, offset 0x340
+	{value: 0x0014, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xb9},
+	{value: 0x0010, lo: 0xba, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x84, offset 0x348
+	{value: 0x0030, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0014, lo: 0xa5, hi: 0xa5},
+	{value: 0x0004, lo: 0xa6, hi: 0xa6},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x85, offset 0x34e
+	{value: 0x0010, lo: 0x80, hi: 0xa8},
+	{value: 0x0014, lo: 0xa9, hi: 0xae},
+	{value: 0x0010, lo: 0xaf, hi: 0xb0},
+	{value: 0x0014, lo: 0xb1, hi: 0xb2},
+	{value: 0x0010, lo: 0xb3, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb6},
+	// Block 0x86, offset 0x354
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0010, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0004, lo: 0xb0, hi: 0xb0},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	// Block 0x87, offset 0x35e
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	{value: 0x0024, lo: 0xb2, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0024, lo: 0xb7, hi: 0xb8},
+	{value: 0x0024, lo: 0xbe, hi: 0xbf},
+	// Block 0x88, offset 0x363
+	{value: 0x0024, lo: 0x81, hi: 0x81},
+	{value: 0x0004, lo: 0x9d, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0010, lo: 0xb2, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb6},
+	// Block 0x89, offset 0x36c
+	{value: 0x0010, lo: 0x81, hi: 0x86},
+	{value: 0x0010, lo: 0x89, hi: 0x8e},
+	{value: 0x0010, lo: 0x91, hi: 0x96},
+	{value: 0x0010, lo: 0xa0, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xae},
+	{value: 0x0012, lo: 0xb0, hi: 0xbf},
+	// Block 0x8a, offset 0x372
+	{value: 0x0012, lo: 0x80, hi: 0x92},
+	{value: 0xaf52, lo: 0x93, hi: 0x93},
+	{value: 0x0012, lo: 0x94, hi: 0x9a},
+	{value: 0x0014, lo: 0x9b, hi: 0x9b},
+	{value: 0x0015, lo: 0x9c, hi: 0x9f},
+	{value: 0x0012, lo: 0xa0, hi: 0xa5},
+	{value: 0x74d2, lo: 0xb0, hi: 0xbf},
+	// Block 0x8b, offset 0x379
+	{value: 0x78d2, lo: 0x80, hi: 0x8f},
+	{value: 0x7cd2, lo: 0x90, hi: 0x9f},
+	{value: 0x80d2, lo: 0xa0, hi: 0xaf},
+	{value: 0x7cd2, lo: 0xb0, hi: 0xbf},
+	// Block 0x8c, offset 0x37d
+	{value: 0x0010, lo: 0x80, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xaa},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x8d, offset 0x385
+	{value: 0x0010, lo: 0x80, hi: 0xa3},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x8e, offset 0x387
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x8b, hi: 0xbb},
+	// Block 0x8f, offset 0x389
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x86, hi: 0xbf},
+	// Block 0x90, offset 0x38c
+	{value: 0x0010, lo: 0x80, hi: 0xb1},
+	{value: 0x0004, lo: 0xb2, hi: 0xbf},
+	// Block 0x91, offset 0x38e
+	{value: 0x0004, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x93, hi: 0xbf},
+	// Block 0x92, offset 0x390
+	{value: 0x0010, lo: 0x80, hi: 0xbd},
+	// Block 0x93, offset 0x391
+	{value: 0x0010, lo: 0x90, hi: 0xbf},
+	// Block 0x94, offset 0x392
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x0010, lo: 0x92, hi: 0xbf},
+	// Block 0x95, offset 0x394
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0xb0, hi: 0xbb},
+	// Block 0x96, offset 0x396
+	{value: 0x0014, lo: 0x80, hi: 0x8f},
+	{value: 0x0054, lo: 0x93, hi: 0x93},
+	{value: 0x0024, lo: 0xa0, hi: 0xa6},
+	{value: 0x0034, lo: 0xa7, hi: 0xad},
+	{value: 0x0024, lo: 0xae, hi: 0xaf},
+	{value: 0x0010, lo: 0xb3, hi: 0xb4},
+	// Block 0x97, offset 0x39c
+	{value: 0x0010, lo: 0x8d, hi: 0x8f},
+	{value: 0x0054, lo: 0x92, hi: 0x92},
+	{value: 0x0054, lo: 0x95, hi: 0x95},
+	{value: 0x0010, lo: 0xb0, hi: 0xb4},
+	{value: 0x0010, lo: 0xb6, hi: 0xbf},
+	// Block 0x98, offset 0x3a1
+	{value: 0x0010, lo: 0x80, hi: 0xbc},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x99, offset 0x3a3
+	{value: 0x0054, lo: 0x87, hi: 0x87},
+	{value: 0x0054, lo: 0x8e, hi: 0x8e},
+	{value: 0x0054, lo: 0x9a, hi: 0x9a},
+	{value: 0x5f53, lo: 0xa1, hi: 0xba},
+	{value: 0x0004, lo: 0xbe, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x9a, offset 0x3a9
+	{value: 0x0004, lo: 0x80, hi: 0x80},
+	{value: 0x5f52, lo: 0x81, hi: 0x9a},
+	{value: 0x0004, lo: 0xb0, hi: 0xb0},
+	// Block 0x9b, offset 0x3ac
+	{value: 0x0014, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xbe},
+	// Block 0x9c, offset 0x3ae
+	{value: 0x0010, lo: 0x82, hi: 0x87},
+	{value: 0x0010, lo: 0x8a, hi: 0x8f},
+	{value: 0x0010, lo: 0x92, hi: 0x97},
+	{value: 0x0010, lo: 0x9a, hi: 0x9c},
+	{value: 0x0004, lo: 0xa3, hi: 0xa3},
+	{value: 0x0014, lo: 0xb9, hi: 0xbb},
+	// Block 0x9d, offset 0x3b4
+	{value: 0x0010, lo: 0x80, hi: 0x8b},
+	{value: 0x0010, lo: 0x8d, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xba},
+	{value: 0x0010, lo: 0xbc, hi: 0xbd},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x9e, offset 0x3b9
+	{value: 0x0010, lo: 0x80, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x9d},
+	// Block 0x9f, offset 0x3bb
+	{value: 0x0010, lo: 0x80, hi: 0xba},
+	// Block 0xa0, offset 0x3bc
+	{value: 0x0010, lo: 0x80, hi: 0xb4},
+	// Block 0xa1, offset 0x3bd
+	{value: 0x0034, lo: 0xbd, hi: 0xbd},
+	// Block 0xa2, offset 0x3be
+	{value: 0x0010, lo: 0x80, hi: 0x9c},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0xa3, offset 0x3c0
+	{value: 0x0010, lo: 0x80, hi: 0x90},
+	{value: 0x0034, lo: 0xa0, hi: 0xa0},
+	// Block 0xa4, offset 0x3c2
+	{value: 0x0010, lo: 0x80, hi: 0x9f},
+	{value: 0x0010, lo: 0xad, hi: 0xbf},
+	// Block 0xa5, offset 0x3c4
+	{value: 0x0010, lo: 0x80, hi: 0x8a},
+	{value: 0x0010, lo: 0x90, hi: 0xb5},
+	{value: 0x0024, lo: 0xb6, hi: 0xba},
+	// Block 0xa6, offset 0x3c7
+	{value: 0x0010, lo: 0x80, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0xa7, offset 0x3c9
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x88, hi: 0x8f},
+	{value: 0x0010, lo: 0x91, hi: 0x95},
+	// Block 0xa8, offset 0x3cc
+	{value: 0x2813, lo: 0x80, hi: 0x87},
+	{value: 0x3813, lo: 0x88, hi: 0x8f},
+	{value: 0x2813, lo: 0x90, hi: 0x97},
+	{value: 0xb253, lo: 0x98, hi: 0x9f},
+	{value: 0xb553, lo: 0xa0, hi: 0xa7},
+	{value: 0x2812, lo: 0xa8, hi: 0xaf},
+	{value: 0x3812, lo: 0xb0, hi: 0xb7},
+	{value: 0x2812, lo: 0xb8, hi: 0xbf},
+	// Block 0xa9, offset 0x3d4
+	{value: 0xb252, lo: 0x80, hi: 0x87},
+	{value: 0xb552, lo: 0x88, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0xbf},
+	// Block 0xaa, offset 0x3d7
+	{value: 0x0010, lo: 0x80, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0xb553, lo: 0xb0, hi: 0xb7},
+	{value: 0xb253, lo: 0xb8, hi: 0xbf},
+	// Block 0xab, offset 0x3db
+	{value: 0x2813, lo: 0x80, hi: 0x87},
+	{value: 0x3813, lo: 0x88, hi: 0x8f},
+	{value: 0x2813, lo: 0x90, hi: 0x93},
+	{value: 0xb552, lo: 0x98, hi: 0x9f},
+	{value: 0xb252, lo: 0xa0, hi: 0xa7},
+	{value: 0x2812, lo: 0xa8, hi: 0xaf},
+	{value: 0x3812, lo: 0xb0, hi: 0xb7},
+	{value: 0x2812, lo: 0xb8, hi: 0xbb},
+	// Block 0xac, offset 0x3e3
+	{value: 0x0010, lo: 0x80, hi: 0xa7},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xad, offset 0x3e5
+	{value: 0x0010, lo: 0x80, hi: 0xa3},
+	// Block 0xae, offset 0x3e6
+	{value: 0x0010, lo: 0x80, hi: 0xb6},
+	// Block 0xaf, offset 0x3e7
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xa7},
+	// Block 0xb0, offset 0x3e9
+	{value: 0x0010, lo: 0x80, hi: 0x85},
+	{value: 0x0010, lo: 0x88, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0xb5},
+	{value: 0x0010, lo: 0xb7, hi: 0xb8},
+	{value: 0x0010, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xb1, offset 0x3ef
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb6},
+	// Block 0xb2, offset 0x3f1
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	// Block 0xb3, offset 0x3f2
+	{value: 0x0010, lo: 0xa0, hi: 0xb2},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	// Block 0xb4, offset 0x3f4
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb9},
+	// Block 0xb5, offset 0x3f6
+	{value: 0x0010, lo: 0x80, hi: 0xb7},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0xb6, offset 0x3f8
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x83},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x8e, hi: 0x8e},
+	{value: 0x0024, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x93},
+	{value: 0x0010, lo: 0x95, hi: 0x97},
+	{value: 0x0010, lo: 0x99, hi: 0xb5},
+	{value: 0x0024, lo: 0xb8, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xb7, offset 0x405
+	{value: 0x0010, lo: 0xa0, hi: 0xbc},
+	// Block 0xb8, offset 0x406
+	{value: 0x0010, lo: 0x80, hi: 0x9c},
+	// Block 0xb9, offset 0x407
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0x89, hi: 0xa4},
+	{value: 0x0024, lo: 0xa5, hi: 0xa5},
+	{value: 0x0034, lo: 0xa6, hi: 0xa6},
+	// Block 0xba, offset 0x40b
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb2},
+	// Block 0xbb, offset 0x40d
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	// Block 0xbc, offset 0x40e
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	// Block 0xbd, offset 0x40f
+	{value: 0x5653, lo: 0x80, hi: 0xb2},
+	// Block 0xbe, offset 0x410
+	{value: 0x5652, lo: 0x80, hi: 0xb2},
+	// Block 0xbf, offset 0x411
+	{value: 0x0010, lo: 0x80, hi: 0xa3},
+	{value: 0x0024, lo: 0xa4, hi: 0xa7},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xc0, offset 0x414
+	{value: 0x0010, lo: 0x80, hi: 0x9c},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xc1, offset 0x417
+	{value: 0x0010, lo: 0x80, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x87},
+	{value: 0x0024, lo: 0x88, hi: 0x8a},
+	{value: 0x0034, lo: 0x8b, hi: 0x8b},
+	{value: 0x0024, lo: 0x8c, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x90},
+	// Block 0xc2, offset 0x41d
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbf},
+	// Block 0xc3, offset 0x421
+	{value: 0x0014, lo: 0x80, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xc4, offset 0x425
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb6},
+	{value: 0x0010, lo: 0xb7, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0014, lo: 0xbd, hi: 0xbd},
+	// Block 0xc5, offset 0x42b
+	{value: 0x0014, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0xa8},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xc6, offset 0x42e
+	{value: 0x0024, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xab},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb4},
+	{value: 0x0010, lo: 0xb6, hi: 0xbf},
+	// Block 0xc7, offset 0x435
+	{value: 0x0010, lo: 0x84, hi: 0x86},
+	{value: 0x0010, lo: 0x90, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb3},
+	{value: 0x0010, lo: 0xb6, hi: 0xb6},
+	// Block 0xc8, offset 0x439
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xc9, offset 0x43d
+	{value: 0x0030, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0014, lo: 0x89, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0014, lo: 0x8b, hi: 0x8c},
+	{value: 0x0010, lo: 0x90, hi: 0x9a},
+	{value: 0x0010, lo: 0x9c, hi: 0x9c},
+	// Block 0xca, offset 0x444
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	{value: 0x0010, lo: 0x93, hi: 0xae},
+	{value: 0x0014, lo: 0xaf, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0014, lo: 0xb4, hi: 0xb4},
+	{value: 0x0030, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb6},
+	{value: 0x0014, lo: 0xb7, hi: 0xb7},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	// Block 0xcb, offset 0x44d
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x88, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa8},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xcc, offset 0x453
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0014, lo: 0x9f, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa2},
+	{value: 0x0014, lo: 0xa3, hi: 0xa8},
+	{value: 0x0034, lo: 0xa9, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xcd, offset 0x459
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbb, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0xce, offset 0x463
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0030, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9d, hi: 0xa3},
+	{value: 0x0024, lo: 0xa6, hi: 0xac},
+	{value: 0x0024, lo: 0xb0, hi: 0xb4},
+	// Block 0xcf, offset 0x46d
+	{value: 0x0010, lo: 0x80, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbf},
+	// Block 0xd0, offset 0x46f
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8a},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0024, lo: 0x9e, hi: 0x9e},
+	// Block 0xd1, offset 0x477
+	{value: 0x0010, lo: 0x80, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb8},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0xd2, offset 0x47d
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0x85},
+	{value: 0x0010, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xd3, offset 0x483
+	{value: 0x0010, lo: 0x80, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb5},
+	{value: 0x0010, lo: 0xb8, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xd4, offset 0x489
+	{value: 0x0034, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x98, hi: 0x9b},
+	{value: 0x0014, lo: 0x9c, hi: 0x9d},
+	// Block 0xd5, offset 0x48c
+	{value: 0x0010, lo: 0x80, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbc},
+	{value: 0x0014, lo: 0xbd, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xd6, offset 0x492
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x84, hi: 0x84},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xd7, offset 0x495
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0014, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb5},
+	{value: 0x0030, lo: 0xb6, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	// Block 0xd8, offset 0x49d
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	// Block 0xd9, offset 0x49e
+	{value: 0x0014, lo: 0x9d, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xda, offset 0x4a5
+	{value: 0x0010, lo: 0x80, hi: 0xae},
+	{value: 0x0014, lo: 0xaf, hi: 0xb7},
+	{value: 0x0010, lo: 0xb8, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	// Block 0xdb, offset 0x4a9
+	{value: 0x5f53, lo: 0xa0, hi: 0xbf},
+	// Block 0xdc, offset 0x4aa
+	{value: 0x5f52, lo: 0x80, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xdd, offset 0x4ad
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x8a},
+	{value: 0x0010, lo: 0x8b, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb8},
+	{value: 0x0010, lo: 0xb9, hi: 0xba},
+	{value: 0x0014, lo: 0xbb, hi: 0xbe},
+	// Block 0xde, offset 0x4b5
+	{value: 0x0034, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0014, lo: 0x91, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x98},
+	{value: 0x0014, lo: 0x99, hi: 0x9b},
+	{value: 0x0010, lo: 0x9c, hi: 0xbf},
+	// Block 0xdf, offset 0x4bb
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x86, hi: 0x89},
+	{value: 0x0014, lo: 0x8a, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0014, lo: 0x98, hi: 0x98},
+	{value: 0x0034, lo: 0x99, hi: 0x99},
+	{value: 0x0010, lo: 0x9d, hi: 0x9d},
+	// Block 0xe0, offset 0x4c2
+	{value: 0x0010, lo: 0x80, hi: 0xb8},
+	// Block 0xe1, offset 0x4c3
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb6},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xe2, offset 0x4c9
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xb2, hi: 0xbf},
+	// Block 0xe3, offset 0x4cc
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x0014, lo: 0x92, hi: 0xa7},
+	{value: 0x0010, lo: 0xa9, hi: 0xa9},
+	{value: 0x0014, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb6},
+	// Block 0xe4, offset 0x4d4
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x88, hi: 0x89},
+	{value: 0x0010, lo: 0x8b, hi: 0xb0},
+	{value: 0x0014, lo: 0xb1, hi: 0xb6},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0014, lo: 0xbc, hi: 0xbd},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0xe5, offset 0x4db
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x85},
+	{value: 0x0010, lo: 0x86, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xa0, hi: 0xa5},
+	{value: 0x0010, lo: 0xa7, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xbf},
+	// Block 0xe6, offset 0x4e5
+	{value: 0x0010, lo: 0x80, hi: 0x8e},
+	{value: 0x0014, lo: 0x90, hi: 0x91},
+	{value: 0x0010, lo: 0x93, hi: 0x94},
+	{value: 0x0014, lo: 0x95, hi: 0x95},
+	{value: 0x0010, lo: 0x96, hi: 0x96},
+	{value: 0x0034, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x98, hi: 0x98},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	// Block 0xe7, offset 0x4ed
+	{value: 0x0010, lo: 0xa0, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb6},
+	// Block 0xe8, offset 0x4f0
+	{value: 0x0010, lo: 0x80, hi: 0x99},
+	// Block 0xe9, offset 0x4f1
+	{value: 0x0010, lo: 0x80, hi: 0xae},
+	// Block 0xea, offset 0x4f2
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	// Block 0xeb, offset 0x4f3
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	// Block 0xec, offset 0x4f4
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	// Block 0xed, offset 0x4f6
+	{value: 0x0010, lo: 0x90, hi: 0xad},
+	{value: 0x0034, lo: 0xb0, hi: 0xb4},
+	// Block 0xee, offset 0x4f8
+	{value: 0x0010, lo: 0x80, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb6},
+	// Block 0xef, offset 0x4fa
+	{value: 0x0014, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xa3, hi: 0xb7},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0xf0, offset 0x4fe
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	// Block 0xf1, offset 0x4ff
+	{value: 0x2013, lo: 0x80, hi: 0x9f},
+	{value: 0x2012, lo: 0xa0, hi: 0xbf},
+	// Block 0xf2, offset 0x501
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0010, lo: 0x90, hi: 0xbe},
+	// Block 0xf3, offset 0x503
+	{value: 0x0014, lo: 0x8f, hi: 0x9f},
+	// Block 0xf4, offset 0x504
+	{value: 0x0014, lo: 0xa0, hi: 0xa1},
+	// Block 0xf5, offset 0x505
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xbc},
+	// Block 0xf6, offset 0x507
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x0034, lo: 0x9e, hi: 0x9e},
+	{value: 0x0014, lo: 0xa0, hi: 0xa3},
+	// Block 0xf7, offset 0x50c
+	{value: 0x0030, lo: 0xa5, hi: 0xa6},
+	{value: 0x0034, lo: 0xa7, hi: 0xa9},
+	{value: 0x0030, lo: 0xad, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbf},
+	// Block 0xf8, offset 0x511
+	{value: 0x0034, lo: 0x80, hi: 0x82},
+	{value: 0x0024, lo: 0x85, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8b},
+	{value: 0x0024, lo: 0xaa, hi: 0xad},
+	// Block 0xf9, offset 0x515
+	{value: 0x0024, lo: 0x82, hi: 0x84},
+	// Block 0xfa, offset 0x516
+	{value: 0x0013, lo: 0x80, hi: 0x99},
+	{value: 0x0012, lo: 0x9a, hi: 0xb3},
+	{value: 0x0013, lo: 0xb4, hi: 0xbf},
+	// Block 0xfb, offset 0x519
+	{value: 0x0013, lo: 0x80, hi: 0x8d},
+	{value: 0x0012, lo: 0x8e, hi: 0x94},
+	{value: 0x0012, lo: 0x96, hi: 0xa7},
+	{value: 0x0013, lo: 0xa8, hi: 0xbf},
+	// Block 0xfc, offset 0x51d
+	{value: 0x0013, lo: 0x80, hi: 0x81},
+	{value: 0x0012, lo: 0x82, hi: 0x9b},
+	{value: 0x0013, lo: 0x9c, hi: 0x9c},
+	{value: 0x0013, lo: 0x9e, hi: 0x9f},
+	{value: 0x0013, lo: 0xa2, hi: 0xa2},
+	{value: 0x0013, lo: 0xa5, hi: 0xa6},
+	{value: 0x0013, lo: 0xa9, hi: 0xac},
+	{value: 0x0013, lo: 0xae, hi: 0xb5},
+	{value: 0x0012, lo: 0xb6, hi: 0xb9},
+	{value: 0x0012, lo: 0xbb, hi: 0xbb},
+	{value: 0x0012, lo: 0xbd, hi: 0xbf},
+	// Block 0xfd, offset 0x528
+	{value: 0x0012, lo: 0x80, hi: 0x83},
+	{value: 0x0012, lo: 0x85, hi: 0x8f},
+	{value: 0x0013, lo: 0x90, hi: 0xa9},
+	{value: 0x0012, lo: 0xaa, hi: 0xbf},
+	// Block 0xfe, offset 0x52c
+	{value: 0x0012, lo: 0x80, hi: 0x83},
+	{value: 0x0013, lo: 0x84, hi: 0x85},
+	{value: 0x0013, lo: 0x87, hi: 0x8a},
+	{value: 0x0013, lo: 0x8d, hi: 0x94},
+	{value: 0x0013, lo: 0x96, hi: 0x9c},
+	{value: 0x0012, lo: 0x9e, hi: 0xb7},
+	{value: 0x0013, lo: 0xb8, hi: 0xb9},
+	{value: 0x0013, lo: 0xbb, hi: 0xbe},
+	// Block 0xff, offset 0x534
+	{value: 0x0013, lo: 0x80, hi: 0x84},
+	{value: 0x0013, lo: 0x86, hi: 0x86},
+	{value: 0x0013, lo: 0x8a, hi: 0x90},
+	{value: 0x0012, lo: 0x92, hi: 0xab},
+	{value: 0x0013, lo: 0xac, hi: 0xbf},
+	// Block 0x100, offset 0x539
+	{value: 0x0013, lo: 0x80, hi: 0x85},
+	{value: 0x0012, lo: 0x86, hi: 0x9f},
+	{value: 0x0013, lo: 0xa0, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xbf},
+	// Block 0x101, offset 0x53d
+	{value: 0x0012, lo: 0x80, hi: 0x93},
+	{value: 0x0013, lo: 0x94, hi: 0xad},
+	{value: 0x0012, lo: 0xae, hi: 0xbf},
+	// Block 0x102, offset 0x540
+	{value: 0x0012, lo: 0x80, hi: 0x87},
+	{value: 0x0013, lo: 0x88, hi: 0xa1},
+	{value: 0x0012, lo: 0xa2, hi: 0xbb},
+	{value: 0x0013, lo: 0xbc, hi: 0xbf},
+	// Block 0x103, offset 0x544
+	{value: 0x0013, lo: 0x80, hi: 0x95},
+	{value: 0x0012, lo: 0x96, hi: 0xaf},
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0x104, offset 0x547
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	{value: 0x0012, lo: 0x8a, hi: 0xa5},
+	{value: 0x0013, lo: 0xa8, hi: 0xbf},
+	// Block 0x105, offset 0x54a
+	{value: 0x0013, lo: 0x80, hi: 0x80},
+	{value: 0x0012, lo: 0x82, hi: 0x9a},
+	{value: 0x0012, lo: 0x9c, hi: 0xa1},
+	{value: 0x0013, lo: 0xa2, hi: 0xba},
+	{value: 0x0012, lo: 0xbc, hi: 0xbf},
+	// Block 0x106, offset 0x54f
+	{value: 0x0012, lo: 0x80, hi: 0x94},
+	{value: 0x0012, lo: 0x96, hi: 0x9b},
+	{value: 0x0013, lo: 0x9c, hi: 0xb4},
+	{value: 0x0012, lo: 0xb6, hi: 0xbf},
+	// Block 0x107, offset 0x553
+	{value: 0x0012, lo: 0x80, hi: 0x8e},
+	{value: 0x0012, lo: 0x90, hi: 0x95},
+	{value: 0x0013, lo: 0x96, hi: 0xae},
+	{value: 0x0012, lo: 0xb0, hi: 0xbf},
+	// Block 0x108, offset 0x557
+	{value: 0x0012, lo: 0x80, hi: 0x88},
+	{value: 0x0012, lo: 0x8a, hi: 0x8f},
+	{value: 0x0013, lo: 0x90, hi: 0xa8},
+	{value: 0x0012, lo: 0xaa, hi: 0xbf},
+	// Block 0x109, offset 0x55b
+	{value: 0x0012, lo: 0x80, hi: 0x82},
+	{value: 0x0012, lo: 0x84, hi: 0x89},
+	{value: 0x0017, lo: 0x8a, hi: 0x8b},
+	{value: 0x0010, lo: 0x8e, hi: 0xbf},
+	// Block 0x10a, offset 0x55f
+	{value: 0x0014, lo: 0x80, hi: 0xb6},
+	{value: 0x0014, lo: 0xbb, hi: 0xbf},
+	// Block 0x10b, offset 0x561
+	{value: 0x0014, lo: 0x80, hi: 0xac},
+	{value: 0x0014, lo: 0xb5, hi: 0xb5},
+	// Block 0x10c, offset 0x563
+	{value: 0x0014, lo: 0x84, hi: 0x84},
+	{value: 0x0014, lo: 0x9b, hi: 0x9f},
+	{value: 0x0014, lo: 0xa1, hi: 0xaf},
+	// Block 0x10d, offset 0x566
+	{value: 0x0024, lo: 0x80, hi: 0x86},
+	{value: 0x0024, lo: 0x88, hi: 0x98},
+	{value: 0x0024, lo: 0x9b, hi: 0xa1},
+	{value: 0x0024, lo: 0xa3, hi: 0xa4},
+	{value: 0x0024, lo: 0xa6, hi: 0xaa},
+	// Block 0x10e, offset 0x56b
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0034, lo: 0x90, hi: 0x96},
+	// Block 0x10f, offset 0x56d
+	{value: 0xb852, lo: 0x80, hi: 0x81},
+	{value: 0xbb52, lo: 0x82, hi: 0x83},
+	{value: 0x0024, lo: 0x84, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x110, offset 0x572
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x9f},
+	{value: 0x0010, lo: 0xa1, hi: 0xa2},
+	{value: 0x0010, lo: 0xa4, hi: 0xa4},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0010, lo: 0xa9, hi: 0xb2},
+	{value: 0x0010, lo: 0xb4, hi: 0xb7},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	// Block 0x111, offset 0x57b
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x8b, hi: 0x9b},
+	{value: 0x0010, lo: 0xa1, hi: 0xa3},
+	{value: 0x0010, lo: 0xa5, hi: 0xa9},
+	{value: 0x0010, lo: 0xab, hi: 0xbb},
+	// Block 0x112, offset 0x580
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0x113, offset 0x581
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	{value: 0x0013, lo: 0x90, hi: 0xa9},
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0x114, offset 0x584
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	// Block 0x115, offset 0x585
+	{value: 0x0014, lo: 0xbb, hi: 0xbf},
+	// Block 0x116, offset 0x586
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0014, lo: 0xa0, hi: 0xbf},
+	// Block 0x117, offset 0x588
+	{value: 0x0014, lo: 0x80, hi: 0xbf},
+	// Block 0x118, offset 0x589
+	{value: 0x0014, lo: 0x80, hi: 0xaf},
+}
+
+// Total table size 14906 bytes (14KiB); checksum: 362795C7
diff --git a/vendor/golang.org/x/text/cases/tables12.0.0.go b/vendor/golang.org/x/text/cases/tables12.0.0.go
new file mode 100644
index 00000000..84d841b1
--- /dev/null
+++ b/vendor/golang.org/x/text/cases/tables12.0.0.go
@@ -0,0 +1,2359 @@
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
+
+//go:build go1.14 && !go1.16
+
+package cases
+
+// UnicodeVersion is the Unicode version from which the tables in this package are derived.
+const UnicodeVersion = "12.0.0"
+
+var xorData string = "" + // Size: 192 bytes
+	"\x00\x06\x07\x00\x01?\x00\x0f\x03\x00\x0f\x12\x00\x0f\x1f\x00\x0f\x1d" +
+	"\x00\x01\x13\x00\x0f\x16\x00\x0f\x0b\x00\x0f3\x00\x0f7\x00\x01#\x00\x0f?" +
+	"\x00\x0e'\x00\x0f/\x00\x0e>\x00\x0f*\x00\x0c&\x00\x0c*\x00\x0c;\x00\x0c9" +
+	"\x00\x0c%\x00\x01\x08\x00\x03\x0d\x00\x03\x09\x00\x02\x06\x00\x02\x02" +
+	"\x00\x02\x0c\x00\x01\x00\x00\x01\x03\x00\x01\x01\x00\x01 \x00\x01\x0c" +
+	"\x00\x01\x10\x00\x03\x10\x00\x036 \x00\x037 \x00\x0b#\x10\x00\x0b 0\x00" +
+	"\x0b!\x10\x00\x0b!0\x001\x00\x00\x0b(\x04\x00\x03\x04\x1e\x00\x0b)\x08" +
+	"\x00\x03\x0a\x00\x02:\x00\x02>\x00\x02,\x00\x02\x00\x00\x02\x10\x00\x01<" +
+	"\x00\x01&\x00\x01*\x00\x01.\x00\x010\x003 \x00\x01\x18\x00\x01(\x00\x01" +
+	"\x1e\x00\x01\x22"
+
+var exceptions string = "" + // Size: 2450 bytes
+	"\x00\x12\x12μΜΜ\x12\x12ssSSSs\x13\x18i̇i̇\x10\x09II\x13\x1bʼnʼNʼN\x11" +
+	"\x09sSS\x12\x12dždžDž\x12\x12dždžDŽ\x10\x12DŽDž\x12\x12ljljLj\x12\x12ljljLJ\x10\x12LJLj" +
+	"\x12\x12njnjNj\x12\x12njnjNJ\x10\x12NJNj\x13\x1bǰJ̌J̌\x12\x12dzdzDz\x12\x12dzdzDZ\x10" +
+	"\x12DZDz\x13\x18ⱥⱥ\x13\x18ⱦⱦ\x10\x1bⱾⱾ\x10\x1bⱿⱿ\x10\x1bⱯⱯ\x10\x1bⱭⱭ\x10" +
+	"\x1bⱰⱰ\x10\x1bꞫꞫ\x10\x1bꞬꞬ\x10\x1bꞍꞍ\x10\x1bꞪꞪ\x10\x1bꞮꞮ\x10\x1bⱢⱢ\x10" +
+	"\x1bꞭꞭ\x10\x1bⱮⱮ\x10\x1bⱤⱤ\x10\x1bꟅꟅ\x10\x1bꞱꞱ\x10\x1bꞲꞲ\x10\x1bꞰꞰ2\x12ι" +
+	"ΙΙ\x166ΐΪ́Ϊ́\x166ΰΫ́Ϋ́\x12\x12σΣΣ\x12\x12βΒΒ\x12\x12θΘΘ\x12\x12" +
+	"φΦΦ\x12\x12πΠΠ\x12\x12κΚΚ\x12\x12ρΡΡ\x12\x12εΕΕ\x14$եւԵՒԵւ\x10\x1bᲐა" +
+	"\x10\x1bᲑბ\x10\x1bᲒგ\x10\x1bᲓდ\x10\x1bᲔე\x10\x1bᲕვ\x10\x1bᲖზ\x10\x1bᲗთ" +
+	"\x10\x1bᲘი\x10\x1bᲙკ\x10\x1bᲚლ\x10\x1bᲛმ\x10\x1bᲜნ\x10\x1bᲝო\x10\x1bᲞპ" +
+	"\x10\x1bᲟჟ\x10\x1bᲠრ\x10\x1bᲡს\x10\x1bᲢტ\x10\x1bᲣუ\x10\x1bᲤფ\x10\x1bᲥქ" +
+	"\x10\x1bᲦღ\x10\x1bᲧყ\x10\x1bᲨშ\x10\x1bᲩჩ\x10\x1bᲪც\x10\x1bᲫძ\x10\x1bᲬწ" +
+	"\x10\x1bᲭჭ\x10\x1bᲮხ\x10\x1bᲯჯ\x10\x1bᲰჰ\x10\x1bᲱჱ\x10\x1bᲲჲ\x10\x1bᲳჳ" +
+	"\x10\x1bᲴჴ\x10\x1bᲵჵ\x10\x1bᲶჶ\x10\x1bᲷჷ\x10\x1bᲸჸ\x10\x1bᲹჹ\x10\x1bᲺჺ" +
+	"\x10\x1bᲽჽ\x10\x1bᲾჾ\x10\x1bᲿჿ\x12\x12вВВ\x12\x12дДД\x12\x12оОО\x12\x12с" +
+	"СС\x12\x12тТТ\x12\x12тТТ\x12\x12ъЪЪ\x12\x12ѣѢѢ\x13\x1bꙋꙊꙊ\x13\x1bẖH̱H̱" +
+	"\x13\x1bẗT̈T̈\x13\x1bẘW̊W̊\x13\x1bẙY̊Y̊\x13\x1baʾAʾAʾ\x13\x1bṡṠṠ\x12" +
+	"\x10ssß\x14$ὐΥ̓Υ̓\x166ὒΥ̓̀Υ̓̀\x166ὔΥ̓́Υ̓́\x166ὖΥ̓͂Υ̓͂\x15+ἀιἈΙᾈ" +
+	"\x15+ἁιἉΙᾉ\x15+ἂιἊΙᾊ\x15+ἃιἋΙᾋ\x15+ἄιἌΙᾌ\x15+ἅιἍΙᾍ\x15+ἆιἎΙᾎ\x15+ἇιἏΙᾏ" +
+	"\x15\x1dἀιᾀἈΙ\x15\x1dἁιᾁἉΙ\x15\x1dἂιᾂἊΙ\x15\x1dἃιᾃἋΙ\x15\x1dἄιᾄἌΙ\x15" +
+	"\x1dἅιᾅἍΙ\x15\x1dἆιᾆἎΙ\x15\x1dἇιᾇἏΙ\x15+ἠιἨΙᾘ\x15+ἡιἩΙᾙ\x15+ἢιἪΙᾚ\x15+ἣι" +
+	"ἫΙᾛ\x15+ἤιἬΙᾜ\x15+ἥιἭΙᾝ\x15+ἦιἮΙᾞ\x15+ἧιἯΙᾟ\x15\x1dἠιᾐἨΙ\x15\x1dἡιᾑἩΙ" +
+	"\x15\x1dἢιᾒἪΙ\x15\x1dἣιᾓἫΙ\x15\x1dἤιᾔἬΙ\x15\x1dἥιᾕἭΙ\x15\x1dἦιᾖἮΙ\x15" +
+	"\x1dἧιᾗἯΙ\x15+ὠιὨΙᾨ\x15+ὡιὩΙᾩ\x15+ὢιὪΙᾪ\x15+ὣιὫΙᾫ\x15+ὤιὬΙᾬ\x15+ὥιὭΙᾭ" +
+	"\x15+ὦιὮΙᾮ\x15+ὧιὯΙᾯ\x15\x1dὠιᾠὨΙ\x15\x1dὡιᾡὩΙ\x15\x1dὢιᾢὪΙ\x15\x1dὣιᾣὫΙ" +
+	"\x15\x1dὤιᾤὬΙ\x15\x1dὥιᾥὭΙ\x15\x1dὦιᾦὮΙ\x15\x1dὧιᾧὯΙ\x15-ὰιᾺΙᾺͅ\x14#αιΑΙ" +
+	"ᾼ\x14$άιΆΙΆͅ\x14$ᾶΑ͂Α͂\x166ᾶιΑ͂Ιᾼ͂\x14\x1cαιᾳΑΙ\x12\x12ιΙΙ\x15-ὴιῊΙ" +
+	"Ὴͅ\x14#ηιΗΙῌ\x14$ήιΉΙΉͅ\x14$ῆΗ͂Η͂\x166ῆιΗ͂Ιῌ͂\x14\x1cηιῃΗΙ\x166ῒΙ" +
+	"̈̀Ϊ̀\x166ΐΪ́Ϊ́\x14$ῖΙ͂Ι͂\x166ῗΪ͂Ϊ͂\x166ῢΫ̀Ϋ̀\x166ΰΫ́Ϋ" +
+	"́\x14$ῤΡ̓Ρ̓\x14$ῦΥ͂Υ͂\x166ῧΫ͂Ϋ͂\x15-ὼιῺΙῺͅ\x14#ωιΩΙῼ\x14$ώιΏΙΏͅ" +
+	"\x14$ῶΩ͂Ω͂\x166ῶιΩ͂Ιῼ͂\x14\x1cωιῳΩΙ\x12\x10ωω\x11\x08kk\x12\x10åå\x12" +
+	"\x10ɫɫ\x12\x10ɽɽ\x10\x12ȺȺ\x10\x12ȾȾ\x12\x10ɑɑ\x12\x10ɱɱ\x12\x10ɐɐ\x12" +
+	"\x10ɒɒ\x12\x10ȿȿ\x12\x10ɀɀ\x12\x10ɥɥ\x12\x10ɦɦ\x12\x10ɜɜ\x12\x10ɡɡ\x12" +
+	"\x10ɬɬ\x12\x10ɪɪ\x12\x10ʞʞ\x12\x10ʇʇ\x12\x10ʝʝ\x12\x10ʂʂ\x12\x12ffFFFf" +
+	"\x12\x12fiFIFi\x12\x12flFLFl\x13\x1bffiFFIFfi\x13\x1bfflFFLFfl\x12\x12st" +
+	"STSt\x12\x12stSTSt\x14$մնՄՆՄն\x14$մեՄԵՄե\x14$միՄԻՄի\x14$վնՎՆՎն\x14$մխՄԽՄ" +
+	"խ"
+
+// lookup returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *caseTrie) lookup(s []byte) (v uint16, sz int) {
+	c0 := s[0]
+	switch {
+	case c0 < 0x80: // is ASCII
+		return caseValues[c0], 1
+	case c0 < 0xC2:
+		return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+	case c0 < 0xE0: // 2-byte UTF-8
+		if len(s) < 2 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c1), 2
+	case c0 < 0xF0: // 3-byte UTF-8
+		if len(s) < 3 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c2), 3
+	case c0 < 0xF8: // 4-byte UTF-8
+		if len(s) < 4 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		o = uint32(i)<<6 + uint32(c2)
+		i = caseIndex[o]
+		c3 := s[3]
+		if c3 < 0x80 || 0xC0 <= c3 {
+			return 0, 3 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c3), 4
+	}
+	// Illegal rune
+	return 0, 1
+}
+
+// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *caseTrie) lookupUnsafe(s []byte) uint16 {
+	c0 := s[0]
+	if c0 < 0x80 { // is ASCII
+		return caseValues[c0]
+	}
+	i := caseIndex[c0]
+	if c0 < 0xE0 { // 2-byte UTF-8
+		return t.lookupValue(uint32(i), s[1])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[1])]
+	if c0 < 0xF0 { // 3-byte UTF-8
+		return t.lookupValue(uint32(i), s[2])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[2])]
+	if c0 < 0xF8 { // 4-byte UTF-8
+		return t.lookupValue(uint32(i), s[3])
+	}
+	return 0
+}
+
+// lookupString returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *caseTrie) lookupString(s string) (v uint16, sz int) {
+	c0 := s[0]
+	switch {
+	case c0 < 0x80: // is ASCII
+		return caseValues[c0], 1
+	case c0 < 0xC2:
+		return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+	case c0 < 0xE0: // 2-byte UTF-8
+		if len(s) < 2 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c1), 2
+	case c0 < 0xF0: // 3-byte UTF-8
+		if len(s) < 3 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c2), 3
+	case c0 < 0xF8: // 4-byte UTF-8
+		if len(s) < 4 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		o = uint32(i)<<6 + uint32(c2)
+		i = caseIndex[o]
+		c3 := s[3]
+		if c3 < 0x80 || 0xC0 <= c3 {
+			return 0, 3 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c3), 4
+	}
+	// Illegal rune
+	return 0, 1
+}
+
+// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *caseTrie) lookupStringUnsafe(s string) uint16 {
+	c0 := s[0]
+	if c0 < 0x80 { // is ASCII
+		return caseValues[c0]
+	}
+	i := caseIndex[c0]
+	if c0 < 0xE0 { // 2-byte UTF-8
+		return t.lookupValue(uint32(i), s[1])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[1])]
+	if c0 < 0xF0 { // 3-byte UTF-8
+		return t.lookupValue(uint32(i), s[2])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[2])]
+	if c0 < 0xF8 { // 4-byte UTF-8
+		return t.lookupValue(uint32(i), s[3])
+	}
+	return 0
+}
+
+// caseTrie. Total size: 12396 bytes (12.11 KiB). Checksum: c0656238384c3da1.
+type caseTrie struct{}
+
+func newCaseTrie(i int) *caseTrie {
+	return &caseTrie{}
+}
+
+// lookupValue determines the type of block n and looks up the value for b.
+func (t *caseTrie) lookupValue(n uint32, b byte) uint16 {
+	switch {
+	case n < 20:
+		return uint16(caseValues[n<<6+uint32(b)])
+	default:
+		n -= 20
+		return uint16(sparse.lookup(n, b))
+	}
+}
+
+// caseValues: 22 blocks, 1408 entries, 2816 bytes
+// The third block is the zero block.
+var caseValues = [1408]uint16{
+	// Block 0x0, offset 0x0
+	0x27: 0x0054,
+	0x2e: 0x0054,
+	0x30: 0x0010, 0x31: 0x0010, 0x32: 0x0010, 0x33: 0x0010, 0x34: 0x0010, 0x35: 0x0010,
+	0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0054,
+	// Block 0x1, offset 0x40
+	0x41: 0x2013, 0x42: 0x2013, 0x43: 0x2013, 0x44: 0x2013, 0x45: 0x2013,
+	0x46: 0x2013, 0x47: 0x2013, 0x48: 0x2013, 0x49: 0x2013, 0x4a: 0x2013, 0x4b: 0x2013,
+	0x4c: 0x2013, 0x4d: 0x2013, 0x4e: 0x2013, 0x4f: 0x2013, 0x50: 0x2013, 0x51: 0x2013,
+	0x52: 0x2013, 0x53: 0x2013, 0x54: 0x2013, 0x55: 0x2013, 0x56: 0x2013, 0x57: 0x2013,
+	0x58: 0x2013, 0x59: 0x2013, 0x5a: 0x2013,
+	0x5e: 0x0004, 0x5f: 0x0010, 0x60: 0x0004, 0x61: 0x2012, 0x62: 0x2012, 0x63: 0x2012,
+	0x64: 0x2012, 0x65: 0x2012, 0x66: 0x2012, 0x67: 0x2012, 0x68: 0x2012, 0x69: 0x2012,
+	0x6a: 0x2012, 0x6b: 0x2012, 0x6c: 0x2012, 0x6d: 0x2012, 0x6e: 0x2012, 0x6f: 0x2012,
+	0x70: 0x2012, 0x71: 0x2012, 0x72: 0x2012, 0x73: 0x2012, 0x74: 0x2012, 0x75: 0x2012,
+	0x76: 0x2012, 0x77: 0x2012, 0x78: 0x2012, 0x79: 0x2012, 0x7a: 0x2012,
+	// Block 0x2, offset 0x80
+	// Block 0x3, offset 0xc0
+	0xc0: 0x0852, 0xc1: 0x0b53, 0xc2: 0x0113, 0xc3: 0x0112, 0xc4: 0x0113, 0xc5: 0x0112,
+	0xc6: 0x0b53, 0xc7: 0x0f13, 0xc8: 0x0f12, 0xc9: 0x0e53, 0xca: 0x1153, 0xcb: 0x0713,
+	0xcc: 0x0712, 0xcd: 0x0012, 0xce: 0x1453, 0xcf: 0x1753, 0xd0: 0x1a53, 0xd1: 0x0313,
+	0xd2: 0x0312, 0xd3: 0x1d53, 0xd4: 0x2053, 0xd5: 0x2352, 0xd6: 0x2653, 0xd7: 0x2653,
+	0xd8: 0x0113, 0xd9: 0x0112, 0xda: 0x2952, 0xdb: 0x0012, 0xdc: 0x1d53, 0xdd: 0x2c53,
+	0xde: 0x2f52, 0xdf: 0x3253, 0xe0: 0x0113, 0xe1: 0x0112, 0xe2: 0x0113, 0xe3: 0x0112,
+	0xe4: 0x0113, 0xe5: 0x0112, 0xe6: 0x3553, 0xe7: 0x0f13, 0xe8: 0x0f12, 0xe9: 0x3853,
+	0xea: 0x0012, 0xeb: 0x0012, 0xec: 0x0113, 0xed: 0x0112, 0xee: 0x3553, 0xef: 0x1f13,
+	0xf0: 0x1f12, 0xf1: 0x3b53, 0xf2: 0x3e53, 0xf3: 0x0713, 0xf4: 0x0712, 0xf5: 0x0313,
+	0xf6: 0x0312, 0xf7: 0x4153, 0xf8: 0x0113, 0xf9: 0x0112, 0xfa: 0x0012, 0xfb: 0x0010,
+	0xfc: 0x0113, 0xfd: 0x0112, 0xfe: 0x0012, 0xff: 0x4452,
+	// Block 0x4, offset 0x100
+	0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x02db, 0x105: 0x0359,
+	0x106: 0x03da, 0x107: 0x043b, 0x108: 0x04b9, 0x109: 0x053a, 0x10a: 0x059b, 0x10b: 0x0619,
+	0x10c: 0x069a, 0x10d: 0x0313, 0x10e: 0x0312, 0x10f: 0x1f13, 0x110: 0x1f12, 0x111: 0x0313,
+	0x112: 0x0312, 0x113: 0x0713, 0x114: 0x0712, 0x115: 0x0313, 0x116: 0x0312, 0x117: 0x0f13,
+	0x118: 0x0f12, 0x119: 0x0313, 0x11a: 0x0312, 0x11b: 0x0713, 0x11c: 0x0712, 0x11d: 0x1452,
+	0x11e: 0x0113, 0x11f: 0x0112, 0x120: 0x0113, 0x121: 0x0112, 0x122: 0x0113, 0x123: 0x0112,
+	0x124: 0x0113, 0x125: 0x0112, 0x126: 0x0113, 0x127: 0x0112, 0x128: 0x0113, 0x129: 0x0112,
+	0x12a: 0x0113, 0x12b: 0x0112, 0x12c: 0x0113, 0x12d: 0x0112, 0x12e: 0x0113, 0x12f: 0x0112,
+	0x130: 0x06fa, 0x131: 0x07ab, 0x132: 0x0829, 0x133: 0x08aa, 0x134: 0x0113, 0x135: 0x0112,
+	0x136: 0x2353, 0x137: 0x4453, 0x138: 0x0113, 0x139: 0x0112, 0x13a: 0x0113, 0x13b: 0x0112,
+	0x13c: 0x0113, 0x13d: 0x0112, 0x13e: 0x0113, 0x13f: 0x0112,
+	// Block 0x5, offset 0x140
+	0x140: 0x0a8a, 0x141: 0x0313, 0x142: 0x0312, 0x143: 0x0853, 0x144: 0x4753, 0x145: 0x4a53,
+	0x146: 0x0113, 0x147: 0x0112, 0x148: 0x0113, 0x149: 0x0112, 0x14a: 0x0113, 0x14b: 0x0112,
+	0x14c: 0x0113, 0x14d: 0x0112, 0x14e: 0x0113, 0x14f: 0x0112, 0x150: 0x0b0a, 0x151: 0x0b8a,
+	0x152: 0x0c0a, 0x153: 0x0b52, 0x154: 0x0b52, 0x155: 0x0012, 0x156: 0x0e52, 0x157: 0x1152,
+	0x158: 0x0012, 0x159: 0x1752, 0x15a: 0x0012, 0x15b: 0x1a52, 0x15c: 0x0c8a, 0x15d: 0x0012,
+	0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1d52, 0x161: 0x0d0a, 0x162: 0x0012, 0x163: 0x2052,
+	0x164: 0x0012, 0x165: 0x0d8a, 0x166: 0x0e0a, 0x167: 0x0012, 0x168: 0x2652, 0x169: 0x2652,
+	0x16a: 0x0e8a, 0x16b: 0x0f0a, 0x16c: 0x0f8a, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1d52,
+	0x170: 0x0012, 0x171: 0x100a, 0x172: 0x2c52, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x3252,
+	0x176: 0x0012, 0x177: 0x0012, 0x178: 0x0012, 0x179: 0x0012, 0x17a: 0x0012, 0x17b: 0x0012,
+	0x17c: 0x0012, 0x17d: 0x108a, 0x17e: 0x0012, 0x17f: 0x0012,
+	// Block 0x6, offset 0x180
+	0x180: 0x3552, 0x181: 0x0012, 0x182: 0x110a, 0x183: 0x3852, 0x184: 0x0012, 0x185: 0x0012,
+	0x186: 0x0012, 0x187: 0x118a, 0x188: 0x3552, 0x189: 0x4752, 0x18a: 0x3b52, 0x18b: 0x3e52,
+	0x18c: 0x4a52, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012,
+	0x192: 0x4152, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012,
+	0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x120a,
+	0x19e: 0x128a, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012,
+	0x1a4: 0x0012, 0x1a5: 0x0012, 0x1a6: 0x0012, 0x1a7: 0x0012, 0x1a8: 0x0012, 0x1a9: 0x0012,
+	0x1aa: 0x0012, 0x1ab: 0x0012, 0x1ac: 0x0012, 0x1ad: 0x0012, 0x1ae: 0x0012, 0x1af: 0x0012,
+	0x1b0: 0x0015, 0x1b1: 0x0015, 0x1b2: 0x0015, 0x1b3: 0x0015, 0x1b4: 0x0015, 0x1b5: 0x0015,
+	0x1b6: 0x0015, 0x1b7: 0x0015, 0x1b8: 0x0015, 0x1b9: 0x0014, 0x1ba: 0x0014, 0x1bb: 0x0014,
+	0x1bc: 0x0014, 0x1bd: 0x0014, 0x1be: 0x0014, 0x1bf: 0x0014,
+	// Block 0x7, offset 0x1c0
+	0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x130d,
+	0x1c6: 0x0024, 0x1c7: 0x0034, 0x1c8: 0x0034, 0x1c9: 0x0034, 0x1ca: 0x0024, 0x1cb: 0x0024,
+	0x1cc: 0x0024, 0x1cd: 0x0034, 0x1ce: 0x0034, 0x1cf: 0x0014, 0x1d0: 0x0024, 0x1d1: 0x0024,
+	0x1d2: 0x0024, 0x1d3: 0x0034, 0x1d4: 0x0034, 0x1d5: 0x0034, 0x1d6: 0x0034, 0x1d7: 0x0024,
+	0x1d8: 0x0034, 0x1d9: 0x0034, 0x1da: 0x0034, 0x1db: 0x0024, 0x1dc: 0x0034, 0x1dd: 0x0034,
+	0x1de: 0x0034, 0x1df: 0x0034, 0x1e0: 0x0034, 0x1e1: 0x0034, 0x1e2: 0x0034, 0x1e3: 0x0024,
+	0x1e4: 0x0024, 0x1e5: 0x0024, 0x1e6: 0x0024, 0x1e7: 0x0024, 0x1e8: 0x0024, 0x1e9: 0x0024,
+	0x1ea: 0x0024, 0x1eb: 0x0024, 0x1ec: 0x0024, 0x1ed: 0x0024, 0x1ee: 0x0024, 0x1ef: 0x0024,
+	0x1f0: 0x0113, 0x1f1: 0x0112, 0x1f2: 0x0113, 0x1f3: 0x0112, 0x1f4: 0x0014, 0x1f5: 0x0004,
+	0x1f6: 0x0113, 0x1f7: 0x0112, 0x1fa: 0x0015, 0x1fb: 0x4d52,
+	0x1fc: 0x5052, 0x1fd: 0x5052, 0x1ff: 0x5353,
+	// Block 0x8, offset 0x200
+	0x204: 0x0004, 0x205: 0x0004,
+	0x206: 0x2a13, 0x207: 0x0054, 0x208: 0x2513, 0x209: 0x2713, 0x20a: 0x2513,
+	0x20c: 0x5653, 0x20e: 0x5953, 0x20f: 0x5c53, 0x210: 0x138a, 0x211: 0x2013,
+	0x212: 0x2013, 0x213: 0x2013, 0x214: 0x2013, 0x215: 0x2013, 0x216: 0x2013, 0x217: 0x2013,
+	0x218: 0x2013, 0x219: 0x2013, 0x21a: 0x2013, 0x21b: 0x2013, 0x21c: 0x2013, 0x21d: 0x2013,
+	0x21e: 0x2013, 0x21f: 0x2013, 0x220: 0x5f53, 0x221: 0x5f53, 0x223: 0x5f53,
+	0x224: 0x5f53, 0x225: 0x5f53, 0x226: 0x5f53, 0x227: 0x5f53, 0x228: 0x5f53, 0x229: 0x5f53,
+	0x22a: 0x5f53, 0x22b: 0x5f53, 0x22c: 0x2a12, 0x22d: 0x2512, 0x22e: 0x2712, 0x22f: 0x2512,
+	0x230: 0x14ca, 0x231: 0x2012, 0x232: 0x2012, 0x233: 0x2012, 0x234: 0x2012, 0x235: 0x2012,
+	0x236: 0x2012, 0x237: 0x2012, 0x238: 0x2012, 0x239: 0x2012, 0x23a: 0x2012, 0x23b: 0x2012,
+	0x23c: 0x2012, 0x23d: 0x2012, 0x23e: 0x2012, 0x23f: 0x2012,
+	// Block 0x9, offset 0x240
+	0x240: 0x5f52, 0x241: 0x5f52, 0x242: 0x160a, 0x243: 0x5f52, 0x244: 0x5f52, 0x245: 0x5f52,
+	0x246: 0x5f52, 0x247: 0x5f52, 0x248: 0x5f52, 0x249: 0x5f52, 0x24a: 0x5f52, 0x24b: 0x5f52,
+	0x24c: 0x5652, 0x24d: 0x5952, 0x24e: 0x5c52, 0x24f: 0x1813, 0x250: 0x168a, 0x251: 0x170a,
+	0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x178a, 0x256: 0x180a, 0x257: 0x1812,
+	0x258: 0x0113, 0x259: 0x0112, 0x25a: 0x0113, 0x25b: 0x0112, 0x25c: 0x0113, 0x25d: 0x0112,
+	0x25e: 0x0113, 0x25f: 0x0112, 0x260: 0x0113, 0x261: 0x0112, 0x262: 0x0113, 0x263: 0x0112,
+	0x264: 0x0113, 0x265: 0x0112, 0x266: 0x0113, 0x267: 0x0112, 0x268: 0x0113, 0x269: 0x0112,
+	0x26a: 0x0113, 0x26b: 0x0112, 0x26c: 0x0113, 0x26d: 0x0112, 0x26e: 0x0113, 0x26f: 0x0112,
+	0x270: 0x188a, 0x271: 0x190a, 0x272: 0x0b12, 0x273: 0x5352, 0x274: 0x6253, 0x275: 0x198a,
+	0x277: 0x0f13, 0x278: 0x0f12, 0x279: 0x0b13, 0x27a: 0x0113, 0x27b: 0x0112,
+	0x27c: 0x0012, 0x27d: 0x4d53, 0x27e: 0x5053, 0x27f: 0x5053,
+	// Block 0xa, offset 0x280
+	0x280: 0x6852, 0x281: 0x6852, 0x282: 0x6852, 0x283: 0x6852, 0x284: 0x6852, 0x285: 0x6852,
+	0x286: 0x6852, 0x287: 0x1a0a, 0x288: 0x0012,
+	0x291: 0x0034,
+	0x292: 0x0024, 0x293: 0x0024, 0x294: 0x0024, 0x295: 0x0024, 0x296: 0x0034, 0x297: 0x0024,
+	0x298: 0x0024, 0x299: 0x0024, 0x29a: 0x0034, 0x29b: 0x0034, 0x29c: 0x0024, 0x29d: 0x0024,
+	0x29e: 0x0024, 0x29f: 0x0024, 0x2a0: 0x0024, 0x2a1: 0x0024, 0x2a2: 0x0034, 0x2a3: 0x0034,
+	0x2a4: 0x0034, 0x2a5: 0x0034, 0x2a6: 0x0034, 0x2a7: 0x0034, 0x2a8: 0x0024, 0x2a9: 0x0024,
+	0x2aa: 0x0034, 0x2ab: 0x0024, 0x2ac: 0x0024, 0x2ad: 0x0034, 0x2ae: 0x0034, 0x2af: 0x0024,
+	0x2b0: 0x0034, 0x2b1: 0x0034, 0x2b2: 0x0034, 0x2b3: 0x0034, 0x2b4: 0x0034, 0x2b5: 0x0034,
+	0x2b6: 0x0034, 0x2b7: 0x0034, 0x2b8: 0x0034, 0x2b9: 0x0034, 0x2ba: 0x0034, 0x2bb: 0x0034,
+	0x2bc: 0x0034, 0x2bd: 0x0034, 0x2bf: 0x0034,
+	// Block 0xb, offset 0x2c0
+	0x2c0: 0x7053, 0x2c1: 0x7053, 0x2c2: 0x7053, 0x2c3: 0x7053, 0x2c4: 0x7053, 0x2c5: 0x7053,
+	0x2c7: 0x7053,
+	0x2cd: 0x7053, 0x2d0: 0x1aea, 0x2d1: 0x1b6a,
+	0x2d2: 0x1bea, 0x2d3: 0x1c6a, 0x2d4: 0x1cea, 0x2d5: 0x1d6a, 0x2d6: 0x1dea, 0x2d7: 0x1e6a,
+	0x2d8: 0x1eea, 0x2d9: 0x1f6a, 0x2da: 0x1fea, 0x2db: 0x206a, 0x2dc: 0x20ea, 0x2dd: 0x216a,
+	0x2de: 0x21ea, 0x2df: 0x226a, 0x2e0: 0x22ea, 0x2e1: 0x236a, 0x2e2: 0x23ea, 0x2e3: 0x246a,
+	0x2e4: 0x24ea, 0x2e5: 0x256a, 0x2e6: 0x25ea, 0x2e7: 0x266a, 0x2e8: 0x26ea, 0x2e9: 0x276a,
+	0x2ea: 0x27ea, 0x2eb: 0x286a, 0x2ec: 0x28ea, 0x2ed: 0x296a, 0x2ee: 0x29ea, 0x2ef: 0x2a6a,
+	0x2f0: 0x2aea, 0x2f1: 0x2b6a, 0x2f2: 0x2bea, 0x2f3: 0x2c6a, 0x2f4: 0x2cea, 0x2f5: 0x2d6a,
+	0x2f6: 0x2dea, 0x2f7: 0x2e6a, 0x2f8: 0x2eea, 0x2f9: 0x2f6a, 0x2fa: 0x2fea,
+	0x2fc: 0x0014, 0x2fd: 0x306a, 0x2fe: 0x30ea, 0x2ff: 0x316a,
+	// Block 0xc, offset 0x300
+	0x300: 0x0812, 0x301: 0x0812, 0x302: 0x0812, 0x303: 0x0812, 0x304: 0x0812, 0x305: 0x0812,
+	0x308: 0x0813, 0x309: 0x0813, 0x30a: 0x0813, 0x30b: 0x0813,
+	0x30c: 0x0813, 0x30d: 0x0813, 0x310: 0x3b1a, 0x311: 0x0812,
+	0x312: 0x3bfa, 0x313: 0x0812, 0x314: 0x3d3a, 0x315: 0x0812, 0x316: 0x3e7a, 0x317: 0x0812,
+	0x319: 0x0813, 0x31b: 0x0813, 0x31d: 0x0813,
+	0x31f: 0x0813, 0x320: 0x0812, 0x321: 0x0812, 0x322: 0x0812, 0x323: 0x0812,
+	0x324: 0x0812, 0x325: 0x0812, 0x326: 0x0812, 0x327: 0x0812, 0x328: 0x0813, 0x329: 0x0813,
+	0x32a: 0x0813, 0x32b: 0x0813, 0x32c: 0x0813, 0x32d: 0x0813, 0x32e: 0x0813, 0x32f: 0x0813,
+	0x330: 0x9252, 0x331: 0x9252, 0x332: 0x9552, 0x333: 0x9552, 0x334: 0x9852, 0x335: 0x9852,
+	0x336: 0x9b52, 0x337: 0x9b52, 0x338: 0x9e52, 0x339: 0x9e52, 0x33a: 0xa152, 0x33b: 0xa152,
+	0x33c: 0x4d52, 0x33d: 0x4d52,
+	// Block 0xd, offset 0x340
+	0x340: 0x3fba, 0x341: 0x40aa, 0x342: 0x419a, 0x343: 0x428a, 0x344: 0x437a, 0x345: 0x446a,
+	0x346: 0x455a, 0x347: 0x464a, 0x348: 0x4739, 0x349: 0x4829, 0x34a: 0x4919, 0x34b: 0x4a09,
+	0x34c: 0x4af9, 0x34d: 0x4be9, 0x34e: 0x4cd9, 0x34f: 0x4dc9, 0x350: 0x4eba, 0x351: 0x4faa,
+	0x352: 0x509a, 0x353: 0x518a, 0x354: 0x527a, 0x355: 0x536a, 0x356: 0x545a, 0x357: 0x554a,
+	0x358: 0x5639, 0x359: 0x5729, 0x35a: 0x5819, 0x35b: 0x5909, 0x35c: 0x59f9, 0x35d: 0x5ae9,
+	0x35e: 0x5bd9, 0x35f: 0x5cc9, 0x360: 0x5dba, 0x361: 0x5eaa, 0x362: 0x5f9a, 0x363: 0x608a,
+	0x364: 0x617a, 0x365: 0x626a, 0x366: 0x635a, 0x367: 0x644a, 0x368: 0x6539, 0x369: 0x6629,
+	0x36a: 0x6719, 0x36b: 0x6809, 0x36c: 0x68f9, 0x36d: 0x69e9, 0x36e: 0x6ad9, 0x36f: 0x6bc9,
+	0x370: 0x0812, 0x371: 0x0812, 0x372: 0x6cba, 0x373: 0x6dca, 0x374: 0x6e9a,
+	0x376: 0x6f7a, 0x377: 0x705a, 0x378: 0x0813, 0x379: 0x0813, 0x37a: 0x9253, 0x37b: 0x9253,
+	0x37c: 0x7199, 0x37d: 0x0004, 0x37e: 0x726a, 0x37f: 0x0004,
+	// Block 0xe, offset 0x380
+	0x380: 0x0004, 0x381: 0x0004, 0x382: 0x72ea, 0x383: 0x73fa, 0x384: 0x74ca,
+	0x386: 0x75aa, 0x387: 0x768a, 0x388: 0x9553, 0x389: 0x9553, 0x38a: 0x9853, 0x38b: 0x9853,
+	0x38c: 0x77c9, 0x38d: 0x0004, 0x38e: 0x0004, 0x38f: 0x0004, 0x390: 0x0812, 0x391: 0x0812,
+	0x392: 0x789a, 0x393: 0x79da, 0x396: 0x7b1a, 0x397: 0x7bfa,
+	0x398: 0x0813, 0x399: 0x0813, 0x39a: 0x9b53, 0x39b: 0x9b53, 0x39d: 0x0004,
+	0x39e: 0x0004, 0x39f: 0x0004, 0x3a0: 0x0812, 0x3a1: 0x0812, 0x3a2: 0x7d3a, 0x3a3: 0x7e7a,
+	0x3a4: 0x7fba, 0x3a5: 0x0912, 0x3a6: 0x809a, 0x3a7: 0x817a, 0x3a8: 0x0813, 0x3a9: 0x0813,
+	0x3aa: 0xa153, 0x3ab: 0xa153, 0x3ac: 0x0913, 0x3ad: 0x0004, 0x3ae: 0x0004, 0x3af: 0x0004,
+	0x3b2: 0x82ba, 0x3b3: 0x83ca, 0x3b4: 0x849a,
+	0x3b6: 0x857a, 0x3b7: 0x865a, 0x3b8: 0x9e53, 0x3b9: 0x9e53, 0x3ba: 0x4d53, 0x3bb: 0x4d53,
+	0x3bc: 0x8799, 0x3bd: 0x0004, 0x3be: 0x0004,
+	// Block 0xf, offset 0x3c0
+	0x3c2: 0x0013,
+	0x3c7: 0x0013, 0x3ca: 0x0012, 0x3cb: 0x0013,
+	0x3cc: 0x0013, 0x3cd: 0x0013, 0x3ce: 0x0012, 0x3cf: 0x0012, 0x3d0: 0x0013, 0x3d1: 0x0013,
+	0x3d2: 0x0013, 0x3d3: 0x0012, 0x3d5: 0x0013,
+	0x3d9: 0x0013, 0x3da: 0x0013, 0x3db: 0x0013, 0x3dc: 0x0013, 0x3dd: 0x0013,
+	0x3e4: 0x0013, 0x3e6: 0x886b, 0x3e8: 0x0013,
+	0x3ea: 0x88cb, 0x3eb: 0x890b, 0x3ec: 0x0013, 0x3ed: 0x0013, 0x3ef: 0x0012,
+	0x3f0: 0x0013, 0x3f1: 0x0013, 0x3f2: 0xa453, 0x3f3: 0x0013, 0x3f4: 0x0012, 0x3f5: 0x0010,
+	0x3f6: 0x0010, 0x3f7: 0x0010, 0x3f8: 0x0010, 0x3f9: 0x0012,
+	0x3fc: 0x0012, 0x3fd: 0x0012, 0x3fe: 0x0013, 0x3ff: 0x0013,
+	// Block 0x10, offset 0x400
+	0x400: 0x1a13, 0x401: 0x1a13, 0x402: 0x1e13, 0x403: 0x1e13, 0x404: 0x1a13, 0x405: 0x1a13,
+	0x406: 0x2613, 0x407: 0x2613, 0x408: 0x2a13, 0x409: 0x2a13, 0x40a: 0x2e13, 0x40b: 0x2e13,
+	0x40c: 0x2a13, 0x40d: 0x2a13, 0x40e: 0x2613, 0x40f: 0x2613, 0x410: 0xa752, 0x411: 0xa752,
+	0x412: 0xaa52, 0x413: 0xaa52, 0x414: 0xad52, 0x415: 0xad52, 0x416: 0xaa52, 0x417: 0xaa52,
+	0x418: 0xa752, 0x419: 0xa752, 0x41a: 0x1a12, 0x41b: 0x1a12, 0x41c: 0x1e12, 0x41d: 0x1e12,
+	0x41e: 0x1a12, 0x41f: 0x1a12, 0x420: 0x2612, 0x421: 0x2612, 0x422: 0x2a12, 0x423: 0x2a12,
+	0x424: 0x2e12, 0x425: 0x2e12, 0x426: 0x2a12, 0x427: 0x2a12, 0x428: 0x2612, 0x429: 0x2612,
+	// Block 0x11, offset 0x440
+	0x440: 0x6552, 0x441: 0x6552, 0x442: 0x6552, 0x443: 0x6552, 0x444: 0x6552, 0x445: 0x6552,
+	0x446: 0x6552, 0x447: 0x6552, 0x448: 0x6552, 0x449: 0x6552, 0x44a: 0x6552, 0x44b: 0x6552,
+	0x44c: 0x6552, 0x44d: 0x6552, 0x44e: 0x6552, 0x44f: 0x6552, 0x450: 0xb052, 0x451: 0xb052,
+	0x452: 0xb052, 0x453: 0xb052, 0x454: 0xb052, 0x455: 0xb052, 0x456: 0xb052, 0x457: 0xb052,
+	0x458: 0xb052, 0x459: 0xb052, 0x45a: 0xb052, 0x45b: 0xb052, 0x45c: 0xb052, 0x45d: 0xb052,
+	0x45e: 0xb052, 0x460: 0x0113, 0x461: 0x0112, 0x462: 0x896b, 0x463: 0x8b53,
+	0x464: 0x89cb, 0x465: 0x8a2a, 0x466: 0x8a8a, 0x467: 0x0f13, 0x468: 0x0f12, 0x469: 0x0313,
+	0x46a: 0x0312, 0x46b: 0x0713, 0x46c: 0x0712, 0x46d: 0x8aeb, 0x46e: 0x8b4b, 0x46f: 0x8bab,
+	0x470: 0x8c0b, 0x471: 0x0012, 0x472: 0x0113, 0x473: 0x0112, 0x474: 0x0012, 0x475: 0x0313,
+	0x476: 0x0312, 0x477: 0x0012, 0x478: 0x0012, 0x479: 0x0012, 0x47a: 0x0012, 0x47b: 0x0012,
+	0x47c: 0x0015, 0x47d: 0x0015, 0x47e: 0x8c6b, 0x47f: 0x8ccb,
+	// Block 0x12, offset 0x480
+	0x480: 0x0113, 0x481: 0x0112, 0x482: 0x0113, 0x483: 0x0112, 0x484: 0x0113, 0x485: 0x0112,
+	0x486: 0x0113, 0x487: 0x0112, 0x488: 0x0014, 0x489: 0x0014, 0x48a: 0x0014, 0x48b: 0x0713,
+	0x48c: 0x0712, 0x48d: 0x8d2b, 0x48e: 0x0012, 0x48f: 0x0010, 0x490: 0x0113, 0x491: 0x0112,
+	0x492: 0x0113, 0x493: 0x0112, 0x494: 0x6552, 0x495: 0x0012, 0x496: 0x0113, 0x497: 0x0112,
+	0x498: 0x0113, 0x499: 0x0112, 0x49a: 0x0113, 0x49b: 0x0112, 0x49c: 0x0113, 0x49d: 0x0112,
+	0x49e: 0x0113, 0x49f: 0x0112, 0x4a0: 0x0113, 0x4a1: 0x0112, 0x4a2: 0x0113, 0x4a3: 0x0112,
+	0x4a4: 0x0113, 0x4a5: 0x0112, 0x4a6: 0x0113, 0x4a7: 0x0112, 0x4a8: 0x0113, 0x4a9: 0x0112,
+	0x4aa: 0x8d8b, 0x4ab: 0x8deb, 0x4ac: 0x8e4b, 0x4ad: 0x8eab, 0x4ae: 0x8f0b, 0x4af: 0x0012,
+	0x4b0: 0x8f6b, 0x4b1: 0x8fcb, 0x4b2: 0x902b, 0x4b3: 0xb353, 0x4b4: 0x0113, 0x4b5: 0x0112,
+	0x4b6: 0x0113, 0x4b7: 0x0112, 0x4b8: 0x0113, 0x4b9: 0x0112, 0x4ba: 0x0113, 0x4bb: 0x0112,
+	0x4bc: 0x0113, 0x4bd: 0x0112, 0x4be: 0x0113, 0x4bf: 0x0112,
+	// Block 0x13, offset 0x4c0
+	0x4c0: 0x90ea, 0x4c1: 0x916a, 0x4c2: 0x91ea, 0x4c3: 0x926a, 0x4c4: 0x931a, 0x4c5: 0x93ca,
+	0x4c6: 0x944a,
+	0x4d3: 0x94ca, 0x4d4: 0x95aa, 0x4d5: 0x968a, 0x4d6: 0x976a, 0x4d7: 0x984a,
+	0x4dd: 0x0010,
+	0x4de: 0x0034, 0x4df: 0x0010, 0x4e0: 0x0010, 0x4e1: 0x0010, 0x4e2: 0x0010, 0x4e3: 0x0010,
+	0x4e4: 0x0010, 0x4e5: 0x0010, 0x4e6: 0x0010, 0x4e7: 0x0010, 0x4e8: 0x0010,
+	0x4ea: 0x0010, 0x4eb: 0x0010, 0x4ec: 0x0010, 0x4ed: 0x0010, 0x4ee: 0x0010, 0x4ef: 0x0010,
+	0x4f0: 0x0010, 0x4f1: 0x0010, 0x4f2: 0x0010, 0x4f3: 0x0010, 0x4f4: 0x0010, 0x4f5: 0x0010,
+	0x4f6: 0x0010, 0x4f8: 0x0010, 0x4f9: 0x0010, 0x4fa: 0x0010, 0x4fb: 0x0010,
+	0x4fc: 0x0010, 0x4fe: 0x0010,
+	// Block 0x14, offset 0x500
+	0x500: 0x2213, 0x501: 0x2213, 0x502: 0x2613, 0x503: 0x2613, 0x504: 0x2213, 0x505: 0x2213,
+	0x506: 0x2e13, 0x507: 0x2e13, 0x508: 0x2213, 0x509: 0x2213, 0x50a: 0x2613, 0x50b: 0x2613,
+	0x50c: 0x2213, 0x50d: 0x2213, 0x50e: 0x3e13, 0x50f: 0x3e13, 0x510: 0x2213, 0x511: 0x2213,
+	0x512: 0x2613, 0x513: 0x2613, 0x514: 0x2213, 0x515: 0x2213, 0x516: 0x2e13, 0x517: 0x2e13,
+	0x518: 0x2213, 0x519: 0x2213, 0x51a: 0x2613, 0x51b: 0x2613, 0x51c: 0x2213, 0x51d: 0x2213,
+	0x51e: 0xbc53, 0x51f: 0xbc53, 0x520: 0xbf53, 0x521: 0xbf53, 0x522: 0x2212, 0x523: 0x2212,
+	0x524: 0x2612, 0x525: 0x2612, 0x526: 0x2212, 0x527: 0x2212, 0x528: 0x2e12, 0x529: 0x2e12,
+	0x52a: 0x2212, 0x52b: 0x2212, 0x52c: 0x2612, 0x52d: 0x2612, 0x52e: 0x2212, 0x52f: 0x2212,
+	0x530: 0x3e12, 0x531: 0x3e12, 0x532: 0x2212, 0x533: 0x2212, 0x534: 0x2612, 0x535: 0x2612,
+	0x536: 0x2212, 0x537: 0x2212, 0x538: 0x2e12, 0x539: 0x2e12, 0x53a: 0x2212, 0x53b: 0x2212,
+	0x53c: 0x2612, 0x53d: 0x2612, 0x53e: 0x2212, 0x53f: 0x2212,
+	// Block 0x15, offset 0x540
+	0x542: 0x0010,
+	0x547: 0x0010, 0x549: 0x0010, 0x54b: 0x0010,
+	0x54d: 0x0010, 0x54e: 0x0010, 0x54f: 0x0010, 0x551: 0x0010,
+	0x552: 0x0010, 0x554: 0x0010, 0x557: 0x0010,
+	0x559: 0x0010, 0x55b: 0x0010, 0x55d: 0x0010,
+	0x55f: 0x0010, 0x561: 0x0010, 0x562: 0x0010,
+	0x564: 0x0010, 0x567: 0x0010, 0x568: 0x0010, 0x569: 0x0010,
+	0x56a: 0x0010, 0x56c: 0x0010, 0x56d: 0x0010, 0x56e: 0x0010, 0x56f: 0x0010,
+	0x570: 0x0010, 0x571: 0x0010, 0x572: 0x0010, 0x574: 0x0010, 0x575: 0x0010,
+	0x576: 0x0010, 0x577: 0x0010, 0x579: 0x0010, 0x57a: 0x0010, 0x57b: 0x0010,
+	0x57c: 0x0010, 0x57e: 0x0010,
+}
+
+// caseIndex: 25 blocks, 1600 entries, 3200 bytes
+// Block 0 is the zero block.
+var caseIndex = [1600]uint16{
+	// Block 0x0, offset 0x0
+	// Block 0x1, offset 0x40
+	// Block 0x2, offset 0x80
+	// Block 0x3, offset 0xc0
+	0xc2: 0x14, 0xc3: 0x15, 0xc4: 0x16, 0xc5: 0x17, 0xc6: 0x01, 0xc7: 0x02,
+	0xc8: 0x18, 0xc9: 0x03, 0xca: 0x04, 0xcb: 0x19, 0xcc: 0x1a, 0xcd: 0x05, 0xce: 0x06, 0xcf: 0x07,
+	0xd0: 0x1b, 0xd1: 0x1c, 0xd2: 0x1d, 0xd3: 0x1e, 0xd4: 0x1f, 0xd5: 0x20, 0xd6: 0x08, 0xd7: 0x21,
+	0xd8: 0x22, 0xd9: 0x23, 0xda: 0x24, 0xdb: 0x25, 0xdc: 0x26, 0xdd: 0x27, 0xde: 0x28, 0xdf: 0x29,
+	0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,
+	0xea: 0x06, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x08, 0xef: 0x09,
+	0xf0: 0x14, 0xf3: 0x16,
+	// Block 0x4, offset 0x100
+	0x120: 0x2a, 0x121: 0x2b, 0x122: 0x2c, 0x123: 0x2d, 0x124: 0x2e, 0x125: 0x2f, 0x126: 0x30, 0x127: 0x31,
+	0x128: 0x32, 0x129: 0x33, 0x12a: 0x34, 0x12b: 0x35, 0x12c: 0x36, 0x12d: 0x37, 0x12e: 0x38, 0x12f: 0x39,
+	0x130: 0x3a, 0x131: 0x3b, 0x132: 0x3c, 0x133: 0x3d, 0x134: 0x3e, 0x135: 0x3f, 0x136: 0x40, 0x137: 0x41,
+	0x138: 0x42, 0x139: 0x43, 0x13a: 0x44, 0x13b: 0x45, 0x13c: 0x46, 0x13d: 0x47, 0x13e: 0x48, 0x13f: 0x49,
+	// Block 0x5, offset 0x140
+	0x140: 0x4a, 0x141: 0x4b, 0x142: 0x4c, 0x143: 0x09, 0x144: 0x24, 0x145: 0x24, 0x146: 0x24, 0x147: 0x24,
+	0x148: 0x24, 0x149: 0x4d, 0x14a: 0x4e, 0x14b: 0x4f, 0x14c: 0x50, 0x14d: 0x51, 0x14e: 0x52, 0x14f: 0x53,
+	0x150: 0x54, 0x151: 0x24, 0x152: 0x24, 0x153: 0x24, 0x154: 0x24, 0x155: 0x24, 0x156: 0x24, 0x157: 0x24,
+	0x158: 0x24, 0x159: 0x55, 0x15a: 0x56, 0x15b: 0x57, 0x15c: 0x58, 0x15d: 0x59, 0x15e: 0x5a, 0x15f: 0x5b,
+	0x160: 0x5c, 0x161: 0x5d, 0x162: 0x5e, 0x163: 0x5f, 0x164: 0x60, 0x165: 0x61, 0x167: 0x62,
+	0x168: 0x63, 0x169: 0x64, 0x16a: 0x65, 0x16c: 0x66, 0x16d: 0x67, 0x16e: 0x68, 0x16f: 0x69,
+	0x170: 0x6a, 0x171: 0x6b, 0x172: 0x6c, 0x173: 0x6d, 0x174: 0x6e, 0x175: 0x6f, 0x176: 0x70, 0x177: 0x71,
+	0x178: 0x72, 0x179: 0x72, 0x17a: 0x73, 0x17b: 0x72, 0x17c: 0x74, 0x17d: 0x0a, 0x17e: 0x0b, 0x17f: 0x0c,
+	// Block 0x6, offset 0x180
+	0x180: 0x75, 0x181: 0x76, 0x182: 0x77, 0x183: 0x78, 0x184: 0x0d, 0x185: 0x79, 0x186: 0x7a,
+	0x192: 0x7b, 0x193: 0x0e,
+	0x1b0: 0x7c, 0x1b1: 0x0f, 0x1b2: 0x72, 0x1b3: 0x7d, 0x1b4: 0x7e, 0x1b5: 0x7f, 0x1b6: 0x80, 0x1b7: 0x81,
+	0x1b8: 0x82,
+	// Block 0x7, offset 0x1c0
+	0x1c0: 0x83, 0x1c2: 0x84, 0x1c3: 0x85, 0x1c4: 0x86, 0x1c5: 0x24, 0x1c6: 0x87,
+	// Block 0x8, offset 0x200
+	0x200: 0x88, 0x201: 0x24, 0x202: 0x24, 0x203: 0x24, 0x204: 0x24, 0x205: 0x24, 0x206: 0x24, 0x207: 0x24,
+	0x208: 0x24, 0x209: 0x24, 0x20a: 0x24, 0x20b: 0x24, 0x20c: 0x24, 0x20d: 0x24, 0x20e: 0x24, 0x20f: 0x24,
+	0x210: 0x24, 0x211: 0x24, 0x212: 0x89, 0x213: 0x8a, 0x214: 0x24, 0x215: 0x24, 0x216: 0x24, 0x217: 0x24,
+	0x218: 0x8b, 0x219: 0x8c, 0x21a: 0x8d, 0x21b: 0x8e, 0x21c: 0x8f, 0x21d: 0x90, 0x21e: 0x10, 0x21f: 0x91,
+	0x220: 0x92, 0x221: 0x93, 0x222: 0x24, 0x223: 0x94, 0x224: 0x95, 0x225: 0x96, 0x226: 0x97, 0x227: 0x98,
+	0x228: 0x99, 0x229: 0x9a, 0x22a: 0x9b, 0x22b: 0x9c, 0x22c: 0x9d, 0x22d: 0x9e, 0x22e: 0x9f, 0x22f: 0xa0,
+	0x230: 0x24, 0x231: 0x24, 0x232: 0x24, 0x233: 0x24, 0x234: 0x24, 0x235: 0x24, 0x236: 0x24, 0x237: 0x24,
+	0x238: 0x24, 0x239: 0x24, 0x23a: 0x24, 0x23b: 0x24, 0x23c: 0x24, 0x23d: 0x24, 0x23e: 0x24, 0x23f: 0x24,
+	// Block 0x9, offset 0x240
+	0x240: 0x24, 0x241: 0x24, 0x242: 0x24, 0x243: 0x24, 0x244: 0x24, 0x245: 0x24, 0x246: 0x24, 0x247: 0x24,
+	0x248: 0x24, 0x249: 0x24, 0x24a: 0x24, 0x24b: 0x24, 0x24c: 0x24, 0x24d: 0x24, 0x24e: 0x24, 0x24f: 0x24,
+	0x250: 0x24, 0x251: 0x24, 0x252: 0x24, 0x253: 0x24, 0x254: 0x24, 0x255: 0x24, 0x256: 0x24, 0x257: 0x24,
+	0x258: 0x24, 0x259: 0x24, 0x25a: 0x24, 0x25b: 0x24, 0x25c: 0x24, 0x25d: 0x24, 0x25e: 0x24, 0x25f: 0x24,
+	0x260: 0x24, 0x261: 0x24, 0x262: 0x24, 0x263: 0x24, 0x264: 0x24, 0x265: 0x24, 0x266: 0x24, 0x267: 0x24,
+	0x268: 0x24, 0x269: 0x24, 0x26a: 0x24, 0x26b: 0x24, 0x26c: 0x24, 0x26d: 0x24, 0x26e: 0x24, 0x26f: 0x24,
+	0x270: 0x24, 0x271: 0x24, 0x272: 0x24, 0x273: 0x24, 0x274: 0x24, 0x275: 0x24, 0x276: 0x24, 0x277: 0x24,
+	0x278: 0x24, 0x279: 0x24, 0x27a: 0x24, 0x27b: 0x24, 0x27c: 0x24, 0x27d: 0x24, 0x27e: 0x24, 0x27f: 0x24,
+	// Block 0xa, offset 0x280
+	0x280: 0x24, 0x281: 0x24, 0x282: 0x24, 0x283: 0x24, 0x284: 0x24, 0x285: 0x24, 0x286: 0x24, 0x287: 0x24,
+	0x288: 0x24, 0x289: 0x24, 0x28a: 0x24, 0x28b: 0x24, 0x28c: 0x24, 0x28d: 0x24, 0x28e: 0x24, 0x28f: 0x24,
+	0x290: 0x24, 0x291: 0x24, 0x292: 0x24, 0x293: 0x24, 0x294: 0x24, 0x295: 0x24, 0x296: 0x24, 0x297: 0x24,
+	0x298: 0x24, 0x299: 0x24, 0x29a: 0x24, 0x29b: 0x24, 0x29c: 0x24, 0x29d: 0x24, 0x29e: 0xa1, 0x29f: 0xa2,
+	// Block 0xb, offset 0x2c0
+	0x2ec: 0x11, 0x2ed: 0xa3, 0x2ee: 0xa4, 0x2ef: 0xa5,
+	0x2f0: 0x24, 0x2f1: 0x24, 0x2f2: 0x24, 0x2f3: 0x24, 0x2f4: 0xa6, 0x2f5: 0xa7, 0x2f6: 0xa8, 0x2f7: 0xa9,
+	0x2f8: 0xaa, 0x2f9: 0xab, 0x2fa: 0x24, 0x2fb: 0xac, 0x2fc: 0xad, 0x2fd: 0xae, 0x2fe: 0xaf, 0x2ff: 0xb0,
+	// Block 0xc, offset 0x300
+	0x300: 0xb1, 0x301: 0xb2, 0x302: 0x24, 0x303: 0xb3, 0x305: 0xb4, 0x307: 0xb5,
+	0x30a: 0xb6, 0x30b: 0xb7, 0x30c: 0xb8, 0x30d: 0xb9, 0x30e: 0xba, 0x30f: 0xbb,
+	0x310: 0xbc, 0x311: 0xbd, 0x312: 0xbe, 0x313: 0xbf, 0x314: 0xc0, 0x315: 0xc1,
+	0x318: 0x24, 0x319: 0x24, 0x31a: 0x24, 0x31b: 0x24, 0x31c: 0xc2, 0x31d: 0xc3,
+	0x320: 0xc4, 0x321: 0xc5, 0x322: 0xc6, 0x323: 0xc7, 0x324: 0xc8, 0x326: 0xc9,
+	0x328: 0xca, 0x329: 0xcb, 0x32a: 0xcc, 0x32b: 0xcd, 0x32c: 0x5f, 0x32d: 0xce, 0x32e: 0xcf,
+	0x330: 0x24, 0x331: 0xd0, 0x332: 0xd1, 0x333: 0xd2, 0x334: 0xd3,
+	0x33c: 0xd4, 0x33d: 0xd5, 0x33f: 0xd6,
+	// Block 0xd, offset 0x340
+	0x340: 0xd7, 0x341: 0xd8, 0x342: 0xd9, 0x343: 0xda, 0x344: 0xdb, 0x345: 0xdc, 0x346: 0xdd, 0x347: 0xde,
+	0x348: 0xdf, 0x34a: 0xe0, 0x34b: 0xe1, 0x34c: 0xe2, 0x34d: 0xe3,
+	0x350: 0xe4, 0x351: 0xe5, 0x352: 0xe6, 0x353: 0xe7, 0x356: 0xe8, 0x357: 0xe9,
+	0x358: 0xea, 0x359: 0xeb, 0x35a: 0xec, 0x35b: 0xed, 0x35c: 0xee,
+	0x360: 0xef, 0x362: 0xf0, 0x363: 0xf1, 0x366: 0xf2, 0x367: 0xf3,
+	0x368: 0xf4, 0x369: 0xf5, 0x36a: 0xf6, 0x36b: 0xf7,
+	0x370: 0xf8, 0x371: 0xf9, 0x372: 0xfa, 0x374: 0xfb, 0x375: 0xfc, 0x376: 0xfd,
+	0x37b: 0xfe,
+	// Block 0xe, offset 0x380
+	0x380: 0x24, 0x381: 0x24, 0x382: 0x24, 0x383: 0x24, 0x384: 0x24, 0x385: 0x24, 0x386: 0x24, 0x387: 0x24,
+	0x388: 0x24, 0x389: 0x24, 0x38a: 0x24, 0x38b: 0x24, 0x38c: 0x24, 0x38d: 0x24, 0x38e: 0xff,
+	0x390: 0x24, 0x391: 0x100, 0x392: 0x24, 0x393: 0x24, 0x394: 0x24, 0x395: 0x101,
+	// Block 0xf, offset 0x3c0
+	0x3c0: 0x24, 0x3c1: 0x24, 0x3c2: 0x24, 0x3c3: 0x24, 0x3c4: 0x24, 0x3c5: 0x24, 0x3c6: 0x24, 0x3c7: 0x24,
+	0x3c8: 0x24, 0x3c9: 0x24, 0x3ca: 0x24, 0x3cb: 0x24, 0x3cc: 0x24, 0x3cd: 0x24, 0x3ce: 0x24, 0x3cf: 0x24,
+	0x3d0: 0x102,
+	// Block 0x10, offset 0x400
+	0x410: 0x24, 0x411: 0x24, 0x412: 0x24, 0x413: 0x24, 0x414: 0x24, 0x415: 0x24, 0x416: 0x24, 0x417: 0x24,
+	0x418: 0x24, 0x419: 0x103,
+	// Block 0x11, offset 0x440
+	0x460: 0x24, 0x461: 0x24, 0x462: 0x24, 0x463: 0x24, 0x464: 0x24, 0x465: 0x24, 0x466: 0x24, 0x467: 0x24,
+	0x468: 0xf7, 0x469: 0x104, 0x46b: 0x105, 0x46c: 0x106, 0x46d: 0x107, 0x46e: 0x108,
+	0x479: 0x109, 0x47c: 0x24, 0x47d: 0x10a, 0x47e: 0x10b, 0x47f: 0x10c,
+	// Block 0x12, offset 0x480
+	0x4b0: 0x24, 0x4b1: 0x10d, 0x4b2: 0x10e,
+	// Block 0x13, offset 0x4c0
+	0x4c5: 0x10f, 0x4c6: 0x110,
+	0x4c9: 0x111,
+	0x4d0: 0x112, 0x4d1: 0x113, 0x4d2: 0x114, 0x4d3: 0x115, 0x4d4: 0x116, 0x4d5: 0x117, 0x4d6: 0x118, 0x4d7: 0x119,
+	0x4d8: 0x11a, 0x4d9: 0x11b, 0x4da: 0x11c, 0x4db: 0x11d, 0x4dc: 0x11e, 0x4dd: 0x11f, 0x4de: 0x120, 0x4df: 0x121,
+	0x4e8: 0x122, 0x4e9: 0x123, 0x4ea: 0x124,
+	// Block 0x14, offset 0x500
+	0x500: 0x125, 0x504: 0x126, 0x505: 0x127,
+	0x50b: 0x128,
+	0x520: 0x24, 0x521: 0x24, 0x522: 0x24, 0x523: 0x129, 0x524: 0x12, 0x525: 0x12a,
+	0x538: 0x12b, 0x539: 0x13, 0x53a: 0x12c,
+	// Block 0x15, offset 0x540
+	0x544: 0x12d, 0x545: 0x12e, 0x546: 0x12f,
+	0x54f: 0x130,
+	// Block 0x16, offset 0x580
+	0x590: 0x0a, 0x591: 0x0b, 0x592: 0x0c, 0x593: 0x0d, 0x594: 0x0e, 0x596: 0x0f,
+	0x59b: 0x10, 0x59d: 0x11, 0x59e: 0x12, 0x59f: 0x13,
+	// Block 0x17, offset 0x5c0
+	0x5c0: 0x131, 0x5c1: 0x132, 0x5c4: 0x132, 0x5c5: 0x132, 0x5c6: 0x132, 0x5c7: 0x133,
+	// Block 0x18, offset 0x600
+	0x620: 0x15,
+}
+
+// sparseOffsets: 289 entries, 578 bytes
+var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x35, 0x38, 0x3c, 0x3f, 0x43, 0x4d, 0x4f, 0x57, 0x5e, 0x63, 0x71, 0x72, 0x80, 0x8f, 0x99, 0x9c, 0xa3, 0xab, 0xae, 0xb0, 0xbf, 0xc5, 0xd3, 0xde, 0xeb, 0xf6, 0x102, 0x10c, 0x118, 0x123, 0x12f, 0x13b, 0x143, 0x14c, 0x156, 0x161, 0x16d, 0x174, 0x17f, 0x184, 0x18c, 0x18f, 0x194, 0x198, 0x19c, 0x1a3, 0x1ac, 0x1b4, 0x1b5, 0x1be, 0x1c5, 0x1cd, 0x1d3, 0x1d8, 0x1dc, 0x1df, 0x1e1, 0x1e4, 0x1e9, 0x1ea, 0x1ec, 0x1ee, 0x1f0, 0x1f7, 0x1fc, 0x200, 0x209, 0x20c, 0x20f, 0x215, 0x216, 0x221, 0x222, 0x223, 0x228, 0x235, 0x23d, 0x245, 0x24e, 0x257, 0x260, 0x265, 0x268, 0x273, 0x281, 0x283, 0x28a, 0x28e, 0x29a, 0x29b, 0x2a6, 0x2ae, 0x2b6, 0x2bc, 0x2bd, 0x2cb, 0x2d0, 0x2d3, 0x2d8, 0x2dc, 0x2e2, 0x2e7, 0x2ea, 0x2ef, 0x2f4, 0x2f5, 0x2fb, 0x2fd, 0x2fe, 0x300, 0x302, 0x305, 0x306, 0x308, 0x30b, 0x311, 0x315, 0x317, 0x31c, 0x323, 0x32b, 0x334, 0x335, 0x33e, 0x342, 0x347, 0x34f, 0x355, 0x35b, 0x365, 0x36a, 0x373, 0x379, 0x380, 0x384, 0x38c, 0x38e, 0x390, 0x393, 0x395, 0x397, 0x398, 0x399, 0x39b, 0x39d, 0x3a3, 0x3a8, 0x3aa, 0x3b1, 0x3b4, 0x3b6, 0x3bc, 0x3c1, 0x3c3, 0x3c4, 0x3c5, 0x3c6, 0x3c8, 0x3ca, 0x3cc, 0x3cf, 0x3d1, 0x3d4, 0x3dc, 0x3df, 0x3e3, 0x3eb, 0x3ed, 0x3ee, 0x3ef, 0x3f1, 0x3f7, 0x3f9, 0x3fa, 0x3fc, 0x3fe, 0x400, 0x40d, 0x40e, 0x40f, 0x413, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41c, 0x41f, 0x425, 0x426, 0x42a, 0x42e, 0x434, 0x437, 0x43e, 0x442, 0x446, 0x44d, 0x456, 0x45c, 0x462, 0x46c, 0x476, 0x478, 0x481, 0x487, 0x48d, 0x493, 0x496, 0x49c, 0x49f, 0x4a8, 0x4a9, 0x4b0, 0x4b4, 0x4b5, 0x4b8, 0x4ba, 0x4c1, 0x4c9, 0x4cf, 0x4d5, 0x4d6, 0x4dc, 0x4df, 0x4e7, 0x4ee, 0x4f8, 0x500, 0x503, 0x504, 0x505, 0x506, 0x508, 0x509, 0x50b, 0x50d, 0x50f, 0x513, 0x514, 0x516, 0x519, 0x51b, 0x51d, 0x51f, 0x524, 0x529, 0x52d, 0x52e, 0x531, 0x535, 0x540, 0x544, 0x54c, 0x551, 0x555, 0x558, 0x55c, 0x55f, 0x562, 0x567, 0x56b, 0x56f, 0x573, 0x577, 0x579, 0x57b, 0x57e, 0x583, 0x586, 0x588, 0x58b, 0x58d, 0x593, 0x59c, 0x5a1, 0x5a2, 0x5a5, 0x5a6, 0x5a7, 0x5a9, 0x5aa, 0x5ab}
+
+// sparseValues: 1451 entries, 5804 bytes
+var sparseValues = [1451]valueRange{
+	// Block 0x0, offset 0x0
+	{value: 0x0004, lo: 0xa8, hi: 0xa8},
+	{value: 0x0012, lo: 0xaa, hi: 0xaa},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0004, lo: 0xaf, hi: 0xaf},
+	{value: 0x0004, lo: 0xb4, hi: 0xb4},
+	{value: 0x001a, lo: 0xb5, hi: 0xb5},
+	{value: 0x0054, lo: 0xb7, hi: 0xb7},
+	{value: 0x0004, lo: 0xb8, hi: 0xb8},
+	{value: 0x0012, lo: 0xba, hi: 0xba},
+	// Block 0x1, offset 0x9
+	{value: 0x2013, lo: 0x80, hi: 0x96},
+	{value: 0x2013, lo: 0x98, hi: 0x9e},
+	{value: 0x009a, lo: 0x9f, hi: 0x9f},
+	{value: 0x2012, lo: 0xa0, hi: 0xb6},
+	{value: 0x2012, lo: 0xb8, hi: 0xbe},
+	{value: 0x0252, lo: 0xbf, hi: 0xbf},
+	// Block 0x2, offset 0xf
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x011b, lo: 0xb0, hi: 0xb0},
+	{value: 0x019a, lo: 0xb1, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xb7},
+	{value: 0x0012, lo: 0xb8, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x0316, lo: 0xbd, hi: 0xbe},
+	{value: 0x0553, lo: 0xbf, hi: 0xbf},
+	// Block 0x3, offset 0x18
+	{value: 0x0552, lo: 0x80, hi: 0x80},
+	{value: 0x0316, lo: 0x81, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0316, lo: 0x85, hi: 0x86},
+	{value: 0x0f16, lo: 0x87, hi: 0x88},
+	{value: 0x01da, lo: 0x89, hi: 0x89},
+	{value: 0x0117, lo: 0x8a, hi: 0xb7},
+	{value: 0x0253, lo: 0xb8, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x0316, lo: 0xbd, hi: 0xbe},
+	{value: 0x028a, lo: 0xbf, hi: 0xbf},
+	// Block 0x4, offset 0x24
+	{value: 0x0117, lo: 0x80, hi: 0x9f},
+	{value: 0x2f53, lo: 0xa0, hi: 0xa0},
+	{value: 0x0012, lo: 0xa1, hi: 0xa1},
+	{value: 0x0117, lo: 0xa2, hi: 0xb3},
+	{value: 0x0012, lo: 0xb4, hi: 0xb9},
+	{value: 0x090b, lo: 0xba, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x2953, lo: 0xbd, hi: 0xbd},
+	{value: 0x098b, lo: 0xbe, hi: 0xbe},
+	{value: 0x0a0a, lo: 0xbf, hi: 0xbf},
+	// Block 0x5, offset 0x2e
+	{value: 0x0015, lo: 0x80, hi: 0x81},
+	{value: 0x0014, lo: 0x82, hi: 0x97},
+	{value: 0x0004, lo: 0x98, hi: 0x9d},
+	{value: 0x0014, lo: 0x9e, hi: 0x9f},
+	{value: 0x0015, lo: 0xa0, hi: 0xa4},
+	{value: 0x0004, lo: 0xa5, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xbf},
+	// Block 0x6, offset 0x35
+	{value: 0x0024, lo: 0x80, hi: 0x94},
+	{value: 0x0034, lo: 0x95, hi: 0xbc},
+	{value: 0x0024, lo: 0xbd, hi: 0xbf},
+	// Block 0x7, offset 0x38
+	{value: 0x6553, lo: 0x80, hi: 0x8f},
+	{value: 0x2013, lo: 0x90, hi: 0x9f},
+	{value: 0x5f53, lo: 0xa0, hi: 0xaf},
+	{value: 0x2012, lo: 0xb0, hi: 0xbf},
+	// Block 0x8, offset 0x3c
+	{value: 0x5f52, lo: 0x80, hi: 0x8f},
+	{value: 0x6552, lo: 0x90, hi: 0x9f},
+	{value: 0x0117, lo: 0xa0, hi: 0xbf},
+	// Block 0x9, offset 0x3f
+	{value: 0x0117, lo: 0x80, hi: 0x81},
+	{value: 0x0024, lo: 0x83, hi: 0x87},
+	{value: 0x0014, lo: 0x88, hi: 0x89},
+	{value: 0x0117, lo: 0x8a, hi: 0xbf},
+	// Block 0xa, offset 0x43
+	{value: 0x0f13, lo: 0x80, hi: 0x80},
+	{value: 0x0316, lo: 0x81, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0316, lo: 0x85, hi: 0x86},
+	{value: 0x0f16, lo: 0x87, hi: 0x88},
+	{value: 0x0316, lo: 0x89, hi: 0x8a},
+	{value: 0x0716, lo: 0x8b, hi: 0x8c},
+	{value: 0x0316, lo: 0x8d, hi: 0x8e},
+	{value: 0x0f12, lo: 0x8f, hi: 0x8f},
+	{value: 0x0117, lo: 0x90, hi: 0xbf},
+	// Block 0xb, offset 0x4d
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x6553, lo: 0xb1, hi: 0xbf},
+	// Block 0xc, offset 0x4f
+	{value: 0x3013, lo: 0x80, hi: 0x8f},
+	{value: 0x6853, lo: 0x90, hi: 0x96},
+	{value: 0x0014, lo: 0x99, hi: 0x99},
+	{value: 0x0010, lo: 0x9b, hi: 0x9c},
+	{value: 0x0010, lo: 0x9e, hi: 0x9e},
+	{value: 0x0012, lo: 0xa0, hi: 0xa0},
+	{value: 0x6552, lo: 0xa1, hi: 0xaf},
+	{value: 0x3012, lo: 0xb0, hi: 0xbf},
+	// Block 0xd, offset 0x57
+	{value: 0x0034, lo: 0x81, hi: 0x82},
+	{value: 0x0024, lo: 0x84, hi: 0x84},
+	{value: 0x0034, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0xaa},
+	{value: 0x0010, lo: 0xaf, hi: 0xb3},
+	{value: 0x0054, lo: 0xb4, hi: 0xb4},
+	// Block 0xe, offset 0x5e
+	{value: 0x0014, lo: 0x80, hi: 0x85},
+	{value: 0x0024, lo: 0x90, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x9a},
+	{value: 0x0014, lo: 0x9c, hi: 0x9c},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0xf, offset 0x63
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x8a},
+	{value: 0x0034, lo: 0x8b, hi: 0x92},
+	{value: 0x0024, lo: 0x93, hi: 0x94},
+	{value: 0x0034, lo: 0x95, hi: 0x96},
+	{value: 0x0024, lo: 0x97, hi: 0x9b},
+	{value: 0x0034, lo: 0x9c, hi: 0x9c},
+	{value: 0x0024, lo: 0x9d, hi: 0x9e},
+	{value: 0x0034, lo: 0x9f, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0010, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0034, lo: 0xb0, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xbf},
+	// Block 0x10, offset 0x71
+	{value: 0x0010, lo: 0x80, hi: 0xbf},
+	// Block 0x11, offset 0x72
+	{value: 0x0010, lo: 0x80, hi: 0x93},
+	{value: 0x0010, lo: 0x95, hi: 0x95},
+	{value: 0x0024, lo: 0x96, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x0024, lo: 0x9f, hi: 0xa2},
+	{value: 0x0034, lo: 0xa3, hi: 0xa3},
+	{value: 0x0024, lo: 0xa4, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa6},
+	{value: 0x0024, lo: 0xa7, hi: 0xa8},
+	{value: 0x0034, lo: 0xaa, hi: 0xaa},
+	{value: 0x0024, lo: 0xab, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xbc},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x12, offset 0x80
+	{value: 0x0014, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0034, lo: 0x91, hi: 0x91},
+	{value: 0x0010, lo: 0x92, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	{value: 0x0034, lo: 0xb1, hi: 0xb1},
+	{value: 0x0024, lo: 0xb2, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0024, lo: 0xb5, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb9},
+	{value: 0x0024, lo: 0xba, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbc},
+	{value: 0x0024, lo: 0xbd, hi: 0xbd},
+	{value: 0x0034, lo: 0xbe, hi: 0xbe},
+	{value: 0x0024, lo: 0xbf, hi: 0xbf},
+	// Block 0x13, offset 0x8f
+	{value: 0x0024, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0024, lo: 0x83, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0024, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0024, lo: 0x87, hi: 0x87},
+	{value: 0x0034, lo: 0x88, hi: 0x88},
+	{value: 0x0024, lo: 0x89, hi: 0x8a},
+	{value: 0x0010, lo: 0x8d, hi: 0xbf},
+	// Block 0x14, offset 0x99
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0014, lo: 0xa6, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	// Block 0x15, offset 0x9c
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0024, lo: 0xab, hi: 0xb1},
+	{value: 0x0034, lo: 0xb2, hi: 0xb2},
+	{value: 0x0024, lo: 0xb3, hi: 0xb3},
+	{value: 0x0014, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0034, lo: 0xbd, hi: 0xbd},
+	// Block 0x16, offset 0xa3
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0024, lo: 0x96, hi: 0x99},
+	{value: 0x0014, lo: 0x9a, hi: 0x9a},
+	{value: 0x0024, lo: 0x9b, hi: 0xa3},
+	{value: 0x0014, lo: 0xa4, hi: 0xa4},
+	{value: 0x0024, lo: 0xa5, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa8},
+	{value: 0x0024, lo: 0xa9, hi: 0xad},
+	// Block 0x17, offset 0xab
+	{value: 0x0010, lo: 0x80, hi: 0x98},
+	{value: 0x0034, lo: 0x99, hi: 0x9b},
+	{value: 0x0010, lo: 0xa0, hi: 0xaa},
+	// Block 0x18, offset 0xae
+	{value: 0x0010, lo: 0xa0, hi: 0xb4},
+	{value: 0x0010, lo: 0xb6, hi: 0xbd},
+	// Block 0x19, offset 0xb0
+	{value: 0x0034, lo: 0x93, hi: 0x93},
+	{value: 0x0024, lo: 0x94, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa2},
+	{value: 0x0034, lo: 0xa3, hi: 0xa3},
+	{value: 0x0024, lo: 0xa4, hi: 0xa5},
+	{value: 0x0034, lo: 0xa6, hi: 0xa6},
+	{value: 0x0024, lo: 0xa7, hi: 0xa8},
+	{value: 0x0034, lo: 0xa9, hi: 0xa9},
+	{value: 0x0024, lo: 0xaa, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xb2},
+	{value: 0x0024, lo: 0xb3, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb6},
+	{value: 0x0024, lo: 0xb7, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0024, lo: 0xbb, hi: 0xbf},
+	// Block 0x1a, offset 0xbf
+	{value: 0x0014, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xb9},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x1b, offset 0xc5
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x88},
+	{value: 0x0010, lo: 0x89, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0024, lo: 0x91, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x92},
+	{value: 0x0024, lo: 0x93, hi: 0x94},
+	{value: 0x0014, lo: 0x95, hi: 0x97},
+	{value: 0x0010, lo: 0x98, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xbf},
+	// Block 0x1c, offset 0xd3
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb2},
+	{value: 0x0010, lo: 0xb6, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x1d, offset 0xde
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x8e},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9c, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xb1},
+	{value: 0x0010, lo: 0xbc, hi: 0xbc},
+	{value: 0x0024, lo: 0xbe, hi: 0xbe},
+	// Block 0x1e, offset 0xeb
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8a},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb6},
+	{value: 0x0010, lo: 0xb8, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x1f, offset 0xf6
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0014, lo: 0x87, hi: 0x88},
+	{value: 0x0014, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x91, hi: 0x91},
+	{value: 0x0010, lo: 0x99, hi: 0x9c},
+	{value: 0x0010, lo: 0x9e, hi: 0x9e},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb5},
+	// Block 0x20, offset 0x102
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x91},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x21, offset 0x10c
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x85},
+	{value: 0x0014, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x89, hi: 0x89},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	{value: 0x0014, lo: 0xba, hi: 0xbf},
+	// Block 0x22, offset 0x118
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x23, offset 0x123
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x96, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9c, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	// Block 0x24, offset 0x12f
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8a},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0x95},
+	{value: 0x0010, lo: 0x99, hi: 0x9a},
+	{value: 0x0010, lo: 0x9c, hi: 0x9c},
+	{value: 0x0010, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa3, hi: 0xa4},
+	{value: 0x0010, lo: 0xa8, hi: 0xaa},
+	{value: 0x0010, lo: 0xae, hi: 0xb9},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x25, offset 0x13b
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x86, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	// Block 0x26, offset 0x143
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x83},
+	{value: 0x0014, lo: 0x84, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb9},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbf},
+	// Block 0x27, offset 0x14c
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0014, lo: 0x86, hi: 0x88},
+	{value: 0x0014, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0034, lo: 0x95, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9a},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	// Block 0x28, offset 0x156
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x29, offset 0x161
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0014, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x95, hi: 0x96},
+	{value: 0x0010, lo: 0x9e, hi: 0x9e},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb1, hi: 0xb2},
+	// Block 0x2a, offset 0x16d
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x2b, offset 0x174
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x86, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x8e},
+	{value: 0x0010, lo: 0x94, hi: 0x97},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xba, hi: 0xbf},
+	// Block 0x2c, offset 0x17f
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x96},
+	{value: 0x0010, lo: 0x9a, hi: 0xb1},
+	{value: 0x0010, lo: 0xb3, hi: 0xbb},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	// Block 0x2d, offset 0x184
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0010, lo: 0x8f, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x94},
+	{value: 0x0014, lo: 0x96, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9f},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	// Block 0x2e, offset 0x18c
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb4, hi: 0xb7},
+	{value: 0x0034, lo: 0xb8, hi: 0xba},
+	// Block 0x2f, offset 0x18f
+	{value: 0x0004, lo: 0x86, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x87},
+	{value: 0x0034, lo: 0x88, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x30, offset 0x194
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb4, hi: 0xb7},
+	{value: 0x0034, lo: 0xb8, hi: 0xba},
+	{value: 0x0014, lo: 0xbb, hi: 0xbc},
+	// Block 0x31, offset 0x198
+	{value: 0x0004, lo: 0x86, hi: 0x86},
+	{value: 0x0034, lo: 0x88, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x32, offset 0x19c
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0034, lo: 0x98, hi: 0x99},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0034, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	{value: 0x0034, lo: 0xb9, hi: 0xb9},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x33, offset 0x1a3
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0x89, hi: 0xac},
+	{value: 0x0034, lo: 0xb1, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xba, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x34, offset 0x1ac
+	{value: 0x0034, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0024, lo: 0x82, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0024, lo: 0x86, hi: 0x87},
+	{value: 0x0010, lo: 0x88, hi: 0x8c},
+	{value: 0x0014, lo: 0x8d, hi: 0x97},
+	{value: 0x0014, lo: 0x99, hi: 0xbc},
+	// Block 0x35, offset 0x1b4
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	// Block 0x36, offset 0x1b5
+	{value: 0x0010, lo: 0xab, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	{value: 0x0010, lo: 0xb8, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbc},
+	{value: 0x0014, lo: 0xbd, hi: 0xbe},
+	// Block 0x37, offset 0x1be
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x96, hi: 0x97},
+	{value: 0x0014, lo: 0x98, hi: 0x99},
+	{value: 0x0014, lo: 0x9e, hi: 0xa0},
+	{value: 0x0010, lo: 0xa2, hi: 0xa4},
+	{value: 0x0010, lo: 0xa7, hi: 0xad},
+	{value: 0x0014, lo: 0xb1, hi: 0xb4},
+	// Block 0x38, offset 0x1c5
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x6c53, lo: 0xa0, hi: 0xbf},
+	// Block 0x39, offset 0x1cd
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x98},
+	{value: 0x0010, lo: 0x9a, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x3a, offset 0x1d3
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb5},
+	{value: 0x0010, lo: 0xb8, hi: 0xbe},
+	// Block 0x3b, offset 0x1d8
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x82, hi: 0x85},
+	{value: 0x0010, lo: 0x88, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0xbf},
+	// Block 0x3c, offset 0x1dc
+	{value: 0x0010, lo: 0x80, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0x95},
+	{value: 0x0010, lo: 0x98, hi: 0xbf},
+	// Block 0x3d, offset 0x1df
+	{value: 0x0010, lo: 0x80, hi: 0x9a},
+	{value: 0x0024, lo: 0x9d, hi: 0x9f},
+	// Block 0x3e, offset 0x1e1
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x7453, lo: 0xa0, hi: 0xaf},
+	{value: 0x7853, lo: 0xb0, hi: 0xbf},
+	// Block 0x3f, offset 0x1e4
+	{value: 0x7c53, lo: 0x80, hi: 0x8f},
+	{value: 0x8053, lo: 0x90, hi: 0x9f},
+	{value: 0x7c53, lo: 0xa0, hi: 0xaf},
+	{value: 0x0813, lo: 0xb0, hi: 0xb5},
+	{value: 0x0892, lo: 0xb8, hi: 0xbd},
+	// Block 0x40, offset 0x1e9
+	{value: 0x0010, lo: 0x81, hi: 0xbf},
+	// Block 0x41, offset 0x1ea
+	{value: 0x0010, lo: 0x80, hi: 0xac},
+	{value: 0x0010, lo: 0xaf, hi: 0xbf},
+	// Block 0x42, offset 0x1ec
+	{value: 0x0010, lo: 0x81, hi: 0x9a},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x43, offset 0x1ee
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0010, lo: 0xae, hi: 0xb8},
+	// Block 0x44, offset 0x1f0
+	{value: 0x0010, lo: 0x80, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x93},
+	{value: 0x0034, lo: 0x94, hi: 0x94},
+	{value: 0x0010, lo: 0xa0, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	// Block 0x45, offset 0x1f7
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x93},
+	{value: 0x0010, lo: 0xa0, hi: 0xac},
+	{value: 0x0010, lo: 0xae, hi: 0xb0},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	// Block 0x46, offset 0x1fc
+	{value: 0x0014, lo: 0xb4, hi: 0xb5},
+	{value: 0x0010, lo: 0xb6, hi: 0xb6},
+	{value: 0x0014, lo: 0xb7, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x47, offset 0x200
+	{value: 0x0010, lo: 0x80, hi: 0x85},
+	{value: 0x0014, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0014, lo: 0x89, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x92},
+	{value: 0x0014, lo: 0x93, hi: 0x93},
+	{value: 0x0004, lo: 0x97, hi: 0x97},
+	{value: 0x0024, lo: 0x9d, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	// Block 0x48, offset 0x209
+	{value: 0x0014, lo: 0x8b, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x49, offset 0x20c
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0xb8},
+	// Block 0x4a, offset 0x20f
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0xa8},
+	{value: 0x0034, lo: 0xa9, hi: 0xa9},
+	{value: 0x0010, lo: 0xaa, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x4b, offset 0x215
+	{value: 0x0010, lo: 0x80, hi: 0xb5},
+	// Block 0x4c, offset 0x216
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0014, lo: 0xa0, hi: 0xa2},
+	{value: 0x0010, lo: 0xa3, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xab},
+	{value: 0x0010, lo: 0xb0, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb2},
+	{value: 0x0010, lo: 0xb3, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xb9},
+	{value: 0x0024, lo: 0xba, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbb},
+	// Block 0x4d, offset 0x221
+	{value: 0x0010, lo: 0x86, hi: 0x8f},
+	// Block 0x4e, offset 0x222
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x4f, offset 0x223
+	{value: 0x0010, lo: 0x80, hi: 0x96},
+	{value: 0x0024, lo: 0x97, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x98},
+	{value: 0x0010, lo: 0x99, hi: 0x9a},
+	{value: 0x0014, lo: 0x9b, hi: 0x9b},
+	// Block 0x50, offset 0x228
+	{value: 0x0010, lo: 0x95, hi: 0x95},
+	{value: 0x0014, lo: 0x96, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0014, lo: 0x98, hi: 0x9e},
+	{value: 0x0034, lo: 0xa0, hi: 0xa0},
+	{value: 0x0010, lo: 0xa1, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa2},
+	{value: 0x0010, lo: 0xa3, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xac},
+	{value: 0x0010, lo: 0xad, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb4},
+	{value: 0x0024, lo: 0xb5, hi: 0xbc},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x51, offset 0x235
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0004, lo: 0xa7, hi: 0xa7},
+	{value: 0x0024, lo: 0xb0, hi: 0xb4},
+	{value: 0x0034, lo: 0xb5, hi: 0xba},
+	{value: 0x0024, lo: 0xbb, hi: 0xbc},
+	{value: 0x0034, lo: 0xbd, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	// Block 0x52, offset 0x23d
+	{value: 0x0014, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x53, offset 0x245
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0030, lo: 0x84, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x8b},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0024, lo: 0xab, hi: 0xab},
+	{value: 0x0034, lo: 0xac, hi: 0xac},
+	{value: 0x0024, lo: 0xad, hi: 0xb3},
+	// Block 0x54, offset 0x24e
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa9},
+	{value: 0x0030, lo: 0xaa, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xbf},
+	// Block 0x55, offset 0x257
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0034, lo: 0xa6, hi: 0xa6},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa9},
+	{value: 0x0010, lo: 0xaa, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xae},
+	{value: 0x0014, lo: 0xaf, hi: 0xb1},
+	{value: 0x0030, lo: 0xb2, hi: 0xb3},
+	// Block 0x56, offset 0x260
+	{value: 0x0010, lo: 0x80, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	// Block 0x57, offset 0x265
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x8d, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	// Block 0x58, offset 0x268
+	{value: 0x31ea, lo: 0x80, hi: 0x80},
+	{value: 0x326a, lo: 0x81, hi: 0x81},
+	{value: 0x32ea, lo: 0x82, hi: 0x82},
+	{value: 0x336a, lo: 0x83, hi: 0x83},
+	{value: 0x33ea, lo: 0x84, hi: 0x84},
+	{value: 0x346a, lo: 0x85, hi: 0x85},
+	{value: 0x34ea, lo: 0x86, hi: 0x86},
+	{value: 0x356a, lo: 0x87, hi: 0x87},
+	{value: 0x35ea, lo: 0x88, hi: 0x88},
+	{value: 0x8353, lo: 0x90, hi: 0xba},
+	{value: 0x8353, lo: 0xbd, hi: 0xbf},
+	// Block 0x59, offset 0x273
+	{value: 0x0024, lo: 0x90, hi: 0x92},
+	{value: 0x0034, lo: 0x94, hi: 0x99},
+	{value: 0x0024, lo: 0x9a, hi: 0x9b},
+	{value: 0x0034, lo: 0x9c, hi: 0x9f},
+	{value: 0x0024, lo: 0xa0, hi: 0xa0},
+	{value: 0x0010, lo: 0xa1, hi: 0xa1},
+	{value: 0x0034, lo: 0xa2, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xb3},
+	{value: 0x0024, lo: 0xb4, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb7},
+	{value: 0x0024, lo: 0xb8, hi: 0xb9},
+	{value: 0x0010, lo: 0xba, hi: 0xba},
+	// Block 0x5a, offset 0x281
+	{value: 0x0012, lo: 0x80, hi: 0xab},
+	{value: 0x0015, lo: 0xac, hi: 0xbf},
+	// Block 0x5b, offset 0x283
+	{value: 0x0015, lo: 0x80, hi: 0xaa},
+	{value: 0x0012, lo: 0xab, hi: 0xb7},
+	{value: 0x0015, lo: 0xb8, hi: 0xb8},
+	{value: 0x8752, lo: 0xb9, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xbc},
+	{value: 0x8b52, lo: 0xbd, hi: 0xbd},
+	{value: 0x0012, lo: 0xbe, hi: 0xbf},
+	// Block 0x5c, offset 0x28a
+	{value: 0x0012, lo: 0x80, hi: 0x8d},
+	{value: 0x8f52, lo: 0x8e, hi: 0x8e},
+	{value: 0x0012, lo: 0x8f, hi: 0x9a},
+	{value: 0x0015, lo: 0x9b, hi: 0xbf},
+	// Block 0x5d, offset 0x28e
+	{value: 0x0024, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0024, lo: 0x83, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0024, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x90},
+	{value: 0x0024, lo: 0x91, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb9},
+	{value: 0x0024, lo: 0xbb, hi: 0xbb},
+	{value: 0x0034, lo: 0xbc, hi: 0xbd},
+	{value: 0x0024, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x5e, offset 0x29a
+	{value: 0x0117, lo: 0x80, hi: 0xbf},
+	// Block 0x5f, offset 0x29b
+	{value: 0x0117, lo: 0x80, hi: 0x95},
+	{value: 0x369a, lo: 0x96, hi: 0x96},
+	{value: 0x374a, lo: 0x97, hi: 0x97},
+	{value: 0x37fa, lo: 0x98, hi: 0x98},
+	{value: 0x38aa, lo: 0x99, hi: 0x99},
+	{value: 0x395a, lo: 0x9a, hi: 0x9a},
+	{value: 0x3a0a, lo: 0x9b, hi: 0x9b},
+	{value: 0x0012, lo: 0x9c, hi: 0x9d},
+	{value: 0x3abb, lo: 0x9e, hi: 0x9e},
+	{value: 0x0012, lo: 0x9f, hi: 0x9f},
+	{value: 0x0117, lo: 0xa0, hi: 0xbf},
+	// Block 0x60, offset 0x2a6
+	{value: 0x0812, lo: 0x80, hi: 0x87},
+	{value: 0x0813, lo: 0x88, hi: 0x8f},
+	{value: 0x0812, lo: 0x90, hi: 0x95},
+	{value: 0x0813, lo: 0x98, hi: 0x9d},
+	{value: 0x0812, lo: 0xa0, hi: 0xa7},
+	{value: 0x0813, lo: 0xa8, hi: 0xaf},
+	{value: 0x0812, lo: 0xb0, hi: 0xb7},
+	{value: 0x0813, lo: 0xb8, hi: 0xbf},
+	// Block 0x61, offset 0x2ae
+	{value: 0x0004, lo: 0x8b, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8f},
+	{value: 0x0054, lo: 0x98, hi: 0x99},
+	{value: 0x0054, lo: 0xa4, hi: 0xa4},
+	{value: 0x0054, lo: 0xa7, hi: 0xa7},
+	{value: 0x0014, lo: 0xaa, hi: 0xae},
+	{value: 0x0010, lo: 0xaf, hi: 0xaf},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x62, offset 0x2b6
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x94, hi: 0x94},
+	{value: 0x0014, lo: 0xa0, hi: 0xa4},
+	{value: 0x0014, lo: 0xa6, hi: 0xaf},
+	{value: 0x0015, lo: 0xb1, hi: 0xb1},
+	{value: 0x0015, lo: 0xbf, hi: 0xbf},
+	// Block 0x63, offset 0x2bc
+	{value: 0x0015, lo: 0x90, hi: 0x9c},
+	// Block 0x64, offset 0x2bd
+	{value: 0x0024, lo: 0x90, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x93},
+	{value: 0x0024, lo: 0x94, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x9a},
+	{value: 0x0024, lo: 0x9b, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0xa0},
+	{value: 0x0024, lo: 0xa1, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa4},
+	{value: 0x0034, lo: 0xa5, hi: 0xa6},
+	{value: 0x0024, lo: 0xa7, hi: 0xa7},
+	{value: 0x0034, lo: 0xa8, hi: 0xa8},
+	{value: 0x0024, lo: 0xa9, hi: 0xa9},
+	{value: 0x0034, lo: 0xaa, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	// Block 0x65, offset 0x2cb
+	{value: 0x0016, lo: 0x85, hi: 0x86},
+	{value: 0x0012, lo: 0x87, hi: 0x89},
+	{value: 0xa452, lo: 0x8e, hi: 0x8e},
+	{value: 0x1013, lo: 0xa0, hi: 0xaf},
+	{value: 0x1012, lo: 0xb0, hi: 0xbf},
+	// Block 0x66, offset 0x2d0
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x88},
+	// Block 0x67, offset 0x2d3
+	{value: 0xa753, lo: 0xb6, hi: 0xb7},
+	{value: 0xaa53, lo: 0xb8, hi: 0xb9},
+	{value: 0xad53, lo: 0xba, hi: 0xbb},
+	{value: 0xaa53, lo: 0xbc, hi: 0xbd},
+	{value: 0xa753, lo: 0xbe, hi: 0xbf},
+	// Block 0x68, offset 0x2d8
+	{value: 0x3013, lo: 0x80, hi: 0x8f},
+	{value: 0x6553, lo: 0x90, hi: 0x9f},
+	{value: 0xb053, lo: 0xa0, hi: 0xae},
+	{value: 0x3012, lo: 0xb0, hi: 0xbf},
+	// Block 0x69, offset 0x2dc
+	{value: 0x0117, lo: 0x80, hi: 0xa3},
+	{value: 0x0012, lo: 0xa4, hi: 0xa4},
+	{value: 0x0716, lo: 0xab, hi: 0xac},
+	{value: 0x0316, lo: 0xad, hi: 0xae},
+	{value: 0x0024, lo: 0xaf, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xb3},
+	// Block 0x6a, offset 0x2e2
+	{value: 0x6c52, lo: 0x80, hi: 0x9f},
+	{value: 0x7052, lo: 0xa0, hi: 0xa5},
+	{value: 0x7052, lo: 0xa7, hi: 0xa7},
+	{value: 0x7052, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x6b, offset 0x2e7
+	{value: 0x0010, lo: 0x80, hi: 0xa7},
+	{value: 0x0014, lo: 0xaf, hi: 0xaf},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x6c, offset 0x2ea
+	{value: 0x0010, lo: 0x80, hi: 0x96},
+	{value: 0x0010, lo: 0xa0, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xae},
+	{value: 0x0010, lo: 0xb0, hi: 0xb6},
+	{value: 0x0010, lo: 0xb8, hi: 0xbe},
+	// Block 0x6d, offset 0x2ef
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x88, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9e},
+	{value: 0x0024, lo: 0xa0, hi: 0xbf},
+	// Block 0x6e, offset 0x2f4
+	{value: 0x0014, lo: 0xaf, hi: 0xaf},
+	// Block 0x6f, offset 0x2f5
+	{value: 0x0014, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0xaa, hi: 0xad},
+	{value: 0x0030, lo: 0xae, hi: 0xaf},
+	{value: 0x0004, lo: 0xb1, hi: 0xb5},
+	{value: 0x0014, lo: 0xbb, hi: 0xbb},
+	{value: 0x0010, lo: 0xbc, hi: 0xbc},
+	// Block 0x70, offset 0x2fb
+	{value: 0x0034, lo: 0x99, hi: 0x9a},
+	{value: 0x0004, lo: 0x9b, hi: 0x9e},
+	// Block 0x71, offset 0x2fd
+	{value: 0x0004, lo: 0xbc, hi: 0xbe},
+	// Block 0x72, offset 0x2fe
+	{value: 0x0010, lo: 0x85, hi: 0xaf},
+	{value: 0x0010, lo: 0xb1, hi: 0xbf},
+	// Block 0x73, offset 0x300
+	{value: 0x0010, lo: 0x80, hi: 0x8e},
+	{value: 0x0010, lo: 0xa0, hi: 0xba},
+	// Block 0x74, offset 0x302
+	{value: 0x0010, lo: 0x80, hi: 0x94},
+	{value: 0x0014, lo: 0x95, hi: 0x95},
+	{value: 0x0010, lo: 0x96, hi: 0xbf},
+	// Block 0x75, offset 0x305
+	{value: 0x0010, lo: 0x80, hi: 0x8c},
+	// Block 0x76, offset 0x306
+	{value: 0x0010, lo: 0x90, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	// Block 0x77, offset 0x308
+	{value: 0x0010, lo: 0x80, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0010, lo: 0x90, hi: 0xab},
+	// Block 0x78, offset 0x30b
+	{value: 0x0117, lo: 0x80, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xae},
+	{value: 0x0024, lo: 0xaf, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb2},
+	{value: 0x0024, lo: 0xb4, hi: 0xbd},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x79, offset 0x311
+	{value: 0x0117, lo: 0x80, hi: 0x9b},
+	{value: 0x0015, lo: 0x9c, hi: 0x9d},
+	{value: 0x0024, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x7a, offset 0x315
+	{value: 0x0010, lo: 0x80, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb1},
+	// Block 0x7b, offset 0x317
+	{value: 0x0004, lo: 0x80, hi: 0x96},
+	{value: 0x0014, lo: 0x97, hi: 0xa1},
+	{value: 0x0117, lo: 0xa2, hi: 0xaf},
+	{value: 0x0012, lo: 0xb0, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xbf},
+	// Block 0x7c, offset 0x31c
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x0015, lo: 0xb0, hi: 0xb0},
+	{value: 0x0012, lo: 0xb1, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x8753, lo: 0xbd, hi: 0xbd},
+	{value: 0x0117, lo: 0xbe, hi: 0xbf},
+	// Block 0x7d, offset 0x323
+	{value: 0x0117, lo: 0x82, hi: 0x83},
+	{value: 0x6553, lo: 0x84, hi: 0x84},
+	{value: 0x908b, lo: 0x85, hi: 0x85},
+	{value: 0x8f53, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0xb7, hi: 0xb7},
+	{value: 0x0015, lo: 0xb8, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbf},
+	// Block 0x7e, offset 0x32b
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8a},
+	{value: 0x0014, lo: 0x8b, hi: 0x8b},
+	{value: 0x0010, lo: 0x8c, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa6},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	// Block 0x7f, offset 0x334
+	{value: 0x0010, lo: 0x80, hi: 0xb3},
+	// Block 0x80, offset 0x335
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x85},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0024, lo: 0xa0, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb7},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0010, lo: 0xbd, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x81, offset 0x33e
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0014, lo: 0xa6, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x82, offset 0x342
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x91},
+	{value: 0x0010, lo: 0x92, hi: 0x92},
+	{value: 0x0030, lo: 0x93, hi: 0x93},
+	{value: 0x0010, lo: 0xa0, hi: 0xbc},
+	// Block 0x83, offset 0x347
+	{value: 0x0014, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xb9},
+	{value: 0x0010, lo: 0xba, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x84, offset 0x34f
+	{value: 0x0030, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0014, lo: 0xa5, hi: 0xa5},
+	{value: 0x0004, lo: 0xa6, hi: 0xa6},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x85, offset 0x355
+	{value: 0x0010, lo: 0x80, hi: 0xa8},
+	{value: 0x0014, lo: 0xa9, hi: 0xae},
+	{value: 0x0010, lo: 0xaf, hi: 0xb0},
+	{value: 0x0014, lo: 0xb1, hi: 0xb2},
+	{value: 0x0010, lo: 0xb3, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb6},
+	// Block 0x86, offset 0x35b
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0010, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0004, lo: 0xb0, hi: 0xb0},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	// Block 0x87, offset 0x365
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	{value: 0x0024, lo: 0xb2, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0024, lo: 0xb7, hi: 0xb8},
+	{value: 0x0024, lo: 0xbe, hi: 0xbf},
+	// Block 0x88, offset 0x36a
+	{value: 0x0024, lo: 0x81, hi: 0x81},
+	{value: 0x0004, lo: 0x9d, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0010, lo: 0xb2, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb6},
+	// Block 0x89, offset 0x373
+	{value: 0x0010, lo: 0x81, hi: 0x86},
+	{value: 0x0010, lo: 0x89, hi: 0x8e},
+	{value: 0x0010, lo: 0x91, hi: 0x96},
+	{value: 0x0010, lo: 0xa0, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xae},
+	{value: 0x0012, lo: 0xb0, hi: 0xbf},
+	// Block 0x8a, offset 0x379
+	{value: 0x0012, lo: 0x80, hi: 0x92},
+	{value: 0xb352, lo: 0x93, hi: 0x93},
+	{value: 0x0012, lo: 0x94, hi: 0x9a},
+	{value: 0x0014, lo: 0x9b, hi: 0x9b},
+	{value: 0x0015, lo: 0x9c, hi: 0x9f},
+	{value: 0x0012, lo: 0xa0, hi: 0xa7},
+	{value: 0x74d2, lo: 0xb0, hi: 0xbf},
+	// Block 0x8b, offset 0x380
+	{value: 0x78d2, lo: 0x80, hi: 0x8f},
+	{value: 0x7cd2, lo: 0x90, hi: 0x9f},
+	{value: 0x80d2, lo: 0xa0, hi: 0xaf},
+	{value: 0x7cd2, lo: 0xb0, hi: 0xbf},
+	// Block 0x8c, offset 0x384
+	{value: 0x0010, lo: 0x80, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xaa},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x8d, offset 0x38c
+	{value: 0x0010, lo: 0x80, hi: 0xa3},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x8e, offset 0x38e
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x8b, hi: 0xbb},
+	// Block 0x8f, offset 0x390
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x86, hi: 0xbf},
+	// Block 0x90, offset 0x393
+	{value: 0x0010, lo: 0x80, hi: 0xb1},
+	{value: 0x0004, lo: 0xb2, hi: 0xbf},
+	// Block 0x91, offset 0x395
+	{value: 0x0004, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x93, hi: 0xbf},
+	// Block 0x92, offset 0x397
+	{value: 0x0010, lo: 0x80, hi: 0xbd},
+	// Block 0x93, offset 0x398
+	{value: 0x0010, lo: 0x90, hi: 0xbf},
+	// Block 0x94, offset 0x399
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x0010, lo: 0x92, hi: 0xbf},
+	// Block 0x95, offset 0x39b
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0xb0, hi: 0xbb},
+	// Block 0x96, offset 0x39d
+	{value: 0x0014, lo: 0x80, hi: 0x8f},
+	{value: 0x0054, lo: 0x93, hi: 0x93},
+	{value: 0x0024, lo: 0xa0, hi: 0xa6},
+	{value: 0x0034, lo: 0xa7, hi: 0xad},
+	{value: 0x0024, lo: 0xae, hi: 0xaf},
+	{value: 0x0010, lo: 0xb3, hi: 0xb4},
+	// Block 0x97, offset 0x3a3
+	{value: 0x0010, lo: 0x8d, hi: 0x8f},
+	{value: 0x0054, lo: 0x92, hi: 0x92},
+	{value: 0x0054, lo: 0x95, hi: 0x95},
+	{value: 0x0010, lo: 0xb0, hi: 0xb4},
+	{value: 0x0010, lo: 0xb6, hi: 0xbf},
+	// Block 0x98, offset 0x3a8
+	{value: 0x0010, lo: 0x80, hi: 0xbc},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x99, offset 0x3aa
+	{value: 0x0054, lo: 0x87, hi: 0x87},
+	{value: 0x0054, lo: 0x8e, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0054, lo: 0x9a, hi: 0x9a},
+	{value: 0x5f53, lo: 0xa1, hi: 0xba},
+	{value: 0x0004, lo: 0xbe, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x9a, offset 0x3b1
+	{value: 0x0004, lo: 0x80, hi: 0x80},
+	{value: 0x5f52, lo: 0x81, hi: 0x9a},
+	{value: 0x0004, lo: 0xb0, hi: 0xb0},
+	// Block 0x9b, offset 0x3b4
+	{value: 0x0014, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xbe},
+	// Block 0x9c, offset 0x3b6
+	{value: 0x0010, lo: 0x82, hi: 0x87},
+	{value: 0x0010, lo: 0x8a, hi: 0x8f},
+	{value: 0x0010, lo: 0x92, hi: 0x97},
+	{value: 0x0010, lo: 0x9a, hi: 0x9c},
+	{value: 0x0004, lo: 0xa3, hi: 0xa3},
+	{value: 0x0014, lo: 0xb9, hi: 0xbb},
+	// Block 0x9d, offset 0x3bc
+	{value: 0x0010, lo: 0x80, hi: 0x8b},
+	{value: 0x0010, lo: 0x8d, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xba},
+	{value: 0x0010, lo: 0xbc, hi: 0xbd},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x9e, offset 0x3c1
+	{value: 0x0010, lo: 0x80, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x9d},
+	// Block 0x9f, offset 0x3c3
+	{value: 0x0010, lo: 0x80, hi: 0xba},
+	// Block 0xa0, offset 0x3c4
+	{value: 0x0010, lo: 0x80, hi: 0xb4},
+	// Block 0xa1, offset 0x3c5
+	{value: 0x0034, lo: 0xbd, hi: 0xbd},
+	// Block 0xa2, offset 0x3c6
+	{value: 0x0010, lo: 0x80, hi: 0x9c},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0xa3, offset 0x3c8
+	{value: 0x0010, lo: 0x80, hi: 0x90},
+	{value: 0x0034, lo: 0xa0, hi: 0xa0},
+	// Block 0xa4, offset 0x3ca
+	{value: 0x0010, lo: 0x80, hi: 0x9f},
+	{value: 0x0010, lo: 0xad, hi: 0xbf},
+	// Block 0xa5, offset 0x3cc
+	{value: 0x0010, lo: 0x80, hi: 0x8a},
+	{value: 0x0010, lo: 0x90, hi: 0xb5},
+	{value: 0x0024, lo: 0xb6, hi: 0xba},
+	// Block 0xa6, offset 0x3cf
+	{value: 0x0010, lo: 0x80, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0xa7, offset 0x3d1
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x88, hi: 0x8f},
+	{value: 0x0010, lo: 0x91, hi: 0x95},
+	// Block 0xa8, offset 0x3d4
+	{value: 0x2813, lo: 0x80, hi: 0x87},
+	{value: 0x3813, lo: 0x88, hi: 0x8f},
+	{value: 0x2813, lo: 0x90, hi: 0x97},
+	{value: 0xb653, lo: 0x98, hi: 0x9f},
+	{value: 0xb953, lo: 0xa0, hi: 0xa7},
+	{value: 0x2812, lo: 0xa8, hi: 0xaf},
+	{value: 0x3812, lo: 0xb0, hi: 0xb7},
+	{value: 0x2812, lo: 0xb8, hi: 0xbf},
+	// Block 0xa9, offset 0x3dc
+	{value: 0xb652, lo: 0x80, hi: 0x87},
+	{value: 0xb952, lo: 0x88, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0xbf},
+	// Block 0xaa, offset 0x3df
+	{value: 0x0010, lo: 0x80, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0xb953, lo: 0xb0, hi: 0xb7},
+	{value: 0xb653, lo: 0xb8, hi: 0xbf},
+	// Block 0xab, offset 0x3e3
+	{value: 0x2813, lo: 0x80, hi: 0x87},
+	{value: 0x3813, lo: 0x88, hi: 0x8f},
+	{value: 0x2813, lo: 0x90, hi: 0x93},
+	{value: 0xb952, lo: 0x98, hi: 0x9f},
+	{value: 0xb652, lo: 0xa0, hi: 0xa7},
+	{value: 0x2812, lo: 0xa8, hi: 0xaf},
+	{value: 0x3812, lo: 0xb0, hi: 0xb7},
+	{value: 0x2812, lo: 0xb8, hi: 0xbb},
+	// Block 0xac, offset 0x3eb
+	{value: 0x0010, lo: 0x80, hi: 0xa7},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xad, offset 0x3ed
+	{value: 0x0010, lo: 0x80, hi: 0xa3},
+	// Block 0xae, offset 0x3ee
+	{value: 0x0010, lo: 0x80, hi: 0xb6},
+	// Block 0xaf, offset 0x3ef
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xa7},
+	// Block 0xb0, offset 0x3f1
+	{value: 0x0010, lo: 0x80, hi: 0x85},
+	{value: 0x0010, lo: 0x88, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0xb5},
+	{value: 0x0010, lo: 0xb7, hi: 0xb8},
+	{value: 0x0010, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xb1, offset 0x3f7
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb6},
+	// Block 0xb2, offset 0x3f9
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	// Block 0xb3, offset 0x3fa
+	{value: 0x0010, lo: 0xa0, hi: 0xb2},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	// Block 0xb4, offset 0x3fc
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb9},
+	// Block 0xb5, offset 0x3fe
+	{value: 0x0010, lo: 0x80, hi: 0xb7},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0xb6, offset 0x400
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x83},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x8e, hi: 0x8e},
+	{value: 0x0024, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x93},
+	{value: 0x0010, lo: 0x95, hi: 0x97},
+	{value: 0x0010, lo: 0x99, hi: 0xb5},
+	{value: 0x0024, lo: 0xb8, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xb7, offset 0x40d
+	{value: 0x0010, lo: 0xa0, hi: 0xbc},
+	// Block 0xb8, offset 0x40e
+	{value: 0x0010, lo: 0x80, hi: 0x9c},
+	// Block 0xb9, offset 0x40f
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0x89, hi: 0xa4},
+	{value: 0x0024, lo: 0xa5, hi: 0xa5},
+	{value: 0x0034, lo: 0xa6, hi: 0xa6},
+	// Block 0xba, offset 0x413
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb2},
+	// Block 0xbb, offset 0x415
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	// Block 0xbc, offset 0x416
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	// Block 0xbd, offset 0x417
+	{value: 0x5653, lo: 0x80, hi: 0xb2},
+	// Block 0xbe, offset 0x418
+	{value: 0x5652, lo: 0x80, hi: 0xb2},
+	// Block 0xbf, offset 0x419
+	{value: 0x0010, lo: 0x80, hi: 0xa3},
+	{value: 0x0024, lo: 0xa4, hi: 0xa7},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xc0, offset 0x41c
+	{value: 0x0010, lo: 0x80, hi: 0x9c},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xc1, offset 0x41f
+	{value: 0x0010, lo: 0x80, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x87},
+	{value: 0x0024, lo: 0x88, hi: 0x8a},
+	{value: 0x0034, lo: 0x8b, hi: 0x8b},
+	{value: 0x0024, lo: 0x8c, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x90},
+	// Block 0xc2, offset 0x425
+	{value: 0x0010, lo: 0xa0, hi: 0xb6},
+	// Block 0xc3, offset 0x426
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbf},
+	// Block 0xc4, offset 0x42a
+	{value: 0x0014, lo: 0x80, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xc5, offset 0x42e
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb6},
+	{value: 0x0010, lo: 0xb7, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0014, lo: 0xbd, hi: 0xbd},
+	// Block 0xc6, offset 0x434
+	{value: 0x0014, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0xa8},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xc7, offset 0x437
+	{value: 0x0024, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xab},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb4},
+	{value: 0x0010, lo: 0xb6, hi: 0xbf},
+	// Block 0xc8, offset 0x43e
+	{value: 0x0010, lo: 0x84, hi: 0x86},
+	{value: 0x0010, lo: 0x90, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb3},
+	{value: 0x0010, lo: 0xb6, hi: 0xb6},
+	// Block 0xc9, offset 0x442
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xca, offset 0x446
+	{value: 0x0030, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0014, lo: 0x89, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0014, lo: 0x8b, hi: 0x8c},
+	{value: 0x0010, lo: 0x90, hi: 0x9a},
+	{value: 0x0010, lo: 0x9c, hi: 0x9c},
+	// Block 0xcb, offset 0x44d
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	{value: 0x0010, lo: 0x93, hi: 0xae},
+	{value: 0x0014, lo: 0xaf, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0014, lo: 0xb4, hi: 0xb4},
+	{value: 0x0030, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb6},
+	{value: 0x0014, lo: 0xb7, hi: 0xb7},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	// Block 0xcc, offset 0x456
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x88, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa8},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xcd, offset 0x45c
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0014, lo: 0x9f, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa2},
+	{value: 0x0014, lo: 0xa3, hi: 0xa8},
+	{value: 0x0034, lo: 0xa9, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xce, offset 0x462
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbb, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0xcf, offset 0x46c
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0030, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9d, hi: 0xa3},
+	{value: 0x0024, lo: 0xa6, hi: 0xac},
+	{value: 0x0024, lo: 0xb0, hi: 0xb4},
+	// Block 0xd0, offset 0x476
+	{value: 0x0010, lo: 0x80, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbf},
+	// Block 0xd1, offset 0x478
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8a},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0024, lo: 0x9e, hi: 0x9e},
+	{value: 0x0010, lo: 0x9f, hi: 0x9f},
+	// Block 0xd2, offset 0x481
+	{value: 0x0010, lo: 0x80, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb8},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0xd3, offset 0x487
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0x85},
+	{value: 0x0010, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xd4, offset 0x48d
+	{value: 0x0010, lo: 0x80, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb5},
+	{value: 0x0010, lo: 0xb8, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xd5, offset 0x493
+	{value: 0x0034, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x98, hi: 0x9b},
+	{value: 0x0014, lo: 0x9c, hi: 0x9d},
+	// Block 0xd6, offset 0x496
+	{value: 0x0010, lo: 0x80, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbc},
+	{value: 0x0014, lo: 0xbd, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xd7, offset 0x49c
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x84, hi: 0x84},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xd8, offset 0x49f
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0014, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb5},
+	{value: 0x0030, lo: 0xb6, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	{value: 0x0010, lo: 0xb8, hi: 0xb8},
+	// Block 0xd9, offset 0x4a8
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	// Block 0xda, offset 0x4a9
+	{value: 0x0014, lo: 0x9d, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xdb, offset 0x4b0
+	{value: 0x0010, lo: 0x80, hi: 0xae},
+	{value: 0x0014, lo: 0xaf, hi: 0xb7},
+	{value: 0x0010, lo: 0xb8, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	// Block 0xdc, offset 0x4b4
+	{value: 0x5f53, lo: 0xa0, hi: 0xbf},
+	// Block 0xdd, offset 0x4b5
+	{value: 0x5f52, lo: 0x80, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xde, offset 0x4b8
+	{value: 0x0010, lo: 0xa0, hi: 0xa7},
+	{value: 0x0010, lo: 0xaa, hi: 0xbf},
+	// Block 0xdf, offset 0x4ba
+	{value: 0x0010, lo: 0x80, hi: 0x93},
+	{value: 0x0014, lo: 0x94, hi: 0x97},
+	{value: 0x0014, lo: 0x9a, hi: 0x9b},
+	{value: 0x0010, lo: 0x9c, hi: 0x9f},
+	{value: 0x0034, lo: 0xa0, hi: 0xa0},
+	{value: 0x0010, lo: 0xa1, hi: 0xa1},
+	{value: 0x0010, lo: 0xa3, hi: 0xa4},
+	// Block 0xe0, offset 0x4c1
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x8a},
+	{value: 0x0010, lo: 0x8b, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb8},
+	{value: 0x0010, lo: 0xb9, hi: 0xba},
+	{value: 0x0014, lo: 0xbb, hi: 0xbe},
+	// Block 0xe1, offset 0x4c9
+	{value: 0x0034, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0014, lo: 0x91, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x98},
+	{value: 0x0014, lo: 0x99, hi: 0x9b},
+	{value: 0x0010, lo: 0x9c, hi: 0xbf},
+	// Block 0xe2, offset 0x4cf
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0014, lo: 0x8a, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0014, lo: 0x98, hi: 0x98},
+	{value: 0x0034, lo: 0x99, hi: 0x99},
+	{value: 0x0010, lo: 0x9d, hi: 0x9d},
+	// Block 0xe3, offset 0x4d5
+	{value: 0x0010, lo: 0x80, hi: 0xb8},
+	// Block 0xe4, offset 0x4d6
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb6},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xe5, offset 0x4dc
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xb2, hi: 0xbf},
+	// Block 0xe6, offset 0x4df
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x0014, lo: 0x92, hi: 0xa7},
+	{value: 0x0010, lo: 0xa9, hi: 0xa9},
+	{value: 0x0014, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb6},
+	// Block 0xe7, offset 0x4e7
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x88, hi: 0x89},
+	{value: 0x0010, lo: 0x8b, hi: 0xb0},
+	{value: 0x0014, lo: 0xb1, hi: 0xb6},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0014, lo: 0xbc, hi: 0xbd},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0xe8, offset 0x4ee
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x85},
+	{value: 0x0010, lo: 0x86, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xa0, hi: 0xa5},
+	{value: 0x0010, lo: 0xa7, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xbf},
+	// Block 0xe9, offset 0x4f8
+	{value: 0x0010, lo: 0x80, hi: 0x8e},
+	{value: 0x0014, lo: 0x90, hi: 0x91},
+	{value: 0x0010, lo: 0x93, hi: 0x94},
+	{value: 0x0014, lo: 0x95, hi: 0x95},
+	{value: 0x0010, lo: 0x96, hi: 0x96},
+	{value: 0x0034, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x98, hi: 0x98},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	// Block 0xea, offset 0x500
+	{value: 0x0010, lo: 0xa0, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb6},
+	// Block 0xeb, offset 0x503
+	{value: 0x0010, lo: 0x80, hi: 0x99},
+	// Block 0xec, offset 0x504
+	{value: 0x0010, lo: 0x80, hi: 0xae},
+	// Block 0xed, offset 0x505
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	// Block 0xee, offset 0x506
+	{value: 0x0010, lo: 0x80, hi: 0xae},
+	{value: 0x0014, lo: 0xb0, hi: 0xb8},
+	// Block 0xef, offset 0x508
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	// Block 0xf0, offset 0x509
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	// Block 0xf1, offset 0x50b
+	{value: 0x0010, lo: 0x90, hi: 0xad},
+	{value: 0x0034, lo: 0xb0, hi: 0xb4},
+	// Block 0xf2, offset 0x50d
+	{value: 0x0010, lo: 0x80, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb6},
+	// Block 0xf3, offset 0x50f
+	{value: 0x0014, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xa3, hi: 0xb7},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0xf4, offset 0x513
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	// Block 0xf5, offset 0x514
+	{value: 0x2013, lo: 0x80, hi: 0x9f},
+	{value: 0x2012, lo: 0xa0, hi: 0xbf},
+	// Block 0xf6, offset 0x516
+	{value: 0x0010, lo: 0x80, hi: 0x8a},
+	{value: 0x0014, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0xbf},
+	// Block 0xf7, offset 0x519
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0014, lo: 0x8f, hi: 0x9f},
+	// Block 0xf8, offset 0x51b
+	{value: 0x0014, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa3, hi: 0xa3},
+	// Block 0xf9, offset 0x51d
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xbc},
+	// Block 0xfa, offset 0x51f
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x0034, lo: 0x9e, hi: 0x9e},
+	{value: 0x0014, lo: 0xa0, hi: 0xa3},
+	// Block 0xfb, offset 0x524
+	{value: 0x0030, lo: 0xa5, hi: 0xa6},
+	{value: 0x0034, lo: 0xa7, hi: 0xa9},
+	{value: 0x0030, lo: 0xad, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbf},
+	// Block 0xfc, offset 0x529
+	{value: 0x0034, lo: 0x80, hi: 0x82},
+	{value: 0x0024, lo: 0x85, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8b},
+	{value: 0x0024, lo: 0xaa, hi: 0xad},
+	// Block 0xfd, offset 0x52d
+	{value: 0x0024, lo: 0x82, hi: 0x84},
+	// Block 0xfe, offset 0x52e
+	{value: 0x0013, lo: 0x80, hi: 0x99},
+	{value: 0x0012, lo: 0x9a, hi: 0xb3},
+	{value: 0x0013, lo: 0xb4, hi: 0xbf},
+	// Block 0xff, offset 0x531
+	{value: 0x0013, lo: 0x80, hi: 0x8d},
+	{value: 0x0012, lo: 0x8e, hi: 0x94},
+	{value: 0x0012, lo: 0x96, hi: 0xa7},
+	{value: 0x0013, lo: 0xa8, hi: 0xbf},
+	// Block 0x100, offset 0x535
+	{value: 0x0013, lo: 0x80, hi: 0x81},
+	{value: 0x0012, lo: 0x82, hi: 0x9b},
+	{value: 0x0013, lo: 0x9c, hi: 0x9c},
+	{value: 0x0013, lo: 0x9e, hi: 0x9f},
+	{value: 0x0013, lo: 0xa2, hi: 0xa2},
+	{value: 0x0013, lo: 0xa5, hi: 0xa6},
+	{value: 0x0013, lo: 0xa9, hi: 0xac},
+	{value: 0x0013, lo: 0xae, hi: 0xb5},
+	{value: 0x0012, lo: 0xb6, hi: 0xb9},
+	{value: 0x0012, lo: 0xbb, hi: 0xbb},
+	{value: 0x0012, lo: 0xbd, hi: 0xbf},
+	// Block 0x101, offset 0x540
+	{value: 0x0012, lo: 0x80, hi: 0x83},
+	{value: 0x0012, lo: 0x85, hi: 0x8f},
+	{value: 0x0013, lo: 0x90, hi: 0xa9},
+	{value: 0x0012, lo: 0xaa, hi: 0xbf},
+	// Block 0x102, offset 0x544
+	{value: 0x0012, lo: 0x80, hi: 0x83},
+	{value: 0x0013, lo: 0x84, hi: 0x85},
+	{value: 0x0013, lo: 0x87, hi: 0x8a},
+	{value: 0x0013, lo: 0x8d, hi: 0x94},
+	{value: 0x0013, lo: 0x96, hi: 0x9c},
+	{value: 0x0012, lo: 0x9e, hi: 0xb7},
+	{value: 0x0013, lo: 0xb8, hi: 0xb9},
+	{value: 0x0013, lo: 0xbb, hi: 0xbe},
+	// Block 0x103, offset 0x54c
+	{value: 0x0013, lo: 0x80, hi: 0x84},
+	{value: 0x0013, lo: 0x86, hi: 0x86},
+	{value: 0x0013, lo: 0x8a, hi: 0x90},
+	{value: 0x0012, lo: 0x92, hi: 0xab},
+	{value: 0x0013, lo: 0xac, hi: 0xbf},
+	// Block 0x104, offset 0x551
+	{value: 0x0013, lo: 0x80, hi: 0x85},
+	{value: 0x0012, lo: 0x86, hi: 0x9f},
+	{value: 0x0013, lo: 0xa0, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xbf},
+	// Block 0x105, offset 0x555
+	{value: 0x0012, lo: 0x80, hi: 0x93},
+	{value: 0x0013, lo: 0x94, hi: 0xad},
+	{value: 0x0012, lo: 0xae, hi: 0xbf},
+	// Block 0x106, offset 0x558
+	{value: 0x0012, lo: 0x80, hi: 0x87},
+	{value: 0x0013, lo: 0x88, hi: 0xa1},
+	{value: 0x0012, lo: 0xa2, hi: 0xbb},
+	{value: 0x0013, lo: 0xbc, hi: 0xbf},
+	// Block 0x107, offset 0x55c
+	{value: 0x0013, lo: 0x80, hi: 0x95},
+	{value: 0x0012, lo: 0x96, hi: 0xaf},
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0x108, offset 0x55f
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	{value: 0x0012, lo: 0x8a, hi: 0xa5},
+	{value: 0x0013, lo: 0xa8, hi: 0xbf},
+	// Block 0x109, offset 0x562
+	{value: 0x0013, lo: 0x80, hi: 0x80},
+	{value: 0x0012, lo: 0x82, hi: 0x9a},
+	{value: 0x0012, lo: 0x9c, hi: 0xa1},
+	{value: 0x0013, lo: 0xa2, hi: 0xba},
+	{value: 0x0012, lo: 0xbc, hi: 0xbf},
+	// Block 0x10a, offset 0x567
+	{value: 0x0012, lo: 0x80, hi: 0x94},
+	{value: 0x0012, lo: 0x96, hi: 0x9b},
+	{value: 0x0013, lo: 0x9c, hi: 0xb4},
+	{value: 0x0012, lo: 0xb6, hi: 0xbf},
+	// Block 0x10b, offset 0x56b
+	{value: 0x0012, lo: 0x80, hi: 0x8e},
+	{value: 0x0012, lo: 0x90, hi: 0x95},
+	{value: 0x0013, lo: 0x96, hi: 0xae},
+	{value: 0x0012, lo: 0xb0, hi: 0xbf},
+	// Block 0x10c, offset 0x56f
+	{value: 0x0012, lo: 0x80, hi: 0x88},
+	{value: 0x0012, lo: 0x8a, hi: 0x8f},
+	{value: 0x0013, lo: 0x90, hi: 0xa8},
+	{value: 0x0012, lo: 0xaa, hi: 0xbf},
+	// Block 0x10d, offset 0x573
+	{value: 0x0012, lo: 0x80, hi: 0x82},
+	{value: 0x0012, lo: 0x84, hi: 0x89},
+	{value: 0x0017, lo: 0x8a, hi: 0x8b},
+	{value: 0x0010, lo: 0x8e, hi: 0xbf},
+	// Block 0x10e, offset 0x577
+	{value: 0x0014, lo: 0x80, hi: 0xb6},
+	{value: 0x0014, lo: 0xbb, hi: 0xbf},
+	// Block 0x10f, offset 0x579
+	{value: 0x0014, lo: 0x80, hi: 0xac},
+	{value: 0x0014, lo: 0xb5, hi: 0xb5},
+	// Block 0x110, offset 0x57b
+	{value: 0x0014, lo: 0x84, hi: 0x84},
+	{value: 0x0014, lo: 0x9b, hi: 0x9f},
+	{value: 0x0014, lo: 0xa1, hi: 0xaf},
+	// Block 0x111, offset 0x57e
+	{value: 0x0024, lo: 0x80, hi: 0x86},
+	{value: 0x0024, lo: 0x88, hi: 0x98},
+	{value: 0x0024, lo: 0x9b, hi: 0xa1},
+	{value: 0x0024, lo: 0xa3, hi: 0xa4},
+	{value: 0x0024, lo: 0xa6, hi: 0xaa},
+	// Block 0x112, offset 0x583
+	{value: 0x0010, lo: 0x80, hi: 0xac},
+	{value: 0x0024, lo: 0xb0, hi: 0xb6},
+	{value: 0x0014, lo: 0xb7, hi: 0xbd},
+	// Block 0x113, offset 0x586
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x8e, hi: 0x8e},
+	// Block 0x114, offset 0x588
+	{value: 0x0010, lo: 0x80, hi: 0xab},
+	{value: 0x0024, lo: 0xac, hi: 0xaf},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x115, offset 0x58b
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0034, lo: 0x90, hi: 0x96},
+	// Block 0x116, offset 0x58d
+	{value: 0xbc52, lo: 0x80, hi: 0x81},
+	{value: 0xbf52, lo: 0x82, hi: 0x83},
+	{value: 0x0024, lo: 0x84, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0014, lo: 0x8b, hi: 0x8b},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x117, offset 0x593
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x9f},
+	{value: 0x0010, lo: 0xa1, hi: 0xa2},
+	{value: 0x0010, lo: 0xa4, hi: 0xa4},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0010, lo: 0xa9, hi: 0xb2},
+	{value: 0x0010, lo: 0xb4, hi: 0xb7},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	// Block 0x118, offset 0x59c
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x8b, hi: 0x9b},
+	{value: 0x0010, lo: 0xa1, hi: 0xa3},
+	{value: 0x0010, lo: 0xa5, hi: 0xa9},
+	{value: 0x0010, lo: 0xab, hi: 0xbb},
+	// Block 0x119, offset 0x5a1
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0x11a, offset 0x5a2
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	{value: 0x0013, lo: 0x90, hi: 0xa9},
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0x11b, offset 0x5a5
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	// Block 0x11c, offset 0x5a6
+	{value: 0x0014, lo: 0xbb, hi: 0xbf},
+	// Block 0x11d, offset 0x5a7
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0014, lo: 0xa0, hi: 0xbf},
+	// Block 0x11e, offset 0x5a9
+	{value: 0x0014, lo: 0x80, hi: 0xbf},
+	// Block 0x11f, offset 0x5aa
+	{value: 0x0014, lo: 0x80, hi: 0xaf},
+}
+
+// Total table size 15070 bytes (14KiB); checksum: 1EB13752
diff --git a/vendor/golang.org/x/text/cases/tables13.0.0.go b/vendor/golang.org/x/text/cases/tables13.0.0.go
new file mode 100644
index 00000000..6187e6b4
--- /dev/null
+++ b/vendor/golang.org/x/text/cases/tables13.0.0.go
@@ -0,0 +1,2399 @@
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
+
+//go:build go1.16 && !go1.21
+
+package cases
+
+// UnicodeVersion is the Unicode version from which the tables in this package are derived.
+const UnicodeVersion = "13.0.0"
+
+var xorData string = "" + // Size: 192 bytes
+	"\x00\x06\x07\x00\x01?\x00\x0f\x03\x00\x0f\x12\x00\x0f\x1f\x00\x0f\x1d" +
+	"\x00\x01\x13\x00\x0f\x16\x00\x0f\x0b\x00\x0f3\x00\x0f7\x00\x01#\x00\x0f?" +
+	"\x00\x0e'\x00\x0f/\x00\x0e>\x00\x0f*\x00\x0c&\x00\x0c*\x00\x0c;\x00\x0c9" +
+	"\x00\x0c%\x00\x01\x08\x00\x03\x0d\x00\x03\x09\x00\x02\x06\x00\x02\x02" +
+	"\x00\x02\x0c\x00\x01\x00\x00\x01\x03\x00\x01\x01\x00\x01 \x00\x01\x0c" +
+	"\x00\x01\x10\x00\x03\x10\x00\x036 \x00\x037 \x00\x0b#\x10\x00\x0b 0\x00" +
+	"\x0b!\x10\x00\x0b!0\x001\x00\x00\x0b(\x04\x00\x03\x04\x1e\x00\x0b)\x08" +
+	"\x00\x03\x0a\x00\x02:\x00\x02>\x00\x02,\x00\x02\x00\x00\x02\x10\x00\x01<" +
+	"\x00\x01&\x00\x01*\x00\x01.\x00\x010\x003 \x00\x01\x18\x00\x01(\x00\x01" +
+	"\x1e\x00\x01\x22"
+
+var exceptions string = "" + // Size: 2450 bytes
+	"\x00\x12\x12μΜΜ\x12\x12ssSSSs\x13\x18i̇i̇\x10\x09II\x13\x1bʼnʼNʼN\x11" +
+	"\x09sSS\x12\x12dždžDž\x12\x12dždžDŽ\x10\x12DŽDž\x12\x12ljljLj\x12\x12ljljLJ\x10\x12LJLj" +
+	"\x12\x12njnjNj\x12\x12njnjNJ\x10\x12NJNj\x13\x1bǰJ̌J̌\x12\x12dzdzDz\x12\x12dzdzDZ\x10" +
+	"\x12DZDz\x13\x18ⱥⱥ\x13\x18ⱦⱦ\x10\x1bⱾⱾ\x10\x1bⱿⱿ\x10\x1bⱯⱯ\x10\x1bⱭⱭ\x10" +
+	"\x1bⱰⱰ\x10\x1bꞫꞫ\x10\x1bꞬꞬ\x10\x1bꞍꞍ\x10\x1bꞪꞪ\x10\x1bꞮꞮ\x10\x1bⱢⱢ\x10" +
+	"\x1bꞭꞭ\x10\x1bⱮⱮ\x10\x1bⱤⱤ\x10\x1bꟅꟅ\x10\x1bꞱꞱ\x10\x1bꞲꞲ\x10\x1bꞰꞰ2\x12ι" +
+	"ΙΙ\x166ΐΪ́Ϊ́\x166ΰΫ́Ϋ́\x12\x12σΣΣ\x12\x12βΒΒ\x12\x12θΘΘ\x12\x12" +
+	"φΦΦ\x12\x12πΠΠ\x12\x12κΚΚ\x12\x12ρΡΡ\x12\x12εΕΕ\x14$եւԵՒԵւ\x10\x1bᲐა" +
+	"\x10\x1bᲑბ\x10\x1bᲒგ\x10\x1bᲓდ\x10\x1bᲔე\x10\x1bᲕვ\x10\x1bᲖზ\x10\x1bᲗთ" +
+	"\x10\x1bᲘი\x10\x1bᲙკ\x10\x1bᲚლ\x10\x1bᲛმ\x10\x1bᲜნ\x10\x1bᲝო\x10\x1bᲞპ" +
+	"\x10\x1bᲟჟ\x10\x1bᲠრ\x10\x1bᲡს\x10\x1bᲢტ\x10\x1bᲣუ\x10\x1bᲤფ\x10\x1bᲥქ" +
+	"\x10\x1bᲦღ\x10\x1bᲧყ\x10\x1bᲨშ\x10\x1bᲩჩ\x10\x1bᲪც\x10\x1bᲫძ\x10\x1bᲬწ" +
+	"\x10\x1bᲭჭ\x10\x1bᲮხ\x10\x1bᲯჯ\x10\x1bᲰჰ\x10\x1bᲱჱ\x10\x1bᲲჲ\x10\x1bᲳჳ" +
+	"\x10\x1bᲴჴ\x10\x1bᲵჵ\x10\x1bᲶჶ\x10\x1bᲷჷ\x10\x1bᲸჸ\x10\x1bᲹჹ\x10\x1bᲺჺ" +
+	"\x10\x1bᲽჽ\x10\x1bᲾჾ\x10\x1bᲿჿ\x12\x12вВВ\x12\x12дДД\x12\x12оОО\x12\x12с" +
+	"СС\x12\x12тТТ\x12\x12тТТ\x12\x12ъЪЪ\x12\x12ѣѢѢ\x13\x1bꙋꙊꙊ\x13\x1bẖH̱H̱" +
+	"\x13\x1bẗT̈T̈\x13\x1bẘW̊W̊\x13\x1bẙY̊Y̊\x13\x1baʾAʾAʾ\x13\x1bṡṠṠ\x12" +
+	"\x10ssß\x14$ὐΥ̓Υ̓\x166ὒΥ̓̀Υ̓̀\x166ὔΥ̓́Υ̓́\x166ὖΥ̓͂Υ̓͂\x15+ἀιἈΙᾈ" +
+	"\x15+ἁιἉΙᾉ\x15+ἂιἊΙᾊ\x15+ἃιἋΙᾋ\x15+ἄιἌΙᾌ\x15+ἅιἍΙᾍ\x15+ἆιἎΙᾎ\x15+ἇιἏΙᾏ" +
+	"\x15\x1dἀιᾀἈΙ\x15\x1dἁιᾁἉΙ\x15\x1dἂιᾂἊΙ\x15\x1dἃιᾃἋΙ\x15\x1dἄιᾄἌΙ\x15" +
+	"\x1dἅιᾅἍΙ\x15\x1dἆιᾆἎΙ\x15\x1dἇιᾇἏΙ\x15+ἠιἨΙᾘ\x15+ἡιἩΙᾙ\x15+ἢιἪΙᾚ\x15+ἣι" +
+	"ἫΙᾛ\x15+ἤιἬΙᾜ\x15+ἥιἭΙᾝ\x15+ἦιἮΙᾞ\x15+ἧιἯΙᾟ\x15\x1dἠιᾐἨΙ\x15\x1dἡιᾑἩΙ" +
+	"\x15\x1dἢιᾒἪΙ\x15\x1dἣιᾓἫΙ\x15\x1dἤιᾔἬΙ\x15\x1dἥιᾕἭΙ\x15\x1dἦιᾖἮΙ\x15" +
+	"\x1dἧιᾗἯΙ\x15+ὠιὨΙᾨ\x15+ὡιὩΙᾩ\x15+ὢιὪΙᾪ\x15+ὣιὫΙᾫ\x15+ὤιὬΙᾬ\x15+ὥιὭΙᾭ" +
+	"\x15+ὦιὮΙᾮ\x15+ὧιὯΙᾯ\x15\x1dὠιᾠὨΙ\x15\x1dὡιᾡὩΙ\x15\x1dὢιᾢὪΙ\x15\x1dὣιᾣὫΙ" +
+	"\x15\x1dὤιᾤὬΙ\x15\x1dὥιᾥὭΙ\x15\x1dὦιᾦὮΙ\x15\x1dὧιᾧὯΙ\x15-ὰιᾺΙᾺͅ\x14#αιΑΙ" +
+	"ᾼ\x14$άιΆΙΆͅ\x14$ᾶΑ͂Α͂\x166ᾶιΑ͂Ιᾼ͂\x14\x1cαιᾳΑΙ\x12\x12ιΙΙ\x15-ὴιῊΙ" +
+	"Ὴͅ\x14#ηιΗΙῌ\x14$ήιΉΙΉͅ\x14$ῆΗ͂Η͂\x166ῆιΗ͂Ιῌ͂\x14\x1cηιῃΗΙ\x166ῒΙ" +
+	"̈̀Ϊ̀\x166ΐΪ́Ϊ́\x14$ῖΙ͂Ι͂\x166ῗΪ͂Ϊ͂\x166ῢΫ̀Ϋ̀\x166ΰΫ́Ϋ" +
+	"́\x14$ῤΡ̓Ρ̓\x14$ῦΥ͂Υ͂\x166ῧΫ͂Ϋ͂\x15-ὼιῺΙῺͅ\x14#ωιΩΙῼ\x14$ώιΏΙΏͅ" +
+	"\x14$ῶΩ͂Ω͂\x166ῶιΩ͂Ιῼ͂\x14\x1cωιῳΩΙ\x12\x10ωω\x11\x08kk\x12\x10åå\x12" +
+	"\x10ɫɫ\x12\x10ɽɽ\x10\x12ȺȺ\x10\x12ȾȾ\x12\x10ɑɑ\x12\x10ɱɱ\x12\x10ɐɐ\x12" +
+	"\x10ɒɒ\x12\x10ȿȿ\x12\x10ɀɀ\x12\x10ɥɥ\x12\x10ɦɦ\x12\x10ɜɜ\x12\x10ɡɡ\x12" +
+	"\x10ɬɬ\x12\x10ɪɪ\x12\x10ʞʞ\x12\x10ʇʇ\x12\x10ʝʝ\x12\x10ʂʂ\x12\x12ffFFFf" +
+	"\x12\x12fiFIFi\x12\x12flFLFl\x13\x1bffiFFIFfi\x13\x1bfflFFLFfl\x12\x12st" +
+	"STSt\x12\x12stSTSt\x14$մնՄՆՄն\x14$մեՄԵՄե\x14$միՄԻՄի\x14$վնՎՆՎն\x14$մխՄԽՄ" +
+	"խ"
+
+// lookup returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *caseTrie) lookup(s []byte) (v uint16, sz int) {
+	c0 := s[0]
+	switch {
+	case c0 < 0x80: // is ASCII
+		return caseValues[c0], 1
+	case c0 < 0xC2:
+		return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+	case c0 < 0xE0: // 2-byte UTF-8
+		if len(s) < 2 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c1), 2
+	case c0 < 0xF0: // 3-byte UTF-8
+		if len(s) < 3 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c2), 3
+	case c0 < 0xF8: // 4-byte UTF-8
+		if len(s) < 4 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		o = uint32(i)<<6 + uint32(c2)
+		i = caseIndex[o]
+		c3 := s[3]
+		if c3 < 0x80 || 0xC0 <= c3 {
+			return 0, 3 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c3), 4
+	}
+	// Illegal rune
+	return 0, 1
+}
+
+// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *caseTrie) lookupUnsafe(s []byte) uint16 {
+	c0 := s[0]
+	if c0 < 0x80 { // is ASCII
+		return caseValues[c0]
+	}
+	i := caseIndex[c0]
+	if c0 < 0xE0 { // 2-byte UTF-8
+		return t.lookupValue(uint32(i), s[1])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[1])]
+	if c0 < 0xF0 { // 3-byte UTF-8
+		return t.lookupValue(uint32(i), s[2])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[2])]
+	if c0 < 0xF8 { // 4-byte UTF-8
+		return t.lookupValue(uint32(i), s[3])
+	}
+	return 0
+}
+
+// lookupString returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *caseTrie) lookupString(s string) (v uint16, sz int) {
+	c0 := s[0]
+	switch {
+	case c0 < 0x80: // is ASCII
+		return caseValues[c0], 1
+	case c0 < 0xC2:
+		return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+	case c0 < 0xE0: // 2-byte UTF-8
+		if len(s) < 2 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c1), 2
+	case c0 < 0xF0: // 3-byte UTF-8
+		if len(s) < 3 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c2), 3
+	case c0 < 0xF8: // 4-byte UTF-8
+		if len(s) < 4 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		o = uint32(i)<<6 + uint32(c2)
+		i = caseIndex[o]
+		c3 := s[3]
+		if c3 < 0x80 || 0xC0 <= c3 {
+			return 0, 3 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c3), 4
+	}
+	// Illegal rune
+	return 0, 1
+}
+
+// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *caseTrie) lookupStringUnsafe(s string) uint16 {
+	c0 := s[0]
+	if c0 < 0x80 { // is ASCII
+		return caseValues[c0]
+	}
+	i := caseIndex[c0]
+	if c0 < 0xE0 { // 2-byte UTF-8
+		return t.lookupValue(uint32(i), s[1])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[1])]
+	if c0 < 0xF0 { // 3-byte UTF-8
+		return t.lookupValue(uint32(i), s[2])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[2])]
+	if c0 < 0xF8 { // 4-byte UTF-8
+		return t.lookupValue(uint32(i), s[3])
+	}
+	return 0
+}
+
+// caseTrie. Total size: 12538 bytes (12.24 KiB). Checksum: af4dfa7d60c71d4c.
+type caseTrie struct{}
+
+func newCaseTrie(i int) *caseTrie {
+	return &caseTrie{}
+}
+
+// lookupValue determines the type of block n and looks up the value for b.
+func (t *caseTrie) lookupValue(n uint32, b byte) uint16 {
+	switch {
+	case n < 20:
+		return uint16(caseValues[n<<6+uint32(b)])
+	default:
+		n -= 20
+		return uint16(sparse.lookup(n, b))
+	}
+}
+
+// caseValues: 22 blocks, 1408 entries, 2816 bytes
+// The third block is the zero block.
+var caseValues = [1408]uint16{
+	// Block 0x0, offset 0x0
+	0x27: 0x0054,
+	0x2e: 0x0054,
+	0x30: 0x0010, 0x31: 0x0010, 0x32: 0x0010, 0x33: 0x0010, 0x34: 0x0010, 0x35: 0x0010,
+	0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0054,
+	// Block 0x1, offset 0x40
+	0x41: 0x2013, 0x42: 0x2013, 0x43: 0x2013, 0x44: 0x2013, 0x45: 0x2013,
+	0x46: 0x2013, 0x47: 0x2013, 0x48: 0x2013, 0x49: 0x2013, 0x4a: 0x2013, 0x4b: 0x2013,
+	0x4c: 0x2013, 0x4d: 0x2013, 0x4e: 0x2013, 0x4f: 0x2013, 0x50: 0x2013, 0x51: 0x2013,
+	0x52: 0x2013, 0x53: 0x2013, 0x54: 0x2013, 0x55: 0x2013, 0x56: 0x2013, 0x57: 0x2013,
+	0x58: 0x2013, 0x59: 0x2013, 0x5a: 0x2013,
+	0x5e: 0x0004, 0x5f: 0x0010, 0x60: 0x0004, 0x61: 0x2012, 0x62: 0x2012, 0x63: 0x2012,
+	0x64: 0x2012, 0x65: 0x2012, 0x66: 0x2012, 0x67: 0x2012, 0x68: 0x2012, 0x69: 0x2012,
+	0x6a: 0x2012, 0x6b: 0x2012, 0x6c: 0x2012, 0x6d: 0x2012, 0x6e: 0x2012, 0x6f: 0x2012,
+	0x70: 0x2012, 0x71: 0x2012, 0x72: 0x2012, 0x73: 0x2012, 0x74: 0x2012, 0x75: 0x2012,
+	0x76: 0x2012, 0x77: 0x2012, 0x78: 0x2012, 0x79: 0x2012, 0x7a: 0x2012,
+	// Block 0x2, offset 0x80
+	// Block 0x3, offset 0xc0
+	0xc0: 0x0852, 0xc1: 0x0b53, 0xc2: 0x0113, 0xc3: 0x0112, 0xc4: 0x0113, 0xc5: 0x0112,
+	0xc6: 0x0b53, 0xc7: 0x0f13, 0xc8: 0x0f12, 0xc9: 0x0e53, 0xca: 0x1153, 0xcb: 0x0713,
+	0xcc: 0x0712, 0xcd: 0x0012, 0xce: 0x1453, 0xcf: 0x1753, 0xd0: 0x1a53, 0xd1: 0x0313,
+	0xd2: 0x0312, 0xd3: 0x1d53, 0xd4: 0x2053, 0xd5: 0x2352, 0xd6: 0x2653, 0xd7: 0x2653,
+	0xd8: 0x0113, 0xd9: 0x0112, 0xda: 0x2952, 0xdb: 0x0012, 0xdc: 0x1d53, 0xdd: 0x2c53,
+	0xde: 0x2f52, 0xdf: 0x3253, 0xe0: 0x0113, 0xe1: 0x0112, 0xe2: 0x0113, 0xe3: 0x0112,
+	0xe4: 0x0113, 0xe5: 0x0112, 0xe6: 0x3553, 0xe7: 0x0f13, 0xe8: 0x0f12, 0xe9: 0x3853,
+	0xea: 0x0012, 0xeb: 0x0012, 0xec: 0x0113, 0xed: 0x0112, 0xee: 0x3553, 0xef: 0x1f13,
+	0xf0: 0x1f12, 0xf1: 0x3b53, 0xf2: 0x3e53, 0xf3: 0x0713, 0xf4: 0x0712, 0xf5: 0x0313,
+	0xf6: 0x0312, 0xf7: 0x4153, 0xf8: 0x0113, 0xf9: 0x0112, 0xfa: 0x0012, 0xfb: 0x0010,
+	0xfc: 0x0113, 0xfd: 0x0112, 0xfe: 0x0012, 0xff: 0x4452,
+	// Block 0x4, offset 0x100
+	0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x02db, 0x105: 0x0359,
+	0x106: 0x03da, 0x107: 0x043b, 0x108: 0x04b9, 0x109: 0x053a, 0x10a: 0x059b, 0x10b: 0x0619,
+	0x10c: 0x069a, 0x10d: 0x0313, 0x10e: 0x0312, 0x10f: 0x1f13, 0x110: 0x1f12, 0x111: 0x0313,
+	0x112: 0x0312, 0x113: 0x0713, 0x114: 0x0712, 0x115: 0x0313, 0x116: 0x0312, 0x117: 0x0f13,
+	0x118: 0x0f12, 0x119: 0x0313, 0x11a: 0x0312, 0x11b: 0x0713, 0x11c: 0x0712, 0x11d: 0x1452,
+	0x11e: 0x0113, 0x11f: 0x0112, 0x120: 0x0113, 0x121: 0x0112, 0x122: 0x0113, 0x123: 0x0112,
+	0x124: 0x0113, 0x125: 0x0112, 0x126: 0x0113, 0x127: 0x0112, 0x128: 0x0113, 0x129: 0x0112,
+	0x12a: 0x0113, 0x12b: 0x0112, 0x12c: 0x0113, 0x12d: 0x0112, 0x12e: 0x0113, 0x12f: 0x0112,
+	0x130: 0x06fa, 0x131: 0x07ab, 0x132: 0x0829, 0x133: 0x08aa, 0x134: 0x0113, 0x135: 0x0112,
+	0x136: 0x2353, 0x137: 0x4453, 0x138: 0x0113, 0x139: 0x0112, 0x13a: 0x0113, 0x13b: 0x0112,
+	0x13c: 0x0113, 0x13d: 0x0112, 0x13e: 0x0113, 0x13f: 0x0112,
+	// Block 0x5, offset 0x140
+	0x140: 0x0a8a, 0x141: 0x0313, 0x142: 0x0312, 0x143: 0x0853, 0x144: 0x4753, 0x145: 0x4a53,
+	0x146: 0x0113, 0x147: 0x0112, 0x148: 0x0113, 0x149: 0x0112, 0x14a: 0x0113, 0x14b: 0x0112,
+	0x14c: 0x0113, 0x14d: 0x0112, 0x14e: 0x0113, 0x14f: 0x0112, 0x150: 0x0b0a, 0x151: 0x0b8a,
+	0x152: 0x0c0a, 0x153: 0x0b52, 0x154: 0x0b52, 0x155: 0x0012, 0x156: 0x0e52, 0x157: 0x1152,
+	0x158: 0x0012, 0x159: 0x1752, 0x15a: 0x0012, 0x15b: 0x1a52, 0x15c: 0x0c8a, 0x15d: 0x0012,
+	0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1d52, 0x161: 0x0d0a, 0x162: 0x0012, 0x163: 0x2052,
+	0x164: 0x0012, 0x165: 0x0d8a, 0x166: 0x0e0a, 0x167: 0x0012, 0x168: 0x2652, 0x169: 0x2652,
+	0x16a: 0x0e8a, 0x16b: 0x0f0a, 0x16c: 0x0f8a, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1d52,
+	0x170: 0x0012, 0x171: 0x100a, 0x172: 0x2c52, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x3252,
+	0x176: 0x0012, 0x177: 0x0012, 0x178: 0x0012, 0x179: 0x0012, 0x17a: 0x0012, 0x17b: 0x0012,
+	0x17c: 0x0012, 0x17d: 0x108a, 0x17e: 0x0012, 0x17f: 0x0012,
+	// Block 0x6, offset 0x180
+	0x180: 0x3552, 0x181: 0x0012, 0x182: 0x110a, 0x183: 0x3852, 0x184: 0x0012, 0x185: 0x0012,
+	0x186: 0x0012, 0x187: 0x118a, 0x188: 0x3552, 0x189: 0x4752, 0x18a: 0x3b52, 0x18b: 0x3e52,
+	0x18c: 0x4a52, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012,
+	0x192: 0x4152, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012,
+	0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x120a,
+	0x19e: 0x128a, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012,
+	0x1a4: 0x0012, 0x1a5: 0x0012, 0x1a6: 0x0012, 0x1a7: 0x0012, 0x1a8: 0x0012, 0x1a9: 0x0012,
+	0x1aa: 0x0012, 0x1ab: 0x0012, 0x1ac: 0x0012, 0x1ad: 0x0012, 0x1ae: 0x0012, 0x1af: 0x0012,
+	0x1b0: 0x0015, 0x1b1: 0x0015, 0x1b2: 0x0015, 0x1b3: 0x0015, 0x1b4: 0x0015, 0x1b5: 0x0015,
+	0x1b6: 0x0015, 0x1b7: 0x0015, 0x1b8: 0x0015, 0x1b9: 0x0014, 0x1ba: 0x0014, 0x1bb: 0x0014,
+	0x1bc: 0x0014, 0x1bd: 0x0014, 0x1be: 0x0014, 0x1bf: 0x0014,
+	// Block 0x7, offset 0x1c0
+	0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x130d,
+	0x1c6: 0x0024, 0x1c7: 0x0034, 0x1c8: 0x0034, 0x1c9: 0x0034, 0x1ca: 0x0024, 0x1cb: 0x0024,
+	0x1cc: 0x0024, 0x1cd: 0x0034, 0x1ce: 0x0034, 0x1cf: 0x0014, 0x1d0: 0x0024, 0x1d1: 0x0024,
+	0x1d2: 0x0024, 0x1d3: 0x0034, 0x1d4: 0x0034, 0x1d5: 0x0034, 0x1d6: 0x0034, 0x1d7: 0x0024,
+	0x1d8: 0x0034, 0x1d9: 0x0034, 0x1da: 0x0034, 0x1db: 0x0024, 0x1dc: 0x0034, 0x1dd: 0x0034,
+	0x1de: 0x0034, 0x1df: 0x0034, 0x1e0: 0x0034, 0x1e1: 0x0034, 0x1e2: 0x0034, 0x1e3: 0x0024,
+	0x1e4: 0x0024, 0x1e5: 0x0024, 0x1e6: 0x0024, 0x1e7: 0x0024, 0x1e8: 0x0024, 0x1e9: 0x0024,
+	0x1ea: 0x0024, 0x1eb: 0x0024, 0x1ec: 0x0024, 0x1ed: 0x0024, 0x1ee: 0x0024, 0x1ef: 0x0024,
+	0x1f0: 0x0113, 0x1f1: 0x0112, 0x1f2: 0x0113, 0x1f3: 0x0112, 0x1f4: 0x0014, 0x1f5: 0x0004,
+	0x1f6: 0x0113, 0x1f7: 0x0112, 0x1fa: 0x0015, 0x1fb: 0x4d52,
+	0x1fc: 0x5052, 0x1fd: 0x5052, 0x1ff: 0x5353,
+	// Block 0x8, offset 0x200
+	0x204: 0x0004, 0x205: 0x0004,
+	0x206: 0x2a13, 0x207: 0x0054, 0x208: 0x2513, 0x209: 0x2713, 0x20a: 0x2513,
+	0x20c: 0x5653, 0x20e: 0x5953, 0x20f: 0x5c53, 0x210: 0x138a, 0x211: 0x2013,
+	0x212: 0x2013, 0x213: 0x2013, 0x214: 0x2013, 0x215: 0x2013, 0x216: 0x2013, 0x217: 0x2013,
+	0x218: 0x2013, 0x219: 0x2013, 0x21a: 0x2013, 0x21b: 0x2013, 0x21c: 0x2013, 0x21d: 0x2013,
+	0x21e: 0x2013, 0x21f: 0x2013, 0x220: 0x5f53, 0x221: 0x5f53, 0x223: 0x5f53,
+	0x224: 0x5f53, 0x225: 0x5f53, 0x226: 0x5f53, 0x227: 0x5f53, 0x228: 0x5f53, 0x229: 0x5f53,
+	0x22a: 0x5f53, 0x22b: 0x5f53, 0x22c: 0x2a12, 0x22d: 0x2512, 0x22e: 0x2712, 0x22f: 0x2512,
+	0x230: 0x14ca, 0x231: 0x2012, 0x232: 0x2012, 0x233: 0x2012, 0x234: 0x2012, 0x235: 0x2012,
+	0x236: 0x2012, 0x237: 0x2012, 0x238: 0x2012, 0x239: 0x2012, 0x23a: 0x2012, 0x23b: 0x2012,
+	0x23c: 0x2012, 0x23d: 0x2012, 0x23e: 0x2012, 0x23f: 0x2012,
+	// Block 0x9, offset 0x240
+	0x240: 0x5f52, 0x241: 0x5f52, 0x242: 0x160a, 0x243: 0x5f52, 0x244: 0x5f52, 0x245: 0x5f52,
+	0x246: 0x5f52, 0x247: 0x5f52, 0x248: 0x5f52, 0x249: 0x5f52, 0x24a: 0x5f52, 0x24b: 0x5f52,
+	0x24c: 0x5652, 0x24d: 0x5952, 0x24e: 0x5c52, 0x24f: 0x1813, 0x250: 0x168a, 0x251: 0x170a,
+	0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x178a, 0x256: 0x180a, 0x257: 0x1812,
+	0x258: 0x0113, 0x259: 0x0112, 0x25a: 0x0113, 0x25b: 0x0112, 0x25c: 0x0113, 0x25d: 0x0112,
+	0x25e: 0x0113, 0x25f: 0x0112, 0x260: 0x0113, 0x261: 0x0112, 0x262: 0x0113, 0x263: 0x0112,
+	0x264: 0x0113, 0x265: 0x0112, 0x266: 0x0113, 0x267: 0x0112, 0x268: 0x0113, 0x269: 0x0112,
+	0x26a: 0x0113, 0x26b: 0x0112, 0x26c: 0x0113, 0x26d: 0x0112, 0x26e: 0x0113, 0x26f: 0x0112,
+	0x270: 0x188a, 0x271: 0x190a, 0x272: 0x0b12, 0x273: 0x5352, 0x274: 0x6253, 0x275: 0x198a,
+	0x277: 0x0f13, 0x278: 0x0f12, 0x279: 0x0b13, 0x27a: 0x0113, 0x27b: 0x0112,
+	0x27c: 0x0012, 0x27d: 0x4d53, 0x27e: 0x5053, 0x27f: 0x5053,
+	// Block 0xa, offset 0x280
+	0x280: 0x6852, 0x281: 0x6852, 0x282: 0x6852, 0x283: 0x6852, 0x284: 0x6852, 0x285: 0x6852,
+	0x286: 0x6852, 0x287: 0x1a0a, 0x288: 0x0012, 0x28a: 0x0010,
+	0x291: 0x0034,
+	0x292: 0x0024, 0x293: 0x0024, 0x294: 0x0024, 0x295: 0x0024, 0x296: 0x0034, 0x297: 0x0024,
+	0x298: 0x0024, 0x299: 0x0024, 0x29a: 0x0034, 0x29b: 0x0034, 0x29c: 0x0024, 0x29d: 0x0024,
+	0x29e: 0x0024, 0x29f: 0x0024, 0x2a0: 0x0024, 0x2a1: 0x0024, 0x2a2: 0x0034, 0x2a3: 0x0034,
+	0x2a4: 0x0034, 0x2a5: 0x0034, 0x2a6: 0x0034, 0x2a7: 0x0034, 0x2a8: 0x0024, 0x2a9: 0x0024,
+	0x2aa: 0x0034, 0x2ab: 0x0024, 0x2ac: 0x0024, 0x2ad: 0x0034, 0x2ae: 0x0034, 0x2af: 0x0024,
+	0x2b0: 0x0034, 0x2b1: 0x0034, 0x2b2: 0x0034, 0x2b3: 0x0034, 0x2b4: 0x0034, 0x2b5: 0x0034,
+	0x2b6: 0x0034, 0x2b7: 0x0034, 0x2b8: 0x0034, 0x2b9: 0x0034, 0x2ba: 0x0034, 0x2bb: 0x0034,
+	0x2bc: 0x0034, 0x2bd: 0x0034, 0x2bf: 0x0034,
+	// Block 0xb, offset 0x2c0
+	0x2c0: 0x7053, 0x2c1: 0x7053, 0x2c2: 0x7053, 0x2c3: 0x7053, 0x2c4: 0x7053, 0x2c5: 0x7053,
+	0x2c7: 0x7053,
+	0x2cd: 0x7053, 0x2d0: 0x1aea, 0x2d1: 0x1b6a,
+	0x2d2: 0x1bea, 0x2d3: 0x1c6a, 0x2d4: 0x1cea, 0x2d5: 0x1d6a, 0x2d6: 0x1dea, 0x2d7: 0x1e6a,
+	0x2d8: 0x1eea, 0x2d9: 0x1f6a, 0x2da: 0x1fea, 0x2db: 0x206a, 0x2dc: 0x20ea, 0x2dd: 0x216a,
+	0x2de: 0x21ea, 0x2df: 0x226a, 0x2e0: 0x22ea, 0x2e1: 0x236a, 0x2e2: 0x23ea, 0x2e3: 0x246a,
+	0x2e4: 0x24ea, 0x2e5: 0x256a, 0x2e6: 0x25ea, 0x2e7: 0x266a, 0x2e8: 0x26ea, 0x2e9: 0x276a,
+	0x2ea: 0x27ea, 0x2eb: 0x286a, 0x2ec: 0x28ea, 0x2ed: 0x296a, 0x2ee: 0x29ea, 0x2ef: 0x2a6a,
+	0x2f0: 0x2aea, 0x2f1: 0x2b6a, 0x2f2: 0x2bea, 0x2f3: 0x2c6a, 0x2f4: 0x2cea, 0x2f5: 0x2d6a,
+	0x2f6: 0x2dea, 0x2f7: 0x2e6a, 0x2f8: 0x2eea, 0x2f9: 0x2f6a, 0x2fa: 0x2fea,
+	0x2fc: 0x0014, 0x2fd: 0x306a, 0x2fe: 0x30ea, 0x2ff: 0x316a,
+	// Block 0xc, offset 0x300
+	0x300: 0x0812, 0x301: 0x0812, 0x302: 0x0812, 0x303: 0x0812, 0x304: 0x0812, 0x305: 0x0812,
+	0x308: 0x0813, 0x309: 0x0813, 0x30a: 0x0813, 0x30b: 0x0813,
+	0x30c: 0x0813, 0x30d: 0x0813, 0x310: 0x3b1a, 0x311: 0x0812,
+	0x312: 0x3bfa, 0x313: 0x0812, 0x314: 0x3d3a, 0x315: 0x0812, 0x316: 0x3e7a, 0x317: 0x0812,
+	0x319: 0x0813, 0x31b: 0x0813, 0x31d: 0x0813,
+	0x31f: 0x0813, 0x320: 0x0812, 0x321: 0x0812, 0x322: 0x0812, 0x323: 0x0812,
+	0x324: 0x0812, 0x325: 0x0812, 0x326: 0x0812, 0x327: 0x0812, 0x328: 0x0813, 0x329: 0x0813,
+	0x32a: 0x0813, 0x32b: 0x0813, 0x32c: 0x0813, 0x32d: 0x0813, 0x32e: 0x0813, 0x32f: 0x0813,
+	0x330: 0x9252, 0x331: 0x9252, 0x332: 0x9552, 0x333: 0x9552, 0x334: 0x9852, 0x335: 0x9852,
+	0x336: 0x9b52, 0x337: 0x9b52, 0x338: 0x9e52, 0x339: 0x9e52, 0x33a: 0xa152, 0x33b: 0xa152,
+	0x33c: 0x4d52, 0x33d: 0x4d52,
+	// Block 0xd, offset 0x340
+	0x340: 0x3fba, 0x341: 0x40aa, 0x342: 0x419a, 0x343: 0x428a, 0x344: 0x437a, 0x345: 0x446a,
+	0x346: 0x455a, 0x347: 0x464a, 0x348: 0x4739, 0x349: 0x4829, 0x34a: 0x4919, 0x34b: 0x4a09,
+	0x34c: 0x4af9, 0x34d: 0x4be9, 0x34e: 0x4cd9, 0x34f: 0x4dc9, 0x350: 0x4eba, 0x351: 0x4faa,
+	0x352: 0x509a, 0x353: 0x518a, 0x354: 0x527a, 0x355: 0x536a, 0x356: 0x545a, 0x357: 0x554a,
+	0x358: 0x5639, 0x359: 0x5729, 0x35a: 0x5819, 0x35b: 0x5909, 0x35c: 0x59f9, 0x35d: 0x5ae9,
+	0x35e: 0x5bd9, 0x35f: 0x5cc9, 0x360: 0x5dba, 0x361: 0x5eaa, 0x362: 0x5f9a, 0x363: 0x608a,
+	0x364: 0x617a, 0x365: 0x626a, 0x366: 0x635a, 0x367: 0x644a, 0x368: 0x6539, 0x369: 0x6629,
+	0x36a: 0x6719, 0x36b: 0x6809, 0x36c: 0x68f9, 0x36d: 0x69e9, 0x36e: 0x6ad9, 0x36f: 0x6bc9,
+	0x370: 0x0812, 0x371: 0x0812, 0x372: 0x6cba, 0x373: 0x6dca, 0x374: 0x6e9a,
+	0x376: 0x6f7a, 0x377: 0x705a, 0x378: 0x0813, 0x379: 0x0813, 0x37a: 0x9253, 0x37b: 0x9253,
+	0x37c: 0x7199, 0x37d: 0x0004, 0x37e: 0x726a, 0x37f: 0x0004,
+	// Block 0xe, offset 0x380
+	0x380: 0x0004, 0x381: 0x0004, 0x382: 0x72ea, 0x383: 0x73fa, 0x384: 0x74ca,
+	0x386: 0x75aa, 0x387: 0x768a, 0x388: 0x9553, 0x389: 0x9553, 0x38a: 0x9853, 0x38b: 0x9853,
+	0x38c: 0x77c9, 0x38d: 0x0004, 0x38e: 0x0004, 0x38f: 0x0004, 0x390: 0x0812, 0x391: 0x0812,
+	0x392: 0x789a, 0x393: 0x79da, 0x396: 0x7b1a, 0x397: 0x7bfa,
+	0x398: 0x0813, 0x399: 0x0813, 0x39a: 0x9b53, 0x39b: 0x9b53, 0x39d: 0x0004,
+	0x39e: 0x0004, 0x39f: 0x0004, 0x3a0: 0x0812, 0x3a1: 0x0812, 0x3a2: 0x7d3a, 0x3a3: 0x7e7a,
+	0x3a4: 0x7fba, 0x3a5: 0x0912, 0x3a6: 0x809a, 0x3a7: 0x817a, 0x3a8: 0x0813, 0x3a9: 0x0813,
+	0x3aa: 0xa153, 0x3ab: 0xa153, 0x3ac: 0x0913, 0x3ad: 0x0004, 0x3ae: 0x0004, 0x3af: 0x0004,
+	0x3b2: 0x82ba, 0x3b3: 0x83ca, 0x3b4: 0x849a,
+	0x3b6: 0x857a, 0x3b7: 0x865a, 0x3b8: 0x9e53, 0x3b9: 0x9e53, 0x3ba: 0x4d53, 0x3bb: 0x4d53,
+	0x3bc: 0x8799, 0x3bd: 0x0004, 0x3be: 0x0004,
+	// Block 0xf, offset 0x3c0
+	0x3c2: 0x0013,
+	0x3c7: 0x0013, 0x3ca: 0x0012, 0x3cb: 0x0013,
+	0x3cc: 0x0013, 0x3cd: 0x0013, 0x3ce: 0x0012, 0x3cf: 0x0012, 0x3d0: 0x0013, 0x3d1: 0x0013,
+	0x3d2: 0x0013, 0x3d3: 0x0012, 0x3d5: 0x0013,
+	0x3d9: 0x0013, 0x3da: 0x0013, 0x3db: 0x0013, 0x3dc: 0x0013, 0x3dd: 0x0013,
+	0x3e4: 0x0013, 0x3e6: 0x886b, 0x3e8: 0x0013,
+	0x3ea: 0x88cb, 0x3eb: 0x890b, 0x3ec: 0x0013, 0x3ed: 0x0013, 0x3ef: 0x0012,
+	0x3f0: 0x0013, 0x3f1: 0x0013, 0x3f2: 0xa453, 0x3f3: 0x0013, 0x3f4: 0x0012, 0x3f5: 0x0010,
+	0x3f6: 0x0010, 0x3f7: 0x0010, 0x3f8: 0x0010, 0x3f9: 0x0012,
+	0x3fc: 0x0012, 0x3fd: 0x0012, 0x3fe: 0x0013, 0x3ff: 0x0013,
+	// Block 0x10, offset 0x400
+	0x400: 0x1a13, 0x401: 0x1a13, 0x402: 0x1e13, 0x403: 0x1e13, 0x404: 0x1a13, 0x405: 0x1a13,
+	0x406: 0x2613, 0x407: 0x2613, 0x408: 0x2a13, 0x409: 0x2a13, 0x40a: 0x2e13, 0x40b: 0x2e13,
+	0x40c: 0x2a13, 0x40d: 0x2a13, 0x40e: 0x2613, 0x40f: 0x2613, 0x410: 0xa752, 0x411: 0xa752,
+	0x412: 0xaa52, 0x413: 0xaa52, 0x414: 0xad52, 0x415: 0xad52, 0x416: 0xaa52, 0x417: 0xaa52,
+	0x418: 0xa752, 0x419: 0xa752, 0x41a: 0x1a12, 0x41b: 0x1a12, 0x41c: 0x1e12, 0x41d: 0x1e12,
+	0x41e: 0x1a12, 0x41f: 0x1a12, 0x420: 0x2612, 0x421: 0x2612, 0x422: 0x2a12, 0x423: 0x2a12,
+	0x424: 0x2e12, 0x425: 0x2e12, 0x426: 0x2a12, 0x427: 0x2a12, 0x428: 0x2612, 0x429: 0x2612,
+	// Block 0x11, offset 0x440
+	0x440: 0x6552, 0x441: 0x6552, 0x442: 0x6552, 0x443: 0x6552, 0x444: 0x6552, 0x445: 0x6552,
+	0x446: 0x6552, 0x447: 0x6552, 0x448: 0x6552, 0x449: 0x6552, 0x44a: 0x6552, 0x44b: 0x6552,
+	0x44c: 0x6552, 0x44d: 0x6552, 0x44e: 0x6552, 0x44f: 0x6552, 0x450: 0xb052, 0x451: 0xb052,
+	0x452: 0xb052, 0x453: 0xb052, 0x454: 0xb052, 0x455: 0xb052, 0x456: 0xb052, 0x457: 0xb052,
+	0x458: 0xb052, 0x459: 0xb052, 0x45a: 0xb052, 0x45b: 0xb052, 0x45c: 0xb052, 0x45d: 0xb052,
+	0x45e: 0xb052, 0x460: 0x0113, 0x461: 0x0112, 0x462: 0x896b, 0x463: 0x8b53,
+	0x464: 0x89cb, 0x465: 0x8a2a, 0x466: 0x8a8a, 0x467: 0x0f13, 0x468: 0x0f12, 0x469: 0x0313,
+	0x46a: 0x0312, 0x46b: 0x0713, 0x46c: 0x0712, 0x46d: 0x8aeb, 0x46e: 0x8b4b, 0x46f: 0x8bab,
+	0x470: 0x8c0b, 0x471: 0x0012, 0x472: 0x0113, 0x473: 0x0112, 0x474: 0x0012, 0x475: 0x0313,
+	0x476: 0x0312, 0x477: 0x0012, 0x478: 0x0012, 0x479: 0x0012, 0x47a: 0x0012, 0x47b: 0x0012,
+	0x47c: 0x0015, 0x47d: 0x0015, 0x47e: 0x8c6b, 0x47f: 0x8ccb,
+	// Block 0x12, offset 0x480
+	0x480: 0x0113, 0x481: 0x0112, 0x482: 0x0113, 0x483: 0x0112, 0x484: 0x0113, 0x485: 0x0112,
+	0x486: 0x0113, 0x487: 0x0112, 0x488: 0x0014, 0x489: 0x0014, 0x48a: 0x0014, 0x48b: 0x0713,
+	0x48c: 0x0712, 0x48d: 0x8d2b, 0x48e: 0x0012, 0x48f: 0x0010, 0x490: 0x0113, 0x491: 0x0112,
+	0x492: 0x0113, 0x493: 0x0112, 0x494: 0x6552, 0x495: 0x0012, 0x496: 0x0113, 0x497: 0x0112,
+	0x498: 0x0113, 0x499: 0x0112, 0x49a: 0x0113, 0x49b: 0x0112, 0x49c: 0x0113, 0x49d: 0x0112,
+	0x49e: 0x0113, 0x49f: 0x0112, 0x4a0: 0x0113, 0x4a1: 0x0112, 0x4a2: 0x0113, 0x4a3: 0x0112,
+	0x4a4: 0x0113, 0x4a5: 0x0112, 0x4a6: 0x0113, 0x4a7: 0x0112, 0x4a8: 0x0113, 0x4a9: 0x0112,
+	0x4aa: 0x8d8b, 0x4ab: 0x8deb, 0x4ac: 0x8e4b, 0x4ad: 0x8eab, 0x4ae: 0x8f0b, 0x4af: 0x0012,
+	0x4b0: 0x8f6b, 0x4b1: 0x8fcb, 0x4b2: 0x902b, 0x4b3: 0xb353, 0x4b4: 0x0113, 0x4b5: 0x0112,
+	0x4b6: 0x0113, 0x4b7: 0x0112, 0x4b8: 0x0113, 0x4b9: 0x0112, 0x4ba: 0x0113, 0x4bb: 0x0112,
+	0x4bc: 0x0113, 0x4bd: 0x0112, 0x4be: 0x0113, 0x4bf: 0x0112,
+	// Block 0x13, offset 0x4c0
+	0x4c0: 0x90ea, 0x4c1: 0x916a, 0x4c2: 0x91ea, 0x4c3: 0x926a, 0x4c4: 0x931a, 0x4c5: 0x93ca,
+	0x4c6: 0x944a,
+	0x4d3: 0x94ca, 0x4d4: 0x95aa, 0x4d5: 0x968a, 0x4d6: 0x976a, 0x4d7: 0x984a,
+	0x4dd: 0x0010,
+	0x4de: 0x0034, 0x4df: 0x0010, 0x4e0: 0x0010, 0x4e1: 0x0010, 0x4e2: 0x0010, 0x4e3: 0x0010,
+	0x4e4: 0x0010, 0x4e5: 0x0010, 0x4e6: 0x0010, 0x4e7: 0x0010, 0x4e8: 0x0010,
+	0x4ea: 0x0010, 0x4eb: 0x0010, 0x4ec: 0x0010, 0x4ed: 0x0010, 0x4ee: 0x0010, 0x4ef: 0x0010,
+	0x4f0: 0x0010, 0x4f1: 0x0010, 0x4f2: 0x0010, 0x4f3: 0x0010, 0x4f4: 0x0010, 0x4f5: 0x0010,
+	0x4f6: 0x0010, 0x4f8: 0x0010, 0x4f9: 0x0010, 0x4fa: 0x0010, 0x4fb: 0x0010,
+	0x4fc: 0x0010, 0x4fe: 0x0010,
+	// Block 0x14, offset 0x500
+	0x500: 0x2213, 0x501: 0x2213, 0x502: 0x2613, 0x503: 0x2613, 0x504: 0x2213, 0x505: 0x2213,
+	0x506: 0x2e13, 0x507: 0x2e13, 0x508: 0x2213, 0x509: 0x2213, 0x50a: 0x2613, 0x50b: 0x2613,
+	0x50c: 0x2213, 0x50d: 0x2213, 0x50e: 0x3e13, 0x50f: 0x3e13, 0x510: 0x2213, 0x511: 0x2213,
+	0x512: 0x2613, 0x513: 0x2613, 0x514: 0x2213, 0x515: 0x2213, 0x516: 0x2e13, 0x517: 0x2e13,
+	0x518: 0x2213, 0x519: 0x2213, 0x51a: 0x2613, 0x51b: 0x2613, 0x51c: 0x2213, 0x51d: 0x2213,
+	0x51e: 0xbc53, 0x51f: 0xbc53, 0x520: 0xbf53, 0x521: 0xbf53, 0x522: 0x2212, 0x523: 0x2212,
+	0x524: 0x2612, 0x525: 0x2612, 0x526: 0x2212, 0x527: 0x2212, 0x528: 0x2e12, 0x529: 0x2e12,
+	0x52a: 0x2212, 0x52b: 0x2212, 0x52c: 0x2612, 0x52d: 0x2612, 0x52e: 0x2212, 0x52f: 0x2212,
+	0x530: 0x3e12, 0x531: 0x3e12, 0x532: 0x2212, 0x533: 0x2212, 0x534: 0x2612, 0x535: 0x2612,
+	0x536: 0x2212, 0x537: 0x2212, 0x538: 0x2e12, 0x539: 0x2e12, 0x53a: 0x2212, 0x53b: 0x2212,
+	0x53c: 0x2612, 0x53d: 0x2612, 0x53e: 0x2212, 0x53f: 0x2212,
+	// Block 0x15, offset 0x540
+	0x542: 0x0010,
+	0x547: 0x0010, 0x549: 0x0010, 0x54b: 0x0010,
+	0x54d: 0x0010, 0x54e: 0x0010, 0x54f: 0x0010, 0x551: 0x0010,
+	0x552: 0x0010, 0x554: 0x0010, 0x557: 0x0010,
+	0x559: 0x0010, 0x55b: 0x0010, 0x55d: 0x0010,
+	0x55f: 0x0010, 0x561: 0x0010, 0x562: 0x0010,
+	0x564: 0x0010, 0x567: 0x0010, 0x568: 0x0010, 0x569: 0x0010,
+	0x56a: 0x0010, 0x56c: 0x0010, 0x56d: 0x0010, 0x56e: 0x0010, 0x56f: 0x0010,
+	0x570: 0x0010, 0x571: 0x0010, 0x572: 0x0010, 0x574: 0x0010, 0x575: 0x0010,
+	0x576: 0x0010, 0x577: 0x0010, 0x579: 0x0010, 0x57a: 0x0010, 0x57b: 0x0010,
+	0x57c: 0x0010, 0x57e: 0x0010,
+}
+
+// caseIndex: 25 blocks, 1600 entries, 3200 bytes
+// Block 0 is the zero block.
+var caseIndex = [1600]uint16{
+	// Block 0x0, offset 0x0
+	// Block 0x1, offset 0x40
+	// Block 0x2, offset 0x80
+	// Block 0x3, offset 0xc0
+	0xc2: 0x14, 0xc3: 0x15, 0xc4: 0x16, 0xc5: 0x17, 0xc6: 0x01, 0xc7: 0x02,
+	0xc8: 0x18, 0xc9: 0x03, 0xca: 0x04, 0xcb: 0x19, 0xcc: 0x1a, 0xcd: 0x05, 0xce: 0x06, 0xcf: 0x07,
+	0xd0: 0x1b, 0xd1: 0x1c, 0xd2: 0x1d, 0xd3: 0x1e, 0xd4: 0x1f, 0xd5: 0x20, 0xd6: 0x08, 0xd7: 0x21,
+	0xd8: 0x22, 0xd9: 0x23, 0xda: 0x24, 0xdb: 0x25, 0xdc: 0x26, 0xdd: 0x27, 0xde: 0x28, 0xdf: 0x29,
+	0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,
+	0xea: 0x06, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x08, 0xef: 0x09,
+	0xf0: 0x14, 0xf3: 0x16,
+	// Block 0x4, offset 0x100
+	0x120: 0x2a, 0x121: 0x2b, 0x122: 0x2c, 0x123: 0x2d, 0x124: 0x2e, 0x125: 0x2f, 0x126: 0x30, 0x127: 0x31,
+	0x128: 0x32, 0x129: 0x33, 0x12a: 0x34, 0x12b: 0x35, 0x12c: 0x36, 0x12d: 0x37, 0x12e: 0x38, 0x12f: 0x39,
+	0x130: 0x3a, 0x131: 0x3b, 0x132: 0x3c, 0x133: 0x3d, 0x134: 0x3e, 0x135: 0x3f, 0x136: 0x40, 0x137: 0x41,
+	0x138: 0x42, 0x139: 0x43, 0x13a: 0x44, 0x13b: 0x45, 0x13c: 0x46, 0x13d: 0x47, 0x13e: 0x48, 0x13f: 0x49,
+	// Block 0x5, offset 0x140
+	0x140: 0x4a, 0x141: 0x4b, 0x142: 0x4c, 0x143: 0x09, 0x144: 0x24, 0x145: 0x24, 0x146: 0x24, 0x147: 0x24,
+	0x148: 0x24, 0x149: 0x4d, 0x14a: 0x4e, 0x14b: 0x4f, 0x14c: 0x50, 0x14d: 0x51, 0x14e: 0x52, 0x14f: 0x53,
+	0x150: 0x54, 0x151: 0x24, 0x152: 0x24, 0x153: 0x24, 0x154: 0x24, 0x155: 0x24, 0x156: 0x24, 0x157: 0x24,
+	0x158: 0x24, 0x159: 0x55, 0x15a: 0x56, 0x15b: 0x57, 0x15c: 0x58, 0x15d: 0x59, 0x15e: 0x5a, 0x15f: 0x5b,
+	0x160: 0x5c, 0x161: 0x5d, 0x162: 0x5e, 0x163: 0x5f, 0x164: 0x60, 0x165: 0x61, 0x167: 0x62,
+	0x168: 0x63, 0x169: 0x64, 0x16a: 0x65, 0x16b: 0x66, 0x16c: 0x67, 0x16d: 0x68, 0x16e: 0x69, 0x16f: 0x6a,
+	0x170: 0x6b, 0x171: 0x6c, 0x172: 0x6d, 0x173: 0x6e, 0x174: 0x6f, 0x175: 0x70, 0x176: 0x71, 0x177: 0x72,
+	0x178: 0x73, 0x179: 0x73, 0x17a: 0x74, 0x17b: 0x73, 0x17c: 0x75, 0x17d: 0x0a, 0x17e: 0x0b, 0x17f: 0x0c,
+	// Block 0x6, offset 0x180
+	0x180: 0x76, 0x181: 0x77, 0x182: 0x78, 0x183: 0x79, 0x184: 0x0d, 0x185: 0x7a, 0x186: 0x7b,
+	0x192: 0x7c, 0x193: 0x0e,
+	0x1b0: 0x7d, 0x1b1: 0x0f, 0x1b2: 0x73, 0x1b3: 0x7e, 0x1b4: 0x7f, 0x1b5: 0x80, 0x1b6: 0x81, 0x1b7: 0x82,
+	0x1b8: 0x83,
+	// Block 0x7, offset 0x1c0
+	0x1c0: 0x84, 0x1c2: 0x85, 0x1c3: 0x86, 0x1c4: 0x87, 0x1c5: 0x24, 0x1c6: 0x88,
+	// Block 0x8, offset 0x200
+	0x200: 0x89, 0x201: 0x24, 0x202: 0x24, 0x203: 0x24, 0x204: 0x24, 0x205: 0x24, 0x206: 0x24, 0x207: 0x24,
+	0x208: 0x24, 0x209: 0x24, 0x20a: 0x24, 0x20b: 0x24, 0x20c: 0x24, 0x20d: 0x24, 0x20e: 0x24, 0x20f: 0x24,
+	0x210: 0x24, 0x211: 0x24, 0x212: 0x8a, 0x213: 0x8b, 0x214: 0x24, 0x215: 0x24, 0x216: 0x24, 0x217: 0x24,
+	0x218: 0x8c, 0x219: 0x8d, 0x21a: 0x8e, 0x21b: 0x8f, 0x21c: 0x90, 0x21d: 0x91, 0x21e: 0x10, 0x21f: 0x92,
+	0x220: 0x93, 0x221: 0x94, 0x222: 0x24, 0x223: 0x95, 0x224: 0x96, 0x225: 0x97, 0x226: 0x98, 0x227: 0x99,
+	0x228: 0x9a, 0x229: 0x9b, 0x22a: 0x9c, 0x22b: 0x9d, 0x22c: 0x9e, 0x22d: 0x9f, 0x22e: 0xa0, 0x22f: 0xa1,
+	0x230: 0x24, 0x231: 0x24, 0x232: 0x24, 0x233: 0x24, 0x234: 0x24, 0x235: 0x24, 0x236: 0x24, 0x237: 0x24,
+	0x238: 0x24, 0x239: 0x24, 0x23a: 0x24, 0x23b: 0x24, 0x23c: 0x24, 0x23d: 0x24, 0x23e: 0x24, 0x23f: 0x24,
+	// Block 0x9, offset 0x240
+	0x240: 0x24, 0x241: 0x24, 0x242: 0x24, 0x243: 0x24, 0x244: 0x24, 0x245: 0x24, 0x246: 0x24, 0x247: 0x24,
+	0x248: 0x24, 0x249: 0x24, 0x24a: 0x24, 0x24b: 0x24, 0x24c: 0x24, 0x24d: 0x24, 0x24e: 0x24, 0x24f: 0x24,
+	0x250: 0x24, 0x251: 0x24, 0x252: 0x24, 0x253: 0x24, 0x254: 0x24, 0x255: 0x24, 0x256: 0x24, 0x257: 0x24,
+	0x258: 0x24, 0x259: 0x24, 0x25a: 0x24, 0x25b: 0x24, 0x25c: 0x24, 0x25d: 0x24, 0x25e: 0x24, 0x25f: 0x24,
+	0x260: 0x24, 0x261: 0x24, 0x262: 0x24, 0x263: 0x24, 0x264: 0x24, 0x265: 0x24, 0x266: 0x24, 0x267: 0x24,
+	0x268: 0x24, 0x269: 0x24, 0x26a: 0x24, 0x26b: 0x24, 0x26c: 0x24, 0x26d: 0x24, 0x26e: 0x24, 0x26f: 0x24,
+	0x270: 0x24, 0x271: 0x24, 0x272: 0x24, 0x273: 0x24, 0x274: 0x24, 0x275: 0x24, 0x276: 0x24, 0x277: 0x24,
+	0x278: 0x24, 0x279: 0x24, 0x27a: 0x24, 0x27b: 0x24, 0x27c: 0x24, 0x27d: 0x24, 0x27e: 0x24, 0x27f: 0x24,
+	// Block 0xa, offset 0x280
+	0x280: 0x24, 0x281: 0x24, 0x282: 0x24, 0x283: 0x24, 0x284: 0x24, 0x285: 0x24, 0x286: 0x24, 0x287: 0x24,
+	0x288: 0x24, 0x289: 0x24, 0x28a: 0x24, 0x28b: 0x24, 0x28c: 0x24, 0x28d: 0x24, 0x28e: 0x24, 0x28f: 0x24,
+	0x290: 0x24, 0x291: 0x24, 0x292: 0x24, 0x293: 0x24, 0x294: 0x24, 0x295: 0x24, 0x296: 0x24, 0x297: 0x24,
+	0x298: 0x24, 0x299: 0x24, 0x29a: 0x24, 0x29b: 0x24, 0x29c: 0x24, 0x29d: 0x24, 0x29e: 0xa2, 0x29f: 0xa3,
+	// Block 0xb, offset 0x2c0
+	0x2ec: 0x11, 0x2ed: 0xa4, 0x2ee: 0xa5, 0x2ef: 0xa6,
+	0x2f0: 0x24, 0x2f1: 0x24, 0x2f2: 0x24, 0x2f3: 0x24, 0x2f4: 0xa7, 0x2f5: 0xa8, 0x2f6: 0xa9, 0x2f7: 0xaa,
+	0x2f8: 0xab, 0x2f9: 0xac, 0x2fa: 0x24, 0x2fb: 0xad, 0x2fc: 0xae, 0x2fd: 0xaf, 0x2fe: 0xb0, 0x2ff: 0xb1,
+	// Block 0xc, offset 0x300
+	0x300: 0xb2, 0x301: 0xb3, 0x302: 0x24, 0x303: 0xb4, 0x305: 0xb5, 0x307: 0xb6,
+	0x30a: 0xb7, 0x30b: 0xb8, 0x30c: 0xb9, 0x30d: 0xba, 0x30e: 0xbb, 0x30f: 0xbc,
+	0x310: 0xbd, 0x311: 0xbe, 0x312: 0xbf, 0x313: 0xc0, 0x314: 0xc1, 0x315: 0xc2,
+	0x318: 0x24, 0x319: 0x24, 0x31a: 0x24, 0x31b: 0x24, 0x31c: 0xc3, 0x31d: 0xc4,
+	0x320: 0xc5, 0x321: 0xc6, 0x322: 0xc7, 0x323: 0xc8, 0x324: 0xc9, 0x326: 0xca,
+	0x328: 0xcb, 0x329: 0xcc, 0x32a: 0xcd, 0x32b: 0xce, 0x32c: 0x5f, 0x32d: 0xcf, 0x32e: 0xd0,
+	0x330: 0x24, 0x331: 0xd1, 0x332: 0xd2, 0x333: 0xd3, 0x334: 0xd4,
+	0x33a: 0xd5, 0x33c: 0xd6, 0x33d: 0xd7, 0x33e: 0xd8, 0x33f: 0xd9,
+	// Block 0xd, offset 0x340
+	0x340: 0xda, 0x341: 0xdb, 0x342: 0xdc, 0x343: 0xdd, 0x344: 0xde, 0x345: 0xdf, 0x346: 0xe0, 0x347: 0xe1,
+	0x348: 0xe2, 0x34a: 0xe3, 0x34b: 0xe4, 0x34c: 0xe5, 0x34d: 0xe6,
+	0x350: 0xe7, 0x351: 0xe8, 0x352: 0xe9, 0x353: 0xea, 0x356: 0xeb, 0x357: 0xec,
+	0x358: 0xed, 0x359: 0xee, 0x35a: 0xef, 0x35b: 0xf0, 0x35c: 0xf1,
+	0x360: 0xf2, 0x362: 0xf3, 0x363: 0xf4, 0x364: 0xf5, 0x365: 0xf6, 0x366: 0xf7, 0x367: 0xf8,
+	0x368: 0xf9, 0x369: 0xfa, 0x36a: 0xfb, 0x36b: 0xfc,
+	0x370: 0xfd, 0x371: 0xfe, 0x372: 0xff, 0x374: 0x100, 0x375: 0x101, 0x376: 0x102,
+	0x37b: 0x103, 0x37e: 0x104,
+	// Block 0xe, offset 0x380
+	0x380: 0x24, 0x381: 0x24, 0x382: 0x24, 0x383: 0x24, 0x384: 0x24, 0x385: 0x24, 0x386: 0x24, 0x387: 0x24,
+	0x388: 0x24, 0x389: 0x24, 0x38a: 0x24, 0x38b: 0x24, 0x38c: 0x24, 0x38d: 0x24, 0x38e: 0x105,
+	0x390: 0x24, 0x391: 0x106, 0x392: 0x24, 0x393: 0x24, 0x394: 0x24, 0x395: 0x107,
+	// Block 0xf, offset 0x3c0
+	0x3c0: 0x24, 0x3c1: 0x24, 0x3c2: 0x24, 0x3c3: 0x24, 0x3c4: 0x24, 0x3c5: 0x24, 0x3c6: 0x24, 0x3c7: 0x24,
+	0x3c8: 0x24, 0x3c9: 0x24, 0x3ca: 0x24, 0x3cb: 0x24, 0x3cc: 0x24, 0x3cd: 0x24, 0x3ce: 0x24, 0x3cf: 0x24,
+	0x3d0: 0x108,
+	// Block 0x10, offset 0x400
+	0x410: 0x24, 0x411: 0x24, 0x412: 0x24, 0x413: 0x24, 0x414: 0x24, 0x415: 0x24, 0x416: 0x24, 0x417: 0x24,
+	0x418: 0x24, 0x419: 0x109,
+	// Block 0x11, offset 0x440
+	0x460: 0x24, 0x461: 0x24, 0x462: 0x24, 0x463: 0x24, 0x464: 0x24, 0x465: 0x24, 0x466: 0x24, 0x467: 0x24,
+	0x468: 0xfc, 0x469: 0x10a, 0x46b: 0x10b, 0x46c: 0x10c, 0x46d: 0x10d, 0x46e: 0x10e,
+	0x479: 0x10f, 0x47c: 0x24, 0x47d: 0x110, 0x47e: 0x111, 0x47f: 0x112,
+	// Block 0x12, offset 0x480
+	0x4b0: 0x24, 0x4b1: 0x113, 0x4b2: 0x114,
+	// Block 0x13, offset 0x4c0
+	0x4c5: 0x115, 0x4c6: 0x116,
+	0x4c9: 0x117,
+	0x4d0: 0x118, 0x4d1: 0x119, 0x4d2: 0x11a, 0x4d3: 0x11b, 0x4d4: 0x11c, 0x4d5: 0x11d, 0x4d6: 0x11e, 0x4d7: 0x11f,
+	0x4d8: 0x120, 0x4d9: 0x121, 0x4da: 0x122, 0x4db: 0x123, 0x4dc: 0x124, 0x4dd: 0x125, 0x4de: 0x126, 0x4df: 0x127,
+	0x4e8: 0x128, 0x4e9: 0x129, 0x4ea: 0x12a,
+	// Block 0x14, offset 0x500
+	0x500: 0x12b, 0x504: 0x12c, 0x505: 0x12d,
+	0x50b: 0x12e,
+	0x520: 0x24, 0x521: 0x24, 0x522: 0x24, 0x523: 0x12f, 0x524: 0x12, 0x525: 0x130,
+	0x538: 0x131, 0x539: 0x13, 0x53a: 0x132,
+	// Block 0x15, offset 0x540
+	0x544: 0x133, 0x545: 0x134, 0x546: 0x135,
+	0x54f: 0x136,
+	0x56f: 0x137,
+	// Block 0x16, offset 0x580
+	0x590: 0x0a, 0x591: 0x0b, 0x592: 0x0c, 0x593: 0x0d, 0x594: 0x0e, 0x596: 0x0f,
+	0x59b: 0x10, 0x59d: 0x11, 0x59e: 0x12, 0x59f: 0x13,
+	// Block 0x17, offset 0x5c0
+	0x5c0: 0x138, 0x5c1: 0x139, 0x5c4: 0x139, 0x5c5: 0x139, 0x5c6: 0x139, 0x5c7: 0x13a,
+	// Block 0x18, offset 0x600
+	0x620: 0x15,
+}
+
+// sparseOffsets: 296 entries, 592 bytes
+var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x34, 0x37, 0x3b, 0x3e, 0x42, 0x4c, 0x4e, 0x57, 0x5e, 0x63, 0x71, 0x72, 0x80, 0x8f, 0x99, 0x9c, 0xa3, 0xab, 0xae, 0xb0, 0xc0, 0xc6, 0xd4, 0xdf, 0xec, 0xf7, 0x103, 0x10d, 0x119, 0x124, 0x130, 0x13c, 0x144, 0x14d, 0x157, 0x162, 0x16e, 0x174, 0x17f, 0x185, 0x18d, 0x190, 0x195, 0x199, 0x19d, 0x1a4, 0x1ad, 0x1b5, 0x1b6, 0x1bf, 0x1c6, 0x1ce, 0x1d4, 0x1d9, 0x1dd, 0x1e0, 0x1e2, 0x1e5, 0x1ea, 0x1eb, 0x1ed, 0x1ef, 0x1f1, 0x1f8, 0x1fd, 0x201, 0x20a, 0x20d, 0x210, 0x216, 0x217, 0x222, 0x223, 0x224, 0x229, 0x236, 0x23f, 0x240, 0x248, 0x251, 0x25a, 0x263, 0x268, 0x26b, 0x276, 0x284, 0x286, 0x28d, 0x291, 0x29d, 0x29e, 0x2a9, 0x2b1, 0x2b9, 0x2bf, 0x2c0, 0x2ce, 0x2d3, 0x2d6, 0x2db, 0x2df, 0x2e5, 0x2ea, 0x2ed, 0x2f2, 0x2f7, 0x2f8, 0x2fe, 0x300, 0x301, 0x303, 0x305, 0x308, 0x309, 0x30b, 0x30e, 0x314, 0x318, 0x31a, 0x31f, 0x326, 0x331, 0x33b, 0x33c, 0x345, 0x349, 0x34e, 0x356, 0x35c, 0x362, 0x36c, 0x371, 0x37a, 0x380, 0x389, 0x38d, 0x395, 0x397, 0x399, 0x39c, 0x39e, 0x3a0, 0x3a1, 0x3a2, 0x3a4, 0x3a6, 0x3ac, 0x3b1, 0x3b3, 0x3ba, 0x3bd, 0x3bf, 0x3c5, 0x3ca, 0x3cc, 0x3cd, 0x3ce, 0x3cf, 0x3d1, 0x3d3, 0x3d5, 0x3d8, 0x3da, 0x3dd, 0x3e5, 0x3e8, 0x3ec, 0x3f4, 0x3f6, 0x3f7, 0x3f8, 0x3fa, 0x400, 0x402, 0x403, 0x405, 0x407, 0x409, 0x416, 0x417, 0x418, 0x41c, 0x41e, 0x41f, 0x420, 0x421, 0x422, 0x425, 0x428, 0x42b, 0x431, 0x432, 0x434, 0x438, 0x43c, 0x442, 0x445, 0x44c, 0x450, 0x454, 0x45d, 0x466, 0x46c, 0x472, 0x47c, 0x486, 0x488, 0x491, 0x497, 0x49d, 0x4a3, 0x4a6, 0x4ac, 0x4af, 0x4b8, 0x4b9, 0x4c0, 0x4c4, 0x4c5, 0x4c8, 0x4d2, 0x4d5, 0x4d7, 0x4de, 0x4e6, 0x4ec, 0x4f2, 0x4f3, 0x4f9, 0x4fc, 0x504, 0x50b, 0x515, 0x51d, 0x520, 0x521, 0x522, 0x523, 0x524, 0x526, 0x527, 0x529, 0x52b, 0x52d, 0x531, 0x532, 0x534, 0x537, 0x539, 0x53c, 0x53e, 0x543, 0x548, 0x54c, 0x54d, 0x550, 0x554, 0x55f, 0x563, 0x56b, 0x570, 0x574, 0x577, 0x57b, 0x57e, 0x581, 0x586, 0x58a, 0x58e, 0x592, 0x596, 0x598, 0x59a, 0x59d, 0x5a2, 0x5a5, 0x5a7, 0x5aa, 0x5ac, 0x5b2, 0x5bb, 0x5c0, 0x5c1, 0x5c4, 0x5c5, 0x5c6, 0x5c7, 0x5c9, 0x5ca, 0x5cb}
+
+// sparseValues: 1483 entries, 5932 bytes
+var sparseValues = [1483]valueRange{
+	// Block 0x0, offset 0x0
+	{value: 0x0004, lo: 0xa8, hi: 0xa8},
+	{value: 0x0012, lo: 0xaa, hi: 0xaa},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0004, lo: 0xaf, hi: 0xaf},
+	{value: 0x0004, lo: 0xb4, hi: 0xb4},
+	{value: 0x001a, lo: 0xb5, hi: 0xb5},
+	{value: 0x0054, lo: 0xb7, hi: 0xb7},
+	{value: 0x0004, lo: 0xb8, hi: 0xb8},
+	{value: 0x0012, lo: 0xba, hi: 0xba},
+	// Block 0x1, offset 0x9
+	{value: 0x2013, lo: 0x80, hi: 0x96},
+	{value: 0x2013, lo: 0x98, hi: 0x9e},
+	{value: 0x009a, lo: 0x9f, hi: 0x9f},
+	{value: 0x2012, lo: 0xa0, hi: 0xb6},
+	{value: 0x2012, lo: 0xb8, hi: 0xbe},
+	{value: 0x0252, lo: 0xbf, hi: 0xbf},
+	// Block 0x2, offset 0xf
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x011b, lo: 0xb0, hi: 0xb0},
+	{value: 0x019a, lo: 0xb1, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xb7},
+	{value: 0x0012, lo: 0xb8, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x0316, lo: 0xbd, hi: 0xbe},
+	{value: 0x0553, lo: 0xbf, hi: 0xbf},
+	// Block 0x3, offset 0x18
+	{value: 0x0552, lo: 0x80, hi: 0x80},
+	{value: 0x0316, lo: 0x81, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0316, lo: 0x85, hi: 0x86},
+	{value: 0x0f16, lo: 0x87, hi: 0x88},
+	{value: 0x01da, lo: 0x89, hi: 0x89},
+	{value: 0x0117, lo: 0x8a, hi: 0xb7},
+	{value: 0x0253, lo: 0xb8, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x0316, lo: 0xbd, hi: 0xbe},
+	{value: 0x028a, lo: 0xbf, hi: 0xbf},
+	// Block 0x4, offset 0x24
+	{value: 0x0117, lo: 0x80, hi: 0x9f},
+	{value: 0x2f53, lo: 0xa0, hi: 0xa0},
+	{value: 0x0012, lo: 0xa1, hi: 0xa1},
+	{value: 0x0117, lo: 0xa2, hi: 0xb3},
+	{value: 0x0012, lo: 0xb4, hi: 0xb9},
+	{value: 0x090b, lo: 0xba, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x2953, lo: 0xbd, hi: 0xbd},
+	{value: 0x098b, lo: 0xbe, hi: 0xbe},
+	{value: 0x0a0a, lo: 0xbf, hi: 0xbf},
+	// Block 0x5, offset 0x2e
+	{value: 0x0015, lo: 0x80, hi: 0x81},
+	{value: 0x0014, lo: 0x82, hi: 0x97},
+	{value: 0x0004, lo: 0x98, hi: 0x9d},
+	{value: 0x0014, lo: 0x9e, hi: 0x9f},
+	{value: 0x0015, lo: 0xa0, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xbf},
+	// Block 0x6, offset 0x34
+	{value: 0x0024, lo: 0x80, hi: 0x94},
+	{value: 0x0034, lo: 0x95, hi: 0xbc},
+	{value: 0x0024, lo: 0xbd, hi: 0xbf},
+	// Block 0x7, offset 0x37
+	{value: 0x6553, lo: 0x80, hi: 0x8f},
+	{value: 0x2013, lo: 0x90, hi: 0x9f},
+	{value: 0x5f53, lo: 0xa0, hi: 0xaf},
+	{value: 0x2012, lo: 0xb0, hi: 0xbf},
+	// Block 0x8, offset 0x3b
+	{value: 0x5f52, lo: 0x80, hi: 0x8f},
+	{value: 0x6552, lo: 0x90, hi: 0x9f},
+	{value: 0x0117, lo: 0xa0, hi: 0xbf},
+	// Block 0x9, offset 0x3e
+	{value: 0x0117, lo: 0x80, hi: 0x81},
+	{value: 0x0024, lo: 0x83, hi: 0x87},
+	{value: 0x0014, lo: 0x88, hi: 0x89},
+	{value: 0x0117, lo: 0x8a, hi: 0xbf},
+	// Block 0xa, offset 0x42
+	{value: 0x0f13, lo: 0x80, hi: 0x80},
+	{value: 0x0316, lo: 0x81, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0316, lo: 0x85, hi: 0x86},
+	{value: 0x0f16, lo: 0x87, hi: 0x88},
+	{value: 0x0316, lo: 0x89, hi: 0x8a},
+	{value: 0x0716, lo: 0x8b, hi: 0x8c},
+	{value: 0x0316, lo: 0x8d, hi: 0x8e},
+	{value: 0x0f12, lo: 0x8f, hi: 0x8f},
+	{value: 0x0117, lo: 0x90, hi: 0xbf},
+	// Block 0xb, offset 0x4c
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x6553, lo: 0xb1, hi: 0xbf},
+	// Block 0xc, offset 0x4e
+	{value: 0x3013, lo: 0x80, hi: 0x8f},
+	{value: 0x6853, lo: 0x90, hi: 0x96},
+	{value: 0x0014, lo: 0x99, hi: 0x99},
+	{value: 0x0010, lo: 0x9a, hi: 0x9c},
+	{value: 0x0010, lo: 0x9e, hi: 0x9e},
+	{value: 0x0054, lo: 0x9f, hi: 0x9f},
+	{value: 0x0012, lo: 0xa0, hi: 0xa0},
+	{value: 0x6552, lo: 0xa1, hi: 0xaf},
+	{value: 0x3012, lo: 0xb0, hi: 0xbf},
+	// Block 0xd, offset 0x57
+	{value: 0x0034, lo: 0x81, hi: 0x82},
+	{value: 0x0024, lo: 0x84, hi: 0x84},
+	{value: 0x0034, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0xaa},
+	{value: 0x0010, lo: 0xaf, hi: 0xb3},
+	{value: 0x0054, lo: 0xb4, hi: 0xb4},
+	// Block 0xe, offset 0x5e
+	{value: 0x0014, lo: 0x80, hi: 0x85},
+	{value: 0x0024, lo: 0x90, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x9a},
+	{value: 0x0014, lo: 0x9c, hi: 0x9c},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0xf, offset 0x63
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x8a},
+	{value: 0x0034, lo: 0x8b, hi: 0x92},
+	{value: 0x0024, lo: 0x93, hi: 0x94},
+	{value: 0x0034, lo: 0x95, hi: 0x96},
+	{value: 0x0024, lo: 0x97, hi: 0x9b},
+	{value: 0x0034, lo: 0x9c, hi: 0x9c},
+	{value: 0x0024, lo: 0x9d, hi: 0x9e},
+	{value: 0x0034, lo: 0x9f, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0010, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0034, lo: 0xb0, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xbf},
+	// Block 0x10, offset 0x71
+	{value: 0x0010, lo: 0x80, hi: 0xbf},
+	// Block 0x11, offset 0x72
+	{value: 0x0010, lo: 0x80, hi: 0x93},
+	{value: 0x0010, lo: 0x95, hi: 0x95},
+	{value: 0x0024, lo: 0x96, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x0024, lo: 0x9f, hi: 0xa2},
+	{value: 0x0034, lo: 0xa3, hi: 0xa3},
+	{value: 0x0024, lo: 0xa4, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa6},
+	{value: 0x0024, lo: 0xa7, hi: 0xa8},
+	{value: 0x0034, lo: 0xaa, hi: 0xaa},
+	{value: 0x0024, lo: 0xab, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xbc},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x12, offset 0x80
+	{value: 0x0014, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0034, lo: 0x91, hi: 0x91},
+	{value: 0x0010, lo: 0x92, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	{value: 0x0034, lo: 0xb1, hi: 0xb1},
+	{value: 0x0024, lo: 0xb2, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0024, lo: 0xb5, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb9},
+	{value: 0x0024, lo: 0xba, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbc},
+	{value: 0x0024, lo: 0xbd, hi: 0xbd},
+	{value: 0x0034, lo: 0xbe, hi: 0xbe},
+	{value: 0x0024, lo: 0xbf, hi: 0xbf},
+	// Block 0x13, offset 0x8f
+	{value: 0x0024, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0024, lo: 0x83, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0024, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0024, lo: 0x87, hi: 0x87},
+	{value: 0x0034, lo: 0x88, hi: 0x88},
+	{value: 0x0024, lo: 0x89, hi: 0x8a},
+	{value: 0x0010, lo: 0x8d, hi: 0xbf},
+	// Block 0x14, offset 0x99
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0014, lo: 0xa6, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	// Block 0x15, offset 0x9c
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0024, lo: 0xab, hi: 0xb1},
+	{value: 0x0034, lo: 0xb2, hi: 0xb2},
+	{value: 0x0024, lo: 0xb3, hi: 0xb3},
+	{value: 0x0014, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0034, lo: 0xbd, hi: 0xbd},
+	// Block 0x16, offset 0xa3
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0024, lo: 0x96, hi: 0x99},
+	{value: 0x0014, lo: 0x9a, hi: 0x9a},
+	{value: 0x0024, lo: 0x9b, hi: 0xa3},
+	{value: 0x0014, lo: 0xa4, hi: 0xa4},
+	{value: 0x0024, lo: 0xa5, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa8},
+	{value: 0x0024, lo: 0xa9, hi: 0xad},
+	// Block 0x17, offset 0xab
+	{value: 0x0010, lo: 0x80, hi: 0x98},
+	{value: 0x0034, lo: 0x99, hi: 0x9b},
+	{value: 0x0010, lo: 0xa0, hi: 0xaa},
+	// Block 0x18, offset 0xae
+	{value: 0x0010, lo: 0xa0, hi: 0xb4},
+	{value: 0x0010, lo: 0xb6, hi: 0xbf},
+	// Block 0x19, offset 0xb0
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0034, lo: 0x93, hi: 0x93},
+	{value: 0x0024, lo: 0x94, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa2},
+	{value: 0x0034, lo: 0xa3, hi: 0xa3},
+	{value: 0x0024, lo: 0xa4, hi: 0xa5},
+	{value: 0x0034, lo: 0xa6, hi: 0xa6},
+	{value: 0x0024, lo: 0xa7, hi: 0xa8},
+	{value: 0x0034, lo: 0xa9, hi: 0xa9},
+	{value: 0x0024, lo: 0xaa, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xb2},
+	{value: 0x0024, lo: 0xb3, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb6},
+	{value: 0x0024, lo: 0xb7, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0024, lo: 0xbb, hi: 0xbf},
+	// Block 0x1a, offset 0xc0
+	{value: 0x0014, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xb9},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x1b, offset 0xc6
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x88},
+	{value: 0x0010, lo: 0x89, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0024, lo: 0x91, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x92},
+	{value: 0x0024, lo: 0x93, hi: 0x94},
+	{value: 0x0014, lo: 0x95, hi: 0x97},
+	{value: 0x0010, lo: 0x98, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xbf},
+	// Block 0x1c, offset 0xd4
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb2},
+	{value: 0x0010, lo: 0xb6, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x1d, offset 0xdf
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x8e},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9c, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xb1},
+	{value: 0x0010, lo: 0xbc, hi: 0xbc},
+	{value: 0x0024, lo: 0xbe, hi: 0xbe},
+	// Block 0x1e, offset 0xec
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8a},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb6},
+	{value: 0x0010, lo: 0xb8, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x1f, offset 0xf7
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0014, lo: 0x87, hi: 0x88},
+	{value: 0x0014, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x91, hi: 0x91},
+	{value: 0x0010, lo: 0x99, hi: 0x9c},
+	{value: 0x0010, lo: 0x9e, hi: 0x9e},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb5},
+	// Block 0x20, offset 0x103
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x91},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x21, offset 0x10d
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x85},
+	{value: 0x0014, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x89, hi: 0x89},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	{value: 0x0014, lo: 0xba, hi: 0xbf},
+	// Block 0x22, offset 0x119
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x23, offset 0x124
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x95, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9c, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	// Block 0x24, offset 0x130
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8a},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0x95},
+	{value: 0x0010, lo: 0x99, hi: 0x9a},
+	{value: 0x0010, lo: 0x9c, hi: 0x9c},
+	{value: 0x0010, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa3, hi: 0xa4},
+	{value: 0x0010, lo: 0xa8, hi: 0xaa},
+	{value: 0x0010, lo: 0xae, hi: 0xb9},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x25, offset 0x13c
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x86, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	// Block 0x26, offset 0x144
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x83},
+	{value: 0x0014, lo: 0x84, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb9},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbf},
+	// Block 0x27, offset 0x14d
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0014, lo: 0x86, hi: 0x88},
+	{value: 0x0014, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0034, lo: 0x95, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9a},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	// Block 0x28, offset 0x157
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x29, offset 0x162
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0014, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x95, hi: 0x96},
+	{value: 0x0010, lo: 0x9e, hi: 0x9e},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb1, hi: 0xb2},
+	// Block 0x2a, offset 0x16e
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x2b, offset 0x174
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x86, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x8e},
+	{value: 0x0010, lo: 0x94, hi: 0x97},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xba, hi: 0xbf},
+	// Block 0x2c, offset 0x17f
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x96},
+	{value: 0x0010, lo: 0x9a, hi: 0xb1},
+	{value: 0x0010, lo: 0xb3, hi: 0xbb},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	// Block 0x2d, offset 0x185
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0010, lo: 0x8f, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x94},
+	{value: 0x0014, lo: 0x96, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9f},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	// Block 0x2e, offset 0x18d
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb4, hi: 0xb7},
+	{value: 0x0034, lo: 0xb8, hi: 0xba},
+	// Block 0x2f, offset 0x190
+	{value: 0x0004, lo: 0x86, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x87},
+	{value: 0x0034, lo: 0x88, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x30, offset 0x195
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb4, hi: 0xb7},
+	{value: 0x0034, lo: 0xb8, hi: 0xba},
+	{value: 0x0014, lo: 0xbb, hi: 0xbc},
+	// Block 0x31, offset 0x199
+	{value: 0x0004, lo: 0x86, hi: 0x86},
+	{value: 0x0034, lo: 0x88, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x32, offset 0x19d
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0034, lo: 0x98, hi: 0x99},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0034, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	{value: 0x0034, lo: 0xb9, hi: 0xb9},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x33, offset 0x1a4
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0x89, hi: 0xac},
+	{value: 0x0034, lo: 0xb1, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xba, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x34, offset 0x1ad
+	{value: 0x0034, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0024, lo: 0x82, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0024, lo: 0x86, hi: 0x87},
+	{value: 0x0010, lo: 0x88, hi: 0x8c},
+	{value: 0x0014, lo: 0x8d, hi: 0x97},
+	{value: 0x0014, lo: 0x99, hi: 0xbc},
+	// Block 0x35, offset 0x1b5
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	// Block 0x36, offset 0x1b6
+	{value: 0x0010, lo: 0xab, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	{value: 0x0010, lo: 0xb8, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbc},
+	{value: 0x0014, lo: 0xbd, hi: 0xbe},
+	// Block 0x37, offset 0x1bf
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x96, hi: 0x97},
+	{value: 0x0014, lo: 0x98, hi: 0x99},
+	{value: 0x0014, lo: 0x9e, hi: 0xa0},
+	{value: 0x0010, lo: 0xa2, hi: 0xa4},
+	{value: 0x0010, lo: 0xa7, hi: 0xad},
+	{value: 0x0014, lo: 0xb1, hi: 0xb4},
+	// Block 0x38, offset 0x1c6
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x6c53, lo: 0xa0, hi: 0xbf},
+	// Block 0x39, offset 0x1ce
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x98},
+	{value: 0x0010, lo: 0x9a, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x3a, offset 0x1d4
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb5},
+	{value: 0x0010, lo: 0xb8, hi: 0xbe},
+	// Block 0x3b, offset 0x1d9
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x82, hi: 0x85},
+	{value: 0x0010, lo: 0x88, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0xbf},
+	// Block 0x3c, offset 0x1dd
+	{value: 0x0010, lo: 0x80, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0x95},
+	{value: 0x0010, lo: 0x98, hi: 0xbf},
+	// Block 0x3d, offset 0x1e0
+	{value: 0x0010, lo: 0x80, hi: 0x9a},
+	{value: 0x0024, lo: 0x9d, hi: 0x9f},
+	// Block 0x3e, offset 0x1e2
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x7453, lo: 0xa0, hi: 0xaf},
+	{value: 0x7853, lo: 0xb0, hi: 0xbf},
+	// Block 0x3f, offset 0x1e5
+	{value: 0x7c53, lo: 0x80, hi: 0x8f},
+	{value: 0x8053, lo: 0x90, hi: 0x9f},
+	{value: 0x7c53, lo: 0xa0, hi: 0xaf},
+	{value: 0x0813, lo: 0xb0, hi: 0xb5},
+	{value: 0x0892, lo: 0xb8, hi: 0xbd},
+	// Block 0x40, offset 0x1ea
+	{value: 0x0010, lo: 0x81, hi: 0xbf},
+	// Block 0x41, offset 0x1eb
+	{value: 0x0010, lo: 0x80, hi: 0xac},
+	{value: 0x0010, lo: 0xaf, hi: 0xbf},
+	// Block 0x42, offset 0x1ed
+	{value: 0x0010, lo: 0x81, hi: 0x9a},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x43, offset 0x1ef
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0010, lo: 0xae, hi: 0xb8},
+	// Block 0x44, offset 0x1f1
+	{value: 0x0010, lo: 0x80, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x93},
+	{value: 0x0034, lo: 0x94, hi: 0x94},
+	{value: 0x0010, lo: 0xa0, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	// Block 0x45, offset 0x1f8
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x93},
+	{value: 0x0010, lo: 0xa0, hi: 0xac},
+	{value: 0x0010, lo: 0xae, hi: 0xb0},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	// Block 0x46, offset 0x1fd
+	{value: 0x0014, lo: 0xb4, hi: 0xb5},
+	{value: 0x0010, lo: 0xb6, hi: 0xb6},
+	{value: 0x0014, lo: 0xb7, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x47, offset 0x201
+	{value: 0x0010, lo: 0x80, hi: 0x85},
+	{value: 0x0014, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0014, lo: 0x89, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x92},
+	{value: 0x0014, lo: 0x93, hi: 0x93},
+	{value: 0x0004, lo: 0x97, hi: 0x97},
+	{value: 0x0024, lo: 0x9d, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	// Block 0x48, offset 0x20a
+	{value: 0x0014, lo: 0x8b, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x49, offset 0x20d
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0xb8},
+	// Block 0x4a, offset 0x210
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0xa8},
+	{value: 0x0034, lo: 0xa9, hi: 0xa9},
+	{value: 0x0010, lo: 0xaa, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x4b, offset 0x216
+	{value: 0x0010, lo: 0x80, hi: 0xb5},
+	// Block 0x4c, offset 0x217
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0014, lo: 0xa0, hi: 0xa2},
+	{value: 0x0010, lo: 0xa3, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xab},
+	{value: 0x0010, lo: 0xb0, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb2},
+	{value: 0x0010, lo: 0xb3, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xb9},
+	{value: 0x0024, lo: 0xba, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbb},
+	// Block 0x4d, offset 0x222
+	{value: 0x0010, lo: 0x86, hi: 0x8f},
+	// Block 0x4e, offset 0x223
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x4f, offset 0x224
+	{value: 0x0010, lo: 0x80, hi: 0x96},
+	{value: 0x0024, lo: 0x97, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x98},
+	{value: 0x0010, lo: 0x99, hi: 0x9a},
+	{value: 0x0014, lo: 0x9b, hi: 0x9b},
+	// Block 0x50, offset 0x229
+	{value: 0x0010, lo: 0x95, hi: 0x95},
+	{value: 0x0014, lo: 0x96, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0014, lo: 0x98, hi: 0x9e},
+	{value: 0x0034, lo: 0xa0, hi: 0xa0},
+	{value: 0x0010, lo: 0xa1, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa2},
+	{value: 0x0010, lo: 0xa3, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xac},
+	{value: 0x0010, lo: 0xad, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb4},
+	{value: 0x0024, lo: 0xb5, hi: 0xbc},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x51, offset 0x236
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0004, lo: 0xa7, hi: 0xa7},
+	{value: 0x0024, lo: 0xb0, hi: 0xb4},
+	{value: 0x0034, lo: 0xb5, hi: 0xba},
+	{value: 0x0024, lo: 0xbb, hi: 0xbc},
+	{value: 0x0034, lo: 0xbd, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x52, offset 0x23f
+	{value: 0x0034, lo: 0x80, hi: 0x80},
+	// Block 0x53, offset 0x240
+	{value: 0x0014, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x54, offset 0x248
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0030, lo: 0x84, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x8b},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0024, lo: 0xab, hi: 0xab},
+	{value: 0x0034, lo: 0xac, hi: 0xac},
+	{value: 0x0024, lo: 0xad, hi: 0xb3},
+	// Block 0x55, offset 0x251
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa9},
+	{value: 0x0030, lo: 0xaa, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xbf},
+	// Block 0x56, offset 0x25a
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0034, lo: 0xa6, hi: 0xa6},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa9},
+	{value: 0x0010, lo: 0xaa, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xae},
+	{value: 0x0014, lo: 0xaf, hi: 0xb1},
+	{value: 0x0030, lo: 0xb2, hi: 0xb3},
+	// Block 0x57, offset 0x263
+	{value: 0x0010, lo: 0x80, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	// Block 0x58, offset 0x268
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x8d, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	// Block 0x59, offset 0x26b
+	{value: 0x31ea, lo: 0x80, hi: 0x80},
+	{value: 0x326a, lo: 0x81, hi: 0x81},
+	{value: 0x32ea, lo: 0x82, hi: 0x82},
+	{value: 0x336a, lo: 0x83, hi: 0x83},
+	{value: 0x33ea, lo: 0x84, hi: 0x84},
+	{value: 0x346a, lo: 0x85, hi: 0x85},
+	{value: 0x34ea, lo: 0x86, hi: 0x86},
+	{value: 0x356a, lo: 0x87, hi: 0x87},
+	{value: 0x35ea, lo: 0x88, hi: 0x88},
+	{value: 0x8353, lo: 0x90, hi: 0xba},
+	{value: 0x8353, lo: 0xbd, hi: 0xbf},
+	// Block 0x5a, offset 0x276
+	{value: 0x0024, lo: 0x90, hi: 0x92},
+	{value: 0x0034, lo: 0x94, hi: 0x99},
+	{value: 0x0024, lo: 0x9a, hi: 0x9b},
+	{value: 0x0034, lo: 0x9c, hi: 0x9f},
+	{value: 0x0024, lo: 0xa0, hi: 0xa0},
+	{value: 0x0010, lo: 0xa1, hi: 0xa1},
+	{value: 0x0034, lo: 0xa2, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xb3},
+	{value: 0x0024, lo: 0xb4, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb7},
+	{value: 0x0024, lo: 0xb8, hi: 0xb9},
+	{value: 0x0010, lo: 0xba, hi: 0xba},
+	// Block 0x5b, offset 0x284
+	{value: 0x0012, lo: 0x80, hi: 0xab},
+	{value: 0x0015, lo: 0xac, hi: 0xbf},
+	// Block 0x5c, offset 0x286
+	{value: 0x0015, lo: 0x80, hi: 0xaa},
+	{value: 0x0012, lo: 0xab, hi: 0xb7},
+	{value: 0x0015, lo: 0xb8, hi: 0xb8},
+	{value: 0x8752, lo: 0xb9, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xbc},
+	{value: 0x8b52, lo: 0xbd, hi: 0xbd},
+	{value: 0x0012, lo: 0xbe, hi: 0xbf},
+	// Block 0x5d, offset 0x28d
+	{value: 0x0012, lo: 0x80, hi: 0x8d},
+	{value: 0x8f52, lo: 0x8e, hi: 0x8e},
+	{value: 0x0012, lo: 0x8f, hi: 0x9a},
+	{value: 0x0015, lo: 0x9b, hi: 0xbf},
+	// Block 0x5e, offset 0x291
+	{value: 0x0024, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0024, lo: 0x83, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0024, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x90},
+	{value: 0x0024, lo: 0x91, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb9},
+	{value: 0x0024, lo: 0xbb, hi: 0xbb},
+	{value: 0x0034, lo: 0xbc, hi: 0xbd},
+	{value: 0x0024, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x5f, offset 0x29d
+	{value: 0x0117, lo: 0x80, hi: 0xbf},
+	// Block 0x60, offset 0x29e
+	{value: 0x0117, lo: 0x80, hi: 0x95},
+	{value: 0x369a, lo: 0x96, hi: 0x96},
+	{value: 0x374a, lo: 0x97, hi: 0x97},
+	{value: 0x37fa, lo: 0x98, hi: 0x98},
+	{value: 0x38aa, lo: 0x99, hi: 0x99},
+	{value: 0x395a, lo: 0x9a, hi: 0x9a},
+	{value: 0x3a0a, lo: 0x9b, hi: 0x9b},
+	{value: 0x0012, lo: 0x9c, hi: 0x9d},
+	{value: 0x3abb, lo: 0x9e, hi: 0x9e},
+	{value: 0x0012, lo: 0x9f, hi: 0x9f},
+	{value: 0x0117, lo: 0xa0, hi: 0xbf},
+	// Block 0x61, offset 0x2a9
+	{value: 0x0812, lo: 0x80, hi: 0x87},
+	{value: 0x0813, lo: 0x88, hi: 0x8f},
+	{value: 0x0812, lo: 0x90, hi: 0x95},
+	{value: 0x0813, lo: 0x98, hi: 0x9d},
+	{value: 0x0812, lo: 0xa0, hi: 0xa7},
+	{value: 0x0813, lo: 0xa8, hi: 0xaf},
+	{value: 0x0812, lo: 0xb0, hi: 0xb7},
+	{value: 0x0813, lo: 0xb8, hi: 0xbf},
+	// Block 0x62, offset 0x2b1
+	{value: 0x0004, lo: 0x8b, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8f},
+	{value: 0x0054, lo: 0x98, hi: 0x99},
+	{value: 0x0054, lo: 0xa4, hi: 0xa4},
+	{value: 0x0054, lo: 0xa7, hi: 0xa7},
+	{value: 0x0014, lo: 0xaa, hi: 0xae},
+	{value: 0x0010, lo: 0xaf, hi: 0xaf},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x63, offset 0x2b9
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x94, hi: 0x94},
+	{value: 0x0014, lo: 0xa0, hi: 0xa4},
+	{value: 0x0014, lo: 0xa6, hi: 0xaf},
+	{value: 0x0015, lo: 0xb1, hi: 0xb1},
+	{value: 0x0015, lo: 0xbf, hi: 0xbf},
+	// Block 0x64, offset 0x2bf
+	{value: 0x0015, lo: 0x90, hi: 0x9c},
+	// Block 0x65, offset 0x2c0
+	{value: 0x0024, lo: 0x90, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x93},
+	{value: 0x0024, lo: 0x94, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x9a},
+	{value: 0x0024, lo: 0x9b, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0xa0},
+	{value: 0x0024, lo: 0xa1, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa4},
+	{value: 0x0034, lo: 0xa5, hi: 0xa6},
+	{value: 0x0024, lo: 0xa7, hi: 0xa7},
+	{value: 0x0034, lo: 0xa8, hi: 0xa8},
+	{value: 0x0024, lo: 0xa9, hi: 0xa9},
+	{value: 0x0034, lo: 0xaa, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	// Block 0x66, offset 0x2ce
+	{value: 0x0016, lo: 0x85, hi: 0x86},
+	{value: 0x0012, lo: 0x87, hi: 0x89},
+	{value: 0xa452, lo: 0x8e, hi: 0x8e},
+	{value: 0x1013, lo: 0xa0, hi: 0xaf},
+	{value: 0x1012, lo: 0xb0, hi: 0xbf},
+	// Block 0x67, offset 0x2d3
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x88},
+	// Block 0x68, offset 0x2d6
+	{value: 0xa753, lo: 0xb6, hi: 0xb7},
+	{value: 0xaa53, lo: 0xb8, hi: 0xb9},
+	{value: 0xad53, lo: 0xba, hi: 0xbb},
+	{value: 0xaa53, lo: 0xbc, hi: 0xbd},
+	{value: 0xa753, lo: 0xbe, hi: 0xbf},
+	// Block 0x69, offset 0x2db
+	{value: 0x3013, lo: 0x80, hi: 0x8f},
+	{value: 0x6553, lo: 0x90, hi: 0x9f},
+	{value: 0xb053, lo: 0xa0, hi: 0xae},
+	{value: 0x3012, lo: 0xb0, hi: 0xbf},
+	// Block 0x6a, offset 0x2df
+	{value: 0x0117, lo: 0x80, hi: 0xa3},
+	{value: 0x0012, lo: 0xa4, hi: 0xa4},
+	{value: 0x0716, lo: 0xab, hi: 0xac},
+	{value: 0x0316, lo: 0xad, hi: 0xae},
+	{value: 0x0024, lo: 0xaf, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xb3},
+	// Block 0x6b, offset 0x2e5
+	{value: 0x6c52, lo: 0x80, hi: 0x9f},
+	{value: 0x7052, lo: 0xa0, hi: 0xa5},
+	{value: 0x7052, lo: 0xa7, hi: 0xa7},
+	{value: 0x7052, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x6c, offset 0x2ea
+	{value: 0x0010, lo: 0x80, hi: 0xa7},
+	{value: 0x0014, lo: 0xaf, hi: 0xaf},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x6d, offset 0x2ed
+	{value: 0x0010, lo: 0x80, hi: 0x96},
+	{value: 0x0010, lo: 0xa0, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xae},
+	{value: 0x0010, lo: 0xb0, hi: 0xb6},
+	{value: 0x0010, lo: 0xb8, hi: 0xbe},
+	// Block 0x6e, offset 0x2f2
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x88, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9e},
+	{value: 0x0024, lo: 0xa0, hi: 0xbf},
+	// Block 0x6f, offset 0x2f7
+	{value: 0x0014, lo: 0xaf, hi: 0xaf},
+	// Block 0x70, offset 0x2f8
+	{value: 0x0014, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0xaa, hi: 0xad},
+	{value: 0x0030, lo: 0xae, hi: 0xaf},
+	{value: 0x0004, lo: 0xb1, hi: 0xb5},
+	{value: 0x0014, lo: 0xbb, hi: 0xbb},
+	{value: 0x0010, lo: 0xbc, hi: 0xbc},
+	// Block 0x71, offset 0x2fe
+	{value: 0x0034, lo: 0x99, hi: 0x9a},
+	{value: 0x0004, lo: 0x9b, hi: 0x9e},
+	// Block 0x72, offset 0x300
+	{value: 0x0004, lo: 0xbc, hi: 0xbe},
+	// Block 0x73, offset 0x301
+	{value: 0x0010, lo: 0x85, hi: 0xaf},
+	{value: 0x0010, lo: 0xb1, hi: 0xbf},
+	// Block 0x74, offset 0x303
+	{value: 0x0010, lo: 0x80, hi: 0x8e},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x75, offset 0x305
+	{value: 0x0010, lo: 0x80, hi: 0x94},
+	{value: 0x0014, lo: 0x95, hi: 0x95},
+	{value: 0x0010, lo: 0x96, hi: 0xbf},
+	// Block 0x76, offset 0x308
+	{value: 0x0010, lo: 0x80, hi: 0x8c},
+	// Block 0x77, offset 0x309
+	{value: 0x0010, lo: 0x90, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	// Block 0x78, offset 0x30b
+	{value: 0x0010, lo: 0x80, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0010, lo: 0x90, hi: 0xab},
+	// Block 0x79, offset 0x30e
+	{value: 0x0117, lo: 0x80, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xae},
+	{value: 0x0024, lo: 0xaf, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb2},
+	{value: 0x0024, lo: 0xb4, hi: 0xbd},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x7a, offset 0x314
+	{value: 0x0117, lo: 0x80, hi: 0x9b},
+	{value: 0x0015, lo: 0x9c, hi: 0x9d},
+	{value: 0x0024, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x7b, offset 0x318
+	{value: 0x0010, lo: 0x80, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb1},
+	// Block 0x7c, offset 0x31a
+	{value: 0x0004, lo: 0x80, hi: 0x87},
+	{value: 0x0014, lo: 0x88, hi: 0xa1},
+	{value: 0x0117, lo: 0xa2, hi: 0xaf},
+	{value: 0x0012, lo: 0xb0, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xbf},
+	// Block 0x7d, offset 0x31f
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x0015, lo: 0xb0, hi: 0xb0},
+	{value: 0x0012, lo: 0xb1, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x8753, lo: 0xbd, hi: 0xbd},
+	{value: 0x0117, lo: 0xbe, hi: 0xbf},
+	// Block 0x7e, offset 0x326
+	{value: 0x0117, lo: 0x82, hi: 0x83},
+	{value: 0x6553, lo: 0x84, hi: 0x84},
+	{value: 0x908b, lo: 0x85, hi: 0x85},
+	{value: 0x8f53, lo: 0x86, hi: 0x86},
+	{value: 0x0f16, lo: 0x87, hi: 0x88},
+	{value: 0x0316, lo: 0x89, hi: 0x8a},
+	{value: 0x0316, lo: 0xb5, hi: 0xb6},
+	{value: 0x0010, lo: 0xb7, hi: 0xb7},
+	{value: 0x0015, lo: 0xb8, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbf},
+	// Block 0x7f, offset 0x331
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8a},
+	{value: 0x0014, lo: 0x8b, hi: 0x8b},
+	{value: 0x0010, lo: 0x8c, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa6},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0034, lo: 0xac, hi: 0xac},
+	// Block 0x80, offset 0x33b
+	{value: 0x0010, lo: 0x80, hi: 0xb3},
+	// Block 0x81, offset 0x33c
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x85},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0024, lo: 0xa0, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb7},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0010, lo: 0xbd, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x82, offset 0x345
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0014, lo: 0xa6, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x83, offset 0x349
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x91},
+	{value: 0x0010, lo: 0x92, hi: 0x92},
+	{value: 0x0030, lo: 0x93, hi: 0x93},
+	{value: 0x0010, lo: 0xa0, hi: 0xbc},
+	// Block 0x84, offset 0x34e
+	{value: 0x0014, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xb9},
+	{value: 0x0010, lo: 0xba, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x85, offset 0x356
+	{value: 0x0030, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0014, lo: 0xa5, hi: 0xa5},
+	{value: 0x0004, lo: 0xa6, hi: 0xa6},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x86, offset 0x35c
+	{value: 0x0010, lo: 0x80, hi: 0xa8},
+	{value: 0x0014, lo: 0xa9, hi: 0xae},
+	{value: 0x0010, lo: 0xaf, hi: 0xb0},
+	{value: 0x0014, lo: 0xb1, hi: 0xb2},
+	{value: 0x0010, lo: 0xb3, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb6},
+	// Block 0x87, offset 0x362
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0010, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0004, lo: 0xb0, hi: 0xb0},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	// Block 0x88, offset 0x36c
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	{value: 0x0024, lo: 0xb2, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0024, lo: 0xb7, hi: 0xb8},
+	{value: 0x0024, lo: 0xbe, hi: 0xbf},
+	// Block 0x89, offset 0x371
+	{value: 0x0024, lo: 0x81, hi: 0x81},
+	{value: 0x0004, lo: 0x9d, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0010, lo: 0xb2, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb6},
+	// Block 0x8a, offset 0x37a
+	{value: 0x0010, lo: 0x81, hi: 0x86},
+	{value: 0x0010, lo: 0x89, hi: 0x8e},
+	{value: 0x0010, lo: 0x91, hi: 0x96},
+	{value: 0x0010, lo: 0xa0, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xae},
+	{value: 0x0012, lo: 0xb0, hi: 0xbf},
+	// Block 0x8b, offset 0x380
+	{value: 0x0012, lo: 0x80, hi: 0x92},
+	{value: 0xb352, lo: 0x93, hi: 0x93},
+	{value: 0x0012, lo: 0x94, hi: 0x9a},
+	{value: 0x0014, lo: 0x9b, hi: 0x9b},
+	{value: 0x0015, lo: 0x9c, hi: 0x9f},
+	{value: 0x0012, lo: 0xa0, hi: 0xa8},
+	{value: 0x0014, lo: 0xa9, hi: 0xa9},
+	{value: 0x0004, lo: 0xaa, hi: 0xab},
+	{value: 0x74d2, lo: 0xb0, hi: 0xbf},
+	// Block 0x8c, offset 0x389
+	{value: 0x78d2, lo: 0x80, hi: 0x8f},
+	{value: 0x7cd2, lo: 0x90, hi: 0x9f},
+	{value: 0x80d2, lo: 0xa0, hi: 0xaf},
+	{value: 0x7cd2, lo: 0xb0, hi: 0xbf},
+	// Block 0x8d, offset 0x38d
+	{value: 0x0010, lo: 0x80, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xaa},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x8e, offset 0x395
+	{value: 0x0010, lo: 0x80, hi: 0xa3},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x8f, offset 0x397
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x8b, hi: 0xbb},
+	// Block 0x90, offset 0x399
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x86, hi: 0xbf},
+	// Block 0x91, offset 0x39c
+	{value: 0x0010, lo: 0x80, hi: 0xb1},
+	{value: 0x0004, lo: 0xb2, hi: 0xbf},
+	// Block 0x92, offset 0x39e
+	{value: 0x0004, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x93, hi: 0xbf},
+	// Block 0x93, offset 0x3a0
+	{value: 0x0010, lo: 0x80, hi: 0xbd},
+	// Block 0x94, offset 0x3a1
+	{value: 0x0010, lo: 0x90, hi: 0xbf},
+	// Block 0x95, offset 0x3a2
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x0010, lo: 0x92, hi: 0xbf},
+	// Block 0x96, offset 0x3a4
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0xb0, hi: 0xbb},
+	// Block 0x97, offset 0x3a6
+	{value: 0x0014, lo: 0x80, hi: 0x8f},
+	{value: 0x0054, lo: 0x93, hi: 0x93},
+	{value: 0x0024, lo: 0xa0, hi: 0xa6},
+	{value: 0x0034, lo: 0xa7, hi: 0xad},
+	{value: 0x0024, lo: 0xae, hi: 0xaf},
+	{value: 0x0010, lo: 0xb3, hi: 0xb4},
+	// Block 0x98, offset 0x3ac
+	{value: 0x0010, lo: 0x8d, hi: 0x8f},
+	{value: 0x0054, lo: 0x92, hi: 0x92},
+	{value: 0x0054, lo: 0x95, hi: 0x95},
+	{value: 0x0010, lo: 0xb0, hi: 0xb4},
+	{value: 0x0010, lo: 0xb6, hi: 0xbf},
+	// Block 0x99, offset 0x3b1
+	{value: 0x0010, lo: 0x80, hi: 0xbc},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x9a, offset 0x3b3
+	{value: 0x0054, lo: 0x87, hi: 0x87},
+	{value: 0x0054, lo: 0x8e, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0054, lo: 0x9a, hi: 0x9a},
+	{value: 0x5f53, lo: 0xa1, hi: 0xba},
+	{value: 0x0004, lo: 0xbe, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x9b, offset 0x3ba
+	{value: 0x0004, lo: 0x80, hi: 0x80},
+	{value: 0x5f52, lo: 0x81, hi: 0x9a},
+	{value: 0x0004, lo: 0xb0, hi: 0xb0},
+	// Block 0x9c, offset 0x3bd
+	{value: 0x0014, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xbe},
+	// Block 0x9d, offset 0x3bf
+	{value: 0x0010, lo: 0x82, hi: 0x87},
+	{value: 0x0010, lo: 0x8a, hi: 0x8f},
+	{value: 0x0010, lo: 0x92, hi: 0x97},
+	{value: 0x0010, lo: 0x9a, hi: 0x9c},
+	{value: 0x0004, lo: 0xa3, hi: 0xa3},
+	{value: 0x0014, lo: 0xb9, hi: 0xbb},
+	// Block 0x9e, offset 0x3c5
+	{value: 0x0010, lo: 0x80, hi: 0x8b},
+	{value: 0x0010, lo: 0x8d, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xba},
+	{value: 0x0010, lo: 0xbc, hi: 0xbd},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x9f, offset 0x3ca
+	{value: 0x0010, lo: 0x80, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x9d},
+	// Block 0xa0, offset 0x3cc
+	{value: 0x0010, lo: 0x80, hi: 0xba},
+	// Block 0xa1, offset 0x3cd
+	{value: 0x0010, lo: 0x80, hi: 0xb4},
+	// Block 0xa2, offset 0x3ce
+	{value: 0x0034, lo: 0xbd, hi: 0xbd},
+	// Block 0xa3, offset 0x3cf
+	{value: 0x0010, lo: 0x80, hi: 0x9c},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0xa4, offset 0x3d1
+	{value: 0x0010, lo: 0x80, hi: 0x90},
+	{value: 0x0034, lo: 0xa0, hi: 0xa0},
+	// Block 0xa5, offset 0x3d3
+	{value: 0x0010, lo: 0x80, hi: 0x9f},
+	{value: 0x0010, lo: 0xad, hi: 0xbf},
+	// Block 0xa6, offset 0x3d5
+	{value: 0x0010, lo: 0x80, hi: 0x8a},
+	{value: 0x0010, lo: 0x90, hi: 0xb5},
+	{value: 0x0024, lo: 0xb6, hi: 0xba},
+	// Block 0xa7, offset 0x3d8
+	{value: 0x0010, lo: 0x80, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0xa8, offset 0x3da
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x88, hi: 0x8f},
+	{value: 0x0010, lo: 0x91, hi: 0x95},
+	// Block 0xa9, offset 0x3dd
+	{value: 0x2813, lo: 0x80, hi: 0x87},
+	{value: 0x3813, lo: 0x88, hi: 0x8f},
+	{value: 0x2813, lo: 0x90, hi: 0x97},
+	{value: 0xb653, lo: 0x98, hi: 0x9f},
+	{value: 0xb953, lo: 0xa0, hi: 0xa7},
+	{value: 0x2812, lo: 0xa8, hi: 0xaf},
+	{value: 0x3812, lo: 0xb0, hi: 0xb7},
+	{value: 0x2812, lo: 0xb8, hi: 0xbf},
+	// Block 0xaa, offset 0x3e5
+	{value: 0xb652, lo: 0x80, hi: 0x87},
+	{value: 0xb952, lo: 0x88, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0xbf},
+	// Block 0xab, offset 0x3e8
+	{value: 0x0010, lo: 0x80, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0xb953, lo: 0xb0, hi: 0xb7},
+	{value: 0xb653, lo: 0xb8, hi: 0xbf},
+	// Block 0xac, offset 0x3ec
+	{value: 0x2813, lo: 0x80, hi: 0x87},
+	{value: 0x3813, lo: 0x88, hi: 0x8f},
+	{value: 0x2813, lo: 0x90, hi: 0x93},
+	{value: 0xb952, lo: 0x98, hi: 0x9f},
+	{value: 0xb652, lo: 0xa0, hi: 0xa7},
+	{value: 0x2812, lo: 0xa8, hi: 0xaf},
+	{value: 0x3812, lo: 0xb0, hi: 0xb7},
+	{value: 0x2812, lo: 0xb8, hi: 0xbb},
+	// Block 0xad, offset 0x3f4
+	{value: 0x0010, lo: 0x80, hi: 0xa7},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xae, offset 0x3f6
+	{value: 0x0010, lo: 0x80, hi: 0xa3},
+	// Block 0xaf, offset 0x3f7
+	{value: 0x0010, lo: 0x80, hi: 0xb6},
+	// Block 0xb0, offset 0x3f8
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xa7},
+	// Block 0xb1, offset 0x3fa
+	{value: 0x0010, lo: 0x80, hi: 0x85},
+	{value: 0x0010, lo: 0x88, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0xb5},
+	{value: 0x0010, lo: 0xb7, hi: 0xb8},
+	{value: 0x0010, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xb2, offset 0x400
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb6},
+	// Block 0xb3, offset 0x402
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	// Block 0xb4, offset 0x403
+	{value: 0x0010, lo: 0xa0, hi: 0xb2},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	// Block 0xb5, offset 0x405
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb9},
+	// Block 0xb6, offset 0x407
+	{value: 0x0010, lo: 0x80, hi: 0xb7},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0xb7, offset 0x409
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x83},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x8e, hi: 0x8e},
+	{value: 0x0024, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x93},
+	{value: 0x0010, lo: 0x95, hi: 0x97},
+	{value: 0x0010, lo: 0x99, hi: 0xb5},
+	{value: 0x0024, lo: 0xb8, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xb8, offset 0x416
+	{value: 0x0010, lo: 0xa0, hi: 0xbc},
+	// Block 0xb9, offset 0x417
+	{value: 0x0010, lo: 0x80, hi: 0x9c},
+	// Block 0xba, offset 0x418
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0x89, hi: 0xa4},
+	{value: 0x0024, lo: 0xa5, hi: 0xa5},
+	{value: 0x0034, lo: 0xa6, hi: 0xa6},
+	// Block 0xbb, offset 0x41c
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb2},
+	// Block 0xbc, offset 0x41e
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	// Block 0xbd, offset 0x41f
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	// Block 0xbe, offset 0x420
+	{value: 0x5653, lo: 0x80, hi: 0xb2},
+	// Block 0xbf, offset 0x421
+	{value: 0x5652, lo: 0x80, hi: 0xb2},
+	// Block 0xc0, offset 0x422
+	{value: 0x0010, lo: 0x80, hi: 0xa3},
+	{value: 0x0024, lo: 0xa4, hi: 0xa7},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xc1, offset 0x425
+	{value: 0x0010, lo: 0x80, hi: 0xa9},
+	{value: 0x0024, lo: 0xab, hi: 0xac},
+	{value: 0x0010, lo: 0xb0, hi: 0xb1},
+	// Block 0xc2, offset 0x428
+	{value: 0x0010, lo: 0x80, hi: 0x9c},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xc3, offset 0x42b
+	{value: 0x0010, lo: 0x80, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x87},
+	{value: 0x0024, lo: 0x88, hi: 0x8a},
+	{value: 0x0034, lo: 0x8b, hi: 0x8b},
+	{value: 0x0024, lo: 0x8c, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x90},
+	// Block 0xc4, offset 0x431
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xc5, offset 0x432
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0010, lo: 0xa0, hi: 0xb6},
+	// Block 0xc6, offset 0x434
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbf},
+	// Block 0xc7, offset 0x438
+	{value: 0x0014, lo: 0x80, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xc8, offset 0x43c
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb6},
+	{value: 0x0010, lo: 0xb7, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0014, lo: 0xbd, hi: 0xbd},
+	// Block 0xc9, offset 0x442
+	{value: 0x0014, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0xa8},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xca, offset 0x445
+	{value: 0x0024, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xab},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb4},
+	{value: 0x0010, lo: 0xb6, hi: 0xbf},
+	// Block 0xcb, offset 0x44c
+	{value: 0x0010, lo: 0x84, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb3},
+	{value: 0x0010, lo: 0xb6, hi: 0xb6},
+	// Block 0xcc, offset 0x450
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xcd, offset 0x454
+	{value: 0x0030, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0014, lo: 0x89, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0014, lo: 0x8b, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x8e},
+	{value: 0x0014, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x9a},
+	{value: 0x0010, lo: 0x9c, hi: 0x9c},
+	// Block 0xce, offset 0x45d
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	{value: 0x0010, lo: 0x93, hi: 0xae},
+	{value: 0x0014, lo: 0xaf, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0014, lo: 0xb4, hi: 0xb4},
+	{value: 0x0030, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb6},
+	{value: 0x0014, lo: 0xb7, hi: 0xb7},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	// Block 0xcf, offset 0x466
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x88, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa8},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xd0, offset 0x46c
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0014, lo: 0x9f, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa2},
+	{value: 0x0014, lo: 0xa3, hi: 0xa8},
+	{value: 0x0034, lo: 0xa9, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xd1, offset 0x472
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbb, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0xd2, offset 0x47c
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0030, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9d, hi: 0xa3},
+	{value: 0x0024, lo: 0xa6, hi: 0xac},
+	{value: 0x0024, lo: 0xb0, hi: 0xb4},
+	// Block 0xd3, offset 0x486
+	{value: 0x0010, lo: 0x80, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbf},
+	// Block 0xd4, offset 0x488
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8a},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0024, lo: 0x9e, hi: 0x9e},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	// Block 0xd5, offset 0x491
+	{value: 0x0010, lo: 0x80, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb8},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0xd6, offset 0x497
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0x85},
+	{value: 0x0010, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xd7, offset 0x49d
+	{value: 0x0010, lo: 0x80, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb5},
+	{value: 0x0010, lo: 0xb8, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xd8, offset 0x4a3
+	{value: 0x0034, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x98, hi: 0x9b},
+	{value: 0x0014, lo: 0x9c, hi: 0x9d},
+	// Block 0xd9, offset 0x4a6
+	{value: 0x0010, lo: 0x80, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbc},
+	{value: 0x0014, lo: 0xbd, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xda, offset 0x4ac
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x84, hi: 0x84},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xdb, offset 0x4af
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0014, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb5},
+	{value: 0x0030, lo: 0xb6, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	{value: 0x0010, lo: 0xb8, hi: 0xb8},
+	// Block 0xdc, offset 0x4b8
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	// Block 0xdd, offset 0x4b9
+	{value: 0x0014, lo: 0x9d, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xde, offset 0x4c0
+	{value: 0x0010, lo: 0x80, hi: 0xae},
+	{value: 0x0014, lo: 0xaf, hi: 0xb7},
+	{value: 0x0010, lo: 0xb8, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	// Block 0xdf, offset 0x4c4
+	{value: 0x5f53, lo: 0xa0, hi: 0xbf},
+	// Block 0xe0, offset 0x4c5
+	{value: 0x5f52, lo: 0x80, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xe1, offset 0x4c8
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x89, hi: 0x89},
+	{value: 0x0010, lo: 0x8c, hi: 0x93},
+	{value: 0x0010, lo: 0x95, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0xb5},
+	{value: 0x0010, lo: 0xb7, hi: 0xb8},
+	{value: 0x0014, lo: 0xbb, hi: 0xbc},
+	{value: 0x0030, lo: 0xbd, hi: 0xbd},
+	{value: 0x0034, lo: 0xbe, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xe2, offset 0x4d2
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0034, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xe3, offset 0x4d5
+	{value: 0x0010, lo: 0xa0, hi: 0xa7},
+	{value: 0x0010, lo: 0xaa, hi: 0xbf},
+	// Block 0xe4, offset 0x4d7
+	{value: 0x0010, lo: 0x80, hi: 0x93},
+	{value: 0x0014, lo: 0x94, hi: 0x97},
+	{value: 0x0014, lo: 0x9a, hi: 0x9b},
+	{value: 0x0010, lo: 0x9c, hi: 0x9f},
+	{value: 0x0034, lo: 0xa0, hi: 0xa0},
+	{value: 0x0010, lo: 0xa1, hi: 0xa1},
+	{value: 0x0010, lo: 0xa3, hi: 0xa4},
+	// Block 0xe5, offset 0x4de
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x8a},
+	{value: 0x0010, lo: 0x8b, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb8},
+	{value: 0x0010, lo: 0xb9, hi: 0xba},
+	{value: 0x0014, lo: 0xbb, hi: 0xbe},
+	// Block 0xe6, offset 0x4e6
+	{value: 0x0034, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0014, lo: 0x91, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x98},
+	{value: 0x0014, lo: 0x99, hi: 0x9b},
+	{value: 0x0010, lo: 0x9c, hi: 0xbf},
+	// Block 0xe7, offset 0x4ec
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0014, lo: 0x8a, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0014, lo: 0x98, hi: 0x98},
+	{value: 0x0034, lo: 0x99, hi: 0x99},
+	{value: 0x0010, lo: 0x9d, hi: 0x9d},
+	// Block 0xe8, offset 0x4f2
+	{value: 0x0010, lo: 0x80, hi: 0xb8},
+	// Block 0xe9, offset 0x4f3
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb6},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xea, offset 0x4f9
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xb2, hi: 0xbf},
+	// Block 0xeb, offset 0x4fc
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x0014, lo: 0x92, hi: 0xa7},
+	{value: 0x0010, lo: 0xa9, hi: 0xa9},
+	{value: 0x0014, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb6},
+	// Block 0xec, offset 0x504
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x88, hi: 0x89},
+	{value: 0x0010, lo: 0x8b, hi: 0xb0},
+	{value: 0x0014, lo: 0xb1, hi: 0xb6},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0014, lo: 0xbc, hi: 0xbd},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0xed, offset 0x50b
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x85},
+	{value: 0x0010, lo: 0x86, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xa0, hi: 0xa5},
+	{value: 0x0010, lo: 0xa7, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xbf},
+	// Block 0xee, offset 0x515
+	{value: 0x0010, lo: 0x80, hi: 0x8e},
+	{value: 0x0014, lo: 0x90, hi: 0x91},
+	{value: 0x0010, lo: 0x93, hi: 0x94},
+	{value: 0x0014, lo: 0x95, hi: 0x95},
+	{value: 0x0010, lo: 0x96, hi: 0x96},
+	{value: 0x0034, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x98, hi: 0x98},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	// Block 0xef, offset 0x51d
+	{value: 0x0010, lo: 0xa0, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb6},
+	// Block 0xf0, offset 0x520
+	{value: 0x0010, lo: 0xb0, hi: 0xb0},
+	// Block 0xf1, offset 0x521
+	{value: 0x0010, lo: 0x80, hi: 0x99},
+	// Block 0xf2, offset 0x522
+	{value: 0x0010, lo: 0x80, hi: 0xae},
+	// Block 0xf3, offset 0x523
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	// Block 0xf4, offset 0x524
+	{value: 0x0010, lo: 0x80, hi: 0xae},
+	{value: 0x0014, lo: 0xb0, hi: 0xb8},
+	// Block 0xf5, offset 0x526
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	// Block 0xf6, offset 0x527
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	// Block 0xf7, offset 0x529
+	{value: 0x0010, lo: 0x90, hi: 0xad},
+	{value: 0x0034, lo: 0xb0, hi: 0xb4},
+	// Block 0xf8, offset 0x52b
+	{value: 0x0010, lo: 0x80, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb6},
+	// Block 0xf9, offset 0x52d
+	{value: 0x0014, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xa3, hi: 0xb7},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0xfa, offset 0x531
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	// Block 0xfb, offset 0x532
+	{value: 0x2013, lo: 0x80, hi: 0x9f},
+	{value: 0x2012, lo: 0xa0, hi: 0xbf},
+	// Block 0xfc, offset 0x534
+	{value: 0x0010, lo: 0x80, hi: 0x8a},
+	{value: 0x0014, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0xbf},
+	// Block 0xfd, offset 0x537
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0014, lo: 0x8f, hi: 0x9f},
+	// Block 0xfe, offset 0x539
+	{value: 0x0014, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa3, hi: 0xa4},
+	{value: 0x0030, lo: 0xb0, hi: 0xb1},
+	// Block 0xff, offset 0x53c
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xbc},
+	// Block 0x100, offset 0x53e
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x0034, lo: 0x9e, hi: 0x9e},
+	{value: 0x0014, lo: 0xa0, hi: 0xa3},
+	// Block 0x101, offset 0x543
+	{value: 0x0030, lo: 0xa5, hi: 0xa6},
+	{value: 0x0034, lo: 0xa7, hi: 0xa9},
+	{value: 0x0030, lo: 0xad, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbf},
+	// Block 0x102, offset 0x548
+	{value: 0x0034, lo: 0x80, hi: 0x82},
+	{value: 0x0024, lo: 0x85, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8b},
+	{value: 0x0024, lo: 0xaa, hi: 0xad},
+	// Block 0x103, offset 0x54c
+	{value: 0x0024, lo: 0x82, hi: 0x84},
+	// Block 0x104, offset 0x54d
+	{value: 0x0013, lo: 0x80, hi: 0x99},
+	{value: 0x0012, lo: 0x9a, hi: 0xb3},
+	{value: 0x0013, lo: 0xb4, hi: 0xbf},
+	// Block 0x105, offset 0x550
+	{value: 0x0013, lo: 0x80, hi: 0x8d},
+	{value: 0x0012, lo: 0x8e, hi: 0x94},
+	{value: 0x0012, lo: 0x96, hi: 0xa7},
+	{value: 0x0013, lo: 0xa8, hi: 0xbf},
+	// Block 0x106, offset 0x554
+	{value: 0x0013, lo: 0x80, hi: 0x81},
+	{value: 0x0012, lo: 0x82, hi: 0x9b},
+	{value: 0x0013, lo: 0x9c, hi: 0x9c},
+	{value: 0x0013, lo: 0x9e, hi: 0x9f},
+	{value: 0x0013, lo: 0xa2, hi: 0xa2},
+	{value: 0x0013, lo: 0xa5, hi: 0xa6},
+	{value: 0x0013, lo: 0xa9, hi: 0xac},
+	{value: 0x0013, lo: 0xae, hi: 0xb5},
+	{value: 0x0012, lo: 0xb6, hi: 0xb9},
+	{value: 0x0012, lo: 0xbb, hi: 0xbb},
+	{value: 0x0012, lo: 0xbd, hi: 0xbf},
+	// Block 0x107, offset 0x55f
+	{value: 0x0012, lo: 0x80, hi: 0x83},
+	{value: 0x0012, lo: 0x85, hi: 0x8f},
+	{value: 0x0013, lo: 0x90, hi: 0xa9},
+	{value: 0x0012, lo: 0xaa, hi: 0xbf},
+	// Block 0x108, offset 0x563
+	{value: 0x0012, lo: 0x80, hi: 0x83},
+	{value: 0x0013, lo: 0x84, hi: 0x85},
+	{value: 0x0013, lo: 0x87, hi: 0x8a},
+	{value: 0x0013, lo: 0x8d, hi: 0x94},
+	{value: 0x0013, lo: 0x96, hi: 0x9c},
+	{value: 0x0012, lo: 0x9e, hi: 0xb7},
+	{value: 0x0013, lo: 0xb8, hi: 0xb9},
+	{value: 0x0013, lo: 0xbb, hi: 0xbe},
+	// Block 0x109, offset 0x56b
+	{value: 0x0013, lo: 0x80, hi: 0x84},
+	{value: 0x0013, lo: 0x86, hi: 0x86},
+	{value: 0x0013, lo: 0x8a, hi: 0x90},
+	{value: 0x0012, lo: 0x92, hi: 0xab},
+	{value: 0x0013, lo: 0xac, hi: 0xbf},
+	// Block 0x10a, offset 0x570
+	{value: 0x0013, lo: 0x80, hi: 0x85},
+	{value: 0x0012, lo: 0x86, hi: 0x9f},
+	{value: 0x0013, lo: 0xa0, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xbf},
+	// Block 0x10b, offset 0x574
+	{value: 0x0012, lo: 0x80, hi: 0x93},
+	{value: 0x0013, lo: 0x94, hi: 0xad},
+	{value: 0x0012, lo: 0xae, hi: 0xbf},
+	// Block 0x10c, offset 0x577
+	{value: 0x0012, lo: 0x80, hi: 0x87},
+	{value: 0x0013, lo: 0x88, hi: 0xa1},
+	{value: 0x0012, lo: 0xa2, hi: 0xbb},
+	{value: 0x0013, lo: 0xbc, hi: 0xbf},
+	// Block 0x10d, offset 0x57b
+	{value: 0x0013, lo: 0x80, hi: 0x95},
+	{value: 0x0012, lo: 0x96, hi: 0xaf},
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0x10e, offset 0x57e
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	{value: 0x0012, lo: 0x8a, hi: 0xa5},
+	{value: 0x0013, lo: 0xa8, hi: 0xbf},
+	// Block 0x10f, offset 0x581
+	{value: 0x0013, lo: 0x80, hi: 0x80},
+	{value: 0x0012, lo: 0x82, hi: 0x9a},
+	{value: 0x0012, lo: 0x9c, hi: 0xa1},
+	{value: 0x0013, lo: 0xa2, hi: 0xba},
+	{value: 0x0012, lo: 0xbc, hi: 0xbf},
+	// Block 0x110, offset 0x586
+	{value: 0x0012, lo: 0x80, hi: 0x94},
+	{value: 0x0012, lo: 0x96, hi: 0x9b},
+	{value: 0x0013, lo: 0x9c, hi: 0xb4},
+	{value: 0x0012, lo: 0xb6, hi: 0xbf},
+	// Block 0x111, offset 0x58a
+	{value: 0x0012, lo: 0x80, hi: 0x8e},
+	{value: 0x0012, lo: 0x90, hi: 0x95},
+	{value: 0x0013, lo: 0x96, hi: 0xae},
+	{value: 0x0012, lo: 0xb0, hi: 0xbf},
+	// Block 0x112, offset 0x58e
+	{value: 0x0012, lo: 0x80, hi: 0x88},
+	{value: 0x0012, lo: 0x8a, hi: 0x8f},
+	{value: 0x0013, lo: 0x90, hi: 0xa8},
+	{value: 0x0012, lo: 0xaa, hi: 0xbf},
+	// Block 0x113, offset 0x592
+	{value: 0x0012, lo: 0x80, hi: 0x82},
+	{value: 0x0012, lo: 0x84, hi: 0x89},
+	{value: 0x0017, lo: 0x8a, hi: 0x8b},
+	{value: 0x0010, lo: 0x8e, hi: 0xbf},
+	// Block 0x114, offset 0x596
+	{value: 0x0014, lo: 0x80, hi: 0xb6},
+	{value: 0x0014, lo: 0xbb, hi: 0xbf},
+	// Block 0x115, offset 0x598
+	{value: 0x0014, lo: 0x80, hi: 0xac},
+	{value: 0x0014, lo: 0xb5, hi: 0xb5},
+	// Block 0x116, offset 0x59a
+	{value: 0x0014, lo: 0x84, hi: 0x84},
+	{value: 0x0014, lo: 0x9b, hi: 0x9f},
+	{value: 0x0014, lo: 0xa1, hi: 0xaf},
+	// Block 0x117, offset 0x59d
+	{value: 0x0024, lo: 0x80, hi: 0x86},
+	{value: 0x0024, lo: 0x88, hi: 0x98},
+	{value: 0x0024, lo: 0x9b, hi: 0xa1},
+	{value: 0x0024, lo: 0xa3, hi: 0xa4},
+	{value: 0x0024, lo: 0xa6, hi: 0xaa},
+	// Block 0x118, offset 0x5a2
+	{value: 0x0010, lo: 0x80, hi: 0xac},
+	{value: 0x0024, lo: 0xb0, hi: 0xb6},
+	{value: 0x0014, lo: 0xb7, hi: 0xbd},
+	// Block 0x119, offset 0x5a5
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x8e, hi: 0x8e},
+	// Block 0x11a, offset 0x5a7
+	{value: 0x0010, lo: 0x80, hi: 0xab},
+	{value: 0x0024, lo: 0xac, hi: 0xaf},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x11b, offset 0x5aa
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0034, lo: 0x90, hi: 0x96},
+	// Block 0x11c, offset 0x5ac
+	{value: 0xbc52, lo: 0x80, hi: 0x81},
+	{value: 0xbf52, lo: 0x82, hi: 0x83},
+	{value: 0x0024, lo: 0x84, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0014, lo: 0x8b, hi: 0x8b},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x11d, offset 0x5b2
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x9f},
+	{value: 0x0010, lo: 0xa1, hi: 0xa2},
+	{value: 0x0010, lo: 0xa4, hi: 0xa4},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0010, lo: 0xa9, hi: 0xb2},
+	{value: 0x0010, lo: 0xb4, hi: 0xb7},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	// Block 0x11e, offset 0x5bb
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x8b, hi: 0x9b},
+	{value: 0x0010, lo: 0xa1, hi: 0xa3},
+	{value: 0x0010, lo: 0xa5, hi: 0xa9},
+	{value: 0x0010, lo: 0xab, hi: 0xbb},
+	// Block 0x11f, offset 0x5c0
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0x120, offset 0x5c1
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	{value: 0x0013, lo: 0x90, hi: 0xa9},
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0x121, offset 0x5c4
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	// Block 0x122, offset 0x5c5
+	{value: 0x0014, lo: 0xbb, hi: 0xbf},
+	// Block 0x123, offset 0x5c6
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x124, offset 0x5c7
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0014, lo: 0xa0, hi: 0xbf},
+	// Block 0x125, offset 0x5c9
+	{value: 0x0014, lo: 0x80, hi: 0xbf},
+	// Block 0x126, offset 0x5ca
+	{value: 0x0014, lo: 0x80, hi: 0xaf},
+}
+
+// Total table size 15212 bytes (14KiB); checksum: 1EB13752
diff --git a/vendor/golang.org/x/text/cases/tables15.0.0.go b/vendor/golang.org/x/text/cases/tables15.0.0.go
new file mode 100644
index 00000000..aee0f310
--- /dev/null
+++ b/vendor/golang.org/x/text/cases/tables15.0.0.go
@@ -0,0 +1,2527 @@
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
+
+//go:build go1.21
+
+package cases
+
+// UnicodeVersion is the Unicode version from which the tables in this package are derived.
+const UnicodeVersion = "15.0.0"
+
+var xorData string = "" + // Size: 213 bytes
+	"\x00\x06\x07\x00\x01?\x00\x0f\x03\x00\x0f\x12\x00\x0f\x1f\x00\x0f\x1d" +
+	"\x00\x01\x13\x00\x0f\x16\x00\x0f\x0b\x00\x0f3\x00\x0f7\x00\x01#\x00\x0f?" +
+	"\x00\x0e'\x00\x0f/\x00\x0e>\x00\x0f*\x00\x0c&\x00\x0c*\x00\x0c;\x00\x0c9" +
+	"\x00\x0c%\x00\x01\x08\x00\x03\x0d\x00\x03\x09\x00\x02\x06\x00\x02\x02" +
+	"\x00\x02\x0c\x00\x01\x00\x00\x01\x03\x00\x01\x01\x00\x01 \x00\x01\x0c" +
+	"\x00\x01\x10\x00\x03\x10\x00\x036 \x00\x037 \x00\x0b#\x10\x00\x0b 0\x00" +
+	"\x0b!\x10\x00\x0b!0\x001\x00\x00\x0b(\x04\x00\x03\x04\x1e\x00\x0b)\x08" +
+	"\x00\x03\x0a\x00\x02:\x00\x02>\x00\x02,\x00\x02\x00\x00\x02\x10\x00\x01<" +
+	"\x00\x01&\x00\x01*\x00\x01.\x00\x010\x003 \x00\x01\x18\x00\x01(\x00\x03'" +
+	"\x00\x03)\x00\x03+\x00\x03/\x00\x03\x19\x00\x03\x1b\x00\x03\x1f\x00\x01" +
+	"\x1e\x00\x01\x22"
+
+var exceptions string = "" + // Size: 2450 bytes
+	"\x00\x12\x12μΜΜ\x12\x12ssSSSs\x13\x18i̇i̇\x10\x09II\x13\x1bʼnʼNʼN\x11" +
+	"\x09sSS\x12\x12dždžDž\x12\x12dždžDŽ\x10\x12DŽDž\x12\x12ljljLj\x12\x12ljljLJ\x10\x12LJLj" +
+	"\x12\x12njnjNj\x12\x12njnjNJ\x10\x12NJNj\x13\x1bǰJ̌J̌\x12\x12dzdzDz\x12\x12dzdzDZ\x10" +
+	"\x12DZDz\x13\x18ⱥⱥ\x13\x18ⱦⱦ\x10\x1bⱾⱾ\x10\x1bⱿⱿ\x10\x1bⱯⱯ\x10\x1bⱭⱭ\x10" +
+	"\x1bⱰⱰ\x10\x1bꞫꞫ\x10\x1bꞬꞬ\x10\x1bꞍꞍ\x10\x1bꞪꞪ\x10\x1bꞮꞮ\x10\x1bⱢⱢ\x10" +
+	"\x1bꞭꞭ\x10\x1bⱮⱮ\x10\x1bⱤⱤ\x10\x1bꟅꟅ\x10\x1bꞱꞱ\x10\x1bꞲꞲ\x10\x1bꞰꞰ2\x12ι" +
+	"ΙΙ\x166ΐΪ́Ϊ́\x166ΰΫ́Ϋ́\x12\x12σΣΣ\x12\x12βΒΒ\x12\x12θΘΘ\x12\x12" +
+	"φΦΦ\x12\x12πΠΠ\x12\x12κΚΚ\x12\x12ρΡΡ\x12\x12εΕΕ\x14$եւԵՒԵւ\x10\x1bᲐა" +
+	"\x10\x1bᲑბ\x10\x1bᲒგ\x10\x1bᲓდ\x10\x1bᲔე\x10\x1bᲕვ\x10\x1bᲖზ\x10\x1bᲗთ" +
+	"\x10\x1bᲘი\x10\x1bᲙკ\x10\x1bᲚლ\x10\x1bᲛმ\x10\x1bᲜნ\x10\x1bᲝო\x10\x1bᲞპ" +
+	"\x10\x1bᲟჟ\x10\x1bᲠრ\x10\x1bᲡს\x10\x1bᲢტ\x10\x1bᲣუ\x10\x1bᲤფ\x10\x1bᲥქ" +
+	"\x10\x1bᲦღ\x10\x1bᲧყ\x10\x1bᲨშ\x10\x1bᲩჩ\x10\x1bᲪც\x10\x1bᲫძ\x10\x1bᲬწ" +
+	"\x10\x1bᲭჭ\x10\x1bᲮხ\x10\x1bᲯჯ\x10\x1bᲰჰ\x10\x1bᲱჱ\x10\x1bᲲჲ\x10\x1bᲳჳ" +
+	"\x10\x1bᲴჴ\x10\x1bᲵჵ\x10\x1bᲶჶ\x10\x1bᲷჷ\x10\x1bᲸჸ\x10\x1bᲹჹ\x10\x1bᲺჺ" +
+	"\x10\x1bᲽჽ\x10\x1bᲾჾ\x10\x1bᲿჿ\x12\x12вВВ\x12\x12дДД\x12\x12оОО\x12\x12с" +
+	"СС\x12\x12тТТ\x12\x12тТТ\x12\x12ъЪЪ\x12\x12ѣѢѢ\x13\x1bꙋꙊꙊ\x13\x1bẖH̱H̱" +
+	"\x13\x1bẗT̈T̈\x13\x1bẘW̊W̊\x13\x1bẙY̊Y̊\x13\x1baʾAʾAʾ\x13\x1bṡṠṠ\x12" +
+	"\x10ssß\x14$ὐΥ̓Υ̓\x166ὒΥ̓̀Υ̓̀\x166ὔΥ̓́Υ̓́\x166ὖΥ̓͂Υ̓͂\x15+ἀιἈΙᾈ" +
+	"\x15+ἁιἉΙᾉ\x15+ἂιἊΙᾊ\x15+ἃιἋΙᾋ\x15+ἄιἌΙᾌ\x15+ἅιἍΙᾍ\x15+ἆιἎΙᾎ\x15+ἇιἏΙᾏ" +
+	"\x15\x1dἀιᾀἈΙ\x15\x1dἁιᾁἉΙ\x15\x1dἂιᾂἊΙ\x15\x1dἃιᾃἋΙ\x15\x1dἄιᾄἌΙ\x15" +
+	"\x1dἅιᾅἍΙ\x15\x1dἆιᾆἎΙ\x15\x1dἇιᾇἏΙ\x15+ἠιἨΙᾘ\x15+ἡιἩΙᾙ\x15+ἢιἪΙᾚ\x15+ἣι" +
+	"ἫΙᾛ\x15+ἤιἬΙᾜ\x15+ἥιἭΙᾝ\x15+ἦιἮΙᾞ\x15+ἧιἯΙᾟ\x15\x1dἠιᾐἨΙ\x15\x1dἡιᾑἩΙ" +
+	"\x15\x1dἢιᾒἪΙ\x15\x1dἣιᾓἫΙ\x15\x1dἤιᾔἬΙ\x15\x1dἥιᾕἭΙ\x15\x1dἦιᾖἮΙ\x15" +
+	"\x1dἧιᾗἯΙ\x15+ὠιὨΙᾨ\x15+ὡιὩΙᾩ\x15+ὢιὪΙᾪ\x15+ὣιὫΙᾫ\x15+ὤιὬΙᾬ\x15+ὥιὭΙᾭ" +
+	"\x15+ὦιὮΙᾮ\x15+ὧιὯΙᾯ\x15\x1dὠιᾠὨΙ\x15\x1dὡιᾡὩΙ\x15\x1dὢιᾢὪΙ\x15\x1dὣιᾣὫΙ" +
+	"\x15\x1dὤιᾤὬΙ\x15\x1dὥιᾥὭΙ\x15\x1dὦιᾦὮΙ\x15\x1dὧιᾧὯΙ\x15-ὰιᾺΙᾺͅ\x14#αιΑΙ" +
+	"ᾼ\x14$άιΆΙΆͅ\x14$ᾶΑ͂Α͂\x166ᾶιΑ͂Ιᾼ͂\x14\x1cαιᾳΑΙ\x12\x12ιΙΙ\x15-ὴιῊΙ" +
+	"Ὴͅ\x14#ηιΗΙῌ\x14$ήιΉΙΉͅ\x14$ῆΗ͂Η͂\x166ῆιΗ͂Ιῌ͂\x14\x1cηιῃΗΙ\x166ῒΙ" +
+	"̈̀Ϊ̀\x166ΐΪ́Ϊ́\x14$ῖΙ͂Ι͂\x166ῗΪ͂Ϊ͂\x166ῢΫ̀Ϋ̀\x166ΰΫ́Ϋ" +
+	"́\x14$ῤΡ̓Ρ̓\x14$ῦΥ͂Υ͂\x166ῧΫ͂Ϋ͂\x15-ὼιῺΙῺͅ\x14#ωιΩΙῼ\x14$ώιΏΙΏͅ" +
+	"\x14$ῶΩ͂Ω͂\x166ῶιΩ͂Ιῼ͂\x14\x1cωιῳΩΙ\x12\x10ωω\x11\x08kk\x12\x10åå\x12" +
+	"\x10ɫɫ\x12\x10ɽɽ\x10\x12ȺȺ\x10\x12ȾȾ\x12\x10ɑɑ\x12\x10ɱɱ\x12\x10ɐɐ\x12" +
+	"\x10ɒɒ\x12\x10ȿȿ\x12\x10ɀɀ\x12\x10ɥɥ\x12\x10ɦɦ\x12\x10ɜɜ\x12\x10ɡɡ\x12" +
+	"\x10ɬɬ\x12\x10ɪɪ\x12\x10ʞʞ\x12\x10ʇʇ\x12\x10ʝʝ\x12\x10ʂʂ\x12\x12ffFFFf" +
+	"\x12\x12fiFIFi\x12\x12flFLFl\x13\x1bffiFFIFfi\x13\x1bfflFFLFfl\x12\x12st" +
+	"STSt\x12\x12stSTSt\x14$մնՄՆՄն\x14$մեՄԵՄե\x14$միՄԻՄի\x14$վնՎՆՎն\x14$մխՄԽՄ" +
+	"խ"
+
+// lookup returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *caseTrie) lookup(s []byte) (v uint16, sz int) {
+	c0 := s[0]
+	switch {
+	case c0 < 0x80: // is ASCII
+		return caseValues[c0], 1
+	case c0 < 0xC2:
+		return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+	case c0 < 0xE0: // 2-byte UTF-8
+		if len(s) < 2 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c1), 2
+	case c0 < 0xF0: // 3-byte UTF-8
+		if len(s) < 3 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c2), 3
+	case c0 < 0xF8: // 4-byte UTF-8
+		if len(s) < 4 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		o = uint32(i)<<6 + uint32(c2)
+		i = caseIndex[o]
+		c3 := s[3]
+		if c3 < 0x80 || 0xC0 <= c3 {
+			return 0, 3 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c3), 4
+	}
+	// Illegal rune
+	return 0, 1
+}
+
+// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *caseTrie) lookupUnsafe(s []byte) uint16 {
+	c0 := s[0]
+	if c0 < 0x80 { // is ASCII
+		return caseValues[c0]
+	}
+	i := caseIndex[c0]
+	if c0 < 0xE0 { // 2-byte UTF-8
+		return t.lookupValue(uint32(i), s[1])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[1])]
+	if c0 < 0xF0 { // 3-byte UTF-8
+		return t.lookupValue(uint32(i), s[2])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[2])]
+	if c0 < 0xF8 { // 4-byte UTF-8
+		return t.lookupValue(uint32(i), s[3])
+	}
+	return 0
+}
+
+// lookupString returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *caseTrie) lookupString(s string) (v uint16, sz int) {
+	c0 := s[0]
+	switch {
+	case c0 < 0x80: // is ASCII
+		return caseValues[c0], 1
+	case c0 < 0xC2:
+		return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+	case c0 < 0xE0: // 2-byte UTF-8
+		if len(s) < 2 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c1), 2
+	case c0 < 0xF0: // 3-byte UTF-8
+		if len(s) < 3 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c2), 3
+	case c0 < 0xF8: // 4-byte UTF-8
+		if len(s) < 4 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		o = uint32(i)<<6 + uint32(c2)
+		i = caseIndex[o]
+		c3 := s[3]
+		if c3 < 0x80 || 0xC0 <= c3 {
+			return 0, 3 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c3), 4
+	}
+	// Illegal rune
+	return 0, 1
+}
+
+// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *caseTrie) lookupStringUnsafe(s string) uint16 {
+	c0 := s[0]
+	if c0 < 0x80 { // is ASCII
+		return caseValues[c0]
+	}
+	i := caseIndex[c0]
+	if c0 < 0xE0 { // 2-byte UTF-8
+		return t.lookupValue(uint32(i), s[1])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[1])]
+	if c0 < 0xF0 { // 3-byte UTF-8
+		return t.lookupValue(uint32(i), s[2])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[2])]
+	if c0 < 0xF8 { // 4-byte UTF-8
+		return t.lookupValue(uint32(i), s[3])
+	}
+	return 0
+}
+
+// caseTrie. Total size: 13398 bytes (13.08 KiB). Checksum: 544af6e6b1b70931.
+type caseTrie struct{}
+
+func newCaseTrie(i int) *caseTrie {
+	return &caseTrie{}
+}
+
+// lookupValue determines the type of block n and looks up the value for b.
+func (t *caseTrie) lookupValue(n uint32, b byte) uint16 {
+	switch {
+	case n < 22:
+		return uint16(caseValues[n<<6+uint32(b)])
+	default:
+		n -= 22
+		return uint16(sparse.lookup(n, b))
+	}
+}
+
+// caseValues: 24 blocks, 1536 entries, 3072 bytes
+// The third block is the zero block.
+var caseValues = [1536]uint16{
+	// Block 0x0, offset 0x0
+	0x27: 0x0054,
+	0x2e: 0x0054,
+	0x30: 0x0010, 0x31: 0x0010, 0x32: 0x0010, 0x33: 0x0010, 0x34: 0x0010, 0x35: 0x0010,
+	0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0054,
+	// Block 0x1, offset 0x40
+	0x41: 0x2013, 0x42: 0x2013, 0x43: 0x2013, 0x44: 0x2013, 0x45: 0x2013,
+	0x46: 0x2013, 0x47: 0x2013, 0x48: 0x2013, 0x49: 0x2013, 0x4a: 0x2013, 0x4b: 0x2013,
+	0x4c: 0x2013, 0x4d: 0x2013, 0x4e: 0x2013, 0x4f: 0x2013, 0x50: 0x2013, 0x51: 0x2013,
+	0x52: 0x2013, 0x53: 0x2013, 0x54: 0x2013, 0x55: 0x2013, 0x56: 0x2013, 0x57: 0x2013,
+	0x58: 0x2013, 0x59: 0x2013, 0x5a: 0x2013,
+	0x5e: 0x0004, 0x5f: 0x0010, 0x60: 0x0004, 0x61: 0x2012, 0x62: 0x2012, 0x63: 0x2012,
+	0x64: 0x2012, 0x65: 0x2012, 0x66: 0x2012, 0x67: 0x2012, 0x68: 0x2012, 0x69: 0x2012,
+	0x6a: 0x2012, 0x6b: 0x2012, 0x6c: 0x2012, 0x6d: 0x2012, 0x6e: 0x2012, 0x6f: 0x2012,
+	0x70: 0x2012, 0x71: 0x2012, 0x72: 0x2012, 0x73: 0x2012, 0x74: 0x2012, 0x75: 0x2012,
+	0x76: 0x2012, 0x77: 0x2012, 0x78: 0x2012, 0x79: 0x2012, 0x7a: 0x2012,
+	// Block 0x2, offset 0x80
+	// Block 0x3, offset 0xc0
+	0xc0: 0x0852, 0xc1: 0x0b53, 0xc2: 0x0113, 0xc3: 0x0112, 0xc4: 0x0113, 0xc5: 0x0112,
+	0xc6: 0x0b53, 0xc7: 0x0f13, 0xc8: 0x0f12, 0xc9: 0x0e53, 0xca: 0x1153, 0xcb: 0x0713,
+	0xcc: 0x0712, 0xcd: 0x0012, 0xce: 0x1453, 0xcf: 0x1753, 0xd0: 0x1a53, 0xd1: 0x0313,
+	0xd2: 0x0312, 0xd3: 0x1d53, 0xd4: 0x2053, 0xd5: 0x2352, 0xd6: 0x2653, 0xd7: 0x2653,
+	0xd8: 0x0113, 0xd9: 0x0112, 0xda: 0x2952, 0xdb: 0x0012, 0xdc: 0x1d53, 0xdd: 0x2c53,
+	0xde: 0x2f52, 0xdf: 0x3253, 0xe0: 0x0113, 0xe1: 0x0112, 0xe2: 0x0113, 0xe3: 0x0112,
+	0xe4: 0x0113, 0xe5: 0x0112, 0xe6: 0x3553, 0xe7: 0x0f13, 0xe8: 0x0f12, 0xe9: 0x3853,
+	0xea: 0x0012, 0xeb: 0x0012, 0xec: 0x0113, 0xed: 0x0112, 0xee: 0x3553, 0xef: 0x1f13,
+	0xf0: 0x1f12, 0xf1: 0x3b53, 0xf2: 0x3e53, 0xf3: 0x0713, 0xf4: 0x0712, 0xf5: 0x0313,
+	0xf6: 0x0312, 0xf7: 0x4153, 0xf8: 0x0113, 0xf9: 0x0112, 0xfa: 0x0012, 0xfb: 0x0010,
+	0xfc: 0x0113, 0xfd: 0x0112, 0xfe: 0x0012, 0xff: 0x4452,
+	// Block 0x4, offset 0x100
+	0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x02db, 0x105: 0x0359,
+	0x106: 0x03da, 0x107: 0x043b, 0x108: 0x04b9, 0x109: 0x053a, 0x10a: 0x059b, 0x10b: 0x0619,
+	0x10c: 0x069a, 0x10d: 0x0313, 0x10e: 0x0312, 0x10f: 0x1f13, 0x110: 0x1f12, 0x111: 0x0313,
+	0x112: 0x0312, 0x113: 0x0713, 0x114: 0x0712, 0x115: 0x0313, 0x116: 0x0312, 0x117: 0x0f13,
+	0x118: 0x0f12, 0x119: 0x0313, 0x11a: 0x0312, 0x11b: 0x0713, 0x11c: 0x0712, 0x11d: 0x1452,
+	0x11e: 0x0113, 0x11f: 0x0112, 0x120: 0x0113, 0x121: 0x0112, 0x122: 0x0113, 0x123: 0x0112,
+	0x124: 0x0113, 0x125: 0x0112, 0x126: 0x0113, 0x127: 0x0112, 0x128: 0x0113, 0x129: 0x0112,
+	0x12a: 0x0113, 0x12b: 0x0112, 0x12c: 0x0113, 0x12d: 0x0112, 0x12e: 0x0113, 0x12f: 0x0112,
+	0x130: 0x06fa, 0x131: 0x07ab, 0x132: 0x0829, 0x133: 0x08aa, 0x134: 0x0113, 0x135: 0x0112,
+	0x136: 0x2353, 0x137: 0x4453, 0x138: 0x0113, 0x139: 0x0112, 0x13a: 0x0113, 0x13b: 0x0112,
+	0x13c: 0x0113, 0x13d: 0x0112, 0x13e: 0x0113, 0x13f: 0x0112,
+	// Block 0x5, offset 0x140
+	0x140: 0x0a8a, 0x141: 0x0313, 0x142: 0x0312, 0x143: 0x0853, 0x144: 0x4753, 0x145: 0x4a53,
+	0x146: 0x0113, 0x147: 0x0112, 0x148: 0x0113, 0x149: 0x0112, 0x14a: 0x0113, 0x14b: 0x0112,
+	0x14c: 0x0113, 0x14d: 0x0112, 0x14e: 0x0113, 0x14f: 0x0112, 0x150: 0x0b0a, 0x151: 0x0b8a,
+	0x152: 0x0c0a, 0x153: 0x0b52, 0x154: 0x0b52, 0x155: 0x0012, 0x156: 0x0e52, 0x157: 0x1152,
+	0x158: 0x0012, 0x159: 0x1752, 0x15a: 0x0012, 0x15b: 0x1a52, 0x15c: 0x0c8a, 0x15d: 0x0012,
+	0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1d52, 0x161: 0x0d0a, 0x162: 0x0012, 0x163: 0x2052,
+	0x164: 0x0012, 0x165: 0x0d8a, 0x166: 0x0e0a, 0x167: 0x0012, 0x168: 0x2652, 0x169: 0x2652,
+	0x16a: 0x0e8a, 0x16b: 0x0f0a, 0x16c: 0x0f8a, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1d52,
+	0x170: 0x0012, 0x171: 0x100a, 0x172: 0x2c52, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x3252,
+	0x176: 0x0012, 0x177: 0x0012, 0x178: 0x0012, 0x179: 0x0012, 0x17a: 0x0012, 0x17b: 0x0012,
+	0x17c: 0x0012, 0x17d: 0x108a, 0x17e: 0x0012, 0x17f: 0x0012,
+	// Block 0x6, offset 0x180
+	0x180: 0x3552, 0x181: 0x0012, 0x182: 0x110a, 0x183: 0x3852, 0x184: 0x0012, 0x185: 0x0012,
+	0x186: 0x0012, 0x187: 0x118a, 0x188: 0x3552, 0x189: 0x4752, 0x18a: 0x3b52, 0x18b: 0x3e52,
+	0x18c: 0x4a52, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012,
+	0x192: 0x4152, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012,
+	0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x120a,
+	0x19e: 0x128a, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012,
+	0x1a4: 0x0012, 0x1a5: 0x0012, 0x1a6: 0x0012, 0x1a7: 0x0012, 0x1a8: 0x0012, 0x1a9: 0x0012,
+	0x1aa: 0x0012, 0x1ab: 0x0012, 0x1ac: 0x0012, 0x1ad: 0x0012, 0x1ae: 0x0012, 0x1af: 0x0012,
+	0x1b0: 0x0015, 0x1b1: 0x0015, 0x1b2: 0x0015, 0x1b3: 0x0015, 0x1b4: 0x0015, 0x1b5: 0x0015,
+	0x1b6: 0x0015, 0x1b7: 0x0015, 0x1b8: 0x0015, 0x1b9: 0x0014, 0x1ba: 0x0014, 0x1bb: 0x0014,
+	0x1bc: 0x0014, 0x1bd: 0x0014, 0x1be: 0x0014, 0x1bf: 0x0014,
+	// Block 0x7, offset 0x1c0
+	0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x130d,
+	0x1c6: 0x0024, 0x1c7: 0x0034, 0x1c8: 0x0034, 0x1c9: 0x0034, 0x1ca: 0x0024, 0x1cb: 0x0024,
+	0x1cc: 0x0024, 0x1cd: 0x0034, 0x1ce: 0x0034, 0x1cf: 0x0014, 0x1d0: 0x0024, 0x1d1: 0x0024,
+	0x1d2: 0x0024, 0x1d3: 0x0034, 0x1d4: 0x0034, 0x1d5: 0x0034, 0x1d6: 0x0034, 0x1d7: 0x0024,
+	0x1d8: 0x0034, 0x1d9: 0x0034, 0x1da: 0x0034, 0x1db: 0x0024, 0x1dc: 0x0034, 0x1dd: 0x0034,
+	0x1de: 0x0034, 0x1df: 0x0034, 0x1e0: 0x0034, 0x1e1: 0x0034, 0x1e2: 0x0034, 0x1e3: 0x0024,
+	0x1e4: 0x0024, 0x1e5: 0x0024, 0x1e6: 0x0024, 0x1e7: 0x0024, 0x1e8: 0x0024, 0x1e9: 0x0024,
+	0x1ea: 0x0024, 0x1eb: 0x0024, 0x1ec: 0x0024, 0x1ed: 0x0024, 0x1ee: 0x0024, 0x1ef: 0x0024,
+	0x1f0: 0x0113, 0x1f1: 0x0112, 0x1f2: 0x0113, 0x1f3: 0x0112, 0x1f4: 0x0014, 0x1f5: 0x0004,
+	0x1f6: 0x0113, 0x1f7: 0x0112, 0x1fa: 0x0015, 0x1fb: 0x4d52,
+	0x1fc: 0x5052, 0x1fd: 0x5052, 0x1ff: 0x5353,
+	// Block 0x8, offset 0x200
+	0x204: 0x0004, 0x205: 0x0004,
+	0x206: 0x2a13, 0x207: 0x0054, 0x208: 0x2513, 0x209: 0x2713, 0x20a: 0x2513,
+	0x20c: 0x5653, 0x20e: 0x5953, 0x20f: 0x5c53, 0x210: 0x138a, 0x211: 0x2013,
+	0x212: 0x2013, 0x213: 0x2013, 0x214: 0x2013, 0x215: 0x2013, 0x216: 0x2013, 0x217: 0x2013,
+	0x218: 0x2013, 0x219: 0x2013, 0x21a: 0x2013, 0x21b: 0x2013, 0x21c: 0x2013, 0x21d: 0x2013,
+	0x21e: 0x2013, 0x21f: 0x2013, 0x220: 0x5f53, 0x221: 0x5f53, 0x223: 0x5f53,
+	0x224: 0x5f53, 0x225: 0x5f53, 0x226: 0x5f53, 0x227: 0x5f53, 0x228: 0x5f53, 0x229: 0x5f53,
+	0x22a: 0x5f53, 0x22b: 0x5f53, 0x22c: 0x2a12, 0x22d: 0x2512, 0x22e: 0x2712, 0x22f: 0x2512,
+	0x230: 0x14ca, 0x231: 0x2012, 0x232: 0x2012, 0x233: 0x2012, 0x234: 0x2012, 0x235: 0x2012,
+	0x236: 0x2012, 0x237: 0x2012, 0x238: 0x2012, 0x239: 0x2012, 0x23a: 0x2012, 0x23b: 0x2012,
+	0x23c: 0x2012, 0x23d: 0x2012, 0x23e: 0x2012, 0x23f: 0x2012,
+	// Block 0x9, offset 0x240
+	0x240: 0x5f52, 0x241: 0x5f52, 0x242: 0x160a, 0x243: 0x5f52, 0x244: 0x5f52, 0x245: 0x5f52,
+	0x246: 0x5f52, 0x247: 0x5f52, 0x248: 0x5f52, 0x249: 0x5f52, 0x24a: 0x5f52, 0x24b: 0x5f52,
+	0x24c: 0x5652, 0x24d: 0x5952, 0x24e: 0x5c52, 0x24f: 0x1813, 0x250: 0x168a, 0x251: 0x170a,
+	0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x178a, 0x256: 0x180a, 0x257: 0x1812,
+	0x258: 0x0113, 0x259: 0x0112, 0x25a: 0x0113, 0x25b: 0x0112, 0x25c: 0x0113, 0x25d: 0x0112,
+	0x25e: 0x0113, 0x25f: 0x0112, 0x260: 0x0113, 0x261: 0x0112, 0x262: 0x0113, 0x263: 0x0112,
+	0x264: 0x0113, 0x265: 0x0112, 0x266: 0x0113, 0x267: 0x0112, 0x268: 0x0113, 0x269: 0x0112,
+	0x26a: 0x0113, 0x26b: 0x0112, 0x26c: 0x0113, 0x26d: 0x0112, 0x26e: 0x0113, 0x26f: 0x0112,
+	0x270: 0x188a, 0x271: 0x190a, 0x272: 0x0b12, 0x273: 0x5352, 0x274: 0x6253, 0x275: 0x198a,
+	0x277: 0x0f13, 0x278: 0x0f12, 0x279: 0x0b13, 0x27a: 0x0113, 0x27b: 0x0112,
+	0x27c: 0x0012, 0x27d: 0x4d53, 0x27e: 0x5053, 0x27f: 0x5053,
+	// Block 0xa, offset 0x280
+	0x280: 0x6852, 0x281: 0x6852, 0x282: 0x6852, 0x283: 0x6852, 0x284: 0x6852, 0x285: 0x6852,
+	0x286: 0x6852, 0x287: 0x1a0a, 0x288: 0x0012, 0x28a: 0x0010,
+	0x291: 0x0034,
+	0x292: 0x0024, 0x293: 0x0024, 0x294: 0x0024, 0x295: 0x0024, 0x296: 0x0034, 0x297: 0x0024,
+	0x298: 0x0024, 0x299: 0x0024, 0x29a: 0x0034, 0x29b: 0x0034, 0x29c: 0x0024, 0x29d: 0x0024,
+	0x29e: 0x0024, 0x29f: 0x0024, 0x2a0: 0x0024, 0x2a1: 0x0024, 0x2a2: 0x0034, 0x2a3: 0x0034,
+	0x2a4: 0x0034, 0x2a5: 0x0034, 0x2a6: 0x0034, 0x2a7: 0x0034, 0x2a8: 0x0024, 0x2a9: 0x0024,
+	0x2aa: 0x0034, 0x2ab: 0x0024, 0x2ac: 0x0024, 0x2ad: 0x0034, 0x2ae: 0x0034, 0x2af: 0x0024,
+	0x2b0: 0x0034, 0x2b1: 0x0034, 0x2b2: 0x0034, 0x2b3: 0x0034, 0x2b4: 0x0034, 0x2b5: 0x0034,
+	0x2b6: 0x0034, 0x2b7: 0x0034, 0x2b8: 0x0034, 0x2b9: 0x0034, 0x2ba: 0x0034, 0x2bb: 0x0034,
+	0x2bc: 0x0034, 0x2bd: 0x0034, 0x2bf: 0x0034,
+	// Block 0xb, offset 0x2c0
+	0x2c0: 0x0010, 0x2c1: 0x0010, 0x2c2: 0x0010, 0x2c3: 0x0010, 0x2c4: 0x0010, 0x2c5: 0x0010,
+	0x2c6: 0x0010, 0x2c7: 0x0010, 0x2c8: 0x0010, 0x2c9: 0x0014, 0x2ca: 0x0024, 0x2cb: 0x0024,
+	0x2cc: 0x0024, 0x2cd: 0x0024, 0x2ce: 0x0024, 0x2cf: 0x0034, 0x2d0: 0x0034, 0x2d1: 0x0034,
+	0x2d2: 0x0034, 0x2d3: 0x0034, 0x2d4: 0x0024, 0x2d5: 0x0024, 0x2d6: 0x0024, 0x2d7: 0x0024,
+	0x2d8: 0x0024, 0x2d9: 0x0024, 0x2da: 0x0024, 0x2db: 0x0024, 0x2dc: 0x0024, 0x2dd: 0x0024,
+	0x2de: 0x0024, 0x2df: 0x0024, 0x2e0: 0x0024, 0x2e1: 0x0024, 0x2e2: 0x0014, 0x2e3: 0x0034,
+	0x2e4: 0x0024, 0x2e5: 0x0024, 0x2e6: 0x0034, 0x2e7: 0x0024, 0x2e8: 0x0024, 0x2e9: 0x0034,
+	0x2ea: 0x0024, 0x2eb: 0x0024, 0x2ec: 0x0024, 0x2ed: 0x0034, 0x2ee: 0x0034, 0x2ef: 0x0034,
+	0x2f0: 0x0034, 0x2f1: 0x0034, 0x2f2: 0x0034, 0x2f3: 0x0024, 0x2f4: 0x0024, 0x2f5: 0x0024,
+	0x2f6: 0x0034, 0x2f7: 0x0024, 0x2f8: 0x0024, 0x2f9: 0x0034, 0x2fa: 0x0034, 0x2fb: 0x0024,
+	0x2fc: 0x0024, 0x2fd: 0x0024, 0x2fe: 0x0024, 0x2ff: 0x0024,
+	// Block 0xc, offset 0x300
+	0x300: 0x7053, 0x301: 0x7053, 0x302: 0x7053, 0x303: 0x7053, 0x304: 0x7053, 0x305: 0x7053,
+	0x307: 0x7053,
+	0x30d: 0x7053, 0x310: 0x1aea, 0x311: 0x1b6a,
+	0x312: 0x1bea, 0x313: 0x1c6a, 0x314: 0x1cea, 0x315: 0x1d6a, 0x316: 0x1dea, 0x317: 0x1e6a,
+	0x318: 0x1eea, 0x319: 0x1f6a, 0x31a: 0x1fea, 0x31b: 0x206a, 0x31c: 0x20ea, 0x31d: 0x216a,
+	0x31e: 0x21ea, 0x31f: 0x226a, 0x320: 0x22ea, 0x321: 0x236a, 0x322: 0x23ea, 0x323: 0x246a,
+	0x324: 0x24ea, 0x325: 0x256a, 0x326: 0x25ea, 0x327: 0x266a, 0x328: 0x26ea, 0x329: 0x276a,
+	0x32a: 0x27ea, 0x32b: 0x286a, 0x32c: 0x28ea, 0x32d: 0x296a, 0x32e: 0x29ea, 0x32f: 0x2a6a,
+	0x330: 0x2aea, 0x331: 0x2b6a, 0x332: 0x2bea, 0x333: 0x2c6a, 0x334: 0x2cea, 0x335: 0x2d6a,
+	0x336: 0x2dea, 0x337: 0x2e6a, 0x338: 0x2eea, 0x339: 0x2f6a, 0x33a: 0x2fea,
+	0x33c: 0x0015, 0x33d: 0x306a, 0x33e: 0x30ea, 0x33f: 0x316a,
+	// Block 0xd, offset 0x340
+	0x340: 0x0812, 0x341: 0x0812, 0x342: 0x0812, 0x343: 0x0812, 0x344: 0x0812, 0x345: 0x0812,
+	0x348: 0x0813, 0x349: 0x0813, 0x34a: 0x0813, 0x34b: 0x0813,
+	0x34c: 0x0813, 0x34d: 0x0813, 0x350: 0x3b1a, 0x351: 0x0812,
+	0x352: 0x3bfa, 0x353: 0x0812, 0x354: 0x3d3a, 0x355: 0x0812, 0x356: 0x3e7a, 0x357: 0x0812,
+	0x359: 0x0813, 0x35b: 0x0813, 0x35d: 0x0813,
+	0x35f: 0x0813, 0x360: 0x0812, 0x361: 0x0812, 0x362: 0x0812, 0x363: 0x0812,
+	0x364: 0x0812, 0x365: 0x0812, 0x366: 0x0812, 0x367: 0x0812, 0x368: 0x0813, 0x369: 0x0813,
+	0x36a: 0x0813, 0x36b: 0x0813, 0x36c: 0x0813, 0x36d: 0x0813, 0x36e: 0x0813, 0x36f: 0x0813,
+	0x370: 0x9252, 0x371: 0x9252, 0x372: 0x9552, 0x373: 0x9552, 0x374: 0x9852, 0x375: 0x9852,
+	0x376: 0x9b52, 0x377: 0x9b52, 0x378: 0x9e52, 0x379: 0x9e52, 0x37a: 0xa152, 0x37b: 0xa152,
+	0x37c: 0x4d52, 0x37d: 0x4d52,
+	// Block 0xe, offset 0x380
+	0x380: 0x3fba, 0x381: 0x40aa, 0x382: 0x419a, 0x383: 0x428a, 0x384: 0x437a, 0x385: 0x446a,
+	0x386: 0x455a, 0x387: 0x464a, 0x388: 0x4739, 0x389: 0x4829, 0x38a: 0x4919, 0x38b: 0x4a09,
+	0x38c: 0x4af9, 0x38d: 0x4be9, 0x38e: 0x4cd9, 0x38f: 0x4dc9, 0x390: 0x4eba, 0x391: 0x4faa,
+	0x392: 0x509a, 0x393: 0x518a, 0x394: 0x527a, 0x395: 0x536a, 0x396: 0x545a, 0x397: 0x554a,
+	0x398: 0x5639, 0x399: 0x5729, 0x39a: 0x5819, 0x39b: 0x5909, 0x39c: 0x59f9, 0x39d: 0x5ae9,
+	0x39e: 0x5bd9, 0x39f: 0x5cc9, 0x3a0: 0x5dba, 0x3a1: 0x5eaa, 0x3a2: 0x5f9a, 0x3a3: 0x608a,
+	0x3a4: 0x617a, 0x3a5: 0x626a, 0x3a6: 0x635a, 0x3a7: 0x644a, 0x3a8: 0x6539, 0x3a9: 0x6629,
+	0x3aa: 0x6719, 0x3ab: 0x6809, 0x3ac: 0x68f9, 0x3ad: 0x69e9, 0x3ae: 0x6ad9, 0x3af: 0x6bc9,
+	0x3b0: 0x0812, 0x3b1: 0x0812, 0x3b2: 0x6cba, 0x3b3: 0x6dca, 0x3b4: 0x6e9a,
+	0x3b6: 0x6f7a, 0x3b7: 0x705a, 0x3b8: 0x0813, 0x3b9: 0x0813, 0x3ba: 0x9253, 0x3bb: 0x9253,
+	0x3bc: 0x7199, 0x3bd: 0x0004, 0x3be: 0x726a, 0x3bf: 0x0004,
+	// Block 0xf, offset 0x3c0
+	0x3c0: 0x0004, 0x3c1: 0x0004, 0x3c2: 0x72ea, 0x3c3: 0x73fa, 0x3c4: 0x74ca,
+	0x3c6: 0x75aa, 0x3c7: 0x768a, 0x3c8: 0x9553, 0x3c9: 0x9553, 0x3ca: 0x9853, 0x3cb: 0x9853,
+	0x3cc: 0x77c9, 0x3cd: 0x0004, 0x3ce: 0x0004, 0x3cf: 0x0004, 0x3d0: 0x0812, 0x3d1: 0x0812,
+	0x3d2: 0x789a, 0x3d3: 0x79da, 0x3d6: 0x7b1a, 0x3d7: 0x7bfa,
+	0x3d8: 0x0813, 0x3d9: 0x0813, 0x3da: 0x9b53, 0x3db: 0x9b53, 0x3dd: 0x0004,
+	0x3de: 0x0004, 0x3df: 0x0004, 0x3e0: 0x0812, 0x3e1: 0x0812, 0x3e2: 0x7d3a, 0x3e3: 0x7e7a,
+	0x3e4: 0x7fba, 0x3e5: 0x0912, 0x3e6: 0x809a, 0x3e7: 0x817a, 0x3e8: 0x0813, 0x3e9: 0x0813,
+	0x3ea: 0xa153, 0x3eb: 0xa153, 0x3ec: 0x0913, 0x3ed: 0x0004, 0x3ee: 0x0004, 0x3ef: 0x0004,
+	0x3f2: 0x82ba, 0x3f3: 0x83ca, 0x3f4: 0x849a,
+	0x3f6: 0x857a, 0x3f7: 0x865a, 0x3f8: 0x9e53, 0x3f9: 0x9e53, 0x3fa: 0x4d53, 0x3fb: 0x4d53,
+	0x3fc: 0x8799, 0x3fd: 0x0004, 0x3fe: 0x0004,
+	// Block 0x10, offset 0x400
+	0x402: 0x0013,
+	0x407: 0x0013, 0x40a: 0x0012, 0x40b: 0x0013,
+	0x40c: 0x0013, 0x40d: 0x0013, 0x40e: 0x0012, 0x40f: 0x0012, 0x410: 0x0013, 0x411: 0x0013,
+	0x412: 0x0013, 0x413: 0x0012, 0x415: 0x0013,
+	0x419: 0x0013, 0x41a: 0x0013, 0x41b: 0x0013, 0x41c: 0x0013, 0x41d: 0x0013,
+	0x424: 0x0013, 0x426: 0x886b, 0x428: 0x0013,
+	0x42a: 0x88cb, 0x42b: 0x890b, 0x42c: 0x0013, 0x42d: 0x0013, 0x42f: 0x0012,
+	0x430: 0x0013, 0x431: 0x0013, 0x432: 0xa453, 0x433: 0x0013, 0x434: 0x0012, 0x435: 0x0010,
+	0x436: 0x0010, 0x437: 0x0010, 0x438: 0x0010, 0x439: 0x0012,
+	0x43c: 0x0012, 0x43d: 0x0012, 0x43e: 0x0013, 0x43f: 0x0013,
+	// Block 0x11, offset 0x440
+	0x440: 0x1a13, 0x441: 0x1a13, 0x442: 0x1e13, 0x443: 0x1e13, 0x444: 0x1a13, 0x445: 0x1a13,
+	0x446: 0x2613, 0x447: 0x2613, 0x448: 0x2a13, 0x449: 0x2a13, 0x44a: 0x2e13, 0x44b: 0x2e13,
+	0x44c: 0x2a13, 0x44d: 0x2a13, 0x44e: 0x2613, 0x44f: 0x2613, 0x450: 0xa752, 0x451: 0xa752,
+	0x452: 0xaa52, 0x453: 0xaa52, 0x454: 0xad52, 0x455: 0xad52, 0x456: 0xaa52, 0x457: 0xaa52,
+	0x458: 0xa752, 0x459: 0xa752, 0x45a: 0x1a12, 0x45b: 0x1a12, 0x45c: 0x1e12, 0x45d: 0x1e12,
+	0x45e: 0x1a12, 0x45f: 0x1a12, 0x460: 0x2612, 0x461: 0x2612, 0x462: 0x2a12, 0x463: 0x2a12,
+	0x464: 0x2e12, 0x465: 0x2e12, 0x466: 0x2a12, 0x467: 0x2a12, 0x468: 0x2612, 0x469: 0x2612,
+	// Block 0x12, offset 0x480
+	0x480: 0x6552, 0x481: 0x6552, 0x482: 0x6552, 0x483: 0x6552, 0x484: 0x6552, 0x485: 0x6552,
+	0x486: 0x6552, 0x487: 0x6552, 0x488: 0x6552, 0x489: 0x6552, 0x48a: 0x6552, 0x48b: 0x6552,
+	0x48c: 0x6552, 0x48d: 0x6552, 0x48e: 0x6552, 0x48f: 0x6552, 0x490: 0xb052, 0x491: 0xb052,
+	0x492: 0xb052, 0x493: 0xb052, 0x494: 0xb052, 0x495: 0xb052, 0x496: 0xb052, 0x497: 0xb052,
+	0x498: 0xb052, 0x499: 0xb052, 0x49a: 0xb052, 0x49b: 0xb052, 0x49c: 0xb052, 0x49d: 0xb052,
+	0x49e: 0xb052, 0x49f: 0xb052, 0x4a0: 0x0113, 0x4a1: 0x0112, 0x4a2: 0x896b, 0x4a3: 0x8b53,
+	0x4a4: 0x89cb, 0x4a5: 0x8a2a, 0x4a6: 0x8a8a, 0x4a7: 0x0f13, 0x4a8: 0x0f12, 0x4a9: 0x0313,
+	0x4aa: 0x0312, 0x4ab: 0x0713, 0x4ac: 0x0712, 0x4ad: 0x8aeb, 0x4ae: 0x8b4b, 0x4af: 0x8bab,
+	0x4b0: 0x8c0b, 0x4b1: 0x0012, 0x4b2: 0x0113, 0x4b3: 0x0112, 0x4b4: 0x0012, 0x4b5: 0x0313,
+	0x4b6: 0x0312, 0x4b7: 0x0012, 0x4b8: 0x0012, 0x4b9: 0x0012, 0x4ba: 0x0012, 0x4bb: 0x0012,
+	0x4bc: 0x0015, 0x4bd: 0x0015, 0x4be: 0x8c6b, 0x4bf: 0x8ccb,
+	// Block 0x13, offset 0x4c0
+	0x4c0: 0x0113, 0x4c1: 0x0112, 0x4c2: 0x0113, 0x4c3: 0x0112, 0x4c4: 0x0113, 0x4c5: 0x0112,
+	0x4c6: 0x0113, 0x4c7: 0x0112, 0x4c8: 0x0014, 0x4c9: 0x0014, 0x4ca: 0x0014, 0x4cb: 0x0713,
+	0x4cc: 0x0712, 0x4cd: 0x8d2b, 0x4ce: 0x0012, 0x4cf: 0x0010, 0x4d0: 0x0113, 0x4d1: 0x0112,
+	0x4d2: 0x0113, 0x4d3: 0x0112, 0x4d4: 0x6552, 0x4d5: 0x0012, 0x4d6: 0x0113, 0x4d7: 0x0112,
+	0x4d8: 0x0113, 0x4d9: 0x0112, 0x4da: 0x0113, 0x4db: 0x0112, 0x4dc: 0x0113, 0x4dd: 0x0112,
+	0x4de: 0x0113, 0x4df: 0x0112, 0x4e0: 0x0113, 0x4e1: 0x0112, 0x4e2: 0x0113, 0x4e3: 0x0112,
+	0x4e4: 0x0113, 0x4e5: 0x0112, 0x4e6: 0x0113, 0x4e7: 0x0112, 0x4e8: 0x0113, 0x4e9: 0x0112,
+	0x4ea: 0x8d8b, 0x4eb: 0x8deb, 0x4ec: 0x8e4b, 0x4ed: 0x8eab, 0x4ee: 0x8f0b, 0x4ef: 0x0012,
+	0x4f0: 0x8f6b, 0x4f1: 0x8fcb, 0x4f2: 0x902b, 0x4f3: 0xb353, 0x4f4: 0x0113, 0x4f5: 0x0112,
+	0x4f6: 0x0113, 0x4f7: 0x0112, 0x4f8: 0x0113, 0x4f9: 0x0112, 0x4fa: 0x0113, 0x4fb: 0x0112,
+	0x4fc: 0x0113, 0x4fd: 0x0112, 0x4fe: 0x0113, 0x4ff: 0x0112,
+	// Block 0x14, offset 0x500
+	0x500: 0x90ea, 0x501: 0x916a, 0x502: 0x91ea, 0x503: 0x926a, 0x504: 0x931a, 0x505: 0x93ca,
+	0x506: 0x944a,
+	0x513: 0x94ca, 0x514: 0x95aa, 0x515: 0x968a, 0x516: 0x976a, 0x517: 0x984a,
+	0x51d: 0x0010,
+	0x51e: 0x0034, 0x51f: 0x0010, 0x520: 0x0010, 0x521: 0x0010, 0x522: 0x0010, 0x523: 0x0010,
+	0x524: 0x0010, 0x525: 0x0010, 0x526: 0x0010, 0x527: 0x0010, 0x528: 0x0010,
+	0x52a: 0x0010, 0x52b: 0x0010, 0x52c: 0x0010, 0x52d: 0x0010, 0x52e: 0x0010, 0x52f: 0x0010,
+	0x530: 0x0010, 0x531: 0x0010, 0x532: 0x0010, 0x533: 0x0010, 0x534: 0x0010, 0x535: 0x0010,
+	0x536: 0x0010, 0x538: 0x0010, 0x539: 0x0010, 0x53a: 0x0010, 0x53b: 0x0010,
+	0x53c: 0x0010, 0x53e: 0x0010,
+	// Block 0x15, offset 0x540
+	0x540: 0x2713, 0x541: 0x2913, 0x542: 0x2b13, 0x543: 0x2913, 0x544: 0x2f13, 0x545: 0x2913,
+	0x546: 0x2b13, 0x547: 0x2913, 0x548: 0x2713, 0x549: 0x3913, 0x54a: 0x3b13,
+	0x54c: 0x3f13, 0x54d: 0x3913, 0x54e: 0x3b13, 0x54f: 0x3913, 0x550: 0x2713, 0x551: 0x2913,
+	0x552: 0x2b13, 0x554: 0x2f13, 0x555: 0x2913, 0x557: 0xbc52,
+	0x558: 0xbf52, 0x559: 0xc252, 0x55a: 0xbf52, 0x55b: 0xc552, 0x55c: 0xbf52, 0x55d: 0xc252,
+	0x55e: 0xbf52, 0x55f: 0xbc52, 0x560: 0xc852, 0x561: 0xcb52, 0x563: 0xce52,
+	0x564: 0xc852, 0x565: 0xcb52, 0x566: 0xc852, 0x567: 0x2712, 0x568: 0x2912, 0x569: 0x2b12,
+	0x56a: 0x2912, 0x56b: 0x2f12, 0x56c: 0x2912, 0x56d: 0x2b12, 0x56e: 0x2912, 0x56f: 0x2712,
+	0x570: 0x3912, 0x571: 0x3b12, 0x573: 0x3f12, 0x574: 0x3912, 0x575: 0x3b12,
+	0x576: 0x3912, 0x577: 0x2712, 0x578: 0x2912, 0x579: 0x2b12, 0x57b: 0x2f12,
+	0x57c: 0x2912,
+	// Block 0x16, offset 0x580
+	0x580: 0x2213, 0x581: 0x2213, 0x582: 0x2613, 0x583: 0x2613, 0x584: 0x2213, 0x585: 0x2213,
+	0x586: 0x2e13, 0x587: 0x2e13, 0x588: 0x2213, 0x589: 0x2213, 0x58a: 0x2613, 0x58b: 0x2613,
+	0x58c: 0x2213, 0x58d: 0x2213, 0x58e: 0x3e13, 0x58f: 0x3e13, 0x590: 0x2213, 0x591: 0x2213,
+	0x592: 0x2613, 0x593: 0x2613, 0x594: 0x2213, 0x595: 0x2213, 0x596: 0x2e13, 0x597: 0x2e13,
+	0x598: 0x2213, 0x599: 0x2213, 0x59a: 0x2613, 0x59b: 0x2613, 0x59c: 0x2213, 0x59d: 0x2213,
+	0x59e: 0xd153, 0x59f: 0xd153, 0x5a0: 0xd453, 0x5a1: 0xd453, 0x5a2: 0x2212, 0x5a3: 0x2212,
+	0x5a4: 0x2612, 0x5a5: 0x2612, 0x5a6: 0x2212, 0x5a7: 0x2212, 0x5a8: 0x2e12, 0x5a9: 0x2e12,
+	0x5aa: 0x2212, 0x5ab: 0x2212, 0x5ac: 0x2612, 0x5ad: 0x2612, 0x5ae: 0x2212, 0x5af: 0x2212,
+	0x5b0: 0x3e12, 0x5b1: 0x3e12, 0x5b2: 0x2212, 0x5b3: 0x2212, 0x5b4: 0x2612, 0x5b5: 0x2612,
+	0x5b6: 0x2212, 0x5b7: 0x2212, 0x5b8: 0x2e12, 0x5b9: 0x2e12, 0x5ba: 0x2212, 0x5bb: 0x2212,
+	0x5bc: 0x2612, 0x5bd: 0x2612, 0x5be: 0x2212, 0x5bf: 0x2212,
+	// Block 0x17, offset 0x5c0
+	0x5c2: 0x0010,
+	0x5c7: 0x0010, 0x5c9: 0x0010, 0x5cb: 0x0010,
+	0x5cd: 0x0010, 0x5ce: 0x0010, 0x5cf: 0x0010, 0x5d1: 0x0010,
+	0x5d2: 0x0010, 0x5d4: 0x0010, 0x5d7: 0x0010,
+	0x5d9: 0x0010, 0x5db: 0x0010, 0x5dd: 0x0010,
+	0x5df: 0x0010, 0x5e1: 0x0010, 0x5e2: 0x0010,
+	0x5e4: 0x0010, 0x5e7: 0x0010, 0x5e8: 0x0010, 0x5e9: 0x0010,
+	0x5ea: 0x0010, 0x5ec: 0x0010, 0x5ed: 0x0010, 0x5ee: 0x0010, 0x5ef: 0x0010,
+	0x5f0: 0x0010, 0x5f1: 0x0010, 0x5f2: 0x0010, 0x5f4: 0x0010, 0x5f5: 0x0010,
+	0x5f6: 0x0010, 0x5f7: 0x0010, 0x5f9: 0x0010, 0x5fa: 0x0010, 0x5fb: 0x0010,
+	0x5fc: 0x0010, 0x5fe: 0x0010,
+}
+
+// caseIndex: 27 blocks, 1728 entries, 3456 bytes
+// Block 0 is the zero block.
+var caseIndex = [1728]uint16{
+	// Block 0x0, offset 0x0
+	// Block 0x1, offset 0x40
+	// Block 0x2, offset 0x80
+	// Block 0x3, offset 0xc0
+	0xc2: 0x16, 0xc3: 0x17, 0xc4: 0x18, 0xc5: 0x19, 0xc6: 0x01, 0xc7: 0x02,
+	0xc8: 0x1a, 0xc9: 0x03, 0xca: 0x04, 0xcb: 0x1b, 0xcc: 0x1c, 0xcd: 0x05, 0xce: 0x06, 0xcf: 0x07,
+	0xd0: 0x1d, 0xd1: 0x1e, 0xd2: 0x1f, 0xd3: 0x20, 0xd4: 0x21, 0xd5: 0x22, 0xd6: 0x08, 0xd7: 0x23,
+	0xd8: 0x24, 0xd9: 0x25, 0xda: 0x26, 0xdb: 0x27, 0xdc: 0x28, 0xdd: 0x29, 0xde: 0x2a, 0xdf: 0x2b,
+	0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,
+	0xea: 0x06, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x08, 0xef: 0x09,
+	0xf0: 0x16, 0xf3: 0x18,
+	// Block 0x4, offset 0x100
+	0x120: 0x2c, 0x121: 0x2d, 0x122: 0x2e, 0x123: 0x09, 0x124: 0x2f, 0x125: 0x30, 0x126: 0x31, 0x127: 0x32,
+	0x128: 0x33, 0x129: 0x34, 0x12a: 0x35, 0x12b: 0x36, 0x12c: 0x37, 0x12d: 0x38, 0x12e: 0x39, 0x12f: 0x3a,
+	0x130: 0x3b, 0x131: 0x3c, 0x132: 0x3d, 0x133: 0x3e, 0x134: 0x3f, 0x135: 0x40, 0x136: 0x41, 0x137: 0x42,
+	0x138: 0x43, 0x139: 0x44, 0x13a: 0x45, 0x13b: 0x46, 0x13c: 0x47, 0x13d: 0x48, 0x13e: 0x49, 0x13f: 0x4a,
+	// Block 0x5, offset 0x140
+	0x140: 0x4b, 0x141: 0x4c, 0x142: 0x4d, 0x143: 0x0a, 0x144: 0x26, 0x145: 0x26, 0x146: 0x26, 0x147: 0x26,
+	0x148: 0x26, 0x149: 0x4e, 0x14a: 0x4f, 0x14b: 0x50, 0x14c: 0x51, 0x14d: 0x52, 0x14e: 0x53, 0x14f: 0x54,
+	0x150: 0x55, 0x151: 0x26, 0x152: 0x26, 0x153: 0x26, 0x154: 0x26, 0x155: 0x26, 0x156: 0x26, 0x157: 0x26,
+	0x158: 0x26, 0x159: 0x56, 0x15a: 0x57, 0x15b: 0x58, 0x15c: 0x59, 0x15d: 0x5a, 0x15e: 0x5b, 0x15f: 0x5c,
+	0x160: 0x5d, 0x161: 0x5e, 0x162: 0x5f, 0x163: 0x60, 0x164: 0x61, 0x165: 0x62, 0x167: 0x63,
+	0x168: 0x64, 0x169: 0x65, 0x16a: 0x66, 0x16b: 0x67, 0x16c: 0x68, 0x16d: 0x69, 0x16e: 0x6a, 0x16f: 0x6b,
+	0x170: 0x6c, 0x171: 0x6d, 0x172: 0x6e, 0x173: 0x6f, 0x174: 0x70, 0x175: 0x71, 0x176: 0x72, 0x177: 0x73,
+	0x178: 0x74, 0x179: 0x74, 0x17a: 0x75, 0x17b: 0x74, 0x17c: 0x76, 0x17d: 0x0b, 0x17e: 0x0c, 0x17f: 0x0d,
+	// Block 0x6, offset 0x180
+	0x180: 0x77, 0x181: 0x78, 0x182: 0x79, 0x183: 0x7a, 0x184: 0x0e, 0x185: 0x7b, 0x186: 0x7c,
+	0x192: 0x7d, 0x193: 0x0f,
+	0x1b0: 0x7e, 0x1b1: 0x10, 0x1b2: 0x74, 0x1b3: 0x7f, 0x1b4: 0x80, 0x1b5: 0x81, 0x1b6: 0x82, 0x1b7: 0x83,
+	0x1b8: 0x84,
+	// Block 0x7, offset 0x1c0
+	0x1c0: 0x85, 0x1c2: 0x86, 0x1c3: 0x87, 0x1c4: 0x88, 0x1c5: 0x26, 0x1c6: 0x89,
+	// Block 0x8, offset 0x200
+	0x200: 0x8a, 0x201: 0x26, 0x202: 0x26, 0x203: 0x26, 0x204: 0x26, 0x205: 0x26, 0x206: 0x26, 0x207: 0x26,
+	0x208: 0x26, 0x209: 0x26, 0x20a: 0x26, 0x20b: 0x26, 0x20c: 0x26, 0x20d: 0x26, 0x20e: 0x26, 0x20f: 0x26,
+	0x210: 0x26, 0x211: 0x26, 0x212: 0x8b, 0x213: 0x8c, 0x214: 0x26, 0x215: 0x26, 0x216: 0x26, 0x217: 0x26,
+	0x218: 0x8d, 0x219: 0x8e, 0x21a: 0x8f, 0x21b: 0x90, 0x21c: 0x91, 0x21d: 0x92, 0x21e: 0x11, 0x21f: 0x93,
+	0x220: 0x94, 0x221: 0x95, 0x222: 0x26, 0x223: 0x96, 0x224: 0x97, 0x225: 0x98, 0x226: 0x99, 0x227: 0x9a,
+	0x228: 0x9b, 0x229: 0x9c, 0x22a: 0x9d, 0x22b: 0x9e, 0x22c: 0x9f, 0x22d: 0xa0, 0x22e: 0xa1, 0x22f: 0xa2,
+	0x230: 0x26, 0x231: 0x26, 0x232: 0x26, 0x233: 0x26, 0x234: 0x26, 0x235: 0x26, 0x236: 0x26, 0x237: 0x26,
+	0x238: 0x26, 0x239: 0x26, 0x23a: 0x26, 0x23b: 0x26, 0x23c: 0x26, 0x23d: 0x26, 0x23e: 0x26, 0x23f: 0x26,
+	// Block 0x9, offset 0x240
+	0x240: 0x26, 0x241: 0x26, 0x242: 0x26, 0x243: 0x26, 0x244: 0x26, 0x245: 0x26, 0x246: 0x26, 0x247: 0x26,
+	0x248: 0x26, 0x249: 0x26, 0x24a: 0x26, 0x24b: 0x26, 0x24c: 0x26, 0x24d: 0x26, 0x24e: 0x26, 0x24f: 0x26,
+	0x250: 0x26, 0x251: 0x26, 0x252: 0x26, 0x253: 0x26, 0x254: 0x26, 0x255: 0x26, 0x256: 0x26, 0x257: 0x26,
+	0x258: 0x26, 0x259: 0x26, 0x25a: 0x26, 0x25b: 0x26, 0x25c: 0x26, 0x25d: 0x26, 0x25e: 0x26, 0x25f: 0x26,
+	0x260: 0x26, 0x261: 0x26, 0x262: 0x26, 0x263: 0x26, 0x264: 0x26, 0x265: 0x26, 0x266: 0x26, 0x267: 0x26,
+	0x268: 0x26, 0x269: 0x26, 0x26a: 0x26, 0x26b: 0x26, 0x26c: 0x26, 0x26d: 0x26, 0x26e: 0x26, 0x26f: 0x26,
+	0x270: 0x26, 0x271: 0x26, 0x272: 0x26, 0x273: 0x26, 0x274: 0x26, 0x275: 0x26, 0x276: 0x26, 0x277: 0x26,
+	0x278: 0x26, 0x279: 0x26, 0x27a: 0x26, 0x27b: 0x26, 0x27c: 0x26, 0x27d: 0x26, 0x27e: 0x26, 0x27f: 0x26,
+	// Block 0xa, offset 0x280
+	0x280: 0x26, 0x281: 0x26, 0x282: 0x26, 0x283: 0x26, 0x284: 0x26, 0x285: 0x26, 0x286: 0x26, 0x287: 0x26,
+	0x288: 0x26, 0x289: 0x26, 0x28a: 0x26, 0x28b: 0x26, 0x28c: 0x26, 0x28d: 0x26, 0x28e: 0x26, 0x28f: 0x26,
+	0x290: 0x26, 0x291: 0x26, 0x292: 0x26, 0x293: 0x26, 0x294: 0x26, 0x295: 0x26, 0x296: 0x26, 0x297: 0x26,
+	0x298: 0x26, 0x299: 0x26, 0x29a: 0x26, 0x29b: 0x26, 0x29c: 0x26, 0x29d: 0x26, 0x29e: 0xa3, 0x29f: 0xa4,
+	// Block 0xb, offset 0x2c0
+	0x2ec: 0x12, 0x2ed: 0xa5, 0x2ee: 0xa6, 0x2ef: 0xa7,
+	0x2f0: 0x26, 0x2f1: 0x26, 0x2f2: 0x26, 0x2f3: 0x26, 0x2f4: 0xa8, 0x2f5: 0xa9, 0x2f6: 0xaa, 0x2f7: 0xab,
+	0x2f8: 0xac, 0x2f9: 0xad, 0x2fa: 0x26, 0x2fb: 0xae, 0x2fc: 0xaf, 0x2fd: 0xb0, 0x2fe: 0xb1, 0x2ff: 0xb2,
+	// Block 0xc, offset 0x300
+	0x300: 0xb3, 0x301: 0xb4, 0x302: 0x26, 0x303: 0xb5, 0x305: 0xb6, 0x307: 0xb7,
+	0x30a: 0xb8, 0x30b: 0xb9, 0x30c: 0xba, 0x30d: 0xbb, 0x30e: 0xbc, 0x30f: 0xbd,
+	0x310: 0xbe, 0x311: 0xbf, 0x312: 0xc0, 0x313: 0xc1, 0x314: 0xc2, 0x315: 0xc3, 0x316: 0x13,
+	0x318: 0x26, 0x319: 0x26, 0x31a: 0x26, 0x31b: 0x26, 0x31c: 0xc4, 0x31d: 0xc5, 0x31e: 0xc6,
+	0x320: 0xc7, 0x321: 0xc8, 0x322: 0xc9, 0x323: 0xca, 0x324: 0xcb, 0x326: 0xcc,
+	0x328: 0xcd, 0x329: 0xce, 0x32a: 0xcf, 0x32b: 0xd0, 0x32c: 0x60, 0x32d: 0xd1, 0x32e: 0xd2,
+	0x330: 0x26, 0x331: 0xd3, 0x332: 0xd4, 0x333: 0xd5, 0x334: 0xd6,
+	0x33a: 0xd7, 0x33b: 0xd8, 0x33c: 0xd9, 0x33d: 0xda, 0x33e: 0xdb, 0x33f: 0xdc,
+	// Block 0xd, offset 0x340
+	0x340: 0xdd, 0x341: 0xde, 0x342: 0xdf, 0x343: 0xe0, 0x344: 0xe1, 0x345: 0xe2, 0x346: 0xe3, 0x347: 0xe4,
+	0x348: 0xe5, 0x349: 0xe6, 0x34a: 0xe7, 0x34b: 0xe8, 0x34c: 0xe9, 0x34d: 0xea,
+	0x350: 0xeb, 0x351: 0xec, 0x352: 0xed, 0x353: 0xee, 0x356: 0xef, 0x357: 0xf0,
+	0x358: 0xf1, 0x359: 0xf2, 0x35a: 0xf3, 0x35b: 0xf4, 0x35c: 0xf5,
+	0x360: 0xf6, 0x362: 0xf7, 0x363: 0xf8, 0x364: 0xf9, 0x365: 0xfa, 0x366: 0xfb, 0x367: 0xfc,
+	0x368: 0xfd, 0x369: 0xfe, 0x36a: 0xff, 0x36b: 0x100,
+	0x370: 0x101, 0x371: 0x102, 0x372: 0x103, 0x374: 0x104, 0x375: 0x105, 0x376: 0x106,
+	0x37b: 0x107, 0x37c: 0x108, 0x37d: 0x109, 0x37e: 0x10a,
+	// Block 0xe, offset 0x380
+	0x380: 0x26, 0x381: 0x26, 0x382: 0x26, 0x383: 0x26, 0x384: 0x26, 0x385: 0x26, 0x386: 0x26, 0x387: 0x26,
+	0x388: 0x26, 0x389: 0x26, 0x38a: 0x26, 0x38b: 0x26, 0x38c: 0x26, 0x38d: 0x26, 0x38e: 0x10b,
+	0x390: 0x26, 0x391: 0x10c, 0x392: 0x26, 0x393: 0x26, 0x394: 0x26, 0x395: 0x10d,
+	0x3be: 0xa9, 0x3bf: 0x10e,
+	// Block 0xf, offset 0x3c0
+	0x3c0: 0x26, 0x3c1: 0x26, 0x3c2: 0x26, 0x3c3: 0x26, 0x3c4: 0x26, 0x3c5: 0x26, 0x3c6: 0x26, 0x3c7: 0x26,
+	0x3c8: 0x26, 0x3c9: 0x26, 0x3ca: 0x26, 0x3cb: 0x26, 0x3cc: 0x26, 0x3cd: 0x26, 0x3ce: 0x26, 0x3cf: 0x26,
+	0x3d0: 0x10f, 0x3d1: 0x110,
+	// Block 0x10, offset 0x400
+	0x410: 0x26, 0x411: 0x26, 0x412: 0x26, 0x413: 0x26, 0x414: 0x26, 0x415: 0x26, 0x416: 0x26, 0x417: 0x26,
+	0x418: 0x26, 0x419: 0x111,
+	// Block 0x11, offset 0x440
+	0x460: 0x26, 0x461: 0x26, 0x462: 0x26, 0x463: 0x26, 0x464: 0x26, 0x465: 0x26, 0x466: 0x26, 0x467: 0x26,
+	0x468: 0x100, 0x469: 0x112, 0x46a: 0x113, 0x46b: 0x114, 0x46c: 0x115, 0x46d: 0x116, 0x46e: 0x117,
+	0x479: 0x118, 0x47c: 0x26, 0x47d: 0x119, 0x47e: 0x11a, 0x47f: 0x11b,
+	// Block 0x12, offset 0x480
+	0x4bf: 0x11c,
+	// Block 0x13, offset 0x4c0
+	0x4f0: 0x26, 0x4f1: 0x11d, 0x4f2: 0x11e,
+	// Block 0x14, offset 0x500
+	0x53c: 0x11f, 0x53d: 0x120,
+	// Block 0x15, offset 0x540
+	0x545: 0x121, 0x546: 0x122,
+	0x549: 0x123,
+	0x550: 0x124, 0x551: 0x125, 0x552: 0x126, 0x553: 0x127, 0x554: 0x128, 0x555: 0x129, 0x556: 0x12a, 0x557: 0x12b,
+	0x558: 0x12c, 0x559: 0x12d, 0x55a: 0x12e, 0x55b: 0x12f, 0x55c: 0x130, 0x55d: 0x131, 0x55e: 0x132, 0x55f: 0x133,
+	0x568: 0x134, 0x569: 0x135, 0x56a: 0x136,
+	0x57c: 0x137,
+	// Block 0x16, offset 0x580
+	0x580: 0x138, 0x581: 0x139, 0x582: 0x13a, 0x584: 0x13b, 0x585: 0x13c,
+	0x58a: 0x13d, 0x58b: 0x13e,
+	0x593: 0x13f,
+	0x59f: 0x140,
+	0x5a0: 0x26, 0x5a1: 0x26, 0x5a2: 0x26, 0x5a3: 0x141, 0x5a4: 0x14, 0x5a5: 0x142,
+	0x5b8: 0x143, 0x5b9: 0x15, 0x5ba: 0x144,
+	// Block 0x17, offset 0x5c0
+	0x5c4: 0x145, 0x5c5: 0x146, 0x5c6: 0x147,
+	0x5cf: 0x148,
+	0x5ef: 0x149,
+	// Block 0x18, offset 0x600
+	0x610: 0x0a, 0x611: 0x0b, 0x612: 0x0c, 0x613: 0x0d, 0x614: 0x0e, 0x616: 0x0f,
+	0x61a: 0x10, 0x61b: 0x11, 0x61c: 0x12, 0x61d: 0x13, 0x61e: 0x14, 0x61f: 0x15,
+	// Block 0x19, offset 0x640
+	0x640: 0x14a, 0x641: 0x14b, 0x644: 0x14b, 0x645: 0x14b, 0x646: 0x14b, 0x647: 0x14c,
+	// Block 0x1a, offset 0x680
+	0x6a0: 0x17,
+}
+
+// sparseOffsets: 312 entries, 624 bytes
+var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x34, 0x37, 0x3b, 0x3e, 0x42, 0x4c, 0x4e, 0x57, 0x5e, 0x63, 0x71, 0x72, 0x80, 0x8f, 0x99, 0x9c, 0xa3, 0xab, 0xaf, 0xb7, 0xbd, 0xcb, 0xd6, 0xe3, 0xee, 0xfa, 0x104, 0x110, 0x11b, 0x127, 0x133, 0x13b, 0x145, 0x150, 0x15b, 0x167, 0x16d, 0x178, 0x17e, 0x186, 0x189, 0x18e, 0x192, 0x196, 0x19d, 0x1a6, 0x1ae, 0x1af, 0x1b8, 0x1bf, 0x1c7, 0x1cd, 0x1d2, 0x1d6, 0x1d9, 0x1db, 0x1de, 0x1e3, 0x1e4, 0x1e6, 0x1e8, 0x1ea, 0x1f1, 0x1f6, 0x1fa, 0x203, 0x206, 0x209, 0x20f, 0x210, 0x21b, 0x21c, 0x21d, 0x222, 0x22f, 0x238, 0x23e, 0x246, 0x24f, 0x258, 0x261, 0x266, 0x269, 0x274, 0x282, 0x284, 0x28b, 0x28f, 0x29b, 0x29c, 0x2a7, 0x2af, 0x2b7, 0x2bd, 0x2be, 0x2cc, 0x2d1, 0x2d4, 0x2d9, 0x2dd, 0x2e3, 0x2e8, 0x2eb, 0x2f0, 0x2f5, 0x2f6, 0x2fc, 0x2fe, 0x2ff, 0x301, 0x303, 0x306, 0x307, 0x309, 0x30c, 0x312, 0x316, 0x318, 0x31d, 0x324, 0x334, 0x33e, 0x33f, 0x348, 0x34c, 0x351, 0x359, 0x35f, 0x365, 0x36f, 0x374, 0x37d, 0x383, 0x38c, 0x390, 0x398, 0x39a, 0x39c, 0x39f, 0x3a1, 0x3a3, 0x3a4, 0x3a5, 0x3a7, 0x3a9, 0x3af, 0x3b4, 0x3b6, 0x3bd, 0x3c0, 0x3c2, 0x3c8, 0x3cd, 0x3cf, 0x3d0, 0x3d1, 0x3d2, 0x3d4, 0x3d6, 0x3d8, 0x3db, 0x3dd, 0x3e0, 0x3e8, 0x3eb, 0x3ef, 0x3f7, 0x3f9, 0x409, 0x40a, 0x40c, 0x411, 0x417, 0x419, 0x41a, 0x41c, 0x41e, 0x420, 0x42d, 0x42e, 0x42f, 0x433, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43c, 0x43f, 0x440, 0x443, 0x44a, 0x450, 0x452, 0x456, 0x45e, 0x464, 0x468, 0x46f, 0x473, 0x477, 0x480, 0x48a, 0x48c, 0x492, 0x498, 0x4a2, 0x4ac, 0x4ae, 0x4b7, 0x4bd, 0x4c3, 0x4c9, 0x4cc, 0x4d2, 0x4d5, 0x4de, 0x4df, 0x4e6, 0x4ea, 0x4eb, 0x4ee, 0x4f8, 0x4fb, 0x4fd, 0x504, 0x50c, 0x512, 0x519, 0x51a, 0x520, 0x523, 0x52b, 0x532, 0x53c, 0x544, 0x547, 0x54c, 0x550, 0x551, 0x552, 0x553, 0x554, 0x555, 0x557, 0x55a, 0x55b, 0x55e, 0x55f, 0x562, 0x564, 0x568, 0x569, 0x56b, 0x56e, 0x570, 0x573, 0x576, 0x578, 0x57d, 0x57f, 0x580, 0x585, 0x589, 0x58a, 0x58d, 0x591, 0x59c, 0x5a0, 0x5a8, 0x5ad, 0x5b1, 0x5b4, 0x5b8, 0x5bb, 0x5be, 0x5c3, 0x5c7, 0x5cb, 0x5cf, 0x5d3, 0x5d5, 0x5d7, 0x5da, 0x5de, 0x5e4, 0x5e5, 0x5e6, 0x5e9, 0x5eb, 0x5ed, 0x5f0, 0x5f5, 0x5f9, 0x5fb, 0x601, 0x60a, 0x60f, 0x610, 0x613, 0x614, 0x615, 0x616, 0x618, 0x619, 0x61a}
+
+// sparseValues: 1562 entries, 6248 bytes
+var sparseValues = [1562]valueRange{
+	// Block 0x0, offset 0x0
+	{value: 0x0004, lo: 0xa8, hi: 0xa8},
+	{value: 0x0012, lo: 0xaa, hi: 0xaa},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0004, lo: 0xaf, hi: 0xaf},
+	{value: 0x0004, lo: 0xb4, hi: 0xb4},
+	{value: 0x001a, lo: 0xb5, hi: 0xb5},
+	{value: 0x0054, lo: 0xb7, hi: 0xb7},
+	{value: 0x0004, lo: 0xb8, hi: 0xb8},
+	{value: 0x0012, lo: 0xba, hi: 0xba},
+	// Block 0x1, offset 0x9
+	{value: 0x2013, lo: 0x80, hi: 0x96},
+	{value: 0x2013, lo: 0x98, hi: 0x9e},
+	{value: 0x009a, lo: 0x9f, hi: 0x9f},
+	{value: 0x2012, lo: 0xa0, hi: 0xb6},
+	{value: 0x2012, lo: 0xb8, hi: 0xbe},
+	{value: 0x0252, lo: 0xbf, hi: 0xbf},
+	// Block 0x2, offset 0xf
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x011b, lo: 0xb0, hi: 0xb0},
+	{value: 0x019a, lo: 0xb1, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xb7},
+	{value: 0x0012, lo: 0xb8, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x0316, lo: 0xbd, hi: 0xbe},
+	{value: 0x0553, lo: 0xbf, hi: 0xbf},
+	// Block 0x3, offset 0x18
+	{value: 0x0552, lo: 0x80, hi: 0x80},
+	{value: 0x0316, lo: 0x81, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0316, lo: 0x85, hi: 0x86},
+	{value: 0x0f16, lo: 0x87, hi: 0x88},
+	{value: 0x01da, lo: 0x89, hi: 0x89},
+	{value: 0x0117, lo: 0x8a, hi: 0xb7},
+	{value: 0x0253, lo: 0xb8, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x0316, lo: 0xbd, hi: 0xbe},
+	{value: 0x028a, lo: 0xbf, hi: 0xbf},
+	// Block 0x4, offset 0x24
+	{value: 0x0117, lo: 0x80, hi: 0x9f},
+	{value: 0x2f53, lo: 0xa0, hi: 0xa0},
+	{value: 0x0012, lo: 0xa1, hi: 0xa1},
+	{value: 0x0117, lo: 0xa2, hi: 0xb3},
+	{value: 0x0012, lo: 0xb4, hi: 0xb9},
+	{value: 0x090b, lo: 0xba, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x2953, lo: 0xbd, hi: 0xbd},
+	{value: 0x098b, lo: 0xbe, hi: 0xbe},
+	{value: 0x0a0a, lo: 0xbf, hi: 0xbf},
+	// Block 0x5, offset 0x2e
+	{value: 0x0015, lo: 0x80, hi: 0x81},
+	{value: 0x0014, lo: 0x82, hi: 0x97},
+	{value: 0x0004, lo: 0x98, hi: 0x9d},
+	{value: 0x0014, lo: 0x9e, hi: 0x9f},
+	{value: 0x0015, lo: 0xa0, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xbf},
+	// Block 0x6, offset 0x34
+	{value: 0x0024, lo: 0x80, hi: 0x94},
+	{value: 0x0034, lo: 0x95, hi: 0xbc},
+	{value: 0x0024, lo: 0xbd, hi: 0xbf},
+	// Block 0x7, offset 0x37
+	{value: 0x6553, lo: 0x80, hi: 0x8f},
+	{value: 0x2013, lo: 0x90, hi: 0x9f},
+	{value: 0x5f53, lo: 0xa0, hi: 0xaf},
+	{value: 0x2012, lo: 0xb0, hi: 0xbf},
+	// Block 0x8, offset 0x3b
+	{value: 0x5f52, lo: 0x80, hi: 0x8f},
+	{value: 0x6552, lo: 0x90, hi: 0x9f},
+	{value: 0x0117, lo: 0xa0, hi: 0xbf},
+	// Block 0x9, offset 0x3e
+	{value: 0x0117, lo: 0x80, hi: 0x81},
+	{value: 0x0024, lo: 0x83, hi: 0x87},
+	{value: 0x0014, lo: 0x88, hi: 0x89},
+	{value: 0x0117, lo: 0x8a, hi: 0xbf},
+	// Block 0xa, offset 0x42
+	{value: 0x0f13, lo: 0x80, hi: 0x80},
+	{value: 0x0316, lo: 0x81, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0316, lo: 0x85, hi: 0x86},
+	{value: 0x0f16, lo: 0x87, hi: 0x88},
+	{value: 0x0316, lo: 0x89, hi: 0x8a},
+	{value: 0x0716, lo: 0x8b, hi: 0x8c},
+	{value: 0x0316, lo: 0x8d, hi: 0x8e},
+	{value: 0x0f12, lo: 0x8f, hi: 0x8f},
+	{value: 0x0117, lo: 0x90, hi: 0xbf},
+	// Block 0xb, offset 0x4c
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x6553, lo: 0xb1, hi: 0xbf},
+	// Block 0xc, offset 0x4e
+	{value: 0x3013, lo: 0x80, hi: 0x8f},
+	{value: 0x6853, lo: 0x90, hi: 0x96},
+	{value: 0x0014, lo: 0x99, hi: 0x99},
+	{value: 0x0010, lo: 0x9a, hi: 0x9c},
+	{value: 0x0010, lo: 0x9e, hi: 0x9e},
+	{value: 0x0054, lo: 0x9f, hi: 0x9f},
+	{value: 0x0012, lo: 0xa0, hi: 0xa0},
+	{value: 0x6552, lo: 0xa1, hi: 0xaf},
+	{value: 0x3012, lo: 0xb0, hi: 0xbf},
+	// Block 0xd, offset 0x57
+	{value: 0x0034, lo: 0x81, hi: 0x82},
+	{value: 0x0024, lo: 0x84, hi: 0x84},
+	{value: 0x0034, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0xaa},
+	{value: 0x0010, lo: 0xaf, hi: 0xb3},
+	{value: 0x0054, lo: 0xb4, hi: 0xb4},
+	// Block 0xe, offset 0x5e
+	{value: 0x0014, lo: 0x80, hi: 0x85},
+	{value: 0x0024, lo: 0x90, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x9a},
+	{value: 0x0014, lo: 0x9c, hi: 0x9c},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0xf, offset 0x63
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x8a},
+	{value: 0x0034, lo: 0x8b, hi: 0x92},
+	{value: 0x0024, lo: 0x93, hi: 0x94},
+	{value: 0x0034, lo: 0x95, hi: 0x96},
+	{value: 0x0024, lo: 0x97, hi: 0x9b},
+	{value: 0x0034, lo: 0x9c, hi: 0x9c},
+	{value: 0x0024, lo: 0x9d, hi: 0x9e},
+	{value: 0x0034, lo: 0x9f, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0010, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0034, lo: 0xb0, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xbf},
+	// Block 0x10, offset 0x71
+	{value: 0x0010, lo: 0x80, hi: 0xbf},
+	// Block 0x11, offset 0x72
+	{value: 0x0010, lo: 0x80, hi: 0x93},
+	{value: 0x0010, lo: 0x95, hi: 0x95},
+	{value: 0x0024, lo: 0x96, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x0024, lo: 0x9f, hi: 0xa2},
+	{value: 0x0034, lo: 0xa3, hi: 0xa3},
+	{value: 0x0024, lo: 0xa4, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa6},
+	{value: 0x0024, lo: 0xa7, hi: 0xa8},
+	{value: 0x0034, lo: 0xaa, hi: 0xaa},
+	{value: 0x0024, lo: 0xab, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xbc},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x12, offset 0x80
+	{value: 0x0014, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0034, lo: 0x91, hi: 0x91},
+	{value: 0x0010, lo: 0x92, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	{value: 0x0034, lo: 0xb1, hi: 0xb1},
+	{value: 0x0024, lo: 0xb2, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0024, lo: 0xb5, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb9},
+	{value: 0x0024, lo: 0xba, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbc},
+	{value: 0x0024, lo: 0xbd, hi: 0xbd},
+	{value: 0x0034, lo: 0xbe, hi: 0xbe},
+	{value: 0x0024, lo: 0xbf, hi: 0xbf},
+	// Block 0x13, offset 0x8f
+	{value: 0x0024, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0024, lo: 0x83, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0024, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0024, lo: 0x87, hi: 0x87},
+	{value: 0x0034, lo: 0x88, hi: 0x88},
+	{value: 0x0024, lo: 0x89, hi: 0x8a},
+	{value: 0x0010, lo: 0x8d, hi: 0xbf},
+	// Block 0x14, offset 0x99
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0014, lo: 0xa6, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	// Block 0x15, offset 0x9c
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0024, lo: 0xab, hi: 0xb1},
+	{value: 0x0034, lo: 0xb2, hi: 0xb2},
+	{value: 0x0024, lo: 0xb3, hi: 0xb3},
+	{value: 0x0014, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0034, lo: 0xbd, hi: 0xbd},
+	// Block 0x16, offset 0xa3
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0024, lo: 0x96, hi: 0x99},
+	{value: 0x0014, lo: 0x9a, hi: 0x9a},
+	{value: 0x0024, lo: 0x9b, hi: 0xa3},
+	{value: 0x0014, lo: 0xa4, hi: 0xa4},
+	{value: 0x0024, lo: 0xa5, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa8},
+	{value: 0x0024, lo: 0xa9, hi: 0xad},
+	// Block 0x17, offset 0xab
+	{value: 0x0010, lo: 0x80, hi: 0x98},
+	{value: 0x0034, lo: 0x99, hi: 0x9b},
+	{value: 0x0010, lo: 0xa0, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x18, offset 0xaf
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0004, lo: 0x88, hi: 0x88},
+	{value: 0x0010, lo: 0x89, hi: 0x8e},
+	{value: 0x0014, lo: 0x90, hi: 0x91},
+	{value: 0x0024, lo: 0x98, hi: 0x98},
+	{value: 0x0034, lo: 0x99, hi: 0x9b},
+	{value: 0x0024, lo: 0x9c, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x19, offset 0xb7
+	{value: 0x0014, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xb9},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x1a, offset 0xbd
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x88},
+	{value: 0x0010, lo: 0x89, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0024, lo: 0x91, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x92},
+	{value: 0x0024, lo: 0x93, hi: 0x94},
+	{value: 0x0014, lo: 0x95, hi: 0x97},
+	{value: 0x0010, lo: 0x98, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xbf},
+	// Block 0x1b, offset 0xcb
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb2},
+	{value: 0x0010, lo: 0xb6, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x1c, offset 0xd6
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x8e},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9c, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xb1},
+	{value: 0x0010, lo: 0xbc, hi: 0xbc},
+	{value: 0x0024, lo: 0xbe, hi: 0xbe},
+	// Block 0x1d, offset 0xe3
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8a},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb6},
+	{value: 0x0010, lo: 0xb8, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x1e, offset 0xee
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0014, lo: 0x87, hi: 0x88},
+	{value: 0x0014, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x91, hi: 0x91},
+	{value: 0x0010, lo: 0x99, hi: 0x9c},
+	{value: 0x0010, lo: 0x9e, hi: 0x9e},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb5},
+	// Block 0x1f, offset 0xfa
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x91},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x20, offset 0x104
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x85},
+	{value: 0x0014, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x89, hi: 0x89},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	{value: 0x0014, lo: 0xba, hi: 0xbf},
+	// Block 0x21, offset 0x110
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x22, offset 0x11b
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x95, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9c, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	// Block 0x23, offset 0x127
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8a},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0x95},
+	{value: 0x0010, lo: 0x99, hi: 0x9a},
+	{value: 0x0010, lo: 0x9c, hi: 0x9c},
+	{value: 0x0010, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa3, hi: 0xa4},
+	{value: 0x0010, lo: 0xa8, hi: 0xaa},
+	{value: 0x0010, lo: 0xae, hi: 0xb9},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x24, offset 0x133
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x86, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	// Block 0x25, offset 0x13b
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x83},
+	{value: 0x0014, lo: 0x84, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbf},
+	// Block 0x26, offset 0x145
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0014, lo: 0x86, hi: 0x88},
+	{value: 0x0014, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0034, lo: 0x95, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9a},
+	{value: 0x0010, lo: 0x9d, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	// Block 0x27, offset 0x150
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x28, offset 0x15b
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0014, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x95, hi: 0x96},
+	{value: 0x0010, lo: 0x9d, hi: 0x9e},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb1, hi: 0xb3},
+	// Block 0x29, offset 0x167
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x2a, offset 0x16d
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x86, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x8e},
+	{value: 0x0010, lo: 0x94, hi: 0x97},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xba, hi: 0xbf},
+	// Block 0x2b, offset 0x178
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x96},
+	{value: 0x0010, lo: 0x9a, hi: 0xb1},
+	{value: 0x0010, lo: 0xb3, hi: 0xbb},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	// Block 0x2c, offset 0x17e
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0010, lo: 0x8f, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x94},
+	{value: 0x0014, lo: 0x96, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9f},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	// Block 0x2d, offset 0x186
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb4, hi: 0xb7},
+	{value: 0x0034, lo: 0xb8, hi: 0xba},
+	// Block 0x2e, offset 0x189
+	{value: 0x0004, lo: 0x86, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x87},
+	{value: 0x0034, lo: 0x88, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x2f, offset 0x18e
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb4, hi: 0xb7},
+	{value: 0x0034, lo: 0xb8, hi: 0xba},
+	{value: 0x0014, lo: 0xbb, hi: 0xbc},
+	// Block 0x30, offset 0x192
+	{value: 0x0004, lo: 0x86, hi: 0x86},
+	{value: 0x0034, lo: 0x88, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x31, offset 0x196
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0034, lo: 0x98, hi: 0x99},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0034, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	{value: 0x0034, lo: 0xb9, hi: 0xb9},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x32, offset 0x19d
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0x89, hi: 0xac},
+	{value: 0x0034, lo: 0xb1, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xba, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x33, offset 0x1a6
+	{value: 0x0034, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0024, lo: 0x82, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0024, lo: 0x86, hi: 0x87},
+	{value: 0x0010, lo: 0x88, hi: 0x8c},
+	{value: 0x0014, lo: 0x8d, hi: 0x97},
+	{value: 0x0014, lo: 0x99, hi: 0xbc},
+	// Block 0x34, offset 0x1ae
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	// Block 0x35, offset 0x1af
+	{value: 0x0010, lo: 0xab, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	{value: 0x0010, lo: 0xb8, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbc},
+	{value: 0x0014, lo: 0xbd, hi: 0xbe},
+	// Block 0x36, offset 0x1b8
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x96, hi: 0x97},
+	{value: 0x0014, lo: 0x98, hi: 0x99},
+	{value: 0x0014, lo: 0x9e, hi: 0xa0},
+	{value: 0x0010, lo: 0xa2, hi: 0xa4},
+	{value: 0x0010, lo: 0xa7, hi: 0xad},
+	{value: 0x0014, lo: 0xb1, hi: 0xb4},
+	// Block 0x37, offset 0x1bf
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x6c53, lo: 0xa0, hi: 0xbf},
+	// Block 0x38, offset 0x1c7
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x98},
+	{value: 0x0010, lo: 0x9a, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x39, offset 0x1cd
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb5},
+	{value: 0x0010, lo: 0xb8, hi: 0xbe},
+	// Block 0x3a, offset 0x1d2
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x82, hi: 0x85},
+	{value: 0x0010, lo: 0x88, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0xbf},
+	// Block 0x3b, offset 0x1d6
+	{value: 0x0010, lo: 0x80, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0x95},
+	{value: 0x0010, lo: 0x98, hi: 0xbf},
+	// Block 0x3c, offset 0x1d9
+	{value: 0x0010, lo: 0x80, hi: 0x9a},
+	{value: 0x0024, lo: 0x9d, hi: 0x9f},
+	// Block 0x3d, offset 0x1db
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x7453, lo: 0xa0, hi: 0xaf},
+	{value: 0x7853, lo: 0xb0, hi: 0xbf},
+	// Block 0x3e, offset 0x1de
+	{value: 0x7c53, lo: 0x80, hi: 0x8f},
+	{value: 0x8053, lo: 0x90, hi: 0x9f},
+	{value: 0x7c53, lo: 0xa0, hi: 0xaf},
+	{value: 0x0813, lo: 0xb0, hi: 0xb5},
+	{value: 0x0892, lo: 0xb8, hi: 0xbd},
+	// Block 0x3f, offset 0x1e3
+	{value: 0x0010, lo: 0x81, hi: 0xbf},
+	// Block 0x40, offset 0x1e4
+	{value: 0x0010, lo: 0x80, hi: 0xac},
+	{value: 0x0010, lo: 0xaf, hi: 0xbf},
+	// Block 0x41, offset 0x1e6
+	{value: 0x0010, lo: 0x81, hi: 0x9a},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x42, offset 0x1e8
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0010, lo: 0xae, hi: 0xb8},
+	// Block 0x43, offset 0x1ea
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x93},
+	{value: 0x0034, lo: 0x94, hi: 0x94},
+	{value: 0x0030, lo: 0x95, hi: 0x95},
+	{value: 0x0010, lo: 0x9f, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	{value: 0x0030, lo: 0xb4, hi: 0xb4},
+	// Block 0x44, offset 0x1f1
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x93},
+	{value: 0x0010, lo: 0xa0, hi: 0xac},
+	{value: 0x0010, lo: 0xae, hi: 0xb0},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	// Block 0x45, offset 0x1f6
+	{value: 0x0014, lo: 0xb4, hi: 0xb5},
+	{value: 0x0010, lo: 0xb6, hi: 0xb6},
+	{value: 0x0014, lo: 0xb7, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x46, offset 0x1fa
+	{value: 0x0010, lo: 0x80, hi: 0x85},
+	{value: 0x0014, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0014, lo: 0x89, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x92},
+	{value: 0x0014, lo: 0x93, hi: 0x93},
+	{value: 0x0004, lo: 0x97, hi: 0x97},
+	{value: 0x0024, lo: 0x9d, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	// Block 0x47, offset 0x203
+	{value: 0x0014, lo: 0x8b, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x48, offset 0x206
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0xb8},
+	// Block 0x49, offset 0x209
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0xa8},
+	{value: 0x0034, lo: 0xa9, hi: 0xa9},
+	{value: 0x0010, lo: 0xaa, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x4a, offset 0x20f
+	{value: 0x0010, lo: 0x80, hi: 0xb5},
+	// Block 0x4b, offset 0x210
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0014, lo: 0xa0, hi: 0xa2},
+	{value: 0x0010, lo: 0xa3, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xab},
+	{value: 0x0010, lo: 0xb0, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb2},
+	{value: 0x0010, lo: 0xb3, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xb9},
+	{value: 0x0024, lo: 0xba, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbb},
+	// Block 0x4c, offset 0x21b
+	{value: 0x0010, lo: 0x86, hi: 0x8f},
+	// Block 0x4d, offset 0x21c
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x4e, offset 0x21d
+	{value: 0x0010, lo: 0x80, hi: 0x96},
+	{value: 0x0024, lo: 0x97, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x98},
+	{value: 0x0010, lo: 0x99, hi: 0x9a},
+	{value: 0x0014, lo: 0x9b, hi: 0x9b},
+	// Block 0x4f, offset 0x222
+	{value: 0x0010, lo: 0x95, hi: 0x95},
+	{value: 0x0014, lo: 0x96, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0014, lo: 0x98, hi: 0x9e},
+	{value: 0x0034, lo: 0xa0, hi: 0xa0},
+	{value: 0x0010, lo: 0xa1, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa2},
+	{value: 0x0010, lo: 0xa3, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xac},
+	{value: 0x0010, lo: 0xad, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb4},
+	{value: 0x0024, lo: 0xb5, hi: 0xbc},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x50, offset 0x22f
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0004, lo: 0xa7, hi: 0xa7},
+	{value: 0x0024, lo: 0xb0, hi: 0xb4},
+	{value: 0x0034, lo: 0xb5, hi: 0xba},
+	{value: 0x0024, lo: 0xbb, hi: 0xbc},
+	{value: 0x0034, lo: 0xbd, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x51, offset 0x238
+	{value: 0x0034, lo: 0x80, hi: 0x80},
+	{value: 0x0024, lo: 0x81, hi: 0x82},
+	{value: 0x0034, lo: 0x83, hi: 0x84},
+	{value: 0x0024, lo: 0x85, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0024, lo: 0x8b, hi: 0x8e},
+	// Block 0x52, offset 0x23e
+	{value: 0x0014, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x53, offset 0x246
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0030, lo: 0x84, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0024, lo: 0xab, hi: 0xab},
+	{value: 0x0034, lo: 0xac, hi: 0xac},
+	{value: 0x0024, lo: 0xad, hi: 0xb3},
+	// Block 0x54, offset 0x24f
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa9},
+	{value: 0x0030, lo: 0xaa, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xbf},
+	// Block 0x55, offset 0x258
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0034, lo: 0xa6, hi: 0xa6},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa9},
+	{value: 0x0010, lo: 0xaa, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xae},
+	{value: 0x0014, lo: 0xaf, hi: 0xb1},
+	{value: 0x0030, lo: 0xb2, hi: 0xb3},
+	// Block 0x56, offset 0x261
+	{value: 0x0010, lo: 0x80, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	// Block 0x57, offset 0x266
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x8d, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	// Block 0x58, offset 0x269
+	{value: 0x31ea, lo: 0x80, hi: 0x80},
+	{value: 0x326a, lo: 0x81, hi: 0x81},
+	{value: 0x32ea, lo: 0x82, hi: 0x82},
+	{value: 0x336a, lo: 0x83, hi: 0x83},
+	{value: 0x33ea, lo: 0x84, hi: 0x84},
+	{value: 0x346a, lo: 0x85, hi: 0x85},
+	{value: 0x34ea, lo: 0x86, hi: 0x86},
+	{value: 0x356a, lo: 0x87, hi: 0x87},
+	{value: 0x35ea, lo: 0x88, hi: 0x88},
+	{value: 0x8353, lo: 0x90, hi: 0xba},
+	{value: 0x8353, lo: 0xbd, hi: 0xbf},
+	// Block 0x59, offset 0x274
+	{value: 0x0024, lo: 0x90, hi: 0x92},
+	{value: 0x0034, lo: 0x94, hi: 0x99},
+	{value: 0x0024, lo: 0x9a, hi: 0x9b},
+	{value: 0x0034, lo: 0x9c, hi: 0x9f},
+	{value: 0x0024, lo: 0xa0, hi: 0xa0},
+	{value: 0x0010, lo: 0xa1, hi: 0xa1},
+	{value: 0x0034, lo: 0xa2, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xb3},
+	{value: 0x0024, lo: 0xb4, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb7},
+	{value: 0x0024, lo: 0xb8, hi: 0xb9},
+	{value: 0x0010, lo: 0xba, hi: 0xba},
+	// Block 0x5a, offset 0x282
+	{value: 0x0012, lo: 0x80, hi: 0xab},
+	{value: 0x0015, lo: 0xac, hi: 0xbf},
+	// Block 0x5b, offset 0x284
+	{value: 0x0015, lo: 0x80, hi: 0xaa},
+	{value: 0x0012, lo: 0xab, hi: 0xb7},
+	{value: 0x0015, lo: 0xb8, hi: 0xb8},
+	{value: 0x8752, lo: 0xb9, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xbc},
+	{value: 0x8b52, lo: 0xbd, hi: 0xbd},
+	{value: 0x0012, lo: 0xbe, hi: 0xbf},
+	// Block 0x5c, offset 0x28b
+	{value: 0x0012, lo: 0x80, hi: 0x8d},
+	{value: 0x8f52, lo: 0x8e, hi: 0x8e},
+	{value: 0x0012, lo: 0x8f, hi: 0x9a},
+	{value: 0x0015, lo: 0x9b, hi: 0xbf},
+	// Block 0x5d, offset 0x28f
+	{value: 0x0024, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0024, lo: 0x83, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0024, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x90},
+	{value: 0x0024, lo: 0x91, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xba},
+	{value: 0x0024, lo: 0xbb, hi: 0xbb},
+	{value: 0x0034, lo: 0xbc, hi: 0xbd},
+	{value: 0x0024, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x5e, offset 0x29b
+	{value: 0x0117, lo: 0x80, hi: 0xbf},
+	// Block 0x5f, offset 0x29c
+	{value: 0x0117, lo: 0x80, hi: 0x95},
+	{value: 0x369a, lo: 0x96, hi: 0x96},
+	{value: 0x374a, lo: 0x97, hi: 0x97},
+	{value: 0x37fa, lo: 0x98, hi: 0x98},
+	{value: 0x38aa, lo: 0x99, hi: 0x99},
+	{value: 0x395a, lo: 0x9a, hi: 0x9a},
+	{value: 0x3a0a, lo: 0x9b, hi: 0x9b},
+	{value: 0x0012, lo: 0x9c, hi: 0x9d},
+	{value: 0x3abb, lo: 0x9e, hi: 0x9e},
+	{value: 0x0012, lo: 0x9f, hi: 0x9f},
+	{value: 0x0117, lo: 0xa0, hi: 0xbf},
+	// Block 0x60, offset 0x2a7
+	{value: 0x0812, lo: 0x80, hi: 0x87},
+	{value: 0x0813, lo: 0x88, hi: 0x8f},
+	{value: 0x0812, lo: 0x90, hi: 0x95},
+	{value: 0x0813, lo: 0x98, hi: 0x9d},
+	{value: 0x0812, lo: 0xa0, hi: 0xa7},
+	{value: 0x0813, lo: 0xa8, hi: 0xaf},
+	{value: 0x0812, lo: 0xb0, hi: 0xb7},
+	{value: 0x0813, lo: 0xb8, hi: 0xbf},
+	// Block 0x61, offset 0x2af
+	{value: 0x0004, lo: 0x8b, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8f},
+	{value: 0x0054, lo: 0x98, hi: 0x99},
+	{value: 0x0054, lo: 0xa4, hi: 0xa4},
+	{value: 0x0054, lo: 0xa7, hi: 0xa7},
+	{value: 0x0014, lo: 0xaa, hi: 0xae},
+	{value: 0x0010, lo: 0xaf, hi: 0xaf},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x62, offset 0x2b7
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x94, hi: 0x94},
+	{value: 0x0014, lo: 0xa0, hi: 0xa4},
+	{value: 0x0014, lo: 0xa6, hi: 0xaf},
+	{value: 0x0015, lo: 0xb1, hi: 0xb1},
+	{value: 0x0015, lo: 0xbf, hi: 0xbf},
+	// Block 0x63, offset 0x2bd
+	{value: 0x0015, lo: 0x90, hi: 0x9c},
+	// Block 0x64, offset 0x2be
+	{value: 0x0024, lo: 0x90, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x93},
+	{value: 0x0024, lo: 0x94, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x9a},
+	{value: 0x0024, lo: 0x9b, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0xa0},
+	{value: 0x0024, lo: 0xa1, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa4},
+	{value: 0x0034, lo: 0xa5, hi: 0xa6},
+	{value: 0x0024, lo: 0xa7, hi: 0xa7},
+	{value: 0x0034, lo: 0xa8, hi: 0xa8},
+	{value: 0x0024, lo: 0xa9, hi: 0xa9},
+	{value: 0x0034, lo: 0xaa, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	// Block 0x65, offset 0x2cc
+	{value: 0x0016, lo: 0x85, hi: 0x86},
+	{value: 0x0012, lo: 0x87, hi: 0x89},
+	{value: 0xa452, lo: 0x8e, hi: 0x8e},
+	{value: 0x1013, lo: 0xa0, hi: 0xaf},
+	{value: 0x1012, lo: 0xb0, hi: 0xbf},
+	// Block 0x66, offset 0x2d1
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x88},
+	// Block 0x67, offset 0x2d4
+	{value: 0xa753, lo: 0xb6, hi: 0xb7},
+	{value: 0xaa53, lo: 0xb8, hi: 0xb9},
+	{value: 0xad53, lo: 0xba, hi: 0xbb},
+	{value: 0xaa53, lo: 0xbc, hi: 0xbd},
+	{value: 0xa753, lo: 0xbe, hi: 0xbf},
+	// Block 0x68, offset 0x2d9
+	{value: 0x3013, lo: 0x80, hi: 0x8f},
+	{value: 0x6553, lo: 0x90, hi: 0x9f},
+	{value: 0xb053, lo: 0xa0, hi: 0xaf},
+	{value: 0x3012, lo: 0xb0, hi: 0xbf},
+	// Block 0x69, offset 0x2dd
+	{value: 0x0117, lo: 0x80, hi: 0xa3},
+	{value: 0x0012, lo: 0xa4, hi: 0xa4},
+	{value: 0x0716, lo: 0xab, hi: 0xac},
+	{value: 0x0316, lo: 0xad, hi: 0xae},
+	{value: 0x0024, lo: 0xaf, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xb3},
+	// Block 0x6a, offset 0x2e3
+	{value: 0x6c52, lo: 0x80, hi: 0x9f},
+	{value: 0x7052, lo: 0xa0, hi: 0xa5},
+	{value: 0x7052, lo: 0xa7, hi: 0xa7},
+	{value: 0x7052, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x6b, offset 0x2e8
+	{value: 0x0010, lo: 0x80, hi: 0xa7},
+	{value: 0x0014, lo: 0xaf, hi: 0xaf},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x6c, offset 0x2eb
+	{value: 0x0010, lo: 0x80, hi: 0x96},
+	{value: 0x0010, lo: 0xa0, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xae},
+	{value: 0x0010, lo: 0xb0, hi: 0xb6},
+	{value: 0x0010, lo: 0xb8, hi: 0xbe},
+	// Block 0x6d, offset 0x2f0
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x88, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9e},
+	{value: 0x0024, lo: 0xa0, hi: 0xbf},
+	// Block 0x6e, offset 0x2f5
+	{value: 0x0014, lo: 0xaf, hi: 0xaf},
+	// Block 0x6f, offset 0x2f6
+	{value: 0x0014, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0xaa, hi: 0xad},
+	{value: 0x0030, lo: 0xae, hi: 0xaf},
+	{value: 0x0004, lo: 0xb1, hi: 0xb5},
+	{value: 0x0014, lo: 0xbb, hi: 0xbb},
+	{value: 0x0010, lo: 0xbc, hi: 0xbc},
+	// Block 0x70, offset 0x2fc
+	{value: 0x0034, lo: 0x99, hi: 0x9a},
+	{value: 0x0004, lo: 0x9b, hi: 0x9e},
+	// Block 0x71, offset 0x2fe
+	{value: 0x0004, lo: 0xbc, hi: 0xbe},
+	// Block 0x72, offset 0x2ff
+	{value: 0x0010, lo: 0x85, hi: 0xaf},
+	{value: 0x0010, lo: 0xb1, hi: 0xbf},
+	// Block 0x73, offset 0x301
+	{value: 0x0010, lo: 0x80, hi: 0x8e},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x74, offset 0x303
+	{value: 0x0010, lo: 0x80, hi: 0x94},
+	{value: 0x0014, lo: 0x95, hi: 0x95},
+	{value: 0x0010, lo: 0x96, hi: 0xbf},
+	// Block 0x75, offset 0x306
+	{value: 0x0010, lo: 0x80, hi: 0x8c},
+	// Block 0x76, offset 0x307
+	{value: 0x0010, lo: 0x90, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	// Block 0x77, offset 0x309
+	{value: 0x0010, lo: 0x80, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0010, lo: 0x90, hi: 0xab},
+	// Block 0x78, offset 0x30c
+	{value: 0x0117, lo: 0x80, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xae},
+	{value: 0x0024, lo: 0xaf, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb2},
+	{value: 0x0024, lo: 0xb4, hi: 0xbd},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x79, offset 0x312
+	{value: 0x0117, lo: 0x80, hi: 0x9b},
+	{value: 0x0015, lo: 0x9c, hi: 0x9d},
+	{value: 0x0024, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x7a, offset 0x316
+	{value: 0x0010, lo: 0x80, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb1},
+	// Block 0x7b, offset 0x318
+	{value: 0x0004, lo: 0x80, hi: 0x87},
+	{value: 0x0014, lo: 0x88, hi: 0xa1},
+	{value: 0x0117, lo: 0xa2, hi: 0xaf},
+	{value: 0x0012, lo: 0xb0, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xbf},
+	// Block 0x7c, offset 0x31d
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x0015, lo: 0xb0, hi: 0xb0},
+	{value: 0x0012, lo: 0xb1, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x8753, lo: 0xbd, hi: 0xbd},
+	{value: 0x0117, lo: 0xbe, hi: 0xbf},
+	// Block 0x7d, offset 0x324
+	{value: 0x0117, lo: 0x80, hi: 0x83},
+	{value: 0x6553, lo: 0x84, hi: 0x84},
+	{value: 0x908b, lo: 0x85, hi: 0x85},
+	{value: 0x8f53, lo: 0x86, hi: 0x86},
+	{value: 0x0f16, lo: 0x87, hi: 0x88},
+	{value: 0x0316, lo: 0x89, hi: 0x8a},
+	{value: 0x0117, lo: 0x90, hi: 0x91},
+	{value: 0x0012, lo: 0x93, hi: 0x93},
+	{value: 0x0012, lo: 0x95, hi: 0x95},
+	{value: 0x0117, lo: 0x96, hi: 0x99},
+	{value: 0x0015, lo: 0xb2, hi: 0xb4},
+	{value: 0x0316, lo: 0xb5, hi: 0xb6},
+	{value: 0x0010, lo: 0xb7, hi: 0xb7},
+	{value: 0x0015, lo: 0xb8, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbf},
+	// Block 0x7e, offset 0x334
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8a},
+	{value: 0x0014, lo: 0x8b, hi: 0x8b},
+	{value: 0x0010, lo: 0x8c, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa6},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0034, lo: 0xac, hi: 0xac},
+	// Block 0x7f, offset 0x33e
+	{value: 0x0010, lo: 0x80, hi: 0xb3},
+	// Block 0x80, offset 0x33f
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x85},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0024, lo: 0xa0, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb7},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0010, lo: 0xbd, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x81, offset 0x348
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0014, lo: 0xa6, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x82, offset 0x34c
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x91},
+	{value: 0x0010, lo: 0x92, hi: 0x92},
+	{value: 0x0030, lo: 0x93, hi: 0x93},
+	{value: 0x0010, lo: 0xa0, hi: 0xbc},
+	// Block 0x83, offset 0x351
+	{value: 0x0014, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xb9},
+	{value: 0x0010, lo: 0xba, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x84, offset 0x359
+	{value: 0x0030, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0014, lo: 0xa5, hi: 0xa5},
+	{value: 0x0004, lo: 0xa6, hi: 0xa6},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x85, offset 0x35f
+	{value: 0x0010, lo: 0x80, hi: 0xa8},
+	{value: 0x0014, lo: 0xa9, hi: 0xae},
+	{value: 0x0010, lo: 0xaf, hi: 0xb0},
+	{value: 0x0014, lo: 0xb1, hi: 0xb2},
+	{value: 0x0010, lo: 0xb3, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb6},
+	// Block 0x86, offset 0x365
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0010, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0004, lo: 0xb0, hi: 0xb0},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	// Block 0x87, offset 0x36f
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	{value: 0x0024, lo: 0xb2, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0024, lo: 0xb7, hi: 0xb8},
+	{value: 0x0024, lo: 0xbe, hi: 0xbf},
+	// Block 0x88, offset 0x374
+	{value: 0x0024, lo: 0x81, hi: 0x81},
+	{value: 0x0004, lo: 0x9d, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0010, lo: 0xb2, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb6},
+	// Block 0x89, offset 0x37d
+	{value: 0x0010, lo: 0x81, hi: 0x86},
+	{value: 0x0010, lo: 0x89, hi: 0x8e},
+	{value: 0x0010, lo: 0x91, hi: 0x96},
+	{value: 0x0010, lo: 0xa0, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xae},
+	{value: 0x0012, lo: 0xb0, hi: 0xbf},
+	// Block 0x8a, offset 0x383
+	{value: 0x0012, lo: 0x80, hi: 0x92},
+	{value: 0xb352, lo: 0x93, hi: 0x93},
+	{value: 0x0012, lo: 0x94, hi: 0x9a},
+	{value: 0x0014, lo: 0x9b, hi: 0x9b},
+	{value: 0x0015, lo: 0x9c, hi: 0x9f},
+	{value: 0x0012, lo: 0xa0, hi: 0xa8},
+	{value: 0x0015, lo: 0xa9, hi: 0xa9},
+	{value: 0x0004, lo: 0xaa, hi: 0xab},
+	{value: 0x74d2, lo: 0xb0, hi: 0xbf},
+	// Block 0x8b, offset 0x38c
+	{value: 0x78d2, lo: 0x80, hi: 0x8f},
+	{value: 0x7cd2, lo: 0x90, hi: 0x9f},
+	{value: 0x80d2, lo: 0xa0, hi: 0xaf},
+	{value: 0x7cd2, lo: 0xb0, hi: 0xbf},
+	// Block 0x8c, offset 0x390
+	{value: 0x0010, lo: 0x80, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xaa},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x8d, offset 0x398
+	{value: 0x0010, lo: 0x80, hi: 0xa3},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x8e, offset 0x39a
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x8b, hi: 0xbb},
+	// Block 0x8f, offset 0x39c
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x86, hi: 0xbf},
+	// Block 0x90, offset 0x39f
+	{value: 0x0010, lo: 0x80, hi: 0xb1},
+	{value: 0x0004, lo: 0xb2, hi: 0xbf},
+	// Block 0x91, offset 0x3a1
+	{value: 0x0004, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x93, hi: 0xbf},
+	// Block 0x92, offset 0x3a3
+	{value: 0x0010, lo: 0x80, hi: 0xbd},
+	// Block 0x93, offset 0x3a4
+	{value: 0x0010, lo: 0x90, hi: 0xbf},
+	// Block 0x94, offset 0x3a5
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x0010, lo: 0x92, hi: 0xbf},
+	// Block 0x95, offset 0x3a7
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0xb0, hi: 0xbb},
+	// Block 0x96, offset 0x3a9
+	{value: 0x0014, lo: 0x80, hi: 0x8f},
+	{value: 0x0054, lo: 0x93, hi: 0x93},
+	{value: 0x0024, lo: 0xa0, hi: 0xa6},
+	{value: 0x0034, lo: 0xa7, hi: 0xad},
+	{value: 0x0024, lo: 0xae, hi: 0xaf},
+	{value: 0x0010, lo: 0xb3, hi: 0xb4},
+	// Block 0x97, offset 0x3af
+	{value: 0x0010, lo: 0x8d, hi: 0x8f},
+	{value: 0x0054, lo: 0x92, hi: 0x92},
+	{value: 0x0054, lo: 0x95, hi: 0x95},
+	{value: 0x0010, lo: 0xb0, hi: 0xb4},
+	{value: 0x0010, lo: 0xb6, hi: 0xbf},
+	// Block 0x98, offset 0x3b4
+	{value: 0x0010, lo: 0x80, hi: 0xbc},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x99, offset 0x3b6
+	{value: 0x0054, lo: 0x87, hi: 0x87},
+	{value: 0x0054, lo: 0x8e, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0054, lo: 0x9a, hi: 0x9a},
+	{value: 0x5f53, lo: 0xa1, hi: 0xba},
+	{value: 0x0004, lo: 0xbe, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x9a, offset 0x3bd
+	{value: 0x0004, lo: 0x80, hi: 0x80},
+	{value: 0x5f52, lo: 0x81, hi: 0x9a},
+	{value: 0x0004, lo: 0xb0, hi: 0xb0},
+	// Block 0x9b, offset 0x3c0
+	{value: 0x0014, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xbe},
+	// Block 0x9c, offset 0x3c2
+	{value: 0x0010, lo: 0x82, hi: 0x87},
+	{value: 0x0010, lo: 0x8a, hi: 0x8f},
+	{value: 0x0010, lo: 0x92, hi: 0x97},
+	{value: 0x0010, lo: 0x9a, hi: 0x9c},
+	{value: 0x0004, lo: 0xa3, hi: 0xa3},
+	{value: 0x0014, lo: 0xb9, hi: 0xbb},
+	// Block 0x9d, offset 0x3c8
+	{value: 0x0010, lo: 0x80, hi: 0x8b},
+	{value: 0x0010, lo: 0x8d, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xba},
+	{value: 0x0010, lo: 0xbc, hi: 0xbd},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x9e, offset 0x3cd
+	{value: 0x0010, lo: 0x80, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x9d},
+	// Block 0x9f, offset 0x3cf
+	{value: 0x0010, lo: 0x80, hi: 0xba},
+	// Block 0xa0, offset 0x3d0
+	{value: 0x0010, lo: 0x80, hi: 0xb4},
+	// Block 0xa1, offset 0x3d1
+	{value: 0x0034, lo: 0xbd, hi: 0xbd},
+	// Block 0xa2, offset 0x3d2
+	{value: 0x0010, lo: 0x80, hi: 0x9c},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0xa3, offset 0x3d4
+	{value: 0x0010, lo: 0x80, hi: 0x90},
+	{value: 0x0034, lo: 0xa0, hi: 0xa0},
+	// Block 0xa4, offset 0x3d6
+	{value: 0x0010, lo: 0x80, hi: 0x9f},
+	{value: 0x0010, lo: 0xad, hi: 0xbf},
+	// Block 0xa5, offset 0x3d8
+	{value: 0x0010, lo: 0x80, hi: 0x8a},
+	{value: 0x0010, lo: 0x90, hi: 0xb5},
+	{value: 0x0024, lo: 0xb6, hi: 0xba},
+	// Block 0xa6, offset 0x3db
+	{value: 0x0010, lo: 0x80, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0xa7, offset 0x3dd
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x88, hi: 0x8f},
+	{value: 0x0010, lo: 0x91, hi: 0x95},
+	// Block 0xa8, offset 0x3e0
+	{value: 0x2813, lo: 0x80, hi: 0x87},
+	{value: 0x3813, lo: 0x88, hi: 0x8f},
+	{value: 0x2813, lo: 0x90, hi: 0x97},
+	{value: 0xb653, lo: 0x98, hi: 0x9f},
+	{value: 0xb953, lo: 0xa0, hi: 0xa7},
+	{value: 0x2812, lo: 0xa8, hi: 0xaf},
+	{value: 0x3812, lo: 0xb0, hi: 0xb7},
+	{value: 0x2812, lo: 0xb8, hi: 0xbf},
+	// Block 0xa9, offset 0x3e8
+	{value: 0xb652, lo: 0x80, hi: 0x87},
+	{value: 0xb952, lo: 0x88, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0xbf},
+	// Block 0xaa, offset 0x3eb
+	{value: 0x0010, lo: 0x80, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0xb953, lo: 0xb0, hi: 0xb7},
+	{value: 0xb653, lo: 0xb8, hi: 0xbf},
+	// Block 0xab, offset 0x3ef
+	{value: 0x2813, lo: 0x80, hi: 0x87},
+	{value: 0x3813, lo: 0x88, hi: 0x8f},
+	{value: 0x2813, lo: 0x90, hi: 0x93},
+	{value: 0xb952, lo: 0x98, hi: 0x9f},
+	{value: 0xb652, lo: 0xa0, hi: 0xa7},
+	{value: 0x2812, lo: 0xa8, hi: 0xaf},
+	{value: 0x3812, lo: 0xb0, hi: 0xb7},
+	{value: 0x2812, lo: 0xb8, hi: 0xbb},
+	// Block 0xac, offset 0x3f7
+	{value: 0x0010, lo: 0x80, hi: 0xa7},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xad, offset 0x3f9
+	{value: 0x0010, lo: 0x80, hi: 0xa3},
+	{value: 0xbc53, lo: 0xb0, hi: 0xb0},
+	{value: 0xbf53, lo: 0xb1, hi: 0xb1},
+	{value: 0xc253, lo: 0xb2, hi: 0xb2},
+	{value: 0xbf53, lo: 0xb3, hi: 0xb3},
+	{value: 0xc553, lo: 0xb4, hi: 0xb4},
+	{value: 0xbf53, lo: 0xb5, hi: 0xb5},
+	{value: 0xc253, lo: 0xb6, hi: 0xb6},
+	{value: 0xbf53, lo: 0xb7, hi: 0xb7},
+	{value: 0xbc53, lo: 0xb8, hi: 0xb8},
+	{value: 0xc853, lo: 0xb9, hi: 0xb9},
+	{value: 0xcb53, lo: 0xba, hi: 0xba},
+	{value: 0xce53, lo: 0xbc, hi: 0xbc},
+	{value: 0xc853, lo: 0xbd, hi: 0xbd},
+	{value: 0xcb53, lo: 0xbe, hi: 0xbe},
+	{value: 0xc853, lo: 0xbf, hi: 0xbf},
+	// Block 0xae, offset 0x409
+	{value: 0x0010, lo: 0x80, hi: 0xb6},
+	// Block 0xaf, offset 0x40a
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xa7},
+	// Block 0xb0, offset 0x40c
+	{value: 0x0015, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0015, lo: 0x83, hi: 0x85},
+	{value: 0x0015, lo: 0x87, hi: 0xb0},
+	{value: 0x0015, lo: 0xb2, hi: 0xba},
+	// Block 0xb1, offset 0x411
+	{value: 0x0010, lo: 0x80, hi: 0x85},
+	{value: 0x0010, lo: 0x88, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0xb5},
+	{value: 0x0010, lo: 0xb7, hi: 0xb8},
+	{value: 0x0010, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xb2, offset 0x417
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb6},
+	// Block 0xb3, offset 0x419
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	// Block 0xb4, offset 0x41a
+	{value: 0x0010, lo: 0xa0, hi: 0xb2},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	// Block 0xb5, offset 0x41c
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb9},
+	// Block 0xb6, offset 0x41e
+	{value: 0x0010, lo: 0x80, hi: 0xb7},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0xb7, offset 0x420
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x83},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x8e, hi: 0x8e},
+	{value: 0x0024, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x93},
+	{value: 0x0010, lo: 0x95, hi: 0x97},
+	{value: 0x0010, lo: 0x99, hi: 0xb5},
+	{value: 0x0024, lo: 0xb8, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xb8, offset 0x42d
+	{value: 0x0010, lo: 0xa0, hi: 0xbc},
+	// Block 0xb9, offset 0x42e
+	{value: 0x0010, lo: 0x80, hi: 0x9c},
+	// Block 0xba, offset 0x42f
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0x89, hi: 0xa4},
+	{value: 0x0024, lo: 0xa5, hi: 0xa5},
+	{value: 0x0034, lo: 0xa6, hi: 0xa6},
+	// Block 0xbb, offset 0x433
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb2},
+	// Block 0xbc, offset 0x435
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	// Block 0xbd, offset 0x436
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	// Block 0xbe, offset 0x437
+	{value: 0x5653, lo: 0x80, hi: 0xb2},
+	// Block 0xbf, offset 0x438
+	{value: 0x5652, lo: 0x80, hi: 0xb2},
+	// Block 0xc0, offset 0x439
+	{value: 0x0010, lo: 0x80, hi: 0xa3},
+	{value: 0x0024, lo: 0xa4, hi: 0xa7},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xc1, offset 0x43c
+	{value: 0x0010, lo: 0x80, hi: 0xa9},
+	{value: 0x0024, lo: 0xab, hi: 0xac},
+	{value: 0x0010, lo: 0xb0, hi: 0xb1},
+	// Block 0xc2, offset 0x43f
+	{value: 0x0034, lo: 0xbd, hi: 0xbf},
+	// Block 0xc3, offset 0x440
+	{value: 0x0010, lo: 0x80, hi: 0x9c},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xc4, offset 0x443
+	{value: 0x0010, lo: 0x80, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x87},
+	{value: 0x0024, lo: 0x88, hi: 0x8a},
+	{value: 0x0034, lo: 0x8b, hi: 0x8b},
+	{value: 0x0024, lo: 0x8c, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x90},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xc5, offset 0x44a
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0024, lo: 0x82, hi: 0x82},
+	{value: 0x0034, lo: 0x83, hi: 0x83},
+	{value: 0x0024, lo: 0x84, hi: 0x84},
+	{value: 0x0034, lo: 0x85, hi: 0x85},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xc6, offset 0x450
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0010, lo: 0xa0, hi: 0xb6},
+	// Block 0xc7, offset 0x452
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbf},
+	// Block 0xc8, offset 0x456
+	{value: 0x0014, lo: 0x80, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0034, lo: 0xb0, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xc9, offset 0x45e
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb6},
+	{value: 0x0010, lo: 0xb7, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0014, lo: 0xbd, hi: 0xbd},
+	// Block 0xca, offset 0x464
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0014, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0xa8},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xcb, offset 0x468
+	{value: 0x0024, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xab},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb4},
+	{value: 0x0010, lo: 0xb6, hi: 0xbf},
+	// Block 0xcc, offset 0x46f
+	{value: 0x0010, lo: 0x84, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb3},
+	{value: 0x0010, lo: 0xb6, hi: 0xb6},
+	// Block 0xcd, offset 0x473
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xce, offset 0x477
+	{value: 0x0030, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0014, lo: 0x89, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0014, lo: 0x8b, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x8e},
+	{value: 0x0014, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x9a},
+	{value: 0x0010, lo: 0x9c, hi: 0x9c},
+	// Block 0xcf, offset 0x480
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	{value: 0x0010, lo: 0x93, hi: 0xae},
+	{value: 0x0014, lo: 0xaf, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0014, lo: 0xb4, hi: 0xb4},
+	{value: 0x0030, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb6},
+	{value: 0x0014, lo: 0xb7, hi: 0xb7},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xd0, offset 0x48a
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	// Block 0xd1, offset 0x48c
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x88, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa8},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xd2, offset 0x492
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0014, lo: 0x9f, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa2},
+	{value: 0x0014, lo: 0xa3, hi: 0xa8},
+	{value: 0x0034, lo: 0xa9, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xd3, offset 0x498
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbb, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0xd4, offset 0x4a2
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0030, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9d, hi: 0xa3},
+	{value: 0x0024, lo: 0xa6, hi: 0xac},
+	{value: 0x0024, lo: 0xb0, hi: 0xb4},
+	// Block 0xd5, offset 0x4ac
+	{value: 0x0010, lo: 0x80, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbf},
+	// Block 0xd6, offset 0x4ae
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8a},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0024, lo: 0x9e, hi: 0x9e},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	// Block 0xd7, offset 0x4b7
+	{value: 0x0010, lo: 0x80, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb8},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0xd8, offset 0x4bd
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0x85},
+	{value: 0x0010, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xd9, offset 0x4c3
+	{value: 0x0010, lo: 0x80, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb5},
+	{value: 0x0010, lo: 0xb8, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xda, offset 0x4c9
+	{value: 0x0034, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x98, hi: 0x9b},
+	{value: 0x0014, lo: 0x9c, hi: 0x9d},
+	// Block 0xdb, offset 0x4cc
+	{value: 0x0010, lo: 0x80, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbc},
+	{value: 0x0014, lo: 0xbd, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xdc, offset 0x4d2
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x84, hi: 0x84},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xdd, offset 0x4d5
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0014, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb5},
+	{value: 0x0030, lo: 0xb6, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	{value: 0x0010, lo: 0xb8, hi: 0xb8},
+	// Block 0xde, offset 0x4de
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	// Block 0xdf, offset 0x4df
+	{value: 0x0014, lo: 0x9d, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xe0, offset 0x4e6
+	{value: 0x0010, lo: 0x80, hi: 0xae},
+	{value: 0x0014, lo: 0xaf, hi: 0xb7},
+	{value: 0x0010, lo: 0xb8, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	// Block 0xe1, offset 0x4ea
+	{value: 0x5f53, lo: 0xa0, hi: 0xbf},
+	// Block 0xe2, offset 0x4eb
+	{value: 0x5f52, lo: 0x80, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xe3, offset 0x4ee
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x89, hi: 0x89},
+	{value: 0x0010, lo: 0x8c, hi: 0x93},
+	{value: 0x0010, lo: 0x95, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0xb5},
+	{value: 0x0010, lo: 0xb7, hi: 0xb8},
+	{value: 0x0014, lo: 0xbb, hi: 0xbc},
+	{value: 0x0030, lo: 0xbd, hi: 0xbd},
+	{value: 0x0034, lo: 0xbe, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xe4, offset 0x4f8
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0034, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xe5, offset 0x4fb
+	{value: 0x0010, lo: 0xa0, hi: 0xa7},
+	{value: 0x0010, lo: 0xaa, hi: 0xbf},
+	// Block 0xe6, offset 0x4fd
+	{value: 0x0010, lo: 0x80, hi: 0x93},
+	{value: 0x0014, lo: 0x94, hi: 0x97},
+	{value: 0x0014, lo: 0x9a, hi: 0x9b},
+	{value: 0x0010, lo: 0x9c, hi: 0x9f},
+	{value: 0x0034, lo: 0xa0, hi: 0xa0},
+	{value: 0x0010, lo: 0xa1, hi: 0xa1},
+	{value: 0x0010, lo: 0xa3, hi: 0xa4},
+	// Block 0xe7, offset 0x504
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x8a},
+	{value: 0x0010, lo: 0x8b, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb8},
+	{value: 0x0010, lo: 0xb9, hi: 0xba},
+	{value: 0x0014, lo: 0xbb, hi: 0xbe},
+	// Block 0xe8, offset 0x50c
+	{value: 0x0034, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0014, lo: 0x91, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x98},
+	{value: 0x0014, lo: 0x99, hi: 0x9b},
+	{value: 0x0010, lo: 0x9c, hi: 0xbf},
+	// Block 0xe9, offset 0x512
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0014, lo: 0x8a, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0014, lo: 0x98, hi: 0x98},
+	{value: 0x0034, lo: 0x99, hi: 0x99},
+	{value: 0x0010, lo: 0x9d, hi: 0x9d},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xea, offset 0x519
+	{value: 0x0010, lo: 0x80, hi: 0xb8},
+	// Block 0xeb, offset 0x51a
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb6},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xec, offset 0x520
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xb2, hi: 0xbf},
+	// Block 0xed, offset 0x523
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x0014, lo: 0x92, hi: 0xa7},
+	{value: 0x0010, lo: 0xa9, hi: 0xa9},
+	{value: 0x0014, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb6},
+	// Block 0xee, offset 0x52b
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x88, hi: 0x89},
+	{value: 0x0010, lo: 0x8b, hi: 0xb0},
+	{value: 0x0014, lo: 0xb1, hi: 0xb6},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0014, lo: 0xbc, hi: 0xbd},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0xef, offset 0x532
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x85},
+	{value: 0x0010, lo: 0x86, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xa0, hi: 0xa5},
+	{value: 0x0010, lo: 0xa7, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xbf},
+	// Block 0xf0, offset 0x53c
+	{value: 0x0010, lo: 0x80, hi: 0x8e},
+	{value: 0x0014, lo: 0x90, hi: 0x91},
+	{value: 0x0010, lo: 0x93, hi: 0x94},
+	{value: 0x0014, lo: 0x95, hi: 0x95},
+	{value: 0x0010, lo: 0x96, hi: 0x96},
+	{value: 0x0034, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x98, hi: 0x98},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	// Block 0xf1, offset 0x544
+	{value: 0x0010, lo: 0xa0, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb6},
+	// Block 0xf2, offset 0x547
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xba},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0xf3, offset 0x54c
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0030, lo: 0x81, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xf4, offset 0x550
+	{value: 0x0010, lo: 0xb0, hi: 0xb0},
+	// Block 0xf5, offset 0x551
+	{value: 0x0010, lo: 0x80, hi: 0x99},
+	// Block 0xf6, offset 0x552
+	{value: 0x0010, lo: 0x80, hi: 0xae},
+	// Block 0xf7, offset 0x553
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	// Block 0xf8, offset 0x554
+	{value: 0x0010, lo: 0x80, hi: 0xb0},
+	// Block 0xf9, offset 0x555
+	{value: 0x0010, lo: 0x80, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xbf},
+	// Block 0xfa, offset 0x557
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x95},
+	// Block 0xfb, offset 0x55a
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	// Block 0xfc, offset 0x55b
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xfd, offset 0x55e
+	{value: 0x0010, lo: 0x80, hi: 0xbe},
+	// Block 0xfe, offset 0x55f
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x90, hi: 0xad},
+	{value: 0x0034, lo: 0xb0, hi: 0xb4},
+	// Block 0xff, offset 0x562
+	{value: 0x0010, lo: 0x80, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb6},
+	// Block 0x100, offset 0x564
+	{value: 0x0014, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xa3, hi: 0xb7},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x101, offset 0x568
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	// Block 0x102, offset 0x569
+	{value: 0x2013, lo: 0x80, hi: 0x9f},
+	{value: 0x2012, lo: 0xa0, hi: 0xbf},
+	// Block 0x103, offset 0x56b
+	{value: 0x0010, lo: 0x80, hi: 0x8a},
+	{value: 0x0014, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0xbf},
+	// Block 0x104, offset 0x56e
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0014, lo: 0x8f, hi: 0x9f},
+	// Block 0x105, offset 0x570
+	{value: 0x0014, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa3, hi: 0xa4},
+	{value: 0x0030, lo: 0xb0, hi: 0xb1},
+	// Block 0x106, offset 0x573
+	{value: 0x0004, lo: 0xb0, hi: 0xb3},
+	{value: 0x0004, lo: 0xb5, hi: 0xbb},
+	{value: 0x0004, lo: 0xbd, hi: 0xbe},
+	// Block 0x107, offset 0x576
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xbc},
+	// Block 0x108, offset 0x578
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x0034, lo: 0x9e, hi: 0x9e},
+	{value: 0x0014, lo: 0xa0, hi: 0xa3},
+	// Block 0x109, offset 0x57d
+	{value: 0x0014, lo: 0x80, hi: 0xad},
+	{value: 0x0014, lo: 0xb0, hi: 0xbf},
+	// Block 0x10a, offset 0x57f
+	{value: 0x0014, lo: 0x80, hi: 0x86},
+	// Block 0x10b, offset 0x580
+	{value: 0x0030, lo: 0xa5, hi: 0xa6},
+	{value: 0x0034, lo: 0xa7, hi: 0xa9},
+	{value: 0x0030, lo: 0xad, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbf},
+	// Block 0x10c, offset 0x585
+	{value: 0x0034, lo: 0x80, hi: 0x82},
+	{value: 0x0024, lo: 0x85, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8b},
+	{value: 0x0024, lo: 0xaa, hi: 0xad},
+	// Block 0x10d, offset 0x589
+	{value: 0x0024, lo: 0x82, hi: 0x84},
+	// Block 0x10e, offset 0x58a
+	{value: 0x0013, lo: 0x80, hi: 0x99},
+	{value: 0x0012, lo: 0x9a, hi: 0xb3},
+	{value: 0x0013, lo: 0xb4, hi: 0xbf},
+	// Block 0x10f, offset 0x58d
+	{value: 0x0013, lo: 0x80, hi: 0x8d},
+	{value: 0x0012, lo: 0x8e, hi: 0x94},
+	{value: 0x0012, lo: 0x96, hi: 0xa7},
+	{value: 0x0013, lo: 0xa8, hi: 0xbf},
+	// Block 0x110, offset 0x591
+	{value: 0x0013, lo: 0x80, hi: 0x81},
+	{value: 0x0012, lo: 0x82, hi: 0x9b},
+	{value: 0x0013, lo: 0x9c, hi: 0x9c},
+	{value: 0x0013, lo: 0x9e, hi: 0x9f},
+	{value: 0x0013, lo: 0xa2, hi: 0xa2},
+	{value: 0x0013, lo: 0xa5, hi: 0xa6},
+	{value: 0x0013, lo: 0xa9, hi: 0xac},
+	{value: 0x0013, lo: 0xae, hi: 0xb5},
+	{value: 0x0012, lo: 0xb6, hi: 0xb9},
+	{value: 0x0012, lo: 0xbb, hi: 0xbb},
+	{value: 0x0012, lo: 0xbd, hi: 0xbf},
+	// Block 0x111, offset 0x59c
+	{value: 0x0012, lo: 0x80, hi: 0x83},
+	{value: 0x0012, lo: 0x85, hi: 0x8f},
+	{value: 0x0013, lo: 0x90, hi: 0xa9},
+	{value: 0x0012, lo: 0xaa, hi: 0xbf},
+	// Block 0x112, offset 0x5a0
+	{value: 0x0012, lo: 0x80, hi: 0x83},
+	{value: 0x0013, lo: 0x84, hi: 0x85},
+	{value: 0x0013, lo: 0x87, hi: 0x8a},
+	{value: 0x0013, lo: 0x8d, hi: 0x94},
+	{value: 0x0013, lo: 0x96, hi: 0x9c},
+	{value: 0x0012, lo: 0x9e, hi: 0xb7},
+	{value: 0x0013, lo: 0xb8, hi: 0xb9},
+	{value: 0x0013, lo: 0xbb, hi: 0xbe},
+	// Block 0x113, offset 0x5a8
+	{value: 0x0013, lo: 0x80, hi: 0x84},
+	{value: 0x0013, lo: 0x86, hi: 0x86},
+	{value: 0x0013, lo: 0x8a, hi: 0x90},
+	{value: 0x0012, lo: 0x92, hi: 0xab},
+	{value: 0x0013, lo: 0xac, hi: 0xbf},
+	// Block 0x114, offset 0x5ad
+	{value: 0x0013, lo: 0x80, hi: 0x85},
+	{value: 0x0012, lo: 0x86, hi: 0x9f},
+	{value: 0x0013, lo: 0xa0, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xbf},
+	// Block 0x115, offset 0x5b1
+	{value: 0x0012, lo: 0x80, hi: 0x93},
+	{value: 0x0013, lo: 0x94, hi: 0xad},
+	{value: 0x0012, lo: 0xae, hi: 0xbf},
+	// Block 0x116, offset 0x5b4
+	{value: 0x0012, lo: 0x80, hi: 0x87},
+	{value: 0x0013, lo: 0x88, hi: 0xa1},
+	{value: 0x0012, lo: 0xa2, hi: 0xbb},
+	{value: 0x0013, lo: 0xbc, hi: 0xbf},
+	// Block 0x117, offset 0x5b8
+	{value: 0x0013, lo: 0x80, hi: 0x95},
+	{value: 0x0012, lo: 0x96, hi: 0xaf},
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0x118, offset 0x5bb
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	{value: 0x0012, lo: 0x8a, hi: 0xa5},
+	{value: 0x0013, lo: 0xa8, hi: 0xbf},
+	// Block 0x119, offset 0x5be
+	{value: 0x0013, lo: 0x80, hi: 0x80},
+	{value: 0x0012, lo: 0x82, hi: 0x9a},
+	{value: 0x0012, lo: 0x9c, hi: 0xa1},
+	{value: 0x0013, lo: 0xa2, hi: 0xba},
+	{value: 0x0012, lo: 0xbc, hi: 0xbf},
+	// Block 0x11a, offset 0x5c3
+	{value: 0x0012, lo: 0x80, hi: 0x94},
+	{value: 0x0012, lo: 0x96, hi: 0x9b},
+	{value: 0x0013, lo: 0x9c, hi: 0xb4},
+	{value: 0x0012, lo: 0xb6, hi: 0xbf},
+	// Block 0x11b, offset 0x5c7
+	{value: 0x0012, lo: 0x80, hi: 0x8e},
+	{value: 0x0012, lo: 0x90, hi: 0x95},
+	{value: 0x0013, lo: 0x96, hi: 0xae},
+	{value: 0x0012, lo: 0xb0, hi: 0xbf},
+	// Block 0x11c, offset 0x5cb
+	{value: 0x0012, lo: 0x80, hi: 0x88},
+	{value: 0x0012, lo: 0x8a, hi: 0x8f},
+	{value: 0x0013, lo: 0x90, hi: 0xa8},
+	{value: 0x0012, lo: 0xaa, hi: 0xbf},
+	// Block 0x11d, offset 0x5cf
+	{value: 0x0012, lo: 0x80, hi: 0x82},
+	{value: 0x0012, lo: 0x84, hi: 0x89},
+	{value: 0x0017, lo: 0x8a, hi: 0x8b},
+	{value: 0x0010, lo: 0x8e, hi: 0xbf},
+	// Block 0x11e, offset 0x5d3
+	{value: 0x0014, lo: 0x80, hi: 0xb6},
+	{value: 0x0014, lo: 0xbb, hi: 0xbf},
+	// Block 0x11f, offset 0x5d5
+	{value: 0x0014, lo: 0x80, hi: 0xac},
+	{value: 0x0014, lo: 0xb5, hi: 0xb5},
+	// Block 0x120, offset 0x5d7
+	{value: 0x0014, lo: 0x84, hi: 0x84},
+	{value: 0x0014, lo: 0x9b, hi: 0x9f},
+	{value: 0x0014, lo: 0xa1, hi: 0xaf},
+	// Block 0x121, offset 0x5da
+	{value: 0x0012, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x8a, hi: 0x8a},
+	{value: 0x0012, lo: 0x8b, hi: 0x9e},
+	{value: 0x0012, lo: 0xa5, hi: 0xaa},
+	// Block 0x122, offset 0x5de
+	{value: 0x0024, lo: 0x80, hi: 0x86},
+	{value: 0x0024, lo: 0x88, hi: 0x98},
+	{value: 0x0024, lo: 0x9b, hi: 0xa1},
+	{value: 0x0024, lo: 0xa3, hi: 0xa4},
+	{value: 0x0024, lo: 0xa6, hi: 0xaa},
+	{value: 0x0015, lo: 0xb0, hi: 0xbf},
+	// Block 0x123, offset 0x5e4
+	{value: 0x0015, lo: 0x80, hi: 0xad},
+	// Block 0x124, offset 0x5e5
+	{value: 0x0024, lo: 0x8f, hi: 0x8f},
+	// Block 0x125, offset 0x5e6
+	{value: 0x0010, lo: 0x80, hi: 0xac},
+	{value: 0x0024, lo: 0xb0, hi: 0xb6},
+	{value: 0x0014, lo: 0xb7, hi: 0xbd},
+	// Block 0x126, offset 0x5e9
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x8e, hi: 0x8e},
+	// Block 0x127, offset 0x5eb
+	{value: 0x0010, lo: 0x90, hi: 0xad},
+	{value: 0x0024, lo: 0xae, hi: 0xae},
+	// Block 0x128, offset 0x5ed
+	{value: 0x0010, lo: 0x80, hi: 0xab},
+	{value: 0x0024, lo: 0xac, hi: 0xaf},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x129, offset 0x5f0
+	{value: 0x0010, lo: 0x90, hi: 0xaa},
+	{value: 0x0014, lo: 0xab, hi: 0xab},
+	{value: 0x0034, lo: 0xac, hi: 0xae},
+	{value: 0x0024, lo: 0xaf, hi: 0xaf},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x12a, offset 0x5f5
+	{value: 0x0010, lo: 0xa0, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xab},
+	{value: 0x0010, lo: 0xad, hi: 0xae},
+	{value: 0x0010, lo: 0xb0, hi: 0xbe},
+	// Block 0x12b, offset 0x5f9
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0034, lo: 0x90, hi: 0x96},
+	// Block 0x12c, offset 0x5fb
+	{value: 0xd152, lo: 0x80, hi: 0x81},
+	{value: 0xd452, lo: 0x82, hi: 0x83},
+	{value: 0x0024, lo: 0x84, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0014, lo: 0x8b, hi: 0x8b},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x12d, offset 0x601
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x9f},
+	{value: 0x0010, lo: 0xa1, hi: 0xa2},
+	{value: 0x0010, lo: 0xa4, hi: 0xa4},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0010, lo: 0xa9, hi: 0xb2},
+	{value: 0x0010, lo: 0xb4, hi: 0xb7},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	// Block 0x12e, offset 0x60a
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x8b, hi: 0x9b},
+	{value: 0x0010, lo: 0xa1, hi: 0xa3},
+	{value: 0x0010, lo: 0xa5, hi: 0xa9},
+	{value: 0x0010, lo: 0xab, hi: 0xbb},
+	// Block 0x12f, offset 0x60f
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0x130, offset 0x610
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	{value: 0x0013, lo: 0x90, hi: 0xa9},
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0x131, offset 0x613
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	// Block 0x132, offset 0x614
+	{value: 0x0014, lo: 0xbb, hi: 0xbf},
+	// Block 0x133, offset 0x615
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x134, offset 0x616
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0014, lo: 0xa0, hi: 0xbf},
+	// Block 0x135, offset 0x618
+	{value: 0x0014, lo: 0x80, hi: 0xbf},
+	// Block 0x136, offset 0x619
+	{value: 0x0014, lo: 0x80, hi: 0xaf},
+}
+
+// Total table size 16093 bytes (15KiB); checksum: EE91C452
diff --git a/vendor/golang.org/x/text/cases/tables9.0.0.go b/vendor/golang.org/x/text/cases/tables9.0.0.go
new file mode 100644
index 00000000..3aeb7be6
--- /dev/null
+++ b/vendor/golang.org/x/text/cases/tables9.0.0.go
@@ -0,0 +1,2215 @@
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
+
+//go:build !go1.10
+
+package cases
+
+// UnicodeVersion is the Unicode version from which the tables in this package are derived.
+const UnicodeVersion = "9.0.0"
+
+var xorData string = "" + // Size: 185 bytes
+	"\x00\x06\x07\x00\x01?\x00\x0f\x03\x00\x0f\x12\x00\x0f\x1f\x00\x0f\x1d" +
+	"\x00\x01\x13\x00\x0f\x16\x00\x0f\x0b\x00\x0f3\x00\x0f7\x00\x01#\x00\x0f?" +
+	"\x00\x0e'\x00\x0f/\x00\x0e>\x00\x0f*\x00\x0c&\x00\x0c*\x00\x0c;\x00\x0c9" +
+	"\x00\x0c%\x00\x01\x08\x00\x03\x0d\x00\x03\x09\x00\x02\x06\x00\x02\x02" +
+	"\x00\x02\x0c\x00\x01\x00\x00\x01\x03\x00\x01\x01\x00\x01 \x00\x01\x0c" +
+	"\x00\x01\x10\x00\x03\x10\x00\x036 \x00\x037 \x00\x0b#\x10\x00\x0b 0\x00" +
+	"\x0b!\x10\x00\x0b!0\x00\x0b(\x04\x00\x03\x04\x1e\x00\x03\x0a\x00\x02:" +
+	"\x00\x02>\x00\x02,\x00\x02\x00\x00\x02\x10\x00\x01<\x00\x01&\x00\x01*" +
+	"\x00\x01.\x00\x010\x003 \x00\x01\x18\x00\x01(\x00\x01\x1e\x00\x01\x22"
+
+var exceptions string = "" + // Size: 2068 bytes
+	"\x00\x12\x12μΜΜ\x12\x12ssSSSs\x13\x18i̇i̇\x10\x09II\x13\x1bʼnʼNʼN\x11" +
+	"\x09sSS\x12\x12dždžDž\x12\x12dždžDŽ\x10\x12DŽDž\x12\x12ljljLj\x12\x12ljljLJ\x10\x12LJLj" +
+	"\x12\x12njnjNj\x12\x12njnjNJ\x10\x12NJNj\x13\x1bǰJ̌J̌\x12\x12dzdzDz\x12\x12dzdzDZ\x10" +
+	"\x12DZDz\x13\x18ⱥⱥ\x13\x18ⱦⱦ\x10\x1bⱾⱾ\x10\x1bⱿⱿ\x10\x1bⱯⱯ\x10\x1bⱭⱭ\x10" +
+	"\x1bⱰⱰ\x10\x1bꞫꞫ\x10\x1bꞬꞬ\x10\x1bꞍꞍ\x10\x1bꞪꞪ\x10\x1bꞮꞮ\x10\x1bⱢⱢ\x10" +
+	"\x1bꞭꞭ\x10\x1bⱮⱮ\x10\x1bⱤⱤ\x10\x1bꞱꞱ\x10\x1bꞲꞲ\x10\x1bꞰꞰ2\x12ιΙΙ\x166ΐ" +
+	"Ϊ́Ϊ́\x166ΰΫ́Ϋ́\x12\x12σΣΣ\x12\x12βΒΒ\x12\x12θΘΘ\x12\x12φΦΦ\x12" +
+	"\x12πΠΠ\x12\x12κΚΚ\x12\x12ρΡΡ\x12\x12εΕΕ\x14$եւԵՒԵւ\x12\x12вВВ\x12\x12дД" +
+	"Д\x12\x12оОО\x12\x12сСС\x12\x12тТТ\x12\x12тТТ\x12\x12ъЪЪ\x12\x12ѣѢѢ\x13" +
+	"\x1bꙋꙊꙊ\x13\x1bẖH̱H̱\x13\x1bẗT̈T̈\x13\x1bẘW̊W̊\x13\x1bẙY̊Y̊\x13\x1ba" +
+	"ʾAʾAʾ\x13\x1bṡṠṠ\x12\x10ssß\x14$ὐΥ̓Υ̓\x166ὒΥ̓̀Υ̓̀\x166ὔΥ̓́Υ̓́\x166" +
+	"ὖΥ̓͂Υ̓͂\x15+ἀιἈΙᾈ\x15+ἁιἉΙᾉ\x15+ἂιἊΙᾊ\x15+ἃιἋΙᾋ\x15+ἄιἌΙᾌ\x15+ἅιἍΙᾍ" +
+	"\x15+ἆιἎΙᾎ\x15+ἇιἏΙᾏ\x15\x1dἀιᾀἈΙ\x15\x1dἁιᾁἉΙ\x15\x1dἂιᾂἊΙ\x15\x1dἃιᾃἋΙ" +
+	"\x15\x1dἄιᾄἌΙ\x15\x1dἅιᾅἍΙ\x15\x1dἆιᾆἎΙ\x15\x1dἇιᾇἏΙ\x15+ἠιἨΙᾘ\x15+ἡιἩΙᾙ" +
+	"\x15+ἢιἪΙᾚ\x15+ἣιἫΙᾛ\x15+ἤιἬΙᾜ\x15+ἥιἭΙᾝ\x15+ἦιἮΙᾞ\x15+ἧιἯΙᾟ\x15\x1dἠιᾐἨ" +
+	"Ι\x15\x1dἡιᾑἩΙ\x15\x1dἢιᾒἪΙ\x15\x1dἣιᾓἫΙ\x15\x1dἤιᾔἬΙ\x15\x1dἥιᾕἭΙ\x15" +
+	"\x1dἦιᾖἮΙ\x15\x1dἧιᾗἯΙ\x15+ὠιὨΙᾨ\x15+ὡιὩΙᾩ\x15+ὢιὪΙᾪ\x15+ὣιὫΙᾫ\x15+ὤιὬΙᾬ" +
+	"\x15+ὥιὭΙᾭ\x15+ὦιὮΙᾮ\x15+ὧιὯΙᾯ\x15\x1dὠιᾠὨΙ\x15\x1dὡιᾡὩΙ\x15\x1dὢιᾢὪΙ" +
+	"\x15\x1dὣιᾣὫΙ\x15\x1dὤιᾤὬΙ\x15\x1dὥιᾥὭΙ\x15\x1dὦιᾦὮΙ\x15\x1dὧιᾧὯΙ\x15-ὰι" +
+	"ᾺΙᾺͅ\x14#αιΑΙᾼ\x14$άιΆΙΆͅ\x14$ᾶΑ͂Α͂\x166ᾶιΑ͂Ιᾼ͂\x14\x1cαιᾳΑΙ\x12" +
+	"\x12ιΙΙ\x15-ὴιῊΙῊͅ\x14#ηιΗΙῌ\x14$ήιΉΙΉͅ\x14$ῆΗ͂Η͂\x166ῆιΗ͂Ιῌ͂\x14\x1c" +
+	"ηιῃΗΙ\x166ῒΪ̀Ϊ̀\x166ΐΪ́Ϊ́\x14$ῖΙ͂Ι͂\x166ῗΪ͂Ϊ͂\x166ῢΫ̀Ϋ" +
+	"̀\x166ΰΫ́Ϋ́\x14$ῤΡ̓Ρ̓\x14$ῦΥ͂Υ͂\x166ῧΫ͂Ϋ͂\x15-ὼιῺΙῺͅ\x14#ωιΩΙ" +
+	"ῼ\x14$ώιΏΙΏͅ\x14$ῶΩ͂Ω͂\x166ῶιΩ͂Ιῼ͂\x14\x1cωιῳΩΙ\x12\x10ωω\x11\x08kk" +
+	"\x12\x10åå\x12\x10ɫɫ\x12\x10ɽɽ\x10\x12ȺȺ\x10\x12ȾȾ\x12\x10ɑɑ\x12\x10ɱɱ" +
+	"\x12\x10ɐɐ\x12\x10ɒɒ\x12\x10ȿȿ\x12\x10ɀɀ\x12\x10ɥɥ\x12\x10ɦɦ\x12\x10ɜɜ" +
+	"\x12\x10ɡɡ\x12\x10ɬɬ\x12\x10ɪɪ\x12\x10ʞʞ\x12\x10ʇʇ\x12\x10ʝʝ\x12\x12ffFF" +
+	"Ff\x12\x12fiFIFi\x12\x12flFLFl\x13\x1bffiFFIFfi\x13\x1bfflFFLFfl\x12\x12" +
+	"stSTSt\x12\x12stSTSt\x14$մնՄՆՄն\x14$մեՄԵՄե\x14$միՄԻՄի\x14$վնՎՆՎն\x14$մխՄ" +
+	"ԽՄխ"
+
+// lookup returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *caseTrie) lookup(s []byte) (v uint16, sz int) {
+	c0 := s[0]
+	switch {
+	case c0 < 0x80: // is ASCII
+		return caseValues[c0], 1
+	case c0 < 0xC2:
+		return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+	case c0 < 0xE0: // 2-byte UTF-8
+		if len(s) < 2 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c1), 2
+	case c0 < 0xF0: // 3-byte UTF-8
+		if len(s) < 3 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c2), 3
+	case c0 < 0xF8: // 4-byte UTF-8
+		if len(s) < 4 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		o = uint32(i)<<6 + uint32(c2)
+		i = caseIndex[o]
+		c3 := s[3]
+		if c3 < 0x80 || 0xC0 <= c3 {
+			return 0, 3 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c3), 4
+	}
+	// Illegal rune
+	return 0, 1
+}
+
+// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *caseTrie) lookupUnsafe(s []byte) uint16 {
+	c0 := s[0]
+	if c0 < 0x80 { // is ASCII
+		return caseValues[c0]
+	}
+	i := caseIndex[c0]
+	if c0 < 0xE0 { // 2-byte UTF-8
+		return t.lookupValue(uint32(i), s[1])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[1])]
+	if c0 < 0xF0 { // 3-byte UTF-8
+		return t.lookupValue(uint32(i), s[2])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[2])]
+	if c0 < 0xF8 { // 4-byte UTF-8
+		return t.lookupValue(uint32(i), s[3])
+	}
+	return 0
+}
+
+// lookupString returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *caseTrie) lookupString(s string) (v uint16, sz int) {
+	c0 := s[0]
+	switch {
+	case c0 < 0x80: // is ASCII
+		return caseValues[c0], 1
+	case c0 < 0xC2:
+		return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+	case c0 < 0xE0: // 2-byte UTF-8
+		if len(s) < 2 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c1), 2
+	case c0 < 0xF0: // 3-byte UTF-8
+		if len(s) < 3 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c2), 3
+	case c0 < 0xF8: // 4-byte UTF-8
+		if len(s) < 4 {
+			return 0, 0
+		}
+		i := caseIndex[c0]
+		c1 := s[1]
+		if c1 < 0x80 || 0xC0 <= c1 {
+			return 0, 1 // Illegal UTF-8: not a continuation byte.
+		}
+		o := uint32(i)<<6 + uint32(c1)
+		i = caseIndex[o]
+		c2 := s[2]
+		if c2 < 0x80 || 0xC0 <= c2 {
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
+		}
+		o = uint32(i)<<6 + uint32(c2)
+		i = caseIndex[o]
+		c3 := s[3]
+		if c3 < 0x80 || 0xC0 <= c3 {
+			return 0, 3 // Illegal UTF-8: not a continuation byte.
+		}
+		return t.lookupValue(uint32(i), c3), 4
+	}
+	// Illegal rune
+	return 0, 1
+}
+
+// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *caseTrie) lookupStringUnsafe(s string) uint16 {
+	c0 := s[0]
+	if c0 < 0x80 { // is ASCII
+		return caseValues[c0]
+	}
+	i := caseIndex[c0]
+	if c0 < 0xE0 { // 2-byte UTF-8
+		return t.lookupValue(uint32(i), s[1])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[1])]
+	if c0 < 0xF0 { // 3-byte UTF-8
+		return t.lookupValue(uint32(i), s[2])
+	}
+	i = caseIndex[uint32(i)<<6+uint32(s[2])]
+	if c0 < 0xF8 { // 4-byte UTF-8
+		return t.lookupValue(uint32(i), s[3])
+	}
+	return 0
+}
+
+// caseTrie. Total size: 11742 bytes (11.47 KiB). Checksum: 795fe57ee5135873.
+type caseTrie struct{}
+
+func newCaseTrie(i int) *caseTrie {
+	return &caseTrie{}
+}
+
+// lookupValue determines the type of block n and looks up the value for b.
+func (t *caseTrie) lookupValue(n uint32, b byte) uint16 {
+	switch {
+	case n < 18:
+		return uint16(caseValues[n<<6+uint32(b)])
+	default:
+		n -= 18
+		return uint16(sparse.lookup(n, b))
+	}
+}
+
+// caseValues: 20 blocks, 1280 entries, 2560 bytes
+// The third block is the zero block.
+var caseValues = [1280]uint16{
+	// Block 0x0, offset 0x0
+	0x27: 0x0054,
+	0x2e: 0x0054,
+	0x30: 0x0010, 0x31: 0x0010, 0x32: 0x0010, 0x33: 0x0010, 0x34: 0x0010, 0x35: 0x0010,
+	0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0054,
+	// Block 0x1, offset 0x40
+	0x41: 0x2013, 0x42: 0x2013, 0x43: 0x2013, 0x44: 0x2013, 0x45: 0x2013,
+	0x46: 0x2013, 0x47: 0x2013, 0x48: 0x2013, 0x49: 0x2013, 0x4a: 0x2013, 0x4b: 0x2013,
+	0x4c: 0x2013, 0x4d: 0x2013, 0x4e: 0x2013, 0x4f: 0x2013, 0x50: 0x2013, 0x51: 0x2013,
+	0x52: 0x2013, 0x53: 0x2013, 0x54: 0x2013, 0x55: 0x2013, 0x56: 0x2013, 0x57: 0x2013,
+	0x58: 0x2013, 0x59: 0x2013, 0x5a: 0x2013,
+	0x5e: 0x0004, 0x5f: 0x0010, 0x60: 0x0004, 0x61: 0x2012, 0x62: 0x2012, 0x63: 0x2012,
+	0x64: 0x2012, 0x65: 0x2012, 0x66: 0x2012, 0x67: 0x2012, 0x68: 0x2012, 0x69: 0x2012,
+	0x6a: 0x2012, 0x6b: 0x2012, 0x6c: 0x2012, 0x6d: 0x2012, 0x6e: 0x2012, 0x6f: 0x2012,
+	0x70: 0x2012, 0x71: 0x2012, 0x72: 0x2012, 0x73: 0x2012, 0x74: 0x2012, 0x75: 0x2012,
+	0x76: 0x2012, 0x77: 0x2012, 0x78: 0x2012, 0x79: 0x2012, 0x7a: 0x2012,
+	// Block 0x2, offset 0x80
+	// Block 0x3, offset 0xc0
+	0xc0: 0x0852, 0xc1: 0x0b53, 0xc2: 0x0113, 0xc3: 0x0112, 0xc4: 0x0113, 0xc5: 0x0112,
+	0xc6: 0x0b53, 0xc7: 0x0f13, 0xc8: 0x0f12, 0xc9: 0x0e53, 0xca: 0x1153, 0xcb: 0x0713,
+	0xcc: 0x0712, 0xcd: 0x0012, 0xce: 0x1453, 0xcf: 0x1753, 0xd0: 0x1a53, 0xd1: 0x0313,
+	0xd2: 0x0312, 0xd3: 0x1d53, 0xd4: 0x2053, 0xd5: 0x2352, 0xd6: 0x2653, 0xd7: 0x2653,
+	0xd8: 0x0113, 0xd9: 0x0112, 0xda: 0x2952, 0xdb: 0x0012, 0xdc: 0x1d53, 0xdd: 0x2c53,
+	0xde: 0x2f52, 0xdf: 0x3253, 0xe0: 0x0113, 0xe1: 0x0112, 0xe2: 0x0113, 0xe3: 0x0112,
+	0xe4: 0x0113, 0xe5: 0x0112, 0xe6: 0x3553, 0xe7: 0x0f13, 0xe8: 0x0f12, 0xe9: 0x3853,
+	0xea: 0x0012, 0xeb: 0x0012, 0xec: 0x0113, 0xed: 0x0112, 0xee: 0x3553, 0xef: 0x1f13,
+	0xf0: 0x1f12, 0xf1: 0x3b53, 0xf2: 0x3e53, 0xf3: 0x0713, 0xf4: 0x0712, 0xf5: 0x0313,
+	0xf6: 0x0312, 0xf7: 0x4153, 0xf8: 0x0113, 0xf9: 0x0112, 0xfa: 0x0012, 0xfb: 0x0010,
+	0xfc: 0x0113, 0xfd: 0x0112, 0xfe: 0x0012, 0xff: 0x4452,
+	// Block 0x4, offset 0x100
+	0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x02db, 0x105: 0x0359,
+	0x106: 0x03da, 0x107: 0x043b, 0x108: 0x04b9, 0x109: 0x053a, 0x10a: 0x059b, 0x10b: 0x0619,
+	0x10c: 0x069a, 0x10d: 0x0313, 0x10e: 0x0312, 0x10f: 0x1f13, 0x110: 0x1f12, 0x111: 0x0313,
+	0x112: 0x0312, 0x113: 0x0713, 0x114: 0x0712, 0x115: 0x0313, 0x116: 0x0312, 0x117: 0x0f13,
+	0x118: 0x0f12, 0x119: 0x0313, 0x11a: 0x0312, 0x11b: 0x0713, 0x11c: 0x0712, 0x11d: 0x1452,
+	0x11e: 0x0113, 0x11f: 0x0112, 0x120: 0x0113, 0x121: 0x0112, 0x122: 0x0113, 0x123: 0x0112,
+	0x124: 0x0113, 0x125: 0x0112, 0x126: 0x0113, 0x127: 0x0112, 0x128: 0x0113, 0x129: 0x0112,
+	0x12a: 0x0113, 0x12b: 0x0112, 0x12c: 0x0113, 0x12d: 0x0112, 0x12e: 0x0113, 0x12f: 0x0112,
+	0x130: 0x06fa, 0x131: 0x07ab, 0x132: 0x0829, 0x133: 0x08aa, 0x134: 0x0113, 0x135: 0x0112,
+	0x136: 0x2353, 0x137: 0x4453, 0x138: 0x0113, 0x139: 0x0112, 0x13a: 0x0113, 0x13b: 0x0112,
+	0x13c: 0x0113, 0x13d: 0x0112, 0x13e: 0x0113, 0x13f: 0x0112,
+	// Block 0x5, offset 0x140
+	0x140: 0x0a8a, 0x141: 0x0313, 0x142: 0x0312, 0x143: 0x0853, 0x144: 0x4753, 0x145: 0x4a53,
+	0x146: 0x0113, 0x147: 0x0112, 0x148: 0x0113, 0x149: 0x0112, 0x14a: 0x0113, 0x14b: 0x0112,
+	0x14c: 0x0113, 0x14d: 0x0112, 0x14e: 0x0113, 0x14f: 0x0112, 0x150: 0x0b0a, 0x151: 0x0b8a,
+	0x152: 0x0c0a, 0x153: 0x0b52, 0x154: 0x0b52, 0x155: 0x0012, 0x156: 0x0e52, 0x157: 0x1152,
+	0x158: 0x0012, 0x159: 0x1752, 0x15a: 0x0012, 0x15b: 0x1a52, 0x15c: 0x0c8a, 0x15d: 0x0012,
+	0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1d52, 0x161: 0x0d0a, 0x162: 0x0012, 0x163: 0x2052,
+	0x164: 0x0012, 0x165: 0x0d8a, 0x166: 0x0e0a, 0x167: 0x0012, 0x168: 0x2652, 0x169: 0x2652,
+	0x16a: 0x0e8a, 0x16b: 0x0f0a, 0x16c: 0x0f8a, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1d52,
+	0x170: 0x0012, 0x171: 0x100a, 0x172: 0x2c52, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x3252,
+	0x176: 0x0012, 0x177: 0x0012, 0x178: 0x0012, 0x179: 0x0012, 0x17a: 0x0012, 0x17b: 0x0012,
+	0x17c: 0x0012, 0x17d: 0x108a, 0x17e: 0x0012, 0x17f: 0x0012,
+	// Block 0x6, offset 0x180
+	0x180: 0x3552, 0x181: 0x0012, 0x182: 0x0012, 0x183: 0x3852, 0x184: 0x0012, 0x185: 0x0012,
+	0x186: 0x0012, 0x187: 0x110a, 0x188: 0x3552, 0x189: 0x4752, 0x18a: 0x3b52, 0x18b: 0x3e52,
+	0x18c: 0x4a52, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012,
+	0x192: 0x4152, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012,
+	0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x118a,
+	0x19e: 0x120a, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012,
+	0x1a4: 0x0012, 0x1a5: 0x0012, 0x1a6: 0x0012, 0x1a7: 0x0012, 0x1a8: 0x0012, 0x1a9: 0x0012,
+	0x1aa: 0x0012, 0x1ab: 0x0012, 0x1ac: 0x0012, 0x1ad: 0x0012, 0x1ae: 0x0012, 0x1af: 0x0012,
+	0x1b0: 0x0015, 0x1b1: 0x0015, 0x1b2: 0x0015, 0x1b3: 0x0015, 0x1b4: 0x0015, 0x1b5: 0x0015,
+	0x1b6: 0x0015, 0x1b7: 0x0015, 0x1b8: 0x0015, 0x1b9: 0x0014, 0x1ba: 0x0014, 0x1bb: 0x0014,
+	0x1bc: 0x0014, 0x1bd: 0x0014, 0x1be: 0x0014, 0x1bf: 0x0014,
+	// Block 0x7, offset 0x1c0
+	0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x128d,
+	0x1c6: 0x0024, 0x1c7: 0x0034, 0x1c8: 0x0034, 0x1c9: 0x0034, 0x1ca: 0x0024, 0x1cb: 0x0024,
+	0x1cc: 0x0024, 0x1cd: 0x0034, 0x1ce: 0x0034, 0x1cf: 0x0014, 0x1d0: 0x0024, 0x1d1: 0x0024,
+	0x1d2: 0x0024, 0x1d3: 0x0034, 0x1d4: 0x0034, 0x1d5: 0x0034, 0x1d6: 0x0034, 0x1d7: 0x0024,
+	0x1d8: 0x0034, 0x1d9: 0x0034, 0x1da: 0x0034, 0x1db: 0x0024, 0x1dc: 0x0034, 0x1dd: 0x0034,
+	0x1de: 0x0034, 0x1df: 0x0034, 0x1e0: 0x0034, 0x1e1: 0x0034, 0x1e2: 0x0034, 0x1e3: 0x0024,
+	0x1e4: 0x0024, 0x1e5: 0x0024, 0x1e6: 0x0024, 0x1e7: 0x0024, 0x1e8: 0x0024, 0x1e9: 0x0024,
+	0x1ea: 0x0024, 0x1eb: 0x0024, 0x1ec: 0x0024, 0x1ed: 0x0024, 0x1ee: 0x0024, 0x1ef: 0x0024,
+	0x1f0: 0x0113, 0x1f1: 0x0112, 0x1f2: 0x0113, 0x1f3: 0x0112, 0x1f4: 0x0014, 0x1f5: 0x0004,
+	0x1f6: 0x0113, 0x1f7: 0x0112, 0x1fa: 0x0015, 0x1fb: 0x4d52,
+	0x1fc: 0x5052, 0x1fd: 0x5052, 0x1ff: 0x5353,
+	// Block 0x8, offset 0x200
+	0x204: 0x0004, 0x205: 0x0004,
+	0x206: 0x2a13, 0x207: 0x0054, 0x208: 0x2513, 0x209: 0x2713, 0x20a: 0x2513,
+	0x20c: 0x5653, 0x20e: 0x5953, 0x20f: 0x5c53, 0x210: 0x130a, 0x211: 0x2013,
+	0x212: 0x2013, 0x213: 0x2013, 0x214: 0x2013, 0x215: 0x2013, 0x216: 0x2013, 0x217: 0x2013,
+	0x218: 0x2013, 0x219: 0x2013, 0x21a: 0x2013, 0x21b: 0x2013, 0x21c: 0x2013, 0x21d: 0x2013,
+	0x21e: 0x2013, 0x21f: 0x2013, 0x220: 0x5f53, 0x221: 0x5f53, 0x223: 0x5f53,
+	0x224: 0x5f53, 0x225: 0x5f53, 0x226: 0x5f53, 0x227: 0x5f53, 0x228: 0x5f53, 0x229: 0x5f53,
+	0x22a: 0x5f53, 0x22b: 0x5f53, 0x22c: 0x2a12, 0x22d: 0x2512, 0x22e: 0x2712, 0x22f: 0x2512,
+	0x230: 0x144a, 0x231: 0x2012, 0x232: 0x2012, 0x233: 0x2012, 0x234: 0x2012, 0x235: 0x2012,
+	0x236: 0x2012, 0x237: 0x2012, 0x238: 0x2012, 0x239: 0x2012, 0x23a: 0x2012, 0x23b: 0x2012,
+	0x23c: 0x2012, 0x23d: 0x2012, 0x23e: 0x2012, 0x23f: 0x2012,
+	// Block 0x9, offset 0x240
+	0x240: 0x5f52, 0x241: 0x5f52, 0x242: 0x158a, 0x243: 0x5f52, 0x244: 0x5f52, 0x245: 0x5f52,
+	0x246: 0x5f52, 0x247: 0x5f52, 0x248: 0x5f52, 0x249: 0x5f52, 0x24a: 0x5f52, 0x24b: 0x5f52,
+	0x24c: 0x5652, 0x24d: 0x5952, 0x24e: 0x5c52, 0x24f: 0x1813, 0x250: 0x160a, 0x251: 0x168a,
+	0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x170a, 0x256: 0x178a, 0x257: 0x1812,
+	0x258: 0x0113, 0x259: 0x0112, 0x25a: 0x0113, 0x25b: 0x0112, 0x25c: 0x0113, 0x25d: 0x0112,
+	0x25e: 0x0113, 0x25f: 0x0112, 0x260: 0x0113, 0x261: 0x0112, 0x262: 0x0113, 0x263: 0x0112,
+	0x264: 0x0113, 0x265: 0x0112, 0x266: 0x0113, 0x267: 0x0112, 0x268: 0x0113, 0x269: 0x0112,
+	0x26a: 0x0113, 0x26b: 0x0112, 0x26c: 0x0113, 0x26d: 0x0112, 0x26e: 0x0113, 0x26f: 0x0112,
+	0x270: 0x180a, 0x271: 0x188a, 0x272: 0x0b12, 0x273: 0x5352, 0x274: 0x6253, 0x275: 0x190a,
+	0x277: 0x0f13, 0x278: 0x0f12, 0x279: 0x0b13, 0x27a: 0x0113, 0x27b: 0x0112,
+	0x27c: 0x0012, 0x27d: 0x4d53, 0x27e: 0x5053, 0x27f: 0x5053,
+	// Block 0xa, offset 0x280
+	0x280: 0x0812, 0x281: 0x0812, 0x282: 0x0812, 0x283: 0x0812, 0x284: 0x0812, 0x285: 0x0812,
+	0x288: 0x0813, 0x289: 0x0813, 0x28a: 0x0813, 0x28b: 0x0813,
+	0x28c: 0x0813, 0x28d: 0x0813, 0x290: 0x239a, 0x291: 0x0812,
+	0x292: 0x247a, 0x293: 0x0812, 0x294: 0x25ba, 0x295: 0x0812, 0x296: 0x26fa, 0x297: 0x0812,
+	0x299: 0x0813, 0x29b: 0x0813, 0x29d: 0x0813,
+	0x29f: 0x0813, 0x2a0: 0x0812, 0x2a1: 0x0812, 0x2a2: 0x0812, 0x2a3: 0x0812,
+	0x2a4: 0x0812, 0x2a5: 0x0812, 0x2a6: 0x0812, 0x2a7: 0x0812, 0x2a8: 0x0813, 0x2a9: 0x0813,
+	0x2aa: 0x0813, 0x2ab: 0x0813, 0x2ac: 0x0813, 0x2ad: 0x0813, 0x2ae: 0x0813, 0x2af: 0x0813,
+	0x2b0: 0x8b52, 0x2b1: 0x8b52, 0x2b2: 0x8e52, 0x2b3: 0x8e52, 0x2b4: 0x9152, 0x2b5: 0x9152,
+	0x2b6: 0x9452, 0x2b7: 0x9452, 0x2b8: 0x9752, 0x2b9: 0x9752, 0x2ba: 0x9a52, 0x2bb: 0x9a52,
+	0x2bc: 0x4d52, 0x2bd: 0x4d52,
+	// Block 0xb, offset 0x2c0
+	0x2c0: 0x283a, 0x2c1: 0x292a, 0x2c2: 0x2a1a, 0x2c3: 0x2b0a, 0x2c4: 0x2bfa, 0x2c5: 0x2cea,
+	0x2c6: 0x2dda, 0x2c7: 0x2eca, 0x2c8: 0x2fb9, 0x2c9: 0x30a9, 0x2ca: 0x3199, 0x2cb: 0x3289,
+	0x2cc: 0x3379, 0x2cd: 0x3469, 0x2ce: 0x3559, 0x2cf: 0x3649, 0x2d0: 0x373a, 0x2d1: 0x382a,
+	0x2d2: 0x391a, 0x2d3: 0x3a0a, 0x2d4: 0x3afa, 0x2d5: 0x3bea, 0x2d6: 0x3cda, 0x2d7: 0x3dca,
+	0x2d8: 0x3eb9, 0x2d9: 0x3fa9, 0x2da: 0x4099, 0x2db: 0x4189, 0x2dc: 0x4279, 0x2dd: 0x4369,
+	0x2de: 0x4459, 0x2df: 0x4549, 0x2e0: 0x463a, 0x2e1: 0x472a, 0x2e2: 0x481a, 0x2e3: 0x490a,
+	0x2e4: 0x49fa, 0x2e5: 0x4aea, 0x2e6: 0x4bda, 0x2e7: 0x4cca, 0x2e8: 0x4db9, 0x2e9: 0x4ea9,
+	0x2ea: 0x4f99, 0x2eb: 0x5089, 0x2ec: 0x5179, 0x2ed: 0x5269, 0x2ee: 0x5359, 0x2ef: 0x5449,
+	0x2f0: 0x0812, 0x2f1: 0x0812, 0x2f2: 0x553a, 0x2f3: 0x564a, 0x2f4: 0x571a,
+	0x2f6: 0x57fa, 0x2f7: 0x58da, 0x2f8: 0x0813, 0x2f9: 0x0813, 0x2fa: 0x8b53, 0x2fb: 0x8b53,
+	0x2fc: 0x5a19, 0x2fd: 0x0004, 0x2fe: 0x5aea, 0x2ff: 0x0004,
+	// Block 0xc, offset 0x300
+	0x300: 0x0004, 0x301: 0x0004, 0x302: 0x5b6a, 0x303: 0x5c7a, 0x304: 0x5d4a,
+	0x306: 0x5e2a, 0x307: 0x5f0a, 0x308: 0x8e53, 0x309: 0x8e53, 0x30a: 0x9153, 0x30b: 0x9153,
+	0x30c: 0x6049, 0x30d: 0x0004, 0x30e: 0x0004, 0x30f: 0x0004, 0x310: 0x0812, 0x311: 0x0812,
+	0x312: 0x611a, 0x313: 0x625a, 0x316: 0x639a, 0x317: 0x647a,
+	0x318: 0x0813, 0x319: 0x0813, 0x31a: 0x9453, 0x31b: 0x9453, 0x31d: 0x0004,
+	0x31e: 0x0004, 0x31f: 0x0004, 0x320: 0x0812, 0x321: 0x0812, 0x322: 0x65ba, 0x323: 0x66fa,
+	0x324: 0x683a, 0x325: 0x0912, 0x326: 0x691a, 0x327: 0x69fa, 0x328: 0x0813, 0x329: 0x0813,
+	0x32a: 0x9a53, 0x32b: 0x9a53, 0x32c: 0x0913, 0x32d: 0x0004, 0x32e: 0x0004, 0x32f: 0x0004,
+	0x332: 0x6b3a, 0x333: 0x6c4a, 0x334: 0x6d1a,
+	0x336: 0x6dfa, 0x337: 0x6eda, 0x338: 0x9753, 0x339: 0x9753, 0x33a: 0x4d53, 0x33b: 0x4d53,
+	0x33c: 0x7019, 0x33d: 0x0004, 0x33e: 0x0004,
+	// Block 0xd, offset 0x340
+	0x342: 0x0013,
+	0x347: 0x0013, 0x34a: 0x0012, 0x34b: 0x0013,
+	0x34c: 0x0013, 0x34d: 0x0013, 0x34e: 0x0012, 0x34f: 0x0012, 0x350: 0x0013, 0x351: 0x0013,
+	0x352: 0x0013, 0x353: 0x0012, 0x355: 0x0013,
+	0x359: 0x0013, 0x35a: 0x0013, 0x35b: 0x0013, 0x35c: 0x0013, 0x35d: 0x0013,
+	0x364: 0x0013, 0x366: 0x70eb, 0x368: 0x0013,
+	0x36a: 0x714b, 0x36b: 0x718b, 0x36c: 0x0013, 0x36d: 0x0013, 0x36f: 0x0012,
+	0x370: 0x0013, 0x371: 0x0013, 0x372: 0x9d53, 0x373: 0x0013, 0x374: 0x0012, 0x375: 0x0010,
+	0x376: 0x0010, 0x377: 0x0010, 0x378: 0x0010, 0x379: 0x0012,
+	0x37c: 0x0012, 0x37d: 0x0012, 0x37e: 0x0013, 0x37f: 0x0013,
+	// Block 0xe, offset 0x380
+	0x380: 0x1a13, 0x381: 0x1a13, 0x382: 0x1e13, 0x383: 0x1e13, 0x384: 0x1a13, 0x385: 0x1a13,
+	0x386: 0x2613, 0x387: 0x2613, 0x388: 0x2a13, 0x389: 0x2a13, 0x38a: 0x2e13, 0x38b: 0x2e13,
+	0x38c: 0x2a13, 0x38d: 0x2a13, 0x38e: 0x2613, 0x38f: 0x2613, 0x390: 0xa052, 0x391: 0xa052,
+	0x392: 0xa352, 0x393: 0xa352, 0x394: 0xa652, 0x395: 0xa652, 0x396: 0xa352, 0x397: 0xa352,
+	0x398: 0xa052, 0x399: 0xa052, 0x39a: 0x1a12, 0x39b: 0x1a12, 0x39c: 0x1e12, 0x39d: 0x1e12,
+	0x39e: 0x1a12, 0x39f: 0x1a12, 0x3a0: 0x2612, 0x3a1: 0x2612, 0x3a2: 0x2a12, 0x3a3: 0x2a12,
+	0x3a4: 0x2e12, 0x3a5: 0x2e12, 0x3a6: 0x2a12, 0x3a7: 0x2a12, 0x3a8: 0x2612, 0x3a9: 0x2612,
+	// Block 0xf, offset 0x3c0
+	0x3c0: 0x6552, 0x3c1: 0x6552, 0x3c2: 0x6552, 0x3c3: 0x6552, 0x3c4: 0x6552, 0x3c5: 0x6552,
+	0x3c6: 0x6552, 0x3c7: 0x6552, 0x3c8: 0x6552, 0x3c9: 0x6552, 0x3ca: 0x6552, 0x3cb: 0x6552,
+	0x3cc: 0x6552, 0x3cd: 0x6552, 0x3ce: 0x6552, 0x3cf: 0x6552, 0x3d0: 0xa952, 0x3d1: 0xa952,
+	0x3d2: 0xa952, 0x3d3: 0xa952, 0x3d4: 0xa952, 0x3d5: 0xa952, 0x3d6: 0xa952, 0x3d7: 0xa952,
+	0x3d8: 0xa952, 0x3d9: 0xa952, 0x3da: 0xa952, 0x3db: 0xa952, 0x3dc: 0xa952, 0x3dd: 0xa952,
+	0x3de: 0xa952, 0x3e0: 0x0113, 0x3e1: 0x0112, 0x3e2: 0x71eb, 0x3e3: 0x8853,
+	0x3e4: 0x724b, 0x3e5: 0x72aa, 0x3e6: 0x730a, 0x3e7: 0x0f13, 0x3e8: 0x0f12, 0x3e9: 0x0313,
+	0x3ea: 0x0312, 0x3eb: 0x0713, 0x3ec: 0x0712, 0x3ed: 0x736b, 0x3ee: 0x73cb, 0x3ef: 0x742b,
+	0x3f0: 0x748b, 0x3f1: 0x0012, 0x3f2: 0x0113, 0x3f3: 0x0112, 0x3f4: 0x0012, 0x3f5: 0x0313,
+	0x3f6: 0x0312, 0x3f7: 0x0012, 0x3f8: 0x0012, 0x3f9: 0x0012, 0x3fa: 0x0012, 0x3fb: 0x0012,
+	0x3fc: 0x0015, 0x3fd: 0x0015, 0x3fe: 0x74eb, 0x3ff: 0x754b,
+	// Block 0x10, offset 0x400
+	0x400: 0x0113, 0x401: 0x0112, 0x402: 0x0113, 0x403: 0x0112, 0x404: 0x0113, 0x405: 0x0112,
+	0x406: 0x0113, 0x407: 0x0112, 0x408: 0x0014, 0x409: 0x0004, 0x40a: 0x0004, 0x40b: 0x0713,
+	0x40c: 0x0712, 0x40d: 0x75ab, 0x40e: 0x0012, 0x40f: 0x0010, 0x410: 0x0113, 0x411: 0x0112,
+	0x412: 0x0113, 0x413: 0x0112, 0x414: 0x0012, 0x415: 0x0012, 0x416: 0x0113, 0x417: 0x0112,
+	0x418: 0x0113, 0x419: 0x0112, 0x41a: 0x0113, 0x41b: 0x0112, 0x41c: 0x0113, 0x41d: 0x0112,
+	0x41e: 0x0113, 0x41f: 0x0112, 0x420: 0x0113, 0x421: 0x0112, 0x422: 0x0113, 0x423: 0x0112,
+	0x424: 0x0113, 0x425: 0x0112, 0x426: 0x0113, 0x427: 0x0112, 0x428: 0x0113, 0x429: 0x0112,
+	0x42a: 0x760b, 0x42b: 0x766b, 0x42c: 0x76cb, 0x42d: 0x772b, 0x42e: 0x778b,
+	0x430: 0x77eb, 0x431: 0x784b, 0x432: 0x78ab, 0x433: 0xac53, 0x434: 0x0113, 0x435: 0x0112,
+	0x436: 0x0113, 0x437: 0x0112,
+	// Block 0x11, offset 0x440
+	0x440: 0x790a, 0x441: 0x798a, 0x442: 0x7a0a, 0x443: 0x7a8a, 0x444: 0x7b3a, 0x445: 0x7bea,
+	0x446: 0x7c6a,
+	0x453: 0x7cea, 0x454: 0x7dca, 0x455: 0x7eaa, 0x456: 0x7f8a, 0x457: 0x806a,
+	0x45d: 0x0010,
+	0x45e: 0x0034, 0x45f: 0x0010, 0x460: 0x0010, 0x461: 0x0010, 0x462: 0x0010, 0x463: 0x0010,
+	0x464: 0x0010, 0x465: 0x0010, 0x466: 0x0010, 0x467: 0x0010, 0x468: 0x0010,
+	0x46a: 0x0010, 0x46b: 0x0010, 0x46c: 0x0010, 0x46d: 0x0010, 0x46e: 0x0010, 0x46f: 0x0010,
+	0x470: 0x0010, 0x471: 0x0010, 0x472: 0x0010, 0x473: 0x0010, 0x474: 0x0010, 0x475: 0x0010,
+	0x476: 0x0010, 0x478: 0x0010, 0x479: 0x0010, 0x47a: 0x0010, 0x47b: 0x0010,
+	0x47c: 0x0010, 0x47e: 0x0010,
+	// Block 0x12, offset 0x480
+	0x480: 0x2213, 0x481: 0x2213, 0x482: 0x2613, 0x483: 0x2613, 0x484: 0x2213, 0x485: 0x2213,
+	0x486: 0x2e13, 0x487: 0x2e13, 0x488: 0x2213, 0x489: 0x2213, 0x48a: 0x2613, 0x48b: 0x2613,
+	0x48c: 0x2213, 0x48d: 0x2213, 0x48e: 0x3e13, 0x48f: 0x3e13, 0x490: 0x2213, 0x491: 0x2213,
+	0x492: 0x2613, 0x493: 0x2613, 0x494: 0x2213, 0x495: 0x2213, 0x496: 0x2e13, 0x497: 0x2e13,
+	0x498: 0x2213, 0x499: 0x2213, 0x49a: 0x2613, 0x49b: 0x2613, 0x49c: 0x2213, 0x49d: 0x2213,
+	0x49e: 0xb553, 0x49f: 0xb553, 0x4a0: 0xb853, 0x4a1: 0xb853, 0x4a2: 0x2212, 0x4a3: 0x2212,
+	0x4a4: 0x2612, 0x4a5: 0x2612, 0x4a6: 0x2212, 0x4a7: 0x2212, 0x4a8: 0x2e12, 0x4a9: 0x2e12,
+	0x4aa: 0x2212, 0x4ab: 0x2212, 0x4ac: 0x2612, 0x4ad: 0x2612, 0x4ae: 0x2212, 0x4af: 0x2212,
+	0x4b0: 0x3e12, 0x4b1: 0x3e12, 0x4b2: 0x2212, 0x4b3: 0x2212, 0x4b4: 0x2612, 0x4b5: 0x2612,
+	0x4b6: 0x2212, 0x4b7: 0x2212, 0x4b8: 0x2e12, 0x4b9: 0x2e12, 0x4ba: 0x2212, 0x4bb: 0x2212,
+	0x4bc: 0x2612, 0x4bd: 0x2612, 0x4be: 0x2212, 0x4bf: 0x2212,
+	// Block 0x13, offset 0x4c0
+	0x4c2: 0x0010,
+	0x4c7: 0x0010, 0x4c9: 0x0010, 0x4cb: 0x0010,
+	0x4cd: 0x0010, 0x4ce: 0x0010, 0x4cf: 0x0010, 0x4d1: 0x0010,
+	0x4d2: 0x0010, 0x4d4: 0x0010, 0x4d7: 0x0010,
+	0x4d9: 0x0010, 0x4db: 0x0010, 0x4dd: 0x0010,
+	0x4df: 0x0010, 0x4e1: 0x0010, 0x4e2: 0x0010,
+	0x4e4: 0x0010, 0x4e7: 0x0010, 0x4e8: 0x0010, 0x4e9: 0x0010,
+	0x4ea: 0x0010, 0x4ec: 0x0010, 0x4ed: 0x0010, 0x4ee: 0x0010, 0x4ef: 0x0010,
+	0x4f0: 0x0010, 0x4f1: 0x0010, 0x4f2: 0x0010, 0x4f4: 0x0010, 0x4f5: 0x0010,
+	0x4f6: 0x0010, 0x4f7: 0x0010, 0x4f9: 0x0010, 0x4fa: 0x0010, 0x4fb: 0x0010,
+	0x4fc: 0x0010, 0x4fe: 0x0010,
+}
+
+// caseIndex: 25 blocks, 1600 entries, 3200 bytes
+// Block 0 is the zero block.
+var caseIndex = [1600]uint16{
+	// Block 0x0, offset 0x0
+	// Block 0x1, offset 0x40
+	// Block 0x2, offset 0x80
+	// Block 0x3, offset 0xc0
+	0xc2: 0x12, 0xc3: 0x13, 0xc4: 0x14, 0xc5: 0x15, 0xc6: 0x01, 0xc7: 0x02,
+	0xc8: 0x16, 0xc9: 0x03, 0xca: 0x04, 0xcb: 0x17, 0xcc: 0x18, 0xcd: 0x05, 0xce: 0x06, 0xcf: 0x07,
+	0xd0: 0x19, 0xd1: 0x1a, 0xd2: 0x1b, 0xd3: 0x1c, 0xd4: 0x1d, 0xd5: 0x1e, 0xd6: 0x1f, 0xd7: 0x20,
+	0xd8: 0x21, 0xd9: 0x22, 0xda: 0x23, 0xdb: 0x24, 0xdc: 0x25, 0xdd: 0x26, 0xde: 0x27, 0xdf: 0x28,
+	0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,
+	0xea: 0x06, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x08, 0xef: 0x09,
+	0xf0: 0x14, 0xf3: 0x16,
+	// Block 0x4, offset 0x100
+	0x120: 0x29, 0x121: 0x2a, 0x122: 0x2b, 0x123: 0x2c, 0x124: 0x2d, 0x125: 0x2e, 0x126: 0x2f, 0x127: 0x30,
+	0x128: 0x31, 0x129: 0x32, 0x12a: 0x33, 0x12b: 0x34, 0x12c: 0x35, 0x12d: 0x36, 0x12e: 0x37, 0x12f: 0x38,
+	0x130: 0x39, 0x131: 0x3a, 0x132: 0x3b, 0x133: 0x3c, 0x134: 0x3d, 0x135: 0x3e, 0x136: 0x3f, 0x137: 0x40,
+	0x138: 0x41, 0x139: 0x42, 0x13a: 0x43, 0x13b: 0x44, 0x13c: 0x45, 0x13d: 0x46, 0x13e: 0x47, 0x13f: 0x48,
+	// Block 0x5, offset 0x140
+	0x140: 0x49, 0x141: 0x4a, 0x142: 0x4b, 0x143: 0x4c, 0x144: 0x23, 0x145: 0x23, 0x146: 0x23, 0x147: 0x23,
+	0x148: 0x23, 0x149: 0x4d, 0x14a: 0x4e, 0x14b: 0x4f, 0x14c: 0x50, 0x14d: 0x51, 0x14e: 0x52, 0x14f: 0x53,
+	0x150: 0x54, 0x151: 0x23, 0x152: 0x23, 0x153: 0x23, 0x154: 0x23, 0x155: 0x23, 0x156: 0x23, 0x157: 0x23,
+	0x158: 0x23, 0x159: 0x55, 0x15a: 0x56, 0x15b: 0x57, 0x15c: 0x58, 0x15d: 0x59, 0x15e: 0x5a, 0x15f: 0x5b,
+	0x160: 0x5c, 0x161: 0x5d, 0x162: 0x5e, 0x163: 0x5f, 0x164: 0x60, 0x165: 0x61, 0x167: 0x62,
+	0x168: 0x63, 0x169: 0x64, 0x16a: 0x65, 0x16c: 0x66, 0x16d: 0x67, 0x16e: 0x68, 0x16f: 0x69,
+	0x170: 0x6a, 0x171: 0x6b, 0x172: 0x6c, 0x173: 0x6d, 0x174: 0x6e, 0x175: 0x6f, 0x176: 0x70, 0x177: 0x71,
+	0x178: 0x72, 0x179: 0x72, 0x17a: 0x73, 0x17b: 0x72, 0x17c: 0x74, 0x17d: 0x08, 0x17e: 0x09, 0x17f: 0x0a,
+	// Block 0x6, offset 0x180
+	0x180: 0x75, 0x181: 0x76, 0x182: 0x77, 0x183: 0x78, 0x184: 0x0b, 0x185: 0x79, 0x186: 0x7a,
+	0x192: 0x7b, 0x193: 0x0c,
+	0x1b0: 0x7c, 0x1b1: 0x0d, 0x1b2: 0x72, 0x1b3: 0x7d, 0x1b4: 0x7e, 0x1b5: 0x7f, 0x1b6: 0x80, 0x1b7: 0x81,
+	0x1b8: 0x82,
+	// Block 0x7, offset 0x1c0
+	0x1c0: 0x83, 0x1c2: 0x84, 0x1c3: 0x85, 0x1c4: 0x86, 0x1c5: 0x23, 0x1c6: 0x87,
+	// Block 0x8, offset 0x200
+	0x200: 0x88, 0x201: 0x23, 0x202: 0x23, 0x203: 0x23, 0x204: 0x23, 0x205: 0x23, 0x206: 0x23, 0x207: 0x23,
+	0x208: 0x23, 0x209: 0x23, 0x20a: 0x23, 0x20b: 0x23, 0x20c: 0x23, 0x20d: 0x23, 0x20e: 0x23, 0x20f: 0x23,
+	0x210: 0x23, 0x211: 0x23, 0x212: 0x89, 0x213: 0x8a, 0x214: 0x23, 0x215: 0x23, 0x216: 0x23, 0x217: 0x23,
+	0x218: 0x8b, 0x219: 0x8c, 0x21a: 0x8d, 0x21b: 0x8e, 0x21c: 0x8f, 0x21d: 0x90, 0x21e: 0x0e, 0x21f: 0x91,
+	0x220: 0x92, 0x221: 0x93, 0x222: 0x23, 0x223: 0x94, 0x224: 0x95, 0x225: 0x96, 0x226: 0x97, 0x227: 0x98,
+	0x228: 0x99, 0x229: 0x9a, 0x22a: 0x9b, 0x22b: 0x9c, 0x22c: 0x9d, 0x22d: 0x9e, 0x22e: 0x9f, 0x22f: 0xa0,
+	0x230: 0x23, 0x231: 0x23, 0x232: 0x23, 0x233: 0x23, 0x234: 0x23, 0x235: 0x23, 0x236: 0x23, 0x237: 0x23,
+	0x238: 0x23, 0x239: 0x23, 0x23a: 0x23, 0x23b: 0x23, 0x23c: 0x23, 0x23d: 0x23, 0x23e: 0x23, 0x23f: 0x23,
+	// Block 0x9, offset 0x240
+	0x240: 0x23, 0x241: 0x23, 0x242: 0x23, 0x243: 0x23, 0x244: 0x23, 0x245: 0x23, 0x246: 0x23, 0x247: 0x23,
+	0x248: 0x23, 0x249: 0x23, 0x24a: 0x23, 0x24b: 0x23, 0x24c: 0x23, 0x24d: 0x23, 0x24e: 0x23, 0x24f: 0x23,
+	0x250: 0x23, 0x251: 0x23, 0x252: 0x23, 0x253: 0x23, 0x254: 0x23, 0x255: 0x23, 0x256: 0x23, 0x257: 0x23,
+	0x258: 0x23, 0x259: 0x23, 0x25a: 0x23, 0x25b: 0x23, 0x25c: 0x23, 0x25d: 0x23, 0x25e: 0x23, 0x25f: 0x23,
+	0x260: 0x23, 0x261: 0x23, 0x262: 0x23, 0x263: 0x23, 0x264: 0x23, 0x265: 0x23, 0x266: 0x23, 0x267: 0x23,
+	0x268: 0x23, 0x269: 0x23, 0x26a: 0x23, 0x26b: 0x23, 0x26c: 0x23, 0x26d: 0x23, 0x26e: 0x23, 0x26f: 0x23,
+	0x270: 0x23, 0x271: 0x23, 0x272: 0x23, 0x273: 0x23, 0x274: 0x23, 0x275: 0x23, 0x276: 0x23, 0x277: 0x23,
+	0x278: 0x23, 0x279: 0x23, 0x27a: 0x23, 0x27b: 0x23, 0x27c: 0x23, 0x27d: 0x23, 0x27e: 0x23, 0x27f: 0x23,
+	// Block 0xa, offset 0x280
+	0x280: 0x23, 0x281: 0x23, 0x282: 0x23, 0x283: 0x23, 0x284: 0x23, 0x285: 0x23, 0x286: 0x23, 0x287: 0x23,
+	0x288: 0x23, 0x289: 0x23, 0x28a: 0x23, 0x28b: 0x23, 0x28c: 0x23, 0x28d: 0x23, 0x28e: 0x23, 0x28f: 0x23,
+	0x290: 0x23, 0x291: 0x23, 0x292: 0x23, 0x293: 0x23, 0x294: 0x23, 0x295: 0x23, 0x296: 0x23, 0x297: 0x23,
+	0x298: 0x23, 0x299: 0x23, 0x29a: 0x23, 0x29b: 0x23, 0x29c: 0x23, 0x29d: 0x23, 0x29e: 0xa1, 0x29f: 0xa2,
+	// Block 0xb, offset 0x2c0
+	0x2ec: 0x0f, 0x2ed: 0xa3, 0x2ee: 0xa4, 0x2ef: 0xa5,
+	0x2f0: 0x23, 0x2f1: 0x23, 0x2f2: 0x23, 0x2f3: 0x23, 0x2f4: 0xa6, 0x2f5: 0xa7, 0x2f6: 0xa8, 0x2f7: 0xa9,
+	0x2f8: 0xaa, 0x2f9: 0xab, 0x2fa: 0x23, 0x2fb: 0xac, 0x2fc: 0xad, 0x2fd: 0xae, 0x2fe: 0xaf, 0x2ff: 0xb0,
+	// Block 0xc, offset 0x300
+	0x300: 0xb1, 0x301: 0xb2, 0x302: 0x23, 0x303: 0xb3, 0x305: 0xb4, 0x307: 0xb5,
+	0x30a: 0xb6, 0x30b: 0xb7, 0x30c: 0xb8, 0x30d: 0xb9, 0x30e: 0xba, 0x30f: 0xbb,
+	0x310: 0xbc, 0x311: 0xbd, 0x312: 0xbe, 0x313: 0xbf, 0x314: 0xc0, 0x315: 0xc1,
+	0x318: 0x23, 0x319: 0x23, 0x31a: 0x23, 0x31b: 0x23, 0x31c: 0xc2, 0x31d: 0xc3,
+	0x320: 0xc4, 0x321: 0xc5, 0x322: 0xc6, 0x323: 0xc7, 0x324: 0xc8, 0x326: 0xc9,
+	0x328: 0xca, 0x329: 0xcb, 0x32a: 0xcc, 0x32b: 0xcd, 0x32c: 0x5f, 0x32d: 0xce, 0x32e: 0xcf,
+	0x330: 0x23, 0x331: 0xd0, 0x332: 0xd1, 0x333: 0xd2,
+	// Block 0xd, offset 0x340
+	0x340: 0xd3, 0x341: 0xd4, 0x342: 0xd5, 0x343: 0xd6, 0x344: 0xd7, 0x345: 0xd8, 0x346: 0xd9, 0x347: 0xda,
+	0x348: 0xdb, 0x34a: 0xdc, 0x34b: 0xdd, 0x34c: 0xde, 0x34d: 0xdf,
+	0x350: 0xe0, 0x351: 0xe1, 0x352: 0xe2, 0x353: 0xe3, 0x356: 0xe4, 0x357: 0xe5,
+	0x358: 0xe6, 0x359: 0xe7, 0x35a: 0xe8, 0x35b: 0xe9, 0x35c: 0xea,
+	0x362: 0xeb, 0x363: 0xec,
+	0x36b: 0xed,
+	0x370: 0xee, 0x371: 0xef, 0x372: 0xf0,
+	// Block 0xe, offset 0x380
+	0x380: 0x23, 0x381: 0x23, 0x382: 0x23, 0x383: 0x23, 0x384: 0x23, 0x385: 0x23, 0x386: 0x23, 0x387: 0x23,
+	0x388: 0x23, 0x389: 0x23, 0x38a: 0x23, 0x38b: 0x23, 0x38c: 0x23, 0x38d: 0x23, 0x38e: 0xf1,
+	0x390: 0x23, 0x391: 0xf2, 0x392: 0x23, 0x393: 0x23, 0x394: 0x23, 0x395: 0xf3,
+	// Block 0xf, offset 0x3c0
+	0x3c0: 0x23, 0x3c1: 0x23, 0x3c2: 0x23, 0x3c3: 0x23, 0x3c4: 0x23, 0x3c5: 0x23, 0x3c6: 0x23, 0x3c7: 0x23,
+	0x3c8: 0x23, 0x3c9: 0x23, 0x3ca: 0x23, 0x3cb: 0x23, 0x3cc: 0x23, 0x3cd: 0x23, 0x3ce: 0x23, 0x3cf: 0x23,
+	0x3d0: 0xf2,
+	// Block 0x10, offset 0x400
+	0x410: 0x23, 0x411: 0x23, 0x412: 0x23, 0x413: 0x23, 0x414: 0x23, 0x415: 0x23, 0x416: 0x23, 0x417: 0x23,
+	0x418: 0x23, 0x419: 0xf4,
+	// Block 0x11, offset 0x440
+	0x460: 0x23, 0x461: 0x23, 0x462: 0x23, 0x463: 0x23, 0x464: 0x23, 0x465: 0x23, 0x466: 0x23, 0x467: 0x23,
+	0x468: 0xed, 0x469: 0xf5, 0x46b: 0xf6, 0x46c: 0xf7, 0x46d: 0xf8, 0x46e: 0xf9,
+	0x47c: 0x23, 0x47d: 0xfa, 0x47e: 0xfb, 0x47f: 0xfc,
+	// Block 0x12, offset 0x480
+	0x4b0: 0x23, 0x4b1: 0xfd, 0x4b2: 0xfe,
+	// Block 0x13, offset 0x4c0
+	0x4c5: 0xff, 0x4c6: 0x100,
+	0x4c9: 0x101,
+	0x4d0: 0x102, 0x4d1: 0x103, 0x4d2: 0x104, 0x4d3: 0x105, 0x4d4: 0x106, 0x4d5: 0x107, 0x4d6: 0x108, 0x4d7: 0x109,
+	0x4d8: 0x10a, 0x4d9: 0x10b, 0x4da: 0x10c, 0x4db: 0x10d, 0x4dc: 0x10e, 0x4dd: 0x10f, 0x4de: 0x110, 0x4df: 0x111,
+	0x4e8: 0x112, 0x4e9: 0x113, 0x4ea: 0x114,
+	// Block 0x14, offset 0x500
+	0x500: 0x115,
+	0x520: 0x23, 0x521: 0x23, 0x522: 0x23, 0x523: 0x116, 0x524: 0x10, 0x525: 0x117,
+	0x538: 0x118, 0x539: 0x11, 0x53a: 0x119,
+	// Block 0x15, offset 0x540
+	0x544: 0x11a, 0x545: 0x11b, 0x546: 0x11c,
+	0x54f: 0x11d,
+	// Block 0x16, offset 0x580
+	0x590: 0x0a, 0x591: 0x0b, 0x592: 0x0c, 0x593: 0x0d, 0x594: 0x0e, 0x596: 0x0f,
+	0x59b: 0x10, 0x59d: 0x11, 0x59e: 0x12, 0x59f: 0x13,
+	// Block 0x17, offset 0x5c0
+	0x5c0: 0x11e, 0x5c1: 0x11f, 0x5c4: 0x11f, 0x5c5: 0x11f, 0x5c6: 0x11f, 0x5c7: 0x120,
+	// Block 0x18, offset 0x600
+	0x620: 0x15,
+}
+
+// sparseOffsets: 272 entries, 544 bytes
+var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x3a, 0x3d, 0x41, 0x44, 0x48, 0x52, 0x54, 0x59, 0x69, 0x70, 0x75, 0x83, 0x84, 0x92, 0xa1, 0xab, 0xae, 0xb4, 0xbc, 0xbe, 0xc0, 0xce, 0xd4, 0xe2, 0xed, 0xf8, 0x103, 0x10f, 0x119, 0x124, 0x12f, 0x13b, 0x147, 0x14f, 0x157, 0x161, 0x16c, 0x178, 0x17e, 0x189, 0x18e, 0x196, 0x199, 0x19e, 0x1a2, 0x1a6, 0x1ad, 0x1b6, 0x1be, 0x1bf, 0x1c8, 0x1cf, 0x1d7, 0x1dd, 0x1e3, 0x1e8, 0x1ec, 0x1ef, 0x1f1, 0x1f4, 0x1f9, 0x1fa, 0x1fc, 0x1fe, 0x200, 0x207, 0x20c, 0x210, 0x219, 0x21c, 0x21f, 0x225, 0x226, 0x231, 0x232, 0x233, 0x238, 0x245, 0x24d, 0x255, 0x25e, 0x267, 0x270, 0x275, 0x278, 0x281, 0x28e, 0x290, 0x297, 0x299, 0x2a4, 0x2a5, 0x2b0, 0x2b8, 0x2c0, 0x2c6, 0x2c7, 0x2d5, 0x2da, 0x2dd, 0x2e2, 0x2e6, 0x2ec, 0x2f1, 0x2f4, 0x2f9, 0x2fe, 0x2ff, 0x305, 0x307, 0x308, 0x30a, 0x30c, 0x30f, 0x310, 0x312, 0x315, 0x31b, 0x31f, 0x321, 0x327, 0x32e, 0x332, 0x33b, 0x33c, 0x344, 0x348, 0x34d, 0x355, 0x35b, 0x361, 0x36b, 0x370, 0x379, 0x37f, 0x386, 0x38a, 0x392, 0x394, 0x396, 0x399, 0x39b, 0x39d, 0x39e, 0x39f, 0x3a1, 0x3a3, 0x3a9, 0x3ae, 0x3b0, 0x3b6, 0x3b9, 0x3bb, 0x3c1, 0x3c6, 0x3c8, 0x3c9, 0x3ca, 0x3cb, 0x3cd, 0x3cf, 0x3d1, 0x3d4, 0x3d6, 0x3d9, 0x3e1, 0x3e4, 0x3e8, 0x3f0, 0x3f2, 0x3f3, 0x3f4, 0x3f6, 0x3fc, 0x3fe, 0x3ff, 0x401, 0x403, 0x405, 0x412, 0x413, 0x414, 0x418, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x422, 0x426, 0x42c, 0x42e, 0x435, 0x438, 0x43c, 0x442, 0x44b, 0x451, 0x457, 0x461, 0x46b, 0x46d, 0x474, 0x47a, 0x480, 0x486, 0x489, 0x48f, 0x492, 0x49a, 0x49b, 0x4a2, 0x4a3, 0x4a6, 0x4a7, 0x4ad, 0x4b0, 0x4b8, 0x4b9, 0x4ba, 0x4bb, 0x4bc, 0x4be, 0x4c0, 0x4c2, 0x4c6, 0x4c7, 0x4c9, 0x4ca, 0x4cb, 0x4cd, 0x4d2, 0x4d7, 0x4db, 0x4dc, 0x4df, 0x4e3, 0x4ee, 0x4f2, 0x4fa, 0x4ff, 0x503, 0x506, 0x50a, 0x50d, 0x510, 0x515, 0x519, 0x51d, 0x521, 0x525, 0x527, 0x529, 0x52c, 0x531, 0x533, 0x538, 0x541, 0x546, 0x547, 0x54a, 0x54b, 0x54c, 0x54e, 0x54f, 0x550}
+
+// sparseValues: 1360 entries, 5440 bytes
+var sparseValues = [1360]valueRange{
+	// Block 0x0, offset 0x0
+	{value: 0x0004, lo: 0xa8, hi: 0xa8},
+	{value: 0x0012, lo: 0xaa, hi: 0xaa},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0004, lo: 0xaf, hi: 0xaf},
+	{value: 0x0004, lo: 0xb4, hi: 0xb4},
+	{value: 0x001a, lo: 0xb5, hi: 0xb5},
+	{value: 0x0054, lo: 0xb7, hi: 0xb7},
+	{value: 0x0004, lo: 0xb8, hi: 0xb8},
+	{value: 0x0012, lo: 0xba, hi: 0xba},
+	// Block 0x1, offset 0x9
+	{value: 0x2013, lo: 0x80, hi: 0x96},
+	{value: 0x2013, lo: 0x98, hi: 0x9e},
+	{value: 0x009a, lo: 0x9f, hi: 0x9f},
+	{value: 0x2012, lo: 0xa0, hi: 0xb6},
+	{value: 0x2012, lo: 0xb8, hi: 0xbe},
+	{value: 0x0252, lo: 0xbf, hi: 0xbf},
+	// Block 0x2, offset 0xf
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x011b, lo: 0xb0, hi: 0xb0},
+	{value: 0x019a, lo: 0xb1, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xb7},
+	{value: 0x0012, lo: 0xb8, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x0316, lo: 0xbd, hi: 0xbe},
+	{value: 0x0553, lo: 0xbf, hi: 0xbf},
+	// Block 0x3, offset 0x18
+	{value: 0x0552, lo: 0x80, hi: 0x80},
+	{value: 0x0316, lo: 0x81, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0316, lo: 0x85, hi: 0x86},
+	{value: 0x0f16, lo: 0x87, hi: 0x88},
+	{value: 0x01da, lo: 0x89, hi: 0x89},
+	{value: 0x0117, lo: 0x8a, hi: 0xb7},
+	{value: 0x0253, lo: 0xb8, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x0316, lo: 0xbd, hi: 0xbe},
+	{value: 0x028a, lo: 0xbf, hi: 0xbf},
+	// Block 0x4, offset 0x24
+	{value: 0x0117, lo: 0x80, hi: 0x9f},
+	{value: 0x2f53, lo: 0xa0, hi: 0xa0},
+	{value: 0x0012, lo: 0xa1, hi: 0xa1},
+	{value: 0x0117, lo: 0xa2, hi: 0xb3},
+	{value: 0x0012, lo: 0xb4, hi: 0xb9},
+	{value: 0x090b, lo: 0xba, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x2953, lo: 0xbd, hi: 0xbd},
+	{value: 0x098b, lo: 0xbe, hi: 0xbe},
+	{value: 0x0a0a, lo: 0xbf, hi: 0xbf},
+	// Block 0x5, offset 0x2e
+	{value: 0x0015, lo: 0x80, hi: 0x81},
+	{value: 0x0004, lo: 0x82, hi: 0x85},
+	{value: 0x0014, lo: 0x86, hi: 0x91},
+	{value: 0x0004, lo: 0x92, hi: 0x96},
+	{value: 0x0054, lo: 0x97, hi: 0x97},
+	{value: 0x0004, lo: 0x98, hi: 0x9f},
+	{value: 0x0015, lo: 0xa0, hi: 0xa4},
+	{value: 0x0004, lo: 0xa5, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xac},
+	{value: 0x0004, lo: 0xad, hi: 0xad},
+	{value: 0x0014, lo: 0xae, hi: 0xae},
+	{value: 0x0004, lo: 0xaf, hi: 0xbf},
+	// Block 0x6, offset 0x3a
+	{value: 0x0024, lo: 0x80, hi: 0x94},
+	{value: 0x0034, lo: 0x95, hi: 0xbc},
+	{value: 0x0024, lo: 0xbd, hi: 0xbf},
+	// Block 0x7, offset 0x3d
+	{value: 0x6553, lo: 0x80, hi: 0x8f},
+	{value: 0x2013, lo: 0x90, hi: 0x9f},
+	{value: 0x5f53, lo: 0xa0, hi: 0xaf},
+	{value: 0x2012, lo: 0xb0, hi: 0xbf},
+	// Block 0x8, offset 0x41
+	{value: 0x5f52, lo: 0x80, hi: 0x8f},
+	{value: 0x6552, lo: 0x90, hi: 0x9f},
+	{value: 0x0117, lo: 0xa0, hi: 0xbf},
+	// Block 0x9, offset 0x44
+	{value: 0x0117, lo: 0x80, hi: 0x81},
+	{value: 0x0024, lo: 0x83, hi: 0x87},
+	{value: 0x0014, lo: 0x88, hi: 0x89},
+	{value: 0x0117, lo: 0x8a, hi: 0xbf},
+	// Block 0xa, offset 0x48
+	{value: 0x0f13, lo: 0x80, hi: 0x80},
+	{value: 0x0316, lo: 0x81, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0316, lo: 0x85, hi: 0x86},
+	{value: 0x0f16, lo: 0x87, hi: 0x88},
+	{value: 0x0316, lo: 0x89, hi: 0x8a},
+	{value: 0x0716, lo: 0x8b, hi: 0x8c},
+	{value: 0x0316, lo: 0x8d, hi: 0x8e},
+	{value: 0x0f12, lo: 0x8f, hi: 0x8f},
+	{value: 0x0117, lo: 0x90, hi: 0xbf},
+	// Block 0xb, offset 0x52
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x6553, lo: 0xb1, hi: 0xbf},
+	// Block 0xc, offset 0x54
+	{value: 0x3013, lo: 0x80, hi: 0x8f},
+	{value: 0x6853, lo: 0x90, hi: 0x96},
+	{value: 0x0014, lo: 0x99, hi: 0x99},
+	{value: 0x6552, lo: 0xa1, hi: 0xaf},
+	{value: 0x3012, lo: 0xb0, hi: 0xbf},
+	// Block 0xd, offset 0x59
+	{value: 0x6852, lo: 0x80, hi: 0x86},
+	{value: 0x198a, lo: 0x87, hi: 0x87},
+	{value: 0x0034, lo: 0x91, hi: 0x91},
+	{value: 0x0024, lo: 0x92, hi: 0x95},
+	{value: 0x0034, lo: 0x96, hi: 0x96},
+	{value: 0x0024, lo: 0x97, hi: 0x99},
+	{value: 0x0034, lo: 0x9a, hi: 0x9b},
+	{value: 0x0024, lo: 0x9c, hi: 0xa1},
+	{value: 0x0034, lo: 0xa2, hi: 0xa7},
+	{value: 0x0024, lo: 0xa8, hi: 0xa9},
+	{value: 0x0034, lo: 0xaa, hi: 0xaa},
+	{value: 0x0024, lo: 0xab, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xae},
+	{value: 0x0024, lo: 0xaf, hi: 0xaf},
+	{value: 0x0034, lo: 0xb0, hi: 0xbd},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xe, offset 0x69
+	{value: 0x0034, lo: 0x81, hi: 0x82},
+	{value: 0x0024, lo: 0x84, hi: 0x84},
+	{value: 0x0034, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xb3},
+	{value: 0x0054, lo: 0xb4, hi: 0xb4},
+	// Block 0xf, offset 0x70
+	{value: 0x0014, lo: 0x80, hi: 0x85},
+	{value: 0x0024, lo: 0x90, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x9a},
+	{value: 0x0014, lo: 0x9c, hi: 0x9c},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x10, offset 0x75
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x8a},
+	{value: 0x0034, lo: 0x8b, hi: 0x92},
+	{value: 0x0024, lo: 0x93, hi: 0x94},
+	{value: 0x0034, lo: 0x95, hi: 0x96},
+	{value: 0x0024, lo: 0x97, hi: 0x9b},
+	{value: 0x0034, lo: 0x9c, hi: 0x9c},
+	{value: 0x0024, lo: 0x9d, hi: 0x9e},
+	{value: 0x0034, lo: 0x9f, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0010, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0034, lo: 0xb0, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xbf},
+	// Block 0x11, offset 0x83
+	{value: 0x0010, lo: 0x80, hi: 0xbf},
+	// Block 0x12, offset 0x84
+	{value: 0x0010, lo: 0x80, hi: 0x93},
+	{value: 0x0010, lo: 0x95, hi: 0x95},
+	{value: 0x0024, lo: 0x96, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x0024, lo: 0x9f, hi: 0xa2},
+	{value: 0x0034, lo: 0xa3, hi: 0xa3},
+	{value: 0x0024, lo: 0xa4, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa6},
+	{value: 0x0024, lo: 0xa7, hi: 0xa8},
+	{value: 0x0034, lo: 0xaa, hi: 0xaa},
+	{value: 0x0024, lo: 0xab, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xbc},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x13, offset 0x92
+	{value: 0x0014, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0034, lo: 0x91, hi: 0x91},
+	{value: 0x0010, lo: 0x92, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	{value: 0x0034, lo: 0xb1, hi: 0xb1},
+	{value: 0x0024, lo: 0xb2, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0024, lo: 0xb5, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb9},
+	{value: 0x0024, lo: 0xba, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbc},
+	{value: 0x0024, lo: 0xbd, hi: 0xbd},
+	{value: 0x0034, lo: 0xbe, hi: 0xbe},
+	{value: 0x0024, lo: 0xbf, hi: 0xbf},
+	// Block 0x14, offset 0xa1
+	{value: 0x0024, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0024, lo: 0x83, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0024, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0024, lo: 0x87, hi: 0x87},
+	{value: 0x0034, lo: 0x88, hi: 0x88},
+	{value: 0x0024, lo: 0x89, hi: 0x8a},
+	{value: 0x0010, lo: 0x8d, hi: 0xbf},
+	// Block 0x15, offset 0xab
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0014, lo: 0xa6, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	// Block 0x16, offset 0xae
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0024, lo: 0xab, hi: 0xb1},
+	{value: 0x0034, lo: 0xb2, hi: 0xb2},
+	{value: 0x0024, lo: 0xb3, hi: 0xb3},
+	{value: 0x0014, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	// Block 0x17, offset 0xb4
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0024, lo: 0x96, hi: 0x99},
+	{value: 0x0014, lo: 0x9a, hi: 0x9a},
+	{value: 0x0024, lo: 0x9b, hi: 0xa3},
+	{value: 0x0014, lo: 0xa4, hi: 0xa4},
+	{value: 0x0024, lo: 0xa5, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa8},
+	{value: 0x0024, lo: 0xa9, hi: 0xad},
+	// Block 0x18, offset 0xbc
+	{value: 0x0010, lo: 0x80, hi: 0x98},
+	{value: 0x0034, lo: 0x99, hi: 0x9b},
+	// Block 0x19, offset 0xbe
+	{value: 0x0010, lo: 0xa0, hi: 0xb4},
+	{value: 0x0010, lo: 0xb6, hi: 0xbd},
+	// Block 0x1a, offset 0xc0
+	{value: 0x0024, lo: 0x94, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa2},
+	{value: 0x0034, lo: 0xa3, hi: 0xa3},
+	{value: 0x0024, lo: 0xa4, hi: 0xa5},
+	{value: 0x0034, lo: 0xa6, hi: 0xa6},
+	{value: 0x0024, lo: 0xa7, hi: 0xa8},
+	{value: 0x0034, lo: 0xa9, hi: 0xa9},
+	{value: 0x0024, lo: 0xaa, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xb2},
+	{value: 0x0024, lo: 0xb3, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb6},
+	{value: 0x0024, lo: 0xb7, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0024, lo: 0xbb, hi: 0xbf},
+	// Block 0x1b, offset 0xce
+	{value: 0x0014, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xb9},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x1c, offset 0xd4
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x88},
+	{value: 0x0010, lo: 0x89, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0024, lo: 0x91, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x92},
+	{value: 0x0024, lo: 0x93, hi: 0x94},
+	{value: 0x0014, lo: 0x95, hi: 0x97},
+	{value: 0x0010, lo: 0x98, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xbf},
+	// Block 0x1d, offset 0xe2
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb2},
+	{value: 0x0010, lo: 0xb6, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x1e, offset 0xed
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x8e},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9c, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xb1},
+	// Block 0x1f, offset 0xf8
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8a},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb6},
+	{value: 0x0010, lo: 0xb8, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x20, offset 0x103
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0014, lo: 0x87, hi: 0x88},
+	{value: 0x0014, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x91, hi: 0x91},
+	{value: 0x0010, lo: 0x99, hi: 0x9c},
+	{value: 0x0010, lo: 0x9e, hi: 0x9e},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb5},
+	// Block 0x21, offset 0x10f
+	{value: 0x0014, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x91},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x22, offset 0x119
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x85},
+	{value: 0x0014, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x89, hi: 0x89},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	// Block 0x23, offset 0x124
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x24, offset 0x12f
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x96, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9c, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	// Block 0x25, offset 0x13b
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8a},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0x95},
+	{value: 0x0010, lo: 0x99, hi: 0x9a},
+	{value: 0x0010, lo: 0x9c, hi: 0x9c},
+	{value: 0x0010, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa3, hi: 0xa4},
+	{value: 0x0010, lo: 0xa8, hi: 0xaa},
+	{value: 0x0010, lo: 0xae, hi: 0xb9},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x26, offset 0x147
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x82},
+	{value: 0x0010, lo: 0x86, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	// Block 0x27, offset 0x14f
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb9},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbf},
+	// Block 0x28, offset 0x157
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0014, lo: 0x86, hi: 0x88},
+	{value: 0x0014, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0034, lo: 0x95, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9a},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	// Block 0x29, offset 0x161
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x2a, offset 0x16c
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0014, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x95, hi: 0x96},
+	{value: 0x0010, lo: 0x9e, hi: 0x9e},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb1, hi: 0xb2},
+	// Block 0x2b, offset 0x178
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0xba},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x2c, offset 0x17e
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x86, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8e, hi: 0x8e},
+	{value: 0x0010, lo: 0x94, hi: 0x97},
+	{value: 0x0010, lo: 0x9f, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa3},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xba, hi: 0xbf},
+	// Block 0x2d, offset 0x189
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x96},
+	{value: 0x0010, lo: 0x9a, hi: 0xb1},
+	{value: 0x0010, lo: 0xb3, hi: 0xbb},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	// Block 0x2e, offset 0x18e
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0010, lo: 0x8f, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x94},
+	{value: 0x0014, lo: 0x96, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9f},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	// Block 0x2f, offset 0x196
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb4, hi: 0xb7},
+	{value: 0x0034, lo: 0xb8, hi: 0xba},
+	// Block 0x30, offset 0x199
+	{value: 0x0004, lo: 0x86, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x87},
+	{value: 0x0034, lo: 0x88, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x31, offset 0x19e
+	{value: 0x0014, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb4, hi: 0xb7},
+	{value: 0x0034, lo: 0xb8, hi: 0xb9},
+	{value: 0x0014, lo: 0xbb, hi: 0xbc},
+	// Block 0x32, offset 0x1a2
+	{value: 0x0004, lo: 0x86, hi: 0x86},
+	{value: 0x0034, lo: 0x88, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x33, offset 0x1a6
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0034, lo: 0x98, hi: 0x99},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0034, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	{value: 0x0034, lo: 0xb9, hi: 0xb9},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x34, offset 0x1ad
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0x89, hi: 0xac},
+	{value: 0x0034, lo: 0xb1, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xba, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x35, offset 0x1b6
+	{value: 0x0034, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0024, lo: 0x82, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0024, lo: 0x86, hi: 0x87},
+	{value: 0x0010, lo: 0x88, hi: 0x8c},
+	{value: 0x0014, lo: 0x8d, hi: 0x97},
+	{value: 0x0014, lo: 0x99, hi: 0xbc},
+	// Block 0x36, offset 0x1be
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	// Block 0x37, offset 0x1bf
+	{value: 0x0010, lo: 0xab, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	{value: 0x0010, lo: 0xb8, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbc},
+	{value: 0x0014, lo: 0xbd, hi: 0xbe},
+	// Block 0x38, offset 0x1c8
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x96, hi: 0x97},
+	{value: 0x0014, lo: 0x98, hi: 0x99},
+	{value: 0x0014, lo: 0x9e, hi: 0xa0},
+	{value: 0x0010, lo: 0xa2, hi: 0xa4},
+	{value: 0x0010, lo: 0xa7, hi: 0xad},
+	{value: 0x0014, lo: 0xb1, hi: 0xb4},
+	// Block 0x39, offset 0x1cf
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x6c53, lo: 0xa0, hi: 0xbf},
+	// Block 0x3a, offset 0x1d7
+	{value: 0x7053, lo: 0x80, hi: 0x85},
+	{value: 0x7053, lo: 0x87, hi: 0x87},
+	{value: 0x7053, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0xba},
+	{value: 0x0014, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x3b, offset 0x1dd
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x98},
+	{value: 0x0010, lo: 0x9a, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x3c, offset 0x1e3
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb5},
+	{value: 0x0010, lo: 0xb8, hi: 0xbe},
+	// Block 0x3d, offset 0x1e8
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x82, hi: 0x85},
+	{value: 0x0010, lo: 0x88, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0xbf},
+	// Block 0x3e, offset 0x1ec
+	{value: 0x0010, lo: 0x80, hi: 0x90},
+	{value: 0x0010, lo: 0x92, hi: 0x95},
+	{value: 0x0010, lo: 0x98, hi: 0xbf},
+	// Block 0x3f, offset 0x1ef
+	{value: 0x0010, lo: 0x80, hi: 0x9a},
+	{value: 0x0024, lo: 0x9d, hi: 0x9f},
+	// Block 0x40, offset 0x1f1
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x7453, lo: 0xa0, hi: 0xaf},
+	{value: 0x7853, lo: 0xb0, hi: 0xbf},
+	// Block 0x41, offset 0x1f4
+	{value: 0x7c53, lo: 0x80, hi: 0x8f},
+	{value: 0x8053, lo: 0x90, hi: 0x9f},
+	{value: 0x7c53, lo: 0xa0, hi: 0xaf},
+	{value: 0x0813, lo: 0xb0, hi: 0xb5},
+	{value: 0x0892, lo: 0xb8, hi: 0xbd},
+	// Block 0x42, offset 0x1f9
+	{value: 0x0010, lo: 0x81, hi: 0xbf},
+	// Block 0x43, offset 0x1fa
+	{value: 0x0010, lo: 0x80, hi: 0xac},
+	{value: 0x0010, lo: 0xaf, hi: 0xbf},
+	// Block 0x44, offset 0x1fc
+	{value: 0x0010, lo: 0x81, hi: 0x9a},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x45, offset 0x1fe
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0010, lo: 0xae, hi: 0xb8},
+	// Block 0x46, offset 0x200
+	{value: 0x0010, lo: 0x80, hi: 0x8c},
+	{value: 0x0010, lo: 0x8e, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x93},
+	{value: 0x0034, lo: 0x94, hi: 0x94},
+	{value: 0x0010, lo: 0xa0, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	// Block 0x47, offset 0x207
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	{value: 0x0014, lo: 0x92, hi: 0x93},
+	{value: 0x0010, lo: 0xa0, hi: 0xac},
+	{value: 0x0010, lo: 0xae, hi: 0xb0},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	// Block 0x48, offset 0x20c
+	{value: 0x0014, lo: 0xb4, hi: 0xb5},
+	{value: 0x0010, lo: 0xb6, hi: 0xb6},
+	{value: 0x0014, lo: 0xb7, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0x49, offset 0x210
+	{value: 0x0010, lo: 0x80, hi: 0x85},
+	{value: 0x0014, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0014, lo: 0x89, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x92},
+	{value: 0x0014, lo: 0x93, hi: 0x93},
+	{value: 0x0004, lo: 0x97, hi: 0x97},
+	{value: 0x0024, lo: 0x9d, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	// Block 0x4a, offset 0x219
+	{value: 0x0014, lo: 0x8b, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x4b, offset 0x21c
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0xb7},
+	// Block 0x4c, offset 0x21f
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0xa8},
+	{value: 0x0034, lo: 0xa9, hi: 0xa9},
+	{value: 0x0010, lo: 0xaa, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x4d, offset 0x225
+	{value: 0x0010, lo: 0x80, hi: 0xb5},
+	// Block 0x4e, offset 0x226
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0014, lo: 0xa0, hi: 0xa2},
+	{value: 0x0010, lo: 0xa3, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xab},
+	{value: 0x0010, lo: 0xb0, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb2},
+	{value: 0x0010, lo: 0xb3, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xb9},
+	{value: 0x0024, lo: 0xba, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbb},
+	// Block 0x4f, offset 0x231
+	{value: 0x0010, lo: 0x86, hi: 0x8f},
+	// Block 0x50, offset 0x232
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x51, offset 0x233
+	{value: 0x0010, lo: 0x80, hi: 0x96},
+	{value: 0x0024, lo: 0x97, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x98},
+	{value: 0x0010, lo: 0x99, hi: 0x9a},
+	{value: 0x0014, lo: 0x9b, hi: 0x9b},
+	// Block 0x52, offset 0x238
+	{value: 0x0010, lo: 0x95, hi: 0x95},
+	{value: 0x0014, lo: 0x96, hi: 0x96},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0014, lo: 0x98, hi: 0x9e},
+	{value: 0x0034, lo: 0xa0, hi: 0xa0},
+	{value: 0x0010, lo: 0xa1, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa2},
+	{value: 0x0010, lo: 0xa3, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xac},
+	{value: 0x0010, lo: 0xad, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb4},
+	{value: 0x0024, lo: 0xb5, hi: 0xbc},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x53, offset 0x245
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0004, lo: 0xa7, hi: 0xa7},
+	{value: 0x0024, lo: 0xb0, hi: 0xb4},
+	{value: 0x0034, lo: 0xb5, hi: 0xba},
+	{value: 0x0024, lo: 0xbb, hi: 0xbc},
+	{value: 0x0034, lo: 0xbd, hi: 0xbd},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	// Block 0x54, offset 0x24d
+	{value: 0x0014, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x55, offset 0x255
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x83},
+	{value: 0x0030, lo: 0x84, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x8b},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0024, lo: 0xab, hi: 0xab},
+	{value: 0x0034, lo: 0xac, hi: 0xac},
+	{value: 0x0024, lo: 0xad, hi: 0xb3},
+	// Block 0x56, offset 0x25e
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa9},
+	{value: 0x0030, lo: 0xaa, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xbf},
+	// Block 0x57, offset 0x267
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0034, lo: 0xa6, hi: 0xa6},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa9},
+	{value: 0x0010, lo: 0xaa, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xae},
+	{value: 0x0014, lo: 0xaf, hi: 0xb1},
+	{value: 0x0030, lo: 0xb2, hi: 0xb3},
+	// Block 0x58, offset 0x270
+	{value: 0x0010, lo: 0x80, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	// Block 0x59, offset 0x275
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x8d, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	// Block 0x5a, offset 0x278
+	{value: 0x1a6a, lo: 0x80, hi: 0x80},
+	{value: 0x1aea, lo: 0x81, hi: 0x81},
+	{value: 0x1b6a, lo: 0x82, hi: 0x82},
+	{value: 0x1bea, lo: 0x83, hi: 0x83},
+	{value: 0x1c6a, lo: 0x84, hi: 0x84},
+	{value: 0x1cea, lo: 0x85, hi: 0x85},
+	{value: 0x1d6a, lo: 0x86, hi: 0x86},
+	{value: 0x1dea, lo: 0x87, hi: 0x87},
+	{value: 0x1e6a, lo: 0x88, hi: 0x88},
+	// Block 0x5b, offset 0x281
+	{value: 0x0024, lo: 0x90, hi: 0x92},
+	{value: 0x0034, lo: 0x94, hi: 0x99},
+	{value: 0x0024, lo: 0x9a, hi: 0x9b},
+	{value: 0x0034, lo: 0x9c, hi: 0x9f},
+	{value: 0x0024, lo: 0xa0, hi: 0xa0},
+	{value: 0x0010, lo: 0xa1, hi: 0xa1},
+	{value: 0x0034, lo: 0xa2, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xb3},
+	{value: 0x0024, lo: 0xb4, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb6},
+	{value: 0x0024, lo: 0xb8, hi: 0xb9},
+	// Block 0x5c, offset 0x28e
+	{value: 0x0012, lo: 0x80, hi: 0xab},
+	{value: 0x0015, lo: 0xac, hi: 0xbf},
+	// Block 0x5d, offset 0x290
+	{value: 0x0015, lo: 0x80, hi: 0xaa},
+	{value: 0x0012, lo: 0xab, hi: 0xb7},
+	{value: 0x0015, lo: 0xb8, hi: 0xb8},
+	{value: 0x8452, lo: 0xb9, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xbc},
+	{value: 0x8852, lo: 0xbd, hi: 0xbd},
+	{value: 0x0012, lo: 0xbe, hi: 0xbf},
+	// Block 0x5e, offset 0x297
+	{value: 0x0012, lo: 0x80, hi: 0x9a},
+	{value: 0x0015, lo: 0x9b, hi: 0xbf},
+	// Block 0x5f, offset 0x299
+	{value: 0x0024, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0024, lo: 0x83, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0024, lo: 0x8b, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x90},
+	{value: 0x0024, lo: 0x91, hi: 0xb5},
+	{value: 0x0024, lo: 0xbb, hi: 0xbb},
+	{value: 0x0034, lo: 0xbc, hi: 0xbd},
+	{value: 0x0024, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x60, offset 0x2a4
+	{value: 0x0117, lo: 0x80, hi: 0xbf},
+	// Block 0x61, offset 0x2a5
+	{value: 0x0117, lo: 0x80, hi: 0x95},
+	{value: 0x1f1a, lo: 0x96, hi: 0x96},
+	{value: 0x1fca, lo: 0x97, hi: 0x97},
+	{value: 0x207a, lo: 0x98, hi: 0x98},
+	{value: 0x212a, lo: 0x99, hi: 0x99},
+	{value: 0x21da, lo: 0x9a, hi: 0x9a},
+	{value: 0x228a, lo: 0x9b, hi: 0x9b},
+	{value: 0x0012, lo: 0x9c, hi: 0x9d},
+	{value: 0x233b, lo: 0x9e, hi: 0x9e},
+	{value: 0x0012, lo: 0x9f, hi: 0x9f},
+	{value: 0x0117, lo: 0xa0, hi: 0xbf},
+	// Block 0x62, offset 0x2b0
+	{value: 0x0812, lo: 0x80, hi: 0x87},
+	{value: 0x0813, lo: 0x88, hi: 0x8f},
+	{value: 0x0812, lo: 0x90, hi: 0x95},
+	{value: 0x0813, lo: 0x98, hi: 0x9d},
+	{value: 0x0812, lo: 0xa0, hi: 0xa7},
+	{value: 0x0813, lo: 0xa8, hi: 0xaf},
+	{value: 0x0812, lo: 0xb0, hi: 0xb7},
+	{value: 0x0813, lo: 0xb8, hi: 0xbf},
+	// Block 0x63, offset 0x2b8
+	{value: 0x0004, lo: 0x8b, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8f},
+	{value: 0x0054, lo: 0x98, hi: 0x99},
+	{value: 0x0054, lo: 0xa4, hi: 0xa4},
+	{value: 0x0054, lo: 0xa7, hi: 0xa7},
+	{value: 0x0014, lo: 0xaa, hi: 0xae},
+	{value: 0x0010, lo: 0xaf, hi: 0xaf},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x64, offset 0x2c0
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x94, hi: 0x94},
+	{value: 0x0014, lo: 0xa0, hi: 0xa4},
+	{value: 0x0014, lo: 0xa6, hi: 0xaf},
+	{value: 0x0015, lo: 0xb1, hi: 0xb1},
+	{value: 0x0015, lo: 0xbf, hi: 0xbf},
+	// Block 0x65, offset 0x2c6
+	{value: 0x0015, lo: 0x90, hi: 0x9c},
+	// Block 0x66, offset 0x2c7
+	{value: 0x0024, lo: 0x90, hi: 0x91},
+	{value: 0x0034, lo: 0x92, hi: 0x93},
+	{value: 0x0024, lo: 0x94, hi: 0x97},
+	{value: 0x0034, lo: 0x98, hi: 0x9a},
+	{value: 0x0024, lo: 0x9b, hi: 0x9c},
+	{value: 0x0014, lo: 0x9d, hi: 0xa0},
+	{value: 0x0024, lo: 0xa1, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa4},
+	{value: 0x0034, lo: 0xa5, hi: 0xa6},
+	{value: 0x0024, lo: 0xa7, hi: 0xa7},
+	{value: 0x0034, lo: 0xa8, hi: 0xa8},
+	{value: 0x0024, lo: 0xa9, hi: 0xa9},
+	{value: 0x0034, lo: 0xaa, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	// Block 0x67, offset 0x2d5
+	{value: 0x0016, lo: 0x85, hi: 0x86},
+	{value: 0x0012, lo: 0x87, hi: 0x89},
+	{value: 0x9d52, lo: 0x8e, hi: 0x8e},
+	{value: 0x1013, lo: 0xa0, hi: 0xaf},
+	{value: 0x1012, lo: 0xb0, hi: 0xbf},
+	// Block 0x68, offset 0x2da
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0716, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x88},
+	// Block 0x69, offset 0x2dd
+	{value: 0xa053, lo: 0xb6, hi: 0xb7},
+	{value: 0xa353, lo: 0xb8, hi: 0xb9},
+	{value: 0xa653, lo: 0xba, hi: 0xbb},
+	{value: 0xa353, lo: 0xbc, hi: 0xbd},
+	{value: 0xa053, lo: 0xbe, hi: 0xbf},
+	// Block 0x6a, offset 0x2e2
+	{value: 0x3013, lo: 0x80, hi: 0x8f},
+	{value: 0x6553, lo: 0x90, hi: 0x9f},
+	{value: 0xa953, lo: 0xa0, hi: 0xae},
+	{value: 0x3012, lo: 0xb0, hi: 0xbf},
+	// Block 0x6b, offset 0x2e6
+	{value: 0x0117, lo: 0x80, hi: 0xa3},
+	{value: 0x0012, lo: 0xa4, hi: 0xa4},
+	{value: 0x0716, lo: 0xab, hi: 0xac},
+	{value: 0x0316, lo: 0xad, hi: 0xae},
+	{value: 0x0024, lo: 0xaf, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xb3},
+	// Block 0x6c, offset 0x2ec
+	{value: 0x6c52, lo: 0x80, hi: 0x9f},
+	{value: 0x7052, lo: 0xa0, hi: 0xa5},
+	{value: 0x7052, lo: 0xa7, hi: 0xa7},
+	{value: 0x7052, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x6d, offset 0x2f1
+	{value: 0x0010, lo: 0x80, hi: 0xa7},
+	{value: 0x0014, lo: 0xaf, hi: 0xaf},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0x6e, offset 0x2f4
+	{value: 0x0010, lo: 0x80, hi: 0x96},
+	{value: 0x0010, lo: 0xa0, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xae},
+	{value: 0x0010, lo: 0xb0, hi: 0xb6},
+	{value: 0x0010, lo: 0xb8, hi: 0xbe},
+	// Block 0x6f, offset 0x2f9
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x88, hi: 0x8e},
+	{value: 0x0010, lo: 0x90, hi: 0x96},
+	{value: 0x0010, lo: 0x98, hi: 0x9e},
+	{value: 0x0024, lo: 0xa0, hi: 0xbf},
+	// Block 0x70, offset 0x2fe
+	{value: 0x0014, lo: 0xaf, hi: 0xaf},
+	// Block 0x71, offset 0x2ff
+	{value: 0x0014, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0xaa, hi: 0xad},
+	{value: 0x0030, lo: 0xae, hi: 0xaf},
+	{value: 0x0004, lo: 0xb1, hi: 0xb5},
+	{value: 0x0014, lo: 0xbb, hi: 0xbb},
+	{value: 0x0010, lo: 0xbc, hi: 0xbc},
+	// Block 0x72, offset 0x305
+	{value: 0x0034, lo: 0x99, hi: 0x9a},
+	{value: 0x0004, lo: 0x9b, hi: 0x9e},
+	// Block 0x73, offset 0x307
+	{value: 0x0004, lo: 0xbc, hi: 0xbe},
+	// Block 0x74, offset 0x308
+	{value: 0x0010, lo: 0x85, hi: 0xad},
+	{value: 0x0010, lo: 0xb1, hi: 0xbf},
+	// Block 0x75, offset 0x30a
+	{value: 0x0010, lo: 0x80, hi: 0x8e},
+	{value: 0x0010, lo: 0xa0, hi: 0xba},
+	// Block 0x76, offset 0x30c
+	{value: 0x0010, lo: 0x80, hi: 0x94},
+	{value: 0x0014, lo: 0x95, hi: 0x95},
+	{value: 0x0010, lo: 0x96, hi: 0xbf},
+	// Block 0x77, offset 0x30f
+	{value: 0x0010, lo: 0x80, hi: 0x8c},
+	// Block 0x78, offset 0x310
+	{value: 0x0010, lo: 0x90, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	// Block 0x79, offset 0x312
+	{value: 0x0010, lo: 0x80, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0010, lo: 0x90, hi: 0xab},
+	// Block 0x7a, offset 0x315
+	{value: 0x0117, lo: 0x80, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xae},
+	{value: 0x0024, lo: 0xaf, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb2},
+	{value: 0x0024, lo: 0xb4, hi: 0xbd},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x7b, offset 0x31b
+	{value: 0x0117, lo: 0x80, hi: 0x9b},
+	{value: 0x0015, lo: 0x9c, hi: 0x9d},
+	{value: 0x0024, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0x7c, offset 0x31f
+	{value: 0x0010, lo: 0x80, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb1},
+	// Block 0x7d, offset 0x321
+	{value: 0x0004, lo: 0x80, hi: 0x96},
+	{value: 0x0014, lo: 0x97, hi: 0x9f},
+	{value: 0x0004, lo: 0xa0, hi: 0xa1},
+	{value: 0x0117, lo: 0xa2, hi: 0xaf},
+	{value: 0x0012, lo: 0xb0, hi: 0xb1},
+	{value: 0x0117, lo: 0xb2, hi: 0xbf},
+	// Block 0x7e, offset 0x327
+	{value: 0x0117, lo: 0x80, hi: 0xaf},
+	{value: 0x0015, lo: 0xb0, hi: 0xb0},
+	{value: 0x0012, lo: 0xb1, hi: 0xb8},
+	{value: 0x0316, lo: 0xb9, hi: 0xba},
+	{value: 0x0716, lo: 0xbb, hi: 0xbc},
+	{value: 0x8453, lo: 0xbd, hi: 0xbd},
+	{value: 0x0117, lo: 0xbe, hi: 0xbf},
+	// Block 0x7f, offset 0x32e
+	{value: 0x0010, lo: 0xb7, hi: 0xb7},
+	{value: 0x0015, lo: 0xb8, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbf},
+	// Block 0x80, offset 0x332
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0014, lo: 0x82, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8a},
+	{value: 0x0014, lo: 0x8b, hi: 0x8b},
+	{value: 0x0010, lo: 0x8c, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa6},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	// Block 0x81, offset 0x33b
+	{value: 0x0010, lo: 0x80, hi: 0xb3},
+	// Block 0x82, offset 0x33c
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0034, lo: 0x84, hi: 0x84},
+	{value: 0x0014, lo: 0x85, hi: 0x85},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0024, lo: 0xa0, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb7},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	// Block 0x83, offset 0x344
+	{value: 0x0010, lo: 0x80, hi: 0xa5},
+	{value: 0x0014, lo: 0xa6, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x84, offset 0x348
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0014, lo: 0x87, hi: 0x91},
+	{value: 0x0010, lo: 0x92, hi: 0x92},
+	{value: 0x0030, lo: 0x93, hi: 0x93},
+	{value: 0x0010, lo: 0xa0, hi: 0xbc},
+	// Block 0x85, offset 0x34d
+	{value: 0x0014, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xb9},
+	{value: 0x0010, lo: 0xba, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0x86, offset 0x355
+	{value: 0x0030, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0014, lo: 0xa5, hi: 0xa5},
+	{value: 0x0004, lo: 0xa6, hi: 0xa6},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x87, offset 0x35b
+	{value: 0x0010, lo: 0x80, hi: 0xa8},
+	{value: 0x0014, lo: 0xa9, hi: 0xae},
+	{value: 0x0010, lo: 0xaf, hi: 0xb0},
+	{value: 0x0014, lo: 0xb1, hi: 0xb2},
+	{value: 0x0010, lo: 0xb3, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb6},
+	// Block 0x88, offset 0x361
+	{value: 0x0010, lo: 0x80, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0x8b},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0010, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0004, lo: 0xb0, hi: 0xb0},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbd},
+	// Block 0x89, offset 0x36b
+	{value: 0x0024, lo: 0xb0, hi: 0xb0},
+	{value: 0x0024, lo: 0xb2, hi: 0xb3},
+	{value: 0x0034, lo: 0xb4, hi: 0xb4},
+	{value: 0x0024, lo: 0xb7, hi: 0xb8},
+	{value: 0x0024, lo: 0xbe, hi: 0xbf},
+	// Block 0x8a, offset 0x370
+	{value: 0x0024, lo: 0x81, hi: 0x81},
+	{value: 0x0004, lo: 0x9d, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xab},
+	{value: 0x0014, lo: 0xac, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0010, lo: 0xb2, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb4},
+	{value: 0x0010, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb6},
+	// Block 0x8b, offset 0x379
+	{value: 0x0010, lo: 0x81, hi: 0x86},
+	{value: 0x0010, lo: 0x89, hi: 0x8e},
+	{value: 0x0010, lo: 0x91, hi: 0x96},
+	{value: 0x0010, lo: 0xa0, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xae},
+	{value: 0x0012, lo: 0xb0, hi: 0xbf},
+	// Block 0x8c, offset 0x37f
+	{value: 0x0012, lo: 0x80, hi: 0x92},
+	{value: 0xac52, lo: 0x93, hi: 0x93},
+	{value: 0x0012, lo: 0x94, hi: 0x9a},
+	{value: 0x0004, lo: 0x9b, hi: 0x9b},
+	{value: 0x0015, lo: 0x9c, hi: 0x9f},
+	{value: 0x0012, lo: 0xa0, hi: 0xa5},
+	{value: 0x74d2, lo: 0xb0, hi: 0xbf},
+	// Block 0x8d, offset 0x386
+	{value: 0x78d2, lo: 0x80, hi: 0x8f},
+	{value: 0x7cd2, lo: 0x90, hi: 0x9f},
+	{value: 0x80d2, lo: 0xa0, hi: 0xaf},
+	{value: 0x7cd2, lo: 0xb0, hi: 0xbf},
+	// Block 0x8e, offset 0x38a
+	{value: 0x0010, lo: 0x80, hi: 0xa4},
+	{value: 0x0014, lo: 0xa5, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa7},
+	{value: 0x0014, lo: 0xa8, hi: 0xa8},
+	{value: 0x0010, lo: 0xa9, hi: 0xaa},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0034, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0x8f, offset 0x392
+	{value: 0x0010, lo: 0x80, hi: 0xa3},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0x90, offset 0x394
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x8b, hi: 0xbb},
+	// Block 0x91, offset 0x396
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x86, hi: 0xbf},
+	// Block 0x92, offset 0x399
+	{value: 0x0010, lo: 0x80, hi: 0xb1},
+	{value: 0x0004, lo: 0xb2, hi: 0xbf},
+	// Block 0x93, offset 0x39b
+	{value: 0x0004, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x93, hi: 0xbf},
+	// Block 0x94, offset 0x39d
+	{value: 0x0010, lo: 0x80, hi: 0xbd},
+	// Block 0x95, offset 0x39e
+	{value: 0x0010, lo: 0x90, hi: 0xbf},
+	// Block 0x96, offset 0x39f
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x0010, lo: 0x92, hi: 0xbf},
+	// Block 0x97, offset 0x3a1
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0xb0, hi: 0xbb},
+	// Block 0x98, offset 0x3a3
+	{value: 0x0014, lo: 0x80, hi: 0x8f},
+	{value: 0x0054, lo: 0x93, hi: 0x93},
+	{value: 0x0024, lo: 0xa0, hi: 0xa6},
+	{value: 0x0034, lo: 0xa7, hi: 0xad},
+	{value: 0x0024, lo: 0xae, hi: 0xaf},
+	{value: 0x0010, lo: 0xb3, hi: 0xb4},
+	// Block 0x99, offset 0x3a9
+	{value: 0x0010, lo: 0x8d, hi: 0x8f},
+	{value: 0x0054, lo: 0x92, hi: 0x92},
+	{value: 0x0054, lo: 0x95, hi: 0x95},
+	{value: 0x0010, lo: 0xb0, hi: 0xb4},
+	{value: 0x0010, lo: 0xb6, hi: 0xbf},
+	// Block 0x9a, offset 0x3ae
+	{value: 0x0010, lo: 0x80, hi: 0xbc},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0x9b, offset 0x3b0
+	{value: 0x0054, lo: 0x87, hi: 0x87},
+	{value: 0x0054, lo: 0x8e, hi: 0x8e},
+	{value: 0x0054, lo: 0x9a, hi: 0x9a},
+	{value: 0x5f53, lo: 0xa1, hi: 0xba},
+	{value: 0x0004, lo: 0xbe, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0x9c, offset 0x3b6
+	{value: 0x0004, lo: 0x80, hi: 0x80},
+	{value: 0x5f52, lo: 0x81, hi: 0x9a},
+	{value: 0x0004, lo: 0xb0, hi: 0xb0},
+	// Block 0x9d, offset 0x3b9
+	{value: 0x0014, lo: 0x9e, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xbe},
+	// Block 0x9e, offset 0x3bb
+	{value: 0x0010, lo: 0x82, hi: 0x87},
+	{value: 0x0010, lo: 0x8a, hi: 0x8f},
+	{value: 0x0010, lo: 0x92, hi: 0x97},
+	{value: 0x0010, lo: 0x9a, hi: 0x9c},
+	{value: 0x0004, lo: 0xa3, hi: 0xa3},
+	{value: 0x0014, lo: 0xb9, hi: 0xbb},
+	// Block 0x9f, offset 0x3c1
+	{value: 0x0010, lo: 0x80, hi: 0x8b},
+	{value: 0x0010, lo: 0x8d, hi: 0xa6},
+	{value: 0x0010, lo: 0xa8, hi: 0xba},
+	{value: 0x0010, lo: 0xbc, hi: 0xbd},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xa0, offset 0x3c6
+	{value: 0x0010, lo: 0x80, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x9d},
+	// Block 0xa1, offset 0x3c8
+	{value: 0x0010, lo: 0x80, hi: 0xba},
+	// Block 0xa2, offset 0x3c9
+	{value: 0x0010, lo: 0x80, hi: 0xb4},
+	// Block 0xa3, offset 0x3ca
+	{value: 0x0034, lo: 0xbd, hi: 0xbd},
+	// Block 0xa4, offset 0x3cb
+	{value: 0x0010, lo: 0x80, hi: 0x9c},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0xa5, offset 0x3cd
+	{value: 0x0010, lo: 0x80, hi: 0x90},
+	{value: 0x0034, lo: 0xa0, hi: 0xa0},
+	// Block 0xa6, offset 0x3cf
+	{value: 0x0010, lo: 0x80, hi: 0x9f},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xa7, offset 0x3d1
+	{value: 0x0010, lo: 0x80, hi: 0x8a},
+	{value: 0x0010, lo: 0x90, hi: 0xb5},
+	{value: 0x0024, lo: 0xb6, hi: 0xba},
+	// Block 0xa8, offset 0x3d4
+	{value: 0x0010, lo: 0x80, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xbf},
+	// Block 0xa9, offset 0x3d6
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x88, hi: 0x8f},
+	{value: 0x0010, lo: 0x91, hi: 0x95},
+	// Block 0xaa, offset 0x3d9
+	{value: 0x2813, lo: 0x80, hi: 0x87},
+	{value: 0x3813, lo: 0x88, hi: 0x8f},
+	{value: 0x2813, lo: 0x90, hi: 0x97},
+	{value: 0xaf53, lo: 0x98, hi: 0x9f},
+	{value: 0xb253, lo: 0xa0, hi: 0xa7},
+	{value: 0x2812, lo: 0xa8, hi: 0xaf},
+	{value: 0x3812, lo: 0xb0, hi: 0xb7},
+	{value: 0x2812, lo: 0xb8, hi: 0xbf},
+	// Block 0xab, offset 0x3e1
+	{value: 0xaf52, lo: 0x80, hi: 0x87},
+	{value: 0xb252, lo: 0x88, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0xbf},
+	// Block 0xac, offset 0x3e4
+	{value: 0x0010, lo: 0x80, hi: 0x9d},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0xb253, lo: 0xb0, hi: 0xb7},
+	{value: 0xaf53, lo: 0xb8, hi: 0xbf},
+	// Block 0xad, offset 0x3e8
+	{value: 0x2813, lo: 0x80, hi: 0x87},
+	{value: 0x3813, lo: 0x88, hi: 0x8f},
+	{value: 0x2813, lo: 0x90, hi: 0x93},
+	{value: 0xb252, lo: 0x98, hi: 0x9f},
+	{value: 0xaf52, lo: 0xa0, hi: 0xa7},
+	{value: 0x2812, lo: 0xa8, hi: 0xaf},
+	{value: 0x3812, lo: 0xb0, hi: 0xb7},
+	{value: 0x2812, lo: 0xb8, hi: 0xbb},
+	// Block 0xae, offset 0x3f0
+	{value: 0x0010, lo: 0x80, hi: 0xa7},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xaf, offset 0x3f2
+	{value: 0x0010, lo: 0x80, hi: 0xa3},
+	// Block 0xb0, offset 0x3f3
+	{value: 0x0010, lo: 0x80, hi: 0xb6},
+	// Block 0xb1, offset 0x3f4
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xa7},
+	// Block 0xb2, offset 0x3f6
+	{value: 0x0010, lo: 0x80, hi: 0x85},
+	{value: 0x0010, lo: 0x88, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0xb5},
+	{value: 0x0010, lo: 0xb7, hi: 0xb8},
+	{value: 0x0010, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xb3, offset 0x3fc
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb6},
+	// Block 0xb4, offset 0x3fe
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	// Block 0xb5, offset 0x3ff
+	{value: 0x0010, lo: 0xa0, hi: 0xb2},
+	{value: 0x0010, lo: 0xb4, hi: 0xb5},
+	// Block 0xb6, offset 0x401
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb9},
+	// Block 0xb7, offset 0x403
+	{value: 0x0010, lo: 0x80, hi: 0xb7},
+	{value: 0x0010, lo: 0xbe, hi: 0xbf},
+	// Block 0xb8, offset 0x405
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x83},
+	{value: 0x0014, lo: 0x85, hi: 0x86},
+	{value: 0x0014, lo: 0x8c, hi: 0x8c},
+	{value: 0x0034, lo: 0x8d, hi: 0x8d},
+	{value: 0x0014, lo: 0x8e, hi: 0x8e},
+	{value: 0x0024, lo: 0x8f, hi: 0x8f},
+	{value: 0x0010, lo: 0x90, hi: 0x93},
+	{value: 0x0010, lo: 0x95, hi: 0x97},
+	{value: 0x0010, lo: 0x99, hi: 0xb3},
+	{value: 0x0024, lo: 0xb8, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xb9, offset 0x412
+	{value: 0x0010, lo: 0xa0, hi: 0xbc},
+	// Block 0xba, offset 0x413
+	{value: 0x0010, lo: 0x80, hi: 0x9c},
+	// Block 0xbb, offset 0x414
+	{value: 0x0010, lo: 0x80, hi: 0x87},
+	{value: 0x0010, lo: 0x89, hi: 0xa4},
+	{value: 0x0024, lo: 0xa5, hi: 0xa5},
+	{value: 0x0034, lo: 0xa6, hi: 0xa6},
+	// Block 0xbc, offset 0x418
+	{value: 0x0010, lo: 0x80, hi: 0x95},
+	{value: 0x0010, lo: 0xa0, hi: 0xb2},
+	// Block 0xbd, offset 0x41a
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	// Block 0xbe, offset 0x41b
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	// Block 0xbf, offset 0x41c
+	{value: 0x5653, lo: 0x80, hi: 0xb2},
+	// Block 0xc0, offset 0x41d
+	{value: 0x5652, lo: 0x80, hi: 0xb2},
+	// Block 0xc1, offset 0x41e
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbf},
+	// Block 0xc2, offset 0x422
+	{value: 0x0014, lo: 0x80, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0xa6, hi: 0xaf},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xc3, offset 0x426
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb6},
+	{value: 0x0010, lo: 0xb7, hi: 0xb8},
+	{value: 0x0034, lo: 0xb9, hi: 0xba},
+	{value: 0x0014, lo: 0xbd, hi: 0xbd},
+	// Block 0xc4, offset 0x42c
+	{value: 0x0010, lo: 0x90, hi: 0xa8},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xc5, offset 0x42e
+	{value: 0x0024, lo: 0x80, hi: 0x82},
+	{value: 0x0010, lo: 0x83, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xab},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb4},
+	{value: 0x0010, lo: 0xb6, hi: 0xbf},
+	// Block 0xc6, offset 0x435
+	{value: 0x0010, lo: 0x90, hi: 0xb2},
+	{value: 0x0034, lo: 0xb3, hi: 0xb3},
+	{value: 0x0010, lo: 0xb6, hi: 0xb6},
+	// Block 0xc7, offset 0x438
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0xb5},
+	{value: 0x0014, lo: 0xb6, hi: 0xbe},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xc8, offset 0x43c
+	{value: 0x0030, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0014, lo: 0x8b, hi: 0x8c},
+	{value: 0x0010, lo: 0x90, hi: 0x9a},
+	{value: 0x0010, lo: 0x9c, hi: 0x9c},
+	// Block 0xc9, offset 0x442
+	{value: 0x0010, lo: 0x80, hi: 0x91},
+	{value: 0x0010, lo: 0x93, hi: 0xae},
+	{value: 0x0014, lo: 0xaf, hi: 0xb1},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0014, lo: 0xb4, hi: 0xb4},
+	{value: 0x0030, lo: 0xb5, hi: 0xb5},
+	{value: 0x0034, lo: 0xb6, hi: 0xb6},
+	{value: 0x0014, lo: 0xb7, hi: 0xb7},
+	{value: 0x0014, lo: 0xbe, hi: 0xbe},
+	// Block 0xca, offset 0x44b
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	{value: 0x0010, lo: 0x88, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0x8d},
+	{value: 0x0010, lo: 0x8f, hi: 0x9d},
+	{value: 0x0010, lo: 0x9f, hi: 0xa8},
+	{value: 0x0010, lo: 0xb0, hi: 0xbf},
+	// Block 0xcb, offset 0x451
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0014, lo: 0x9f, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa2},
+	{value: 0x0014, lo: 0xa3, hi: 0xa8},
+	{value: 0x0034, lo: 0xa9, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xcc, offset 0x457
+	{value: 0x0014, lo: 0x80, hi: 0x81},
+	{value: 0x0010, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x8c},
+	{value: 0x0010, lo: 0x8f, hi: 0x90},
+	{value: 0x0010, lo: 0x93, hi: 0xa8},
+	{value: 0x0010, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb5, hi: 0xb9},
+	{value: 0x0034, lo: 0xbc, hi: 0xbc},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0xcd, offset 0x461
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x84},
+	{value: 0x0010, lo: 0x87, hi: 0x88},
+	{value: 0x0010, lo: 0x8b, hi: 0x8c},
+	{value: 0x0030, lo: 0x8d, hi: 0x8d},
+	{value: 0x0010, lo: 0x90, hi: 0x90},
+	{value: 0x0010, lo: 0x97, hi: 0x97},
+	{value: 0x0010, lo: 0x9d, hi: 0xa3},
+	{value: 0x0024, lo: 0xa6, hi: 0xac},
+	{value: 0x0024, lo: 0xb0, hi: 0xb4},
+	// Block 0xce, offset 0x46b
+	{value: 0x0010, lo: 0x80, hi: 0xb7},
+	{value: 0x0014, lo: 0xb8, hi: 0xbf},
+	// Block 0xcf, offset 0x46d
+	{value: 0x0010, lo: 0x80, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x82},
+	{value: 0x0014, lo: 0x83, hi: 0x84},
+	{value: 0x0010, lo: 0x85, hi: 0x85},
+	{value: 0x0034, lo: 0x86, hi: 0x86},
+	{value: 0x0010, lo: 0x87, hi: 0x8a},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xd0, offset 0x474
+	{value: 0x0010, lo: 0x80, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xb8},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	{value: 0x0014, lo: 0xba, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbe},
+	{value: 0x0014, lo: 0xbf, hi: 0xbf},
+	// Block 0xd1, offset 0x47a
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x81, hi: 0x81},
+	{value: 0x0034, lo: 0x82, hi: 0x83},
+	{value: 0x0010, lo: 0x84, hi: 0x85},
+	{value: 0x0010, lo: 0x87, hi: 0x87},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xd2, offset 0x480
+	{value: 0x0010, lo: 0x80, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb5},
+	{value: 0x0010, lo: 0xb8, hi: 0xbb},
+	{value: 0x0014, lo: 0xbc, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xd3, offset 0x486
+	{value: 0x0034, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x98, hi: 0x9b},
+	{value: 0x0014, lo: 0x9c, hi: 0x9d},
+	// Block 0xd4, offset 0x489
+	{value: 0x0010, lo: 0x80, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xba},
+	{value: 0x0010, lo: 0xbb, hi: 0xbc},
+	{value: 0x0014, lo: 0xbd, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xd5, offset 0x48f
+	{value: 0x0014, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x84, hi: 0x84},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0xd6, offset 0x492
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0014, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xac, hi: 0xac},
+	{value: 0x0014, lo: 0xad, hi: 0xad},
+	{value: 0x0010, lo: 0xae, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb5},
+	{value: 0x0030, lo: 0xb6, hi: 0xb6},
+	{value: 0x0034, lo: 0xb7, hi: 0xb7},
+	// Block 0xd7, offset 0x49a
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	// Block 0xd8, offset 0x49b
+	{value: 0x0014, lo: 0x9d, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa1},
+	{value: 0x0014, lo: 0xa2, hi: 0xa5},
+	{value: 0x0010, lo: 0xa6, hi: 0xa6},
+	{value: 0x0014, lo: 0xa7, hi: 0xaa},
+	{value: 0x0034, lo: 0xab, hi: 0xab},
+	{value: 0x0010, lo: 0xb0, hi: 0xb9},
+	// Block 0xd9, offset 0x4a2
+	{value: 0x5f53, lo: 0xa0, hi: 0xbf},
+	// Block 0xda, offset 0x4a3
+	{value: 0x5f52, lo: 0x80, hi: 0x9f},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	{value: 0x0010, lo: 0xbf, hi: 0xbf},
+	// Block 0xdb, offset 0x4a6
+	{value: 0x0010, lo: 0x80, hi: 0xb8},
+	// Block 0xdc, offset 0x4a7
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x8a, hi: 0xaf},
+	{value: 0x0014, lo: 0xb0, hi: 0xb6},
+	{value: 0x0014, lo: 0xb8, hi: 0xbd},
+	{value: 0x0010, lo: 0xbe, hi: 0xbe},
+	{value: 0x0034, lo: 0xbf, hi: 0xbf},
+	// Block 0xdd, offset 0x4ad
+	{value: 0x0010, lo: 0x80, hi: 0x80},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xb2, hi: 0xbf},
+	// Block 0xde, offset 0x4b0
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	{value: 0x0014, lo: 0x92, hi: 0xa7},
+	{value: 0x0010, lo: 0xa9, hi: 0xa9},
+	{value: 0x0014, lo: 0xaa, hi: 0xb0},
+	{value: 0x0010, lo: 0xb1, hi: 0xb1},
+	{value: 0x0014, lo: 0xb2, hi: 0xb3},
+	{value: 0x0010, lo: 0xb4, hi: 0xb4},
+	{value: 0x0014, lo: 0xb5, hi: 0xb6},
+	// Block 0xdf, offset 0x4b8
+	{value: 0x0010, lo: 0x80, hi: 0x99},
+	// Block 0xe0, offset 0x4b9
+	{value: 0x0010, lo: 0x80, hi: 0xae},
+	// Block 0xe1, offset 0x4ba
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	// Block 0xe2, offset 0x4bb
+	{value: 0x0010, lo: 0x80, hi: 0x86},
+	// Block 0xe3, offset 0x4bc
+	{value: 0x0010, lo: 0x80, hi: 0x9e},
+	{value: 0x0010, lo: 0xa0, hi: 0xa9},
+	// Block 0xe4, offset 0x4be
+	{value: 0x0010, lo: 0x90, hi: 0xad},
+	{value: 0x0034, lo: 0xb0, hi: 0xb4},
+	// Block 0xe5, offset 0x4c0
+	{value: 0x0010, lo: 0x80, hi: 0xaf},
+	{value: 0x0024, lo: 0xb0, hi: 0xb6},
+	// Block 0xe6, offset 0x4c2
+	{value: 0x0014, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0010, lo: 0xa3, hi: 0xb7},
+	{value: 0x0010, lo: 0xbd, hi: 0xbf},
+	// Block 0xe7, offset 0x4c6
+	{value: 0x0010, lo: 0x80, hi: 0x8f},
+	// Block 0xe8, offset 0x4c7
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0010, lo: 0x90, hi: 0xbe},
+	// Block 0xe9, offset 0x4c9
+	{value: 0x0014, lo: 0x8f, hi: 0x9f},
+	// Block 0xea, offset 0x4ca
+	{value: 0x0014, lo: 0xa0, hi: 0xa0},
+	// Block 0xeb, offset 0x4cb
+	{value: 0x0010, lo: 0x80, hi: 0xaa},
+	{value: 0x0010, lo: 0xb0, hi: 0xbc},
+	// Block 0xec, offset 0x4cd
+	{value: 0x0010, lo: 0x80, hi: 0x88},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	{value: 0x0014, lo: 0x9d, hi: 0x9d},
+	{value: 0x0034, lo: 0x9e, hi: 0x9e},
+	{value: 0x0014, lo: 0xa0, hi: 0xa3},
+	// Block 0xed, offset 0x4d2
+	{value: 0x0030, lo: 0xa5, hi: 0xa6},
+	{value: 0x0034, lo: 0xa7, hi: 0xa9},
+	{value: 0x0030, lo: 0xad, hi: 0xb2},
+	{value: 0x0014, lo: 0xb3, hi: 0xba},
+	{value: 0x0034, lo: 0xbb, hi: 0xbf},
+	// Block 0xee, offset 0x4d7
+	{value: 0x0034, lo: 0x80, hi: 0x82},
+	{value: 0x0024, lo: 0x85, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8b},
+	{value: 0x0024, lo: 0xaa, hi: 0xad},
+	// Block 0xef, offset 0x4db
+	{value: 0x0024, lo: 0x82, hi: 0x84},
+	// Block 0xf0, offset 0x4dc
+	{value: 0x0013, lo: 0x80, hi: 0x99},
+	{value: 0x0012, lo: 0x9a, hi: 0xb3},
+	{value: 0x0013, lo: 0xb4, hi: 0xbf},
+	// Block 0xf1, offset 0x4df
+	{value: 0x0013, lo: 0x80, hi: 0x8d},
+	{value: 0x0012, lo: 0x8e, hi: 0x94},
+	{value: 0x0012, lo: 0x96, hi: 0xa7},
+	{value: 0x0013, lo: 0xa8, hi: 0xbf},
+	// Block 0xf2, offset 0x4e3
+	{value: 0x0013, lo: 0x80, hi: 0x81},
+	{value: 0x0012, lo: 0x82, hi: 0x9b},
+	{value: 0x0013, lo: 0x9c, hi: 0x9c},
+	{value: 0x0013, lo: 0x9e, hi: 0x9f},
+	{value: 0x0013, lo: 0xa2, hi: 0xa2},
+	{value: 0x0013, lo: 0xa5, hi: 0xa6},
+	{value: 0x0013, lo: 0xa9, hi: 0xac},
+	{value: 0x0013, lo: 0xae, hi: 0xb5},
+	{value: 0x0012, lo: 0xb6, hi: 0xb9},
+	{value: 0x0012, lo: 0xbb, hi: 0xbb},
+	{value: 0x0012, lo: 0xbd, hi: 0xbf},
+	// Block 0xf3, offset 0x4ee
+	{value: 0x0012, lo: 0x80, hi: 0x83},
+	{value: 0x0012, lo: 0x85, hi: 0x8f},
+	{value: 0x0013, lo: 0x90, hi: 0xa9},
+	{value: 0x0012, lo: 0xaa, hi: 0xbf},
+	// Block 0xf4, offset 0x4f2
+	{value: 0x0012, lo: 0x80, hi: 0x83},
+	{value: 0x0013, lo: 0x84, hi: 0x85},
+	{value: 0x0013, lo: 0x87, hi: 0x8a},
+	{value: 0x0013, lo: 0x8d, hi: 0x94},
+	{value: 0x0013, lo: 0x96, hi: 0x9c},
+	{value: 0x0012, lo: 0x9e, hi: 0xb7},
+	{value: 0x0013, lo: 0xb8, hi: 0xb9},
+	{value: 0x0013, lo: 0xbb, hi: 0xbe},
+	// Block 0xf5, offset 0x4fa
+	{value: 0x0013, lo: 0x80, hi: 0x84},
+	{value: 0x0013, lo: 0x86, hi: 0x86},
+	{value: 0x0013, lo: 0x8a, hi: 0x90},
+	{value: 0x0012, lo: 0x92, hi: 0xab},
+	{value: 0x0013, lo: 0xac, hi: 0xbf},
+	// Block 0xf6, offset 0x4ff
+	{value: 0x0013, lo: 0x80, hi: 0x85},
+	{value: 0x0012, lo: 0x86, hi: 0x9f},
+	{value: 0x0013, lo: 0xa0, hi: 0xb9},
+	{value: 0x0012, lo: 0xba, hi: 0xbf},
+	// Block 0xf7, offset 0x503
+	{value: 0x0012, lo: 0x80, hi: 0x93},
+	{value: 0x0013, lo: 0x94, hi: 0xad},
+	{value: 0x0012, lo: 0xae, hi: 0xbf},
+	// Block 0xf8, offset 0x506
+	{value: 0x0012, lo: 0x80, hi: 0x87},
+	{value: 0x0013, lo: 0x88, hi: 0xa1},
+	{value: 0x0012, lo: 0xa2, hi: 0xbb},
+	{value: 0x0013, lo: 0xbc, hi: 0xbf},
+	// Block 0xf9, offset 0x50a
+	{value: 0x0013, lo: 0x80, hi: 0x95},
+	{value: 0x0012, lo: 0x96, hi: 0xaf},
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0xfa, offset 0x50d
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	{value: 0x0012, lo: 0x8a, hi: 0xa5},
+	{value: 0x0013, lo: 0xa8, hi: 0xbf},
+	// Block 0xfb, offset 0x510
+	{value: 0x0013, lo: 0x80, hi: 0x80},
+	{value: 0x0012, lo: 0x82, hi: 0x9a},
+	{value: 0x0012, lo: 0x9c, hi: 0xa1},
+	{value: 0x0013, lo: 0xa2, hi: 0xba},
+	{value: 0x0012, lo: 0xbc, hi: 0xbf},
+	// Block 0xfc, offset 0x515
+	{value: 0x0012, lo: 0x80, hi: 0x94},
+	{value: 0x0012, lo: 0x96, hi: 0x9b},
+	{value: 0x0013, lo: 0x9c, hi: 0xb4},
+	{value: 0x0012, lo: 0xb6, hi: 0xbf},
+	// Block 0xfd, offset 0x519
+	{value: 0x0012, lo: 0x80, hi: 0x8e},
+	{value: 0x0012, lo: 0x90, hi: 0x95},
+	{value: 0x0013, lo: 0x96, hi: 0xae},
+	{value: 0x0012, lo: 0xb0, hi: 0xbf},
+	// Block 0xfe, offset 0x51d
+	{value: 0x0012, lo: 0x80, hi: 0x88},
+	{value: 0x0012, lo: 0x8a, hi: 0x8f},
+	{value: 0x0013, lo: 0x90, hi: 0xa8},
+	{value: 0x0012, lo: 0xaa, hi: 0xbf},
+	// Block 0xff, offset 0x521
+	{value: 0x0012, lo: 0x80, hi: 0x82},
+	{value: 0x0012, lo: 0x84, hi: 0x89},
+	{value: 0x0017, lo: 0x8a, hi: 0x8b},
+	{value: 0x0010, lo: 0x8e, hi: 0xbf},
+	// Block 0x100, offset 0x525
+	{value: 0x0014, lo: 0x80, hi: 0xb6},
+	{value: 0x0014, lo: 0xbb, hi: 0xbf},
+	// Block 0x101, offset 0x527
+	{value: 0x0014, lo: 0x80, hi: 0xac},
+	{value: 0x0014, lo: 0xb5, hi: 0xb5},
+	// Block 0x102, offset 0x529
+	{value: 0x0014, lo: 0x84, hi: 0x84},
+	{value: 0x0014, lo: 0x9b, hi: 0x9f},
+	{value: 0x0014, lo: 0xa1, hi: 0xaf},
+	// Block 0x103, offset 0x52c
+	{value: 0x0024, lo: 0x80, hi: 0x86},
+	{value: 0x0024, lo: 0x88, hi: 0x98},
+	{value: 0x0024, lo: 0x9b, hi: 0xa1},
+	{value: 0x0024, lo: 0xa3, hi: 0xa4},
+	{value: 0x0024, lo: 0xa6, hi: 0xaa},
+	// Block 0x104, offset 0x531
+	{value: 0x0010, lo: 0x80, hi: 0x84},
+	{value: 0x0034, lo: 0x90, hi: 0x96},
+	// Block 0x105, offset 0x533
+	{value: 0xb552, lo: 0x80, hi: 0x81},
+	{value: 0xb852, lo: 0x82, hi: 0x83},
+	{value: 0x0024, lo: 0x84, hi: 0x89},
+	{value: 0x0034, lo: 0x8a, hi: 0x8a},
+	{value: 0x0010, lo: 0x90, hi: 0x99},
+	// Block 0x106, offset 0x538
+	{value: 0x0010, lo: 0x80, hi: 0x83},
+	{value: 0x0010, lo: 0x85, hi: 0x9f},
+	{value: 0x0010, lo: 0xa1, hi: 0xa2},
+	{value: 0x0010, lo: 0xa4, hi: 0xa4},
+	{value: 0x0010, lo: 0xa7, hi: 0xa7},
+	{value: 0x0010, lo: 0xa9, hi: 0xb2},
+	{value: 0x0010, lo: 0xb4, hi: 0xb7},
+	{value: 0x0010, lo: 0xb9, hi: 0xb9},
+	{value: 0x0010, lo: 0xbb, hi: 0xbb},
+	// Block 0x107, offset 0x541
+	{value: 0x0010, lo: 0x80, hi: 0x89},
+	{value: 0x0010, lo: 0x8b, hi: 0x9b},
+	{value: 0x0010, lo: 0xa1, hi: 0xa3},
+	{value: 0x0010, lo: 0xa5, hi: 0xa9},
+	{value: 0x0010, lo: 0xab, hi: 0xbb},
+	// Block 0x108, offset 0x546
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0x109, offset 0x547
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	{value: 0x0013, lo: 0x90, hi: 0xa9},
+	{value: 0x0013, lo: 0xb0, hi: 0xbf},
+	// Block 0x10a, offset 0x54a
+	{value: 0x0013, lo: 0x80, hi: 0x89},
+	// Block 0x10b, offset 0x54b
+	{value: 0x0004, lo: 0xbb, hi: 0xbf},
+	// Block 0x10c, offset 0x54c
+	{value: 0x0014, lo: 0x81, hi: 0x81},
+	{value: 0x0014, lo: 0xa0, hi: 0xbf},
+	// Block 0x10d, offset 0x54e
+	{value: 0x0014, lo: 0x80, hi: 0xbf},
+	// Block 0x10e, offset 0x54f
+	{value: 0x0014, lo: 0x80, hi: 0xaf},
+}
+
+// Total table size 14027 bytes (13KiB); checksum: F17D40E8
diff --git a/vendor/golang.org/x/text/cases/trieval.go b/vendor/golang.org/x/text/cases/trieval.go
new file mode 100644
index 00000000..4e4d13fe
--- /dev/null
+++ b/vendor/golang.org/x/text/cases/trieval.go
@@ -0,0 +1,217 @@
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
+
+package cases
+
+// This file contains definitions for interpreting the trie value of the case
+// trie generated by "go run gen*.go". It is shared by both the generator
+// program and the resultant package. Sharing is achieved by the generator
+// copying gen_trieval.go to trieval.go and changing what's above this comment.
+
+// info holds case information for a single rune. It is the value returned
+// by a trie lookup. Most mapping information can be stored in a single 16-bit
+// value. If not, for example when a rune is mapped to multiple runes, the value
+// stores some basic case data and an index into an array with additional data.
+//
+// The per-rune values have the following format:
+//
+//	if (exception) {
+//	  15..4  unsigned exception index
+//	} else {
+//	  15..8  XOR pattern or index to XOR pattern for case mapping
+//	         Only 13..8 are used for XOR patterns.
+//	      7  inverseFold (fold to upper, not to lower)
+//	      6  index: interpret the XOR pattern as an index
+//	         or isMid if case mode is cIgnorableUncased.
+//	   5..4  CCC: zero (normal or break), above or other
+//	}
+//	   3  exception: interpret this value as an exception index
+//	      (TODO: is this bit necessary? Probably implied from case mode.)
+//	2..0  case mode
+//
+// For the non-exceptional cases, a rune must be either uncased, lowercase or
+// uppercase. If the rune is cased, the XOR pattern maps either a lowercase
+// rune to uppercase or an uppercase rune to lowercase (applied to the 10
+// least-significant bits of the rune).
+//
+// See the definitions below for a more detailed description of the various
+// bits.
+type info uint16
+
+const (
+	casedMask      = 0x0003
+	fullCasedMask  = 0x0007
+	ignorableMask  = 0x0006
+	ignorableValue = 0x0004
+
+	inverseFoldBit = 1 << 7
+	isMidBit       = 1 << 6
+
+	exceptionBit     = 1 << 3
+	exceptionShift   = 4
+	numExceptionBits = 12
+
+	xorIndexBit = 1 << 6
+	xorShift    = 8
+
+	// There is no mapping if all xor bits and the exception bit are zero.
+	hasMappingMask = 0xff80 | exceptionBit
+)
+
+// The case mode bits encodes the case type of a rune. This includes uncased,
+// title, upper and lower case and case ignorable. (For a definition of these
+// terms see Chapter 3 of The Unicode Standard Core Specification.) In some rare
+// cases, a rune can be both cased and case-ignorable. This is encoded by
+// cIgnorableCased. A rune of this type is always lower case. Some runes are
+// cased while not having a mapping.
+//
+// A common pattern for scripts in the Unicode standard is for upper and lower
+// case runes to alternate for increasing rune values (e.g. the accented Latin
+// ranges starting from U+0100 and U+1E00 among others and some Cyrillic
+// characters). We use this property by defining a cXORCase mode, where the case
+// mode (always upper or lower case) is derived from the rune value. As the XOR
+// pattern for case mappings is often identical for successive runes, using
+// cXORCase can result in large series of identical trie values. This, in turn,
+// allows us to better compress the trie blocks.
+const (
+	cUncased          info = iota // 000
+	cTitle                        // 001
+	cLower                        // 010
+	cUpper                        // 011
+	cIgnorableUncased             // 100
+	cIgnorableCased               // 101 // lower case if mappings exist
+	cXORCase                      // 11x // case is cLower | ((rune&1) ^ x)
+
+	maxCaseMode = cUpper
+)
+
+func (c info) isCased() bool {
+	return c&casedMask != 0
+}
+
+func (c info) isCaseIgnorable() bool {
+	return c&ignorableMask == ignorableValue
+}
+
+func (c info) isNotCasedAndNotCaseIgnorable() bool {
+	return c&fullCasedMask == 0
+}
+
+func (c info) isCaseIgnorableAndNotCased() bool {
+	return c&fullCasedMask == cIgnorableUncased
+}
+
+func (c info) isMid() bool {
+	return c&(fullCasedMask|isMidBit) == isMidBit|cIgnorableUncased
+}
+
+// The case mapping implementation will need to know about various Canonical
+// Combining Class (CCC) values. We encode two of these in the trie value:
+// cccZero (0) and cccAbove (230). If the value is cccOther, it means that
+// CCC(r) > 0, but not 230. A value of cccBreak means that CCC(r) == 0 and that
+// the rune also has the break category Break (see below).
+const (
+	cccBreak info = iota << 4
+	cccZero
+	cccAbove
+	cccOther
+
+	cccMask = cccBreak | cccZero | cccAbove | cccOther
+)
+
+const (
+	starter       = 0
+	above         = 230
+	iotaSubscript = 240
+)
+
+// The exceptions slice holds data that does not fit in a normal info entry.
+// The entry is pointed to by the exception index in an entry. It has the
+// following format:
+//
+// Header:
+//
+//	byte 0:
+//	 7..6  unused
+//	 5..4  CCC type (same bits as entry)
+//	    3  unused
+//	 2..0  length of fold
+//
+//	byte 1:
+//	  7..6  unused
+//	  5..3  length of 1st mapping of case type
+//	  2..0  length of 2nd mapping of case type
+//
+//	  case     1st    2nd
+//	  lower -> upper, title
+//	  upper -> lower, title
+//	  title -> lower, upper
+//
+// Lengths with the value 0x7 indicate no value and implies no change.
+// A length of 0 indicates a mapping to zero-length string.
+//
+// Body bytes:
+//
+//	case folding bytes
+//	lowercase mapping bytes
+//	uppercase mapping bytes
+//	titlecase mapping bytes
+//	closure mapping bytes (for NFKC_Casefold). (TODO)
+//
+// Fallbacks:
+//
+//	missing fold  -> lower
+//	missing title -> upper
+//	all missing   -> original rune
+//
+// exceptions starts with a dummy byte to enforce that there is no zero index
+// value.
+const (
+	lengthMask = 0x07
+	lengthBits = 3
+	noChange   = 0
+)
+
+// References to generated trie.
+
+var trie = newCaseTrie(0)
+
+var sparse = sparseBlocks{
+	values:  sparseValues[:],
+	offsets: sparseOffsets[:],
+}
+
+// Sparse block lookup code.
+
+// valueRange is an entry in a sparse block.
+type valueRange struct {
+	value  uint16
+	lo, hi byte
+}
+
+type sparseBlocks struct {
+	values  []valueRange
+	offsets []uint16
+}
+
+// lookup returns the value from values block n for byte b using binary search.
+func (s *sparseBlocks) lookup(n uint32, b byte) uint16 {
+	lo := s.offsets[n]
+	hi := s.offsets[n+1]
+	for lo < hi {
+		m := lo + (hi-lo)/2
+		r := s.values[m]
+		if r.lo <= b && b <= r.hi {
+			return r.value
+		}
+		if b < r.lo {
+			hi = m
+		} else {
+			lo = m + 1
+		}
+	}
+	return 0
+}
+
+// lastRuneForTesting is the last rune used for testing. Everything after this
+// is boring.
+const lastRuneForTesting = rune(0x1FFFF)
diff --git a/vendor/golang.org/x/text/internal/internal.go b/vendor/golang.org/x/text/internal/internal.go
new file mode 100644
index 00000000..3cddbbdd
--- /dev/null
+++ b/vendor/golang.org/x/text/internal/internal.go
@@ -0,0 +1,49 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package internal contains non-exported functionality that are used by
+// packages in the text repository.
+package internal // import "golang.org/x/text/internal"
+
+import (
+	"sort"
+
+	"golang.org/x/text/language"
+)
+
+// SortTags sorts tags in place.
+func SortTags(tags []language.Tag) {
+	sort.Sort(sorter(tags))
+}
+
+type sorter []language.Tag
+
+func (s sorter) Len() int {
+	return len(s)
+}
+
+func (s sorter) Swap(i, j int) {
+	s[i], s[j] = s[j], s[i]
+}
+
+func (s sorter) Less(i, j int) bool {
+	return s[i].String() < s[j].String()
+}
+
+// UniqueTags sorts and filters duplicate tags in place and returns a slice with
+// only unique tags.
+func UniqueTags(tags []language.Tag) []language.Tag {
+	if len(tags) <= 1 {
+		return tags
+	}
+	SortTags(tags)
+	k := 0
+	for i := 1; i < len(tags); i++ {
+		if tags[k].String() < tags[i].String() {
+			k++
+			tags[k] = tags[i]
+		}
+	}
+	return tags[:k+1]
+}
diff --git a/vendor/golang.org/x/text/internal/match.go b/vendor/golang.org/x/text/internal/match.go
new file mode 100644
index 00000000..1cc004a6
--- /dev/null
+++ b/vendor/golang.org/x/text/internal/match.go
@@ -0,0 +1,67 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package internal
+
+// This file contains matchers that implement CLDR inheritance.
+//
+//     See https://unicode.org/reports/tr35/#Locale_Inheritance.
+//
+// Some of the inheritance described in this document is already handled by
+// the cldr package.
+
+import (
+	"golang.org/x/text/language"
+)
+
+// TODO: consider if (some of the) matching algorithm needs to be public after
+// getting some feel about what is generic and what is specific.
+
+// NewInheritanceMatcher returns a matcher that matches based on the inheritance
+// chain.
+//
+// The matcher uses canonicalization and the parent relationship to find a
+// match. The resulting match will always be either Und or a language with the
+// same language and script as the requested language. It will not match
+// languages for which there is understood to be mutual or one-directional
+// intelligibility.
+//
+// A Match will indicate an Exact match if the language matches after
+// canonicalization and High if the matched tag is a parent.
+func NewInheritanceMatcher(t []language.Tag) *InheritanceMatcher {
+	tags := &InheritanceMatcher{make(map[language.Tag]int)}
+	for i, tag := range t {
+		ct, err := language.All.Canonicalize(tag)
+		if err != nil {
+			ct = tag
+		}
+		tags.index[ct] = i
+	}
+	return tags
+}
+
+type InheritanceMatcher struct {
+	index map[language.Tag]int
+}
+
+func (m InheritanceMatcher) Match(want ...language.Tag) (language.Tag, int, language.Confidence) {
+	for _, t := range want {
+		ct, err := language.All.Canonicalize(t)
+		if err != nil {
+			ct = t
+		}
+		conf := language.Exact
+		for {
+			if index, ok := m.index[ct]; ok {
+				return ct, index, conf
+			}
+			if ct == language.Und {
+				break
+			}
+			ct = ct.Parent()
+			conf = language.High
+		}
+	}
+	return language.Und, 0, language.No
+}
diff --git a/vendor/k8s.io/apiserver/pkg/authentication/user/doc.go b/vendor/k8s.io/apiserver/pkg/authentication/user/doc.go
new file mode 100644
index 00000000..3d87fd72
--- /dev/null
+++ b/vendor/k8s.io/apiserver/pkg/authentication/user/doc.go
@@ -0,0 +1,19 @@
+/*
+Copyright 2014 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Package user contains utilities for dealing with simple user exchange in the auth
+// packages. The user.Info interface defines an interface for exchanging that info.
+package user // import "k8s.io/apiserver/pkg/authentication/user"
diff --git a/vendor/k8s.io/apiserver/pkg/authentication/user/user.go b/vendor/k8s.io/apiserver/pkg/authentication/user/user.go
new file mode 100644
index 00000000..4d6ec098
--- /dev/null
+++ b/vendor/k8s.io/apiserver/pkg/authentication/user/user.go
@@ -0,0 +1,84 @@
+/*
+Copyright 2014 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package user
+
+// Info describes a user that has been authenticated to the system.
+type Info interface {
+	// GetName returns the name that uniquely identifies this user among all
+	// other active users.
+	GetName() string
+	// GetUID returns a unique value for a particular user that will change
+	// if the user is removed from the system and another user is added with
+	// the same name.
+	GetUID() string
+	// GetGroups returns the names of the groups the user is a member of
+	GetGroups() []string
+
+	// GetExtra can contain any additional information that the authenticator
+	// thought was interesting.  One example would be scopes on a token.
+	// Keys in this map should be namespaced to the authenticator or
+	// authenticator/authorizer pair making use of them.
+	// For instance: "example.org/foo" instead of "foo"
+	// This is a map[string][]string because it needs to be serializeable into
+	// a SubjectAccessReviewSpec.authorization.k8s.io for proper authorization
+	// delegation flows
+	// In order to faithfully round-trip through an impersonation flow, these keys
+	// MUST be lowercase.
+	GetExtra() map[string][]string
+}
+
+// DefaultInfo provides a simple user information exchange object
+// for components that implement the UserInfo interface.
+type DefaultInfo struct {
+	Name   string
+	UID    string
+	Groups []string
+	Extra  map[string][]string
+}
+
+func (i *DefaultInfo) GetName() string {
+	return i.Name
+}
+
+func (i *DefaultInfo) GetUID() string {
+	return i.UID
+}
+
+func (i *DefaultInfo) GetGroups() []string {
+	return i.Groups
+}
+
+func (i *DefaultInfo) GetExtra() map[string][]string {
+	return i.Extra
+}
+
+// well-known user and group names
+const (
+	SystemPrivilegedGroup = "system:masters"
+	NodesGroup            = "system:nodes"
+	MonitoringGroup       = "system:monitoring"
+	AllUnauthenticated    = "system:unauthenticated"
+	AllAuthenticated      = "system:authenticated"
+
+	Anonymous     = "system:anonymous"
+	APIServerUser = "system:apiserver"
+
+	// core kubernetes process identities
+	KubeProxy             = "system:kube-proxy"
+	KubeControllerManager = "system:kube-controller-manager"
+	KubeScheduler         = "system:kube-scheduler"
+)
diff --git a/vendor/kmodules.xyz/client-go/Makefile b/vendor/kmodules.xyz/client-go/Makefile
index 4ff50bd7..9c7cb06c 100644
--- a/vendor/kmodules.xyz/client-go/Makefile
+++ b/vendor/kmodules.xyz/client-go/Makefile
@@ -56,7 +56,7 @@ OS   := $(if $(GOOS),$(GOOS),$(shell go env GOOS))
 ARCH := $(if $(GOARCH),$(GOARCH),$(shell go env GOARCH))
 
 BASEIMAGE_PROD   ?= gcr.io/distroless/static-debian12
-BASEIMAGE_DBG    ?= debian:bookworm
+BASEIMAGE_DBG    ?= debian:12
 
 GO_VERSION       ?= 1.23
 BUILD_IMAGE      ?= ghcr.io/appscode/golang-dev:$(GO_VERSION)
diff --git a/vendor/kmodules.xyz/client-go/api/v1/certificates.go b/vendor/kmodules.xyz/client-go/api/v1/certificates.go
index c72d55df..a6ca4f77 100644
--- a/vendor/kmodules.xyz/client-go/api/v1/certificates.go
+++ b/vendor/kmodules.xyz/client-go/api/v1/certificates.go
@@ -59,6 +59,10 @@ type CertificateSpec struct {
 	Duration *metav1.Duration `json:"duration,omitempty" protobuf:"bytes,5,opt,name=duration"`
 
 	// Certificate renew before expiration duration
+	//
+	// Deprecated use `ReconfigureTLS` type OpsRequest instead.
+	//
+	// +deprecated
 	// +optional
 	RenewBefore *metav1.Duration `json:"renewBefore,omitempty" protobuf:"bytes,6,opt,name=renewBefore"`
 
diff --git a/vendor/kmodules.xyz/client-go/api/v1/cluster.go b/vendor/kmodules.xyz/client-go/api/v1/cluster.go
index 1de796fa..c8a0a104 100644
--- a/vendor/kmodules.xyz/client-go/api/v1/cluster.go
+++ b/vendor/kmodules.xyz/client-go/api/v1/cluster.go
@@ -24,47 +24,72 @@ import (
 	"strings"
 )
 
-// +kubebuilder:validation:Enum=Aws;Azure;DigitalOcean;GoogleCloud;Linode;Packet;Scaleway;Vultr;BareMetal;KIND;Generic;Private
+// +kubebuilder:validation:Enum=AKS;DigitalOcean;EKS;Exoscale;Generic;GKE;Linode;Packet;Rancher;Scaleway;Vultr
 type HostingProvider string
 
 const (
-	HostingProviderAWS          HostingProvider = "Aws"
-	HostingProviderAzure        HostingProvider = "Azure"
+	HostingProviderAKS          HostingProvider = "AKS"
 	HostingProviderDigitalOcean HostingProvider = "DigitalOcean"
-	HostingProviderGoogleCloud  HostingProvider = "GoogleCloud"
+	HostingProviderEKS          HostingProvider = "EKS"
 	HostingProviderExoscale     HostingProvider = "Exoscale"
+	HostingProviderGeneric      HostingProvider = "Generic"
+	HostingProviderGKE          HostingProvider = "GKE"
 	HostingProviderLinode       HostingProvider = "Linode"
+	HostingProviderAkamai       HostingProvider = "Akamai"
 	HostingProviderPacket       HostingProvider = "Packet"
+	HostingProviderRancher      HostingProvider = "Rancher"
 	HostingProviderScaleway     HostingProvider = "Scaleway"
 	HostingProviderVultr        HostingProvider = "Vultr"
-	HostingProviderBareMetal    HostingProvider = "BareMetal"
-	HostingProviderKIND         HostingProvider = "KIND"
-	HostingProviderGeneric      HostingProvider = "Generic"
-	HostingProviderPrivate      HostingProvider = "Private"
 )
 
+func (h HostingProvider) ConvertToPreferredProvider() HostingProvider {
+	switch h {
+	case HostingProviderLinode:
+		return HostingProviderAkamai
+	}
+	return h
+}
+
 const (
 	AceInfoConfigMapName = "ace-info"
 
 	ClusterNameKey         string = "cluster.appscode.com/name"
 	ClusterDisplayNameKey  string = "cluster.appscode.com/display-name"
 	ClusterProviderNameKey string = "cluster.appscode.com/provider"
+	ClusterProfileLabel    string = "cluster.appscode.com/profile"
+
+	AceOrgIDKey     string = "ace.appscode.com/org-id"
+	ClientOrgKey    string = "ace.appscode.com/client-org"
+	ClientKeyPrefix string = "client.ace.appscode.com/"
+
+	ClusterClaimKeyID       string = "id.k8s.io"
+	ClusterClaimKeyInfo     string = "cluster.ace.info"
+	ClusterClaimKeyFeatures string = "features.ace.info"
 )
 
 type ClusterMetadata struct {
-	UID         string          `json:"uid" protobuf:"bytes,1,opt,name=uid"`
-	Name        string          `json:"name,omitempty" protobuf:"bytes,2,opt,name=name"`
-	DisplayName string          `json:"displayName,omitempty" protobuf:"bytes,3,opt,name=displayName"`
-	Provider    HostingProvider `json:"provider,omitempty" protobuf:"bytes,4,opt,name=provider,casttype=HostingProvider"`
-	OwnerID     string          `json:"ownerID,omitempty"`
-	OwnerType   string          `json:"ownerType,omitempty"`
-	APIEndpoint string          `json:"apiEndpoint,omitempty"`
-	CABundle    string          `json:"caBundle,omitempty"`
+	UID          string          `json:"uid" protobuf:"bytes,1,opt,name=uid"`
+	Name         string          `json:"name,omitempty" protobuf:"bytes,2,opt,name=name"`
+	DisplayName  string          `json:"displayName,omitempty" protobuf:"bytes,3,opt,name=displayName"`
+	Provider     HostingProvider `json:"provider,omitempty" protobuf:"bytes,4,opt,name=provider,casttype=HostingProvider"`
+	OwnerID      string          `json:"ownerID,omitempty" protobuf:"bytes,5,opt,name=ownerID"`
+	OwnerType    string          `json:"ownerType,omitempty" protobuf:"bytes,6,opt,name=ownerType"`
+	APIEndpoint  string          `json:"apiEndpoint,omitempty" protobuf:"bytes,7,opt,name=apiEndpoint"`
+	CABundle     string          `json:"caBundle,omitempty" protobuf:"bytes,8,opt,name=caBundle"`
+	ManagerID    string          `json:"managerID,omitempty" protobuf:"bytes,9,opt,name=managerID"`
+	HubClusterID string          `json:"hubClusterID,omitempty" protobuf:"bytes,10,opt,name=hubClusterID"`
+}
+
+func (md ClusterMetadata) Manager() string {
+	if md.ManagerID != "" && md.ManagerID != "0" {
+		return md.ManagerID
+	}
+	return md.OwnerID
 }
 
 func (md ClusterMetadata) State() string {
 	hasher := hmac.New(sha256.New, []byte(md.UID))
-	state := fmt.Sprintf("%s,%s", md.APIEndpoint, md.OwnerID)
+	state := fmt.Sprintf("%s,%s", md.APIEndpoint, md.Manager())
 	hasher.Write([]byte(state))
 	return base64.URLEncoding.EncodeToString(hasher.Sum(nil))
 }
@@ -153,7 +178,36 @@ func (cm ClusterManager) String() string {
 }
 
 type CAPIClusterInfo struct {
-	Provider    string `json:"provider,omitempty"`
-	Namespace   string `json:"namespace,omitempty"`
-	ClusterName string `json:"clusterName,omitempty"`
+	Provider    CAPIProvider `json:"provider" protobuf:"bytes,1,opt,name=provider,casttype=CAPIProvider"`
+	Namespace   string       `json:"namespace" protobuf:"bytes,2,opt,name=namespace"`
+	ClusterName string       `json:"clusterName" protobuf:"bytes,3,opt,name=clusterName"`
+}
+
+// ClusterInfo used in ace-installer
+type ClusterInfo struct {
+	UID             string   `json:"uid" protobuf:"bytes,1,opt,name=uid"`
+	Name            string   `json:"name" protobuf:"bytes,2,opt,name=name"`
+	ClusterManagers []string `json:"clusterManagers" protobuf:"bytes,3,rep,name=clusterManagers"`
+	// +optional
+	CAPI *CAPIClusterInfo `json:"capi" protobuf:"bytes,4,opt,name=capi"`
+}
+
+// +kubebuilder:validation:Enum=capa;capg;capz
+type CAPIProvider string
+
+const (
+	CAPIProviderCAPA CAPIProvider = "capa"
+	CAPIProviderCAPG CAPIProvider = "capg"
+	CAPIProviderCAPZ CAPIProvider = "capz"
+	CAPIProviderCAPH CAPIProvider = "caph"
+)
+
+type ClusterClaimInfo struct {
+	ClusterMetadata ClusterInfo `json:"clusterMetadata"`
+}
+
+type ClusterClaimFeatures struct {
+	EnabledFeatures           []string `json:"enabledFeatures,omitempty"`
+	ExternallyManagedFeatures []string `json:"externallyManagedFeatures,omitempty"`
+	DisabledFeatures          []string `json:"disabledFeatures,omitempty"`
 }
diff --git a/vendor/kmodules.xyz/client-go/api/v1/generated.pb.go b/vendor/kmodules.xyz/client-go/api/v1/generated.pb.go
index afb78575..f1f0d595 100644
--- a/vendor/kmodules.xyz/client-go/api/v1/generated.pb.go
+++ b/vendor/kmodules.xyz/client-go/api/v1/generated.pb.go
@@ -44,10 +44,38 @@ var _ = math.Inf
 // proto package needs to be updated.
 const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
 
+func (m *CAPIClusterInfo) Reset()      { *m = CAPIClusterInfo{} }
+func (*CAPIClusterInfo) ProtoMessage() {}
+func (*CAPIClusterInfo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{0}
+}
+func (m *CAPIClusterInfo) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *CAPIClusterInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	b = b[:cap(b)]
+	n, err := m.MarshalToSizedBuffer(b)
+	if err != nil {
+		return nil, err
+	}
+	return b[:n], nil
+}
+func (m *CAPIClusterInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CAPIClusterInfo.Merge(m, src)
+}
+func (m *CAPIClusterInfo) XXX_Size() int {
+	return m.Size()
+}
+func (m *CAPIClusterInfo) XXX_DiscardUnknown() {
+	xxx_messageInfo_CAPIClusterInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CAPIClusterInfo proto.InternalMessageInfo
+
 func (m *CertificatePrivateKey) Reset()      { *m = CertificatePrivateKey{} }
 func (*CertificatePrivateKey) ProtoMessage() {}
 func (*CertificatePrivateKey) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af8e7a11c7a1ccd9, []int{0}
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{1}
 }
 func (m *CertificatePrivateKey) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -75,7 +103,7 @@ var xxx_messageInfo_CertificatePrivateKey proto.InternalMessageInfo
 func (m *CertificateSpec) Reset()      { *m = CertificateSpec{} }
 func (*CertificateSpec) ProtoMessage() {}
 func (*CertificateSpec) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af8e7a11c7a1ccd9, []int{1}
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{2}
 }
 func (m *CertificateSpec) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -100,10 +128,38 @@ func (m *CertificateSpec) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_CertificateSpec proto.InternalMessageInfo
 
+func (m *ClusterInfo) Reset()      { *m = ClusterInfo{} }
+func (*ClusterInfo) ProtoMessage() {}
+func (*ClusterInfo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{3}
+}
+func (m *ClusterInfo) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *ClusterInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	b = b[:cap(b)]
+	n, err := m.MarshalToSizedBuffer(b)
+	if err != nil {
+		return nil, err
+	}
+	return b[:n], nil
+}
+func (m *ClusterInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ClusterInfo.Merge(m, src)
+}
+func (m *ClusterInfo) XXX_Size() int {
+	return m.Size()
+}
+func (m *ClusterInfo) XXX_DiscardUnknown() {
+	xxx_messageInfo_ClusterInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ClusterInfo proto.InternalMessageInfo
+
 func (m *ClusterMetadata) Reset()      { *m = ClusterMetadata{} }
 func (*ClusterMetadata) ProtoMessage() {}
 func (*ClusterMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af8e7a11c7a1ccd9, []int{2}
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{4}
 }
 func (m *ClusterMetadata) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -131,7 +187,7 @@ var xxx_messageInfo_ClusterMetadata proto.InternalMessageInfo
 func (m *Condition) Reset()      { *m = Condition{} }
 func (*Condition) ProtoMessage() {}
 func (*Condition) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af8e7a11c7a1ccd9, []int{3}
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{5}
 }
 func (m *Condition) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -159,7 +215,7 @@ var xxx_messageInfo_Condition proto.InternalMessageInfo
 func (m *HealthCheckSpec) Reset()      { *m = HealthCheckSpec{} }
 func (*HealthCheckSpec) ProtoMessage() {}
 func (*HealthCheckSpec) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af8e7a11c7a1ccd9, []int{4}
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{6}
 }
 func (m *HealthCheckSpec) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -187,7 +243,7 @@ var xxx_messageInfo_HealthCheckSpec proto.InternalMessageInfo
 func (m *ImageInfo) Reset()      { *m = ImageInfo{} }
 func (*ImageInfo) ProtoMessage() {}
 func (*ImageInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af8e7a11c7a1ccd9, []int{5}
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{7}
 }
 func (m *ImageInfo) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -215,7 +271,7 @@ var xxx_messageInfo_ImageInfo proto.InternalMessageInfo
 func (m *Lineage) Reset()      { *m = Lineage{} }
 func (*Lineage) ProtoMessage() {}
 func (*Lineage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af8e7a11c7a1ccd9, []int{6}
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{8}
 }
 func (m *Lineage) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -243,7 +299,7 @@ var xxx_messageInfo_Lineage proto.InternalMessageInfo
 func (m *ObjectID) Reset()      { *m = ObjectID{} }
 func (*ObjectID) ProtoMessage() {}
 func (*ObjectID) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af8e7a11c7a1ccd9, []int{7}
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{9}
 }
 func (m *ObjectID) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -271,7 +327,7 @@ var xxx_messageInfo_ObjectID proto.InternalMessageInfo
 func (m *ObjectInfo) Reset()      { *m = ObjectInfo{} }
 func (*ObjectInfo) ProtoMessage() {}
 func (*ObjectInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af8e7a11c7a1ccd9, []int{8}
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{10}
 }
 func (m *ObjectInfo) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -299,7 +355,7 @@ var xxx_messageInfo_ObjectInfo proto.InternalMessageInfo
 func (m *ObjectReference) Reset()      { *m = ObjectReference{} }
 func (*ObjectReference) ProtoMessage() {}
 func (*ObjectReference) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af8e7a11c7a1ccd9, []int{9}
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{11}
 }
 func (m *ObjectReference) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -327,7 +383,7 @@ var xxx_messageInfo_ObjectReference proto.InternalMessageInfo
 func (m *PullCredentials) Reset()      { *m = PullCredentials{} }
 func (*PullCredentials) ProtoMessage() {}
 func (*PullCredentials) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af8e7a11c7a1ccd9, []int{10}
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{12}
 }
 func (m *PullCredentials) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -355,7 +411,7 @@ var xxx_messageInfo_PullCredentials proto.InternalMessageInfo
 func (m *ReadonlyHealthCheckSpec) Reset()      { *m = ReadonlyHealthCheckSpec{} }
 func (*ReadonlyHealthCheckSpec) ProtoMessage() {}
 func (*ReadonlyHealthCheckSpec) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af8e7a11c7a1ccd9, []int{11}
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{13}
 }
 func (m *ReadonlyHealthCheckSpec) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -383,7 +439,7 @@ var xxx_messageInfo_ReadonlyHealthCheckSpec proto.InternalMessageInfo
 func (m *ResourceID) Reset()      { *m = ResourceID{} }
 func (*ResourceID) ProtoMessage() {}
 func (*ResourceID) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af8e7a11c7a1ccd9, []int{12}
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{14}
 }
 func (m *ResourceID) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -411,7 +467,7 @@ var xxx_messageInfo_ResourceID proto.InternalMessageInfo
 func (m *TLSConfig) Reset()      { *m = TLSConfig{} }
 func (*TLSConfig) ProtoMessage() {}
 func (*TLSConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af8e7a11c7a1ccd9, []int{13}
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{15}
 }
 func (m *TLSConfig) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -439,7 +495,7 @@ var xxx_messageInfo_TLSConfig proto.InternalMessageInfo
 func (m *TimeOfDay) Reset()      { *m = TimeOfDay{} }
 func (*TimeOfDay) ProtoMessage() {}
 func (*TimeOfDay) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af8e7a11c7a1ccd9, []int{14}
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{16}
 }
 func (m *TimeOfDay) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_TimeOfDay.Unmarshal(m, b)
@@ -462,7 +518,7 @@ var xxx_messageInfo_TimeOfDay proto.InternalMessageInfo
 func (m *TypedObjectReference) Reset()      { *m = TypedObjectReference{} }
 func (*TypedObjectReference) ProtoMessage() {}
 func (*TypedObjectReference) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af8e7a11c7a1ccd9, []int{15}
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{17}
 }
 func (m *TypedObjectReference) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -490,7 +546,7 @@ var xxx_messageInfo_TypedObjectReference proto.InternalMessageInfo
 func (m *X509Subject) Reset()      { *m = X509Subject{} }
 func (*X509Subject) ProtoMessage() {}
 func (*X509Subject) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af8e7a11c7a1ccd9, []int{16}
+	return fileDescriptor_af8e7a11c7a1ccd9, []int{18}
 }
 func (m *X509Subject) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -516,8 +572,10 @@ func (m *X509Subject) XXX_DiscardUnknown() {
 var xxx_messageInfo_X509Subject proto.InternalMessageInfo
 
 func init() {
+	proto.RegisterType((*CAPIClusterInfo)(nil), "kmodules.xyz.client_go.api.v1.CAPIClusterInfo")
 	proto.RegisterType((*CertificatePrivateKey)(nil), "kmodules.xyz.client_go.api.v1.CertificatePrivateKey")
 	proto.RegisterType((*CertificateSpec)(nil), "kmodules.xyz.client_go.api.v1.CertificateSpec")
+	proto.RegisterType((*ClusterInfo)(nil), "kmodules.xyz.client_go.api.v1.ClusterInfo")
 	proto.RegisterType((*ClusterMetadata)(nil), "kmodules.xyz.client_go.api.v1.ClusterMetadata")
 	proto.RegisterType((*Condition)(nil), "kmodules.xyz.client_go.api.v1.Condition")
 	proto.RegisterType((*HealthCheckSpec)(nil), "kmodules.xyz.client_go.api.v1.HealthCheckSpec")
@@ -540,115 +598,166 @@ func init() {
 }
 
 var fileDescriptor_af8e7a11c7a1ccd9 = []byte{
-	// 1728 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xcf, 0x6f, 0x23, 0x49,
-	0x15, 0x76, 0xc7, 0x4e, 0xe2, 0x2e, 0x27, 0xe3, 0x49, 0xcd, 0xa0, 0x31, 0x23, 0xc6, 0x1d, 0xbc,
-	0x62, 0x94, 0x01, 0xa6, 0x4d, 0x46, 0xb3, 0xb0, 0xac, 0x84, 0x20, 0xed, 0xec, 0x66, 0xbd, 0x9b,
-	0x49, 0x42, 0x39, 0xc3, 0xae, 0x16, 0x04, 0xaa, 0x74, 0x3f, 0x3b, 0x45, 0xda, 0xdd, 0xad, 0xaa,
-	0x6e, 0x83, 0xf7, 0xb4, 0x47, 0xb8, 0x2d, 0x37, 0x8e, 0x3b, 0x12, 0x7f, 0x02, 0x17, 0xfe, 0x02,
-	0x46, 0x9c, 0x86, 0x0b, 0xda, 0x03, 0xb2, 0x18, 0x73, 0x45, 0x5c, 0x10, 0x12, 0xca, 0x09, 0x55,
-	0xf5, 0x4f, 0x3b, 0xce, 0x24, 0x8b, 0x90, 0xf6, 0xe6, 0xfe, 0xde, 0xf7, 0xbe, 0xaa, 0xae, 0x7a,
-	0xbf, 0xda, 0xe8, 0xe1, 0xd9, 0xd0, 0x77, 0x22, 0x17, 0x84, 0xf9, 0xcb, 0xf1, 0x47, 0x6d, 0xdb,
-	0x65, 0xe0, 0x85, 0x0f, 0x07, 0x7e, 0x9b, 0x06, 0xac, 0x3d, 0xda, 0x6e, 0x0f, 0xc0, 0x03, 0x4e,
-	0x43, 0x70, 0xcc, 0x80, 0xfb, 0xa1, 0x8f, 0xef, 0x15, 0xe9, 0x66, 0x4c, 0xff, 0xd9, 0xc0, 0x37,
-	0x69, 0xc0, 0xcc, 0xd1, 0xf6, 0xdd, 0x87, 0x03, 0x16, 0x9e, 0x46, 0x27, 0xa6, 0xed, 0x0f, 0xdb,
-	0x03, 0x7f, 0xe0, 0xb7, 0x95, 0xd7, 0x49, 0xd4, 0x57, 0x4f, 0xea, 0x41, 0xfd, 0x8a, 0xd5, 0xee,
-	0xb6, 0xce, 0xde, 0x10, 0x26, 0x8b, 0x17, 0xb3, 0x7d, 0x0e, 0x0b, 0x56, 0xbc, 0xfb, 0x38, 0xe7,
-	0x0c, 0xa9, 0x7d, 0xca, 0x3c, 0xe0, 0xe3, 0x76, 0x70, 0x36, 0x90, 0x80, 0x68, 0x0f, 0x21, 0xa4,
-	0x0b, 0xbc, 0x5a, 0x3f, 0x46, 0x5f, 0xea, 0x00, 0x0f, 0x59, 0x9f, 0xd9, 0x34, 0x84, 0x23, 0xce,
-	0x46, 0x34, 0x84, 0xf7, 0x60, 0x8c, 0x2d, 0x54, 0x05, 0xcf, 0xf6, 0x1d, 0xe6, 0x0d, 0x1a, 0xda,
-	0xa6, 0xb6, 0xa5, 0x5b, 0xf7, 0x9f, 0x4f, 0x8c, 0xd2, 0x74, 0x62, 0x54, 0xdf, 0x4a, 0xf0, 0xf3,
-	0x89, 0x81, 0x73, 0x8f, 0x14, 0x25, 0x99, 0x5f, 0xeb, 0x5f, 0xcb, 0xa8, 0x5e, 0x50, 0xef, 0x05,
-	0x60, 0xe3, 0xd7, 0xd0, 0x32, 0x75, 0x19, 0x15, 0x89, 0xe8, 0x7a, 0x22, 0xba, 0xbc, 0x23, 0x41,
-	0x12, 0xdb, 0xf0, 0x87, 0x48, 0x67, 0x42, 0x44, 0xc0, 0x09, 0xf4, 0x1b, 0x4b, 0x9b, 0xda, 0x56,
-	0xed, 0xd1, 0x43, 0x33, 0x7e, 0x3f, 0x75, 0x82, 0xf2, 0x0c, 0xcc, 0xd1, 0xb6, 0x79, 0x3c, 0x0e,
-	0xc0, 0xd9, 0xf7, 0x6d, 0xea, 0x1e, 0x9e, 0xfc, 0x1c, 0xec, 0x90, 0x40, 0x1f, 0x38, 0x78, 0x36,
-	0x58, 0xeb, 0xd3, 0x89, 0xa1, 0x77, 0x53, 0x0d, 0x92, 0xcb, 0xe1, 0x47, 0x08, 0x09, 0xb0, 0x39,
-	0x84, 0x07, 0x74, 0x08, 0x8d, 0xb2, 0xda, 0x05, 0x4e, 0x76, 0x81, 0x7a, 0x99, 0x85, 0x14, 0x58,
-	0xf8, 0x87, 0x68, 0x55, 0x44, 0x6a, 0x85, 0x46, 0x45, 0xed, 0xe6, 0xeb, 0xe6, 0x2b, 0xef, 0xd7,
-	0xfc, 0xe0, 0xf5, 0x6f, 0x7d, 0xb7, 0x17, 0x7b, 0x58, 0xb5, 0xe9, 0xc4, 0x58, 0x4d, 0x1e, 0x48,
-	0xaa, 0x83, 0x3f, 0x40, 0x55, 0x27, 0xe2, 0x34, 0x64, 0xbe, 0xd7, 0x58, 0x56, 0x9a, 0x66, 0xe1,
-	0x0d, 0xb3, 0x1b, 0x34, 0x83, 0xb3, 0x81, 0x04, 0x84, 0x29, 0x6f, 0x50, 0x4a, 0xef, 0x26, 0x5e,
-	0xd6, 0x9a, 0xbc, 0x8b, 0xf4, 0x89, 0x64, 0x6a, 0x98, 0xa2, 0x1a, 0x07, 0x0f, 0x7e, 0x61, 0x41,
-	0xdf, 0xe7, 0xd0, 0x58, 0xf9, 0x9f, 0xc4, 0xeb, 0xd3, 0x89, 0x51, 0x23, 0xb9, 0x0c, 0x29, 0x6a,
-	0xe2, 0x2d, 0x54, 0x75, 0x3c, 0x21, 0x8f, 0x46, 0x34, 0x56, 0x37, 0xcb, 0x5b, 0x7a, 0xb2, 0x99,
-	0x83, 0x9e, 0xc2, 0x48, 0x66, 0xc5, 0xdb, 0xa8, 0xc6, 0x82, 0x1d, 0xc7, 0xe1, 0x20, 0x04, 0x88,
-	0x46, 0x55, 0x91, 0x95, 0x78, 0xf7, 0x28, 0x83, 0x49, 0x91, 0x83, 0xbf, 0x82, 0x2a, 0x11, 0x67,
-	0xa2, 0xa1, 0x2b, 0x6e, 0x75, 0x3a, 0x31, 0x2a, 0x4f, 0x49, 0x57, 0x10, 0x85, 0xe2, 0x37, 0xd1,
-	0x0d, 0x18, 0x52, 0xe6, 0xe6, 0x9a, 0x48, 0xf1, 0xf0, 0x74, 0x62, 0xdc, 0x78, 0x6b, 0xc6, 0x42,
-	0xe6, 0x98, 0xd8, 0x41, 0x28, 0xc8, 0xe2, 0xb5, 0x51, 0x53, 0x07, 0xf3, 0xf8, 0x8a, 0x9b, 0x5c,
-	0x98, 0x1d, 0xd6, 0x0d, 0x19, 0x2c, 0xf9, 0x33, 0x29, 0xe8, 0xb6, 0xfe, 0xa4, 0xa1, 0x7a, 0xc7,
-	0x8d, 0x44, 0x08, 0xfc, 0x09, 0x84, 0xd4, 0xa1, 0x21, 0xc5, 0xf7, 0x50, 0x39, 0x62, 0x4e, 0x12,
-	0xf3, 0xb5, 0x24, 0xda, 0xca, 0x4f, 0xbb, 0xbb, 0x44, 0xe2, 0x78, 0x13, 0x55, 0x3c, 0x19, 0x8d,
-	0x4b, 0xca, 0xbe, 0x96, 0xd8, 0x2b, 0x2a, 0x0e, 0x95, 0x05, 0xbf, 0x8e, 0x6a, 0x0e, 0x13, 0x81,
-	0x4b, 0xc7, 0x85, 0xb0, 0xbd, 0x95, 0x10, 0x6b, 0xbb, 0xb9, 0x89, 0x14, 0x79, 0xf8, 0xfb, 0xa8,
-	0x1a, 0x70, 0x7f, 0xc4, 0x1c, 0xe0, 0x2a, 0x72, 0x75, 0xeb, 0xb5, 0x34, 0x8b, 0x8f, 0x12, 0xfc,
-	0x7c, 0x62, 0xd4, 0xdf, 0xf1, 0x45, 0xc8, 0xbc, 0x41, 0x0a, 0x91, 0xcc, 0xa9, 0xf5, 0x9f, 0x32,
-	0xd2, 0x3b, 0xbe, 0xe7, 0x30, 0x15, 0x5a, 0xdb, 0xa8, 0x12, 0x8e, 0x03, 0x48, 0xa4, 0xee, 0xa5,
-	0xfb, 0x94, 0x69, 0x78, 0x3e, 0x31, 0xd6, 0x33, 0xa2, 0x04, 0x88, 0xa2, 0xe2, 0x9f, 0xa2, 0x15,
-	0x11, 0xd2, 0x30, 0x12, 0x2a, 0xca, 0x75, 0xeb, 0xed, 0xc4, 0x69, 0xa5, 0xa7, 0xd0, 0xf3, 0x89,
-	0x71, 0xad, 0xc2, 0x65, 0x66, 0xda, 0xb1, 0x1f, 0x49, 0x54, 0xf1, 0xbb, 0x08, 0xfb, 0x27, 0x02,
-	0xf8, 0x08, 0x9c, 0xbd, 0xb8, 0xb6, 0xc9, 0x8c, 0x92, 0xe7, 0x53, 0xb6, 0xee, 0x26, 0x6b, 0xe1,
-	0xc3, 0x0b, 0x0c, 0xb2, 0xc0, 0x0b, 0xef, 0xa0, 0xaa, 0x80, 0x11, 0x70, 0x16, 0x8e, 0x55, 0xda,
-	0xe8, 0xd6, 0xd7, 0xd2, 0xd3, 0xea, 0x25, 0xf8, 0xf9, 0xc4, 0xd8, 0xc8, 0xb7, 0x92, 0x80, 0x24,
-	0x73, 0xc3, 0x23, 0x84, 0x5d, 0x2a, 0xc2, 0x63, 0x4e, 0x3d, 0x11, 0x1f, 0x05, 0x1b, 0x42, 0x63,
-	0x35, 0x2d, 0x1a, 0xd7, 0xc9, 0x41, 0xe9, 0x91, 0x6f, 0x7d, 0xff, 0x82, 0x1a, 0x59, 0xb0, 0x02,
-	0xbe, 0x8f, 0x56, 0x38, 0x50, 0xe1, 0x7b, 0x8d, 0xaa, 0xda, 0xf8, 0x8d, 0xf4, 0x98, 0x89, 0x42,
-	0x49, 0x62, 0xc5, 0x0f, 0xd0, 0xea, 0x10, 0x84, 0xa0, 0x03, 0x68, 0xe8, 0x8a, 0x58, 0x4f, 0x88,
-	0xab, 0x4f, 0x62, 0x98, 0xa4, 0xf6, 0xd6, 0x3f, 0x35, 0x54, 0x7f, 0x07, 0xa8, 0x1b, 0x9e, 0x76,
-	0x4e, 0xc1, 0x3e, 0x53, 0xd5, 0xfb, 0x37, 0x1a, 0xba, 0xc3, 0x81, 0x3a, 0xbe, 0xe7, 0x8e, 0xe7,
-	0x6c, 0x2a, 0xb8, 0x6b, 0x8f, 0xbe, 0x7d, 0x45, 0x3e, 0x91, 0xc5, 0xde, 0x96, 0x91, 0xec, 0xe3,
-	0xce, 0x25, 0x04, 0x72, 0xd9, 0xba, 0x78, 0x0f, 0x6d, 0x38, 0x4c, 0xd0, 0x13, 0x17, 0xde, 0xe7,
-	0x2c, 0x04, 0x65, 0x50, 0x99, 0x54, 0xb5, 0xbe, 0x9c, 0x88, 0x6e, 0xec, 0xce, 0x13, 0xc8, 0x45,
-	0x9f, 0xd6, 0xbf, 0x35, 0xa4, 0x77, 0x87, 0x74, 0x00, 0x5d, 0xaf, 0xef, 0xcb, 0x46, 0xc5, 0xe4,
-	0xc3, 0x7c, 0xa3, 0x52, 0x0c, 0x12, 0xdb, 0xf0, 0x31, 0xaa, 0xba, 0xcc, 0x03, 0x3a, 0x00, 0xd1,
-	0x58, 0xda, 0x2c, 0x6f, 0xd5, 0x1e, 0xdd, 0xbf, 0xe2, 0xfd, 0xf7, 0x63, 0xba, 0x75, 0x33, 0x8d,
-	0xac, 0x04, 0x10, 0x24, 0x53, 0xc2, 0x43, 0x54, 0x0f, 0x22, 0xd7, 0xed, 0x70, 0x70, 0xc0, 0x0b,
-	0x19, 0x75, 0x85, 0x0a, 0x68, 0x55, 0xc5, 0x5f, 0x29, 0x7e, 0x34, 0xeb, 0x65, 0xdd, 0x9a, 0x4e,
-	0x8c, 0xfa, 0x1c, 0x48, 0xe6, 0xb5, 0x5b, 0xbf, 0xd6, 0xd0, 0x6a, 0xb2, 0x0b, 0x7c, 0x80, 0x96,
-	0xed, 0x53, 0xca, 0xbc, 0x86, 0xa6, 0xde, 0xe6, 0xc1, 0x15, 0x0b, 0xc6, 0x6d, 0x57, 0x9e, 0x57,
-	0x7e, 0x40, 0x1d, 0xe9, 0x4f, 0x62, 0x19, 0x6c, 0x22, 0x64, 0xfb, 0x5e, 0x48, 0x65, 0xac, 0xc7,
-	0x47, 0xa4, 0xc7, 0xc5, 0xb3, 0x93, 0xa1, 0xa4, 0xc0, 0x68, 0xfd, 0x4e, 0x43, 0xd5, 0x44, 0x74,
-	0x57, 0x5e, 0xc1, 0x80, 0xfb, 0x51, 0x30, 0x7f, 0x05, 0x7b, 0x12, 0x24, 0xb1, 0x4d, 0xd6, 0xce,
-	0x33, 0xe6, 0x39, 0xf3, 0xb5, 0xf3, 0x3d, 0xe6, 0x39, 0x44, 0x59, 0x70, 0x1b, 0xe9, 0xb2, 0x86,
-	0x8a, 0x80, 0xda, 0x69, 0xe5, 0xdc, 0x48, 0x68, 0xfa, 0x41, 0x6a, 0x20, 0x39, 0x27, 0x2b, 0xc7,
-	0x95, 0xcb, 0xca, 0x71, 0xeb, 0xf7, 0x1a, 0x42, 0xf9, 0xbb, 0xe3, 0xf7, 0x51, 0x95, 0x83, 0xf0,
-	0x23, 0x6e, 0x43, 0x92, 0x06, 0x0f, 0xae, 0x4c, 0x83, 0x98, 0xde, 0xdd, 0xcd, 0x23, 0x21, 0xc5,
-	0x48, 0x26, 0x86, 0x9f, 0xa0, 0x32, 0xcf, 0x46, 0x20, 0xf3, 0x5a, 0x97, 0x91, 0xcf, 0x40, 0x59,
-	0x9f, 0x91, 0x13, 0x90, 0xd4, 0x69, 0x39, 0xa8, 0x3e, 0x47, 0x9a, 0x3d, 0x1c, 0xed, 0x73, 0x1c,
-	0xce, 0xa5, 0xbd, 0xaa, 0xf5, 0x0f, 0x0d, 0xcd, 0x07, 0xdd, 0xe7, 0x5f, 0xe6, 0x5d, 0x84, 0x65,
-	0x7d, 0x66, 0x36, 0xec, 0xd8, 0xb6, 0x1f, 0x79, 0xf1, 0xb8, 0x16, 0x2f, 0x9a, 0x15, 0xc7, 0xde,
-	0x05, 0x06, 0x59, 0xe0, 0x85, 0x7f, 0x92, 0x8e, 0x7c, 0x04, 0xfa, 0x32, 0x95, 0x64, 0x64, 0x6f,
-	0x2d, 0x9a, 0x27, 0x17, 0x8e, 0x92, 0x73, 0xc3, 0xa1, 0xd4, 0x20, 0x05, 0xbd, 0xd6, 0x0b, 0x0d,
-	0x5d, 0x56, 0xb4, 0xf0, 0x77, 0xd0, 0x7a, 0x00, 0x9c, 0xf9, 0x4e, 0x0f, 0x6c, 0xdf, 0x73, 0xe2,
-	0xa9, 0x77, 0xd9, 0xda, 0x98, 0x4e, 0x8c, 0xf5, 0xa3, 0xa2, 0x81, 0xcc, 0xf2, 0xe4, 0x98, 0x13,
-	0xb2, 0x21, 0xf8, 0x51, 0x98, 0x7a, 0x2e, 0x29, 0x4f, 0x35, 0xe6, 0x1c, 0xcf, 0x58, 0xc8, 0x1c,
-	0x13, 0xff, 0x00, 0xdd, 0xec, 0x53, 0xe6, 0x46, 0x1c, 0x8e, 0x4f, 0x39, 0x88, 0x53, 0xdf, 0x75,
-	0x54, 0xd8, 0x2f, 0x5b, 0xb7, 0xa7, 0x13, 0xe3, 0xe6, 0xdb, 0x73, 0x36, 0x72, 0x81, 0xdd, 0xfa,
-	0x8b, 0x86, 0x50, 0x1e, 0xa1, 0xd7, 0xcb, 0xc3, 0x07, 0x68, 0x75, 0x04, 0x5c, 0xc8, 0xee, 0xbb,
-	0x34, 0xdb, 0x59, 0x7e, 0x14, 0xc3, 0x24, 0xb5, 0x67, 0x21, 0x54, 0xbe, 0x74, 0xdc, 0x49, 0x93,
-	0xba, 0x72, 0x69, 0x52, 0x3f, 0x46, 0xcb, 0xc2, 0xf6, 0x03, 0x48, 0xc6, 0x8a, 0x66, 0xba, 0xa7,
-	0x9e, 0x04, 0xe5, 0x30, 0x92, 0xee, 0x5f, 0x01, 0x24, 0x26, 0xb7, 0xfe, 0xac, 0x21, 0xfd, 0x78,
-	0xbf, 0xd7, 0xf1, 0xbd, 0x3e, 0x1b, 0xcc, 0x7e, 0x66, 0x68, 0xff, 0xdf, 0xcf, 0x8c, 0x53, 0xb4,
-	0x66, 0xe7, 0xa3, 0x63, 0xda, 0x1d, 0xcc, 0xeb, 0x4f, 0x9b, 0xaa, 0x2b, 0xde, 0x4e, 0x5e, 0x6b,
-	0xad, 0x60, 0x10, 0x64, 0x46, 0xb9, 0xf5, 0x55, 0xa4, 0xcb, 0x80, 0x38, 0xec, 0xef, 0xd2, 0xf1,
-	0x9b, 0xb7, 0x7f, 0xfb, 0xa9, 0x51, 0xfa, 0xd5, 0x33, 0xa3, 0xf4, 0xc9, 0x33, 0xa3, 0xf4, 0xe9,
-	0x33, 0xa3, 0xf4, 0xf1, 0x5f, 0x37, 0x4b, 0xad, 0x3f, 0x68, 0xe8, 0xb6, 0x7a, 0x89, 0xf9, 0xec,
-	0xff, 0x26, 0xaa, 0xd2, 0x80, 0xed, 0x15, 0x2e, 0x37, 0xab, 0x46, 0x3b, 0x47, 0xdd, 0xf8, 0x7e,
-	0x33, 0xc6, 0x17, 0x53, 0x6a, 0xff, 0x58, 0x46, 0xb5, 0xc2, 0xe7, 0x94, 0x4c, 0x29, 0x9f, 0x0f,
-	0xa8, 0xc7, 0x3e, 0x52, 0x43, 0x9b, 0x50, 0x9d, 0x4a, 0x8f, 0x53, 0xea, 0xb0, 0x68, 0x20, 0xb3,
-	0x3c, 0xfc, 0x0d, 0xa4, 0xab, 0x92, 0xc0, 0x19, 0xa4, 0x9d, 0x48, 0x5d, 0x5f, 0x27, 0x05, 0x49,
-	0x6e, 0xc7, 0x5d, 0x74, 0xab, 0xe8, 0x4d, 0xdd, 0xa7, 0x1e, 0x0b, 0xe3, 0xda, 0xa1, 0x5b, 0x77,
-	0xa6, 0x13, 0xe3, 0xd6, 0xe1, 0x45, 0x33, 0x59, 0xe4, 0x23, 0x5b, 0xa0, 0x2b, 0x63, 0x87, 0x85,
-	0x72, 0xe1, 0x4a, 0xde, 0x02, 0xf7, 0x33, 0x94, 0x14, 0x18, 0x72, 0x9f, 0x6a, 0xfc, 0xf6, 0x6c,
-	0x90, 0x43, 0x73, 0xb6, 0xcf, 0xa3, 0x14, 0x24, 0xb9, 0x1d, 0x7f, 0x0f, 0xd5, 0x45, 0xc8, 0x01,
-	0xc2, 0xfc, 0x7b, 0x68, 0x45, 0xb9, 0xa8, 0xd6, 0xdf, 0x9b, 0x35, 0x91, 0x79, 0xae, 0xfc, 0x3c,
-	0x0b, 0x7c, 0x11, 0x52, 0xb7, 0xe3, 0x3b, 0xd9, 0xb7, 0x9c, 0xfa, 0x3c, 0x3b, 0xca, 0x61, 0x52,
-	0xe4, 0xe0, 0x37, 0xd0, 0x9a, 0x00, 0xce, 0xa8, 0x7b, 0x10, 0x0d, 0x4f, 0x80, 0x27, 0xf3, 0x66,
-	0x16, 0xa8, 0xbd, 0x82, 0x8d, 0xcc, 0x30, 0xad, 0xce, 0xf3, 0x97, 0xcd, 0xd2, 0x8b, 0x97, 0xcd,
-	0xd2, 0x67, 0x2f, 0x9b, 0xa5, 0x8f, 0xa7, 0x4d, 0xed, 0xf9, 0xb4, 0xa9, 0xbd, 0x98, 0x36, 0xb5,
-	0xcf, 0xa6, 0x4d, 0xed, 0x6f, 0xd3, 0xa6, 0xf6, 0xc9, 0xdf, 0x9b, 0xa5, 0x0f, 0xef, 0xbd, 0xf2,
-	0x8f, 0x96, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xe4, 0x6b, 0xda, 0x16, 0x88, 0x11, 0x00, 0x00,
+	// 1921 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xcd, 0x8f, 0x1b, 0x49,
+	0x15, 0x77, 0xc7, 0x9e, 0x8c, 0xfd, 0x3c, 0x89, 0x93, 0x4a, 0x50, 0x4c, 0x44, 0xdc, 0x43, 0x47,
+	0x44, 0x13, 0xd8, 0xf4, 0x30, 0xa3, 0x04, 0x96, 0x15, 0x08, 0xc6, 0x76, 0x36, 0xf1, 0xee, 0x24,
+	0x63, 0xca, 0x13, 0x76, 0xb5, 0x20, 0x50, 0x4d, 0x77, 0xd9, 0x53, 0x4c, 0xbb, 0xbb, 0x55, 0xd5,
+	0x3d, 0xcb, 0xec, 0x69, 0x8f, 0x70, 0x5b, 0x6e, 0x1c, 0x37, 0x12, 0x7f, 0x02, 0x12, 0xe2, 0x2f,
+	0x20, 0xc7, 0x70, 0x41, 0x2b, 0x81, 0x2c, 0x62, 0xae, 0x88, 0x0b, 0x02, 0xa1, 0x39, 0xa1, 0xaa,
+	0xae, 0xfe, 0xb0, 0xc7, 0xb3, 0x33, 0x0b, 0x48, 0x7b, 0x73, 0xbf, 0xdf, 0xef, 0xbd, 0xfa, 0x78,
+	0xaf, 0xde, 0x87, 0xe1, 0xde, 0xc1, 0x38, 0x70, 0x63, 0x8f, 0x0a, 0xfb, 0x67, 0x47, 0x1f, 0xac,
+	0x3b, 0x1e, 0xa3, 0x7e, 0x74, 0x6f, 0x14, 0xac, 0x93, 0x90, 0xad, 0x1f, 0x6e, 0xac, 0x8f, 0xa8,
+	0x4f, 0x39, 0x89, 0xa8, 0x6b, 0x87, 0x3c, 0x88, 0x02, 0x74, 0xab, 0x48, 0xb7, 0x13, 0xfa, 0x4f,
+	0x46, 0x81, 0x4d, 0x42, 0x66, 0x1f, 0x6e, 0xdc, 0xbc, 0x37, 0x62, 0xd1, 0x7e, 0xbc, 0x67, 0x3b,
+	0xc1, 0x78, 0x7d, 0x14, 0x8c, 0x82, 0x75, 0xa5, 0xb5, 0x17, 0x0f, 0xd5, 0x97, 0xfa, 0x50, 0xbf,
+	0x12, 0x6b, 0x37, 0xad, 0x83, 0xd7, 0x85, 0xcd, 0x92, 0xc5, 0x9c, 0x80, 0xd3, 0x05, 0x2b, 0xde,
+	0xbc, 0x9f, 0x73, 0xc6, 0xc4, 0xd9, 0x67, 0x3e, 0xe5, 0x47, 0xeb, 0xe1, 0xc1, 0x48, 0x0a, 0xc4,
+	0xfa, 0x98, 0x46, 0x64, 0x81, 0x96, 0xf5, 0x5b, 0x03, 0x1a, 0x9d, 0xad, 0x7e, 0xaf, 0xe3, 0xc5,
+	0x22, 0xa2, 0xbc, 0xe7, 0x0f, 0x03, 0xf4, 0x6d, 0xa8, 0x86, 0x3c, 0x38, 0x64, 0x2e, 0xe5, 0x4d,
+	0x63, 0xd5, 0x58, 0xab, 0xb5, 0x57, 0x5f, 0x4c, 0xcc, 0xd2, 0x74, 0x62, 0x56, 0xfb, 0x5a, 0x7e,
+	0x3c, 0x31, 0x57, 0xa4, 0x5a, 0xfa, 0x8d, 0x33, 0x0d, 0xb4, 0x0e, 0x35, 0x9f, 0x8c, 0xa9, 0x08,
+	0x89, 0x43, 0x9b, 0x17, 0x94, 0xfa, 0x55, 0xad, 0x5e, 0x7b, 0x9a, 0x02, 0x38, 0xe7, 0xa0, 0x07,
+	0x50, 0x77, 0x92, 0xd5, 0x25, 0xdc, 0x2c, 0x2b, 0x95, 0x6b, 0x5a, 0xa5, 0xde, 0xc9, 0x21, 0x5c,
+	0xe4, 0x59, 0x3f, 0x84, 0x2f, 0x74, 0x28, 0x8f, 0xd8, 0x90, 0x39, 0x24, 0xa2, 0x7d, 0xce, 0x0e,
+	0x49, 0x44, 0xdf, 0xa6, 0x47, 0xa8, 0x0d, 0x55, 0xea, 0x3b, 0x81, 0xcb, 0xfc, 0x91, 0xde, 0xfe,
+	0x9d, 0x74, 0xfb, 0x0f, 0xb5, 0xfc, 0x78, 0x62, 0xa2, 0x5c, 0x23, 0x95, 0xe2, 0x4c, 0xcf, 0xfa,
+	0xc7, 0x12, 0x34, 0x0a, 0xd6, 0x07, 0x21, 0x75, 0xd0, 0x6d, 0x58, 0x22, 0x1e, 0x23, 0x42, 0x1b,
+	0xbd, 0xa4, 0x8d, 0x2e, 0x6d, 0x49, 0x21, 0x4e, 0x30, 0xf4, 0x1e, 0xd4, 0x98, 0x10, 0x31, 0xe5,
+	0x98, 0x0e, 0xd5, 0xe9, 0xeb, 0x9b, 0xf7, 0xec, 0xc4, 0x33, 0xca, 0xf7, 0xd2, 0x7b, 0xf6, 0xe1,
+	0x86, 0xbd, 0x7b, 0x14, 0x52, 0x77, 0x3b, 0x70, 0x88, 0xb7, 0xb3, 0xf7, 0x53, 0xea, 0x44, 0x98,
+	0x0e, 0x29, 0xa7, 0xbe, 0x43, 0xdb, 0x97, 0xe4, 0x45, 0xf5, 0x52, 0x1b, 0x38, 0x37, 0x87, 0x36,
+	0x01, 0x04, 0x75, 0x38, 0x8d, 0x0a, 0xf7, 0x84, 0xf4, 0x2e, 0x60, 0x90, 0x21, 0xb8, 0xc0, 0x42,
+	0xdf, 0x87, 0x65, 0x11, 0xab, 0x15, 0x9a, 0x15, 0xb5, 0x9b, 0xaf, 0xda, 0x9f, 0x1a, 0x99, 0xf6,
+	0xbb, 0x0f, 0xbe, 0xfe, 0xad, 0x41, 0xa2, 0xd1, 0xae, 0x4f, 0x27, 0xe6, 0xb2, 0xfe, 0xc0, 0xa9,
+	0x1d, 0xf4, 0x2e, 0x54, 0xdd, 0x98, 0x93, 0x88, 0x05, 0x7e, 0x73, 0x49, 0xd9, 0xb4, 0x0b, 0x27,
+	0xcc, 0x62, 0xcf, 0x0e, 0x0f, 0x46, 0x52, 0x20, 0x6c, 0x19, 0x7b, 0xd2, 0x74, 0x57, 0x6b, 0xb5,
+	0x57, 0xa4, 0x2f, 0xd2, 0x2f, 0x9c, 0x59, 0x43, 0x04, 0xea, 0x9c, 0xfa, 0xf4, 0xfd, 0x36, 0x1d,
+	0x06, 0x9c, 0x36, 0x2f, 0xfe, 0x57, 0xc6, 0x1b, 0x32, 0x6a, 0x70, 0x6e, 0x06, 0x17, 0x6d, 0xa2,
+	0x35, 0xa8, 0xba, 0xbe, 0x50, 0x71, 0xd8, 0x5c, 0x5e, 0x2d, 0xaf, 0xd5, 0xf4, 0x66, 0x9e, 0x0e,
+	0x94, 0x0c, 0x67, 0x28, 0xda, 0x80, 0x3a, 0x0b, 0xb7, 0x5c, 0x97, 0x53, 0x21, 0xa8, 0x68, 0x56,
+	0x15, 0x59, 0x19, 0xef, 0xf5, 0x33, 0x31, 0x2e, 0x72, 0xd0, 0x97, 0xa0, 0x12, 0x73, 0x26, 0x9a,
+	0x35, 0xc5, 0xad, 0x4e, 0x27, 0x66, 0xe5, 0x19, 0xee, 0x09, 0xac, 0xa4, 0xe8, 0x0d, 0xb8, 0x4c,
+	0xc7, 0x84, 0x79, 0xb9, 0x4d, 0x50, 0x3c, 0x34, 0x9d, 0x98, 0x97, 0x1f, 0xce, 0x20, 0x78, 0x8e,
+	0x89, 0x5c, 0x80, 0x30, 0x8b, 0xd7, 0x66, 0x5d, 0x5d, 0xcc, 0xfd, 0x33, 0x3c, 0xb9, 0xf0, 0x75,
+	0xb4, 0x2f, 0xcb, 0x60, 0xc9, 0xbf, 0x71, 0xc1, 0xae, 0xf5, 0x27, 0x03, 0xea, 0xc5, 0x44, 0x70,
+	0x0b, 0xca, 0x31, 0x73, 0x75, 0xbc, 0xd7, 0x75, 0xa4, 0x95, 0x9f, 0xf5, 0xba, 0x58, 0xca, 0xd1,
+	0x2a, 0x54, 0xe4, 0x2b, 0xd6, 0x8f, 0x7c, 0x45, 0xe3, 0x15, 0x15, 0x83, 0x0a, 0x41, 0xdf, 0x81,
+	0x86, 0x7e, 0xb2, 0x4f, 0x88, 0x4f, 0x46, 0x94, 0x8b, 0x66, 0x59, 0x9d, 0xf9, 0xda, 0x74, 0x62,
+	0x36, 0x3a, 0xb3, 0x10, 0x9e, 0xe7, 0xa2, 0x6d, 0xa8, 0x38, 0x24, 0x64, 0x3a, 0x72, 0xed, 0xb3,
+	0xce, 0x3b, 0x9b, 0xc6, 0x92, 0xfb, 0x97, 0x42, 0xac, 0xac, 0x58, 0xff, 0x2a, 0x43, 0xb6, 0x24,
+	0x8d, 0x88, 0x4b, 0x22, 0xf2, 0xbf, 0x9f, 0xf0, 0x01, 0xd4, 0x5d, 0x26, 0x42, 0x8f, 0x1c, 0x2d,
+	0x4a, 0x5e, 0xdd, 0x1c, 0xc2, 0x45, 0x1e, 0xfa, 0x6e, 0x21, 0xc5, 0x56, 0x94, 0xce, 0xed, 0x05,
+	0x29, 0xb6, 0xf1, 0x38, 0x10, 0x11, 0xf3, 0x47, 0x0b, 0xb2, 0xec, 0x5d, 0x58, 0x0e, 0xde, 0xf7,
+	0x29, 0xef, 0x75, 0xd5, 0x1b, 0xac, 0xb5, 0x1b, 0x5a, 0x7f, 0x79, 0x27, 0x11, 0xe3, 0x14, 0x97,
+	0x09, 0x59, 0xfd, 0x94, 0x29, 0x47, 0xbd, 0xa9, 0x42, 0x42, 0xde, 0x49, 0x01, 0x9c, 0x73, 0xe4,
+	0x99, 0x48, 0xc8, 0x1e, 0xfa, 0x6e, 0x18, 0x30, 0x3f, 0x6a, 0x2e, 0xcf, 0x9e, 0x69, 0xab, 0xdf,
+	0x4b, 0x21, 0x5c, 0xe4, 0xa1, 0xd7, 0xa0, 0xea, 0x90, 0x76, 0xec, 0xbb, 0x1e, 0x6d, 0x56, 0x95,
+	0xce, 0x95, 0xf4, 0x4c, 0x9d, 0xad, 0x44, 0x8e, 0x33, 0x86, 0xdc, 0xd5, 0x38, 0xf1, 0x73, 0xaf,
+	0xdb, 0xac, 0xcd, 0xee, 0xea, 0x49, 0x0a, 0xe0, 0x9c, 0x83, 0x5e, 0x87, 0x95, 0xfd, 0x78, 0x2f,
+	0x75, 0x70, 0xb7, 0x09, 0x4a, 0xe7, 0xba, 0xd6, 0x59, 0x79, 0x5c, 0xc0, 0xf0, 0x0c, 0xd3, 0xfa,
+	0x77, 0x19, 0x6a, 0x9d, 0xc0, 0x77, 0x99, 0x4a, 0x32, 0x1b, 0x50, 0x89, 0xe4, 0x4d, 0x24, 0xd7,
+	0x7e, 0x2b, 0xf5, 0xa9, 0x3c, 0xf9, 0xf1, 0xc4, 0xbc, 0x94, 0x11, 0xd5, 0xad, 0x28, 0x2a, 0xfa,
+	0x31, 0x5c, 0x14, 0x11, 0x89, 0x62, 0xa1, 0xef, 0xfa, 0x4d, 0xad, 0x74, 0x71, 0xa0, 0xa4, 0xc7,
+	0x13, 0xf3, 0x5c, 0xc5, 0xd7, 0xce, 0x6c, 0x27, 0x7a, 0x58, 0x5b, 0x45, 0x6f, 0x01, 0x0a, 0xf6,
+	0x04, 0xe5, 0x87, 0xd4, 0x7d, 0x94, 0xd4, 0x67, 0x99, 0x5b, 0x65, 0x2c, 0x95, 0xdb, 0x37, 0xf5,
+	0x5a, 0x68, 0xe7, 0x04, 0x03, 0x2f, 0xd0, 0x42, 0x5b, 0x50, 0x15, 0xf4, 0x90, 0x72, 0x16, 0x1d,
+	0x69, 0x67, 0x7f, 0x25, 0xf5, 0xc2, 0x40, 0xcb, 0x8f, 0x27, 0xe6, 0xd5, 0x7c, 0x2b, 0x5a, 0x88,
+	0x33, 0x35, 0x74, 0x08, 0xc8, 0x23, 0x22, 0xda, 0xe5, 0xc4, 0x17, 0xc9, 0x55, 0xb0, 0x31, 0x55,
+	0x61, 0xa0, 0xca, 0xc7, 0x79, 0xb2, 0xb1, 0xd4, 0xc8, 0xb7, 0xbe, 0x7d, 0xc2, 0x1a, 0x5e, 0xb0,
+	0x02, 0xba, 0x03, 0x17, 0x39, 0x25, 0x22, 0xf0, 0x75, 0xf8, 0x5c, 0x4e, 0xaf, 0x19, 0x2b, 0x29,
+	0xd6, 0xa8, 0x8c, 0xfd, 0x31, 0x15, 0x82, 0x8c, 0xa8, 0x0e, 0x9c, 0x2c, 0xf6, 0x9f, 0x24, 0x62,
+	0x9c, 0xe2, 0xd6, 0xdf, 0x0d, 0x68, 0x3c, 0xa6, 0xc4, 0x8b, 0xf6, 0x3b, 0xfb, 0xd4, 0x39, 0x50,
+	0x75, 0xfc, 0x97, 0x06, 0xdc, 0xe0, 0x94, 0xb8, 0x81, 0xef, 0x1d, 0xcd, 0x61, 0x2a, 0x11, 0xd4,
+	0x37, 0xbf, 0x71, 0x46, 0xa6, 0xc1, 0x8b, 0xb5, 0xdb, 0xa6, 0xde, 0xc7, 0x8d, 0x53, 0x08, 0xf8,
+	0xb4, 0x75, 0xd1, 0x23, 0xb8, 0xea, 0x32, 0x41, 0xf6, 0x3c, 0xfa, 0x0e, 0x67, 0x11, 0x55, 0x80,
+	0xca, 0x3a, 0xd5, 0xf6, 0x17, 0xb5, 0xd1, 0xab, 0xdd, 0x79, 0x02, 0x3e, 0xa9, 0x63, 0xfd, 0xd3,
+	0x80, 0x5a, 0x6f, 0x4c, 0x46, 0x54, 0x25, 0xf0, 0xdb, 0xb0, 0xc4, 0xe4, 0xc7, 0x7c, 0xcb, 0xa2,
+	0x18, 0x38, 0xc1, 0xd0, 0x2e, 0x54, 0x3d, 0xe6, 0x53, 0x32, 0xa2, 0xa2, 0x79, 0x61, 0xb5, 0xbc,
+	0x56, 0xdf, 0xbc, 0x73, 0xc6, 0xf9, 0xb7, 0x13, 0x7a, 0xfe, 0xbe, 0xb5, 0x40, 0xe0, 0xcc, 0x12,
+	0x1a, 0x43, 0x23, 0x8c, 0x3d, 0xaf, 0xc3, 0xa9, 0x4b, 0xfd, 0x88, 0x11, 0x4f, 0xa8, 0x80, 0x3e,
+	0x3b, 0x8d, 0xf7, 0x67, 0xb5, 0x92, 0x52, 0x31, 0x27, 0xc4, 0xf3, 0xb6, 0xad, 0x5f, 0x18, 0xb0,
+	0xac, 0x77, 0x81, 0x9e, 0xc2, 0x92, 0xb3, 0x4f, 0x98, 0xdf, 0x34, 0xd4, 0x69, 0xee, 0x9e, 0xb1,
+	0x60, 0xd2, 0x80, 0xa9, 0x92, 0x91, 0x5d, 0x50, 0x47, 0xea, 0xe3, 0xc4, 0x0c, 0xb2, 0x01, 0x9c,
+	0xc0, 0x8f, 0x88, 0x8c, 0xf5, 0xe4, 0x8a, 0x6a, 0x49, 0x19, 0xed, 0x64, 0x52, 0x5c, 0x60, 0x58,
+	0xbf, 0x36, 0xa0, 0xaa, 0x8d, 0x76, 0xa5, 0x0b, 0x46, 0x3c, 0x88, 0xc3, 0x79, 0x17, 0x3c, 0x92,
+	0x42, 0x9c, 0x60, 0xb2, 0xce, 0x1c, 0x30, 0xdf, 0x9d, 0xaf, 0x33, 0x6f, 0x33, 0xdf, 0xc5, 0x0a,
+	0x99, 0xed, 0xaa, 0xcb, 0xe7, 0xe8, 0xaa, 0xd3, 0xd2, 0x55, 0x39, 0xad, 0x74, 0x59, 0xbf, 0x31,
+	0x00, 0xf2, 0xb3, 0xa3, 0x77, 0xa0, 0xca, 0xa9, 0x08, 0x62, 0xee, 0x50, 0xfd, 0x0c, 0xee, 0x9e,
+	0xf9, 0x0c, 0x12, 0x7a, 0xaf, 0x9b, 0x47, 0x42, 0x2a, 0xc3, 0x99, 0x31, 0xf4, 0x04, 0xca, 0x3c,
+	0x6b, 0x86, 0xed, 0x73, 0x39, 0x23, 0xef, 0x86, 0xb3, 0x9a, 0x2c, 0x7b, 0x61, 0x69, 0xc7, 0x72,
+	0xa1, 0x31, 0x47, 0x9a, 0xbd, 0x1c, 0xe3, 0x33, 0x5c, 0xce, 0xa9, 0x75, 0xdd, 0xfa, 0x9b, 0x01,
+	0xf3, 0x41, 0xf7, 0xd9, 0x97, 0x79, 0x0b, 0x90, 0xcc, 0xcf, 0xcc, 0xa1, 0x5b, 0x8e, 0x13, 0xc4,
+	0x7e, 0xd2, 0xb8, 0x27, 0x8b, 0x66, 0xc9, 0x71, 0x70, 0x82, 0x81, 0x17, 0x68, 0xa1, 0x1f, 0xa5,
+	0xcd, 0x3f, 0xa6, 0xc3, 0xa4, 0x8b, 0xaa, 0x6f, 0xae, 0x2d, 0x9a, 0x2c, 0x16, 0x0e, 0x15, 0x73,
+	0x63, 0x82, 0xb4, 0x81, 0x0b, 0xf6, 0xac, 0x97, 0x06, 0x9c, 0x96, 0xb4, 0xd0, 0x37, 0xe1, 0x52,
+	0x48, 0x39, 0x0b, 0xdc, 0x01, 0x75, 0x02, 0xdf, 0x4d, 0xe6, 0x9f, 0xa5, 0xf6, 0xd5, 0xe9, 0xc4,
+	0xbc, 0xd4, 0x2f, 0x02, 0x78, 0x96, 0x27, 0x1b, 0xde, 0x88, 0x8d, 0x69, 0x10, 0x47, 0xa9, 0xe6,
+	0x05, 0xa5, 0xa9, 0x1a, 0xde, 0xdd, 0x19, 0x04, 0xcf, 0x31, 0xd1, 0xf7, 0xe0, 0xca, 0x90, 0x30,
+	0x2f, 0xe6, 0x74, 0x77, 0x9f, 0x53, 0xb1, 0x1f, 0x78, 0xae, 0x0a, 0xfb, 0xa5, 0xf6, 0xf5, 0xe9,
+	0xc4, 0xbc, 0xf2, 0xe6, 0x1c, 0x86, 0x4f, 0xb0, 0xad, 0x3f, 0x1a, 0x00, 0x79, 0x84, 0x9e, 0xef,
+	0x1d, 0xde, 0x85, 0xe5, 0x43, 0xca, 0x85, 0xac, 0xbe, 0x17, 0x66, 0x2b, 0xcb, 0x0f, 0x12, 0x31,
+	0x4e, 0xf1, 0x2c, 0x84, 0xca, 0xa7, 0xb6, 0x86, 0xe9, 0xa3, 0xae, 0x9c, 0xfa, 0xa8, 0xef, 0xc3,
+	0x92, 0x70, 0x82, 0x90, 0xea, 0xb6, 0xa2, 0x95, 0xee, 0x69, 0x20, 0x85, 0xb2, 0x19, 0x49, 0xf7,
+	0xaf, 0x04, 0x38, 0x21, 0x5b, 0x7f, 0x30, 0xa0, 0xb6, 0xbb, 0x3d, 0xe8, 0x04, 0xfe, 0x90, 0x8d,
+	0x66, 0x07, 0x4e, 0xe3, 0xff, 0x3b, 0x70, 0xee, 0xc3, 0x8a, 0x93, 0x0f, 0x11, 0x69, 0x75, 0xb0,
+	0xcf, 0x3f, 0x77, 0xa8, 0xaa, 0x98, 0xb5, 0x68, 0x05, 0x40, 0xe0, 0x19, 0xcb, 0xd6, 0x97, 0xa1,
+	0x26, 0x03, 0x62, 0x67, 0xd8, 0x25, 0x47, 0x6f, 0x5c, 0xff, 0xd5, 0xc7, 0x66, 0xe9, 0xe7, 0xcf,
+	0xcd, 0xd2, 0x47, 0xcf, 0xcd, 0xd2, 0xc7, 0xcf, 0xcd, 0xd2, 0x87, 0x7f, 0x5e, 0x2d, 0x59, 0xbf,
+	0x33, 0xe0, 0xba, 0x3a, 0xc4, 0xfc, 0xeb, 0x7f, 0x0d, 0xaa, 0x24, 0x64, 0x8f, 0x0a, 0xce, 0xcd,
+	0xb2, 0xd1, 0x56, 0xbf, 0x97, 0xf8, 0x37, 0x63, 0x7c, 0x3e, 0xa9, 0xf6, 0xf7, 0x65, 0xa8, 0x17,
+	0x06, 0x6b, 0xf9, 0xa4, 0x02, 0x3e, 0x22, 0x3e, 0xfb, 0x40, 0x35, 0x6d, 0x42, 0x55, 0xaa, 0x5a,
+	0xf2, 0xa4, 0x76, 0x8a, 0x00, 0x9e, 0xe5, 0xa1, 0xaf, 0x41, 0x4d, 0xa5, 0x04, 0xce, 0x68, 0x5a,
+	0x89, 0x94, 0xfb, 0x3a, 0xa9, 0x10, 0xe7, 0x38, 0xea, 0xc1, 0xb5, 0xa2, 0x36, 0xf1, 0x9e, 0xf9,
+	0x2c, 0x4a, 0x27, 0xb0, 0x1b, 0xd3, 0x89, 0x79, 0x6d, 0xe7, 0x24, 0x8c, 0x17, 0xe9, 0xc8, 0x12,
+	0xe8, 0xc9, 0xd8, 0x61, 0x91, 0x5c, 0xb8, 0x92, 0x97, 0xc0, 0xed, 0x4c, 0x8a, 0x0b, 0x0c, 0xb9,
+	0x4f, 0x35, 0xaa, 0xf8, 0x0e, 0x95, 0x4d, 0x73, 0xb6, 0xcf, 0x7e, 0x2a, 0xc4, 0x39, 0x2e, 0xa7,
+	0x44, 0x11, 0x71, 0x4a, 0xa3, 0x7c, 0x32, 0xbe, 0x98, 0x4f, 0x89, 0x83, 0x59, 0x08, 0xcf, 0x73,
+	0xe5, 0xa0, 0x1e, 0x06, 0x22, 0x22, 0x5e, 0x27, 0x70, 0xb3, 0xa9, 0x5e, 0x0d, 0xea, 0xfd, 0x5c,
+	0x8c, 0x8b, 0x1c, 0x39, 0x4b, 0x08, 0xca, 0x19, 0xf1, 0x9e, 0xc6, 0xe3, 0x3d, 0xca, 0x75, 0xbf,
+	0x99, 0x05, 0xea, 0xa0, 0x80, 0xe1, 0x19, 0x66, 0xbb, 0xf3, 0xe2, 0x55, 0xab, 0xf4, 0xf2, 0x55,
+	0xab, 0xf4, 0xc9, 0xab, 0x56, 0xe9, 0xc3, 0x69, 0xcb, 0x78, 0x31, 0x6d, 0x19, 0x2f, 0xa7, 0x2d,
+	0xe3, 0x93, 0x69, 0xcb, 0xf8, 0xcb, 0xb4, 0x65, 0x7c, 0xf4, 0xd7, 0x56, 0xe9, 0xbd, 0x5b, 0x9f,
+	0xfa, 0x67, 0xe1, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x12, 0x7e, 0x97, 0xff, 0x4c, 0x14, 0x00,
+	0x00,
+}
+
+func (m *CAPIClusterInfo) Marshal() (dAtA []byte, err error) {
+	size := m.Size()
+	dAtA = make([]byte, size)
+	n, err := m.MarshalToSizedBuffer(dAtA[:size])
+	if err != nil {
+		return nil, err
+	}
+	return dAtA[:n], nil
+}
+
+func (m *CAPIClusterInfo) MarshalTo(dAtA []byte) (int, error) {
+	size := m.Size()
+	return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *CAPIClusterInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+	i := len(dAtA)
+	_ = i
+	var l int
+	_ = l
+	i -= len(m.ClusterName)
+	copy(dAtA[i:], m.ClusterName)
+	i = encodeVarintGenerated(dAtA, i, uint64(len(m.ClusterName)))
+	i--
+	dAtA[i] = 0x1a
+	i -= len(m.Namespace)
+	copy(dAtA[i:], m.Namespace)
+	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace)))
+	i--
+	dAtA[i] = 0x12
+	i -= len(m.Provider)
+	copy(dAtA[i:], m.Provider)
+	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Provider)))
+	i--
+	dAtA[i] = 0xa
+	return len(dAtA) - i, nil
 }
 
 func (m *CertificatePrivateKey) Marshal() (dAtA []byte, err error) {
@@ -808,6 +917,60 @@ func (m *CertificateSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
 	return len(dAtA) - i, nil
 }
 
+func (m *ClusterInfo) Marshal() (dAtA []byte, err error) {
+	size := m.Size()
+	dAtA = make([]byte, size)
+	n, err := m.MarshalToSizedBuffer(dAtA[:size])
+	if err != nil {
+		return nil, err
+	}
+	return dAtA[:n], nil
+}
+
+func (m *ClusterInfo) MarshalTo(dAtA []byte) (int, error) {
+	size := m.Size()
+	return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ClusterInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+	i := len(dAtA)
+	_ = i
+	var l int
+	_ = l
+	if m.CAPI != nil {
+		{
+			size, err := m.CAPI.MarshalToSizedBuffer(dAtA[:i])
+			if err != nil {
+				return 0, err
+			}
+			i -= size
+			i = encodeVarintGenerated(dAtA, i, uint64(size))
+		}
+		i--
+		dAtA[i] = 0x22
+	}
+	if len(m.ClusterManagers) > 0 {
+		for iNdEx := len(m.ClusterManagers) - 1; iNdEx >= 0; iNdEx-- {
+			i -= len(m.ClusterManagers[iNdEx])
+			copy(dAtA[i:], m.ClusterManagers[iNdEx])
+			i = encodeVarintGenerated(dAtA, i, uint64(len(m.ClusterManagers[iNdEx])))
+			i--
+			dAtA[i] = 0x1a
+		}
+	}
+	i -= len(m.Name)
+	copy(dAtA[i:], m.Name)
+	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
+	i--
+	dAtA[i] = 0x12
+	i -= len(m.UID)
+	copy(dAtA[i:], m.UID)
+	i = encodeVarintGenerated(dAtA, i, uint64(len(m.UID)))
+	i--
+	dAtA[i] = 0xa
+	return len(dAtA) - i, nil
+}
+
 func (m *ClusterMetadata) Marshal() (dAtA []byte, err error) {
 	size := m.Size()
 	dAtA = make([]byte, size)
@@ -828,6 +991,36 @@ func (m *ClusterMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) {
 	_ = i
 	var l int
 	_ = l
+	i -= len(m.HubClusterID)
+	copy(dAtA[i:], m.HubClusterID)
+	i = encodeVarintGenerated(dAtA, i, uint64(len(m.HubClusterID)))
+	i--
+	dAtA[i] = 0x52
+	i -= len(m.ManagerID)
+	copy(dAtA[i:], m.ManagerID)
+	i = encodeVarintGenerated(dAtA, i, uint64(len(m.ManagerID)))
+	i--
+	dAtA[i] = 0x4a
+	i -= len(m.CABundle)
+	copy(dAtA[i:], m.CABundle)
+	i = encodeVarintGenerated(dAtA, i, uint64(len(m.CABundle)))
+	i--
+	dAtA[i] = 0x42
+	i -= len(m.APIEndpoint)
+	copy(dAtA[i:], m.APIEndpoint)
+	i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIEndpoint)))
+	i--
+	dAtA[i] = 0x3a
+	i -= len(m.OwnerType)
+	copy(dAtA[i:], m.OwnerType)
+	i = encodeVarintGenerated(dAtA, i, uint64(len(m.OwnerType)))
+	i--
+	dAtA[i] = 0x32
+	i -= len(m.OwnerID)
+	copy(dAtA[i:], m.OwnerID)
+	i = encodeVarintGenerated(dAtA, i, uint64(len(m.OwnerID)))
+	i--
+	dAtA[i] = 0x2a
 	i -= len(m.Provider)
 	copy(dAtA[i:], m.Provider)
 	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Provider)))
@@ -1499,6 +1692,21 @@ func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
 	dAtA[offset] = uint8(v)
 	return base
 }
+func (m *CAPIClusterInfo) Size() (n int) {
+	if m == nil {
+		return 0
+	}
+	var l int
+	_ = l
+	l = len(m.Provider)
+	n += 1 + l + sovGenerated(uint64(l))
+	l = len(m.Namespace)
+	n += 1 + l + sovGenerated(uint64(l))
+	l = len(m.ClusterName)
+	n += 1 + l + sovGenerated(uint64(l))
+	return n
+}
+
 func (m *CertificatePrivateKey) Size() (n int) {
 	if m == nil {
 		return 0
@@ -1567,6 +1775,29 @@ func (m *CertificateSpec) Size() (n int) {
 	return n
 }
 
+func (m *ClusterInfo) Size() (n int) {
+	if m == nil {
+		return 0
+	}
+	var l int
+	_ = l
+	l = len(m.UID)
+	n += 1 + l + sovGenerated(uint64(l))
+	l = len(m.Name)
+	n += 1 + l + sovGenerated(uint64(l))
+	if len(m.ClusterManagers) > 0 {
+		for _, s := range m.ClusterManagers {
+			l = len(s)
+			n += 1 + l + sovGenerated(uint64(l))
+		}
+	}
+	if m.CAPI != nil {
+		l = m.CAPI.Size()
+		n += 1 + l + sovGenerated(uint64(l))
+	}
+	return n
+}
+
 func (m *ClusterMetadata) Size() (n int) {
 	if m == nil {
 		return 0
@@ -1581,6 +1812,18 @@ func (m *ClusterMetadata) Size() (n int) {
 	n += 1 + l + sovGenerated(uint64(l))
 	l = len(m.Provider)
 	n += 1 + l + sovGenerated(uint64(l))
+	l = len(m.OwnerID)
+	n += 1 + l + sovGenerated(uint64(l))
+	l = len(m.OwnerType)
+	n += 1 + l + sovGenerated(uint64(l))
+	l = len(m.APIEndpoint)
+	n += 1 + l + sovGenerated(uint64(l))
+	l = len(m.CABundle)
+	n += 1 + l + sovGenerated(uint64(l))
+	l = len(m.ManagerID)
+	n += 1 + l + sovGenerated(uint64(l))
+	l = len(m.HubClusterID)
+	n += 1 + l + sovGenerated(uint64(l))
 	return n
 }
 
@@ -1854,6 +2097,18 @@ func sovGenerated(x uint64) (n int) {
 func sozGenerated(x uint64) (n int) {
 	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
 }
+func (this *CAPIClusterInfo) String() string {
+	if this == nil {
+		return "nil"
+	}
+	s := strings.Join([]string{`&CAPIClusterInfo{`,
+		`Provider:` + fmt.Sprintf("%v", this.Provider) + `,`,
+		`Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`,
+		`ClusterName:` + fmt.Sprintf("%v", this.ClusterName) + `,`,
+		`}`,
+	}, "")
+	return s
+}
 func (this *CertificatePrivateKey) String() string {
 	if this == nil {
 		return "nil"
@@ -1884,6 +2139,19 @@ func (this *CertificateSpec) String() string {
 	}, "")
 	return s
 }
+func (this *ClusterInfo) String() string {
+	if this == nil {
+		return "nil"
+	}
+	s := strings.Join([]string{`&ClusterInfo{`,
+		`UID:` + fmt.Sprintf("%v", this.UID) + `,`,
+		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
+		`ClusterManagers:` + fmt.Sprintf("%v", this.ClusterManagers) + `,`,
+		`CAPI:` + strings.Replace(this.CAPI.String(), "CAPIClusterInfo", "CAPIClusterInfo", 1) + `,`,
+		`}`,
+	}, "")
+	return s
+}
 func (this *ClusterMetadata) String() string {
 	if this == nil {
 		return "nil"
@@ -1893,6 +2161,12 @@ func (this *ClusterMetadata) String() string {
 		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
 		`DisplayName:` + fmt.Sprintf("%v", this.DisplayName) + `,`,
 		`Provider:` + fmt.Sprintf("%v", this.Provider) + `,`,
+		`OwnerID:` + fmt.Sprintf("%v", this.OwnerID) + `,`,
+		`OwnerType:` + fmt.Sprintf("%v", this.OwnerType) + `,`,
+		`APIEndpoint:` + fmt.Sprintf("%v", this.APIEndpoint) + `,`,
+		`CABundle:` + fmt.Sprintf("%v", this.CABundle) + `,`,
+		`ManagerID:` + fmt.Sprintf("%v", this.ManagerID) + `,`,
+		`HubClusterID:` + fmt.Sprintf("%v", this.HubClusterID) + `,`,
 		`}`,
 	}, "")
 	return s
@@ -2089,7 +2363,7 @@ func valueToStringGenerated(v interface{}) string {
 	pv := reflect.Indirect(rv).Interface()
 	return fmt.Sprintf("*%v", pv)
 }
-func (m *CertificatePrivateKey) Unmarshal(dAtA []byte) error {
+func (m *CAPIClusterInfo) Unmarshal(dAtA []byte) error {
 	l := len(dAtA)
 	iNdEx := 0
 	for iNdEx < l {
@@ -2112,15 +2386,15 @@ func (m *CertificatePrivateKey) Unmarshal(dAtA []byte) error {
 		fieldNum := int32(wire >> 3)
 		wireType := int(wire & 0x7)
 		if wireType == 4 {
-			return fmt.Errorf("proto: CertificatePrivateKey: wiretype end group for non-group")
+			return fmt.Errorf("proto: CAPIClusterInfo: wiretype end group for non-group")
 		}
 		if fieldNum <= 0 {
-			return fmt.Errorf("proto: CertificatePrivateKey: illegal tag %d (wire type %d)", fieldNum, wire)
+			return fmt.Errorf("proto: CAPIClusterInfo: illegal tag %d (wire type %d)", fieldNum, wire)
 		}
 		switch fieldNum {
 		case 1:
 			if wireType != 2 {
-				return fmt.Errorf("proto: wrong wireType = %d for field Encoding", wireType)
+				return fmt.Errorf("proto: wrong wireType = %d for field Provider", wireType)
 			}
 			var stringLen uint64
 			for shift := uint(0); ; shift += 7 {
@@ -2148,32 +2422,178 @@ func (m *CertificatePrivateKey) Unmarshal(dAtA []byte) error {
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
-			m.Encoding = PrivateKeyEncoding(dAtA[iNdEx:postIndex])
+			m.Provider = CAPIProvider(dAtA[iNdEx:postIndex])
 			iNdEx = postIndex
-		default:
-			iNdEx = preIndex
-			skippy, err := skipGenerated(dAtA[iNdEx:])
-			if err != nil {
-				return err
+		case 2:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType)
 			}
-			if (skippy < 0) || (iNdEx+skippy) < 0 {
+			var stringLen uint64
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				stringLen |= uint64(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			intStringLen := int(stringLen)
+			if intStringLen < 0 {
 				return ErrInvalidLengthGenerated
 			}
-			if (iNdEx + skippy) > l {
+			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
-			iNdEx += skippy
-		}
-	}
-
-	if iNdEx > l {
-		return io.ErrUnexpectedEOF
-	}
-	return nil
-}
-func (m *CertificateSpec) Unmarshal(dAtA []byte) error {
-	l := len(dAtA)
-	iNdEx := 0
+			m.Namespace = string(dAtA[iNdEx:postIndex])
+			iNdEx = postIndex
+		case 3:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field ClusterName", wireType)
+			}
+			var stringLen uint64
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				stringLen |= uint64(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			intStringLen := int(stringLen)
+			if intStringLen < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			m.ClusterName = string(dAtA[iNdEx:postIndex])
+			iNdEx = postIndex
+		default:
+			iNdEx = preIndex
+			skippy, err := skipGenerated(dAtA[iNdEx:])
+			if err != nil {
+				return err
+			}
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if (iNdEx + skippy) > l {
+				return io.ErrUnexpectedEOF
+			}
+			iNdEx += skippy
+		}
+	}
+
+	if iNdEx > l {
+		return io.ErrUnexpectedEOF
+	}
+	return nil
+}
+func (m *CertificatePrivateKey) Unmarshal(dAtA []byte) error {
+	l := len(dAtA)
+	iNdEx := 0
+	for iNdEx < l {
+		preIndex := iNdEx
+		var wire uint64
+		for shift := uint(0); ; shift += 7 {
+			if shift >= 64 {
+				return ErrIntOverflowGenerated
+			}
+			if iNdEx >= l {
+				return io.ErrUnexpectedEOF
+			}
+			b := dAtA[iNdEx]
+			iNdEx++
+			wire |= uint64(b&0x7F) << shift
+			if b < 0x80 {
+				break
+			}
+		}
+		fieldNum := int32(wire >> 3)
+		wireType := int(wire & 0x7)
+		if wireType == 4 {
+			return fmt.Errorf("proto: CertificatePrivateKey: wiretype end group for non-group")
+		}
+		if fieldNum <= 0 {
+			return fmt.Errorf("proto: CertificatePrivateKey: illegal tag %d (wire type %d)", fieldNum, wire)
+		}
+		switch fieldNum {
+		case 1:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field Encoding", wireType)
+			}
+			var stringLen uint64
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				stringLen |= uint64(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			intStringLen := int(stringLen)
+			if intStringLen < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			m.Encoding = PrivateKeyEncoding(dAtA[iNdEx:postIndex])
+			iNdEx = postIndex
+		default:
+			iNdEx = preIndex
+			skippy, err := skipGenerated(dAtA[iNdEx:])
+			if err != nil {
+				return err
+			}
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if (iNdEx + skippy) > l {
+				return io.ErrUnexpectedEOF
+			}
+			iNdEx += skippy
+		}
+	}
+
+	if iNdEx > l {
+		return io.ErrUnexpectedEOF
+	}
+	return nil
+}
+func (m *CertificateSpec) Unmarshal(dAtA []byte) error {
+	l := len(dAtA)
+	iNdEx := 0
 	for iNdEx < l {
 		preIndex := iNdEx
 		var wire uint64
@@ -2593,6 +3013,188 @@ func (m *CertificateSpec) Unmarshal(dAtA []byte) error {
 	}
 	return nil
 }
+func (m *ClusterInfo) Unmarshal(dAtA []byte) error {
+	l := len(dAtA)
+	iNdEx := 0
+	for iNdEx < l {
+		preIndex := iNdEx
+		var wire uint64
+		for shift := uint(0); ; shift += 7 {
+			if shift >= 64 {
+				return ErrIntOverflowGenerated
+			}
+			if iNdEx >= l {
+				return io.ErrUnexpectedEOF
+			}
+			b := dAtA[iNdEx]
+			iNdEx++
+			wire |= uint64(b&0x7F) << shift
+			if b < 0x80 {
+				break
+			}
+		}
+		fieldNum := int32(wire >> 3)
+		wireType := int(wire & 0x7)
+		if wireType == 4 {
+			return fmt.Errorf("proto: ClusterInfo: wiretype end group for non-group")
+		}
+		if fieldNum <= 0 {
+			return fmt.Errorf("proto: ClusterInfo: illegal tag %d (wire type %d)", fieldNum, wire)
+		}
+		switch fieldNum {
+		case 1:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType)
+			}
+			var stringLen uint64
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				stringLen |= uint64(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			intStringLen := int(stringLen)
+			if intStringLen < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			m.UID = string(dAtA[iNdEx:postIndex])
+			iNdEx = postIndex
+		case 2:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+			}
+			var stringLen uint64
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				stringLen |= uint64(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			intStringLen := int(stringLen)
+			if intStringLen < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			m.Name = string(dAtA[iNdEx:postIndex])
+			iNdEx = postIndex
+		case 3:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field ClusterManagers", wireType)
+			}
+			var stringLen uint64
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				stringLen |= uint64(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			intStringLen := int(stringLen)
+			if intStringLen < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			m.ClusterManagers = append(m.ClusterManagers, string(dAtA[iNdEx:postIndex]))
+			iNdEx = postIndex
+		case 4:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field CAPI", wireType)
+			}
+			var msglen int
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				msglen |= int(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			if msglen < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			if m.CAPI == nil {
+				m.CAPI = &CAPIClusterInfo{}
+			}
+			if err := m.CAPI.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+				return err
+			}
+			iNdEx = postIndex
+		default:
+			iNdEx = preIndex
+			skippy, err := skipGenerated(dAtA[iNdEx:])
+			if err != nil {
+				return err
+			}
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if (iNdEx + skippy) > l {
+				return io.ErrUnexpectedEOF
+			}
+			iNdEx += skippy
+		}
+	}
+
+	if iNdEx > l {
+		return io.ErrUnexpectedEOF
+	}
+	return nil
+}
 func (m *ClusterMetadata) Unmarshal(dAtA []byte) error {
 	l := len(dAtA)
 	iNdEx := 0
@@ -2750,6 +3352,198 @@ func (m *ClusterMetadata) Unmarshal(dAtA []byte) error {
 			}
 			m.Provider = HostingProvider(dAtA[iNdEx:postIndex])
 			iNdEx = postIndex
+		case 5:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field OwnerID", wireType)
+			}
+			var stringLen uint64
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				stringLen |= uint64(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			intStringLen := int(stringLen)
+			if intStringLen < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			m.OwnerID = string(dAtA[iNdEx:postIndex])
+			iNdEx = postIndex
+		case 6:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field OwnerType", wireType)
+			}
+			var stringLen uint64
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				stringLen |= uint64(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			intStringLen := int(stringLen)
+			if intStringLen < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			m.OwnerType = string(dAtA[iNdEx:postIndex])
+			iNdEx = postIndex
+		case 7:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field APIEndpoint", wireType)
+			}
+			var stringLen uint64
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				stringLen |= uint64(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			intStringLen := int(stringLen)
+			if intStringLen < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			m.APIEndpoint = string(dAtA[iNdEx:postIndex])
+			iNdEx = postIndex
+		case 8:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field CABundle", wireType)
+			}
+			var stringLen uint64
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				stringLen |= uint64(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			intStringLen := int(stringLen)
+			if intStringLen < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			m.CABundle = string(dAtA[iNdEx:postIndex])
+			iNdEx = postIndex
+		case 9:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field ManagerID", wireType)
+			}
+			var stringLen uint64
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				stringLen |= uint64(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			intStringLen := int(stringLen)
+			if intStringLen < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			m.ManagerID = string(dAtA[iNdEx:postIndex])
+			iNdEx = postIndex
+		case 10:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field HubClusterID", wireType)
+			}
+			var stringLen uint64
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				stringLen |= uint64(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			intStringLen := int(stringLen)
+			if intStringLen < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			m.HubClusterID = string(dAtA[iNdEx:postIndex])
+			iNdEx = postIndex
 		default:
 			iNdEx = preIndex
 			skippy, err := skipGenerated(dAtA[iNdEx:])
diff --git a/vendor/kmodules.xyz/client-go/api/v1/generated.proto b/vendor/kmodules.xyz/client-go/api/v1/generated.proto
index d8fc1a44..a6b1e76b 100644
--- a/vendor/kmodules.xyz/client-go/api/v1/generated.proto
+++ b/vendor/kmodules.xyz/client-go/api/v1/generated.proto
@@ -27,6 +27,14 @@ import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
 // Package-wide variables from generator "generated".
 option go_package = "kmodules.xyz/client-go/api/v1";
 
+message CAPIClusterInfo {
+  optional string provider = 1;
+
+  optional string namespace = 2;
+
+  optional string clusterName = 3;
+}
+
 // CertificatePrivateKey contains configuration options for private keys
 // used by the Certificate controller.
 // This allows control of how private keys are rotated.
@@ -63,6 +71,10 @@ message CertificateSpec {
   optional k8s.io.apimachinery.pkg.apis.meta.v1.Duration duration = 5;
 
   // Certificate renew before expiration duration
+  //
+  // Deprecated use `ReconfigureTLS` type OpsRequest instead.
+  //
+  // +deprecated
   // +optional
   optional k8s.io.apimachinery.pkg.apis.meta.v1.Duration renewBefore = 6;
 
@@ -87,6 +99,18 @@ message CertificateSpec {
   optional CertificatePrivateKey privateKey = 11;
 }
 
+// ClusterInfo used in ace-installer
+message ClusterInfo {
+  optional string uid = 1;
+
+  optional string name = 2;
+
+  repeated string clusterManagers = 3;
+
+  // +optional
+  optional CAPIClusterInfo capi = 4;
+}
+
 message ClusterMetadata {
   optional string uid = 1;
 
@@ -95,6 +119,18 @@ message ClusterMetadata {
   optional string displayName = 3;
 
   optional string provider = 4;
+
+  optional string ownerID = 5;
+
+  optional string ownerType = 6;
+
+  optional string apiEndpoint = 7;
+
+  optional string caBundle = 8;
+
+  optional string managerID = 9;
+
+  optional string hubClusterID = 10;
 }
 
 // Condition defines an observation of a object operational state.
diff --git a/vendor/kmodules.xyz/client-go/api/v1/zz_generated.deepcopy.go b/vendor/kmodules.xyz/client-go/api/v1/zz_generated.deepcopy.go
index fd286ac4..dcf3b711 100644
--- a/vendor/kmodules.xyz/client-go/api/v1/zz_generated.deepcopy.go
+++ b/vendor/kmodules.xyz/client-go/api/v1/zz_generated.deepcopy.go
@@ -119,6 +119,80 @@ func (in *CertificateSpec) DeepCopy() *CertificateSpec {
 	return out
 }
 
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ClusterClaimFeatures) DeepCopyInto(out *ClusterClaimFeatures) {
+	*out = *in
+	if in.EnabledFeatures != nil {
+		in, out := &in.EnabledFeatures, &out.EnabledFeatures
+		*out = make([]string, len(*in))
+		copy(*out, *in)
+	}
+	if in.ExternallyManagedFeatures != nil {
+		in, out := &in.ExternallyManagedFeatures, &out.ExternallyManagedFeatures
+		*out = make([]string, len(*in))
+		copy(*out, *in)
+	}
+	if in.DisabledFeatures != nil {
+		in, out := &in.DisabledFeatures, &out.DisabledFeatures
+		*out = make([]string, len(*in))
+		copy(*out, *in)
+	}
+	return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterClaimFeatures.
+func (in *ClusterClaimFeatures) DeepCopy() *ClusterClaimFeatures {
+	if in == nil {
+		return nil
+	}
+	out := new(ClusterClaimFeatures)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ClusterClaimInfo) DeepCopyInto(out *ClusterClaimInfo) {
+	*out = *in
+	in.ClusterMetadata.DeepCopyInto(&out.ClusterMetadata)
+	return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterClaimInfo.
+func (in *ClusterClaimInfo) DeepCopy() *ClusterClaimInfo {
+	if in == nil {
+		return nil
+	}
+	out := new(ClusterClaimInfo)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ClusterInfo) DeepCopyInto(out *ClusterInfo) {
+	*out = *in
+	if in.ClusterManagers != nil {
+		in, out := &in.ClusterManagers, &out.ClusterManagers
+		*out = make([]string, len(*in))
+		copy(*out, *in)
+	}
+	if in.CAPI != nil {
+		in, out := &in.CAPI, &out.CAPI
+		*out = new(CAPIClusterInfo)
+		**out = **in
+	}
+	return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterInfo.
+func (in *ClusterInfo) DeepCopy() *ClusterInfo {
+	if in == nil {
+		return nil
+	}
+	out := new(ClusterInfo)
+	in.DeepCopyInto(out)
+	return out
+}
+
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *ClusterMetadata) DeepCopyInto(out *ClusterMetadata) {
 	*out = *in
diff --git a/vendor/kmodules.xyz/client-go/client/client.go b/vendor/kmodules.xyz/client-go/client/client.go
index e24b7b4c..321ec3ab 100644
--- a/vendor/kmodules.xyz/client-go/client/client.go
+++ b/vendor/kmodules.xyz/client-go/client/client.go
@@ -21,6 +21,8 @@ import (
 	"reflect"
 	"strings"
 
+	"kmodules.xyz/client-go/meta"
+
 	"github.com/pkg/errors"
 	kerr "k8s.io/apimachinery/pkg/api/errors"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -64,11 +66,13 @@ func NewUncachedClient(cfg *rest.Config, funcs ...func(*runtime.Scheme) error) (
 }
 
 type (
-	TransformFunc       func(obj client.Object, createOp bool) client.Object
-	TransformStatusFunc func(obj client.Object) client.Object
+	TransformFunc  func(obj client.Object, createOp bool) client.Object
+	TransformFuncE func(obj client.Object, createOp bool) (client.Object, error)
+	PatchFunc      func(obj client.Object) client.Object
+	PatchFuncE     func(obj client.Object) (client.Object, error)
 )
 
-func CreateOrPatch(ctx context.Context, c client.Client, obj client.Object, transform TransformFunc, opts ...client.PatchOption) (kutil.VerbType, error) {
+func CreateOrPatchE(ctx context.Context, c client.Client, obj client.Object, transform TransformFuncE, opts ...client.PatchOption) (kutil.VerbType, error) {
 	gvk, err := apiutil.GVKForObject(obj, c.Scheme())
 	if err != nil {
 		return kutil.VerbUnchanged, errors.Wrapf(err, "failed to get GVK for object %T", obj)
@@ -89,8 +93,12 @@ func CreateOrPatch(ctx context.Context, c client.Client, obj client.Object, tran
 				createOpts = append(createOpts, opt)
 			}
 		}
-		mod := transform(obj.DeepCopyObject().(client.Object), true)
-		err := c.Create(ctx, mod, createOpts...)
+		mod, err := transform(obj.DeepCopyObject().(client.Object), true)
+		if err != nil {
+			return kutil.VerbUnchanged, err
+		}
+		mod.SetResourceVersion("")
+		err = c.Create(ctx, mod, createOpts...)
 		if err != nil {
 			return kutil.VerbUnchanged, err
 		}
@@ -109,14 +117,80 @@ func CreateOrPatch(ctx context.Context, c client.Client, obj client.Object, tran
 	} else {
 		patch = client.MergeFrom(cur)
 	}
-	mod := transform(cur.DeepCopyObject().(client.Object), false)
+	mod, err := transform(cur.DeepCopyObject().(client.Object), false)
+	if err != nil {
+		return kutil.VerbUnchanged, err
+	}
 	err = c.Patch(ctx, mod, patch, opts...)
 	if err != nil {
 		return kutil.VerbUnchanged, err
 	}
 
+	vt := kutil.VerbUnchanged
+	if mod.GetGeneration() > 0 {
+		if cur.GetGeneration() != mod.GetGeneration() {
+			vt = kutil.VerbPatched
+		}
+	} else {
+		// Secret, ServiceAccount etc resources do not use metadata.generation
+		if meta.ObjectHash(cur) != meta.ObjectHash(mod) {
+			vt = kutil.VerbPatched
+		}
+	}
 	assign(obj, mod)
-	return kutil.VerbPatched, nil
+	return vt, nil
+}
+
+func CreateOrPatch(ctx context.Context, c client.Client, obj client.Object, transform TransformFunc, opts ...client.PatchOption) (kutil.VerbType, error) {
+	return CreateOrPatchE(ctx, c, obj, func(obj client.Object, createOp bool) (client.Object, error) {
+		transform(obj, createOp)
+		return obj, nil
+	}, opts...)
+}
+
+func PatchE(ctx context.Context, c client.Client, obj client.Object, transform PatchFuncE, opts ...client.PatchOption) (kutil.VerbType, error) {
+	gvk, err := apiutil.GVKForObject(obj, c.Scheme())
+	if err != nil {
+		return kutil.VerbUnchanged, errors.Wrapf(err, "failed to get GVK for object %T", obj)
+	}
+
+	_, unstructuredObj := obj.(*unstructured.Unstructured)
+
+	var patch client.Patch
+	if isOfficialTypes(gvk.Group) && !unstructuredObj {
+		patch = client.StrategicMergeFrom(obj)
+	} else {
+		patch = client.MergeFrom(obj)
+	}
+	mod, err := transform(obj.DeepCopyObject().(client.Object))
+	if err != nil {
+		return kutil.VerbUnchanged, err
+	}
+	err = c.Patch(ctx, mod, patch, opts...)
+	if err != nil {
+		return kutil.VerbUnchanged, err
+	}
+
+	vt := kutil.VerbUnchanged
+	if mod.GetGeneration() > 0 {
+		if obj.GetGeneration() != mod.GetGeneration() {
+			vt = kutil.VerbPatched
+		}
+	} else {
+		// Secret, ServiceAccount etc resources do not use metadata.generation
+		if meta.ObjectHash(obj) != meta.ObjectHash(mod) {
+			vt = kutil.VerbPatched
+		}
+	}
+	assign(obj, mod)
+	return vt, nil
+}
+
+func Patch(ctx context.Context, c client.Client, obj client.Object, transform PatchFunc, opts ...client.PatchOption) (kutil.VerbType, error) {
+	return PatchE(ctx, c, obj, func(obj client.Object) (client.Object, error) {
+		transform(obj)
+		return obj, nil
+	}, opts...)
 }
 
 func assign(target, src any) {
@@ -127,7 +201,7 @@ func assign(target, src any) {
 	reflect.ValueOf(target).Elem().Set(srcValue)
 }
 
-func PatchStatus(ctx context.Context, c client.Client, obj client.Object, transform TransformStatusFunc, opts ...client.SubResourcePatchOption) (kutil.VerbType, error) {
+func PatchStatusE(ctx context.Context, c client.Client, obj client.Object, transform PatchFuncE, opts ...client.SubResourcePatchOption) (kutil.VerbType, error) {
 	cur := obj.DeepCopyObject().(client.Object)
 	key := types.NamespacedName{
 		Namespace: cur.GetNamespace(),
@@ -144,7 +218,10 @@ func PatchStatus(ctx context.Context, c client.Client, obj client.Object, transf
 	//   - application/merge-patch+json,
 	//   - application/apply-patch+yaml
 	patch := client.MergeFrom(cur)
-	mod := transform(cur.DeepCopyObject().(client.Object))
+	mod, err := transform(cur.DeepCopyObject().(client.Object))
+	if err != nil {
+		return kutil.VerbUnchanged, err
+	}
 	err = c.Status().Patch(ctx, mod, patch, opts...)
 	if err != nil {
 		return kutil.VerbUnchanged, err
@@ -153,6 +230,13 @@ func PatchStatus(ctx context.Context, c client.Client, obj client.Object, transf
 	return kutil.VerbPatched, nil
 }
 
+func PatchStatus(ctx context.Context, c client.Client, obj client.Object, transform PatchFunc, opts ...client.SubResourcePatchOption) (kutil.VerbType, error) {
+	return PatchStatusE(ctx, c, obj, func(obj client.Object) (client.Object, error) {
+		transform(obj)
+		return obj, nil
+	}, opts...)
+}
+
 func isOfficialTypes(group string) bool {
 	return !strings.ContainsRune(group, '.')
 }
diff --git a/vendor/kmodules.xyz/client-go/client/delegated.go b/vendor/kmodules.xyz/client-go/client/delegated.go
index fd36791a..6a4c4eca 100644
--- a/vendor/kmodules.xyz/client-go/client/delegated.go
+++ b/vendor/kmodules.xyz/client-go/client/delegated.go
@@ -18,6 +18,7 @@ package client
 
 import (
 	"context"
+	"net/http"
 	"strings"
 
 	apiutil2 "kmodules.xyz/client-go/client/apiutil"
@@ -26,7 +27,9 @@ import (
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/apimachinery/pkg/runtime"
 	"k8s.io/apimachinery/pkg/runtime/schema"
+	"k8s.io/apiserver/pkg/authentication/user"
 	restclient "k8s.io/client-go/rest"
+	"k8s.io/client-go/transport"
 	"sigs.k8s.io/controller-runtime/pkg/client"
 	"sigs.k8s.io/controller-runtime/pkg/client/apiutil"
 )
@@ -36,6 +39,9 @@ import (
 
 // NewDelegatingClientInput encapsulates the input parameters to create a new delegating client.
 type NewDelegatingClientInput struct {
+	config  *restclient.Config
+	options client.Options
+
 	CacheReader       client.Reader
 	Client            client.Client
 	UncachedObjects   []client.Object
@@ -58,9 +64,11 @@ func NewDelegatingClient(in NewDelegatingClientInput) (client.Client, error) {
 		uncachedGVKs[gvk] = struct{}{}
 	}
 
-	return &delegatingClient{
-		scheme: in.Client.Scheme(),
-		mapper: in.Client.RESTMapper(),
+	return &DelegatingClient{
+		config:  in.config,
+		options: in.options,
+		scheme:  in.Client.Scheme(),
+		mapper:  in.Client.RESTMapper(),
 		Reader: &delegatingReader{
 			CacheReader:       in.CacheReader,
 			ClientReader:      in.Client,
@@ -75,7 +83,7 @@ func NewDelegatingClient(in NewDelegatingClientInput) (client.Client, error) {
 	}, nil
 }
 
-type delegatingClient struct {
+type DelegatingClient struct {
 	client.Reader
 	client.Writer
 	client.StatusClient
@@ -83,25 +91,57 @@ type delegatingClient struct {
 
 	scheme *runtime.Scheme
 	mapper meta.RESTMapper
+
+	config  *restclient.Config
+	options client.Options
+}
+
+func (d *DelegatingClient) RestConfig() *restclient.Config {
+	return d.config
+}
+
+func (d *DelegatingClient) Impersonate(u user.Info) (*restclient.Config, client.Client, error) {
+	config := restclient.CopyConfig(d.config)
+	config.Impersonate = restclient.ImpersonationConfig{
+		UserName: u.GetName(),
+		UID:      u.GetUID(),
+		Groups:   u.GetGroups(),
+		Extra:    u.GetExtra(),
+	}
+
+	// share the transport between all clients
+	optionsShallowCopy := d.options
+	if d.options.HTTPClient != nil {
+		optionsShallowCopy.HTTPClient = &http.Client{
+			Transport: transport.NewImpersonatingRoundTripper(transport.ImpersonationConfig{
+				UserName: u.GetName(),
+				UID:      u.GetUID(),
+				Groups:   u.GetGroups(),
+				Extra:    u.GetExtra(),
+			}, d.options.HTTPClient.Transport),
+		}
+	}
+	cc, err := NewClient(config, optionsShallowCopy)
+	return config, cc, err
 }
 
 // GroupVersionKindFor returns the GroupVersionKind for the given object.
-func (d *delegatingClient) GroupVersionKindFor(obj runtime.Object) (schema.GroupVersionKind, error) {
+func (d *DelegatingClient) GroupVersionKindFor(obj runtime.Object) (schema.GroupVersionKind, error) {
 	return apiutil.GVKForObject(obj, d.scheme)
 }
 
 // IsObjectNamespaced returns true if the GroupVersionKind of the object is namespaced.
-func (d *delegatingClient) IsObjectNamespaced(obj runtime.Object) (bool, error) {
+func (d *DelegatingClient) IsObjectNamespaced(obj runtime.Object) (bool, error) {
 	return apiutil.IsObjectNamespaced(obj, d.scheme, d.mapper)
 }
 
 // Scheme returns the scheme this client is using.
-func (d *delegatingClient) Scheme() *runtime.Scheme {
+func (d *DelegatingClient) Scheme() *runtime.Scheme {
 	return d.scheme
 }
 
 // RESTMapper returns the rest mapper this client is using.
-func (d *delegatingClient) RESTMapper() meta.RESTMapper {
+func (d *DelegatingClient) RESTMapper() meta.RESTMapper {
 	return d.mapper
 }
 
@@ -167,7 +207,7 @@ func (d *delegatingReader) List(ctx context.Context, list client.ObjectList, opt
 	return d.CacheReader.List(ctx, list, opts...)
 }
 
-func (d *delegatingClient) SubResource(subResource string) client.SubResourceClient {
+func (d *DelegatingClient) SubResource(subResource string) client.SubResourceClient {
 	return d.SubResourceClientConstructor.SubResource(subResource)
 }
 
@@ -181,6 +221,8 @@ func NewClient(config *restclient.Config, options client.Options) (client.Client
 		return nil, err
 	}
 	co := NewDelegatingClientInput{
+		config:   config,
+		options:  options,
 		Client:   c,
 		Cachable: cachable,
 	}
diff --git a/vendor/kmodules.xyz/client-go/cluster/ace.go b/vendor/kmodules.xyz/client-go/cluster/ace.go
index 678847fc..a1a149f1 100644
--- a/vendor/kmodules.xyz/client-go/cluster/ace.go
+++ b/vendor/kmodules.xyz/client-go/cluster/ace.go
@@ -24,7 +24,7 @@ import (
 	"sigs.k8s.io/controller-runtime/pkg/client"
 )
 
-func IsACEManaged(kc client.Client) bool {
+func IsACEManaged(kc client.Reader) bool {
 	var list unstructured.UnstructuredList
 	list.SetAPIVersion("apps/v1")
 	list.SetKind("Deployment")
diff --git a/vendor/kmodules.xyz/client-go/cluster/detector.go b/vendor/kmodules.xyz/client-go/cluster/detector.go
index b7ca7231..dbea6499 100644
--- a/vendor/kmodules.xyz/client-go/cluster/detector.go
+++ b/vendor/kmodules.xyz/client-go/cluster/detector.go
@@ -87,9 +87,9 @@ func DetectProvider(cfg *rest.Config, mapper meta.RESTMapper) (kmapi.HostingProv
 
 	for _, host := range crt.DNSNames {
 		if strings.HasSuffix(host, eksDomain) {
-			return kmapi.HostingProviderAWS, nil
+			return kmapi.HostingProviderEKS, nil
 		} else if strings.HasSuffix(host, aksDomain) {
-			return kmapi.HostingProviderAzure, nil
+			return kmapi.HostingProviderAKS, nil
 		} else if strings.HasSuffix(host, doDomain) {
 			return kmapi.HostingProviderDigitalOcean, nil
 		} else if strings.HasSuffix(host, exoscaleDomain) {
@@ -108,7 +108,7 @@ func DetectProvider(cfg *rest.Config, mapper meta.RESTMapper) (kmapi.HostingProv
 		Group: "networking.gke.io",
 		Kind:  "Network",
 	}); err == nil {
-		return kmapi.HostingProviderGoogleCloud, nil
+		return kmapi.HostingProviderGKE, nil
 	}
 
 	return "", nil
diff --git a/vendor/kmodules.xyz/client-go/cluster/lib.go b/vendor/kmodules.xyz/client-go/cluster/lib.go
index c1a9cedd..674d9216 100644
--- a/vendor/kmodules.xyz/client-go/cluster/lib.go
+++ b/vendor/kmodules.xyz/client-go/cluster/lib.go
@@ -21,7 +21,6 @@ import (
 	"crypto/hmac"
 	"crypto/sha256"
 	"encoding/json"
-	"errors"
 	"fmt"
 
 	kmapi "kmodules.xyz/client-go/api/v1"
@@ -34,6 +33,7 @@ import (
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/apimachinery/pkg/runtime/schema"
 	"k8s.io/apimachinery/pkg/types"
+	"k8s.io/klog/v2"
 	"sigs.k8s.io/controller-runtime/pkg/client"
 )
 
@@ -157,7 +157,7 @@ func UpsertClusterMetadata(kc client.Client, md *kmapi.ClusterMetadata) error {
 	return err
 }
 
-func DetectCAPICluster(kc client.Client) (*kmapi.CAPIClusterInfo, error) {
+func DetectCAPICluster(kc client.Reader) (*kmapi.CAPIClusterInfo, error) {
 	var list unstructured.UnstructuredList
 	list.SetGroupVersionKind(schema.GroupVersionKind{
 		Group:   "cluster.x-k8s.io",
@@ -170,7 +170,8 @@ func DetectCAPICluster(kc client.Client) (*kmapi.CAPIClusterInfo, error) {
 	} else if err != nil {
 		return nil, err
 	} else if len(list.Items) > 1 {
-		return nil, errors.New("multiple CAPI cluster object found")
+		klog.Warningln("multiple CAPI cluster object found")
+		return nil, nil
 	}
 
 	obj := list.Items[0].UnstructuredContent()
@@ -211,14 +212,16 @@ func getCAPIValues(values map[string]any) (string, string, string, error) {
 	return capiProvider, clusterName, ns, nil
 }
 
-func getProviderName(kind string) string {
+func getProviderName(kind string) kmapi.CAPIProvider {
 	switch kind {
 	case "AWSManagedCluster", "AWSManagedControlPlane":
-		return "capa"
+		return kmapi.CAPIProviderCAPA
 	case "AzureManagedCluster":
-		return "capz"
+		return kmapi.CAPIProviderCAPZ
 	case "GCPManagedCluster":
-		return "capg"
+		return kmapi.CAPIProviderCAPG
+	case "HetznerCluster":
+		return kmapi.CAPIProviderCAPH
 	}
 	return ""
 }
@@ -236,7 +239,7 @@ func DetectClusterManager(kc client.Client, mappers ...meta.RESTMapper) kmapi.Cl
 	if IsOpenClusterHub(mapper) {
 		result |= kmapi.ClusterManagerOCMHub
 	}
-	if IsOpenClusterSpoke(mapper) {
+	if IsOpenClusterSpoke(kc) {
 		result |= kmapi.ClusterManagerOCMSpoke
 	}
 	if IsOpenClusterMulticlusterControlplane(mapper) {
diff --git a/vendor/kmodules.xyz/client-go/cluster/ocm.go b/vendor/kmodules.xyz/client-go/cluster/ocm.go
index 71e6f088..808eaabe 100644
--- a/vendor/kmodules.xyz/client-go/cluster/ocm.go
+++ b/vendor/kmodules.xyz/client-go/cluster/ocm.go
@@ -17,8 +17,12 @@ limitations under the License.
 package cluster
 
 import (
+	"context"
+
 	"k8s.io/apimachinery/pkg/api/meta"
+	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/apimachinery/pkg/runtime/schema"
+	"sigs.k8s.io/controller-runtime/pkg/client"
 )
 
 func IsOpenClusterHub(mapper meta.RESTMapper) bool {
@@ -31,14 +35,12 @@ func IsOpenClusterHub(mapper meta.RESTMapper) bool {
 	return false
 }
 
-func IsOpenClusterSpoke(mapper meta.RESTMapper) bool {
-	if _, err := mapper.RESTMappings(schema.GroupKind{
-		Group: "work.open-cluster-management.io",
-		Kind:  "AppliedManifestWork",
-	}); err == nil {
-		return true
-	}
-	return false
+func IsOpenClusterSpoke(kc client.Reader) bool {
+	var list unstructured.UnstructuredList
+	list.SetAPIVersion("operator.open-cluster-management.io/v1")
+	list.SetKind("Klusterlet")
+	err := kc.List(context.TODO(), &list)
+	return err == nil && len(list.Items) > 0
 }
 
 func IsOpenClusterMulticlusterControlplane(mapper meta.RESTMapper) bool {
diff --git a/vendor/kmodules.xyz/client-go/cluster/rancher.go b/vendor/kmodules.xyz/client-go/cluster/rancher.go
index df2a7e69..bea95e1f 100644
--- a/vendor/kmodules.xyz/client-go/cluster/rancher.go
+++ b/vendor/kmodules.xyz/client-go/cluster/rancher.go
@@ -18,12 +18,19 @@ package cluster
 
 import (
 	"context"
+	"net/url"
 	"sort"
 
+	"github.com/rancher/norman/clientbase"
+	rancher "github.com/rancher/rancher/pkg/client/generated/management/v3"
 	core "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/api/meta"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/runtime/schema"
+	"k8s.io/client-go/discovery/cached/memory"
+	"k8s.io/client-go/kubernetes"
+	"k8s.io/client-go/rest"
+	"k8s.io/client-go/restmapper"
 	"sigs.k8s.io/controller-runtime/pkg/client"
 )
 
@@ -32,8 +39,11 @@ const (
 	LabelKeyRancherHelmProjectId       = "helm.cattle.io/projectId"
 	LabelKeyRancherHelmProjectOperated = "helm.cattle.io/helm-project-operated"
 
-	NamespaceRancherMonitoring  = "cattle-monitoring-system"
-	PrometheusRancherMonitoring = "rancher-monitoring-prometheus"
+	FakeRancherProjectId = "p-fake"
+
+	RancherMonitoringNamespace    = "cattle-monitoring-system"
+	RancherMonitoringPrometheus   = "rancher-monitoring-prometheus"
+	RancherMonitoringAlertmanager = "rancher-monitoring-alertmanager"
 )
 
 func IsRancherManaged(mapper meta.RESTMapper) bool {
@@ -46,6 +56,37 @@ func IsRancherManaged(mapper meta.RESTMapper) bool {
 	return false
 }
 
+func DetectRancherProxy(cfg *rest.Config) (*clientbase.ClientOpts, bool, error) {
+	err := rest.LoadTLSFiles(cfg)
+	if err != nil {
+		return nil, false, err
+	}
+
+	kc, err := kubernetes.NewForConfig(cfg)
+	if err != nil {
+		return nil, false, err
+	}
+
+	mapper := restmapper.NewDeferredDiscoveryRESTMapper(memory.NewMemCacheClient(kc))
+	if IsRancherManaged(mapper) {
+		u, err := url.Parse(cfg.Host)
+		if err != nil {
+			return nil, false, err
+		}
+		u.Path = "/v3"
+
+		opts := clientbase.ClientOpts{
+			URL:      u.String(),
+			TokenKey: cfg.BearerToken,
+			CACerts:  string(cfg.CAData),
+			// Insecure:   true,
+		}
+		_, err = rancher.NewClient(&opts)
+		return &opts, err == nil, err
+	}
+	return nil, false, nil
+}
+
 func IsInDefaultProject(kc client.Client, nsName string) (bool, error) {
 	return isInProject(kc, nsName, metav1.NamespaceDefault)
 }
@@ -88,15 +129,15 @@ func isInProject(kc client.Client, nsName, seedNS string) (bool, error) {
 	return projectId == seedProjectId, nil
 }
 
-func GetDefaultProjectId(kc client.Client) (string, bool, error) {
+func GetDefaultProjectId(kc client.Reader) (string, bool, error) {
 	return GetProjectId(kc, metav1.NamespaceDefault)
 }
 
-func GetSystemProjectId(kc client.Client) (string, bool, error) {
+func GetSystemProjectId(kc client.Reader) (string, bool, error) {
 	return GetProjectId(kc, metav1.NamespaceSystem)
 }
 
-func GetProjectId(kc client.Client, nsName string) (string, bool, error) {
+func GetProjectId(kc client.Reader, nsName string) (string, bool, error) {
 	var ns core.Namespace
 	err := kc.Get(context.TODO(), client.ObjectKey{Name: nsName}, &ns)
 	if err != nil {
diff --git a/vendor/kmodules.xyz/client-go/cluster/vcluster.go b/vendor/kmodules.xyz/client-go/cluster/vcluster.go
index 0e132403..1348eff3 100644
--- a/vendor/kmodules.xyz/client-go/cluster/vcluster.go
+++ b/vendor/kmodules.xyz/client-go/cluster/vcluster.go
@@ -24,7 +24,7 @@ import (
 	"sigs.k8s.io/controller-runtime/pkg/client"
 )
 
-func IsVirtualCluster(kc client.Client) (bool, error) {
+func IsVirtualCluster(kc client.Reader) (bool, error) {
 	var list core.NodeList
 	err := kc.List(context.TODO(), &list)
 	if err != nil {
@@ -44,7 +44,7 @@ func IsVirtualCluster(kc client.Client) (bool, error) {
 	return false, nil
 }
 
-func MustIsVirtualCluster(kc client.Client) bool {
+func MustIsVirtualCluster(kc client.Reader) bool {
 	ok, _ := IsVirtualCluster(kc)
 	return ok
 }
diff --git a/vendor/kmodules.xyz/client-go/meta/hash.go b/vendor/kmodules.xyz/client-go/meta/hash.go
index 6fc87ae3..0e7778f4 100644
--- a/vendor/kmodules.xyz/client-go/meta/hash.go
+++ b/vendor/kmodules.xyz/client-go/meta/hash.go
@@ -33,7 +33,11 @@ func ResourceHash(obj metav1.Object) string {
 	h := xxh3.New()
 	_, _ = h.WriteString(string(obj.GetUID()))
 	_, _ = h.WriteString(",")
-	_, _ = h.WriteString(strconv.FormatInt(obj.GetGeneration(), 10))
+	if obj.GetGeneration() > 0 {
+		_, _ = h.WriteString(strconv.FormatInt(obj.GetGeneration(), 10))
+	} else {
+		_, _ = h.WriteString(ObjectHash(obj))
+	}
 	return strconv.FormatUint(h.Sum64(), 10)
 }
 
@@ -57,11 +61,20 @@ func ObjectHash(in metav1.Object) string {
 		obj["annotations"] = data
 	}
 
-	st := structs.New(in)
-	for _, field := range st.Fields() {
-		fieldName := field.Name()
-		if fieldName != "ObjectMeta" && fieldName != "TypeMeta" && fieldName != "Status" {
-			obj[fieldName] = field.Value()
+	u, isUnstructured := in.(*unstructured.Unstructured)
+	if isUnstructured {
+		for fieldName, v := range u.UnstructuredContent() {
+			if fieldName != "metadata" && fieldName != "apiVersion" && fieldName != "kind" && fieldName != "status" {
+				obj[fieldName] = v
+			}
+		}
+	} else {
+		st := structs.New(in)
+		for _, field := range st.Fields() {
+			fieldName := field.Name()
+			if fieldName != "ObjectMeta" && fieldName != "TypeMeta" && fieldName != "Status" {
+				obj[fieldName] = field.Value()
+			}
 		}
 	}
 
diff --git a/vendor/kmodules.xyz/offshoot-api/api/v1/gateway_types.go b/vendor/kmodules.xyz/offshoot-api/api/v1/gateway_types.go
new file mode 100644
index 00000000..4ade7f6c
--- /dev/null
+++ b/vendor/kmodules.xyz/offshoot-api/api/v1/gateway_types.go
@@ -0,0 +1,78 @@
+/*
+Copyright AppsCode Inc. and Contributors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package v1
+
+import (
+	core "k8s.io/api/core/v1"
+)
+
+type Gateway struct {
+	Name      string `json:"name"`
+	Namespace string `json:"namespace"`
+	// +optional
+	IP string `json:"ip,omitempty"`
+	// +optional
+	Hostname string `json:"hostname,omitempty"`
+	// Services is an optional configuration for services used to expose database
+	// +optional
+	Services []NamedServiceStatus `json:"services,omitempty"`
+	// UI is an optional list of database web uis
+	// +optional
+	UI []NamedURL `json:"ui,omitempty"`
+}
+
+type NamedServiceStatus struct {
+	// Alias represents the identifier of the service.
+	Alias string `json:"alias"`
+
+	Ports []GatewayPort `json:"ports"`
+}
+
+type NamedURL struct {
+	// Alias represents the identifier of the service.
+	// This should match the db ui chart name
+	Alias string `json:"alias"`
+
+	// URL of the database ui
+	URL string `json:"url"`
+
+	Port GatewayPort `json:"port"`
+
+	// HelmRelease is the name of the helm release used to deploy this ui
+	// The name format is typically <alias>-<db-name>
+	// +optional
+	HelmRelease *core.LocalObjectReference `json:"helmRelease,omitempty"`
+}
+
+// GatewayPort contains information on Gateway service's port.
+type GatewayPort struct {
+	// The name of this port within the gateway service.
+	// +optional
+	Name string `json:"name,omitempty"`
+
+	// The port that will be exposed by the gateway service.
+	Port int32 `json:"port"`
+
+	// Number of the port to access the backend service.
+	// +optional
+	BackendServicePort int32 `json:"backendServicePort,omitempty"`
+
+	// The port on each node on which this gateway service is exposed when type is
+	// NodePort or LoadBalancer.
+	// +optional
+	NodePort int32 `json:"nodePort,omitempty"`
+}
diff --git a/vendor/kmodules.xyz/offshoot-api/api/v1/openapi_generated.go b/vendor/kmodules.xyz/offshoot-api/api/v1/openapi_generated.go
index d69c46ef..522a3a64 100644
--- a/vendor/kmodules.xyz/offshoot-api/api/v1/openapi_generated.go
+++ b/vendor/kmodules.xyz/offshoot-api/api/v1/openapi_generated.go
@@ -32,8 +32,11 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
 	return map[string]common.OpenAPIDefinition{
 		"kmodules.xyz/offshoot-api/api/v1.ContainerRuntimeSettings":      schema_kmodulesxyz_offshoot_api_api_v1_ContainerRuntimeSettings(ref),
 		"kmodules.xyz/offshoot-api/api/v1.EphemeralVolumeSource":         schema_kmodulesxyz_offshoot_api_api_v1_EphemeralVolumeSource(ref),
+		"kmodules.xyz/offshoot-api/api/v1.Gateway":                       schema_kmodulesxyz_offshoot_api_api_v1_Gateway(ref),
 		"kmodules.xyz/offshoot-api/api/v1.GatewayPort":                   schema_kmodulesxyz_offshoot_api_api_v1_GatewayPort(ref),
 		"kmodules.xyz/offshoot-api/api/v1.IONiceSettings":                schema_kmodulesxyz_offshoot_api_api_v1_IONiceSettings(ref),
+		"kmodules.xyz/offshoot-api/api/v1.NamedServiceStatus":            schema_kmodulesxyz_offshoot_api_api_v1_NamedServiceStatus(ref),
+		"kmodules.xyz/offshoot-api/api/v1.NamedURL":                      schema_kmodulesxyz_offshoot_api_api_v1_NamedURL(ref),
 		"kmodules.xyz/offshoot-api/api/v1.NiceSettings":                  schema_kmodulesxyz_offshoot_api_api_v1_NiceSettings(ref),
 		"kmodules.xyz/offshoot-api/api/v1.ObjectMeta":                    schema_kmodulesxyz_offshoot_api_api_v1_ObjectMeta(ref),
 		"kmodules.xyz/offshoot-api/api/v1.PartialObjectMeta":             schema_kmodulesxyz_offshoot_api_api_v1_PartialObjectMeta(ref),
@@ -163,6 +166,75 @@ func schema_kmodulesxyz_offshoot_api_api_v1_EphemeralVolumeSource(ref common.Ref
 	}
 }
 
+func schema_kmodulesxyz_offshoot_api_api_v1_Gateway(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"name": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"namespace": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"ip": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
+					"hostname": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
+					"services": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Services is an optional configuration for services used to expose database",
+							Type:        []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: map[string]interface{}{},
+										Ref:     ref("kmodules.xyz/offshoot-api/api/v1.NamedServiceStatus"),
+									},
+								},
+							},
+						},
+					},
+					"ui": {
+						SchemaProps: spec.SchemaProps{
+							Description: "UI is an optional list of database web uis",
+							Type:        []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: map[string]interface{}{},
+										Ref:     ref("kmodules.xyz/offshoot-api/api/v1.NamedURL"),
+									},
+								},
+							},
+						},
+					},
+				},
+				Required: []string{"name", "namespace"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/offshoot-api/api/v1.NamedServiceStatus", "kmodules.xyz/offshoot-api/api/v1.NamedURL"},
+	}
+}
+
 func schema_kmodulesxyz_offshoot_api_api_v1_GatewayPort(ref common.ReferenceCallback) common.OpenAPIDefinition {
 	return common.OpenAPIDefinition{
 		Schema: spec.Schema{
@@ -231,6 +303,85 @@ func schema_kmodulesxyz_offshoot_api_api_v1_IONiceSettings(ref common.ReferenceC
 	}
 }
 
+func schema_kmodulesxyz_offshoot_api_api_v1_NamedServiceStatus(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"alias": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Alias represents the identifier of the service.",
+							Default:     "",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"ports": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: map[string]interface{}{},
+										Ref:     ref("kmodules.xyz/offshoot-api/api/v1.GatewayPort"),
+									},
+								},
+							},
+						},
+					},
+				},
+				Required: []string{"alias", "ports"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/offshoot-api/api/v1.GatewayPort"},
+	}
+}
+
+func schema_kmodulesxyz_offshoot_api_api_v1_NamedURL(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"alias": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Alias represents the identifier of the service. This should match the db ui chart name",
+							Default:     "",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"url": {
+						SchemaProps: spec.SchemaProps{
+							Description: "URL of the database ui",
+							Default:     "",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"port": {
+						SchemaProps: spec.SchemaProps{
+							Default: map[string]interface{}{},
+							Ref:     ref("kmodules.xyz/offshoot-api/api/v1.GatewayPort"),
+						},
+					},
+					"helmRelease": {
+						SchemaProps: spec.SchemaProps{
+							Description: "HelmRelease is the name of the helm release used to deploy this ui The name format is typically <alias>-<db-name>",
+							Ref:         ref("k8s.io/api/core/v1.LocalObjectReference"),
+						},
+					},
+				},
+				Required: []string{"alias", "url", "port"},
+			},
+		},
+		Dependencies: []string{
+			"k8s.io/api/core/v1.LocalObjectReference", "kmodules.xyz/offshoot-api/api/v1.GatewayPort"},
+	}
+}
+
 func schema_kmodulesxyz_offshoot_api_api_v1_NiceSettings(ref common.ReferenceCallback) common.OpenAPIDefinition {
 	return common.OpenAPIDefinition{
 		Schema: spec.Schema{
diff --git a/vendor/kmodules.xyz/offshoot-api/api/v1/types.go b/vendor/kmodules.xyz/offshoot-api/api/v1/types.go
index 979f8510..6e52f939 100644
--- a/vendor/kmodules.xyz/offshoot-api/api/v1/types.go
+++ b/vendor/kmodules.xyz/offshoot-api/api/v1/types.go
@@ -392,25 +392,6 @@ type ServicePort struct {
 	NodePort int32 `json:"nodePort,omitempty"`
 }
 
-// GatewayPort contains information on Gateway service's port.
-type GatewayPort struct {
-	// The name of this port within the gateway service.
-	// +optional
-	Name string `json:"name,omitempty"`
-
-	// The port that will be exposed by the gateway service.
-	Port int32 `json:"port"`
-
-	// Number of the port to access the backend service.
-	// +optional
-	BackendServicePort int32 `json:"backendServicePort,omitempty"`
-
-	// The port on each node on which this gateway service is exposed when type is
-	// NodePort or LoadBalancer.
-	// +optional
-	NodePort int32 `json:"nodePort,omitempty"`
-}
-
 // Beware of MergeServicePorts
 // ref: https://github.com/kmodules/client-go/blob/03dac1aea5084354127990a10d0b0e7529460dd5/core/v1/service.go#L103-L136
 func PatchServicePorts(cur []core.ServicePort, desired []ServicePort) []core.ServicePort {
diff --git a/vendor/kmodules.xyz/offshoot-api/api/v1/zz_generated.deepcopy.go b/vendor/kmodules.xyz/offshoot-api/api/v1/zz_generated.deepcopy.go
index 3889daa8..747da2f6 100644
--- a/vendor/kmodules.xyz/offshoot-api/api/v1/zz_generated.deepcopy.go
+++ b/vendor/kmodules.xyz/offshoot-api/api/v1/zz_generated.deepcopy.go
@@ -108,6 +108,36 @@ func (in *EphemeralVolumeSource) DeepCopy() *EphemeralVolumeSource {
 	return out
 }
 
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *Gateway) DeepCopyInto(out *Gateway) {
+	*out = *in
+	if in.Services != nil {
+		in, out := &in.Services, &out.Services
+		*out = make([]NamedServiceStatus, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+	if in.UI != nil {
+		in, out := &in.UI, &out.UI
+		*out = make([]NamedURL, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+	return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Gateway.
+func (in *Gateway) DeepCopy() *Gateway {
+	if in == nil {
+		return nil
+	}
+	out := new(Gateway)
+	in.DeepCopyInto(out)
+	return out
+}
+
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *GatewayPort) DeepCopyInto(out *GatewayPort) {
 	*out = *in
@@ -150,6 +180,49 @@ func (in *IONiceSettings) DeepCopy() *IONiceSettings {
 	return out
 }
 
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *NamedServiceStatus) DeepCopyInto(out *NamedServiceStatus) {
+	*out = *in
+	if in.Ports != nil {
+		in, out := &in.Ports, &out.Ports
+		*out = make([]GatewayPort, len(*in))
+		copy(*out, *in)
+	}
+	return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamedServiceStatus.
+func (in *NamedServiceStatus) DeepCopy() *NamedServiceStatus {
+	if in == nil {
+		return nil
+	}
+	out := new(NamedServiceStatus)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *NamedURL) DeepCopyInto(out *NamedURL) {
+	*out = *in
+	out.Port = in.Port
+	if in.HelmRelease != nil {
+		in, out := &in.HelmRelease, &out.HelmRelease
+		*out = new(corev1.LocalObjectReference)
+		**out = **in
+	}
+	return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamedURL.
+func (in *NamedURL) DeepCopy() *NamedURL {
+	if in == nil {
+		return nil
+	}
+	out := new(NamedURL)
+	in.DeepCopyInto(out)
+	return out
+}
+
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *NiceSettings) DeepCopyInto(out *NiceSettings) {
 	*out = *in
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 47ff4640..844b50ee 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -40,6 +40,9 @@ github.com/fatih/structs
 # github.com/fsnotify/fsnotify v1.7.0
 ## explicit; go 1.17
 github.com/fsnotify/fsnotify
+# github.com/ghodss/yaml v1.0.0
+## explicit
+github.com/ghodss/yaml
 # github.com/go-logr/logr v1.4.2
 ## explicit; go 1.18
 github.com/go-logr/logr
@@ -94,6 +97,9 @@ github.com/google/gofuzz/bytesource
 # github.com/google/uuid v1.6.0
 ## explicit
 github.com/google/uuid
+# github.com/gorilla/websocket v1.5.1
+## explicit; go 1.20
+github.com/gorilla/websocket
 # github.com/imdario/mergo v0.3.16 => github.com/imdario/mergo v0.3.6
 ## explicit
 github.com/imdario/mergo
@@ -163,11 +169,29 @@ github.com/prometheus/common/model
 github.com/prometheus/procfs
 github.com/prometheus/procfs/internal/fs
 github.com/prometheus/procfs/internal/util
+# github.com/rancher/norman v0.0.0-20240708202514-a0127673d1b9
+## explicit; go 1.22.0
+github.com/rancher/norman/clientbase
+github.com/rancher/norman/httperror
+github.com/rancher/norman/types
+github.com/rancher/norman/types/convert
+github.com/rancher/norman/types/definition
+github.com/rancher/norman/types/slice
+github.com/rancher/norman/types/values
+# github.com/rancher/rancher/pkg/client v0.0.0-20240710123941-93e332156bbe
+## explicit; go 1.22.0
+github.com/rancher/rancher/pkg/client/generated/management/v3
+# github.com/rancher/wrangler/v3 v3.0.0
+## explicit; go 1.22.0
+github.com/rancher/wrangler/v3/pkg/name
 # github.com/rogpeppe/go-internal v1.12.0
 ## explicit; go 1.20
 # github.com/sergi/go-diff v1.2.0
 ## explicit; go 1.12
 github.com/sergi/go-diff/diffmatchpatch
+# github.com/sirupsen/logrus v1.9.3
+## explicit; go 1.13
+github.com/sirupsen/logrus
 # github.com/spf13/cobra v1.8.0
 ## explicit; go 1.15
 github.com/spf13/cobra
@@ -203,7 +227,7 @@ go.bytebuilders.dev/license-verifier/kubernetes
 # golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842
 ## explicit; go 1.20
 golang.org/x/exp/maps
-# golang.org/x/net v0.27.0
+# golang.org/x/net v0.29.0
 ## explicit; go 1.18
 golang.org/x/net/html
 golang.org/x/net/html/atom
@@ -212,20 +236,23 @@ golang.org/x/net/http/httpguts
 golang.org/x/net/http2
 golang.org/x/net/http2/hpack
 golang.org/x/net/idna
-# golang.org/x/oauth2 v0.21.0
+golang.org/x/net/internal/socks
+golang.org/x/net/proxy
+# golang.org/x/oauth2 v0.22.0
 ## explicit; go 1.18
 golang.org/x/oauth2
 golang.org/x/oauth2/internal
-# golang.org/x/sys v0.22.0
+# golang.org/x/sys v0.28.0
 ## explicit; go 1.18
 golang.org/x/sys/plan9
 golang.org/x/sys/unix
 golang.org/x/sys/windows
-# golang.org/x/term v0.22.0
+# golang.org/x/term v0.27.0
 ## explicit; go 1.18
 golang.org/x/term
-# golang.org/x/text v0.16.0
+# golang.org/x/text v0.21.0
 ## explicit; go 1.18
+golang.org/x/text/cases
 golang.org/x/text/encoding
 golang.org/x/text/encoding/charmap
 golang.org/x/text/encoding/htmlindex
@@ -236,6 +263,7 @@ golang.org/x/text/encoding/korean
 golang.org/x/text/encoding/simplifiedchinese
 golang.org/x/text/encoding/traditionalchinese
 golang.org/x/text/encoding/unicode
+golang.org/x/text/internal
 golang.org/x/text/internal/language
 golang.org/x/text/internal/language/compact
 golang.org/x/text/internal/tag
@@ -450,6 +478,7 @@ k8s.io/apimachinery/third_party/forked/golang/json
 k8s.io/apimachinery/third_party/forked/golang/reflect
 # k8s.io/apiserver v0.30.2 => github.com/kmodules/apiserver v0.30.3-0.20240717062442-8d4dcc0bdd0b
 ## explicit; go 1.22.0
+k8s.io/apiserver/pkg/authentication/user
 k8s.io/apiserver/pkg/server/mux
 # k8s.io/client-go v0.30.2
 ## explicit; go 1.22.0
@@ -698,7 +727,7 @@ k8s.io/utils/trace
 # kmodules.xyz/apiversion v0.2.0
 ## explicit; go 1.14
 kmodules.xyz/apiversion
-# kmodules.xyz/client-go v0.30.13
+# kmodules.xyz/client-go v0.30.42
 ## explicit; go 1.22.0
 kmodules.xyz/client-go
 kmodules.xyz/client-go/api/v1
@@ -727,7 +756,7 @@ kmodules.xyz/custom-resources/crds
 # kmodules.xyz/objectstore-api v0.29.1
 ## explicit; go 1.21
 kmodules.xyz/objectstore-api/api/v1
-# kmodules.xyz/offshoot-api v0.30.0
+# kmodules.xyz/offshoot-api v0.30.1
 ## explicit; go 1.22.0
 kmodules.xyz/offshoot-api/api/v1
 # kmodules.xyz/prober v0.29.0
@@ -791,7 +820,7 @@ sigs.k8s.io/structured-merge-diff/v4/value
 ## explicit; go 1.12
 sigs.k8s.io/yaml
 sigs.k8s.io/yaml/goyaml.v2
-# stash.appscode.dev/apimachinery v0.35.0
+# stash.appscode.dev/apimachinery v0.37.0
 ## explicit; go 1.22.0
 stash.appscode.dev/apimachinery/apis
 stash.appscode.dev/apimachinery/apis/repositories
diff --git a/vendor/stash.appscode.dev/apimachinery/apis/repositories/v1alpha1/openapi_generated.go b/vendor/stash.appscode.dev/apimachinery/apis/repositories/v1alpha1/openapi_generated.go
index 7ff38cb1..ba9a7c5d 100644
--- a/vendor/stash.appscode.dev/apimachinery/apis/repositories/v1alpha1/openapi_generated.go
+++ b/vendor/stash.appscode.dev/apimachinery/apis/repositories/v1alpha1/openapi_generated.go
@@ -358,6 +358,9 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
 		"kmodules.xyz/client-go/api/v1.CAPIClusterInfo":                               schema_kmodulesxyz_client_go_api_v1_CAPIClusterInfo(ref),
 		"kmodules.xyz/client-go/api/v1.CertificatePrivateKey":                         schema_kmodulesxyz_client_go_api_v1_CertificatePrivateKey(ref),
 		"kmodules.xyz/client-go/api/v1.CertificateSpec":                               schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref),
+		"kmodules.xyz/client-go/api/v1.ClusterClaimFeatures":                          schema_kmodulesxyz_client_go_api_v1_ClusterClaimFeatures(ref),
+		"kmodules.xyz/client-go/api/v1.ClusterClaimInfo":                              schema_kmodulesxyz_client_go_api_v1_ClusterClaimInfo(ref),
+		"kmodules.xyz/client-go/api/v1.ClusterInfo":                                   schema_kmodulesxyz_client_go_api_v1_ClusterInfo(ref),
 		"kmodules.xyz/client-go/api/v1.ClusterMetadata":                               schema_kmodulesxyz_client_go_api_v1_ClusterMetadata(ref),
 		"kmodules.xyz/client-go/api/v1.Condition":                                     schema_kmodulesxyz_client_go_api_v1_Condition(ref),
 		"kmodules.xyz/client-go/api/v1.HealthCheckSpec":                               schema_kmodulesxyz_client_go_api_v1_HealthCheckSpec(ref),
@@ -401,7 +404,11 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
 		"kmodules.xyz/objectstore-api/api/v1.SwiftSpec":                               schema_kmodulesxyz_objectstore_api_api_v1_SwiftSpec(ref),
 		"kmodules.xyz/offshoot-api/api/v1.ContainerRuntimeSettings":                   schema_kmodulesxyz_offshoot_api_api_v1_ContainerRuntimeSettings(ref),
 		"kmodules.xyz/offshoot-api/api/v1.EphemeralVolumeSource":                      schema_kmodulesxyz_offshoot_api_api_v1_EphemeralVolumeSource(ref),
+		"kmodules.xyz/offshoot-api/api/v1.Gateway":                                    schema_kmodulesxyz_offshoot_api_api_v1_Gateway(ref),
+		"kmodules.xyz/offshoot-api/api/v1.GatewayPort":                                schema_kmodulesxyz_offshoot_api_api_v1_GatewayPort(ref),
 		"kmodules.xyz/offshoot-api/api/v1.IONiceSettings":                             schema_kmodulesxyz_offshoot_api_api_v1_IONiceSettings(ref),
+		"kmodules.xyz/offshoot-api/api/v1.NamedServiceStatus":                         schema_kmodulesxyz_offshoot_api_api_v1_NamedServiceStatus(ref),
+		"kmodules.xyz/offshoot-api/api/v1.NamedURL":                                   schema_kmodulesxyz_offshoot_api_api_v1_NamedURL(ref),
 		"kmodules.xyz/offshoot-api/api/v1.NiceSettings":                               schema_kmodulesxyz_offshoot_api_api_v1_NiceSettings(ref),
 		"kmodules.xyz/offshoot-api/api/v1.ObjectMeta":                                 schema_kmodulesxyz_offshoot_api_api_v1_ObjectMeta(ref),
 		"kmodules.xyz/offshoot-api/api/v1.PartialObjectMeta":                          schema_kmodulesxyz_offshoot_api_api_v1_PartialObjectMeta(ref),
@@ -18441,23 +18448,27 @@ func schema_kmodulesxyz_client_go_api_v1_CAPIClusterInfo(ref common.ReferenceCal
 				Properties: map[string]spec.Schema{
 					"provider": {
 						SchemaProps: spec.SchemaProps{
-							Type:   []string{"string"},
-							Format: "",
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
 						},
 					},
 					"namespace": {
 						SchemaProps: spec.SchemaProps{
-							Type:   []string{"string"},
-							Format: "",
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
 						},
 					},
 					"clusterName": {
 						SchemaProps: spec.SchemaProps{
-							Type:   []string{"string"},
-							Format: "",
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
 						},
 					},
 				},
+				Required: []string{"provider", "namespace", "clusterName"},
 			},
 		},
 	}
@@ -18524,7 +18535,7 @@ func schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref common.ReferenceCal
 					},
 					"renewBefore": {
 						SchemaProps: spec.SchemaProps{
-							Description: "Certificate renew before expiration duration",
+							Description: "Certificate renew before expiration duration\n\nDeprecated use `ReconfigureTLS` type OpsRequest instead.",
 							Ref:         ref("k8s.io/apimachinery/pkg/apis/meta/v1.Duration"),
 						},
 					},
@@ -18603,6 +18614,130 @@ func schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref common.ReferenceCal
 	}
 }
 
+func schema_kmodulesxyz_client_go_api_v1_ClusterClaimFeatures(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"enabledFeatures": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+					"externallyManagedFeatures": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+					"disabledFeatures": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+				},
+			},
+		},
+	}
+}
+
+func schema_kmodulesxyz_client_go_api_v1_ClusterClaimInfo(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"clusterMetadata": {
+						SchemaProps: spec.SchemaProps{
+							Default: map[string]interface{}{},
+							Ref:     ref("kmodules.xyz/client-go/api/v1.ClusterInfo"),
+						},
+					},
+				},
+				Required: []string{"clusterMetadata"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/client-go/api/v1.ClusterInfo"},
+	}
+}
+
+func schema_kmodulesxyz_client_go_api_v1_ClusterInfo(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Description: "ClusterInfo used in ace-installer",
+				Type:        []string{"object"},
+				Properties: map[string]spec.Schema{
+					"uid": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"name": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"clusterManagers": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+					"capi": {
+						SchemaProps: spec.SchemaProps{
+							Ref: ref("kmodules.xyz/client-go/api/v1.CAPIClusterInfo"),
+						},
+					},
+				},
+				Required: []string{"uid", "name", "clusterManagers"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/client-go/api/v1.CAPIClusterInfo"},
+	}
+}
+
 func schema_kmodulesxyz_client_go_api_v1_ClusterMetadata(ref common.ReferenceCallback) common.OpenAPIDefinition {
 	return common.OpenAPIDefinition{
 		Schema: spec.Schema{
@@ -18658,6 +18793,18 @@ func schema_kmodulesxyz_client_go_api_v1_ClusterMetadata(ref common.ReferenceCal
 							Format: "",
 						},
 					},
+					"managerID": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
+					"hubClusterID": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
 				},
 				Required: []string{"uid"},
 			},
@@ -20476,6 +20623,118 @@ func schema_kmodulesxyz_offshoot_api_api_v1_EphemeralVolumeSource(ref common.Ref
 	}
 }
 
+func schema_kmodulesxyz_offshoot_api_api_v1_Gateway(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"name": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"namespace": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"ip": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
+					"hostname": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
+					"services": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Services is an optional configuration for services used to expose database",
+							Type:        []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: map[string]interface{}{},
+										Ref:     ref("kmodules.xyz/offshoot-api/api/v1.NamedServiceStatus"),
+									},
+								},
+							},
+						},
+					},
+					"ui": {
+						SchemaProps: spec.SchemaProps{
+							Description: "UI is an optional list of database web uis",
+							Type:        []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: map[string]interface{}{},
+										Ref:     ref("kmodules.xyz/offshoot-api/api/v1.NamedURL"),
+									},
+								},
+							},
+						},
+					},
+				},
+				Required: []string{"name", "namespace"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/offshoot-api/api/v1.NamedServiceStatus", "kmodules.xyz/offshoot-api/api/v1.NamedURL"},
+	}
+}
+
+func schema_kmodulesxyz_offshoot_api_api_v1_GatewayPort(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Description: "GatewayPort contains information on Gateway service's port.",
+				Type:        []string{"object"},
+				Properties: map[string]spec.Schema{
+					"name": {
+						SchemaProps: spec.SchemaProps{
+							Description: "The name of this port within the gateway service.",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"port": {
+						SchemaProps: spec.SchemaProps{
+							Description: "The port that will be exposed by the gateway service.",
+							Default:     0,
+							Type:        []string{"integer"},
+							Format:      "int32",
+						},
+					},
+					"backendServicePort": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Number of the port to access the backend service.",
+							Type:        []string{"integer"},
+							Format:      "int32",
+						},
+					},
+					"nodePort": {
+						SchemaProps: spec.SchemaProps{
+							Description: "The port on each node on which this gateway service is exposed when type is NodePort or LoadBalancer.",
+							Type:        []string{"integer"},
+							Format:      "int32",
+						},
+					},
+				},
+				Required: []string{"port"},
+			},
+		},
+	}
+}
+
 func schema_kmodulesxyz_offshoot_api_api_v1_IONiceSettings(ref common.ReferenceCallback) common.OpenAPIDefinition {
 	return common.OpenAPIDefinition{
 		Schema: spec.Schema{
@@ -20501,6 +20760,85 @@ func schema_kmodulesxyz_offshoot_api_api_v1_IONiceSettings(ref common.ReferenceC
 	}
 }
 
+func schema_kmodulesxyz_offshoot_api_api_v1_NamedServiceStatus(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"alias": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Alias represents the identifier of the service.",
+							Default:     "",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"ports": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: map[string]interface{}{},
+										Ref:     ref("kmodules.xyz/offshoot-api/api/v1.GatewayPort"),
+									},
+								},
+							},
+						},
+					},
+				},
+				Required: []string{"alias", "ports"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/offshoot-api/api/v1.GatewayPort"},
+	}
+}
+
+func schema_kmodulesxyz_offshoot_api_api_v1_NamedURL(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"alias": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Alias represents the identifier of the service. This should match the db ui chart name",
+							Default:     "",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"url": {
+						SchemaProps: spec.SchemaProps{
+							Description: "URL of the database ui",
+							Default:     "",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"port": {
+						SchemaProps: spec.SchemaProps{
+							Default: map[string]interface{}{},
+							Ref:     ref("kmodules.xyz/offshoot-api/api/v1.GatewayPort"),
+						},
+					},
+					"helmRelease": {
+						SchemaProps: spec.SchemaProps{
+							Description: "HelmRelease is the name of the helm release used to deploy this ui The name format is typically <alias>-<db-name>",
+							Ref:         ref("k8s.io/api/core/v1.LocalObjectReference"),
+						},
+					},
+				},
+				Required: []string{"alias", "url", "port"},
+			},
+		},
+		Dependencies: []string{
+			"k8s.io/api/core/v1.LocalObjectReference", "kmodules.xyz/offshoot-api/api/v1.GatewayPort"},
+	}
+}
+
 func schema_kmodulesxyz_offshoot_api_api_v1_NiceSettings(ref common.ReferenceCallback) common.OpenAPIDefinition {
 	return common.OpenAPIDefinition{
 		Schema: spec.Schema{
@@ -21255,6 +21593,12 @@ func schema_kmodulesxyz_offshoot_api_api_v1_PodSpec(ref common.ReferenceCallback
 							},
 						},
 					},
+					"podPlacementPolicy": {
+						SchemaProps: spec.SchemaProps{
+							Description: "PodPlacementPolicy is the reference of the podPlacementPolicy",
+							Ref:         ref("k8s.io/api/core/v1.LocalObjectReference"),
+						},
+					},
 				},
 			},
 		},
diff --git a/vendor/stash.appscode.dev/apimachinery/apis/stash/v1alpha1/openapi_generated.go b/vendor/stash.appscode.dev/apimachinery/apis/stash/v1alpha1/openapi_generated.go
index 7975afdf..92064372 100644
--- a/vendor/stash.appscode.dev/apimachinery/apis/stash/v1alpha1/openapi_generated.go
+++ b/vendor/stash.appscode.dev/apimachinery/apis/stash/v1alpha1/openapi_generated.go
@@ -358,6 +358,9 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
 		"kmodules.xyz/client-go/api/v1.CAPIClusterInfo":                               schema_kmodulesxyz_client_go_api_v1_CAPIClusterInfo(ref),
 		"kmodules.xyz/client-go/api/v1.CertificatePrivateKey":                         schema_kmodulesxyz_client_go_api_v1_CertificatePrivateKey(ref),
 		"kmodules.xyz/client-go/api/v1.CertificateSpec":                               schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref),
+		"kmodules.xyz/client-go/api/v1.ClusterClaimFeatures":                          schema_kmodulesxyz_client_go_api_v1_ClusterClaimFeatures(ref),
+		"kmodules.xyz/client-go/api/v1.ClusterClaimInfo":                              schema_kmodulesxyz_client_go_api_v1_ClusterClaimInfo(ref),
+		"kmodules.xyz/client-go/api/v1.ClusterInfo":                                   schema_kmodulesxyz_client_go_api_v1_ClusterInfo(ref),
 		"kmodules.xyz/client-go/api/v1.ClusterMetadata":                               schema_kmodulesxyz_client_go_api_v1_ClusterMetadata(ref),
 		"kmodules.xyz/client-go/api/v1.Condition":                                     schema_kmodulesxyz_client_go_api_v1_Condition(ref),
 		"kmodules.xyz/client-go/api/v1.HealthCheckSpec":                               schema_kmodulesxyz_client_go_api_v1_HealthCheckSpec(ref),
@@ -401,7 +404,11 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
 		"kmodules.xyz/objectstore-api/api/v1.SwiftSpec":                               schema_kmodulesxyz_objectstore_api_api_v1_SwiftSpec(ref),
 		"kmodules.xyz/offshoot-api/api/v1.ContainerRuntimeSettings":                   schema_kmodulesxyz_offshoot_api_api_v1_ContainerRuntimeSettings(ref),
 		"kmodules.xyz/offshoot-api/api/v1.EphemeralVolumeSource":                      schema_kmodulesxyz_offshoot_api_api_v1_EphemeralVolumeSource(ref),
+		"kmodules.xyz/offshoot-api/api/v1.Gateway":                                    schema_kmodulesxyz_offshoot_api_api_v1_Gateway(ref),
+		"kmodules.xyz/offshoot-api/api/v1.GatewayPort":                                schema_kmodulesxyz_offshoot_api_api_v1_GatewayPort(ref),
 		"kmodules.xyz/offshoot-api/api/v1.IONiceSettings":                             schema_kmodulesxyz_offshoot_api_api_v1_IONiceSettings(ref),
+		"kmodules.xyz/offshoot-api/api/v1.NamedServiceStatus":                         schema_kmodulesxyz_offshoot_api_api_v1_NamedServiceStatus(ref),
+		"kmodules.xyz/offshoot-api/api/v1.NamedURL":                                   schema_kmodulesxyz_offshoot_api_api_v1_NamedURL(ref),
 		"kmodules.xyz/offshoot-api/api/v1.NiceSettings":                               schema_kmodulesxyz_offshoot_api_api_v1_NiceSettings(ref),
 		"kmodules.xyz/offshoot-api/api/v1.ObjectMeta":                                 schema_kmodulesxyz_offshoot_api_api_v1_ObjectMeta(ref),
 		"kmodules.xyz/offshoot-api/api/v1.PartialObjectMeta":                          schema_kmodulesxyz_offshoot_api_api_v1_PartialObjectMeta(ref),
@@ -18446,23 +18453,27 @@ func schema_kmodulesxyz_client_go_api_v1_CAPIClusterInfo(ref common.ReferenceCal
 				Properties: map[string]spec.Schema{
 					"provider": {
 						SchemaProps: spec.SchemaProps{
-							Type:   []string{"string"},
-							Format: "",
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
 						},
 					},
 					"namespace": {
 						SchemaProps: spec.SchemaProps{
-							Type:   []string{"string"},
-							Format: "",
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
 						},
 					},
 					"clusterName": {
 						SchemaProps: spec.SchemaProps{
-							Type:   []string{"string"},
-							Format: "",
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
 						},
 					},
 				},
+				Required: []string{"provider", "namespace", "clusterName"},
 			},
 		},
 	}
@@ -18529,7 +18540,7 @@ func schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref common.ReferenceCal
 					},
 					"renewBefore": {
 						SchemaProps: spec.SchemaProps{
-							Description: "Certificate renew before expiration duration",
+							Description: "Certificate renew before expiration duration\n\nDeprecated use `ReconfigureTLS` type OpsRequest instead.",
 							Ref:         ref("k8s.io/apimachinery/pkg/apis/meta/v1.Duration"),
 						},
 					},
@@ -18608,6 +18619,130 @@ func schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref common.ReferenceCal
 	}
 }
 
+func schema_kmodulesxyz_client_go_api_v1_ClusterClaimFeatures(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"enabledFeatures": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+					"externallyManagedFeatures": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+					"disabledFeatures": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+				},
+			},
+		},
+	}
+}
+
+func schema_kmodulesxyz_client_go_api_v1_ClusterClaimInfo(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"clusterMetadata": {
+						SchemaProps: spec.SchemaProps{
+							Default: map[string]interface{}{},
+							Ref:     ref("kmodules.xyz/client-go/api/v1.ClusterInfo"),
+						},
+					},
+				},
+				Required: []string{"clusterMetadata"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/client-go/api/v1.ClusterInfo"},
+	}
+}
+
+func schema_kmodulesxyz_client_go_api_v1_ClusterInfo(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Description: "ClusterInfo used in ace-installer",
+				Type:        []string{"object"},
+				Properties: map[string]spec.Schema{
+					"uid": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"name": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"clusterManagers": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+					"capi": {
+						SchemaProps: spec.SchemaProps{
+							Ref: ref("kmodules.xyz/client-go/api/v1.CAPIClusterInfo"),
+						},
+					},
+				},
+				Required: []string{"uid", "name", "clusterManagers"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/client-go/api/v1.CAPIClusterInfo"},
+	}
+}
+
 func schema_kmodulesxyz_client_go_api_v1_ClusterMetadata(ref common.ReferenceCallback) common.OpenAPIDefinition {
 	return common.OpenAPIDefinition{
 		Schema: spec.Schema{
@@ -18663,6 +18798,18 @@ func schema_kmodulesxyz_client_go_api_v1_ClusterMetadata(ref common.ReferenceCal
 							Format: "",
 						},
 					},
+					"managerID": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
+					"hubClusterID": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
 				},
 				Required: []string{"uid"},
 			},
@@ -20481,6 +20628,118 @@ func schema_kmodulesxyz_offshoot_api_api_v1_EphemeralVolumeSource(ref common.Ref
 	}
 }
 
+func schema_kmodulesxyz_offshoot_api_api_v1_Gateway(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"name": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"namespace": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"ip": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
+					"hostname": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
+					"services": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Services is an optional configuration for services used to expose database",
+							Type:        []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: map[string]interface{}{},
+										Ref:     ref("kmodules.xyz/offshoot-api/api/v1.NamedServiceStatus"),
+									},
+								},
+							},
+						},
+					},
+					"ui": {
+						SchemaProps: spec.SchemaProps{
+							Description: "UI is an optional list of database web uis",
+							Type:        []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: map[string]interface{}{},
+										Ref:     ref("kmodules.xyz/offshoot-api/api/v1.NamedURL"),
+									},
+								},
+							},
+						},
+					},
+				},
+				Required: []string{"name", "namespace"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/offshoot-api/api/v1.NamedServiceStatus", "kmodules.xyz/offshoot-api/api/v1.NamedURL"},
+	}
+}
+
+func schema_kmodulesxyz_offshoot_api_api_v1_GatewayPort(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Description: "GatewayPort contains information on Gateway service's port.",
+				Type:        []string{"object"},
+				Properties: map[string]spec.Schema{
+					"name": {
+						SchemaProps: spec.SchemaProps{
+							Description: "The name of this port within the gateway service.",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"port": {
+						SchemaProps: spec.SchemaProps{
+							Description: "The port that will be exposed by the gateway service.",
+							Default:     0,
+							Type:        []string{"integer"},
+							Format:      "int32",
+						},
+					},
+					"backendServicePort": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Number of the port to access the backend service.",
+							Type:        []string{"integer"},
+							Format:      "int32",
+						},
+					},
+					"nodePort": {
+						SchemaProps: spec.SchemaProps{
+							Description: "The port on each node on which this gateway service is exposed when type is NodePort or LoadBalancer.",
+							Type:        []string{"integer"},
+							Format:      "int32",
+						},
+					},
+				},
+				Required: []string{"port"},
+			},
+		},
+	}
+}
+
 func schema_kmodulesxyz_offshoot_api_api_v1_IONiceSettings(ref common.ReferenceCallback) common.OpenAPIDefinition {
 	return common.OpenAPIDefinition{
 		Schema: spec.Schema{
@@ -20506,6 +20765,85 @@ func schema_kmodulesxyz_offshoot_api_api_v1_IONiceSettings(ref common.ReferenceC
 	}
 }
 
+func schema_kmodulesxyz_offshoot_api_api_v1_NamedServiceStatus(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"alias": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Alias represents the identifier of the service.",
+							Default:     "",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"ports": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: map[string]interface{}{},
+										Ref:     ref("kmodules.xyz/offshoot-api/api/v1.GatewayPort"),
+									},
+								},
+							},
+						},
+					},
+				},
+				Required: []string{"alias", "ports"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/offshoot-api/api/v1.GatewayPort"},
+	}
+}
+
+func schema_kmodulesxyz_offshoot_api_api_v1_NamedURL(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"alias": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Alias represents the identifier of the service. This should match the db ui chart name",
+							Default:     "",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"url": {
+						SchemaProps: spec.SchemaProps{
+							Description: "URL of the database ui",
+							Default:     "",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"port": {
+						SchemaProps: spec.SchemaProps{
+							Default: map[string]interface{}{},
+							Ref:     ref("kmodules.xyz/offshoot-api/api/v1.GatewayPort"),
+						},
+					},
+					"helmRelease": {
+						SchemaProps: spec.SchemaProps{
+							Description: "HelmRelease is the name of the helm release used to deploy this ui The name format is typically <alias>-<db-name>",
+							Ref:         ref("k8s.io/api/core/v1.LocalObjectReference"),
+						},
+					},
+				},
+				Required: []string{"alias", "url", "port"},
+			},
+		},
+		Dependencies: []string{
+			"k8s.io/api/core/v1.LocalObjectReference", "kmodules.xyz/offshoot-api/api/v1.GatewayPort"},
+	}
+}
+
 func schema_kmodulesxyz_offshoot_api_api_v1_NiceSettings(ref common.ReferenceCallback) common.OpenAPIDefinition {
 	return common.OpenAPIDefinition{
 		Schema: spec.Schema{
@@ -21260,6 +21598,12 @@ func schema_kmodulesxyz_offshoot_api_api_v1_PodSpec(ref common.ReferenceCallback
 							},
 						},
 					},
+					"podPlacementPolicy": {
+						SchemaProps: spec.SchemaProps{
+							Description: "PodPlacementPolicy is the reference of the podPlacementPolicy",
+							Ref:         ref("k8s.io/api/core/v1.LocalObjectReference"),
+						},
+					},
 				},
 			},
 		},
diff --git a/vendor/stash.appscode.dev/apimachinery/apis/stash/v1beta1/openapi_generated.go b/vendor/stash.appscode.dev/apimachinery/apis/stash/v1beta1/openapi_generated.go
index 703d69f4..0a1f8e5f 100644
--- a/vendor/stash.appscode.dev/apimachinery/apis/stash/v1beta1/openapi_generated.go
+++ b/vendor/stash.appscode.dev/apimachinery/apis/stash/v1beta1/openapi_generated.go
@@ -358,6 +358,9 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
 		"kmodules.xyz/client-go/api/v1.CAPIClusterInfo":                                      schema_kmodulesxyz_client_go_api_v1_CAPIClusterInfo(ref),
 		"kmodules.xyz/client-go/api/v1.CertificatePrivateKey":                                schema_kmodulesxyz_client_go_api_v1_CertificatePrivateKey(ref),
 		"kmodules.xyz/client-go/api/v1.CertificateSpec":                                      schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref),
+		"kmodules.xyz/client-go/api/v1.ClusterClaimFeatures":                                 schema_kmodulesxyz_client_go_api_v1_ClusterClaimFeatures(ref),
+		"kmodules.xyz/client-go/api/v1.ClusterClaimInfo":                                     schema_kmodulesxyz_client_go_api_v1_ClusterClaimInfo(ref),
+		"kmodules.xyz/client-go/api/v1.ClusterInfo":                                          schema_kmodulesxyz_client_go_api_v1_ClusterInfo(ref),
 		"kmodules.xyz/client-go/api/v1.ClusterMetadata":                                      schema_kmodulesxyz_client_go_api_v1_ClusterMetadata(ref),
 		"kmodules.xyz/client-go/api/v1.Condition":                                            schema_kmodulesxyz_client_go_api_v1_Condition(ref),
 		"kmodules.xyz/client-go/api/v1.HealthCheckSpec":                                      schema_kmodulesxyz_client_go_api_v1_HealthCheckSpec(ref),
@@ -401,7 +404,11 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
 		"kmodules.xyz/objectstore-api/api/v1.SwiftSpec":                                      schema_kmodulesxyz_objectstore_api_api_v1_SwiftSpec(ref),
 		"kmodules.xyz/offshoot-api/api/v1.ContainerRuntimeSettings":                          schema_kmodulesxyz_offshoot_api_api_v1_ContainerRuntimeSettings(ref),
 		"kmodules.xyz/offshoot-api/api/v1.EphemeralVolumeSource":                             schema_kmodulesxyz_offshoot_api_api_v1_EphemeralVolumeSource(ref),
+		"kmodules.xyz/offshoot-api/api/v1.Gateway":                                           schema_kmodulesxyz_offshoot_api_api_v1_Gateway(ref),
+		"kmodules.xyz/offshoot-api/api/v1.GatewayPort":                                       schema_kmodulesxyz_offshoot_api_api_v1_GatewayPort(ref),
 		"kmodules.xyz/offshoot-api/api/v1.IONiceSettings":                                    schema_kmodulesxyz_offshoot_api_api_v1_IONiceSettings(ref),
+		"kmodules.xyz/offshoot-api/api/v1.NamedServiceStatus":                                schema_kmodulesxyz_offshoot_api_api_v1_NamedServiceStatus(ref),
+		"kmodules.xyz/offshoot-api/api/v1.NamedURL":                                          schema_kmodulesxyz_offshoot_api_api_v1_NamedURL(ref),
 		"kmodules.xyz/offshoot-api/api/v1.NiceSettings":                                      schema_kmodulesxyz_offshoot_api_api_v1_NiceSettings(ref),
 		"kmodules.xyz/offshoot-api/api/v1.ObjectMeta":                                        schema_kmodulesxyz_offshoot_api_api_v1_ObjectMeta(ref),
 		"kmodules.xyz/offshoot-api/api/v1.PartialObjectMeta":                                 schema_kmodulesxyz_offshoot_api_api_v1_PartialObjectMeta(ref),
@@ -18492,23 +18499,27 @@ func schema_kmodulesxyz_client_go_api_v1_CAPIClusterInfo(ref common.ReferenceCal
 				Properties: map[string]spec.Schema{
 					"provider": {
 						SchemaProps: spec.SchemaProps{
-							Type:   []string{"string"},
-							Format: "",
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
 						},
 					},
 					"namespace": {
 						SchemaProps: spec.SchemaProps{
-							Type:   []string{"string"},
-							Format: "",
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
 						},
 					},
 					"clusterName": {
 						SchemaProps: spec.SchemaProps{
-							Type:   []string{"string"},
-							Format: "",
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
 						},
 					},
 				},
+				Required: []string{"provider", "namespace", "clusterName"},
 			},
 		},
 	}
@@ -18575,7 +18586,7 @@ func schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref common.ReferenceCal
 					},
 					"renewBefore": {
 						SchemaProps: spec.SchemaProps{
-							Description: "Certificate renew before expiration duration",
+							Description: "Certificate renew before expiration duration\n\nDeprecated use `ReconfigureTLS` type OpsRequest instead.",
 							Ref:         ref("k8s.io/apimachinery/pkg/apis/meta/v1.Duration"),
 						},
 					},
@@ -18654,6 +18665,130 @@ func schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref common.ReferenceCal
 	}
 }
 
+func schema_kmodulesxyz_client_go_api_v1_ClusterClaimFeatures(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"enabledFeatures": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+					"externallyManagedFeatures": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+					"disabledFeatures": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+				},
+			},
+		},
+	}
+}
+
+func schema_kmodulesxyz_client_go_api_v1_ClusterClaimInfo(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"clusterMetadata": {
+						SchemaProps: spec.SchemaProps{
+							Default: map[string]interface{}{},
+							Ref:     ref("kmodules.xyz/client-go/api/v1.ClusterInfo"),
+						},
+					},
+				},
+				Required: []string{"clusterMetadata"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/client-go/api/v1.ClusterInfo"},
+	}
+}
+
+func schema_kmodulesxyz_client_go_api_v1_ClusterInfo(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Description: "ClusterInfo used in ace-installer",
+				Type:        []string{"object"},
+				Properties: map[string]spec.Schema{
+					"uid": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"name": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"clusterManagers": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+					"capi": {
+						SchemaProps: spec.SchemaProps{
+							Ref: ref("kmodules.xyz/client-go/api/v1.CAPIClusterInfo"),
+						},
+					},
+				},
+				Required: []string{"uid", "name", "clusterManagers"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/client-go/api/v1.CAPIClusterInfo"},
+	}
+}
+
 func schema_kmodulesxyz_client_go_api_v1_ClusterMetadata(ref common.ReferenceCallback) common.OpenAPIDefinition {
 	return common.OpenAPIDefinition{
 		Schema: spec.Schema{
@@ -18709,6 +18844,18 @@ func schema_kmodulesxyz_client_go_api_v1_ClusterMetadata(ref common.ReferenceCal
 							Format: "",
 						},
 					},
+					"managerID": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
+					"hubClusterID": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
 				},
 				Required: []string{"uid"},
 			},
@@ -20527,6 +20674,118 @@ func schema_kmodulesxyz_offshoot_api_api_v1_EphemeralVolumeSource(ref common.Ref
 	}
 }
 
+func schema_kmodulesxyz_offshoot_api_api_v1_Gateway(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"name": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"namespace": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"ip": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
+					"hostname": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
+					"services": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Services is an optional configuration for services used to expose database",
+							Type:        []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: map[string]interface{}{},
+										Ref:     ref("kmodules.xyz/offshoot-api/api/v1.NamedServiceStatus"),
+									},
+								},
+							},
+						},
+					},
+					"ui": {
+						SchemaProps: spec.SchemaProps{
+							Description: "UI is an optional list of database web uis",
+							Type:        []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: map[string]interface{}{},
+										Ref:     ref("kmodules.xyz/offshoot-api/api/v1.NamedURL"),
+									},
+								},
+							},
+						},
+					},
+				},
+				Required: []string{"name", "namespace"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/offshoot-api/api/v1.NamedServiceStatus", "kmodules.xyz/offshoot-api/api/v1.NamedURL"},
+	}
+}
+
+func schema_kmodulesxyz_offshoot_api_api_v1_GatewayPort(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Description: "GatewayPort contains information on Gateway service's port.",
+				Type:        []string{"object"},
+				Properties: map[string]spec.Schema{
+					"name": {
+						SchemaProps: spec.SchemaProps{
+							Description: "The name of this port within the gateway service.",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"port": {
+						SchemaProps: spec.SchemaProps{
+							Description: "The port that will be exposed by the gateway service.",
+							Default:     0,
+							Type:        []string{"integer"},
+							Format:      "int32",
+						},
+					},
+					"backendServicePort": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Number of the port to access the backend service.",
+							Type:        []string{"integer"},
+							Format:      "int32",
+						},
+					},
+					"nodePort": {
+						SchemaProps: spec.SchemaProps{
+							Description: "The port on each node on which this gateway service is exposed when type is NodePort or LoadBalancer.",
+							Type:        []string{"integer"},
+							Format:      "int32",
+						},
+					},
+				},
+				Required: []string{"port"},
+			},
+		},
+	}
+}
+
 func schema_kmodulesxyz_offshoot_api_api_v1_IONiceSettings(ref common.ReferenceCallback) common.OpenAPIDefinition {
 	return common.OpenAPIDefinition{
 		Schema: spec.Schema{
@@ -20552,6 +20811,85 @@ func schema_kmodulesxyz_offshoot_api_api_v1_IONiceSettings(ref common.ReferenceC
 	}
 }
 
+func schema_kmodulesxyz_offshoot_api_api_v1_NamedServiceStatus(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"alias": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Alias represents the identifier of the service.",
+							Default:     "",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"ports": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: map[string]interface{}{},
+										Ref:     ref("kmodules.xyz/offshoot-api/api/v1.GatewayPort"),
+									},
+								},
+							},
+						},
+					},
+				},
+				Required: []string{"alias", "ports"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/offshoot-api/api/v1.GatewayPort"},
+	}
+}
+
+func schema_kmodulesxyz_offshoot_api_api_v1_NamedURL(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"alias": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Alias represents the identifier of the service. This should match the db ui chart name",
+							Default:     "",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"url": {
+						SchemaProps: spec.SchemaProps{
+							Description: "URL of the database ui",
+							Default:     "",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"port": {
+						SchemaProps: spec.SchemaProps{
+							Default: map[string]interface{}{},
+							Ref:     ref("kmodules.xyz/offshoot-api/api/v1.GatewayPort"),
+						},
+					},
+					"helmRelease": {
+						SchemaProps: spec.SchemaProps{
+							Description: "HelmRelease is the name of the helm release used to deploy this ui The name format is typically <alias>-<db-name>",
+							Ref:         ref("k8s.io/api/core/v1.LocalObjectReference"),
+						},
+					},
+				},
+				Required: []string{"alias", "url", "port"},
+			},
+		},
+		Dependencies: []string{
+			"k8s.io/api/core/v1.LocalObjectReference", "kmodules.xyz/offshoot-api/api/v1.GatewayPort"},
+	}
+}
+
 func schema_kmodulesxyz_offshoot_api_api_v1_NiceSettings(ref common.ReferenceCallback) common.OpenAPIDefinition {
 	return common.OpenAPIDefinition{
 		Schema: spec.Schema{
@@ -21306,6 +21644,12 @@ func schema_kmodulesxyz_offshoot_api_api_v1_PodSpec(ref common.ReferenceCallback
 							},
 						},
 					},
+					"podPlacementPolicy": {
+						SchemaProps: spec.SchemaProps{
+							Description: "PodPlacementPolicy is the reference of the podPlacementPolicy",
+							Ref:         ref("k8s.io/api/core/v1.LocalObjectReference"),
+						},
+					},
 				},
 			},
 		},
diff --git a/vendor/stash.appscode.dev/apimachinery/apis/ui/v1alpha1/openapi_generated.go b/vendor/stash.appscode.dev/apimachinery/apis/ui/v1alpha1/openapi_generated.go
index 46c8d08a..ecbc0739 100644
--- a/vendor/stash.appscode.dev/apimachinery/apis/ui/v1alpha1/openapi_generated.go
+++ b/vendor/stash.appscode.dev/apimachinery/apis/ui/v1alpha1/openapi_generated.go
@@ -358,6 +358,9 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
 		"kmodules.xyz/client-go/api/v1.CAPIClusterInfo":                               schema_kmodulesxyz_client_go_api_v1_CAPIClusterInfo(ref),
 		"kmodules.xyz/client-go/api/v1.CertificatePrivateKey":                         schema_kmodulesxyz_client_go_api_v1_CertificatePrivateKey(ref),
 		"kmodules.xyz/client-go/api/v1.CertificateSpec":                               schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref),
+		"kmodules.xyz/client-go/api/v1.ClusterClaimFeatures":                          schema_kmodulesxyz_client_go_api_v1_ClusterClaimFeatures(ref),
+		"kmodules.xyz/client-go/api/v1.ClusterClaimInfo":                              schema_kmodulesxyz_client_go_api_v1_ClusterClaimInfo(ref),
+		"kmodules.xyz/client-go/api/v1.ClusterInfo":                                   schema_kmodulesxyz_client_go_api_v1_ClusterInfo(ref),
 		"kmodules.xyz/client-go/api/v1.ClusterMetadata":                               schema_kmodulesxyz_client_go_api_v1_ClusterMetadata(ref),
 		"kmodules.xyz/client-go/api/v1.Condition":                                     schema_kmodulesxyz_client_go_api_v1_Condition(ref),
 		"kmodules.xyz/client-go/api/v1.HealthCheckSpec":                               schema_kmodulesxyz_client_go_api_v1_HealthCheckSpec(ref),
@@ -401,7 +404,11 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
 		"kmodules.xyz/objectstore-api/api/v1.SwiftSpec":                               schema_kmodulesxyz_objectstore_api_api_v1_SwiftSpec(ref),
 		"kmodules.xyz/offshoot-api/api/v1.ContainerRuntimeSettings":                   schema_kmodulesxyz_offshoot_api_api_v1_ContainerRuntimeSettings(ref),
 		"kmodules.xyz/offshoot-api/api/v1.EphemeralVolumeSource":                      schema_kmodulesxyz_offshoot_api_api_v1_EphemeralVolumeSource(ref),
+		"kmodules.xyz/offshoot-api/api/v1.Gateway":                                    schema_kmodulesxyz_offshoot_api_api_v1_Gateway(ref),
+		"kmodules.xyz/offshoot-api/api/v1.GatewayPort":                                schema_kmodulesxyz_offshoot_api_api_v1_GatewayPort(ref),
 		"kmodules.xyz/offshoot-api/api/v1.IONiceSettings":                             schema_kmodulesxyz_offshoot_api_api_v1_IONiceSettings(ref),
+		"kmodules.xyz/offshoot-api/api/v1.NamedServiceStatus":                         schema_kmodulesxyz_offshoot_api_api_v1_NamedServiceStatus(ref),
+		"kmodules.xyz/offshoot-api/api/v1.NamedURL":                                   schema_kmodulesxyz_offshoot_api_api_v1_NamedURL(ref),
 		"kmodules.xyz/offshoot-api/api/v1.NiceSettings":                               schema_kmodulesxyz_offshoot_api_api_v1_NiceSettings(ref),
 		"kmodules.xyz/offshoot-api/api/v1.ObjectMeta":                                 schema_kmodulesxyz_offshoot_api_api_v1_ObjectMeta(ref),
 		"kmodules.xyz/offshoot-api/api/v1.PartialObjectMeta":                          schema_kmodulesxyz_offshoot_api_api_v1_PartialObjectMeta(ref),
@@ -18441,23 +18448,27 @@ func schema_kmodulesxyz_client_go_api_v1_CAPIClusterInfo(ref common.ReferenceCal
 				Properties: map[string]spec.Schema{
 					"provider": {
 						SchemaProps: spec.SchemaProps{
-							Type:   []string{"string"},
-							Format: "",
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
 						},
 					},
 					"namespace": {
 						SchemaProps: spec.SchemaProps{
-							Type:   []string{"string"},
-							Format: "",
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
 						},
 					},
 					"clusterName": {
 						SchemaProps: spec.SchemaProps{
-							Type:   []string{"string"},
-							Format: "",
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
 						},
 					},
 				},
+				Required: []string{"provider", "namespace", "clusterName"},
 			},
 		},
 	}
@@ -18524,7 +18535,7 @@ func schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref common.ReferenceCal
 					},
 					"renewBefore": {
 						SchemaProps: spec.SchemaProps{
-							Description: "Certificate renew before expiration duration",
+							Description: "Certificate renew before expiration duration\n\nDeprecated use `ReconfigureTLS` type OpsRequest instead.",
 							Ref:         ref("k8s.io/apimachinery/pkg/apis/meta/v1.Duration"),
 						},
 					},
@@ -18603,6 +18614,130 @@ func schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref common.ReferenceCal
 	}
 }
 
+func schema_kmodulesxyz_client_go_api_v1_ClusterClaimFeatures(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"enabledFeatures": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+					"externallyManagedFeatures": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+					"disabledFeatures": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+				},
+			},
+		},
+	}
+}
+
+func schema_kmodulesxyz_client_go_api_v1_ClusterClaimInfo(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"clusterMetadata": {
+						SchemaProps: spec.SchemaProps{
+							Default: map[string]interface{}{},
+							Ref:     ref("kmodules.xyz/client-go/api/v1.ClusterInfo"),
+						},
+					},
+				},
+				Required: []string{"clusterMetadata"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/client-go/api/v1.ClusterInfo"},
+	}
+}
+
+func schema_kmodulesxyz_client_go_api_v1_ClusterInfo(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Description: "ClusterInfo used in ace-installer",
+				Type:        []string{"object"},
+				Properties: map[string]spec.Schema{
+					"uid": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"name": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"clusterManagers": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+					"capi": {
+						SchemaProps: spec.SchemaProps{
+							Ref: ref("kmodules.xyz/client-go/api/v1.CAPIClusterInfo"),
+						},
+					},
+				},
+				Required: []string{"uid", "name", "clusterManagers"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/client-go/api/v1.CAPIClusterInfo"},
+	}
+}
+
 func schema_kmodulesxyz_client_go_api_v1_ClusterMetadata(ref common.ReferenceCallback) common.OpenAPIDefinition {
 	return common.OpenAPIDefinition{
 		Schema: spec.Schema{
@@ -18658,6 +18793,18 @@ func schema_kmodulesxyz_client_go_api_v1_ClusterMetadata(ref common.ReferenceCal
 							Format: "",
 						},
 					},
+					"managerID": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
+					"hubClusterID": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
 				},
 				Required: []string{"uid"},
 			},
@@ -20476,6 +20623,118 @@ func schema_kmodulesxyz_offshoot_api_api_v1_EphemeralVolumeSource(ref common.Ref
 	}
 }
 
+func schema_kmodulesxyz_offshoot_api_api_v1_Gateway(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"name": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"namespace": {
+						SchemaProps: spec.SchemaProps{
+							Default: "",
+							Type:    []string{"string"},
+							Format:  "",
+						},
+					},
+					"ip": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
+					"hostname": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
+					"services": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Services is an optional configuration for services used to expose database",
+							Type:        []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: map[string]interface{}{},
+										Ref:     ref("kmodules.xyz/offshoot-api/api/v1.NamedServiceStatus"),
+									},
+								},
+							},
+						},
+					},
+					"ui": {
+						SchemaProps: spec.SchemaProps{
+							Description: "UI is an optional list of database web uis",
+							Type:        []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: map[string]interface{}{},
+										Ref:     ref("kmodules.xyz/offshoot-api/api/v1.NamedURL"),
+									},
+								},
+							},
+						},
+					},
+				},
+				Required: []string{"name", "namespace"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/offshoot-api/api/v1.NamedServiceStatus", "kmodules.xyz/offshoot-api/api/v1.NamedURL"},
+	}
+}
+
+func schema_kmodulesxyz_offshoot_api_api_v1_GatewayPort(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Description: "GatewayPort contains information on Gateway service's port.",
+				Type:        []string{"object"},
+				Properties: map[string]spec.Schema{
+					"name": {
+						SchemaProps: spec.SchemaProps{
+							Description: "The name of this port within the gateway service.",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"port": {
+						SchemaProps: spec.SchemaProps{
+							Description: "The port that will be exposed by the gateway service.",
+							Default:     0,
+							Type:        []string{"integer"},
+							Format:      "int32",
+						},
+					},
+					"backendServicePort": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Number of the port to access the backend service.",
+							Type:        []string{"integer"},
+							Format:      "int32",
+						},
+					},
+					"nodePort": {
+						SchemaProps: spec.SchemaProps{
+							Description: "The port on each node on which this gateway service is exposed when type is NodePort or LoadBalancer.",
+							Type:        []string{"integer"},
+							Format:      "int32",
+						},
+					},
+				},
+				Required: []string{"port"},
+			},
+		},
+	}
+}
+
 func schema_kmodulesxyz_offshoot_api_api_v1_IONiceSettings(ref common.ReferenceCallback) common.OpenAPIDefinition {
 	return common.OpenAPIDefinition{
 		Schema: spec.Schema{
@@ -20501,6 +20760,85 @@ func schema_kmodulesxyz_offshoot_api_api_v1_IONiceSettings(ref common.ReferenceC
 	}
 }
 
+func schema_kmodulesxyz_offshoot_api_api_v1_NamedServiceStatus(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"alias": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Alias represents the identifier of the service.",
+							Default:     "",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"ports": {
+						SchemaProps: spec.SchemaProps{
+							Type: []string{"array"},
+							Items: &spec.SchemaOrArray{
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: map[string]interface{}{},
+										Ref:     ref("kmodules.xyz/offshoot-api/api/v1.GatewayPort"),
+									},
+								},
+							},
+						},
+					},
+				},
+				Required: []string{"alias", "ports"},
+			},
+		},
+		Dependencies: []string{
+			"kmodules.xyz/offshoot-api/api/v1.GatewayPort"},
+	}
+}
+
+func schema_kmodulesxyz_offshoot_api_api_v1_NamedURL(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"alias": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Alias represents the identifier of the service. This should match the db ui chart name",
+							Default:     "",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"url": {
+						SchemaProps: spec.SchemaProps{
+							Description: "URL of the database ui",
+							Default:     "",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"port": {
+						SchemaProps: spec.SchemaProps{
+							Default: map[string]interface{}{},
+							Ref:     ref("kmodules.xyz/offshoot-api/api/v1.GatewayPort"),
+						},
+					},
+					"helmRelease": {
+						SchemaProps: spec.SchemaProps{
+							Description: "HelmRelease is the name of the helm release used to deploy this ui The name format is typically <alias>-<db-name>",
+							Ref:         ref("k8s.io/api/core/v1.LocalObjectReference"),
+						},
+					},
+				},
+				Required: []string{"alias", "url", "port"},
+			},
+		},
+		Dependencies: []string{
+			"k8s.io/api/core/v1.LocalObjectReference", "kmodules.xyz/offshoot-api/api/v1.GatewayPort"},
+	}
+}
+
 func schema_kmodulesxyz_offshoot_api_api_v1_NiceSettings(ref common.ReferenceCallback) common.OpenAPIDefinition {
 	return common.OpenAPIDefinition{
 		Schema: spec.Schema{
@@ -21255,6 +21593,12 @@ func schema_kmodulesxyz_offshoot_api_api_v1_PodSpec(ref common.ReferenceCallback
 							},
 						},
 					},
+					"podPlacementPolicy": {
+						SchemaProps: spec.SchemaProps{
+							Description: "PodPlacementPolicy is the reference of the podPlacementPolicy",
+							Ref:         ref("k8s.io/api/core/v1.LocalObjectReference"),
+						},
+					},
 				},
 			},
 		},
diff --git a/vendor/stash.appscode.dev/apimachinery/pkg/restic/commands.go b/vendor/stash.appscode.dev/apimachinery/pkg/restic/commands.go
index fd4a8377..7f39f8f7 100644
--- a/vendor/stash.appscode.dev/apimachinery/pkg/restic/commands.go
+++ b/vendor/stash.appscode.dev/apimachinery/pkg/restic/commands.go
@@ -37,6 +37,7 @@ import (
 
 const (
 	ResticCMD = "/bin/restic"
+	BashCMD   = "/bin/bash"
 )
 
 type Snapshot struct {
@@ -438,7 +439,13 @@ func (w *ResticWrapper) run(commands ...Command) ([]byte, error) {
 				return nil, err
 			}
 		}
-		w.sh.Command(cmd.Name, cmd.Args...)
+
+		// Executes Bash commands with "-c" for multiple dump args.
+		if cmd.Name == BashCMD {
+			w.sh.Command(cmd.Name, "-c", cmd.getCommandArgsAsString())
+		} else {
+			w.sh.Command(cmd.Name, cmd.Args...)
+		}
 	}
 	out, err := w.sh.Output()
 	if err != nil {
@@ -581,3 +588,11 @@ func (w *ResticWrapper) appendInsecureTLSFlag(args []interface{}) []interface{}
 	}
 	return args
 }
+
+func (c *Command) getCommandArgsAsString() string {
+	var cmdParts []string
+	for _, arg := range c.Args {
+		cmdParts = append(cmdParts, fmt.Sprintf("%v", arg))
+	}
+	return strings.Join(cmdParts, " ")
+}