In a Tezos Testnet, it is acceptable to use an in-memory signer. In this example, we run a bakery called "Acme Bakery". The private baking key is passed as helm parameter in values.yaml and stored in a Kubernetes secret.
+
The below values.yaml will start a ghostnet baker:
+
images: octez: tezos/tezos:octez-v20.2 # replace with most recent version node_config_network: chain_name: ghostnet node_globals: env: all: TEZOS_CLIENT_UNSAFE_DISABLE_DISCLAIMER: "Y" protocols: - command: PtParisC # replace with the most recent protocol vote: liquidity_baking_toggle_vote: pass accounts: acme-bakery: key: edsk3ESSEABwYbxAnUAKfbZ7s4XpBDiNFaS3xKkzWJcWtCp57Ty1mN bakers: acme-bakery: bake_using_accounts: - acme-bakery node_rpc_url: http://node-0.node:8732 nodes: acme: runs: - octez_node storage_size: 50Gi instances: - config: shell: history_mode: rolling rolling-node: null
On mainnet, running an in-memory signer is strongly discouraged. Indeed, improper disclosure of the baker's secret key may lead to theft of funds or equivocation.
+
Instead, the recommended method is to use a Key Management System (KMS) or Hardware Security Module (HSM).
You can optionally spin up a Tezos blockchain indexer that makes querying for information very quick. An indexer puts the chain contents in a database for efficient indexing. Most dapps need it. You can read more about indexers here.
You must spin up an archive node in your cluster if you want to your indexer to index it. You would do so by configuring a new node's history_mode to be archive.
+
You can also spin up a lone indexer without any Tezos nodes in your cluster, but make sure to point the rpc_url field to an accessible Tezos archive node's rpc endpoint.
+
+
\ No newline at end of file
diff --git a/Prerequisites/index.html b/Prerequisites/index.html
new file mode 100644
index 0000000..3a5d781
--- /dev/null
+++ b/Prerequisites/index.html
@@ -0,0 +1,93 @@
+
+
+
+
+
+Prerequisites | Tezos K8s
+
+
+
+
+
Start Docker Desktop and follow the setup instructions. Note: You may quit Docker after it has finished setting up. It is not required that Docker Desktop is running for you to run a Tezos chain.
If in the next step minikube does not start correctly, you may need to configure a different driver for it. Please see the minikube docs here for more information.
We recommend using a very nice GUI for your k8s Tezos chain infrastructure called Lens. This allows you to easily see all of the k8s resources that have been spun up as well as to view the logs for your Tezos nodes. Checkout a similar tool called k9s that works in the CLI.
You can spin up a number of regular peer nodes that don't bake in your cluster by passing --nodes N to mkchain. You can use this to both scale up and down.
+
Or if you previously spun up the chain using mkchain, you may adjust
+your setup to an arbitrary number of nodes by updating the "nodes"
+section in the values yaml file.
+
nodes is a dictionary where each key value pair defines a statefulset
+and a number of instances thereof. The name (key) defines the name of
+the statefulset and will be the base of the pod names. The name must be
+DNS compliant or you will get odd errors. The instances are defined as a
+list because their names are simply -N appended to the statefulsetname.
+Said names are traditionally kebab case.
+
At the statefulset level, the following parameters are allowed:
+
+
storage_size: the size of the PV
+
runs: a list of containers to run, e.g. "baker", "accuser"
+
instances: a list of nodes to fire up, each is a dictionary
+defining:
+
+
bake_using_accounts: The name of the accounts that should be used
+for baking.
+
is_bootstrap_node: Is this node a bootstrap peer.
+
config: The config property should mimic the structure
+of a node's config.json.
+Run tezos-node config --help for more info.
The accounts object of values.yaml defines Tezos accounts used in the chart.
+By default no account is configured:
+
accounts: {}
+
accounts is a map where keys are account aliases and values are maps of
+fields key, is_bootstrap_baker_account, bootstrap_balance, signer_url
+protocols and operations_pool.
+
The key field can be set to a public or private key. For a bootstrap baker,
+it must be set to a private key. The key type will be recognized automatically,
+and the pod will fail if the key type is unexpected.
+
The protocols fields overrides the top-level protocols field described
+below and has the same syntax. This allows to set specific per-block votes per
+baker.
+
The operations_pool field instructs the baker to target a url for external
+mempool queries when baking a block. This is useful to run a Flashbake-capable baker.
+The entry is passed to baker binaries using the --operations-pool flag.
+
+
Public chains: Accounts do not get is_bootstrap_baker_account and
+bootstrap_balance fields.
+
Non-public chains: If you don't specify accounts needed by nodes, they can
+be created deterministically via the above setting. If specifying, accounts
+can be given a bootstrap balance and can also be configured to be bootstrap
+baker accounts. Accounts with balances set to "0" will be imported by the
+node but they will not be bootstrap accounts. If you don't set a bootstrap
+balance, it will default to the bootstrap_mutez field above.
A public key account can contain a signer_url to a remote signer
+that signs with the corresponding secret key. You don't need to
+set this if you're deploying a tezos-k8s signer into the same
+namespace of its baker. See octezSigners and tacoinfraSigners
+fields in values.yaml to define remote signers. (You shouldn't add things
+to the URL path such as the public key hash. It will be added automatically.)
An account being signed for by a Tacoinfra AWS KMS signer requires a
+key_id field. This should be a valid id of the AWS KMS key.
+The key's corresponding public key must be provided here as well.
Use nodes to configure the Tezos nodes running in your chart.
+
nodes is a dictionary where each key/value pair defines a statefulset and a
+number of instances thereof. The name (key) defines the name of the
+statefulset and will be the base of the pod names. The instances are defined
+as a list because their names are simply -N appended to the statefulsetname.
+Said names are typically kebab case.
+
Params at the statefulset level:
+
+
config: The "config" property should mimic the structure of a node's
+config.json. Run octez-node config --help for more info.
+If present at the statefulset level, it overrides it in
+node_globals.
+
env: A dictionary of containers mapped to a dictionary of env
+vars. The container name "all" will apply the env vars to
+all containers. The most specific wins. Find the names of
+the containers by examining an installed environment, or by
+looking at charts/tezos/templates/nodes.yaml. Please note
+that we truncate the protocol from the container name for
+bakers and accusers, so "baker-011-pthangz2" is configured
+using just "baker".
images: Optional specification of images to use for the tezos node and
+baker. Options are "octez" with a tezos/tezos image.
+If no images are provided, the containers will default to the images
+defined in the "images" field up above.
+
runs: A list of containers to run.
+Options being octez_node, accuser, baker, logger and vdf.
+
local_storage: Use local storage instead of a volume. The storage will be
+wiped when the node restarts for any reason. Useful when
+faster IO is desired. Defaults to false.
+
local_storage_pv_size: The size of the persistent volume to store identity.json
+and peers.json when local_storage is enabled. Some cloud
+providers have minimum pv size requirements for which this
+value can be used. Default value is 1Gi.
node_selector: Specify a kubernetes node selector in key: value format
+for your tezos nodes.
+
rpc_readiness_probe: Attach a probe to the node. The probe checks whether
+the RPC service is responsive, which should always be the
+case. Defaults to true.
+
bootstrapped_readiness_probe: Checks whether the most recent block is less than
+600 seconds old.
+Overrides rpc_readiness_probe. Defaults to True.
+True is good for RPC nodes, private nodes, and
+self-contained private chains.
+Recommended to set to False when bootstrapping a new
+chain with external bakers, such as a new test chain.
+Otherwise, the chain may become unreachable externally
+while waiting for other nodes to come online.
+
bootstrapped_startup_probe: Adds additional startup probe to check checks
+whether the most recent block is less than 600 seconds old.
+Defaults to False.
+
bootstrapped_liveness_probe: Adds additional liveness probe to check checks
+whether the most recent block is less than 600 seconds old.
+Defaults to False.
+
instances: A list of nodes to fire up, each is a dictionary defining:
+
+
bake_using_accounts: List of account names that should be used for baking.
+
authorized_keys: List of account names that should be used as keys to
+authenticate a baker to a signer.
+When a baker uses a remote signer that requires
+authentication, the relevant key from this list
+will be used to sign every signature request.
+
config: Same as the outer statefulset level config. It overrides the
+statefulset level.
+
is_bootstrap_node: Boolean for is this node a bootstrap peer.
+
identity: An optional map containing a pre-generated Tezos node
+identity. The identity file will be created at
+/var/tezos/node/data/identity.json.
+Required fields are peer_id, public_key, secret_key,
+and proof_of_work_timestamp.
+
+
+
+
Defaults are filled in for most of the above values. You can also provide
+global defaults for all nodes via a node_globals section which is also
+a dictionary. Currently, two keys are defined: config and env. These
+operate in the same way as the section in nodes going by the same name.
+
Example config:
+
node_globals: config: shell: history_mode: full env: baker: TEZOS_LOG: "* -> debug" nodes: rolling-baking-node: config: shell: history_mode: rolling env: all: TEZOS_CLIENT_UNSAFE_DISABLE_DISCLAIMER: "Y" snapshot-downloader: HTTP_PROXY: http://my-proxy.my-company.com:3128/ labels: # Example labels you might use to specify certain attributes of your nodes. peer_node: "true" # Forward P2P traffic to this node types instances rpc_node: "true" # Forward RPC traffic to this node types instances node_selector: nodeSelectorKey: nodeSelectorValue storage_size: 15Gi images: # (optional field) octez: tezos/tezos:v... local_storage: false runs: - octez_node - baker resources: requests: memory: 16192Mi limits: memory: 16192Mi instances: - bake_using_accounts: [baker0] is_bootstrap_node: true # Note the following config section overrides the above one even # if we make them the same in this example. config: shell: history_mode: rolling identity: peer_id: id... public_key: ... secret_key: ... proof_of_work_stamp: ... rolling-node: labels: # Example labels you might use to specify certain attributes of your nodes. peer_node: "true" rpc_node: "true" images: # (optional field) octez: tezos/tezos:v... runs: ["octez_node"] instances: - {} - {}
You may define remote signers with tezos-k8s. Bakers automatically use signers in their namespace
+that are configured to sign for the accounts they are baking for.
+By default no signer is configured.
octezSigners: tezos-signer-0: accounts: - baker0 authorized_keys: # Names of accounts used to authenticate the baker to the signer. # The signer will only sign a request from a baker authenticated # by an allowed key. # If set, any baker targeting this signer will automatically have # the associated private key accessible locally. - authorized-key-0
These signers deploy the Tacoifra remote signer,
+a program that passes signing requests to supported HSM or KMS devices.
+
Example:
+
tacoinfraSigners tacoinfra-signer: accounts: - tacoinfraSigner env: AWS_REGION: us-east-2 serviceAccount: create: true ## EKS example for setting the role-arn annotations: eks.amazonaws.com/role-arn: <SIGNER_ROLE_ARN>
+
+
\ No newline at end of file
diff --git a/assets/css/styles.2af72dfa.css b/assets/css/styles.2af72dfa.css
new file mode 100644
index 0000000..5caae79
--- /dev/null
+++ b/assets/css/styles.2af72dfa.css
@@ -0,0 +1 @@
+.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#2e8555;--ifm-color-primary-dark:#29784c;--ifm-color-primary-darker:#277148;--ifm-color-primary-darkest:#205d3b;--ifm-color-primary-light:#33925d;--ifm-color-primary-lighter:#359962;--ifm-color-primary-lightest:#3cad6e;--ifm-code-font-size:95%;--docusaurus-announcement-bar-height:auto;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_Gvgb,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_BuS1>:last-child,.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child,.footer__items{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{content:"";height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#25c2a0;--ifm-color-primary-dark:#21af90;--ifm-color-primary-darker:#1fa588;--ifm-color-primary-darkest:#1a8870;--ifm-color-primary-light:#29d5b0;--ifm-color-primary-lighter:#32d8b4;--ifm-color-primary-lightest:#4fddbf}.docusaurus-highlight-code-line{background-color:#0000001a;display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}[data-theme=dark] .docusaurus-highlight-code-line{background-color:#0000004d}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#__docusaurus-base-url-issue-banner-container,.themedComponent_mlkZ,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}.iconExternalLink_nPIU{margin-left:.3rem}.dropdownNavbarItemMobile_S0Fm{cursor:pointer}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}@supports selector(:has(*)){.navbarSearchContainer_Bca1:not(:has(>*)){display:none}}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.img_ev3q{height:auto}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.docSidebarContainer_YfHR,.sidebarLogo_isFc{display:none}.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.navbarSearchContainer_Bca1{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn{max-width:75%!important}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_i1dp,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_TmdG{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_i1dp{transform:rotate(180deg)}.docSidebarContainer_YfHR{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_aRkj{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}}
\ No newline at end of file
diff --git a/assets/js/08238c6d.d7d4875d.js b/assets/js/08238c6d.d7d4875d.js
new file mode 100644
index 0000000..fee30b8
--- /dev/null
+++ b/assets/js/08238c6d.d7d4875d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[383],{219:(M,j,L)=>{L.r(j),L.d(j,{assets:()=>D,contentTitle:()=>i,default:()=>I,frontMatter:()=>t,metadata:()=>e,toc:()=>y});var N=L(5893),u=L(1151);const t={},i="Overview",e={id:"index",title:"Overview",description:"TezosKubernetes",source:"@site/index.md",sourceDirName:".",slug:"/",permalink:"/",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"tezosK8sSidebar",next:{title:"Prerequisites",permalink:"/Prerequisites"}},D={},y=[{value:"Quick start",id:"quick-start",level:2}];function A(M){const j={a:"a",code:"code",h1:"h1",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,u.a)(),...M.components};return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(j.h1,{id:"overview",children:"Overview"}),"\n",(0,N.jsxs)(j.p,{children:[(0,N.jsx)(j.img,{alt:"Tezos",src:L(7505).Z+"",width:"193",height:"237"}),(0,N.jsx)(j.img,{alt:"Kubernetes",src:L(100).Z+"",width:"64",height:"64"})]}),"\n",(0,N.jsxs)(j.p,{children:["Tezos-k8s is a collection of Helm charts and container images that can be used to deploy ",(0,N.jsx)(j.a,{href:"https://tezos.com",children:"Tezos"})," blockchain infrastructure on a Kubernetes cluster."]}),"\n",(0,N.jsx)(j.p,{children:"Use it to deploy:"}),"\n",(0,N.jsxs)(j.ul,{children:["\n",(0,N.jsx)(j.li,{children:"a Tezos node"}),"\n",(0,N.jsx)(j.li,{children:"a Tezos RPC service"}),"\n",(0,N.jsx)(j.li,{children:"a Tezos baker"}),"\n",(0,N.jsx)(j.li,{children:"a Tezos private chain"}),"\n"]}),"\n",(0,N.jsx)(j.p,{children:"on your laptop or in a cloud platform such as AWS, Digitalocean or GCP."}),"\n",(0,N.jsx)(j.h2,{id:"quick-start",children:"Quick start"}),"\n",(0,N.jsxs)(j.p,{children:["We assume you have access to a Kubernetes cluster and helm installed (see ",(0,N.jsx)(j.a,{href:"Prerequisites",children:"Prerequisites"}),")."]}),"\n",(0,N.jsx)(j.p,{children:"To deploy a Tezos mainnet node:"}),"\n",(0,N.jsxs)(j.ol,{children:["\n",(0,N.jsx)(j.li,{children:"Add the Tacoinfra Helm chart repository to your local Helm installation:"}),"\n"]}),"\n",(0,N.jsx)(j.pre,{children:(0,N.jsx)(j.code,{children:"helm repo add tacoinfra https://tacoinfra.github.io/tezos-helm-charts/\n"})}),"\n",(0,N.jsxs)(j.ol,{start:"2",children:["\n",(0,N.jsx)(j.li,{children:"Install a Tezos node:"}),"\n"]}),"\n",(0,N.jsx)(j.pre,{children:(0,N.jsx)(j.code,{children:"helm install tezos-mainnet tacoinfra/tezos-chain \\\n--namespace tacoinfra --create-namespace\n"})}),"\n",(0,N.jsxs)(j.p,{children:["k8s will spin up an ",(0,N.jsx)(j.a,{href:"https://tezos.gitlab.io/",children:"Octez"})," node which will download and import a Tezos mainnet snapshot. This will take a few minutes."]})]})}function I(M={}){const{wrapper:j}={...(0,u.a)(),...M.components};return j?(0,N.jsx)(j,{...M,children:(0,N.jsx)(A,{...M})}):A(M)}},100:(M,j,L)=>{L.d(j,{Z:()=>N});const N="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0Ij48cGF0aCBkPSJNMTUuOS40NzZhMi4xNCAyLjE0IDAgMCAwLS44MjMuMjE4TDMuOTMyIDYuMDFjLS41ODIuMjc3LTEuMDA1LjgwNC0xLjE1IDEuNDMyTC4wNTQgMTkuMzczYy0uMTMuNTYtLjAyNSAxLjE0Ny4zIDEuNjI3cS4wNTcuMDg3LjEyLjE2OGw3LjcgOS41NzRjLjQwNy41IDEuMDE4Ljc4NyAxLjY2Mi43ODRoMTIuMzVjLjY0Ni4wMDEgMS4yNTgtLjMgMS42NjQtLjc5M2w3LjY5Ni05LjU3NmMuNDA0LS41LjU1NS0xLjE2LjQtMS43ODZMMjkuMiA3LjQzYy0uMTQ1LS42MjgtLjU3LTEuMTU1LTEuMTUtMS40MzJMMTYuOTIzLjY5NUEyLjE0IDIuMTQgMCAwIDAgMTUuODkuNDc2eiIgZmlsbD0iIzMyNmNlNSIvPjxwYXRoIGQ9Ik0xNi4wMDIgNC41NDJjLS4zODQuMDI3LS42NzUuMzU2LS42NTUuNzR2LjE4OGMuMDE4LjIxMy4wNS40MjQuMDkyLjYzM2E2LjIyIDYuMjIgMCAwIDEgLjA2NiAxLjIxYy0uMDM4LjEzMy0uMTE0LjI1My0uMjE4LjM0NWwtLjAxNS4yODJjLS40MDUuMDM0LS44MDcuMDk2LTEuMjAzLjE4Ni0xLjY2Ni4zNzYtMy4xODMgMS4yNC00LjM1NCAyLjQ4NWwtLjI0LS4xN2MtLjEzMi4wNC0uMjc0LjAyNS0uMzk1LS4wNGE2LjIyIDYuMjIgMCAwIDEtLjg5Ny0uODEgNS41NSA1LjU1IDAgMCAwLS40MzctLjQ2NWwtLjE0OC0uMTE4Yy0uMTMyLS4xMDYtLjI5NC0uMTY3LS40NjMtLjE3NWEuNjQuNjQgMCAwIDAtLjUzMS4yMzZjLS4yMjYuMzE3LS4xNTIuNzU2LjE2NC45ODNsLjEzOC4xMWE1LjU1IDUuNTUgMCAwIDAgLjU1Mi4zMjNjLjM1NC4xOTcuNjg4LjQyOC45OTguN2EuNzQuNzQgMCAwIDEgLjEzMy4zODRsLjIxOC4yYy0xLjE3NyAxLjc2Ni0xLjY2IDMuOTA1LTEuMzU4IDYuMDA2bC0uMjguMDhjLS4wNzMuMTE2LS4xNy4yMTUtLjI4Ni4yODhhNi4yMiA2LjIyIDAgMCAxLTEuMTk0LjE5NyA1LjU3IDUuNTcgMCAwIDAtLjY0LjA1bC0uMTc3LjA0aC0uMDJhLjY3LjY3IDAgMCAwLS4zODcgMS4xMzIuNjcuNjcgMCAwIDAgLjY4NC4xNjVoLjAxM2wuMTgtLjAyYy4yMDMtLjA2LjQwMy0uMTM0LjU5OC0uMjE4LjM3NS0uMTUuNzY0LS4yNjUgMS4xNjItLjM0LjEzOC4wMDguMjcuMDU1LjM4Mi4xMzVsLjMtLjA1Yy42NSAyLjAxNyAyLjAxNiAzLjcyNiAzLjg0IDQuODAzbC0uMTIyLjI1NWMuMDU2LjExNy4wNzcuMjQ3LjA2LjM3Ni0uMTY1LjM4Mi0uMzY3Ljc0OC0uNjAzIDEuMDkyYTUuNTggNS41OCAwIDAgMC0uMzU4LjUzM2wtLjA4NS4xOGEuNjcuNjcgMCAwIDAgLjY1IDEuMDAxLjY3LjY3IDAgMCAwIC41NTMtLjQzMmwuMDgzLS4xN2MuMDc2LS4yLjE0LS40MDQuMTkyLS42MS4xNzctLjQzNy4yNzMtLjkwNi41MTUtMS4xOTZhLjU0LjU0IDAgMCAxIC4yODYtLjE0bC4xNS0uMjczYTguNjIgOC42MiAwIDAgMCA2LjE0Ni4wMTVsLjEzMy4yNTVjLjEzNi4wMi4yNTguMDk1LjM0LjIwNS4xODguMzU4LjM0LjczMy40NTYgMS4xMmE1LjU3IDUuNTcgMCAwIDAgLjE5NC42MTFsLjA4My4xN2EuNjcuNjcgMCAwIDAgMS4xODcuMTMxLjY3LjY3IDAgMCAwIC4wMTYtLjcwMWwtLjA4Ny0uMThhNS41NSA1LjU1IDAgMCAwLS4zNTgtLjUzMWMtLjIzLS4zMzItLjQyOC0uNjg2LS42LTEuMDU3YS41Mi41MiAwIDAgMSAuMDY4LS40IDIuMjkgMi4yOSAwIDAgMS0uMTExLS4yNjljMS44Mi0xLjA4NSAzLjE4LTIuOCAzLjgyMy00LjgybC4yODQuMDVjLjEwMi0uMDkzLjIzNi0uMTQyLjM3My0uMTM4LjM5Ny4wNzYuNzg2LjIgMS4xNjIuMzQuMTk1LjA5LjM5NS4xNjYuNTk4LjIzLjA0OC4wMTMuMTE4LjAyNC4xNzIuMDM3aC4wMTNhLjY3LjY3IDAgMCAwIC44NDEtLjg1MS42Ny42NyAwIDAgMC0uNTQ0LS40NDZsLS4xOTQtLjA0NmE1LjU3IDUuNTcgMCAwIDAtLjY0LS4wNWMtLjQwNC0uMDI2LS44MDQtLjA5Mi0xLjE5NC0uMTk3LS4xMi0uMDY3LS4yMi0uMTY3LS4yODgtLjI4OGwtLjI3LS4wOGE4LjY1IDguNjUgMCAwIDAtMS4zODYtNS45OTNsLjIzNi0uMjE4Yy0uMDEtLjEzNy4wMzUtLjI3My4xMjQtLjM3OC4zMDctLjI2NC42NC0uNDk3Ljk5LS42OTZhNS41NyA1LjU3IDAgMCAwIC41NTItLjMyM2wuMTQ2LS4xMThhLjY3LjY3IDAgMCAwLS4xMzMtMS4yMDIuNjcuNjcgMCAwIDAtLjY5Ni4xNjFsLS4xNDguMTE4YTUuNTcgNS41NyAwIDAgMC0uNDM3LjQ2NWMtLjI2NC4zMDItLjU1Ni41NzctLjg3My44MjNhLjc0Ljc0IDAgMCAxLS40MDQuMDQ0bC0uMjUzLjE4Yy0xLjQ2LTEuNTMtMy40MjctMi40OC01LjUzNS0yLjY3IDAtLjEtLjAxMy0uMjUtLjAxNS0uMjk3LS4xMTMtLjA3OC0uMTkyLS4xOTctLjIxOC0uMzMyYTYuMjMgNi4yMyAwIDAgMSAuMDc2LTEuMjA3Yy4wNDMtLjIxLjA3My0uNDIuMDkyLS42MzN2LS4yYy4wMi0uMzg0LS4yNy0uNzEzLS42NTUtLjc0em0tLjgzNCA1LjE2NmwtLjIgMy40OTNoLS4wMTVjLS4wMS4yMTYtLjEzNy40LS4zMzIuNTA0cy0uNDI2LjA3My0uNi0uMDU0bC0yLjg2NS0yLjAzYTYuODYgNi44NiAwIDAgMSAzLjMwMy0xLjc5OWMuMjM0LS4wNS40Ny0uMDg4LjcwNy0uMTE0em0xLjY2OCAwYzEuNTA1LjE4NyAyLjkwNi44NjMgMy45OSAxLjkyNGwtMi44MzggMi4wMTdjLS4xNzUuMTQtLjQxNS4xNjgtLjYxOC4wNzJzLS4zMzMtLjMtLjMzNi0uNTI0em0tNi43MiAzLjIyN2wyLjYyIDIuMzM4di4wMTVjLjE2My4xNDIuMjM0LjM2My4xODYuNTc0cy0uMjEuMzc4LS40MTcuNDM1di4wMWwtMy4zNjIuOTY3YTYuODYgNi44NiAwIDAgMSAuOTc0LTQuMzR6bTExLjc1MyAwYy43OTYgMS4yOTUgMS4xNDggMi44MTQgMS4wMDIgNC4zMjdsLTMuMzY3LS45N3YtLjAxM2MtLjIxLS4wNTctLjM3LS4yMjQtLjQxNy0uNDM1cy4wMjMtLjQzLjE4Ni0uNTc0bDIuNi0yLjMyN3ptLTYuNDA0IDIuNTJoMS4wNzJsLjY1NS44MzItLjIzOCAxLjA0LS45NjMuNDYzLS45NjUtLjQ2My0uMjI3LTEuMDR6bTMuNDM0IDIuODM4Yy4wNDUtLjAwNS4xLS4wMDUuMTM1IDBsMy40NjcuNTg1Yy0uNSAxLjQ0LTEuNDg3IDIuNjctMi43NzUgMy40OTNsLTEuMzQtMy4yNDRhLjU5LjU5IDAgMCAxIC41MDktLjgxOXptLTUuODIzLjAxNWMuMTk2LjAwMy4zNzcuMTA0LjQ4NC4yNjhzLjEyNC4zNy4wNDcuNTV2LjAxM2wtMS4zMzIgMy4yMThDMTEgMjEuNTQgMTAuMDMyIDIwLjMyNSA5LjUxNyAxOC45bDMuNDM3LS41ODNjLjAzOC0uMDA0LjA3Ny0uMDA0LjExNiAwem0yLjkwNCAxLjRhLjU5LjU5IDAgMCAxIC41MzcuMzA4aC4wMTNsMS42OTQgMy4wNTctLjY3Ny4yYy0xLjI0Ni4yODUtMi41NDcuMjE4LTMuNzU4LS4xOTRsMS43LTMuMDU3Yy4xMDMtLjE4LjI5My0uMjkuNS0uMjk1eiIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9Ii4wNTUiLz48L3N2Zz4="},7505:(M,j,L)=>{L.d(j,{Z:()=>N});const N="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHZpZXdCb3g9IjAgMCAxOTMgMjM3Ij48cGF0aCBmaWxsPSIjMjYyZDMzIiBkPSJNMTc1LjggMTcxLjJjLTIuMy00MC43LTUzLjUtNTkuMi01OC40LTYxLjEtLjItLjEtLjItLjMtLjEtLjVsNTIuOC01M3YtNS43YzAtLjktLjgtMS43LTEuNy0xLjdINzEuMVY3LjdsLTM1LjkgNy41djUuNGgyczguOCAwIDguOCA4Ljh2MTkuN0gxOC4yYTEgMSAwIDAgMC0xIDF2MTIuNWgyOC45djY3LjljMCAyMS4zIDEzLjcgMzYuMSAzNy43IDM0LjEgNS4xLS40IDkuOC0yLjQgMTMuOC01YTYuMyA2LjMgMCAwIDAgMi45LTUuM3YtNi43Yy03LjggNS4yLTE0LjQgNC45LTE0LjQgNC45LTE1LjIgMC0xNC45LTE5LjMtMTQuOS0xOS4zVjYyLjZoNzBsLTUwLjQgNTAuOC0uMiAxMmMwIC4yLjEuMy4zLjMgNDYuMiA3LjggNTguNyAzNy43IDU4LjcgNDYuNCAwIDAgNSA0Mi4zLTM3LjMgNDUuMiAwIDAtMjcuNyAxLjItMzIuNi05LjktLjItLjQgMC0uOC40LTEgNC42LTIuMSA3LjctNi4yIDcuNy0xMS43IDAtOC4yLTUtMTQuOS0xNS41LTE0LjktOC41IDAtMTUuNSA2LjctMTUuNSAxNC45IDAgMC00IDM1LjYgNTUuNCAzNC42IDY3LjgtMS4yIDYzLjYtNTguMSA2My42LTU4LjF6Ii8+PC9zdmc+Cg=="},1151:(M,j,L)=>{L.d(j,{Z:()=>e,a:()=>i});var N=L(7294);const u={},t=N.createContext(u);function i(M){const j=N.useContext(t);return N.useMemo((function(){return"function"==typeof M?M(j):{...j,...M}}),[j,M])}function e(M){let j;return j=M.disableParentContext?"function"==typeof M.components?M.components(u):M.components||u:i(M.components),N.createElement(t.Provider,{value:j},M.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/17896441.0192f0b5.js b/assets/js/17896441.0192f0b5.js
new file mode 100644
index 0000000..746a3ff
--- /dev/null
+++ b/assets/js/17896441.0192f0b5.js
@@ -0,0 +1 @@
+(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[918],{7212:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>qt});var s=n(7294),a=n(1944),o=n(902),i=n(5893);const l=s.createContext(null);function c(e){let{children:t,content:n}=e;const a=function(e){return(0,s.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return(0,i.jsx)(l.Provider,{value:a,children:t})}function r(){const e=(0,s.useContext)(l);if(null===e)throw new o.i6("DocProvider");return e}function d(){const{metadata:e,frontMatter:t,assets:n}=r();return(0,i.jsx)(a.d,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var u=n(512),m=n(7524),h=n(5999),p=n(3692);function f(e){const{permalink:t,title:n,subLabel:s,isNext:a}=e;return(0,i.jsxs)(p.Z,{className:(0,u.Z)("pagination-nav__link",a?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[s&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:s}),(0,i.jsx)("div",{className:"pagination-nav__label",children:n})]})}function x(e){const{previous:t,next:n}=e;return(0,i.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,h.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[t&&(0,i.jsx)(f,{...t,subLabel:(0,i.jsx)(h.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),n&&(0,i.jsx)(f,{...n,subLabel:(0,i.jsx)(h.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}function b(){const{metadata:e}=r();return(0,i.jsx)(x,{previous:e.previous,next:e.next})}var g=n(2263),j=n(143),v=n(5281),N=n(373),C=n(4477);const k={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,i.jsx)(h.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:(0,i.jsx)("b",{children:n.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,i.jsx)(h.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:(0,i.jsx)("b",{children:n.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function L(e){const t=k[e.versionMetadata.banner];return(0,i.jsx)(t,{...e})}function y(e){let{versionLabel:t,to:n,onClick:s}=e;return(0,i.jsx)(h.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:(0,i.jsx)("b",{children:(0,i.jsx)(p.Z,{to:n,onClick:s,children:(0,i.jsx)(h.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function _(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:s}}=(0,g.Z)(),{pluginId:a}=(0,j.gA)({failfast:!0}),{savePreferredVersionName:o}=(0,N.J)(a),{latestDocSuggestion:l,latestVersionSuggestion:c}=(0,j.Jo)(a),r=l??(d=c).docs.find((e=>e.id===d.mainDocId));var d;return(0,i.jsxs)("div",{className:(0,u.Z)(t,v.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,i.jsx)("div",{children:(0,i.jsx)(L,{siteTitle:s,versionMetadata:n})}),(0,i.jsx)("div",{className:"margin-top--md",children:(0,i.jsx)(y,{versionLabel:c.label,to:r.path,onClick:()=>o(c.name)})})]})}function B(e){let{className:t}=e;const n=(0,C.E)();return n.banner?(0,i.jsx)(_,{className:t,versionMetadata:n}):null}function w(e){let{className:t}=e;const n=(0,C.E)();return n.badge?(0,i.jsx)("span",{className:(0,u.Z)(t,v.k.docs.docVersionBadge,"badge badge--secondary"),children:(0,i.jsx)(h.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label},children:"Version: {versionLabel}"})}):null}function Z(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n}=e;return(0,i.jsx)(h.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,i.jsx)("b",{children:(0,i.jsx)("time",{dateTime:new Date(1e3*t).toISOString(),children:n})})},children:" on {date}"})}function T(e){let{lastUpdatedBy:t}=e;return(0,i.jsx)(h.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,i.jsx)("b",{children:t})},children:" by {user}"})}function E(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n,lastUpdatedBy:s}=e;return(0,i.jsxs)("span",{className:v.k.common.lastUpdated,children:[(0,i.jsx)(h.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&n?(0,i.jsx)(Z,{lastUpdatedAt:t,formattedLastUpdatedAt:n}):"",byUser:s?(0,i.jsx)(T,{lastUpdatedBy:s}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const H={iconEdit:"iconEdit_Z9Sw"};function A(e){let{className:t,...n}=e;return(0,i.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,u.Z)(H.iconEdit,t),"aria-hidden":"true",...n,children:(0,i.jsx)("g",{children:(0,i.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function I(e){let{editUrl:t}=e;return(0,i.jsxs)(p.Z,{to:t,className:v.k.common.editThisPage,children:[(0,i.jsx)(A,{}),(0,i.jsx)(h.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}const M={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function S(e){let{permalink:t,label:n,count:s}=e;return(0,i.jsxs)(p.Z,{href:t,className:(0,u.Z)(M.tag,s?M.tagWithCount:M.tagRegular),children:[n,s&&(0,i.jsx)("span",{children:s})]})}const U={tags:"tags_jXut",tag:"tag_QGVx"};function z(e){let{tags:t}=e;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("b",{children:(0,i.jsx)(h.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,i.jsx)("ul",{className:(0,u.Z)(U.tags,"padding--none","margin-left--sm"),children:t.map((e=>{let{label:t,permalink:n}=e;return(0,i.jsx)("li",{className:U.tag,children:(0,i.jsx)(S,{label:t,permalink:n})},n)}))})]})}const V={lastUpdated:"lastUpdated_vwxv"};function R(e){return(0,i.jsx)("div",{className:(0,u.Z)(v.k.docs.docFooterTagsRow,"row margin-bottom--sm"),children:(0,i.jsx)("div",{className:"col",children:(0,i.jsx)(z,{...e})})})}function O(e){let{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:s,formattedLastUpdatedAt:a}=e;return(0,i.jsxs)("div",{className:(0,u.Z)(v.k.docs.docFooterEditMetaRow,"row"),children:[(0,i.jsx)("div",{className:"col",children:t&&(0,i.jsx)(I,{editUrl:t})}),(0,i.jsx)("div",{className:(0,u.Z)("col",V.lastUpdated),children:(n||s)&&(0,i.jsx)(E,{lastUpdatedAt:n,formattedLastUpdatedAt:a,lastUpdatedBy:s})})]})}function P(){const{metadata:e}=r(),{editUrl:t,lastUpdatedAt:n,formattedLastUpdatedAt:s,lastUpdatedBy:a,tags:o}=e,l=o.length>0,c=!!(t||n||a);return l||c?(0,i.jsxs)("footer",{className:(0,u.Z)(v.k.docs.docFooter,"docusaurus-mt-lg"),children:[l&&(0,i.jsx)(R,{tags:o}),c&&(0,i.jsx)(O,{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:a,formattedLastUpdatedAt:s})]}):null}var $=n(6043),D=n(6668);function W(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const s=n.slice(2,e.level);e.parentIndex=Math.max(...s),n[e.level]=t}));const s=[];return t.forEach((e=>{const{parentIndex:n,...a}=e;n>=0?t[n].children.push(a):s.push(a)})),s}function F(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:s}=e;return t.flatMap((e=>{const t=F({toc:e.children,minHeadingLevel:n,maxHeadingLevel:s});return function(e){return e.level>=n&&e.level<=s}(e)?[{...e,children:t}]:t}))}function q(e){const t=e.getBoundingClientRect();return t.top===t.bottom?q(e.parentNode):t}function G(e,t){let{anchorTopOffset:n}=t;const s=e.find((e=>q(e).top>=n));if(s){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function Y(e){const t=(0,s.useRef)(void 0),n=J();(0,s.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:s,linkActiveClassName:a,minHeadingLevel:o,maxHeadingLevel:i}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(s),l=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const s=[];for(let a=t;a<=n;a+=1)s.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(s.join()))}({minHeadingLevel:o,maxHeadingLevel:i}),c=G(l,{anchorTopOffset:n.current}),r=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(a),e.classList.add(a),t.current=e):e.classList.remove(a)}(e,e===r)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,n])}function Q(e){let{toc:t,className:n,linkClassName:s,isChild:a}=e;return t.length?(0,i.jsx)("ul",{className:a?void 0:n,children:t.map((e=>(0,i.jsxs)("li",{children:[(0,i.jsx)(p.Z,{to:`#${e.id}`,className:s??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,i.jsx)(Q,{isChild:!0,toc:e.children,className:n,linkClassName:s})]},e.id)))}):null}const X=s.memo(Q);function K(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:a="table-of-contents__link",linkActiveClassName:o,minHeadingLevel:l,maxHeadingLevel:c,...r}=e;const d=(0,D.L)(),u=l??d.tableOfContents.minHeadingLevel,m=c??d.tableOfContents.maxHeadingLevel,h=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,s.useMemo)((()=>F({toc:W(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:u,maxHeadingLevel:m});return Y((0,s.useMemo)((()=>{if(a&&o)return{linkClassName:a,linkActiveClassName:o,minHeadingLevel:u,maxHeadingLevel:m}}),[a,o,u,m])),(0,i.jsx)(X,{toc:h,className:n,linkClassName:a,...r})}const ee={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function te(e){let{collapsed:t,...n}=e;return(0,i.jsx)("button",{type:"button",...n,className:(0,u.Z)("clean-btn",ee.tocCollapsibleButton,!t&&ee.tocCollapsibleButtonExpanded,n.className),children:(0,i.jsx)(h.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const ne={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function se(e){let{toc:t,className:n,minHeadingLevel:s,maxHeadingLevel:a}=e;const{collapsed:o,toggleCollapsed:l}=(0,$.u)({initialState:!0});return(0,i.jsxs)("div",{className:(0,u.Z)(ne.tocCollapsible,!o&&ne.tocCollapsibleExpanded,n),children:[(0,i.jsx)(te,{collapsed:o,onClick:l}),(0,i.jsx)($.z,{lazy:!0,className:ne.tocCollapsibleContent,collapsed:o,children:(0,i.jsx)(K,{toc:t,minHeadingLevel:s,maxHeadingLevel:a})})]})}const ae={tocMobile:"tocMobile_ITEo"};function oe(){const{toc:e,frontMatter:t}=r();return(0,i.jsx)(se,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,u.Z)(v.k.docs.docTocMobile,ae.tocMobile)})}const ie={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},le="table-of-contents__link toc-highlight",ce="table-of-contents__link--active";function re(e){let{className:t,...n}=e;return(0,i.jsx)("div",{className:(0,u.Z)(ie.tableOfContents,"thin-scrollbar",t),children:(0,i.jsx)(K,{...n,linkClassName:le,linkActiveClassName:ce})})}function de(){const{toc:e,frontMatter:t}=r();return(0,i.jsx)(re,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:v.k.docs.docTocDesktop})}var ue=n(2503),me=n(1151),he=n(5742),pe=n(2389),fe=n(2949);function xe(){const{prism:e}=(0,D.L)(),{colorMode:t}=(0,fe.I)(),n=e.theme,s=e.darkTheme||n;return"dark"===t?s:n}var be=n(7594),ge=n.n(be);const je=/title=(?["'])(?.*?)\1/,ve=/\{(?[\d,-]+)\}/,Ne={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},Ce={...Ne,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},vbnet:{start:"(?:_\\s*)?['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},ke=Object.keys(Ne);function Le(e,t){const n=e.map((e=>{const{start:n,end:s}=Ce[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${s})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function ye(e,t){let n=e.replace(/\n$/,"");const{language:s,magicComments:a,metastring:o}=t;if(o&&ve.test(o)){const e=o.match(ve).groups.range;if(0===a.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${o}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=a[0].className,s=ge()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(s),code:n}}if(void 0===s)return{lineClassNames:{},code:n};const i=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return Le(["js","jsBlock"],t);case"jsx":case"tsx":return Le(["js","jsBlock","jsx"],t);case"html":return Le(["js","jsBlock","html"],t);case"python":case"py":case"bash":return Le(["bash"],t);case"markdown":case"md":return Le(["html","jsx","bash"],t);case"tex":case"latex":case"matlab":return Le(["tex"],t);case"lua":case"haskell":case"sql":return Le(["lua"],t);case"wasm":return Le(["wasm"],t);case"vb":case"vba":case"visual-basic":return Le(["vb","rem"],t);case"vbnet":return Le(["vbnet","rem"],t);case"batch":return Le(["rem"],t);case"basic":return Le(["rem","f90"],t);case"fsharp":return Le(["js","ml"],t);case"ocaml":case"sml":return Le(["ml"],t);case"fortran":return Le(["f90"],t);case"cobol":return Le(["cobol"],t);default:return Le(ke,t)}}(s,a),l=n.split("\n"),c=Object.fromEntries(a.map((e=>[e.className,{start:0,range:""}]))),r=Object.fromEntries(a.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),d=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),u=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let h=0;hvoid 0!==e));r[t]?c[r[t]].range+=`${h},`:d[t]?c[d[t]].start=h:u[t]&&(c[u[t]].range+=`${c[u[t]].start}-${h-1},`),l.splice(h,1)}n=l.join("\n");const m={};return Object.entries(c).forEach((e=>{let[t,{range:n}]=e;ge()(n).forEach((e=>{m[e]??=[],m[e].push(t)}))})),{lineClassNames:m,code:n}}const _e={codeBlockContainer:"codeBlockContainer_Ckt0"};function Be(e){let{as:t,...n}=e;const s=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[s,a]=e;const o=t[s];o&&"string"==typeof a&&(n[o]=a)})),n}(xe());return(0,i.jsx)(t,{...n,style:s,className:(0,u.Z)(n.className,_e.codeBlockContainer,v.k.common.codeBlock)})}const we={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function Ze(e){let{children:t,className:n}=e;return(0,i.jsx)(Be,{as:"pre",tabIndex:0,className:(0,u.Z)(we.codeBlockStandalone,"thin-scrollbar",n),children:(0,i.jsx)("code",{className:we.codeBlockLines,children:t})})}const Te={attributes:!0,characterData:!0,childList:!0,subtree:!0};function Ee(e,t){const[n,a]=(0,s.useState)(),i=(0,s.useCallback)((()=>{a(e.current?.closest("[role=tabpanel][hidden]"))}),[e,a]);(0,s.useEffect)((()=>{i()}),[i]),function(e,t,n){void 0===n&&(n=Te);const a=(0,o.zX)(t),i=(0,o.Ql)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(a);return e&&t.observe(e,i),()=>t.disconnect()}),[e,a,i])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),i())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}var He=n(2573);const Ae={codeLine:"codeLine_lJS_",codeLineNumber:"codeLineNumber_Tfdd",codeLineContent:"codeLineContent_feaV"};function Ie(e){let{line:t,classNames:n,showLineNumbers:s,getLineProps:a,getTokenProps:o}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const l=a({line:t,className:(0,u.Z)(n,s&&Ae.codeLine)}),c=t.map(((e,t)=>(0,i.jsx)("span",{...o({token:e,key:t})},t)));return(0,i.jsxs)("span",{...l,children:[s?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("span",{className:Ae.codeLineNumber}),(0,i.jsx)("span",{className:Ae.codeLineContent,children:c})]}):c,(0,i.jsx)("br",{})]})}function Me(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function Se(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const Ue={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function ze(e){let{code:t,className:n}=e;const[a,o]=(0,s.useState)(!1),l=(0,s.useRef)(void 0),c=(0,s.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const s=document.createElement("textarea"),a=document.activeElement;s.value=e,s.setAttribute("readonly",""),s.style.contain="strict",s.style.position="absolute",s.style.left="-9999px",s.style.fontSize="12pt";const o=document.getSelection(),i=o.rangeCount>0&&o.getRangeAt(0);n.append(s),s.select(),s.selectionStart=0,s.selectionEnd=e.length;let l=!1;try{l=document.execCommand("copy")}catch{}s.remove(),i&&(o.removeAllRanges(),o.addRange(i)),a&&a.focus()}(t),o(!0),l.current=window.setTimeout((()=>{o(!1)}),1e3)}),[t]);return(0,s.useEffect)((()=>()=>window.clearTimeout(l.current)),[]),(0,i.jsx)("button",{type:"button","aria-label":a?(0,h.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,h.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,h.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,u.Z)("clean-btn",n,Ue.copyButton,a&&Ue.copyButtonCopied),onClick:c,children:(0,i.jsxs)("span",{className:Ue.copyButtonIcons,"aria-hidden":"true",children:[(0,i.jsx)(Me,{className:Ue.copyButtonIcon}),(0,i.jsx)(Se,{className:Ue.copyButtonSuccessIcon})]})})}function Ve(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const Re={wordWrapButtonIcon:"wordWrapButtonIcon_Bwma",wordWrapButtonEnabled:"wordWrapButtonEnabled_EoeP"};function Oe(e){let{className:t,onClick:n,isEnabled:s}=e;const a=(0,h.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,i.jsx)("button",{type:"button",onClick:n,className:(0,u.Z)("clean-btn",t,s&&Re.wordWrapButtonEnabled),"aria-label":a,title:a,children:(0,i.jsx)(Ve,{className:Re.wordWrapButtonIcon,"aria-hidden":"true"})})}function Pe(e){let{children:t,className:n="",metastring:a,title:o,showLineNumbers:l,language:c}=e;const{prism:{defaultLanguage:r,magicComments:d}}=(0,D.L)(),m=function(e){return e?.toLowerCase()}(c??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??r),h=xe(),p=function(){const[e,t]=(0,s.useState)(!1),[n,a]=(0,s.useState)(!1),o=(0,s.useRef)(null),i=(0,s.useCallback)((()=>{const n=o.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[o,e]),l=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=o.current,n=e>t||o.current.querySelector("code").hasAttribute("style");a(n)}),[o]);return Ee(o,l),(0,s.useEffect)((()=>{l()}),[e,l]),(0,s.useEffect)((()=>(window.addEventListener("resize",l,{passive:!0}),()=>{window.removeEventListener("resize",l)})),[l]),{codeBlockRef:o,isEnabled:e,isCodeScrollable:n,toggle:i}}(),f=function(e){return e?.match(je)?.groups.title??""}(a)||o,{lineClassNames:x,code:b}=ye(t,{metastring:a,language:m,magicComments:d}),g=l??function(e){return Boolean(e?.includes("showLineNumbers"))}(a);return(0,i.jsxs)(Be,{as:"div",className:(0,u.Z)(n,m&&!n.includes(`language-${m}`)&&`language-${m}`),children:[f&&(0,i.jsx)("div",{className:we.codeBlockTitle,children:f}),(0,i.jsxs)("div",{className:we.codeBlockContent,children:[(0,i.jsx)(He.y$,{theme:h,code:b,language:m??"text",children:e=>{let{className:t,style:n,tokens:s,getLineProps:a,getTokenProps:o}=e;return(0,i.jsx)("pre",{tabIndex:0,ref:p.codeBlockRef,className:(0,u.Z)(t,we.codeBlock,"thin-scrollbar"),style:n,children:(0,i.jsx)("code",{className:(0,u.Z)(we.codeBlockLines,g&&we.codeBlockLinesWithNumbering),children:s.map(((e,t)=>(0,i.jsx)(Ie,{line:e,getLineProps:a,getTokenProps:o,classNames:x[t],showLineNumbers:g},t)))})})}}),(0,i.jsxs)("div",{className:we.buttonGroup,children:[(p.isEnabled||p.isCodeScrollable)&&(0,i.jsx)(Oe,{className:we.codeButton,onClick:()=>p.toggle(),isEnabled:p.isEnabled}),(0,i.jsx)(ze,{className:we.codeButton,code:b})]})]})]})}function $e(e){let{children:t,...n}=e;const a=(0,pe.Z)(),o=function(e){return s.Children.toArray(e).some((e=>(0,s.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),l="string"==typeof o?Pe:Ze;return(0,i.jsx)(l,{...n,children:o},String(a))}function De(e){return(0,i.jsx)("code",{...e})}var We=n(8138);const Fe={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function qe(e){return!!e&&("SUMMARY"===e.tagName||qe(e.parentElement))}function Ge(e,t){return!!e&&(e===t||Ge(e.parentElement,t))}function Je(e){let{summary:t,children:n,...a}=e;(0,We.Z)().collectAnchor(a.id);const o=(0,pe.Z)(),l=(0,s.useRef)(null),{collapsed:c,setCollapsed:r}=(0,$.u)({initialState:!a.open}),[d,m]=(0,s.useState)(a.open),h=s.isValidElement(t)?t:(0,i.jsx)("summary",{children:t??"Details"});return(0,i.jsxs)("details",{...a,ref:l,open:d,"data-collapsed":c,className:(0,u.Z)(Fe.details,o&&Fe.isBrowser,a.className),onMouseDown:e=>{qe(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;qe(t)&&Ge(t,l.current)&&(e.preventDefault(),c?(r(!1),m(!0)):r(!0))},children:[h,(0,i.jsx)($.z,{lazy:!1,collapsed:c,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{r(e),m(!e)},children:(0,i.jsx)("div",{className:Fe.collapsibleContent,children:n})})]})}const Ye={details:"details_b_Ee"},Qe="alert alert--info";function Xe(e){let{...t}=e;return(0,i.jsx)(Je,{...t,className:(0,u.Z)(Qe,Ye.details,t.className)})}function Ke(e){const t=s.Children.toArray(e.children),n=t.find((e=>s.isValidElement(e)&&"summary"===e.type)),a=(0,i.jsx)(i.Fragment,{children:t.filter((e=>e!==n))});return(0,i.jsx)(Xe,{...e,summary:n,children:a})}function et(e){return(0,i.jsx)(ue.Z,{...e})}const tt={containsTaskList:"containsTaskList_mC6p"};function nt(e){if(void 0!==e)return(0,u.Z)(e,e?.includes("contains-task-list")&&tt.containsTaskList)}const st={img:"img_ev3q"};function at(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=s.Children.toArray(e),n=t.find((e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type)),a=t.filter((e=>e!==n)),o=n?.props.children;return{mdxAdmonitionTitle:o,rest:a.length>0?(0,i.jsx)(i.Fragment,{children:a}):null}}(e.children),a=e.title??t;return{...e,...a&&{title:a},children:n}}const ot={admonition:"admonition_xJq3",admonitionHeading:"admonitionHeading_Gvgb",admonitionIcon:"admonitionIcon_Rf37",admonitionContent:"admonitionContent_BuS1"};function it(e){let{type:t,className:n,children:s}=e;return(0,i.jsx)("div",{className:(0,u.Z)(v.k.common.admonition,v.k.common.admonitionType(t),ot.admonition,n),children:s})}function lt(e){let{icon:t,title:n}=e;return(0,i.jsxs)("div",{className:ot.admonitionHeading,children:[(0,i.jsx)("span",{className:ot.admonitionIcon,children:t}),n]})}function ct(e){let{children:t}=e;return t?(0,i.jsx)("div",{className:ot.admonitionContent,children:t}):null}function rt(e){const{type:t,icon:n,title:s,children:a,className:o}=e;return(0,i.jsxs)(it,{type:t,className:o,children:[(0,i.jsx)(lt,{title:s,icon:n}),(0,i.jsx)(ct,{children:a})]})}function dt(e){return(0,i.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const ut={icon:(0,i.jsx)(dt,{}),title:(0,i.jsx)(h.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function mt(e){return(0,i.jsx)(rt,{...ut,...e,className:(0,u.Z)("alert alert--secondary",e.className),children:e.children})}function ht(e){return(0,i.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const pt={icon:(0,i.jsx)(ht,{}),title:(0,i.jsx)(h.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function ft(e){return(0,i.jsx)(rt,{...pt,...e,className:(0,u.Z)("alert alert--success",e.className),children:e.children})}function xt(e){return(0,i.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const bt={icon:(0,i.jsx)(xt,{}),title:(0,i.jsx)(h.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function gt(e){return(0,i.jsx)(rt,{...bt,...e,className:(0,u.Z)("alert alert--info",e.className),children:e.children})}function jt(e){return(0,i.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const vt={icon:(0,i.jsx)(jt,{}),title:(0,i.jsx)(h.Z,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function Nt(e){return(0,i.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const Ct={icon:(0,i.jsx)(Nt,{}),title:(0,i.jsx)(h.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const kt={icon:(0,i.jsx)(jt,{}),title:(0,i.jsx)(h.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const Lt={...{note:mt,tip:ft,info:gt,warning:function(e){return(0,i.jsx)(rt,{...vt,...e,className:(0,u.Z)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,i.jsx)(rt,{...Ct,...e,className:(0,u.Z)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,i.jsx)(mt,{title:"secondary",...e}),important:e=>(0,i.jsx)(gt,{title:"important",...e}),success:e=>(0,i.jsx)(ft,{title:"success",...e}),caution:function(e){return(0,i.jsx)(rt,{...kt,...e,className:(0,u.Z)("alert alert--warning",e.className),children:e.children})}}};function yt(e){const t=at(e),n=(s=t.type,Lt[s]||(console.warn(`No admonition component found for admonition type "${s}". Using Info as fallback.`),Lt.info));var s;return(0,i.jsx)(n,{...t})}var _t=n(1875);const Bt={Head:he.Z,details:Ke,Details:Ke,code:function(e){return function(e){return void 0!==e.children&&s.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")))}(e)?(0,i.jsx)(De,{...e}):(0,i.jsx)($e,{...e})},a:function(e){return(0,i.jsx)(p.Z,{...e})},pre:function(e){return(0,i.jsx)(i.Fragment,{children:e.children})},ul:function(e){return(0,i.jsx)("ul",{...e,className:nt(e.className)})},li:function(e){return(0,We.Z)().collectAnchor(e.id),(0,i.jsx)("li",{...e})},img:function(e){return(0,i.jsx)("img",{decoding:"async",loading:"lazy",...e,className:(t=e.className,(0,u.Z)(t,st.img))});var t},h1:e=>(0,i.jsx)(et,{as:"h1",...e}),h2:e=>(0,i.jsx)(et,{as:"h2",...e}),h3:e=>(0,i.jsx)(et,{as:"h3",...e}),h4:e=>(0,i.jsx)(et,{as:"h4",...e}),h5:e=>(0,i.jsx)(et,{as:"h5",...e}),h6:e=>(0,i.jsx)(et,{as:"h6",...e}),admonition:yt,mermaid:_t.Z};function wt(e){let{children:t}=e;return(0,i.jsx)(me.Z,{components:Bt,children:t})}function Zt(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=r();return t.hide_title||void 0!==n?null:e.title}();return(0,i.jsxs)("div",{className:(0,u.Z)(v.k.docs.docMarkdown,"markdown"),children:[n&&(0,i.jsx)("header",{children:(0,i.jsx)(ue.Z,{as:"h1",children:n})}),(0,i.jsx)(wt,{children:t})]})}var Tt=n(2802),Et=n(8596),Ht=n(4996);function At(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const It={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function Mt(){const e=(0,Ht.Z)("/");return(0,i.jsx)("li",{className:"breadcrumbs__item",children:(0,i.jsx)(p.Z,{"aria-label":(0,h.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,i.jsx)(At,{className:It.breadcrumbHomeIcon})})})}const St={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function Ut(e){let{children:t,href:n,isLast:s}=e;const a="breadcrumbs__link";return s?(0,i.jsx)("span",{className:a,itemProp:"name",children:t}):n?(0,i.jsx)(p.Z,{className:a,href:n,itemProp:"item",children:(0,i.jsx)("span",{itemProp:"name",children:t})}):(0,i.jsx)("span",{className:a,children:t})}function zt(e){let{children:t,active:n,index:s,addMicrodata:a}=e;return(0,i.jsxs)("li",{...a&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},className:(0,u.Z)("breadcrumbs__item",{"breadcrumbs__item--active":n}),children:[t,(0,i.jsx)("meta",{itemProp:"position",content:String(s+1)})]})}function Vt(){const e=(0,Tt.s1)(),t=(0,Et.Ns)();return e?(0,i.jsx)("nav",{className:(0,u.Z)(v.k.docs.docBreadcrumbs,St.breadcrumbsContainer),"aria-label":(0,h.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,i.jsxs)("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList",children:[t&&(0,i.jsx)(Mt,{}),e.map(((t,n)=>{const s=n===e.length-1,a="category"===t.type&&t.linkUnlisted?void 0:t.href;return(0,i.jsx)(zt,{active:s,index:n,addMicrodata:!!a,children:(0,i.jsx)(Ut,{href:a,isLast:s,children:t.label})},n)}))]})}):null}function Rt(){return(0,i.jsx)(h.Z,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function Ot(){return(0,i.jsx)(h.Z,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function Pt(){return(0,i.jsx)(he.Z,{children:(0,i.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function $t(e){let{className:t}=e;return(0,i.jsx)(yt,{type:"caution",title:(0,i.jsx)(Rt,{}),className:(0,u.Z)(t,v.k.common.unlistedBanner),children:(0,i.jsx)(Ot,{})})}function Dt(e){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Pt,{}),(0,i.jsx)($t,{...e})]})}const Wt={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function Ft(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=r(),n=(0,m.i)(),s=e.hide_table_of_contents,a=!s&&t.length>0;return{hidden:s,mobile:a?(0,i.jsx)(oe,{}):void 0,desktop:!a||"desktop"!==n&&"ssr"!==n?void 0:(0,i.jsx)(de,{})}}(),{metadata:{unlisted:s}}=r();return(0,i.jsxs)("div",{className:"row",children:[(0,i.jsxs)("div",{className:(0,u.Z)("col",!n.hidden&&Wt.docItemCol),children:[s&&(0,i.jsx)(Dt,{}),(0,i.jsx)(B,{}),(0,i.jsxs)("div",{className:Wt.docItemContainer,children:[(0,i.jsxs)("article",{children:[(0,i.jsx)(Vt,{}),(0,i.jsx)(w,{}),n.mobile,(0,i.jsx)(Zt,{children:t}),(0,i.jsx)(P,{})]}),(0,i.jsx)(b,{})]})]}),n.desktop&&(0,i.jsx)("div",{className:"col col--3",children:n.desktop})]})}function qt(e){const t=`docs-doc-id-${e.content.metadata.id}`,n=e.content;return(0,i.jsx)(c,{content:e.content,children:(0,i.jsxs)(a.FG,{className:t,children:[(0,i.jsx)(d,{}),(0,i.jsx)(Ft,{children:(0,i.jsx)(n,{})})]})})}},7594:(e,t)=>{function n(e){let t,n=[];for(let s of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(s))n.push(parseInt(s,10));else if(t=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,a,o]=t;if(s&&o){s=parseInt(s),o=parseInt(o);const e=s{"use strict";n.d(t,{Z:()=>l,a:()=>i});var s=n(7294);const a={},o=s.createContext(a);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/23c94973.5ccab701.js b/assets/js/23c94973.5ccab701.js
new file mode 100644
index 0000000..0e40faa
--- /dev/null
+++ b/assets/js/23c94973.5ccab701.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[6],{7104:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>l,frontMatter:()=>r,metadata:()=>i,toc:()=>d});var o=t(5893),s=t(1151);const r={},c="Tezos-k8s documentation",i={id:"README",title:"Tezos-k8s documentation",description:"The documentation is built from static markdown files in the docs directory as well as some generated documentation from charts/tezos/values.yaml.",source:"@site/README.md",sourceDirName:".",slug:"/",permalink:"/",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},a={},d=[];function u(e){const n={code:"code",h1:"h1",p:"p",pre:"pre",...(0,s.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"tezos-k8s-documentation",children:"Tezos-k8s documentation"}),"\n",(0,o.jsxs)(n.p,{children:["The documentation is built from static markdown files in the ",(0,o.jsx)(n.code,{children:"docs"})," directory as well as some generated documentation from ",(0,o.jsx)(n.code,{children:"charts/tezos/values.yaml"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"To generate the files:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"cd docs/\n./values_to_doc.sh\n"})}),"\n",(0,o.jsx)(n.p,{children:"To render locally:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"npm install\nnpm run build\nnpm start\n"})})]})}function l(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>i,a:()=>c});var o=t(7294);const s={},r=o.createContext(s);function c(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/3e91cf0c.6098904f.js b/assets/js/3e91cf0c.6098904f.js
new file mode 100644
index 0000000..22f7e32
--- /dev/null
+++ b/assets/js/3e91cf0c.6098904f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[952],{8566:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var s=o(5893),t=o(1151);const i={},r="Public network node",l={id:"Public-Node",title:"Public network node",description:"Connecting to a public net is easy!",source:"@site/Public-Node.md",sourceDirName:".",slug:"/Public-Node",permalink:"/Public-Node",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"tezosK8sSidebar",previous:{title:"Prerequisites",permalink:"/Prerequisites"},next:{title:"Tezos Baker",permalink:"/Baker"}},a={},c=[];function d(e){const n={a:"a",code:"code",h1:"h1",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"public-network-node",children:"Public network node"}),"\n",(0,s.jsx)(n.p,{children:"Connecting to a public net is easy!"}),"\n",(0,s.jsxs)(n.p,{children:["(See ",(0,s.jsx)(n.a,{href:"https://tezos.gitlab.io/user/history_modes.html",children:"here"})," for info on snapshots and node history modes)"]}),"\n",(0,s.jsx)(n.p,{children:"Simply run the following to spin up a rolling history node:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"helm install tezos-mainnet tacoinfra/tezos-chain \\\n--namespace tacoinfra --create-namespace\n"})}),"\n",(0,s.jsx)(n.p,{children:"Running this results in:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Creating a Helm ",(0,s.jsx)(n.a,{href:"https://helm.sh/docs/intro/using_helm/#three-big-concepts",children:"release"})," named tezos-mainnet for your k8s cluster."]}),"\n",(0,s.jsx)(n.li,{children:"k8s will spin up one regular (i.e. non-baking node) which will download and import a mainnet snapshot. This will take a few minutes."}),"\n",(0,s.jsx)(n.li,{children:"Once the snapshot step is done, your node will be bootstrapped and syncing with mainnet!"}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["You can find your node in the tacoinfra namespace with some status information using ",(0,s.jsx)(n.code,{children:"kubectl"}),"."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"kubectl -n tacoinfra get pods -l appType=octez-node\n"})}),"\n",(0,s.jsxs)(n.p,{children:["You can monitor (and follow using the ",(0,s.jsx)(n.code,{children:"-f"})," flag) the logs of the snapshot downloader/import container:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"kubectl logs -n tacoinfra statefulset/rolling-node -c snapshot-downloader -f\n"})}),"\n",(0,s.jsx)(n.p,{children:"You can view logs for your node using the following command:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"kubectl -n tacoinfra logs -l appType=octez-node -c octez-node -f --prefix\n"})})]})}function u(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1151:(e,n,o)=>{o.d(n,{Z:()=>l,a:()=>r});var s=o(7294);const t={},i=s.createContext(t);function r(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/5e95c892.52384dc8.js b/assets/js/5e95c892.52384dc8.js
new file mode 100644
index 0000000..aff991b
--- /dev/null
+++ b/assets/js/5e95c892.52384dc8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[661],{1892:(s,u,e)=>{e.r(u),e.d(u,{default:()=>l});e(7294);var r=e(512),a=e(1944),c=e(5281),d=e(8790),n=e(6040),t=e(5893);function l(s){return(0,t.jsx)(a.FG,{className:(0,r.Z)(c.k.wrapper.docsPages),children:(0,t.jsx)(n.Z,{children:(0,d.H)(s.route.routes)})})}}}]);
\ No newline at end of file
diff --git a/assets/js/5fd41f69.548e6647.js b/assets/js/5fd41f69.548e6647.js
new file mode 100644
index 0000000..7cb55e4
--- /dev/null
+++ b/assets/js/5fd41f69.548e6647.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[392],{6504:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>r,contentTitle:()=>a,default:()=>u,frontMatter:()=>c,metadata:()=>i,toc:()=>l});var t=o(5893),s=o(1151);const c={},a="Accounts",i={id:"Tezos-Accounts",title:"Accounts",description:"The accounts object of values.yaml defines Tezos accounts used in the chart.",source:"@site/02-Tezos-Accounts.md",sourceDirName:".",slug:"/Tezos-Accounts",permalink:"/Tezos-Accounts",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"tezosK8sSidebar",previous:{title:"Helm charts",permalink:"/helm-chart"},next:{title:"Nodes",permalink:"/Tezos-Nodes"}},r={},l=[];function d(e){const n={code:"code",h1:"h1",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"accounts",children:"Accounts"}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.code,{children:"accounts"})," object of values.yaml defines Tezos accounts used in the chart.\nBy default no account is configured:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"accounts: {}\n"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"accounts"})," is a map where keys are account aliases and values are maps of\nfields ",(0,t.jsx)(n.code,{children:"key"}),", ",(0,t.jsx)(n.code,{children:"is_bootstrap_baker_account"}),", ",(0,t.jsx)(n.code,{children:"bootstrap_balance"}),", ",(0,t.jsx)(n.code,{children:"signer_url"}),"\n",(0,t.jsx)(n.code,{children:"protocols"})," and ",(0,t.jsx)(n.code,{children:"operations_pool"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.code,{children:"key"})," field can be set to a public or private key. For a bootstrap baker,\nit must be set to a private key. The key type will be recognized automatically,\nand the pod will fail if the key type is unexpected."]}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.code,{children:"protocols"})," fields overrides the top-level ",(0,t.jsx)(n.code,{children:"protocols"})," field described\nbelow and has the same syntax. This allows to set specific per-block votes per\nbaker."]}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.code,{children:"operations_pool"})," field instructs the baker to target a url for external\nmempool queries when baking a block. This is useful to run a Flashbake-capable baker.\nThe entry is passed to baker binaries using the ",(0,t.jsx)(n.code,{children:"--operations-pool"})," flag."]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Public chains: Accounts do not get ",(0,t.jsx)(n.code,{children:"is_bootstrap_baker_account"})," and\n",(0,t.jsx)(n.code,{children:"bootstrap_balance"})," fields."]}),"\n",(0,t.jsxs)(n.li,{children:["Non-public chains: If you don't specify accounts needed by nodes, they can\nbe created deterministically via the above setting. If specifying, accounts\ncan be given a bootstrap balance and can also be configured to be bootstrap\nbaker accounts. Accounts with balances set to \"0\" will be imported by the\nnode but they will not be bootstrap accounts. If you don't set a bootstrap\nbalance, it will default to the ",(0,t.jsx)(n.code,{children:"bootstrap_mutez"})," field above."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"Example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:'accounts:\n baker0:\n key: edsk...\n is_bootstrap_baker_account: true\n bootstrap_balance: "50000000000000"\n\n baker1:\n key: edsk...\n operations_pool: http://flashbake-endpoint-baker-listener:12732\n protocols:\n - command: PtMumbai\n vote:\n liquidity_baking_toggle_vote: "on"\n'})}),"\n",(0,t.jsxs)(n.p,{children:["A public key account can contain a ",(0,t.jsx)(n.code,{children:"signer_url"})," to a remote signer\nthat signs with the corresponding secret key. You don't need to\nset this if you're deploying a tezos-k8s signer into the same\nnamespace of its baker. See ",(0,t.jsx)(n.code,{children:"octezSigners"})," and ",(0,t.jsx)(n.code,{children:"tacoinfraSigners"}),"\nfields in values.yaml to define remote signers. (You shouldn't add things\nto the URL path such as the public key hash. It will be added automatically.)"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:'accounts:\n externalSignerAccount:\n key: edpk...\n is_bootstrap_baker_account: true\n bootstrap_balance: "4000000000000"\n signer_url: http://[POD-NAME].[SERVICE-NAME].[NAMESPACE]:6732\n'})}),"\n",(0,t.jsxs)(n.p,{children:["An account being signed for by a Tacoinfra AWS KMS signer requires a\n",(0,t.jsx)(n.code,{children:"key_id"})," field. This should be a valid id of the AWS KMS key.\nThe key's corresponding public key must be provided here as well."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:'accounts:\n tacoinfraSigner:\n key: sppk...\n key_id: "cloud-id-of-key"\n is_bootstrap_baker_account: true\n bootstrap_balance: "4000000000000"\n'})})]})}function u(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1151:(e,n,o)=>{o.d(n,{Z:()=>i,a:()=>a});var t=o(7294);const s={},c=t.createContext(s);function a(e){const n=t.useContext(c);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),t.createElement(c.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/6d5d121f.134b8fd3.js b/assets/js/6d5d121f.134b8fd3.js
new file mode 100644
index 0000000..842180c
--- /dev/null
+++ b/assets/js/6d5d121f.134b8fd3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[184],{7725:(t,e,r)=>{r.r(e),r.d(e,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>n,metadata:()=>i,toc:()=>h});var s=r(5893),o=r(1151);const n={},a="Other Helm charts",i={id:"other-helm-charts",title:"Other Helm charts",description:"The Tezos-k8s project also maintains several other helm charts:",source:"@site/04-other-helm-charts.md",sourceDirName:".",slug:"/other-helm-charts",permalink:"/other-helm-charts",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{},sidebar:"tezosK8sSidebar",previous:{title:"Signers",permalink:"/Tezos-Signers"}},c={},h=[];function l(t){const e={a:"a",h1:"h1",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.a)(),...t.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(e.h1,{id:"other-helm-charts",children:"Other Helm charts"}),"\n",(0,s.jsx)(e.p,{children:"The Tezos-k8s project also maintains several other helm charts:"}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.strong,{children:(0,s.jsx)(e.a,{href:"https://github.com/tacoinfra/tezos-k8s/tree/main/charts/pyrometer",children:"pyrometer"})}),": a chart to deploy the ",(0,s.jsx)(e.a,{href:"https://gitlab.com/tezos-kiln/pyrometer",children:"Pyrometer Tezos monitoring tool"})]}),"\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.strong,{children:(0,s.jsx)(e.a,{href:"https://github.com/tacoinfra/tezos-k8s/tree/main/charts/tezos-faucet",children:"tezos-faucet"})}),": a faucet to dispense testnet funds"]}),"\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.strong,{children:(0,s.jsx)(e.a,{href:"https://github.com/tacoinfra/tezos-k8s/tree/main/charts/tezos-reward-distributor",children:"tezos-reward-distributor"})}),": a chart to deploy ",(0,s.jsx)(e.a,{href:"https://tezos-reward-distributor-organization.github.io/tezos-reward-distributor/",children:"TRD"})]}),"\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.strong,{children:(0,s.jsx)(e.a,{href:"https://github.com/tacoinfra/tezos-k8s/tree/main/charts/tezos-proto-cruncher",children:"tezos-proto-cruncher"})}),": a chart to deploy a daemonset in your cluster to find vanity hashes for protocols in parallel"]}),"\n"]})]})}function d(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(l,{...t})}):l(t)}},1151:(t,e,r)=>{r.d(e,{Z:()=>i,a:()=>a});var s=r(7294);const o={},n=s.createContext(o);function a(t){const e=s.useContext(n);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function i(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:a(t.components),s.createElement(n.Provider,{value:e},t.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/772.76d63cbe.js b/assets/js/772.76d63cbe.js
new file mode 100644
index 0000000..aa9f310
--- /dev/null
+++ b/assets/js/772.76d63cbe.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[772],{5658:(e,t,n)=>{n.d(t,{Z:()=>a});n(7294);var s=n(512),i=n(5999),o=n(2503),r=n(5893);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,s.Z)("container margin-vert--xl",t),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(o.Z,{as:"h1",className:"hero__title",children:(0,r.jsx)(i.Z,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(i.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(i.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},1772:(e,t,n)=>{n.r(t),n.d(t,{default:()=>d});n(7294);var s=n(5999),i=n(1944),o=n(6040),r=n(5658),a=n(5893);function d(){const e=(0,s.I)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.d,{title:e}),(0,a.jsx)(o.Z,{children:(0,a.jsx)(r.Z,{})})]})}}}]);
\ No newline at end of file
diff --git a/assets/js/935f2afb.5e0bb2c4.js b/assets/js/935f2afb.5e0bb2c4.js
new file mode 100644
index 0000000..5612b40
--- /dev/null
+++ b/assets/js/935f2afb.5e0bb2c4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tezosK8sSidebar":[{"type":"link","label":"Overview","href":"/","docId":"index","unlisted":false},{"type":"link","label":"Prerequisites","href":"/Prerequisites","docId":"Prerequisites","unlisted":false},{"type":"category","label":"Common use cases","collapsed":false,"items":[{"type":"link","label":"Public network node","href":"/Public-Node","docId":"Public-Node","unlisted":false},{"type":"link","label":"Tezos Baker","href":"/Baker","docId":"Baker","unlisted":false},{"type":"link","label":"Creating a Private Blockchain","href":"/Private-Chain","docId":"Private-Chain","unlisted":false},{"type":"link","label":"Indexers","href":"/Indexers","docId":"Indexers","unlisted":false}],"collapsible":true},{"type":"category","label":"Tezos-k8s helm chart","collapsed":false,"items":[{"type":"link","label":"Helm charts","href":"/helm-chart","docId":"helm-chart","unlisted":false},{"type":"link","label":"Accounts","href":"/Tezos-Accounts","docId":"Tezos-Accounts","unlisted":false},{"type":"link","label":"Nodes","href":"/Tezos-Nodes","docId":"Tezos-Nodes","unlisted":false},{"type":"link","label":"Signers","href":"/Tezos-Signers","docId":"Tezos-Signers","unlisted":false}],"collapsible":true},{"type":"link","label":"Other Helm charts","href":"/other-helm-charts","docId":"other-helm-charts","unlisted":false}]},"docs":{"Baker":{"id":"Baker","title":"Tezos Baker","description":"Running a Tezos Testnet baker","sidebar":"tezosK8sSidebar"},"helm-chart":{"id":"helm-chart","title":"Helm charts","description":"Tezos-k8s is deployed as a helm chart.","sidebar":"tezosK8sSidebar"},"index":{"id":"index","title":"Overview","description":"TezosKubernetes","sidebar":"tezosK8sSidebar"},"Indexers":{"id":"Indexers","title":"Indexers","description":"You can optionally spin up a Tezos blockchain indexer that makes querying for information very quick. An indexer puts the chain contents in a database for efficient indexing. Most dapps need it. You can read more about indexers here.","sidebar":"tezosK8sSidebar"},"other-helm-charts":{"id":"other-helm-charts","title":"Other Helm charts","description":"The Tezos-k8s project also maintains several other helm charts:","sidebar":"tezosK8sSidebar"},"Prerequisites":{"id":"Prerequisites","title":"Prerequisites","description":"Prerequisites","sidebar":"tezosK8sSidebar"},"Private-Chain":{"id":"Private-Chain","title":"Creating a Private Blockchain","description":"mkchain","sidebar":"tezosK8sSidebar"},"Public-Node":{"id":"Public-Node","title":"Public network node","description":"Connecting to a public net is easy!","sidebar":"tezosK8sSidebar"},"README":{"id":"README","title":"Tezos-k8s documentation","description":"The documentation is built from static markdown files in the docs directory as well as some generated documentation from charts/tezos/values.yaml."},"Tezos-Accounts":{"id":"Tezos-Accounts","title":"Accounts","description":"The accounts object of values.yaml defines Tezos accounts used in the chart.","sidebar":"tezosK8sSidebar"},"Tezos-Nodes":{"id":"Tezos-Nodes","title":"Nodes","description":"Use nodes to configure the Tezos nodes running in your chart.","sidebar":"tezosK8sSidebar"},"Tezos-Signers":{"id":"Tezos-Signers","title":"Signers","description":"You may define remote signers with tezos-k8s. Bakers automatically use signers in their namespace","sidebar":"tezosK8sSidebar"}}}')}}]);
\ No newline at end of file
diff --git a/assets/js/a69c6c78.f436f4c1.js b/assets/js/a69c6c78.f436f4c1.js
new file mode 100644
index 0000000..5622069
--- /dev/null
+++ b/assets/js/a69c6c78.f436f4c1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[170],{3769:u=>{u.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/a7bd4aaa.408f404b.js b/assets/js/a7bd4aaa.408f404b.js
new file mode 100644
index 0000000..62e11f9
--- /dev/null
+++ b/assets/js/a7bd4aaa.408f404b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[518],{8564:(n,s,e)=>{e.r(s),e.d(s,{default:()=>l});e(7294);var r=e(1944),o=e(3320),t=e(4477),u=e(8790),c=e(197),i=e(5893);function a(n){const{version:s}=n;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(c.Z,{version:s.version,tag:(0,o.os)(s.pluginId,s.version)}),(0,i.jsx)(r.d,{children:s.noIndex&&(0,i.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function d(n){const{version:s,route:e}=n;return(0,i.jsx)(r.FG,{className:s.className,children:(0,i.jsx)(t.q,{version:s,children:(0,u.H)(e.routes)})})}function l(n){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(a,{...n}),(0,i.jsx)(d,{...n})]})}}}]);
\ No newline at end of file
diff --git a/assets/js/a94703ab.808570fe.js b/assets/js/a94703ab.808570fe.js
new file mode 100644
index 0000000..95dcf99
--- /dev/null
+++ b/assets/js/a94703ab.808570fe.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[368],{2674:(e,t,n)=>{n.r(t),n.d(t,{default:()=>be});var a=n(7294),o=n(512),i=n(1944),s=n(5281),l=n(2802),r=n(1116),c=n(5999),d=n(2466),u=n(5936);const m={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};var b=n(5893);function h(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,o]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelScroll:l}=(0,d.Ct)();return(0,d.RF)(((e,n)=>{let{scrollY:a}=e;const s=n?.scrollY;s&&(i.current?i.current=!1:a>=s?(l(),o(!1)):a{e.location.hash&&(i.current=!0,o(!1))})),{shown:n,scrollToTop:()=>s(0)}}({threshold:300});return(0,b.jsx)("button",{"aria-label":(0,c.I)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,o.Z)("clean-btn",s.k.common.backToTopButton,m.backToTopButton,e&&m.backToTopButtonShow),type:"button",onClick:t})}var p=n(1442),x=n(6550),f=n(7524),j=n(6668),k=n(1327);function _(e){return(0,b.jsx)("svg",{width:"20",height:"20","aria-hidden":"true",...e,children:(0,b.jsxs)("g",{fill:"#7a7a7a",children:[(0,b.jsx)("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),(0,b.jsx)("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})]})})}const v={collapseSidebarButton:"collapseSidebarButton_PEFL",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_kv0_"};function g(e){let{onClick:t}=e;return(0,b.jsx)("button",{type:"button",title:(0,c.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,c.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,o.Z)("button button--secondary button--outline",v.collapseSidebarButton),onClick:t,children:(0,b.jsx)(_,{className:v.collapseSidebarButtonIcon})})}var C=n(9689),S=n(902);const I=Symbol("EmptyContext"),N=a.createContext(I);function T(e){let{children:t}=e;const[n,o]=(0,a.useState)(null),i=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:o})),[n]);return(0,b.jsx)(N.Provider,{value:i,children:t})}var B=n(6043),Z=n(8596),A=n(3692),L=n(2389);function y(e){let{collapsed:t,categoryLabel:n,onClick:a}=e;return(0,b.jsx)("button",{"aria-label":t?(0,c.I)({id:"theme.DocSidebarItem.expandCategoryAriaLabel",message:"Expand sidebar category '{label}'",description:"The ARIA label to expand the sidebar category"},{label:n}):(0,c.I)({id:"theme.DocSidebarItem.collapseCategoryAriaLabel",message:"Collapse sidebar category '{label}'",description:"The ARIA label to collapse the sidebar category"},{label:n}),type:"button",className:"clean-btn menu__caret",onClick:a})}function w(e){let{item:t,onItemClick:n,activePath:i,level:r,index:c,...d}=e;const{items:u,label:m,collapsible:h,className:p,href:x}=t,{docs:{sidebar:{autoCollapseCategories:f}}}=(0,j.L)(),k=function(e){const t=(0,L.Z)();return(0,a.useMemo)((()=>e.href&&!e.linkUnlisted?e.href:!t&&e.collapsible?(0,l.LM)(e):void 0),[e,t])}(t),_=(0,l._F)(t,i),v=(0,Z.Mg)(x,i),{collapsed:g,setCollapsed:C}=(0,B.u)({initialState:()=>!!h&&(!_&&t.collapsed)}),{expandedItem:T,setExpandedItem:w}=function(){const e=(0,a.useContext)(N);if(e===I)throw new S.i6("DocSidebarItemsExpandedStateProvider");return e}(),E=function(e){void 0===e&&(e=!g),w(e?null:c),C(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:o}=e;const i=(0,S.D9)(t);(0,a.useEffect)((()=>{t&&!i&&n&&o(!1)}),[t,i,n,o])}({isActive:_,collapsed:g,updateCollapsed:E}),(0,a.useEffect)((()=>{h&&null!=T&&T!==c&&f&&C(!0)}),[h,T,c,C,f]),(0,b.jsxs)("li",{className:(0,o.Z)(s.k.docs.docSidebarItemCategory,s.k.docs.docSidebarItemCategoryLevel(r),"menu__list-item",{"menu__list-item--collapsed":g},p),children:[(0,b.jsxs)("div",{className:(0,o.Z)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":v}),children:[(0,b.jsx)(A.Z,{className:(0,o.Z)("menu__link",{"menu__link--sublist":h,"menu__link--sublist-caret":!x&&h,"menu__link--active":_}),onClick:h?e=>{n?.(t),x?E(!1):(e.preventDefault(),E())}:()=>{n?.(t)},"aria-current":v?"page":void 0,"aria-expanded":h?!g:void 0,href:h?k??"#":k,...d,children:m}),x&&h&&(0,b.jsx)(y,{collapsed:g,categoryLabel:m,onClick:e=>{e.preventDefault(),E()}})]}),(0,b.jsx)(B.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:g,children:(0,b.jsx)(V,{items:u,tabIndex:g?-1:0,onItemClick:n,activePath:i,level:r+1})})]})}var E=n(3919),H=n(9471);const M={menuExternalLink:"menuExternalLink_NmtK"};function R(e){let{item:t,onItemClick:n,activePath:a,level:i,index:r,...c}=e;const{href:d,label:u,className:m,autoAddBaseUrl:h}=t,p=(0,l._F)(t,a),x=(0,E.Z)(d);return(0,b.jsx)("li",{className:(0,o.Z)(s.k.docs.docSidebarItemLink,s.k.docs.docSidebarItemLinkLevel(i),"menu__list-item",m),children:(0,b.jsxs)(A.Z,{className:(0,o.Z)("menu__link",!x&&M.menuExternalLink,{"menu__link--active":p}),autoAddBaseUrl:h,"aria-current":p?"page":void 0,to:d,...x&&{onClick:n?()=>n(t):void 0},...c,children:[u,!x&&(0,b.jsx)(H.Z,{})]})},u)}const W={menuHtmlItem:"menuHtmlItem_M9Kj"};function F(e){let{item:t,level:n,index:a}=e;const{value:i,defaultStyle:l,className:r}=t;return(0,b.jsx)("li",{className:(0,o.Z)(s.k.docs.docSidebarItemLink,s.k.docs.docSidebarItemLinkLevel(n),l&&[W.menuHtmlItem,"menu__list-item"],r),dangerouslySetInnerHTML:{__html:i}},a)}function P(e){let{item:t,...n}=e;switch(t.type){case"category":return(0,b.jsx)(w,{item:t,...n});case"html":return(0,b.jsx)(F,{item:t,...n});default:return(0,b.jsx)(R,{item:t,...n})}}function D(e){let{items:t,...n}=e;const a=(0,l.f)(t,n.activePath);return(0,b.jsx)(T,{children:a.map(((e,t)=>(0,b.jsx)(P,{item:e,index:t,...n},t)))})}const V=(0,a.memo)(D),U={menu:"menu_SIkG",menuWithAnnouncementBar:"menuWithAnnouncementBar_GW3s"};function K(e){let{path:t,sidebar:n,className:i}=e;const l=function(){const{isActive:e}=(0,C.nT)(),[t,n]=(0,a.useState)(e);return(0,d.RF)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return(0,b.jsx)("nav",{"aria-label":(0,c.I)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,o.Z)("menu thin-scrollbar",U.menu,l&&U.menuWithAnnouncementBar,i),children:(0,b.jsx)("ul",{className:(0,o.Z)(s.k.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(V,{items:n,activePath:t,level:1})})})}const Y="sidebar_njMd",z="sidebarWithHideableNavbar_wUlq",G="sidebarHidden_VK0M",O="sidebarLogo_isFc";function q(e){let{path:t,sidebar:n,onCollapse:a,isHidden:i}=e;const{navbar:{hideOnScroll:s},docs:{sidebar:{hideable:l}}}=(0,j.L)();return(0,b.jsxs)("div",{className:(0,o.Z)(Y,s&&z,i&&G),children:[s&&(0,b.jsx)(k.Z,{tabIndex:-1,className:O}),(0,b.jsx)(K,{path:t,sidebar:n}),l&&(0,b.jsx)(g,{onClick:a})]})}const J=a.memo(q);var Q=n(3102),X=n(2961);const $=e=>{let{sidebar:t,path:n}=e;const a=(0,X.e)();return(0,b.jsx)("ul",{className:(0,o.Z)(s.k.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(V,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&a.toggle(),"link"===e.type&&a.toggle()},level:1})})};function ee(e){return(0,b.jsx)(Q.Zo,{component:$,props:e})}const te=a.memo(ee);function ne(e){const t=(0,f.i)(),n="desktop"===t||"ssr"===t,a="mobile"===t;return(0,b.jsxs)(b.Fragment,{children:[n&&(0,b.jsx)(J,{...e}),a&&(0,b.jsx)(te,{...e})]})}const ae={expandButton:"expandButton_TmdG",expandButtonIcon:"expandButtonIcon_i1dp"};function oe(e){let{toggleSidebar:t}=e;return(0,b.jsx)("div",{className:ae.expandButton,title:(0,c.I)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,c.I)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t,children:(0,b.jsx)(_,{className:ae.expandButtonIcon})})}const ie={docSidebarContainer:"docSidebarContainer_YfHR",docSidebarContainerHidden:"docSidebarContainerHidden_DPk8",sidebarViewport:"sidebarViewport_aRkj"};function se(e){let{children:t}=e;const n=(0,r.V)();return(0,b.jsx)(a.Fragment,{children:t},n?.name??"noSidebar")}function le(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:i}=e;const{pathname:l}=(0,x.TH)(),[r,c]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{r&&c(!1),!r&&(0,p.n)()&&c(!0),i((e=>!e))}),[i,r]);return(0,b.jsx)("aside",{className:(0,o.Z)(s.k.docs.docSidebarContainer,ie.docSidebarContainer,n&&ie.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ie.docSidebarContainer)&&n&&c(!0)},children:(0,b.jsx)(se,{children:(0,b.jsxs)("div",{className:(0,o.Z)(ie.sidebarViewport,r&&ie.sidebarViewportHidden),children:[(0,b.jsx)(ne,{sidebar:t,path:l,onCollapse:d,isHidden:r}),r&&(0,b.jsx)(oe,{toggleSidebar:d})]})})})}const re={docMainContainer:"docMainContainer_TBSr",docMainContainerEnhanced:"docMainContainerEnhanced_lQrH",docItemWrapperEnhanced:"docItemWrapperEnhanced_JWYK"};function ce(e){let{hiddenSidebarContainer:t,children:n}=e;const a=(0,r.V)();return(0,b.jsx)("main",{className:(0,o.Z)(re.docMainContainer,(t||!a)&&re.docMainContainerEnhanced),children:(0,b.jsx)("div",{className:(0,o.Z)("container padding-top--md padding-bottom--lg",re.docItemWrapper,t&&re.docItemWrapperEnhanced),children:n})})}const de={docRoot:"docRoot_UBD9",docsWrapper:"docsWrapper_hBAB"};function ue(e){let{children:t}=e;const n=(0,r.V)(),[o,i]=(0,a.useState)(!1);return(0,b.jsxs)("div",{className:de.docsWrapper,children:[(0,b.jsx)(h,{}),(0,b.jsxs)("div",{className:de.docRoot,children:[n&&(0,b.jsx)(le,{sidebar:n.items,hiddenSidebarContainer:o,setHiddenSidebarContainer:i}),(0,b.jsx)(ce,{hiddenSidebarContainer:o,children:t})]})]})}var me=n(5658);function be(e){const t=(0,l.SN)(e);if(!t)return(0,b.jsx)(me.Z,{});const{docElement:n,sidebarName:a,sidebarItems:c}=t;return(0,b.jsx)(i.FG,{className:(0,o.Z)(s.k.page.docsDocPage),children:(0,b.jsx)(r.b,{name:a,items:c,children:(0,b.jsx)(ue,{children:n})})})}},5658:(e,t,n)=>{n.d(t,{Z:()=>l});n(7294);var a=n(512),o=n(5999),i=n(2503),s=n(5893);function l(e){let{className:t}=e;return(0,s.jsx)("main",{className:(0,a.Z)("container margin-vert--xl",t),children:(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,s.jsx)(i.Z,{as:"h1",className:"hero__title",children:(0,s.jsx)(o.Z,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}}}]);
\ No newline at end of file
diff --git a/assets/js/aea41e44.af5281a4.js b/assets/js/aea41e44.af5281a4.js
new file mode 100644
index 0000000..aa3ac44
--- /dev/null
+++ b/assets/js/aea41e44.af5281a4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[539],{7959:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var o=s(5893),t=s(1151);const i={},r="Nodes",a={id:"Tezos-Nodes",title:"Nodes",description:"Use nodes to configure the Tezos nodes running in your chart.",source:"@site/01-Tezos-Nodes.md",sourceDirName:".",slug:"/Tezos-Nodes",permalink:"/Tezos-Nodes",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"tezosK8sSidebar",previous:{title:"Accounts",permalink:"/Tezos-Accounts"},next:{title:"Signers",permalink:"/Tezos-Signers"}},c={},d=[];function l(e){const n={a:"a",code:"code",h1:"h1",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"nodes",children:"Nodes"}),"\n",(0,o.jsxs)(n.p,{children:["Use ",(0,o.jsx)(n.code,{children:"nodes"})," to configure the Tezos nodes running in your chart."]}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"nodes"})," is a dictionary where each key/value pair defines a statefulset and a\nnumber of instances thereof. The name (key) defines the name of the\nstatefulset and will be the base of the pod names. The instances are defined\nas a list because their names are simply -N appended to the statefulsetname.\nSaid names are typically kebab case."]}),"\n",(0,o.jsx)(n.p,{children:"Params at the statefulset level:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"config"}),': The "config" property should mimic the structure of a node\'s\nconfig.json. Run ',(0,o.jsx)(n.code,{children:"octez-node config --help"})," for more info.\nIf present at the statefulset level, it overrides it in\n",(0,o.jsx)(n.code,{children:"node_globals"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"env"}),': A dictionary of containers mapped to a dictionary of env\nvars. The container name "all" will apply the env vars to\nall containers. The most specific wins. Find the names of\nthe containers by examining an installed environment, or by\nlooking at charts/tezos/templates/nodes.yaml. Please note\nthat we truncate the protocol from the container name for\nbakers and accusers, so "baker-011-pthangz2" is configured\nusing just "baker".']}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"storage_size"}),": The size of the PV."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"resources"}),": Resources specifications for the node.\nOptionally set resources and limits for octez node\nSee: ",(0,o.jsx)(n.a,{href:"https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",children:"https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/"})]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"images"}),': Optional specification of images to use for the tezos node and\nbaker. Options are "octez" with a tezos/tezos image.\nIf no images are provided, the containers will default to the images\ndefined in the "images" field up above.']}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"runs"}),": A list of containers to run.\nOptions being ",(0,o.jsx)(n.code,{children:"octez_node"}),", ",(0,o.jsx)(n.code,{children:"accuser"}),", ",(0,o.jsx)(n.code,{children:"baker"}),", ",(0,o.jsx)(n.code,{children:"logger"})," and ",(0,o.jsx)(n.code,{children:"vdf"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"local_storage"}),": Use local storage instead of a volume. The storage will be\nwiped when the node restarts for any reason. Useful when\nfaster IO is desired. Defaults to false."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"local_storage_pv_size"}),": The size of the persistent volume to store ",(0,o.jsx)(n.code,{children:"identity.json"}),"\nand ",(0,o.jsx)(n.code,{children:"peers.json"})," when ",(0,o.jsx)(n.code,{children:"local_storage"})," is enabled. Some cloud\nproviders have minimum pv size requirements for which this\nvalue can be used. Default value is 1Gi."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"labels"}),": ",(0,o.jsx)(n.a,{href:"https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/",children:"https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/"}),"\nNOTE: the labels ",(0,o.jsx)(n.code,{children:"appType"}),", ",(0,o.jsx)(n.code,{children:"node_class"}),", and ",(0,o.jsx)(n.code,{children:"baking_node"})," are set\nautomatically for you."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"node_selector"}),": Specify a kubernetes node selector in ",(0,o.jsx)(n.code,{children:"key: value"})," format\nfor your tezos nodes."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"rpc_readiness_probe"}),": Attach a probe to the node. The probe checks whether\nthe RPC service is responsive, which should always be the\ncase. Defaults to true."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"bootstrapped_readiness_probe"}),": Checks whether the most recent block is less than\n600 seconds old.\nOverrides ",(0,o.jsx)(n.code,{children:"rpc_readiness_probe"}),". Defaults to True.\nTrue is good for RPC nodes, private nodes, and\nself-contained private chains.\nRecommended to set to False when bootstrapping a new\nchain with external bakers, such as a new test chain.\nOtherwise, the chain may become unreachable externally\nwhile waiting for other nodes to come online."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"bootstrapped_startup_probe"}),": Adds additional startup probe to check checks\nwhether the most recent block is less than 600 seconds old.\nDefaults to False."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"bootstrapped_liveness_probe"}),": Adds additional liveness probe to check checks\nwhether the most recent block is less than 600 seconds old.\nDefaults to False."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"instances"}),": A list of nodes to fire up, each is a dictionary defining:","\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"bake_using_accounts"}),": List of account names that should be used for baking."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"authorized_keys"}),": List of account names that should be used as keys to\nauthenticate a baker to a signer.\nWhen a baker uses a remote signer that requires\nauthentication, the relevant key from this list\nwill be used to sign every signature request."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"config"}),": Same as the outer statefulset level ",(0,o.jsx)(n.code,{children:"config"}),". It overrides the\nstatefulset level."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"is_bootstrap_node"}),": Boolean for is this node a bootstrap peer."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"identity"}),": An optional map containing a pre-generated Tezos node\nidentity. The identity file will be created at\n/var/tezos/node/data/identity.json.\nRequired fields are ",(0,o.jsx)(n.code,{children:"peer_id"}),", ",(0,o.jsx)(n.code,{children:"public_key"}),", ",(0,o.jsx)(n.code,{children:"secret_key"}),",\nand ",(0,o.jsx)(n.code,{children:"proof_of_work_timestamp"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Defaults are filled in for most of the above values. You can also provide\nglobal defaults for all nodes via a ",(0,o.jsx)(n.code,{children:"node_globals"})," section which is also\na dictionary. Currently, two keys are defined: ",(0,o.jsx)(n.code,{children:"config"})," and ",(0,o.jsx)(n.code,{children:"env"}),". These\noperate in the same way as the section in ",(0,o.jsx)(n.code,{children:"nodes"})," going by the same name."]}),"\n",(0,o.jsx)(n.p,{children:"Example config:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'node_globals:\n config:\n shell:\n history_mode: full\n env:\n baker:\n TEZOS_LOG: "* -> debug"\nnodes:\n rolling-baking-node:\n config:\n shell:\n history_mode: rolling\n env:\n all:\n TEZOS_CLIENT_UNSAFE_DISABLE_DISCLAIMER: "Y"\n snapshot-downloader:\n HTTP_PROXY: http://my-proxy.my-company.com:3128/\n labels:\n # Example labels you might use to specify certain attributes of your nodes.\n peer_node: "true" # Forward P2P traffic to this node types instances\n rpc_node: "true" # Forward RPC traffic to this node types instances\n node_selector:\n nodeSelectorKey: nodeSelectorValue\n storage_size: 15Gi\n images: # (optional field)\n octez: tezos/tezos:v...\n local_storage: false\n runs:\n - octez_node\n - baker\n resources:\n requests:\n memory: 16192Mi\n limits:\n memory: 16192Mi\n instances:\n - bake_using_accounts: [baker0]\n is_bootstrap_node: true\n # Note the following config section overrides the above one even\n # if we make them the same in this example.\n config:\n shell:\n history_mode: rolling\n identity:\n peer_id: id...\n public_key: ...\n secret_key: ...\n proof_of_work_stamp: ...\n rolling-node:\n labels:\n # Example labels you might use to specify certain attributes of your nodes.\n peer_node: "true"\n rpc_node: "true"\n images: # (optional field)\n octez: tezos/tezos:v...\n runs: ["octez_node"]\n instances:\n - {}\n - {}\n'})}),"\n",(0,o.jsx)(n.p,{children:"The default configuration is:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'node_globals:\n config: {}\n env: {}\nnodes:\n rolling-node:\n storage_size: 100Gi\n runs:\n - octez_node\n instances:\n - is_bootstrap_node: false\n config:\n shell:\n history_mode: rolling\n metrics_addr: ["0.0.0.0:9932"]\n'})})]})}function h(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},1151:(e,n,s)=>{s.d(n,{Z:()=>a,a:()=>r});var o=s(7294);const t={},i=o.createContext(t);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/af73a558.046e3125.js b/assets/js/af73a558.046e3125.js
new file mode 100644
index 0000000..69eab83
--- /dev/null
+++ b/assets/js/af73a558.046e3125.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[365],{7441:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var r=t(5893),o=t(1151);const i={},s="Indexers",a={id:"Indexers",title:"Indexers",description:"You can optionally spin up a Tezos blockchain indexer that makes querying for information very quick. An indexer puts the chain contents in a database for efficient indexing. Most dapps need it. You can read more about indexers here.",source:"@site/Indexers.md",sourceDirName:".",slug:"/Indexers",permalink:"/Indexers",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"tezosK8sSidebar",previous:{title:"Creating a Private Blockchain",permalink:"/Private-Chain"},next:{title:"Helm charts",permalink:"/helm-chart"}},c={},d=[];function u(e){const n={a:"a",code:"code",h1:"h1",li:"li",p:"p",ul:"ul",...(0,o.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"indexers",children:"Indexers"}),"\n",(0,r.jsxs)(n.p,{children:["You can optionally spin up a Tezos blockchain indexer that makes querying for information very quick. An indexer puts the chain contents in a database for efficient indexing. Most dapps need it. You can read more about indexers ",(0,r.jsx)(n.a,{href:"https://wiki.tezosagora.org/build/blockchain-indexers",children:"here"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"Current supported indexers:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://github.com/baking-bad/tzkt",children:"TzKT"})}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.a,{href:"https://github.com/tacoinfra/tezos-k8s/blob/main/charts/tezos/values.yaml",children:"Tezos Helm chart's values.yaml"})," has an ",(0,r.jsx)(n.code,{children:"indexer"})," section for how to deploy an indexer."]}),"\n",(0,r.jsxs)(n.p,{children:["You must spin up an archive node in your cluster if you want to your indexer to index it. You would do so by configuring a new node's ",(0,r.jsx)(n.code,{children:"history_mode"})," to be ",(0,r.jsx)(n.code,{children:"archive"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["You can also spin up a lone indexer without any Tezos nodes in your cluster, but make sure to point the ",(0,r.jsx)(n.code,{children:"rpc_url"})," field to an accessible Tezos archive node's rpc endpoint."]})]})}function l(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>s});var r=t(7294);const o={},i=r.createContext(o);function s(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/e89a8fa1.d918cc09.js b/assets/js/e89a8fa1.d918cc09.js
new file mode 100644
index 0000000..28c7afc
--- /dev/null
+++ b/assets/js/e89a8fa1.d918cc09.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[753],{3974:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>c});var i=s(5893),a=s(1151);const r={},o="Creating a Private Blockchain",t={id:"Private-Chain",title:"Creating a Private Blockchain",description:"mkchain",source:"@site/Private-Chain.md",sourceDirName:".",slug:"/Private-Chain",permalink:"/Private-Chain",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"tezosK8sSidebar",previous:{title:"Tezos Baker",permalink:"/Baker"},next:{title:"Indexers",permalink:"/Indexers"}},l={},c=[{value:"mkchain",id:"mkchain",level:2},{value:"Start your private chain",id:"start-your-private-chain",level:2},{value:"Adding nodes within the cluster",id:"adding-nodes-within-the-cluster",level:2}];function d(e){const n={code:"code",em:"em",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"creating-a-private-blockchain",children:"Creating a Private Blockchain"}),"\n",(0,i.jsx)(n.h2,{id:"mkchain",children:"mkchain"}),"\n",(0,i.jsx)(n.p,{children:"mkchain is a python script that generates Helm values, which Helm then uses to create your Tezos chain on k8s."}),"\n",(0,i.jsxs)(n.p,{children:["Follow ",(0,i.jsx)(n.em,{children:"just"})," the Install mkchain step in ",(0,i.jsx)(n.code,{children:"./mkchain/README.md"}),". See there for more info on how you can customize your chain."]}),"\n",(0,i.jsx)(n.p,{children:"Set as an environment variable the name you would like to give to your chain:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"export CHAIN_NAME=my-chain\n"})}),"\n",(0,i.jsx)(n.h2,{id:"start-your-private-chain",children:"Start your private chain"}),"\n",(0,i.jsxs)(n.p,{children:["Run ",(0,i.jsx)(n.code,{children:"mkchain"})," to create your Helm values"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"mkchain $CHAIN_NAME\n"})}),"\n",(0,i.jsxs)(n.p,{children:["This will create the file ",(0,i.jsx)(n.code,{children:"./${CHAIN_NAME}_values.yaml"})]}),"\n",(0,i.jsx)(n.p,{children:"Create a Helm release that will start your chain:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"helm install $CHAIN_NAME tacoinfra/tezos-chain \\\n--values ./${CHAIN_NAME}_values.yaml \\\n--namespace tacoinfra --create-namespace\n"})}),"\n",(0,i.jsx)(n.p,{children:"Your kubernetes cluster will now be running a series of jobs to\nperform the following tasks:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"generate a node identity"}),"\n",(0,i.jsx)(n.li,{children:"create a baker account"}),"\n",(0,i.jsx)(n.li,{children:"generate a genesis block for your chain"}),"\n",(0,i.jsx)(n.li,{children:"start the bootstrap-node baker to bake/validate the chain"}),"\n",(0,i.jsx)(n.li,{children:"activate the protocol"}),"\n",(0,i.jsx)(n.li,{children:"bake the first block"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"You can find your node in the tacoinfra namespace with some status information using kubectl."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"kubectl -n tacoinfra get pods -l appType=octez-node\n"})}),"\n",(0,i.jsxs)(n.p,{children:["You can view (and follow using the ",(0,i.jsx)(n.code,{children:"-f"})," flag) logs for your node using the following command:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"kubectl -n tacoinfra logs -l appType=octez-node -c octez-node -f --prefix\n"})}),"\n",(0,i.jsx)(n.p,{children:"Congratulations! You now have an operational Tezos based permissioned\nchain running one node."}),"\n",(0,i.jsx)(n.h2,{id:"adding-nodes-within-the-cluster",children:"Adding nodes within the cluster"}),"\n",(0,i.jsxs)(n.p,{children:["You can spin up a number of regular peer nodes that don't bake in your cluster by passing ",(0,i.jsx)(n.code,{children:"--nodes N"})," to ",(0,i.jsx)(n.code,{children:"mkchain"}),". You can use this to both scale up and down."]}),"\n",(0,i.jsxs)(n.p,{children:["Or if you previously spun up the chain using ",(0,i.jsx)(n.code,{children:"mkchain"}),', you may adjust\nyour setup to an arbitrary number of nodes by updating the "nodes"\nsection in the values yaml file.']}),"\n",(0,i.jsxs)(n.p,{children:["nodes is a dictionary where each key value pair defines a statefulset\nand a number of instances thereof. The name (key) defines the name of\nthe statefulset and will be the base of the pod names. The name must be\nDNS compliant or you will get odd errors. The instances are defined as a\nlist because their names are simply ",(0,i.jsx)(n.code,{children:"-N"})," appended to the statefulsetname.\nSaid names are traditionally kebab case."]}),"\n",(0,i.jsx)(n.p,{children:"At the statefulset level, the following parameters are allowed:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"storage_size: the size of the PV"}),"\n",(0,i.jsx)(n.li,{children:'runs: a list of containers to run, e.g. "baker", "accuser"'}),"\n",(0,i.jsxs)(n.li,{children:["instances: a list of nodes to fire up, each is a dictionary\ndefining:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"bake_using_accounts"}),": The name of the accounts that should be used\nfor baking."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"is_bootstrap_node"}),": Is this node a bootstrap peer."]}),"\n",(0,i.jsxs)(n.li,{children:["config: The ",(0,i.jsx)(n.code,{children:"config"})," property should mimic the structure\nof a node's config.json.\nRun ",(0,i.jsx)(n.code,{children:"tezos-node config --help"})," for more info."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"defaults are filled in for most values."}),"\n",(0,i.jsx)(n.p,{children:"E.g.:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"nodes:\n baking-node:\n storage_size: 15Gi\n runs:\n - baker\n - logger\n instances:\n - bake_using_accounts: [baker0]\n is_bootstrap_node: true\n config:\n shell:\n history_mode: rolling\n full-node:\n instances:\n - {}\n - {}\n"})}),"\n",(0,i.jsx)(n.p,{children:"This will run the following nodes:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"baking-node-0"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"full-node-0"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"full-node-1"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"baking-node-0"})," will run baker and logger containers\nand will be the only bootstrap node. ",(0,i.jsx)(n.code,{children:"full-node-*"})," are just nodes\nwith no extras."]}),"\n",(0,i.jsx)(n.p,{children:"To upgrade your Helm release run:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"helm upgrade $CHAIN_NAME tacoinfra/tezos-chain \\\n--values ./${CHAIN_NAME}_values.yaml \\\n--namespace tacoinfra\n"})}),"\n",(0,i.jsx)(n.p,{children:"The nodes will start up and establish peer-to-peer connections in a full mesh topology."}),"\n",(0,i.jsxs)(n.p,{children:["List all of your running nodes: ",(0,i.jsx)(n.code,{children:"kubectl -n tacoinfra get pods -l appType=octez-node"})]})]})}function h(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},1151:(e,n,s)=>{s.d(n,{Z:()=>t,a:()=>o});var i=s(7294);const a={},r=i.createContext(a);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/e95f8bcf.68477208.js b/assets/js/e95f8bcf.68477208.js
new file mode 100644
index 0000000..7dc2a04
--- /dev/null
+++ b/assets/js/e95f8bcf.68477208.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[30],{7776:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var r=t(5893),s=t(1151);const i={},o="Tezos Baker",a={id:"Baker",title:"Tezos Baker",description:"Running a Tezos Testnet baker",source:"@site/Baker.md",sourceDirName:".",slug:"/Baker",permalink:"/Baker",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"tezosK8sSidebar",previous:{title:"Public network node",permalink:"/Public-Node"},next:{title:"Creating a Private Blockchain",permalink:"/Private-Chain"}},c={},l=[{value:"Running a Tezos Testnet baker",id:"running-a-tezos-testnet-baker",level:2},{value:"Running a Mainnet Baker",id:"running-a-mainnet-baker",level:2},{value:"Running with a remote signer",id:"running-with-a-remote-signer",level:3},{value:"Note on the remote signer",id:"note-on-the-remote-signer",level:4}];function d(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"tezos-baker",children:"Tezos Baker"}),"\n",(0,r.jsx)(n.h2,{id:"running-a-tezos-testnet-baker",children:"Running a Tezos Testnet baker"}),"\n",(0,r.jsx)(n.p,{children:"Running a Tezos Baker on testnet is easy."}),"\n",(0,r.jsxs)(n.p,{children:['In a Tezos Testnet, it is acceptable to use an in-memory signer. In this example, we run a bakery called "Acme Bakery". The private baking key is passed as helm parameter in ',(0,r.jsx)(n.code,{children:"values.yaml"})," and stored in a Kubernetes secret."]}),"\n",(0,r.jsxs)(n.p,{children:["The below ",(0,r.jsx)(n.code,{children:"values.yaml"})," will start a ghostnet baker:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'images:\n octez: tezos/tezos:octez-v20.2 # replace with most recent version\nnode_config_network:\n chain_name: ghostnet\nnode_globals:\n env:\n all:\n TEZOS_CLIENT_UNSAFE_DISABLE_DISCLAIMER: "Y"\nprotocols:\n - command: PtParisC # replace with the most recent protocol\n vote:\n liquidity_baking_toggle_vote: pass\naccounts:\n acme-bakery:\n key: edsk3ESSEABwYbxAnUAKfbZ7s4XpBDiNFaS3xKkzWJcWtCp57Ty1mN\nbakers:\n acme-bakery:\n bake_using_accounts:\n - acme-bakery\n node_rpc_url: http://node-0.node:8732\nnodes:\n acme:\n runs:\n - octez_node\n storage_size: 50Gi\n instances:\n - config:\n shell:\n history_mode: rolling\n rolling-node: null\n'})}),"\n",(0,r.jsx)(n.p,{children:"This will launch:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["an ",(0,r.jsx)(n.code,{children:"octez-node"})," pod"]}),"\n",(0,r.jsxs)(n.li,{children:["a ",(0,r.jsx)(n.code,{children:"baker"})," pod"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Then, you need to register as a baker. See ",(0,r.jsx)(n.a,{href:"https://tezos.gitlab.io/introduction/howtorun.html#register-and-check-your-rights",children:"Octez documentation"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"running-a-mainnet-baker",children:"Running a Mainnet Baker"}),"\n",(0,r.jsxs)(n.p,{children:["On mainnet, running an in-memory signer is ",(0,r.jsx)(n.strong,{children:"strongly discouraged"}),". Indeed, improper disclosure of the baker's secret key may lead to theft of funds or equivocation."]}),"\n",(0,r.jsx)(n.p,{children:"Instead, the recommended method is to use a Key Management System (KMS) or Hardware Security Module (HSM)."}),"\n",(0,r.jsx)(n.h3,{id:"running-with-a-remote-signer",children:"Running with a remote signer"}),"\n",(0,r.jsx)(n.p,{children:"A Tezos-k8s baker can be configured to run with a remote signer external to the cluster."}),"\n",(0,r.jsx)(n.p,{children:"You must know:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"the URL to the remote signing endpoint. It must be accessible to the cluster, with a VPC or on the public Internet,"}),"\n",(0,r.jsxs)(n.li,{children:["the public key of the baker's address (not the hash starting with ",(0,r.jsx)(n.code,{children:"tz"}),")"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Configure a mainnet signer as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"images:\n octez: tezos/tezos:octez-v20.2 # replace with most recent version\nprotocols:\n - command: PsParisC # replace with the most recent protocol\n vote:\n liquidity_baking_toggle_vote: pass\naccounts:\n acme-bakery:\n key: edpkxxxx # the public key\n signer_url: https://my-signer-url/tz1xxxxx\nbakers:\n acme-bakery:\n bake_using_accounts:\n - acme-bakery\n node_rpc_url: http://node-0.acme:8732\nnodes:\n acme:\n runs:\n - octez_node\n storage_size: 50Gi\n instances:\n - config:\n shell:\n history_mode: rolling\n rolling-node: null\n"})}),"\n",(0,r.jsx)(n.h4,{id:"note-on-the-remote-signer",children:"Note on the remote signer"}),"\n",(0,r.jsx)(n.p,{children:"For mainnet, it is recommended to use a remote signer that enforces high watermark protection, in order to prevent equivocation."}),"\n",(0,r.jsx)(n.p,{children:"Examples of such signers are:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["signer backed by:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://signatory.io",children:"Signatory"})}),"\n",(0,r.jsx)(n.li,{children:"a Ledger hardware device running the Tezos Signer app"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://serverlessrepo.aws.amazon.com/applications/us-east-2/030073751340/tezos-consensus-kms-signer",children:"Tezos Consensus KMS Signer"})," on AWS Serverless Application Repository"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>o});var r=t(7294);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/f3df3c11.db4ffdbc.js b/assets/js/f3df3c11.db4ffdbc.js
new file mode 100644
index 0000000..082160a
--- /dev/null
+++ b/assets/js/f3df3c11.db4ffdbc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[273],{957:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>h});var t=s(5893),r=s(1151);const i={},a="Signers",o={id:"Tezos-Signers",title:"Signers",description:"You may define remote signers with tezos-k8s. Bakers automatically use signers in their namespace",source:"@site/03-Tezos-Signers.md",sourceDirName:".",slug:"/Tezos-Signers",permalink:"/Tezos-Signers",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{},sidebar:"tezosK8sSidebar",previous:{title:"Nodes",permalink:"/Tezos-Nodes"},next:{title:"Other Helm charts",permalink:"/other-helm-charts"}},c={},h=[];function l(e){const n={a:"a",code:"code",h1:"h1",p:"p",pre:"pre",...(0,r.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"signers",children:"Signers"}),"\n",(0,t.jsx)(n.p,{children:"You may define remote signers with tezos-k8s. Bakers automatically use signers in their namespace\nthat are configured to sign for the accounts they are baking for.\nBy default no signer is configured."}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.a,{href:"https://tezos.gitlab.io/user/key-management.html#signer",children:"https://tezos.gitlab.io/user/key-management.html#signer"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"octezSigners: {}\n"})}),"\n",(0,t.jsx)(n.p,{children:"These signers use the octez-signer binary."}),"\n",(0,t.jsx)(n.p,{children:"Example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"octezSigners:\n tezos-signer-0:\n accounts:\n - baker0\n authorized_keys:\n # Names of accounts used to authenticate the baker to the signer.\n # The signer will only sign a request from a baker authenticated\n # by an allowed key.\n # If set, any baker targeting this signer will automatically have\n # the associated private key accessible locally.\n - authorized-key-0\n"})}),"\n",(0,t.jsxs)(n.p,{children:["Deploys a signer using AWS KMS to sign operations.\nThe ",(0,t.jsx)(n.code,{children:"AWS_REGION"})," env var must be set.\n",(0,t.jsx)(n.a,{href:"https://github.com/tacoinfra/tacoinfra-remote-signer",children:"https://github.com/tacoinfra/tacoinfra-remote-signer"})]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"tacoinfraSigners: {}\n"})}),"\n",(0,t.jsxs)(n.p,{children:["These signers deploy the ",(0,t.jsx)(n.a,{href:"https://github.com/tacoinfra/remote-signer",children:"Tacoifra remote signer"}),",\na program that passes signing requests to supported HSM or KMS devices."]}),"\n",(0,t.jsx)(n.p,{children:"Example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"tacoinfraSigners\n tacoinfra-signer:\n accounts:\n - tacoinfraSigner\n env:\n AWS_REGION: us-east-2\n serviceAccount:\n create: true\n ## EKS example for setting the role-arn\n annotations:\n eks.amazonaws.com/role-arn: \n"})})]})}function u(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},1151:(e,n,s)=>{s.d(n,{Z:()=>o,a:()=>a});var t=s(7294);const r={},i=t.createContext(r);function a(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/f7d030cf.c0b463f3.js b/assets/js/f7d030cf.c0b463f3.js
new file mode 100644
index 0000000..8632f89
--- /dev/null
+++ b/assets/js/f7d030cf.c0b463f3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[436],{2353:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>t,default:()=>d,frontMatter:()=>l,metadata:()=>o,toc:()=>a});var s=i(5893),r=i(1151);const l={},t=void 0,o={id:"Prerequisites",title:"Prerequisites",description:"Prerequisites",source:"@site/Prerequisites.md",sourceDirName:".",slug:"/Prerequisites",permalink:"/Prerequisites",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"tezosK8sSidebar",previous:{title:"Overview",permalink:"/"},next:{title:"Public network node",permalink:"/Public-Node"}},c={},a=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"For local deployment",id:"for-local-deployment",level:3},{value:"For deployment on a cloud platform (AWS)",id:"for-deployment-on-a-cloud-platform-aws",level:3},{value:"Installing prerequisites",id:"installing-prerequisites",level:2},{value:"Mac",id:"mac",level:3},{value:"Arch Linux",id:"arch-linux",level:3},{value:"Other Operating Systems",id:"other-operating-systems",level:3},{value:"Configuring Minikube",id:"configuring-minikube",level:2},{value:"Mac",id:"mac-1",level:3},{value:"Other Operating Systems",id:"other-operating-systems-1",level:3},{value:"Starting Minikube",id:"starting-minikube",level:2},{value:"Adding the Tacoinfra Helm Chart Repository",id:"adding-the-tacoinfra-helm-chart-repository",level:2},{value:"Using a custom Octez build",id:"using-a-custom-octez-build",level:2},{value:"Notes",id:"notes",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"python3 (>=3.7)"}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.docker.com/get-docker/",children:"docker"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://kubernetes.io/docs/reference/kubectl/kubectl/",children:"kubectl"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://helm.sh/",children:"helm"})}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"for-local-deployment",children:"For local deployment"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://minikube.sigs.k8s.io/docs/",children:"minikube"})}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"for-deployment-on-a-cloud-platform-aws",children:"For deployment on a cloud platform (AWS)"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["we recommend ",(0,s.jsx)(n.a,{href:"https://www.pulumi.com/docs/get-started/install/",children:"pulumi"}),", an infrastructure-as-code platform, for cloud deployments"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"installing-prerequisites",children:"Installing prerequisites"}),"\n",(0,s.jsx)(n.p,{children:"This section varies depending on OS."}),"\n",(0,s.jsx)(n.h3,{id:"mac",children:"Mac"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Install ",(0,s.jsx)(n.a,{href:"https://docs.docker.com/docker-for-mac/install/",children:"Docker Desktop"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Start Docker Desktop and follow the setup instructions. Note: You may quit Docker after it has finished setting up. It is not required that Docker Desktop is running for you to run a Tezos chain."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Install ",(0,s.jsx)(n.a,{href:"https://brew.sh/",children:"homebrew"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:'/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"\n'})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Install other prerequisites:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"brew install python3 kubectl minikube helm\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"arch-linux",children:"Arch Linux"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"pacman -Syu && pacman -S docker python3 minikube kubectl kubectx helm\n"})}),"\n",(0,s.jsx)(n.h3,{id:"other-operating-systems",children:"Other Operating Systems"}),"\n",(0,s.jsx)(n.p,{children:"Please see the respective pages for installation instructions:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://www.python.org/downloads/",children:"python3"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.docker.com/get-docker/",children:"docker"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://kubernetes.io/docs/tasks/tools/install-kubectl/",children:"kubectl"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://minikube.sigs.k8s.io/docs/start/",children:"minikube"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://helm.sh/docs/intro/install/",children:"helm"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"configuring-minikube",children:"Configuring Minikube"}),"\n",(0,s.jsxs)(n.p,{children:["It is suggested to deploy minikube as a virtual machine. This requires a virtual machine ",(0,s.jsx)(n.a,{href:"https://minikube.sigs.k8s.io/docs/drivers/",children:"driver"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"mac-1",children:"Mac"}),"\n",(0,s.jsxs)(n.p,{children:["Requires the ",(0,s.jsx)(n.a,{href:"https://minikube.sigs.k8s.io/docs/drivers/hyperkit/",children:"hyperkit"})," driver. This comes already bundled together with Docker Desktop."]}),"\n",(0,s.jsx)(n.p,{children:"Make hyperkit the default minikube driver:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"minikube config set driver hyperkit\n"})}),"\n",(0,s.jsx)(n.h3,{id:"other-operating-systems-1",children:"Other Operating Systems"}),"\n",(0,s.jsxs)(n.p,{children:["If in the next step minikube does not start correctly, you may need to configure a different driver for it. Please see the minikube docs ",(0,s.jsx)(n.a,{href:"https://minikube.sigs.k8s.io/docs/drivers/",children:"here"})," for more information."]}),"\n",(0,s.jsx)(n.h2,{id:"starting-minikube",children:"Starting Minikube"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"minikube start\n"})}),"\n",(0,s.jsx)(n.p,{children:"Configure your shell environment to use minikube\u2019s Docker daemon:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"eval $(minikube docker-env)\n"})}),"\n",(0,s.jsxs)(n.p,{children:["This allows you to run Docker commands inside of minikube. For example: ",(0,s.jsx)(n.code,{children:"docker images"})," to view the images that minikube has."]}),"\n",(0,s.jsx)(n.p,{children:"If you want to unset your shell from using minikube's docker daemon:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"eval $(minikube docker-env -u)\n"})}),"\n",(0,s.jsx)(n.h2,{id:"adding-the-tacoinfra-helm-chart-repository",children:"Adding the Tacoinfra Helm Chart Repository"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"helm repo add tacoinfra https://tacoinfra.github.io/tezos-helm-charts/\n"})}),"\n",(0,s.jsx)(n.h2,{id:"using-a-custom-octez-build",children:"Using a custom Octez build"}),"\n",(0,s.jsxs)(n.p,{children:["Create a clone of the ",(0,s.jsx)(n.a,{href:"https://gitlab.com/tezos/tezos",children:"Octez"}),"\nrepository. ",(0,s.jsx)(n.a,{href:"https://tezos.gitlab.io/introduction/howtoget.html#setting-up-the-development-environment-from-scratch",children:"Set up your development environment as usual"}),". Then run:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"eval $(minikube docker-env)\nmake docker-image\n"})}),"\n",(0,s.jsxs)(n.p,{children:["This will create a docker image called ",(0,s.jsx)(n.code,{children:"tezos:latest"})," and install it\ninto the minikube environment."]}),"\n",(0,s.jsx)(n.p,{children:"Or, if you prefer, you can build the image using:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"./scripts/create_docker_image.sh\n"})}),"\n",(0,s.jsxs)(n.p,{children:["This will create an image with a name like ",(0,s.jsx)(n.code,{children:"tezos/tezos:v16.0"}),".\nThen you install it thus:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"docker image save | ( eval $(minikube docker-env); docker image load )\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Either way, inside ",(0,s.jsx)(n.code,{children:"$CHAIN_NAME_values.yaml"}),", change the ",(0,s.jsx)(n.code,{children:"images"})," section to:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:"images:\n octez: \n"})}),"\n",(0,s.jsxs)(n.p,{children:["where the image is ",(0,s.jsx)(n.code,{children:"tezos:latest"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"Then install the chart as above."}),"\n",(0,s.jsx)(n.h2,{id:"notes",children:"Notes"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["We recommend using a very nice GUI for your k8s Tezos chain infrastructure called ",(0,s.jsx)(n.a,{href:"https://k8slens.dev/",children:"Lens"}),". This allows you to easily see all of the k8s resources that have been spun up as well as to view the logs for your Tezos nodes. Checkout a similar tool called ",(0,s.jsx)(n.a,{href:"https://k9scli.io/",children:"k9s"})," that works in the CLI."]}),"\n"]})]})}function d(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>o,a:()=>t});var s=i(7294);const r={},l=s.createContext(r);function t(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),s.createElement(l.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/f923bfa5.5e79841f.js b/assets/js/f923bfa5.5e79841f.js
new file mode 100644
index 0000000..ae17eaf
--- /dev/null
+++ b/assets/js/f923bfa5.5e79841f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[21],{794:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>i,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>l});var n=s(5893),r=s(1151);const o={},a="Helm charts",c={id:"helm-chart",title:"Helm charts",description:"Tezos-k8s is deployed as a helm chart.",source:"@site/00-helm-chart.md",sourceDirName:".",slug:"/helm-chart",permalink:"/helm-chart",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:0,frontMatter:{},sidebar:"tezosK8sSidebar",previous:{title:"Indexers",permalink:"/Indexers"},next:{title:"Accounts",permalink:"/Tezos-Accounts"}},i={},l=[];function h(e){const t={a:"a",h1:"h1",p:"p",...(0,r.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"helm-charts",children:"Helm charts"}),"\n",(0,n.jsx)(t.p,{children:"Tezos-k8s is deployed as a helm chart."}),"\n",(0,n.jsx)(t.p,{children:"The sections below explain how to configure accounts, nodes and signers."}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.a,{href:"https://github.com/tacoinfra/tezos-k8s/blob/main/charts/tezos/values.yaml",children:"values.yaml"})," file serves as a reference for all possible configuration options of the tezos chart."]})]})}function u(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},1151:(e,t,s)=>{s.d(t,{Z:()=>c,a:()=>a});var n=s(7294);const r={},o=n.createContext(r);function a(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/main.e0957760.js b/assets/js/main.e0957760.js
new file mode 100644
index 0000000..8b4a7db
--- /dev/null
+++ b/assets/js/main.e0957760.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.e0957760.js.LICENSE.txt */
+(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});n(7294);var r=n(8356),a=n.n(r),o=n(6887);const i={"08238c6d":[()=>n.e(383).then(n.bind(n,219)),"@site/index.md",219],17896441:[()=>Promise.all([n.e(532),n.e(918)]).then(n.bind(n,7212)),"@theme/DocItem",7212],"23c94973":[()=>n.e(6).then(n.bind(n,7104)),"@site/README.md",7104],"3e91cf0c":[()=>n.e(952).then(n.bind(n,8566)),"@site/Public-Node.md",8566],"5e95c892":[()=>n.e(661).then(n.bind(n,1892)),"@theme/DocsRoot",1892],"5fd41f69":[()=>n.e(392).then(n.bind(n,6504)),"@site/02-Tezos-Accounts.md",6504],"6d5d121f":[()=>n.e(184).then(n.bind(n,7725)),"@site/04-other-helm-charts.md",7725],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],a69c6c78:[()=>n.e(170).then(n.t.bind(n,3769,19)),"/home/runner/work/tezos-k8s/tezos-k8s/docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],a7bd4aaa:[()=>n.e(518).then(n.bind(n,8564)),"@theme/DocVersionRoot",8564],a94703ab:[()=>Promise.all([n.e(532),n.e(368)]).then(n.bind(n,2674)),"@theme/DocRoot",2674],aea41e44:[()=>n.e(539).then(n.bind(n,7959)),"@site/01-Tezos-Nodes.md",7959],af73a558:[()=>n.e(365).then(n.bind(n,7441)),"@site/Indexers.md",7441],e89a8fa1:[()=>n.e(753).then(n.bind(n,3974)),"@site/Private-Chain.md",3974],e95f8bcf:[()=>n.e(30).then(n.bind(n,7776)),"@site/Baker.md",7776],f3df3c11:[()=>n.e(273).then(n.bind(n,957)),"@site/03-Tezos-Signers.md",957],f7d030cf:[()=>n.e(436).then(n.bind(n,2353)),"@site/Prerequisites.md",2353],f923bfa5:[()=>n.e(21).then(n.bind(n,794)),"@site/00-helm-chart.md",794]};var l=n(5893);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(9670),c=n(226);function d(e,t){if("*"===e)return a()({loading:s,loader:()=>n.e(772).then(n.bind(n,1772)),modules:["@theme/NotFound"],webpack:()=>[1772],render(e,t){const n=e.default;return(0,l.jsx)(c.z,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},p=[],f=[],m=(0,u.Z)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),a().Map({loading:s,loader:d,modules:p,webpack:()=>f,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;return delete a.__context,(0,l.jsx)(c.z,{value:i,children:(0,l.jsx)(o,{...a,...n})})}})}const p=[{path:"/",component:d("/","1c2"),routes:[{path:"/",component:d("/","72c"),routes:[{path:"/",component:d("/","5bd"),routes:[{path:"/Baker",component:d("/Baker","db0"),exact:!0,sidebar:"tezosK8sSidebar"},{path:"/helm-chart",component:d("/helm-chart","4d3"),exact:!0,sidebar:"tezosK8sSidebar"},{path:"/Indexers",component:d("/Indexers","07c"),exact:!0,sidebar:"tezosK8sSidebar"},{path:"/other-helm-charts",component:d("/other-helm-charts","b64"),exact:!0,sidebar:"tezosK8sSidebar"},{path:"/Prerequisites",component:d("/Prerequisites","263"),exact:!0,sidebar:"tezosK8sSidebar"},{path:"/Private-Chain",component:d("/Private-Chain","d2e"),exact:!0,sidebar:"tezosK8sSidebar"},{path:"/Public-Node",component:d("/Public-Node","fe8"),exact:!0,sidebar:"tezosK8sSidebar"},{path:"/Tezos-Accounts",component:d("/Tezos-Accounts","3d7"),exact:!0,sidebar:"tezosK8sSidebar"},{path:"/Tezos-Nodes",component:d("/Tezos-Nodes","84b"),exact:!0,sidebar:"tezosK8sSidebar"},{path:"/Tezos-Signers",component:d("/Tezos-Signers","01b"),exact:!0,sidebar:"tezosK8sSidebar"},{path:"/",component:d("/","fc3"),exact:!0,sidebar:"tezosK8sSidebar"},{path:"/",component:d("/","15e"),exact:!0}]}]}]},{path:"*",component:d("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,t:()=>i});var r=n(7294),a=n(5893);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},7221:(e,t,n)=>{"use strict";var r=n(7294),a=n(745),o=n(3727),i=n(405),l=n(412);const s=[n(2497),n(3310),n(8320),n(2295)];var u=n(723),c=n(6550),d=n(8790),p=n(5893);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var m=n(5742),h=n(2263),g=n(4996),y=n(6668),b=n(1944),v=n(4711),w=n(9727),k=n(3320),x=n(8780),S=n(197);function E(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,h.Z)(),r=(0,v.l)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,p.jsxs)(m.Z,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function C(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.Z)(),{pathname:r}=(0,c.TH)();return e+(0,x.applyTrailingSlash)((0,g.Z)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:r;return(0,p.jsxs)(m.Z,{children:[(0,p.jsx)("meta",{property:"og:url",content:a}),(0,p.jsx)("link",{rel:"canonical",href:a})]})}function T(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,y.L)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(m.Z,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.h})]}),n&&(0,p.jsx)(b.d,{image:n}),(0,p.jsx)(C,{}),(0,p.jsx)(E,{}),(0,p.jsx)(S.Z,{tag:k.HX,locale:e}),(0,p.jsx)(m.Z,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const _=new Map;function j(e){if(_.has(e.pathname))return{...e,pathname:_.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return _.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return _.set(e.pathname,t),{...e,pathname:t}}var A=n(8934),L=n(8940),N=n(469);function R(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const P=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,N.Z)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),R("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class D extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?R("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=R("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(P,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(c.AW,{location:t,render:()=>e})})}}const I=D,F="__docusaurus-base-url-issue-banner-container",M="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${F}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
tezos-proto-cruncher: a chart to deploy a daemonset in your cluster to find vanity hashes for protocols in parallel
+
+
+
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
new file mode 100644
index 0000000..9a292fd
--- /dev/null
+++ b/sitemap.xml
@@ -0,0 +1 @@
+https://tezos-k8s.io/Bakerweekly0.5https://tezos-k8s.io/helm-chartweekly0.5https://tezos-k8s.io/Indexersweekly0.5https://tezos-k8s.io/other-helm-chartsweekly0.5https://tezos-k8s.io/Prerequisitesweekly0.5https://tezos-k8s.io/Private-Chainweekly0.5https://tezos-k8s.io/Public-Nodeweekly0.5https://tezos-k8s.io/Tezos-Accountsweekly0.5https://tezos-k8s.io/Tezos-Nodesweekly0.5https://tezos-k8s.io/Tezos-Signersweekly0.5https://tezos-k8s.io/weekly0.5https://tezos-k8s.io/weekly0.5
\ No newline at end of file