From c443994cbb5fc46534900dba5a7e33658aa491b7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 23 Aug 2023 15:45:13 +0000 Subject: [PATCH] deploy: 5e96387fc5d39a1ae99bae3b232c5a053f3f442d --- 404.html | 8 ++++---- assets/js/29104121.4b4c0c9f.js | 1 + assets/js/67500d10.e2487d65.js | 1 - assets/js/67500d10.f17b5a6e.js | 1 + ...86d7023c.531bf16e.js => 86d7023c.a59f4b3c.js} | 2 +- ...935f2afb.9bf28d5c.js => 935f2afb.cce8799a.js} | 2 +- ...99d39b6e.4d7dc8e8.js => 99d39b6e.d8bb060c.js} | 2 +- assets/js/main.cd70bc48.js | 2 ++ ....LICENSE.txt => main.cd70bc48.js.LICENSE.txt} | 0 assets/js/main.f6b37b2b.js | 2 -- assets/js/runtime~main.14188775.js | 1 + assets/js/runtime~main.67c35b23.js | 1 - command_line_flags/index.html | 12 ++++++------ comment_dsl/index.html | 14 +++++++------- current_capacities/index.html | 10 +++++----- examples/index.html | 12 ++++++------ getting_started/index.html | 10 +++++----- index.html | 10 +++++----- integration-other/index.html | 16 ++++++++++++++++ output_format/index.html | 10 +++++----- search-index.json | 2 +- search/index.html | 8 ++++---- sitemap.xml | 2 +- wasm_differences/index.html | 10 +++++----- 24 files changed, 78 insertions(+), 61 deletions(-) create mode 100644 assets/js/29104121.4b4c0c9f.js delete mode 100644 assets/js/67500d10.e2487d65.js create mode 100644 assets/js/67500d10.f17b5a6e.js rename assets/js/{86d7023c.531bf16e.js => 86d7023c.a59f4b3c.js} (80%) rename assets/js/{935f2afb.9bf28d5c.js => 935f2afb.cce8799a.js} (53%) rename assets/js/{99d39b6e.4d7dc8e8.js => 99d39b6e.d8bb060c.js} (97%) create mode 100644 assets/js/main.cd70bc48.js rename assets/js/{main.f6b37b2b.js.LICENSE.txt => main.cd70bc48.js.LICENSE.txt} (100%) delete mode 100644 assets/js/main.f6b37b2b.js create mode 100644 assets/js/runtime~main.14188775.js delete mode 100644 assets/js/runtime~main.67c35b23.js create mode 100644 integration-other/index.html diff --git a/404.html b/404.html index 7628dff..55dec03 100644 --- a/404.html +++ b/404.html @@ -4,13 +4,13 @@ Page Not Found | cddl-codegen - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

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/29104121.4b4c0c9f.js b/assets/js/29104121.4b4c0c9f.js new file mode 100644 index 0000000..b40b90a --- /dev/null +++ b/assets/js/29104121.4b4c0c9f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcddl_codegen_documentation=self.webpackChunkcddl_codegen_documentation||[]).push([[263],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var d=r.createContext({}),c=function(e){var t=r.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(d.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},_=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,d=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),s=c(n),_=i,h=s["".concat(d,".").concat(_)]||s[_]||m[_]||a;return n?r.createElement(h,o(o({ref:t},p),{},{components:n})):r.createElement(h,o({ref:t},p))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=_;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l[s]="string"==typeof e?e:i,o[1]=l;for(var c=2;c{n(7294)},5488:(e,t,n)=>{n(7294),n(2389)},7712:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var r=n(7462),i=(n(7294),n(3905));n(5488),n(5162);const a={sidebar_position:7},o="Integration with other cddl-codegen libraries",l={unversionedId:"integration-other",id:"integration-other",title:"Integration with other cddl-codegen libraries",description:"This guide is written in general for integrating with other libraries generated by cddl-codegen, but in particular references CML (cardano-multiplatform-lib) for examples. Most things referencing CML will be relevant to other common cddl-codegen generated libraries used as dependencies.",source:"@site/docs/integration-other.mdx",sourceDirName:".",slug:"/integration-other",permalink:"/cddl-codegen/integration-other",draft:!1,tags:[],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Examples",permalink:"/cddl-codegen/examples"}},d={},c=[{value:"Common cddl-codegen traits",id:"common-cddl-codegen-traits",level:2},{value:"CML macros",id:"cml-macros",level:2},{value:"Externally defined types",id:"externally-defined-types",level:2},{value:"_CDDL_CODEGEN_EXTERN_TYPE_ vs _CDDL_CODEGEN_RAW_BYTES_TYPE_",id:"_cddl_codegen_extern_type_-vs-_cddl_codegen_raw_bytes_type_",level:3},{value:"Import pathing",id:"import-pathing",level:3},{value:"Non-black-box types",id:"non-black-box-types",level:3}],p={toc:c},s="wrapper";function m(e){let{components:t,...n}=e;return(0,i.kt)(s,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"integration-with-other-cddl-codegen-libraries"},"Integration with other cddl-codegen libraries"),(0,i.kt)("p",null,"This guide is written in general for integrating with other libraries generated by cddl-codegen, but in particular references CML (cardano-multiplatform-lib) for examples. Most things referencing CML will be relevant to other common cddl-codegen generated libraries used as dependencies."),(0,i.kt)("h2",{id:"common-cddl-codegen-traits"},"Common cddl-codegen traits"),(0,i.kt)("p",null,"When generating a library that has as a dependency another cddl-codegen-generated library you can share the common cddl-codegen types/traits like ",(0,i.kt)("inlineCode",{parentName:"p"},"Deserialize"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"RawBytesEncoding"),", etc. Remember to pass in ",(0,i.kt)("inlineCode",{parentName:"p"},"--common-import-override")," tag. For CML we pass in ",(0,i.kt)("inlineCode",{parentName:"p"},"--common-import-override=cml_core"),". This is where all the common cddl-codegen traits are located so we can avoid having duplicate incompatible traits in other libraries."),(0,i.kt)("h2",{id:"cml-macros"},"CML macros"),(0,i.kt)("p",null,"In CML we have macros for implementing WASM conversions and JSON/bytes. We pass in ",(0,i.kt)("inlineCode",{parentName:"p"},"--wasm-cbor-json-api-macro=cml_core_wasm::impl_wasm_cbor_json_api")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"--wasm-conversions-macro=cml_core_wasm::impl_wasm_conversions")," which are both located in ",(0,i.kt)("inlineCode",{parentName:"p"},"cml_core_wasm"),". This drastically reduces WASM wrapper boilerplate."),(0,i.kt)("h2",{id:"externally-defined-types"},"Externally defined types"),(0,i.kt)("h3",{id:"_cddl_codegen_extern_type_-vs-_cddl_codegen_raw_bytes_type_"},(0,i.kt)("inlineCode",{parentName:"h3"},"_CDDL_CODEGEN_EXTERN_TYPE_")," vs ",(0,i.kt)("inlineCode",{parentName:"h3"},"_CDDL_CODEGEN_RAW_BYTES_TYPE_")),(0,i.kt)("p",null,"There are two ways to have explicitly externally-defined types in cddl-codegen: ",(0,i.kt)("inlineCode",{parentName:"p"},"_CDDL_CODEGEN_EXTERN_TYPE_")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"_CDDL_CODEGEN_RAW_BYTES_TYPE_"),". It is important to choose the appropriate one. If the type was defined originally as ",(0,i.kt)("inlineCode",{parentName:"p"},"_CDDL_CODEGEN_RAW_BYTES_TYPE_")," in CML (or whatever library) then it is important to define it using this so it will be encoded correctly. If the type was either defined using ",(0,i.kt)("inlineCode",{parentName:"p"},"_CDDL_CODEGEN_EXTERN_TYPE_")," (hand-written) or was explicitly defined normally in the dependency lib (e.g. CML) then use ",(0,i.kt)("inlineCode",{parentName:"p"},"_CDDL_CODEGEN_EXTERN_TYPE_"),"."),(0,i.kt)("h3",{id:"import-pathing"},"Import pathing"),(0,i.kt)("p",null,"In order to make imports easier it's recommended to make a directory corresponding to the dependency and put the ",(0,i.kt)("inlineCode",{parentName:"p"},"_CDDL_CODEGEN_RAW_BYTES_TYPE_")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"_CDDL_CODEGEN_EXTERN_TYPE_")," external types inside of there and then later delete the output directories containing those modules. For an example see the ",(0,i.kt)("inlineCode",{parentName:"p"},"cml_chain")," directory inside of the ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/dcSpark/cardano-multiplatform-lib/tree/develop/specs/multiera"},(0,i.kt)("inlineCode",{parentName:"a"},"specs/multiera")),"."),(0,i.kt)("h3",{id:"non-black-box-types"},"Non-black-box types"),(0,i.kt)("p",null,"Another important detail, demonstrated in the above ",(0,i.kt)("inlineCode",{parentName:"p"},"multiera")," CDDL spec, is that when using external types that aren't 100% self-contained (i.e. can't be treated as a black box that implements ",(0,i.kt)("inlineCode",{parentName:"p"},"Serialize")," + ",(0,i.kt)("inlineCode",{parentName:"p"},"Deserialize"),", nor as CBOR bytes implementing ",(0,i.kt)("inlineCode",{parentName:"p"},"RawBytesEncoding"),") like ",(0,i.kt)("inlineCode",{parentName:"p"},"uint")," aliases should be explicitly defined and then removed afterwards. Using the above directory/pathing tip makes this trivial to remove after."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/67500d10.e2487d65.js b/assets/js/67500d10.e2487d65.js deleted file mode 100644 index 55d3231..0000000 --- a/assets/js/67500d10.e2487d65.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcddl_codegen_documentation=self.webpackChunkcddl_codegen_documentation||[]).push([[503],{3905:(n,e,t)=>{t.d(e,{Zo:()=>s,kt:()=>f});var r=t(7294);function u(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function a(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,r)}return t}function l(n){for(var e=1;e=0||(u[t]=n[t]);return u}(n,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(n);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(n,t)&&(u[t]=n[t])}return u}var p=r.createContext({}),o=function(n){var e=r.useContext(p),t=e;return n&&(t="function"==typeof n?n(e):l(l({},e),n)),t},s=function(n){var e=o(n.components);return r.createElement(p.Provider,{value:e},n.children)},c="mdxType",m={inlineCode:"code",wrapper:function(n){var e=n.children;return r.createElement(r.Fragment,{},e)}},d=r.forwardRef((function(n,e){var t=n.components,u=n.mdxType,a=n.originalType,p=n.parentName,s=i(n,["components","mdxType","originalType","parentName"]),c=o(t),d=u,f=c["".concat(p,".").concat(d)]||c[d]||m[d]||a;return t?r.createElement(f,l(l({ref:e},s),{},{components:t})):r.createElement(f,l({ref:e},s))}));function f(n,e){var t=arguments,u=e&&e.mdxType;if("string"==typeof n||u){var a=t.length,l=new Array(a);l[0]=d;var i={};for(var p in e)hasOwnProperty.call(e,p)&&(i[p]=e[p]);i.originalType=n,i[c]="string"==typeof n?n:u,l[1]=i;for(var o=2;o{t.r(e),t.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>i,toc:()=>o});var r=t(7462),u=(t(7294),t(3905));t(2389);const a={sidebar_position:7},l="Examples",i={unversionedId:"examples",id:"examples",title:"Examples",description:"Aliases",source:"@site/docs/examples.mdx",sourceDirName:".",slug:"/examples",permalink:"/cddl-codegen/examples",draft:!1,tags:[],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Comment DSL",permalink:"/cddl-codegen/comment_dsl"}},p={},o=[{value:"Aliases",id:"aliases",level:2},{value:"input",id:"input",level:4},{value:"output",id:"output",level:4},{value:"input",id:"input-1",level:4},{value:"output",id:"output-1",level:4},{value:"input",id:"input-2",level:4},{value:"output",id:"output-2",level:4},{value:"Size/length requirements on primitives",id:"sizelength-requirements-on-primitives",level:2},{value:"input",id:"input-3",level:4},{value:"output",id:"output-3",level:4},{value:"Array struct",id:"array-struct",level:2},{value:"input",id:"input-4",level:4},{value:"output",id:"output-4",level:4},{value:"Mark as externally defined.",id:"mark-as-externally-defined",level:2},{value:"input",id:"input-5",level:4},{value:"output",id:"output-5",level:4},{value:"Map struct",id:"map-struct",level:2},{value:"input",id:"input-6",level:4},{value:"output",id:"output-6",level:4},{value:"Basic groups",id:"basic-groups",level:2},{value:"input",id:"input-7",level:4},{value:"output",id:"output-7",level:4},{value:"input",id:"input-8",level:4},{value:"output",id:"output-8",level:4},{value:"Type Choices",id:"type-choices",level:2},{value:"input",id:"input-9",level:4},{value:"output",id:"output-9",level:4},{value:"input",id:"input-10",level:4},{value:"output",id:"output-10",level:4}],s={toc:o},c="wrapper";function m(n){let{components:e,...t}=n;return(0,u.kt)(c,(0,r.Z)({},s,t,{components:e,mdxType:"MDXLayout"}),(0,u.kt)("h1",{id:"examples"},"Examples"),(0,u.kt)("h2",{id:"aliases"},"Aliases"),(0,u.kt)("p",null,"Type alias"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"hash = bytes\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"hash = bytes\n")),(0,u.kt)("h4",{id:"output"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"pub type Hash = Vec;\n")))),(0,u.kt)("p",null,"Create a newtype around another type instead of an alias"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"special_hash = bytes ; @newtype\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-1"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"special_hash = bytes ; @newtype\n")),(0,u.kt)("h4",{id:"output-1"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"#[derive(Clone, Debug)]\npub struct SpecialHash(pub Vec);\n\nimpl SpecialHash {\n pub fn get(&self) -> &Vec {\n &self.0\n }\n\n pub fn new(inner: Vec) -> Self {\n Self(inner)\n }\n}\n\nimpl From> for SpecialHash {\n fn from(inner: Vec) -> Self {\n SpecialHash::new(inner)\n }\n}\n\nimpl From for Vec {\n fn from(wrapper: SpecialHash) -> Self {\n wrapper.0\n }\n}\n")))),(0,u.kt)("p",null,"or don't generate either and directly use the aliased type instead"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"hidden_hash = bytes ; @no_alias\n\nhashes = [\n hash,\n special_hash,\n hidden_hash,\n]\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-2"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"hash = bytes\nspecial_hash = bytes ; @newtype\nhidden_hash = bytes ; @no_alias\n\nhashes = [\n hash,\n special_hash,\n hidden_hash,\n]\n")),(0,u.kt)("h4",{id:"output-2"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"pub type Hash = Vec;\n\n#[derive(Clone, Debug)]\npub struct Hashes {\n pub hash: Hash,\n pub special_hash: SpecialHash,\n pub hidden_hash: Vec,\n}\n\nimpl Hashes {\n pub fn new(hash: Hash, special_hash: SpecialHash, hidden_hash: Vec) -> Self {\n Self {\n hash,\n special_hash,\n hidden_hash,\n }\n }\n}\n\n#[derive(Clone, Debug)]\npub struct SpecialHash(pub Vec);\n\nimpl SpecialHash {\n pub fn get(&self) -> &Vec {\n &self.0\n }\n\n pub fn new(inner: Vec) -> Self {\n Self(inner)\n }\n}\n\nimpl From> for SpecialHash {\n fn from(inner: Vec) -> Self {\n SpecialHash::new(inner)\n }\n}\n\nimpl From for Vec {\n fn from(wrapper: SpecialHash) -> Self {\n wrapper.0\n }\n}\n")))),(0,u.kt)("admonition",{type:"info"},(0,u.kt)("p",{parentName:"admonition"},"pay attention to the @name comment placement as it can be finicky")),(0,u.kt)("h2",{id:"sizelength-requirements-on-primitives"},"Size/length requirements on primitives"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"limitations = [\n u_8: uint .size 1,\n u_16: uint .le 65535,\n u_32: 0..4294967295,\n u_64: uint .size 8,\n i_8: -128..127,\n i_64: int .size 8,\n hash32: bytes .size 32,\n bounded: text .size (10..20),\n]\n\n")),(0,u.kt)("p",null,"Integer restrictions that map to rust types are directly translated"),(0,u.kt)("p",null,"u8 in rust"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"u_8: uint .size 1\n")),(0,u.kt)("p",null,"u16 in rust"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"u_16: uint .le 65535\n")),(0,u.kt)("p",null,"u32, etc..."),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"u_32: 0..4294967295\nu_64: uint .size 8\ni_8: -128..127\ni_64: int .size 8\n\n")),(0,u.kt)("p",null,"One can also limit strings (text or bytes) to a specific length"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"hash32: bytes .size 32\n")),(0,u.kt)("p",null,"or to a range e.g. between 10 and 20 bytes"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"bounded: text .size (10..20)\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-3"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"limitations = [\n u_8: uint .size 1,\n u_16: uint .le 65535,\n u_32: 0..4294967295,\n u_64: uint .size 8,\n i_8: -128..127,\n i_64: int .size 8,\n hash32: bytes .size 32,\n bounded: text .size (10..20),\n]\n")),(0,u.kt)("h4",{id:"output-3"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"#[derive(Clone, Debug)]\npub struct Limitations {\n pub u_8: u8,\n pub u_16: u16,\n pub u_32: u32,\n pub u_64: u64,\n pub i_8: i8,\n pub i_64: i64,\n pub hash32: Vec,\n pub bounded: String,\n}\n\nimpl Limitations {\n pub fn new(\n u_8: u8,\n u_16: u16,\n u_32: u32,\n u_64: u64,\n i_8: i8,\n i_64: i64,\n hash32: Vec,\n bounded: String,\n ) -> Self {\n Self {\n u_8,\n u_16,\n u_32,\n u_64,\n i_8,\n i_64,\n hash32,\n bounded,\n }\n }\n}\n")))),(0,u.kt)("h2",{id:"array-struct"},"Array struct"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"foo = [\n int,\n name: text,\n fp: float64,\n]\n\n")),(0,u.kt)("p",null,"All primitives are supported, e.g. uint, nint and int supported. int generates special code as no rust equivalent.\nUnnamed array fields try to derive name from type if possible:"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," int\n")),(0,u.kt)("p",null,"Text/bytes is also supported, or one can give them an explicit name:"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," name: text\n")),(0,u.kt)("p",null,"As well as floats (without --preserve-encodings=true)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," fp: float64\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-4"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"foo = [\n int,\n name: text,\n fp: float64,\n]\n")),(0,u.kt)("h4",{id:"output-4"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},'#[derive(Clone, Debug)]\npub struct Foo {\n pub index_0: Int,\n pub name: String,\n pub fp: f64,\n}\n\nimpl Foo {\n pub fn new(index_0: Int, name: String, fp: f64) -> Self {\n Self { index_0, name, fp }\n }\n}\n\n#[derive(Clone, Debug)]\npub enum Int {\n Uint(u64),\n Nint(u64),\n}\n\nimpl Int {\n pub fn new_uint(value: u64) -> Self {\n Self::Uint(value)\n }\n\n /// * `value` - Value as encoded in CBOR - note: a negative `x` here would be `|x + 1|` due to CBOR\'s `nint` encoding e.g. to represent -5, pass in 4.\n pub fn new_nint(value: u64) -> Self {\n Self::Nint(value)\n }\n}\n\nimpl std::fmt::Display for Int {\n fn fmt(&self, f: &mut std::fmt::Formatter<\'_>) -> std::fmt::Result {\n match self {\n Self::Uint(x) => write!(f, "{}", x),\n Self::Nint(x) => write!(f, "-{}", x + 1),\n }\n }\n}\n\nimpl std::str::FromStr for Int {\n type Err = IntError;\n\n fn from_str(s: &str) -> Result {\n let x = i128::from_str(s).map_err(IntError::Parsing)?;\n Self::try_from(x).map_err(IntError::Bounds)\n }\n}\n\nimpl TryFrom for Int {\n type Error = std::num::TryFromIntError;\n\n fn try_from(x: i128) -> Result {\n if x >= 0 {\n u64::try_from(x).map(Self::Uint)\n } else {\n u64::try_from((x + 1).abs()).map(Self::Nint)\n }\n }\n}\n\n#[derive(Clone, Debug)]\npub enum IntError {\n Bounds(std::num::TryFromIntError),\n Parsing(std::num::ParseIntError),\n}\n')))),(0,u.kt)("h2",{id:"mark-as-externally-defined"},"Mark as externally defined."),(0,u.kt)("p",null,"user has to insert/import code for this type after generation"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"extern_foo = _CDDL_CODEGEN_EXTERN_TYPE_\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-5"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"foo = _CDDL_CODEGEN_EXTERN_TYPE_\nbar = [\n x: uint,\n y: foo,\n]\n")),(0,u.kt)("h4",{id:"output-5"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"#[derive(Clone, Debug)]\npub struct Bar {\n pub x: u64,\n pub y: Foo,\n}\n\nimpl Bar {\n pub fn new(x: u64, y: Foo) -> Self {\n Self { x, y }\n }\n}\n")))),(0,u.kt)("h2",{id:"map-struct"},"Map struct"),(0,u.kt)("p",null,"Map struct + tagged fields + .cbor + optional fields + constants + .default"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},'bar = {\n foo: #6.1337(foo),\n extern_foo: bytes .cbor extern_foo\n ? derp: uint,\n 1 : uint / null, ; @name explicitly_named_1\n ? 5: "five",\n five: 5,\n ? 100: uint .default 0,\n}\n')),(0,u.kt)("p",null,"Fields can be tagged and this remains a serialization detail (hidden from API)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," foo: #6.1337(foo),\n")),(0,u.kt)("p",null,"They can also be encoded as CBOR bytes which remains a serialization detail (hidden from API). This can be combined with tags as well i.e. #6.42(bytes .cbor extern_foo)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," extern_foo: bytes .cbor extern_foo\n")),(0,u.kt)("p",null,"Optional field (generates as ",(0,u.kt)("inlineCode",{parentName:"p"},"Option"),")"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," ? derp: uint,\n")),(0,u.kt)("p",null,"Type choice with null will result in ",(0,u.kt)("inlineCode",{parentName:"p"},"Option")," too for the API. Also, you can give explicit names that differ from the key value for maps like this:"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," 1 : uint / null, ; @name explicitly_named_1\n")),(0,u.kt)("p",null,"Optional string constant (no field generated)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},' ? 5: "five",\n')),(0,u.kt)("p",null,"Integer constant (no field generated)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," five: 5,\n")),(0,u.kt)("p",null,"This will not be an optional field in rust, as when it is not present, it will be set to 0"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," ? 100: uint .default 0,\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-6"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},'bar = {\n foo: #6.1337(foo),\n extern_foo: bytes .cbor extern_foo\n ? derp: uint,\n 1 : uint / null, ; @name explicitly_named_1\n ? 5: "five",\n five: 5,\n ? 100: uint .default 0,\n}\n')),(0,u.kt)("h4",{id:"output-6"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"#[derive(Clone, Debug)]\npub struct Bar {\n pub foo: Foo,\n pub extern_foo: ExternFoo,\n pub derp: Option,\n pub explicitly_named_1: Option,\n pub key_100: u64,\n}\n\nimpl Bar {\n pub fn new(foo: Foo, extern_foo: ExternFoo, explicitly_named_1: Option) -> Self {\n Self {\n foo,\n extern_foo,\n derp: None,\n explicitly_named_1,\n key_100: 0,\n }\n }\n}\n")))),(0,u.kt)("h2",{id:"basic-groups"},"Basic groups"),(0,u.kt)("p",null,"Basic groups are supported and have their own type"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"basic = (\n b: #6.23(uint),\n c: text,\n)\n")),(0,u.kt)("p",null,"Basic groups are fully supported in array groups"),(0,u.kt)("p",null,"They can be put into an array struct directly i.e. embed their fields into outer, which is only a serialization detail. this field will be of type Basic;\nor one can embed them into a repeatable homogeneous array"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"outer = [\n a: uint,\n embedded: basic,\n homogeneous_array: [* basic],\n]\n\nother_basic = (\n b: uint,\n c: uint,\n)\n")),(0,u.kt)("p",null,"Basic groups can be embeded in maps, BUT deserialization will not be generated due to technical limitations"),(0,u.kt)("admonition",{title:"limitation",type:"warning"},(0,u.kt)("p",{parentName:"admonition"},"A single basic group cannot be put into both a map and an array group for serialization which is\nwhy we had to define a separate one ",(0,u.kt)("inlineCode",{parentName:"p"},"other_basic")," instead of just using ",(0,u.kt)("inlineCode",{parentName:"p"},"basic"))),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"outer_map = {\n a: uint,\n embedded: other_basic,\n}\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-7"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"basic = (\n b: #6.23(uint),\n c: text,\n)\n\nouter = [\n a: uint,\n embedded: basic,\n homogeneous_array: [* basic],\n]\n\nother_basic = (\n b: uint,\n c: uint,\n)\n\nouter_map = {\n a: uint,\n embedded: other_basic,\n}\n")),(0,u.kt)("h4",{id:"output-7"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"#[derive(Clone, Debug)]\npub struct Basic {\n pub b: u64,\n pub c: String,\n}\n\nimpl Basic {\n pub fn new(b: u64, c: String) -> Self {\n Self { b, c }\n }\n}\n\n#[derive(Clone, Debug)]\npub struct OtherBasic {\n pub b: u64,\n pub c: u64,\n}\n\nimpl OtherBasic {\n pub fn new(b: u64, c: u64) -> Self {\n Self { b, c }\n }\n}\n\n#[derive(Clone, Debug)]\npub struct Outer {\n pub a: u64,\n pub embedded: Basic,\n pub homogeneous_array: Vec,\n}\n\nimpl Outer {\n pub fn new(a: u64, embedded: Basic, homogeneous_array: Vec) -> Self {\n Self {\n a,\n embedded,\n homogeneous_array,\n }\n }\n}\n\n#[derive(Clone, Debug)]\npub struct OuterMap {\n pub a: u64,\n pub embedded: OtherBasic,\n}\n\nimpl OuterMap {\n pub fn new(a: u64, embedded: OtherBasic) -> Self {\n Self { a, embedded }\n }\n}\n")))),(0,u.kt)("p",null,"One can directly define homogeneous maps as fields (or define them at top-level).\nAlso define homogenous arrays as fields (or define them at top-level)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},'table_arr_members = {\n tab: { * text => text },\n arr: [ * uint ],\n}\n\ntype_choice = \n 0 ; @name you\n / "hello world" ; @name can\n / uint ; @name name\n / text ; @name variants\n / bytes ; @name like\n / #6.64([*uint]) ; @name this\n')),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-8"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},'table_arr_members = {\n tab: { * text => text },\n arr: [ * uint ],\n}\n\ntype_choice = \n 0 ; @name you\n / "hello world" ; @name can\n / uint ; @name name\n / text ; @name variants\n / bytes ; @name like\n / #6.64([*uint]) ; @name this\n')),(0,u.kt)("h4",{id:"output-8"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"#[derive(Clone, Debug)]\npub struct TableArrMembers {\n pub tab: BTreeMap,\n pub arr: Vec,\n}\n\nimpl TableArrMembers {\n pub fn new(tab: BTreeMap, arr: Vec) -> Self {\n Self { tab, arr }\n }\n}\n\n#[derive(Clone, Debug)]\npub enum TypeChoice {\n You,\n Can,\n Name(u64),\n Variants(String),\n Like(Vec),\n This(Vec),\n}\n\nimpl TypeChoice {\n pub fn new_you() -> Self {\n Self::You\n }\n\n pub fn new_can() -> Self {\n Self::Can\n }\n\n pub fn new_name(name: u64) -> Self {\n Self::Name(name)\n }\n\n pub fn new_variants(variants: String) -> Self {\n Self::Variants(variants)\n }\n\n pub fn new_like(like: Vec) -> Self {\n Self::Like(like)\n }\n\n pub fn new_this(this: Vec) -> Self {\n Self::This(this)\n }\n}\n")))),(0,u.kt)("h2",{id:"type-choices"},"Type Choices"),(0,u.kt)("p",null,"If a type choice only has constants it will generate as a c-style enum (directly wasm-exposable)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"c_style_enum =\n 0 ; @name foo\n / 1 ; @name bar\n / 2 ; @name baz\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-9"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"c_style_enum =\n 0 ; @name foo\n / 1 ; @name bar\n / 2 ; @name baz\n")),(0,u.kt)("h4",{id:"output-9"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"#[derive(Clone, Debug)]\npub enum CStyleEnum {\n Foo,\n Bar,\n Baz,\n}\n\nimpl CStyleEnum {\n pub fn new_foo() -> Self {\n Self::Foo\n }\n\n pub fn new_bar() -> Self {\n Self::Bar\n }\n\n pub fn new_baz() -> Self {\n Self::Baz\n }\n}\n\n")))),(0,u.kt)("p",null,"If there is only one non-constant field in the inlined group then that will be inlined in the enum, but if there are multiple then a new struct will be generated from this variant"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"group_choice = [\n foo // ; @name these\n 0, x: uint // ; @name are\n 1, x: uint, y: text // ; @name also\n basic ; @name nameable\n]\nchoices = [\n type_choice,\n c_style_enum,\n group_choice,\n]\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-10"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},'foo = [\n int,\n name: text,\n fp: float64,\n]\n\nbasic = (\n b: #6.23(uint),\n c: text,\n)\n\ntype_choice = \n 0 ; @name you\n / "hello world" ; @name can\n / uint ; @name name\n / text ; @name variants\n / bytes ; @name like\n / #6.64([*uint]) ; @name this\n\nc_style_enum =\n 0 ; @name foo\n / 1 ; @name bar\n / 2 ; @name baz\n\ngroup_choice = [\n foo // ; @name these\n 0, x: uint // ; @name are\n 1, x: uint, y: text // ; @name also\n basic ; @name nameable\n]\nchoices = [\n type_choice,\n c_style_enum,\n group_choice,\n]\n')),(0,u.kt)("h4",{id:"output-10"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},'#[derive(Clone, Debug)]\npub struct Are {\n pub x: u64,\n pub y: String,\n}\n\nimpl Are {\n pub fn new(x: u64, y: String) -> Self {\n Self { x, y }\n }\n}\n\n#[derive(Clone, Debug)]\npub struct Basic {\n pub b: u64,\n pub c: String,\n}\n\nimpl Basic {\n pub fn new(b: u64, c: String) -> Self {\n Self { b, c }\n }\n}\n\n#[derive(Clone, Debug)]\npub enum CStyleEnum {\n Foo,\n Bar,\n Baz,\n}\n\nimpl CStyleEnum {\n pub fn new_foo() -> Self {\n Self::Foo\n }\n\n pub fn new_bar() -> Self {\n Self::Bar\n }\n\n pub fn new_baz() -> Self {\n Self::Baz\n }\n}\n\n#[derive(Clone, Debug)]\npub struct Choices {\n pub type_choice: TypeChoice,\n pub c_style_enum: CStyleEnum,\n pub group_choice: GroupChoice,\n}\n\nimpl Choices {\n pub fn new(\n type_choice: TypeChoice,\n c_style_enum: CStyleEnum,\n group_choice: GroupChoice,\n ) -> Self {\n Self {\n type_choice,\n c_style_enum,\n group_choice,\n }\n }\n}\n\n#[derive(Clone, Debug)]\npub struct Foo {\n pub index_0: Int,\n pub name: String,\n pub fp: f64,\n}\n\nimpl Foo {\n pub fn new(index_0: Int, name: String, fp: f64) -> Self {\n Self { index_0, name, fp }\n }\n}\n\n#[derive(Clone, Debug)]\npub enum GroupChoice {\n Foo(Foo),\n These(These),\n Are(Are),\n Basic(Basic),\n}\n\nimpl GroupChoice {\n pub fn new_foo(index_0: Int, name: String, fp: f64) -> Self {\n Self::Foo(Foo::new(index_0, name, fp))\n }\n\n pub fn new_these(x: u64) -> Self {\n Self::These(These::new(x))\n }\n\n pub fn new_are(x: u64, y: String) -> Self {\n Self::Are(Are::new(x, y))\n }\n\n pub fn new_basic(b: u64, c: String) -> Self {\n Self::Basic(Basic::new(b, c))\n }\n}\n\n#[derive(Clone, Debug)]\npub enum Int {\n Uint(u64),\n Nint(u64),\n}\n\nimpl Int {\n pub fn new_uint(value: u64) -> Self {\n Self::Uint(value)\n }\n\n /// * `value` - Value as encoded in CBOR - note: a negative `x` here would be `|x + 1|` due to CBOR\'s `nint` encoding e.g. to represent -5, pass in 4.\n pub fn new_nint(value: u64) -> Self {\n Self::Nint(value)\n }\n}\n\nimpl std::fmt::Display for Int {\n fn fmt(&self, f: &mut std::fmt::Formatter<\'_>) -> std::fmt::Result {\n match self {\n Self::Uint(x) => write!(f, "{}", x),\n Self::Nint(x) => write!(f, "-{}", x + 1),\n }\n }\n}\n\nimpl std::str::FromStr for Int {\n type Err = IntError;\n\n fn from_str(s: &str) -> Result {\n let x = i128::from_str(s).map_err(IntError::Parsing)?;\n Self::try_from(x).map_err(IntError::Bounds)\n }\n}\n\nimpl TryFrom for Int {\n type Error = std::num::TryFromIntError;\n\n fn try_from(x: i128) -> Result {\n if x >= 0 {\n u64::try_from(x).map(Self::Uint)\n } else {\n u64::try_from((x + 1).abs()).map(Self::Nint)\n }\n }\n}\n\n#[derive(Clone, Debug)]\npub enum IntError {\n Bounds(std::num::TryFromIntError),\n Parsing(std::num::ParseIntError),\n}\n\n#[derive(Clone, Debug)]\npub struct These {\n pub x: u64,\n}\n\nimpl These {\n pub fn new(x: u64) -> Self {\n Self { x }\n }\n}\n\n#[derive(Clone, Debug)]\npub enum TypeChoice {\n You,\n Can,\n Name(u64),\n Variants(String),\n Like(Vec),\n This(Vec),\n}\n\nimpl TypeChoice {\n pub fn new_you() -> Self {\n Self::You\n }\n\n pub fn new_can() -> Self {\n Self::Can\n }\n\n pub fn new_name(name: u64) -> Self {\n Self::Name(name)\n }\n\n pub fn new_variants(variants: String) -> Self {\n Self::Variants(variants)\n }\n\n pub fn new_like(like: Vec) -> Self {\n Self::Like(like)\n }\n\n pub fn new_this(this: Vec) -> Self {\n Self::This(this)\n }\n}\n')))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/67500d10.f17b5a6e.js b/assets/js/67500d10.f17b5a6e.js new file mode 100644 index 0000000..0305d7a --- /dev/null +++ b/assets/js/67500d10.f17b5a6e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcddl_codegen_documentation=self.webpackChunkcddl_codegen_documentation||[]).push([[503],{3905:(e,n,t)=>{t.d(n,{Zo:()=>s,kt:()=>f});var r=t(7294);function u(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function l(e){for(var n=1;n=0||(u[t]=e[t]);return u}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(u[t]=e[t])}return u}var p=r.createContext({}),o=function(e){var n=r.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},s=function(e){var n=o(e.components);return r.createElement(p.Provider,{value:n},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},d=r.forwardRef((function(e,n){var t=e.components,u=e.mdxType,a=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),c=o(t),d=u,f=c["".concat(p,".").concat(d)]||c[d]||m[d]||a;return t?r.createElement(f,l(l({ref:n},s),{},{components:t})):r.createElement(f,l({ref:n},s))}));function f(e,n){var t=arguments,u=n&&n.mdxType;if("string"==typeof e||u){var a=t.length,l=new Array(a);l[0]=d;var i={};for(var p in n)hasOwnProperty.call(n,p)&&(i[p]=n[p]);i.originalType=e,i[c]="string"==typeof e?e:u,l[1]=i;for(var o=2;o{t(7294)},5488:(e,n,t)=>{t(7294),t(2389)},2148:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>i,toc:()=>o});var r=t(7462),u=(t(7294),t(3905));t(5488),t(5162);const a={sidebar_position:7},l="Examples",i={unversionedId:"examples",id:"examples",title:"Examples",description:"Aliases",source:"@site/docs/examples.mdx",sourceDirName:".",slug:"/examples",permalink:"/cddl-codegen/examples",draft:!1,tags:[],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Comment DSL",permalink:"/cddl-codegen/comment_dsl"},next:{title:"Integration with other cddl-codegen libraries",permalink:"/cddl-codegen/integration-other"}},p={},o=[{value:"Aliases",id:"aliases",level:2},{value:"input",id:"input",level:4},{value:"output",id:"output",level:4},{value:"input",id:"input-1",level:4},{value:"output",id:"output-1",level:4},{value:"input",id:"input-2",level:4},{value:"output",id:"output-2",level:4},{value:"Size/length requirements on primitives",id:"sizelength-requirements-on-primitives",level:2},{value:"input",id:"input-3",level:4},{value:"output",id:"output-3",level:4},{value:"Array struct",id:"array-struct",level:2},{value:"input",id:"input-4",level:4},{value:"output",id:"output-4",level:4},{value:"Mark as externally defined.",id:"mark-as-externally-defined",level:2},{value:"input",id:"input-5",level:4},{value:"output",id:"output-5",level:4},{value:"Map struct",id:"map-struct",level:2},{value:"input",id:"input-6",level:4},{value:"output",id:"output-6",level:4},{value:"Basic groups",id:"basic-groups",level:2},{value:"input",id:"input-7",level:4},{value:"output",id:"output-7",level:4},{value:"input",id:"input-8",level:4},{value:"output",id:"output-8",level:4},{value:"Type Choices",id:"type-choices",level:2},{value:"input",id:"input-9",level:4},{value:"output",id:"output-9",level:4},{value:"input",id:"input-10",level:4},{value:"output",id:"output-10",level:4}],s={toc:o},c="wrapper";function m(e){let{components:n,...t}=e;return(0,u.kt)(c,(0,r.Z)({},s,t,{components:n,mdxType:"MDXLayout"}),(0,u.kt)("h1",{id:"examples"},"Examples"),(0,u.kt)("h2",{id:"aliases"},"Aliases"),(0,u.kt)("p",null,"Type alias"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"hash = bytes\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"hash = bytes\n")),(0,u.kt)("h4",{id:"output"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"pub type Hash = Vec;\n")))),(0,u.kt)("p",null,"Create a newtype around another type instead of an alias"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"special_hash = bytes ; @newtype\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-1"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"special_hash = bytes ; @newtype\n")),(0,u.kt)("h4",{id:"output-1"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"#[derive(Clone, Debug)]\npub struct SpecialHash(pub Vec);\n\nimpl SpecialHash {\n pub fn get(&self) -> &Vec {\n &self.0\n }\n\n pub fn new(inner: Vec) -> Self {\n Self(inner)\n }\n}\n\nimpl From> for SpecialHash {\n fn from(inner: Vec) -> Self {\n SpecialHash::new(inner)\n }\n}\n\nimpl From for Vec {\n fn from(wrapper: SpecialHash) -> Self {\n wrapper.0\n }\n}\n")))),(0,u.kt)("p",null,"or don't generate either and directly use the aliased type instead"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"hidden_hash = bytes ; @no_alias\n\nhashes = [\n hash,\n special_hash,\n hidden_hash,\n]\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-2"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"hash = bytes\nspecial_hash = bytes ; @newtype\nhidden_hash = bytes ; @no_alias\n\nhashes = [\n hash,\n special_hash,\n hidden_hash,\n]\n")),(0,u.kt)("h4",{id:"output-2"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"pub type Hash = Vec;\n\n#[derive(Clone, Debug)]\npub struct Hashes {\n pub hash: Hash,\n pub special_hash: SpecialHash,\n pub hidden_hash: Vec,\n}\n\nimpl Hashes {\n pub fn new(hash: Hash, special_hash: SpecialHash, hidden_hash: Vec) -> Self {\n Self {\n hash,\n special_hash,\n hidden_hash,\n }\n }\n}\n\n#[derive(Clone, Debug)]\npub struct SpecialHash(pub Vec);\n\nimpl SpecialHash {\n pub fn get(&self) -> &Vec {\n &self.0\n }\n\n pub fn new(inner: Vec) -> Self {\n Self(inner)\n }\n}\n\nimpl From> for SpecialHash {\n fn from(inner: Vec) -> Self {\n SpecialHash::new(inner)\n }\n}\n\nimpl From for Vec {\n fn from(wrapper: SpecialHash) -> Self {\n wrapper.0\n }\n}\n")))),(0,u.kt)("admonition",{type:"info"},(0,u.kt)("p",{parentName:"admonition"},"pay attention to the @name comment placement as it can be finicky")),(0,u.kt)("h2",{id:"sizelength-requirements-on-primitives"},"Size/length requirements on primitives"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"limitations = [\n u_8: uint .size 1,\n u_16: uint .le 65535,\n u_32: 0..4294967295,\n u_64: uint .size 8,\n i_8: -128..127,\n i_64: int .size 8,\n hash32: bytes .size 32,\n bounded: text .size (10..20),\n]\n\n")),(0,u.kt)("p",null,"Integer restrictions that map to rust types are directly translated"),(0,u.kt)("p",null,"u8 in rust"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"u_8: uint .size 1\n")),(0,u.kt)("p",null,"u16 in rust"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"u_16: uint .le 65535\n")),(0,u.kt)("p",null,"u32, etc..."),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"u_32: 0..4294967295\nu_64: uint .size 8\ni_8: -128..127\ni_64: int .size 8\n\n")),(0,u.kt)("p",null,"One can also limit strings (text or bytes) to a specific length"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"hash32: bytes .size 32\n")),(0,u.kt)("p",null,"or to a range e.g. between 10 and 20 bytes"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"bounded: text .size (10..20)\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-3"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"limitations = [\n u_8: uint .size 1,\n u_16: uint .le 65535,\n u_32: 0..4294967295,\n u_64: uint .size 8,\n i_8: -128..127,\n i_64: int .size 8,\n hash32: bytes .size 32,\n bounded: text .size (10..20),\n]\n")),(0,u.kt)("h4",{id:"output-3"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"#[derive(Clone, Debug)]\npub struct Limitations {\n pub u_8: u8,\n pub u_16: u16,\n pub u_32: u32,\n pub u_64: u64,\n pub i_8: i8,\n pub i_64: i64,\n pub hash32: Vec,\n pub bounded: String,\n}\n\nimpl Limitations {\n pub fn new(\n u_8: u8,\n u_16: u16,\n u_32: u32,\n u_64: u64,\n i_8: i8,\n i_64: i64,\n hash32: Vec,\n bounded: String,\n ) -> Self {\n Self {\n u_8,\n u_16,\n u_32,\n u_64,\n i_8,\n i_64,\n hash32,\n bounded,\n }\n }\n}\n")))),(0,u.kt)("h2",{id:"array-struct"},"Array struct"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"foo = [\n int,\n name: text,\n fp: float64,\n]\n\n")),(0,u.kt)("p",null,"All primitives are supported, e.g. uint, nint and int supported. int generates special code as no rust equivalent.\nUnnamed array fields try to derive name from type if possible:"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," int\n")),(0,u.kt)("p",null,"Text/bytes is also supported, or one can give them an explicit name:"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," name: text\n")),(0,u.kt)("p",null,"As well as floats (without --preserve-encodings=true)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," fp: float64\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-4"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"foo = [\n int,\n name: text,\n fp: float64,\n]\n")),(0,u.kt)("h4",{id:"output-4"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},'#[derive(Clone, Debug)]\npub struct Foo {\n pub index_0: Int,\n pub name: String,\n pub fp: f64,\n}\n\nimpl Foo {\n pub fn new(index_0: Int, name: String, fp: f64) -> Self {\n Self { index_0, name, fp }\n }\n}\n\n#[derive(Clone, Debug)]\npub enum Int {\n Uint(u64),\n Nint(u64),\n}\n\nimpl Int {\n pub fn new_uint(value: u64) -> Self {\n Self::Uint(value)\n }\n\n /// * `value` - Value as encoded in CBOR - note: a negative `x` here would be `|x + 1|` due to CBOR\'s `nint` encoding e.g. to represent -5, pass in 4.\n pub fn new_nint(value: u64) -> Self {\n Self::Nint(value)\n }\n}\n\nimpl std::fmt::Display for Int {\n fn fmt(&self, f: &mut std::fmt::Formatter<\'_>) -> std::fmt::Result {\n match self {\n Self::Uint(x) => write!(f, "{}", x),\n Self::Nint(x) => write!(f, "-{}", x + 1),\n }\n }\n}\n\nimpl std::str::FromStr for Int {\n type Err = IntError;\n\n fn from_str(s: &str) -> Result {\n let x = i128::from_str(s).map_err(IntError::Parsing)?;\n Self::try_from(x).map_err(IntError::Bounds)\n }\n}\n\nimpl TryFrom for Int {\n type Error = std::num::TryFromIntError;\n\n fn try_from(x: i128) -> Result {\n if x >= 0 {\n u64::try_from(x).map(Self::Uint)\n } else {\n u64::try_from((x + 1).abs()).map(Self::Nint)\n }\n }\n}\n\n#[derive(Clone, Debug)]\npub enum IntError {\n Bounds(std::num::TryFromIntError),\n Parsing(std::num::ParseIntError),\n}\n')))),(0,u.kt)("h2",{id:"mark-as-externally-defined"},"Mark as externally defined."),(0,u.kt)("p",null,"user has to insert/import code for this type after generation"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"extern_foo = _CDDL_CODEGEN_EXTERN_TYPE_\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-5"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"foo = _CDDL_CODEGEN_EXTERN_TYPE_\nbar = [\n x: uint,\n y: foo,\n]\n")),(0,u.kt)("h4",{id:"output-5"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"#[derive(Clone, Debug)]\npub struct Bar {\n pub x: u64,\n pub y: Foo,\n}\n\nimpl Bar {\n pub fn new(x: u64, y: Foo) -> Self {\n Self { x, y }\n }\n}\n")))),(0,u.kt)("h2",{id:"map-struct"},"Map struct"),(0,u.kt)("p",null,"Map struct + tagged fields + .cbor + optional fields + constants + .default"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},'bar = {\n foo: #6.1337(foo),\n extern_foo: bytes .cbor extern_foo\n ? derp: uint,\n 1 : uint / null, ; @name explicitly_named_1\n ? 5: "five",\n five: 5,\n ? 100: uint .default 0,\n}\n')),(0,u.kt)("p",null,"Fields can be tagged and this remains a serialization detail (hidden from API)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," foo: #6.1337(foo),\n")),(0,u.kt)("p",null,"They can also be encoded as CBOR bytes which remains a serialization detail (hidden from API). This can be combined with tags as well i.e. #6.42(bytes .cbor extern_foo)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," extern_foo: bytes .cbor extern_foo\n")),(0,u.kt)("p",null,"Optional field (generates as ",(0,u.kt)("inlineCode",{parentName:"p"},"Option"),")"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," ? derp: uint,\n")),(0,u.kt)("p",null,"Type choice with null will result in ",(0,u.kt)("inlineCode",{parentName:"p"},"Option")," too for the API. Also, you can give explicit names that differ from the key value for maps like this:"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," 1 : uint / null, ; @name explicitly_named_1\n")),(0,u.kt)("p",null,"Optional string constant (no field generated)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},' ? 5: "five",\n')),(0,u.kt)("p",null,"Integer constant (no field generated)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," five: 5,\n")),(0,u.kt)("p",null,"This will not be an optional field in rust, as when it is not present, it will be set to 0"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"}," ? 100: uint .default 0,\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-6"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},'bar = {\n foo: #6.1337(foo),\n extern_foo: bytes .cbor extern_foo\n ? derp: uint,\n 1 : uint / null, ; @name explicitly_named_1\n ? 5: "five",\n five: 5,\n ? 100: uint .default 0,\n}\n')),(0,u.kt)("h4",{id:"output-6"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"#[derive(Clone, Debug)]\npub struct Bar {\n pub foo: Foo,\n pub extern_foo: ExternFoo,\n pub derp: Option,\n pub explicitly_named_1: Option,\n pub key_100: u64,\n}\n\nimpl Bar {\n pub fn new(foo: Foo, extern_foo: ExternFoo, explicitly_named_1: Option) -> Self {\n Self {\n foo,\n extern_foo,\n derp: None,\n explicitly_named_1,\n key_100: 0,\n }\n }\n}\n")))),(0,u.kt)("h2",{id:"basic-groups"},"Basic groups"),(0,u.kt)("p",null,"Basic groups are supported and have their own type"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"basic = (\n b: #6.23(uint),\n c: text,\n)\n")),(0,u.kt)("p",null,"Basic groups are fully supported in array groups"),(0,u.kt)("p",null,"They can be put into an array struct directly i.e. embed their fields into outer, which is only a serialization detail. this field will be of type Basic;\nor one can embed them into a repeatable homogeneous array"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"outer = [\n a: uint,\n embedded: basic,\n homogeneous_array: [* basic],\n]\n\nother_basic = (\n b: uint,\n c: uint,\n)\n")),(0,u.kt)("p",null,"Basic groups can be embeded in maps, BUT deserialization will not be generated due to technical limitations"),(0,u.kt)("admonition",{title:"limitation",type:"warning"},(0,u.kt)("p",{parentName:"admonition"},"A single basic group cannot be put into both a map and an array group for serialization which is\nwhy we had to define a separate one ",(0,u.kt)("inlineCode",{parentName:"p"},"other_basic")," instead of just using ",(0,u.kt)("inlineCode",{parentName:"p"},"basic"))),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"outer_map = {\n a: uint,\n embedded: other_basic,\n}\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-7"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"basic = (\n b: #6.23(uint),\n c: text,\n)\n\nouter = [\n a: uint,\n embedded: basic,\n homogeneous_array: [* basic],\n]\n\nother_basic = (\n b: uint,\n c: uint,\n)\n\nouter_map = {\n a: uint,\n embedded: other_basic,\n}\n")),(0,u.kt)("h4",{id:"output-7"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"#[derive(Clone, Debug)]\npub struct Basic {\n pub b: u64,\n pub c: String,\n}\n\nimpl Basic {\n pub fn new(b: u64, c: String) -> Self {\n Self { b, c }\n }\n}\n\n#[derive(Clone, Debug)]\npub struct OtherBasic {\n pub b: u64,\n pub c: u64,\n}\n\nimpl OtherBasic {\n pub fn new(b: u64, c: u64) -> Self {\n Self { b, c }\n }\n}\n\n#[derive(Clone, Debug)]\npub struct Outer {\n pub a: u64,\n pub embedded: Basic,\n pub homogeneous_array: Vec,\n}\n\nimpl Outer {\n pub fn new(a: u64, embedded: Basic, homogeneous_array: Vec) -> Self {\n Self {\n a,\n embedded,\n homogeneous_array,\n }\n }\n}\n\n#[derive(Clone, Debug)]\npub struct OuterMap {\n pub a: u64,\n pub embedded: OtherBasic,\n}\n\nimpl OuterMap {\n pub fn new(a: u64, embedded: OtherBasic) -> Self {\n Self { a, embedded }\n }\n}\n")))),(0,u.kt)("p",null,"One can directly define homogeneous maps as fields (or define them at top-level).\nAlso define homogenous arrays as fields (or define them at top-level)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},'table_arr_members = {\n tab: { * text => text },\n arr: [ * uint ],\n}\n\ntype_choice = \n 0 ; @name you\n / "hello world" ; @name can\n / uint ; @name name\n / text ; @name variants\n / bytes ; @name like\n / #6.64([*uint]) ; @name this\n')),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-8"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},'table_arr_members = {\n tab: { * text => text },\n arr: [ * uint ],\n}\n\ntype_choice = \n 0 ; @name you\n / "hello world" ; @name can\n / uint ; @name name\n / text ; @name variants\n / bytes ; @name like\n / #6.64([*uint]) ; @name this\n')),(0,u.kt)("h4",{id:"output-8"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"#[derive(Clone, Debug)]\npub struct TableArrMembers {\n pub tab: BTreeMap,\n pub arr: Vec,\n}\n\nimpl TableArrMembers {\n pub fn new(tab: BTreeMap, arr: Vec) -> Self {\n Self { tab, arr }\n }\n}\n\n#[derive(Clone, Debug)]\npub enum TypeChoice {\n You,\n Can,\n Name(u64),\n Variants(String),\n Like(Vec),\n This(Vec),\n}\n\nimpl TypeChoice {\n pub fn new_you() -> Self {\n Self::You\n }\n\n pub fn new_can() -> Self {\n Self::Can\n }\n\n pub fn new_name(name: u64) -> Self {\n Self::Name(name)\n }\n\n pub fn new_variants(variants: String) -> Self {\n Self::Variants(variants)\n }\n\n pub fn new_like(like: Vec) -> Self {\n Self::Like(like)\n }\n\n pub fn new_this(this: Vec) -> Self {\n Self::This(this)\n }\n}\n")))),(0,u.kt)("h2",{id:"type-choices"},"Type Choices"),(0,u.kt)("p",null,"If a type choice only has constants it will generate as a c-style enum (directly wasm-exposable)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"c_style_enum =\n 0 ; @name foo\n / 1 ; @name bar\n / 2 ; @name baz\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-9"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"c_style_enum =\n 0 ; @name foo\n / 1 ; @name bar\n / 2 ; @name baz\n")),(0,u.kt)("h4",{id:"output-9"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},"#[derive(Clone, Debug)]\npub enum CStyleEnum {\n Foo,\n Bar,\n Baz,\n}\n\nimpl CStyleEnum {\n pub fn new_foo() -> Self {\n Self::Foo\n }\n\n pub fn new_bar() -> Self {\n Self::Bar\n }\n\n pub fn new_baz() -> Self {\n Self::Baz\n }\n}\n\n")))),(0,u.kt)("p",null,"If there is only one non-constant field in the inlined group then that will be inlined in the enum, but if there are multiple then a new struct will be generated from this variant"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre"},"group_choice = [\n foo // ; @name these\n 0, x: uint // ; @name are\n 1, x: uint, y: text // ; @name also\n basic ; @name nameable\n]\nchoices = [\n type_choice,\n c_style_enum,\n group_choice,\n]\n")),(0,u.kt)("details",null,(0,u.kt)("summary",null,"See generated output"),(0,u.kt)("p",null,(0,u.kt)("h4",{id:"input-10"},"input"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},'foo = [\n int,\n name: text,\n fp: float64,\n]\n\nbasic = (\n b: #6.23(uint),\n c: text,\n)\n\ntype_choice = \n 0 ; @name you\n / "hello world" ; @name can\n / uint ; @name name\n / text ; @name variants\n / bytes ; @name like\n / #6.64([*uint]) ; @name this\n\nc_style_enum =\n 0 ; @name foo\n / 1 ; @name bar\n / 2 ; @name baz\n\ngroup_choice = [\n foo // ; @name these\n 0, x: uint // ; @name are\n 1, x: uint, y: text // ; @name also\n basic ; @name nameable\n]\nchoices = [\n type_choice,\n c_style_enum,\n group_choice,\n]\n')),(0,u.kt)("h4",{id:"output-10"},"output"),(0,u.kt)("p",null,"(export/rust/src/lib.rs)"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-rust"},'#[derive(Clone, Debug)]\npub struct Are {\n pub x: u64,\n pub y: String,\n}\n\nimpl Are {\n pub fn new(x: u64, y: String) -> Self {\n Self { x, y }\n }\n}\n\n#[derive(Clone, Debug)]\npub struct Basic {\n pub b: u64,\n pub c: String,\n}\n\nimpl Basic {\n pub fn new(b: u64, c: String) -> Self {\n Self { b, c }\n }\n}\n\n#[derive(Clone, Debug)]\npub enum CStyleEnum {\n Foo,\n Bar,\n Baz,\n}\n\nimpl CStyleEnum {\n pub fn new_foo() -> Self {\n Self::Foo\n }\n\n pub fn new_bar() -> Self {\n Self::Bar\n }\n\n pub fn new_baz() -> Self {\n Self::Baz\n }\n}\n\n#[derive(Clone, Debug)]\npub struct Choices {\n pub type_choice: TypeChoice,\n pub c_style_enum: CStyleEnum,\n pub group_choice: GroupChoice,\n}\n\nimpl Choices {\n pub fn new(\n type_choice: TypeChoice,\n c_style_enum: CStyleEnum,\n group_choice: GroupChoice,\n ) -> Self {\n Self {\n type_choice,\n c_style_enum,\n group_choice,\n }\n }\n}\n\n#[derive(Clone, Debug)]\npub struct Foo {\n pub index_0: Int,\n pub name: String,\n pub fp: f64,\n}\n\nimpl Foo {\n pub fn new(index_0: Int, name: String, fp: f64) -> Self {\n Self { index_0, name, fp }\n }\n}\n\n#[derive(Clone, Debug)]\npub enum GroupChoice {\n Foo(Foo),\n These(These),\n Are(Are),\n Basic(Basic),\n}\n\nimpl GroupChoice {\n pub fn new_foo(index_0: Int, name: String, fp: f64) -> Self {\n Self::Foo(Foo::new(index_0, name, fp))\n }\n\n pub fn new_these(x: u64) -> Self {\n Self::These(These::new(x))\n }\n\n pub fn new_are(x: u64, y: String) -> Self {\n Self::Are(Are::new(x, y))\n }\n\n pub fn new_basic(b: u64, c: String) -> Self {\n Self::Basic(Basic::new(b, c))\n }\n}\n\n#[derive(Clone, Debug)]\npub enum Int {\n Uint(u64),\n Nint(u64),\n}\n\nimpl Int {\n pub fn new_uint(value: u64) -> Self {\n Self::Uint(value)\n }\n\n /// * `value` - Value as encoded in CBOR - note: a negative `x` here would be `|x + 1|` due to CBOR\'s `nint` encoding e.g. to represent -5, pass in 4.\n pub fn new_nint(value: u64) -> Self {\n Self::Nint(value)\n }\n}\n\nimpl std::fmt::Display for Int {\n fn fmt(&self, f: &mut std::fmt::Formatter<\'_>) -> std::fmt::Result {\n match self {\n Self::Uint(x) => write!(f, "{}", x),\n Self::Nint(x) => write!(f, "-{}", x + 1),\n }\n }\n}\n\nimpl std::str::FromStr for Int {\n type Err = IntError;\n\n fn from_str(s: &str) -> Result {\n let x = i128::from_str(s).map_err(IntError::Parsing)?;\n Self::try_from(x).map_err(IntError::Bounds)\n }\n}\n\nimpl TryFrom for Int {\n type Error = std::num::TryFromIntError;\n\n fn try_from(x: i128) -> Result {\n if x >= 0 {\n u64::try_from(x).map(Self::Uint)\n } else {\n u64::try_from((x + 1).abs()).map(Self::Nint)\n }\n }\n}\n\n#[derive(Clone, Debug)]\npub enum IntError {\n Bounds(std::num::TryFromIntError),\n Parsing(std::num::ParseIntError),\n}\n\n#[derive(Clone, Debug)]\npub struct These {\n pub x: u64,\n}\n\nimpl These {\n pub fn new(x: u64) -> Self {\n Self { x }\n }\n}\n\n#[derive(Clone, Debug)]\npub enum TypeChoice {\n You,\n Can,\n Name(u64),\n Variants(String),\n Like(Vec),\n This(Vec),\n}\n\nimpl TypeChoice {\n pub fn new_you() -> Self {\n Self::You\n }\n\n pub fn new_can() -> Self {\n Self::Can\n }\n\n pub fn new_name(name: u64) -> Self {\n Self::Name(name)\n }\n\n pub fn new_variants(variants: String) -> Self {\n Self::Variants(variants)\n }\n\n pub fn new_like(like: Vec) -> Self {\n Self::Like(like)\n }\n\n pub fn new_this(this: Vec) -> Self {\n Self::This(this)\n }\n}\n')))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/86d7023c.531bf16e.js b/assets/js/86d7023c.a59f4b3c.js similarity index 80% rename from assets/js/86d7023c.531bf16e.js rename to assets/js/86d7023c.a59f4b3c.js index 364afbb..1666368 100644 --- a/assets/js/86d7023c.531bf16e.js +++ b/assets/js/86d7023c.a59f4b3c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkcddl_codegen_documentation=self.webpackChunkcddl_codegen_documentation||[]).push([[591],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>k});var a=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var m=a.createContext({}),l=function(e){var t=a.useContext(m),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},d=function(e){var t=l(e.components);return a.createElement(m.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,m=e.parentName,d=p(e,["components","mdxType","originalType","parentName"]),s=l(n),u=o,k=s["".concat(m,".").concat(u)]||s[u]||c[u]||i;return n?a.createElement(k,r(r({ref:t},d),{},{components:n})):a.createElement(k,r({ref:t},d))}));function k(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,r=new Array(i);r[0]=u;var p={};for(var m in t)hasOwnProperty.call(t,m)&&(p[m]=t[m]);p.originalType=e,p[s]="string"==typeof e?e:o,r[1]=p;for(var l=2;l{n.r(t),n.d(t,{assets:()=>m,contentTitle:()=>r,default:()=>c,frontMatter:()=>i,metadata:()=>p,toc:()=>l});var a=n(7462),o=(n(7294),n(3905));const i={sidebar_position:3},r="Command line flags",p={unversionedId:"command_line_flags",id:"command_line_flags",title:"Command line flags",description:"Specifies the input CDDL file(s).",source:"@site/docs/command_line_flags.mdx",sourceDirName:".",slug:"/command_line_flags",permalink:"/cddl-codegen/command_line_flags",draft:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Installation & Getting Started",permalink:"/cddl-codegen/getting_started"},next:{title:"Current capacities",permalink:"/cddl-codegen/current_capacities"}},m={},l=[],d={toc:l},s="wrapper";function c(e){let{components:t,...n}=e;return(0,o.kt)(s,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"command-line-flags"},"Command line flags"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--input")),(0,o.kt)("p",{parentName:"admonition"},"Specifies the input CDDL file(s)."),(0,o.kt)("p",{parentName:"admonition"},"For a single file:"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input examples/test.cddl --output export\n")),(0,o.kt)("p",{parentName:"admonition"},"If a directory is specified e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"--input=some_dir")," then it will read all files in this directory (non-recursively).\nThe output format changes here. If there's a ",(0,o.kt)("inlineCode",{parentName:"p"},"lib.cddl")," the types contained there are the standard ",(0,o.kt)("a",{parentName:"p",href:"/cddl-codegen/output_format"},"output")," , and any other file e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"foo.cddl")," will have its own module ",(0,o.kt)("inlineCode",{parentName:"p"},"foo/mod.rs")," with its own ",(0,o.kt)("inlineCode",{parentName:"p"},"foo/serialization.rs"),", etc."),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input examples --output export\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--output")),(0,o.kt)("p",{parentName:"admonition"},"Specifies the output directory."),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input examples --output export\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--lib-name")),(0,o.kt)("p",{parentName:"admonition"},"Specify the rust crate name for the output library. The wasm crate will have ",(0,o.kt)("inlineCode",{parentName:"p"},"-wasm")," appended."),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --lib-name some-crate-name\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--to-from-bytes-methods")),(0,o.kt)("p",{parentName:"admonition"},"Generates ",(0,o.kt)("inlineCode",{parentName:"p"},"to_cbor_bytes()")," / ",(0,o.kt)("inlineCode",{parentName:"p"},"from_cbor_bytes()")," methods on all WASM objects. On by default."),(0,o.kt)("p",{parentName:"admonition"},"(The rust code doesn't need this as you can directly use the ",(0,o.kt)("inlineCode",{parentName:"p"},"Serialize"),"/",(0,o.kt)("inlineCode",{parentName:"p"},"Deserialize")," traits on them.) "),(0,o.kt)("p",{parentName:"admonition"},"Possible values: true, false"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --to-from-bytes-methods true\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--wasm")),(0,o.kt)("p",{parentName:"admonition"},"Whether to output a wasm crate. On by default. "),(0,o.kt)("p",{parentName:"admonition"},"Possible values: true, false"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --wasm false\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--preserve-encodings")," "),(0,o.kt)("p",{parentName:"admonition"},"Preserves CBOR encoding upon deserialization e.g. definite vs indefinite, map ordering. For each module this will also create a ",(0,o.kt)("inlineCode",{parentName:"p"},"cbor_encodings.rs")," file to potentially store any structs for storing these encodings. This option is useful if you need to preserve the deserialized format for round-tripping (e.g. hashes) or if you want to modify the format to conincide with a specific tool for hashing."),(0,o.kt)("p",{parentName:"admonition"},"Possible values: true, false"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --preserve-encodings true\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--canonical-form")," "),(0,o.kt)("p",{parentName:"admonition"},"Used primarily with ",(0,o.kt)("inlineCode",{parentName:"p"},"--preserve-encodings")," to provide a way to override the specific deserialization format and to instead output canonical CBOR. This will have ",(0,o.kt)("inlineCode",{parentName:"p"},"Serialize"),"'s trait have an extra ",(0,o.kt)("inlineCode",{parentName:"p"},"to_canonical_cbor_bytes()")," method. Likewise the wasm wrappers (with ",(0,o.kt)("inlineCode",{parentName:"p"},"--to-from-bytes-methods"),") will contain one too."),(0,o.kt)("p",{parentName:"admonition"},"Possible values: true, false"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --canonical-form true\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--json-serde-derives")," "),(0,o.kt)("p",{parentName:"admonition"},"Derives serde::Serialize/serde::Deserialize for types to allow to/from JSON"),(0,o.kt)("p",{parentName:"admonition"},"Possible values: true, false"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --json-serde-derives true\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--json-schema-export")),(0,o.kt)("p",{parentName:"admonition"},"Tags types with sonSchema derives and generates a crate (in wasm/json-gen) to export them. This requires ",(0,o.kt)("inlineCode",{parentName:"p"},"--json-serde-derives"),"."),(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"Possible values:")," true, false",(0,o.kt)("br",null),"\n",(0,o.kt)("strong",{parentName:"p"},"Default:")," true"),(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"Example:")),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --json-schema-export true\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--package-json")),(0,o.kt)("p",{parentName:"admonition"},"Generates a npm package.json along with build scripts (some of these scripts require ",(0,o.kt)("inlineCode",{parentName:"p"},"--json-serde-derives"),"/",(0,o.kt)("inlineCode",{parentName:"p"},"--json-schema-export")," to work)."),(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"Possible values:")," true, false",(0,o.kt)("br",null),"\n",(0,o.kt)("strong",{parentName:"p"},"Default:")," false"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --package-json true --json-schema-export true\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--common-import-override")),(0,o.kt)("p",{parentName:"admonition"},"Overrides the location of the static exports (e.g. error.rs, serialization.rs, etc)."),(0,o.kt)("p",{parentName:"admonition"},"This is particularily useful for combining multiple crates each generated using cddl-codegen where they all share a shared core directory where the static files are located."),(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"Default:")," crate"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --common-import-override=cml_core\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--package-json")),(0,o.kt)("p",{parentName:"admonition"},"If it is passed in, it will call the supplied externally defined macro on each exported type, instead of manually exporting the functions for to/from CBOR bytes + to/from JSON API."),(0,o.kt)("p",{parentName:"admonition"},"The external macro is assumed to exist at the specified path and will be imported if there are module prefixes."),(0,o.kt)("p",{parentName:"admonition"},"The macro must take the wasm wrapper type as the only parameter."),(0,o.kt)("p",{parentName:"admonition"},"This macro will be called regardless of the values of to-from-bytes-methods / json-serde-derives / etc, so it is assumed that whatever logic your macros have is consistent with the other CLI flag values."),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --wasm-cbor-json-api-macro=cml_core_wasm::impl_wasm_cbor_json_api\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--wasm-conversion-macro")),(0,o.kt)("p",{parentName:"admonition"},"If it is passed in, it will call the supplied externally defined macro on each exported type, instead of manually exporting the rust/wasm conversion traits."),(0,o.kt)("p",{parentName:"admonition"},"The external macro is assumed to exist at the specified path and will be imported if there are module prefixes."),(0,o.kt)("p",{parentName:"admonition"},"The macro must take the rust type as the first parameter and the wasm wrapper type as the second one."),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --wasm-conversion-macro=cml_core_wasm::impl_wasm_conversions\n"))))}c.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkcddl_codegen_documentation=self.webpackChunkcddl_codegen_documentation||[]).push([[591],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>k});var a=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=a.createContext({}),l=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},d=function(e){var t=l(e.components);return a.createElement(p.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,p=e.parentName,d=m(e,["components","mdxType","originalType","parentName"]),s=l(n),u=o,k=s["".concat(p,".").concat(u)]||s[u]||c[u]||i;return n?a.createElement(k,r(r({ref:t},d),{},{components:n})):a.createElement(k,r({ref:t},d))}));function k(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,r=new Array(i);r[0]=u;var m={};for(var p in t)hasOwnProperty.call(t,p)&&(m[p]=t[p]);m.originalType=e,m[s]="string"==typeof e?e:o,r[1]=m;for(var l=2;l{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>r,default:()=>c,frontMatter:()=>i,metadata:()=>m,toc:()=>l});var a=n(7462),o=(n(7294),n(3905));const i={sidebar_position:3},r="Command line flags",m={unversionedId:"command_line_flags",id:"command_line_flags",title:"Command line flags",description:"Specifies the input CDDL file(s).",source:"@site/docs/command_line_flags.mdx",sourceDirName:".",slug:"/command_line_flags",permalink:"/cddl-codegen/command_line_flags",draft:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Installation & Getting Started",permalink:"/cddl-codegen/getting_started"},next:{title:"Current capacities",permalink:"/cddl-codegen/current_capacities"}},p={},l=[],d={toc:l},s="wrapper";function c(e){let{components:t,...n}=e;return(0,o.kt)(s,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"command-line-flags"},"Command line flags"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--input")),(0,o.kt)("p",{parentName:"admonition"},"Specifies the input CDDL file(s)."),(0,o.kt)("p",{parentName:"admonition"},"For a single file:"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input examples/test.cddl --output export\n")),(0,o.kt)("p",{parentName:"admonition"},"If a directory is specified e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"--input=some_dir")," then it will read all files in this directory (non-recursively).\nThe output format changes here. If there's a ",(0,o.kt)("inlineCode",{parentName:"p"},"lib.cddl")," the types contained there are the standard ",(0,o.kt)("a",{parentName:"p",href:"/cddl-codegen/output_format"},"output")," , and any other file e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"foo.cddl")," will have its own module ",(0,o.kt)("inlineCode",{parentName:"p"},"foo/mod.rs")," with its own ",(0,o.kt)("inlineCode",{parentName:"p"},"foo/serialization.rs"),", etc."),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input examples --output export\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--output")),(0,o.kt)("p",{parentName:"admonition"},"Specifies the output directory."),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input examples --output export\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--lib-name")),(0,o.kt)("p",{parentName:"admonition"},"Specify the rust crate name for the output library. The wasm crate will have ",(0,o.kt)("inlineCode",{parentName:"p"},"-wasm")," appended."),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --lib-name some-crate-name\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--to-from-bytes-methods")),(0,o.kt)("p",{parentName:"admonition"},"Generates ",(0,o.kt)("inlineCode",{parentName:"p"},"to_cbor_bytes()")," / ",(0,o.kt)("inlineCode",{parentName:"p"},"from_cbor_bytes()")," methods on all WASM objects. On by default."),(0,o.kt)("p",{parentName:"admonition"},"(The rust code doesn't need this as you can directly use the ",(0,o.kt)("inlineCode",{parentName:"p"},"Serialize"),"/",(0,o.kt)("inlineCode",{parentName:"p"},"Deserialize")," traits on them.) "),(0,o.kt)("p",{parentName:"admonition"},"Possible values: true, false"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --to-from-bytes-methods true\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--wasm")),(0,o.kt)("p",{parentName:"admonition"},"Whether to output a wasm crate. On by default. "),(0,o.kt)("p",{parentName:"admonition"},"Possible values: true, false"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --wasm false\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--preserve-encodings")," "),(0,o.kt)("p",{parentName:"admonition"},"Preserves CBOR encoding upon deserialization e.g. definite vs indefinite, map ordering. For each module this will also create a ",(0,o.kt)("inlineCode",{parentName:"p"},"cbor_encodings.rs")," file to potentially store any structs for storing these encodings. This option is useful if you need to preserve the deserialized format for round-tripping (e.g. hashes) or if you want to modify the format to conincide with a specific tool for hashing."),(0,o.kt)("p",{parentName:"admonition"},"Possible values: true, false"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --preserve-encodings true\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--canonical-form")," "),(0,o.kt)("p",{parentName:"admonition"},"Used primarily with ",(0,o.kt)("inlineCode",{parentName:"p"},"--preserve-encodings")," to provide a way to override the specific deserialization format and to instead output canonical CBOR. This will have ",(0,o.kt)("inlineCode",{parentName:"p"},"Serialize"),"'s trait have an extra ",(0,o.kt)("inlineCode",{parentName:"p"},"to_canonical_cbor_bytes()")," method. Likewise the wasm wrappers (with ",(0,o.kt)("inlineCode",{parentName:"p"},"--to-from-bytes-methods"),") will contain one too."),(0,o.kt)("p",{parentName:"admonition"},"Possible values: true, false"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --canonical-form true\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--json-serde-derives")," "),(0,o.kt)("p",{parentName:"admonition"},"Derives serde::Serialize/serde::Deserialize for types to allow to/from JSON"),(0,o.kt)("p",{parentName:"admonition"},"Possible values: true, false"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --json-serde-derives true\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--json-schema-export")),(0,o.kt)("p",{parentName:"admonition"},"Tags types with sonSchema derives and generates a crate (in wasm/json-gen) to export them. This requires ",(0,o.kt)("inlineCode",{parentName:"p"},"--json-serde-derives"),"."),(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"Possible values:")," true, false",(0,o.kt)("br",null),"\n",(0,o.kt)("strong",{parentName:"p"},"Default:")," true"),(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"Example:")),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --json-schema-export true\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--package-json")),(0,o.kt)("p",{parentName:"admonition"},"Generates a npm package.json along with build scripts (some of these scripts require ",(0,o.kt)("inlineCode",{parentName:"p"},"--json-serde-derives"),"/",(0,o.kt)("inlineCode",{parentName:"p"},"--json-schema-export")," to work)."),(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"Possible values:")," true, false",(0,o.kt)("br",null),"\n",(0,o.kt)("strong",{parentName:"p"},"Default:")," false"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --package-json true --json-schema-export true\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--common-import-override")),(0,o.kt)("p",{parentName:"admonition"},"Overrides the location of the static exports (e.g. error.rs, serialization.rs, etc)."),(0,o.kt)("p",{parentName:"admonition"},"This is particularily useful for combining multiple crates each generated using cddl-codegen where they all share a shared core directory where the static files are located."),(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"Default:")," crate"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --common-import-override=cml_core\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--wasm-cbor-json-api-macro")),(0,o.kt)("p",{parentName:"admonition"},"If it is passed in, it will call the supplied externally defined macro on each exported type, instead of manually exporting the functions for to/from CBOR bytes + to/from JSON API."),(0,o.kt)("p",{parentName:"admonition"},"The external macro is assumed to exist at the specified path and will be imported if there are module prefixes."),(0,o.kt)("p",{parentName:"admonition"},"The macro must take the wasm wrapper type as the only parameter."),(0,o.kt)("p",{parentName:"admonition"},"This macro will be called regardless of the values of to-from-bytes-methods / json-serde-derives / etc, so it is assumed that whatever logic your macros have is consistent with the other CLI flag values."),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --wasm-cbor-json-api-macro=cml_core_wasm::impl_wasm_cbor_json_api\n"))),(0,o.kt)("br",null),(0,o.kt)("br",null),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"--wasm-conversion-macro")),(0,o.kt)("p",{parentName:"admonition"},"If it is passed in, it will call the supplied externally defined macro on each exported type, instead of manually exporting the rust/wasm conversion traits."),(0,o.kt)("p",{parentName:"admonition"},"The external macro is assumed to exist at the specified path and will be imported if there are module prefixes."),(0,o.kt)("p",{parentName:"admonition"},"The macro must take the rust type as the first parameter and the wasm wrapper type as the second one."),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cddl-codegen --input=example --output=export --wasm-conversion-macro=cml_core_wasm::impl_wasm_conversions\n"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.9bf28d5c.js b/assets/js/935f2afb.cce8799a.js similarity index 53% rename from assets/js/935f2afb.9bf28d5c.js rename to assets/js/935f2afb.cce8799a.js index beb9411..50a50de 100644 --- a/assets/js/935f2afb.9bf28d5c.js +++ b/assets/js/935f2afb.cce8799a.js @@ -1 +1 @@ -"use strict";(self.webpackChunkcddl_codegen_documentation=self.webpackChunkcddl_codegen_documentation||[]).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":{"tutorialSidebar":[{"type":"link","label":"Introduction","href":"/cddl-codegen/","docId":"index"},{"type":"link","label":"Installation & Getting Started","href":"/cddl-codegen/getting_started","docId":"getting_started"},{"type":"link","label":"Command line flags","href":"/cddl-codegen/command_line_flags","docId":"command_line_flags"},{"type":"link","label":"Current capacities","href":"/cddl-codegen/current_capacities","docId":"current_capacities"},{"type":"link","label":"Output format","href":"/cddl-codegen/output_format","docId":"output_format"},{"type":"link","label":"Wasm Differences","href":"/cddl-codegen/wasm_differences","docId":"wasm_differences"},{"type":"link","label":"Comment DSL","href":"/cddl-codegen/comment_dsl","docId":"comment_dsl"},{"type":"link","label":"Examples","href":"/cddl-codegen/examples","docId":"examples"}]},"docs":{"command_line_flags":{"id":"command_line_flags","title":"Command line flags","description":"Specifies the input CDDL file(s).","sidebar":"tutorialSidebar"},"comment_dsl":{"id":"comment_dsl","title":"Comment DSL","description":"We have a comment DSL to help annotate the output code beyond what is possible just with CDDL.","sidebar":"tutorialSidebar"},"current_capacities":{"id":"current_capacities","title":"Current capacities","description":"Types","sidebar":"tutorialSidebar"},"examples":{"id":"examples","title":"Examples","description":"Aliases","sidebar":"tutorialSidebar"},"getting_started":{"id":"getting_started","title":"Installation & Getting Started","description":"Install","sidebar":"tutorialSidebar"},"index":{"id":"index","title":"cddl-codegen","description":"Experimental library for generating rust code for CBOR (de) serialization from CDDL specs.","sidebar":"tutorialSidebar"},"output_format":{"id":"output_format","title":"Output format","description":"- Inside of the output directly the tool always produces a rust/ directory (including Cargo.toml, etc).","sidebar":"tutorialSidebar"},"wasm_differences":{"id":"wasm_differences","title":"Wasm Differences","description":"In the wasm crate we can\'t always go one to one with the rust crate. Here are some differences/extra types in the WASM create. AsRef From and Into are implemented to go between the rust and wasm crate types to help.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkcddl_codegen_documentation=self.webpackChunkcddl_codegen_documentation||[]).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":{"tutorialSidebar":[{"type":"link","label":"Introduction","href":"/cddl-codegen/","docId":"index"},{"type":"link","label":"Installation & Getting Started","href":"/cddl-codegen/getting_started","docId":"getting_started"},{"type":"link","label":"Command line flags","href":"/cddl-codegen/command_line_flags","docId":"command_line_flags"},{"type":"link","label":"Current capacities","href":"/cddl-codegen/current_capacities","docId":"current_capacities"},{"type":"link","label":"Output format","href":"/cddl-codegen/output_format","docId":"output_format"},{"type":"link","label":"Wasm Differences","href":"/cddl-codegen/wasm_differences","docId":"wasm_differences"},{"type":"link","label":"Comment DSL","href":"/cddl-codegen/comment_dsl","docId":"comment_dsl"},{"type":"link","label":"Examples","href":"/cddl-codegen/examples","docId":"examples"},{"type":"link","label":"Integration with other cddl-codegen libraries","href":"/cddl-codegen/integration-other","docId":"integration-other"}]},"docs":{"command_line_flags":{"id":"command_line_flags","title":"Command line flags","description":"Specifies the input CDDL file(s).","sidebar":"tutorialSidebar"},"comment_dsl":{"id":"comment_dsl","title":"Comment DSL","description":"We have a comment DSL to help annotate the output code beyond what is possible just with CDDL.","sidebar":"tutorialSidebar"},"current_capacities":{"id":"current_capacities","title":"Current capacities","description":"Types","sidebar":"tutorialSidebar"},"examples":{"id":"examples","title":"Examples","description":"Aliases","sidebar":"tutorialSidebar"},"getting_started":{"id":"getting_started","title":"Installation & Getting Started","description":"Install","sidebar":"tutorialSidebar"},"index":{"id":"index","title":"cddl-codegen","description":"Experimental library for generating rust code for CBOR (de) serialization from CDDL specs.","sidebar":"tutorialSidebar"},"integration-other":{"id":"integration-other","title":"Integration with other cddl-codegen libraries","description":"This guide is written in general for integrating with other libraries generated by cddl-codegen, but in particular references CML (cardano-multiplatform-lib) for examples. Most things referencing CML will be relevant to other common cddl-codegen generated libraries used as dependencies.","sidebar":"tutorialSidebar"},"output_format":{"id":"output_format","title":"Output format","description":"- Inside of the output directly the tool always produces a rust/ directory (including Cargo.toml, etc).","sidebar":"tutorialSidebar"},"wasm_differences":{"id":"wasm_differences","title":"Wasm Differences","description":"In the wasm crate we can\'t always go one to one with the rust crate. Here are some differences/extra types in the WASM create. AsRef From and Into are implemented to go between the rust and wasm crate types to help.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/99d39b6e.4d7dc8e8.js b/assets/js/99d39b6e.d8bb060c.js similarity index 97% rename from assets/js/99d39b6e.4d7dc8e8.js rename to assets/js/99d39b6e.d8bb060c.js index 79c131f..7b170a4 100644 --- a/assets/js/99d39b6e.4d7dc8e8.js +++ b/assets/js/99d39b6e.d8bb060c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkcddl_codegen_documentation=self.webpackChunkcddl_codegen_documentation||[]).push([[163],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),p=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=p(n),m=r,h=u["".concat(s,".").concat(m)]||u[m]||c[m]||o;return n?a.createElement(h,i(i({ref:t},d),{},{components:n})):a.createElement(h,i({ref:t},d))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:r,i[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var a=n(7462),r=(n(7294),n(3905));const o={sidebar_position:7},i="Comment DSL",l={unversionedId:"comment_dsl",id:"comment_dsl",title:"Comment DSL",description:"We have a comment DSL to help annotate the output code beyond what is possible just with CDDL.",source:"@site/docs/comment_dsl.mdx",sourceDirName:".",slug:"/comment_dsl",permalink:"/cddl-codegen/comment_dsl",draft:!1,tags:[],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Wasm Differences",permalink:"/cddl-codegen/wasm_differences"},next:{title:"Examples",permalink:"/cddl-codegen/examples"}},s={},p=[{value:"@name",id:"name",level:2},{value:"@newtype",id:"newtype",level:2},{value:"@no_alias",id:"no_alias",level:2},{value:"CDDL_CODEGEN_EXTERN_TYPE",id:"cddl_codegen_extern_type",level:2},{value:"CDDL_CODEGEN_RAW_BYTES_TYPE",id:"cddl_codegen_raw_bytes_type",level:4}],d={toc:p},u="wrapper";function c(e){let{components:t,...n}=e;return(0,r.kt)(u,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"comment-dsl"},"Comment DSL"),(0,r.kt)("p",null,"We have a comment DSL to help annotate the output code beyond what is possible just with CDDL."),(0,r.kt)("h2",{id:"name"},"@name"),(0,r.kt)("p",null,"For example in an array-encoded group you can give explicit names just by the keys e.g.:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"foo = [\n bar: uint,\n baz: text\n]\n")),(0,r.kt)("p",null,"but with map-encoded structs the keys are stored and for things like integer keys this isn't very helpful e.g.:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"tx = {\n ? 0: [* input],\n ? 1: [* outputs],\n}\n")),(0,r.kt)("p",null,"we would end up with two fields: ",(0,r.kt)("inlineCode",{parentName:"p"},"key_0")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"key_1"),". We can instead end up with fields named ",(0,r.kt)("inlineCode",{parentName:"p"},"inputs")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"outputs")," by doing:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"tx = {\n ? 0: [* input], ; @name inputs\n ? 1: [* outputs], ; @name outputs\n}\n")),(0,r.kt)("p",null,"Note: the parsing can be finicky. For struct fields you must put the comment AFTER the comma, and the comma must exist even for the last field in a struct."),(0,r.kt)("p",null,"It is also possible to use ",(0,r.kt)("inlineCode",{parentName:"p"},"@name")," with type choices:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"foo = 0 ; @name mainnet\n / 1 ; @name testnet\n")),(0,r.kt)("p",null,"and also for group choices:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"script = [\n ; @name native\n tag: 0, script: native_script //\n ; @name plutus_v1\n tag: 1, script: plutus_v1_script //\n ; @name plutus_v2\n tag: 2, script: plutus_v2_script\n]\n")),(0,r.kt)("h2",{id:"newtype"},"@newtype"),(0,r.kt)("p",null,"With code like ",(0,r.kt)("inlineCode",{parentName:"p"},"foo = uint")," this creates an alias e.g. ",(0,r.kt)("inlineCode",{parentName:"p"},"pub type Foo = u64;")," in rust. When we use ",(0,r.kt)("inlineCode",{parentName:"p"},"foo = uint ; @newtype")," it instead creates a ",(0,r.kt)("inlineCode",{parentName:"p"},"pub struct Foo(u64);"),"."),(0,r.kt)("h2",{id:"no_alias"},"@no_alias"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"foo = uint\nbar = [\n field: foo\n]\n")),(0,r.kt)("p",null,"This would normally result in:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-rust"},"pub type Foo = u64;\npub struct Bar {\n field: Foo,\n}\n")),(0,r.kt)("p",null,"but if we use ",(0,r.kt)("inlineCode",{parentName:"p"},"@no_alias")," it skips generating an alias and uses it directly e.g.:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"foo = uint ; @no_alias\nbar = [\n field: foo\n]\n")),(0,r.kt)("p",null,"to"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-rust"},"pub struct Bar {\n field: u64,\n}\n")),(0,r.kt)("h2",{id:"cddl_codegen_extern_type"},(0,r.kt)("em",{parentName:"h2"},"CDDL_CODEGEN_EXTERN_TYPE")),(0,r.kt)("p",null,"While not as a comment, this allows you to compose in hand-written structs into a cddl spec."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"foo = _CDDL_CODEGEN_EXTERN_TYPE_\nbar = [\n x: uint,\n y: foo,\n]\n")),(0,r.kt)("p",null,"This will treat ",(0,r.kt)("inlineCode",{parentName:"p"},"Foo")," as a type that will exist and that has implemented the ",(0,r.kt)("inlineCode",{parentName:"p"},"Serialize")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"Deserialize")," traits, so the (de)serialization logic in ",(0,r.kt)("inlineCode",{parentName:"p"},"Bar")," here will call ",(0,r.kt)("inlineCode",{parentName:"p"},"Foo::serialize()")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"Foo::deserialize()"),".\nThis can also be useful when you have a spec that is either very awkward to use (so you hand-write or hand-modify after generation) in some type so you don't generate those types and instead manually merge those hand-written/hand-modified structs back in to the code afterwards. This saves you from having to manually remove all code that is generated regarding ",(0,r.kt)("inlineCode",{parentName:"p"},"Foo")," first before merging in your own."),(0,r.kt)("p",null,"This can also be useful when you have a spec that is either very awkward to use (so you hand-write or hand-modify after generation) in some type so you don't generate those types and instead manually merge those hand-written/hand-modified structs back in to the code afterwards. This saves you from having to manually remove all code that is generated regarding ",(0,r.kt)("inlineCode",{parentName:"p"},"Foo")," first before merging in your own."),(0,r.kt)("h4",{id:"cddl_codegen_raw_bytes_type"},(0,r.kt)("em",{parentName:"h4"},"CDDL_CODEGEN_RAW_BYTES_TYPE")),(0,r.kt)("p",null,"Allows encoding as ",(0,r.kt)("inlineCode",{parentName:"p"},"bytes")," but imposing hand-written constraints defined elsewhere."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"foo = _CDDL_CODEGEN_RAW_BYTES_TYPE_\nbar = [\n foo,\n]\n")),(0,r.kt)("p",null,"This will treat ",(0,r.kt)("inlineCode",{parentName:"p"},"foo")," as some external type called ",(0,r.kt)("inlineCode",{parentName:"p"},"Foo"),". This type must implement the exported (in ",(0,r.kt)("inlineCode",{parentName:"p"},"serialization.rs"),") trait ",(0,r.kt)("inlineCode",{parentName:"p"},"RawBytesEncoding"),".\nThis can be useful for example when working with cryptographic primtivies e.g. a hash or pubkey, as it allows users to have those crypto structs be from a crypto library then they only need to implement the trait for them and they will be able to be directly used without needing any useless generated wrapper struct for the in between."))}c.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkcddl_codegen_documentation=self.webpackChunkcddl_codegen_documentation||[]).push([[163],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),p=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=p(n),m=r,h=u["".concat(s,".").concat(m)]||u[m]||c[m]||o;return n?a.createElement(h,i(i({ref:t},d),{},{components:n})):a.createElement(h,i({ref:t},d))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:r,i[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var a=n(7462),r=(n(7294),n(3905));const o={sidebar_position:7},i="Comment DSL",l={unversionedId:"comment_dsl",id:"comment_dsl",title:"Comment DSL",description:"We have a comment DSL to help annotate the output code beyond what is possible just with CDDL.",source:"@site/docs/comment_dsl.mdx",sourceDirName:".",slug:"/comment_dsl",permalink:"/cddl-codegen/comment_dsl",draft:!1,tags:[],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Wasm Differences",permalink:"/cddl-codegen/wasm_differences"},next:{title:"Examples",permalink:"/cddl-codegen/examples"}},s={},p=[{value:"@name",id:"name",level:2},{value:"@newtype",id:"newtype",level:2},{value:"@no_alias",id:"no_alias",level:2},{value:"CDDL_CODEGEN_EXTERN_TYPE",id:"cddl_codegen_extern_type",level:2},{value:"CDDL_CODEGEN_RAW_BYTES_TYPE",id:"cddl_codegen_raw_bytes_type",level:2}],d={toc:p},u="wrapper";function c(e){let{components:t,...n}=e;return(0,r.kt)(u,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"comment-dsl"},"Comment DSL"),(0,r.kt)("p",null,"We have a comment DSL to help annotate the output code beyond what is possible just with CDDL."),(0,r.kt)("h2",{id:"name"},"@name"),(0,r.kt)("p",null,"For example in an array-encoded group you can give explicit names just by the keys e.g.:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"foo = [\n bar: uint,\n baz: text\n]\n")),(0,r.kt)("p",null,"but with map-encoded structs the keys are stored and for things like integer keys this isn't very helpful e.g.:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"tx = {\n ? 0: [* input],\n ? 1: [* outputs],\n}\n")),(0,r.kt)("p",null,"we would end up with two fields: ",(0,r.kt)("inlineCode",{parentName:"p"},"key_0")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"key_1"),". We can instead end up with fields named ",(0,r.kt)("inlineCode",{parentName:"p"},"inputs")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"outputs")," by doing:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"tx = {\n ? 0: [* input], ; @name inputs\n ? 1: [* outputs], ; @name outputs\n}\n")),(0,r.kt)("p",null,"Note: the parsing can be finicky. For struct fields you must put the comment AFTER the comma, and the comma must exist even for the last field in a struct."),(0,r.kt)("p",null,"It is also possible to use ",(0,r.kt)("inlineCode",{parentName:"p"},"@name")," with type choices:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"foo = 0 ; @name mainnet\n / 1 ; @name testnet\n")),(0,r.kt)("p",null,"and also for group choices:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"script = [\n ; @name native\n tag: 0, script: native_script //\n ; @name plutus_v1\n tag: 1, script: plutus_v1_script //\n ; @name plutus_v2\n tag: 2, script: plutus_v2_script\n]\n")),(0,r.kt)("h2",{id:"newtype"},"@newtype"),(0,r.kt)("p",null,"With code like ",(0,r.kt)("inlineCode",{parentName:"p"},"foo = uint")," this creates an alias e.g. ",(0,r.kt)("inlineCode",{parentName:"p"},"pub type Foo = u64;")," in rust. When we use ",(0,r.kt)("inlineCode",{parentName:"p"},"foo = uint ; @newtype")," it instead creates a ",(0,r.kt)("inlineCode",{parentName:"p"},"pub struct Foo(u64);"),"."),(0,r.kt)("h2",{id:"no_alias"},"@no_alias"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"foo = uint\nbar = [\n field: foo\n]\n")),(0,r.kt)("p",null,"This would normally result in:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-rust"},"pub type Foo = u64;\npub struct Bar {\n field: Foo,\n}\n")),(0,r.kt)("p",null,"but if we use ",(0,r.kt)("inlineCode",{parentName:"p"},"@no_alias")," it skips generating an alias and uses it directly e.g.:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"foo = uint ; @no_alias\nbar = [\n field: foo\n]\n")),(0,r.kt)("p",null,"to"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-rust"},"pub struct Bar {\n field: u64,\n}\n")),(0,r.kt)("h2",{id:"cddl_codegen_extern_type"},(0,r.kt)("em",{parentName:"h2"},"CDDL_CODEGEN_EXTERN_TYPE")),(0,r.kt)("p",null,"While not as a comment, this allows you to compose in hand-written structs into a cddl spec."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"foo = _CDDL_CODEGEN_EXTERN_TYPE_\nbar = [\n x: uint,\n y: foo,\n]\n")),(0,r.kt)("p",null,"This will treat ",(0,r.kt)("inlineCode",{parentName:"p"},"Foo")," as a type that will exist and that has implemented the ",(0,r.kt)("inlineCode",{parentName:"p"},"Serialize")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"Deserialize")," traits, so the (de)serialization logic in ",(0,r.kt)("inlineCode",{parentName:"p"},"Bar")," here will call ",(0,r.kt)("inlineCode",{parentName:"p"},"Foo::serialize()")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"Foo::deserialize()"),".\nThis can also be useful when you have a spec that is either very awkward to use (so you hand-write or hand-modify after generation) in some type so you don't generate those types and instead manually merge those hand-written/hand-modified structs back in to the code afterwards. This saves you from having to manually remove all code that is generated regarding ",(0,r.kt)("inlineCode",{parentName:"p"},"Foo")," first before merging in your own."),(0,r.kt)("p",null,"This can also be useful when you have a spec that is either very awkward to use (so you hand-write or hand-modify after generation) in some type so you don't generate those types and instead manually merge those hand-written/hand-modified structs back in to the code afterwards. This saves you from having to manually remove all code that is generated regarding ",(0,r.kt)("inlineCode",{parentName:"p"},"Foo")," first before merging in your own."),(0,r.kt)("h2",{id:"cddl_codegen_raw_bytes_type"},(0,r.kt)("em",{parentName:"h2"},"CDDL_CODEGEN_RAW_BYTES_TYPE")),(0,r.kt)("p",null,"Allows encoding as ",(0,r.kt)("inlineCode",{parentName:"p"},"bytes")," but imposing hand-written constraints defined elsewhere."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cddl"},"foo = _CDDL_CODEGEN_RAW_BYTES_TYPE_\nbar = [\n foo,\n]\n")),(0,r.kt)("p",null,"This will treat ",(0,r.kt)("inlineCode",{parentName:"p"},"foo")," as some external type called ",(0,r.kt)("inlineCode",{parentName:"p"},"Foo"),". This type must implement the exported (in ",(0,r.kt)("inlineCode",{parentName:"p"},"serialization.rs"),") trait ",(0,r.kt)("inlineCode",{parentName:"p"},"RawBytesEncoding"),".\nThis can be useful for example when working with cryptographic primtivies e.g. a hash or pubkey, as it allows users to have those crypto structs be from a crypto library then they only need to implement the trait for them and they will be able to be directly used without needing any useless generated wrapper struct for the in between."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.cd70bc48.js b/assets/js/main.cd70bc48.js new file mode 100644 index 0000000..4ddff7a --- /dev/null +++ b/assets/js/main.cd70bc48.js @@ -0,0 +1,2 @@ +/*! For license information please see main.cd70bc48.js.LICENSE.txt */ +(self.webpackChunkcddl_codegen_documentation=self.webpackChunkcddl_codegen_documentation||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),a=n(7462),o=n(8356),i=n.n(o),l=n(6887);const s={17896441:[()=>Promise.all([n.e(532),n.e(918)]).then(n.bind(n,8671)),"@theme/DocItem",8671],"19efaed6":[()=>n.e(766).then(n.bind(n,2407)),"@site/docs/current_capacities.mdx",2407],"1a4e3797":[()=>Promise.all([n.e(532),n.e(920)]).then(n.bind(n,2027)),"@theme/SearchPage",2027],"1be78505":[()=>Promise.all([n.e(532),n.e(514)]).then(n.bind(n,6174)),"@theme/DocPage",6174],29104121:[()=>Promise.all([n.e(532),n.e(263)]).then(n.bind(n,7712)),"@site/docs/integration-other.mdx",7712],"456dc1ab":[()=>n.e(533).then(n.bind(n,1276)),"@site/docs/getting_started.mdx",1276],"67500d10":[()=>Promise.all([n.e(532),n.e(503)]).then(n.bind(n,2148)),"@site/docs/examples.mdx",2148],"86d7023c":[()=>n.e(591).then(n.bind(n,2058)),"@site/docs/command_line_flags.mdx",2058],"887669aa":[()=>n.e(970).then(n.t.bind(n,2776,19)),"/home/runner/work/cddl-codegen/cddl-codegen/docs/.docusaurus/@easyops-cn/docusaurus-search-local/default/plugin-route-context-module-100.json",2776],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"99d39b6e":[()=>n.e(163).then(n.bind(n,1217)),"@site/docs/comment_dsl.mdx",1217],a0bb20dd:[()=>n.e(554).then(n.bind(n,5992)),"@site/docs/output_format.mdx",5992],a2c1c5dd:[()=>n.e(41).then(n.t.bind(n,3769,19)),"/home/runner/work/cddl-codegen/cddl-codegen/docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],c377a04b:[()=>n.e(971).then(n.bind(n,1269)),"@site/docs/index.md",1269],dc934a17:[()=>n.e(91).then(n.bind(n,3637)),"@site/docs/wasm_differences.mdx",3637]};function u(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("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%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("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"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var c=n(9670),d=n(226);function f(e,t){if("*"===e)return i()({loading:u,loader:()=>n.e(972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],f={},p=[],h=[],m=(0,c.Z)(o);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=s[n];r&&(f[t]=r[0],p.push(r[1]),h.push(r[2]))})),i().Map({loading:u,loader:f,modules:p,webpack:()=>h,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)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 a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const p=[{path:"/cddl-codegen/search",component:f("/cddl-codegen/search","9f3"),exact:!0},{path:"/cddl-codegen/",component:f("/cddl-codegen/","1b5"),routes:[{path:"/cddl-codegen/",component:f("/cddl-codegen/","398"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cddl-codegen/command_line_flags",component:f("/cddl-codegen/command_line_flags","dbb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cddl-codegen/comment_dsl",component:f("/cddl-codegen/comment_dsl","5f0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cddl-codegen/current_capacities",component:f("/cddl-codegen/current_capacities","408"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cddl-codegen/examples",component:f("/cddl-codegen/examples","cc5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cddl-codegen/getting_started",component:f("/cddl-codegen/getting_started","400"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cddl-codegen/integration-other",component:f("/cddl-codegen/integration-other","27b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cddl-codegen/output_format",component:f("/cddl-codegen/output_format","2b0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/cddl-codegen/wasm_differences",component:f("/cddl-codegen/wasm_differences","8c9"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"*",component:f("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(7294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},9383:(e,t,n)=>{"use strict";var r=n(7294),a=n(3935),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);function f(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var p=n(7462),h=n(5742),m=n(2263),g=n(4996),v=n(2622),y=n(8839),b=n(7417),w=n(1078),E=n(3361),k=n(197);function S(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,m.Z)(),n=(0,b.l)();return r.createElement(h.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function x(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,m.Z)(),a=function(){const{siteConfig:{url:e}}=(0,m.Z)(),{pathname:t}=(0,c.TH)();return e+(0,g.Z)(t)}(),o=t?`${n}${t}`:a;return r.createElement(h.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function _(){const{i18n:{currentLocale:e}}=(0,m.Z)(),{metadata:t,image:n}=(0,v.L)();return r.createElement(r.Fragment,null,r.createElement(h.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(y.d,{image:n}),r.createElement(x,null),r.createElement(S,null),r.createElement(k.Z,{tag:E.HX,locale:e}),r.createElement(h.Z,null,t.map(((e,t)=>r.createElement("meta",(0,p.Z)({key:t},e))))))}const C=new Map;function T(e){if(C.has(e.pathname))return{...e,pathname:C.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return C.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return C.set(e.pathname,t),{...e,pathname:t}}var L=n(8934),O=n(8940);function P(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 N=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==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:a}),P("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function A(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 I extends r.Component{constructor(e){super(e),this.previousLocation=void 0,this.routeUpdateCleanupCb=void 0,this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?P("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=P("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),A(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 r.createElement(N,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const R=I,D="docusaurus-base-url-issue-banner-container",M="docusaurus-base-url-issue-banner",F="docusaurus-base-url-issue-banner-suggestion-container",B="__DOCUSAURUS_INSERT_BASEURL_BANNER";function $(e){return`\nwindow['${B}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${B}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${D}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{window[B]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(h.Z,null,r.createElement("script",null,$(e))),r.createElement("div",{id:D}))}function j(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,m.Z)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(z,null):null}function U(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,m.Z)(),i=(0,g.Z)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(h.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var H=n(4763);function Z(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement(H.Z,null,r.createElement(O.M,null,r.createElement(L.t,null,r.createElement(f,null,r.createElement(U,null),r.createElement(_,null),r.createElement(j,null),r.createElement(R,{location:T(t)},e)))))}var Q=n(6887);const V=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var W=n(9670);const G=new Set,q=new Set,Y=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,K={prefetch(e){if(!(e=>!Y()&&!q.has(e)&&!G.has(e))(e))return!1;G.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(Q).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,W.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?V(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!Y()&&!q.has(e))(e)&&(q.add(e),A(e))},X=Object.freeze(K);if(l.Z.canUseDOM){window.docusaurus=X;const e=a.hydrate;A(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(Z,null))),document.getElementById("__docusaurus"))}))}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(7294),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/cddl-codegen/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/cddl-codegen/","mainDocId":"index","docs":[{"id":"command_line_flags","path":"/cddl-codegen/command_line_flags","sidebar":"tutorialSidebar"},{"id":"comment_dsl","path":"/cddl-codegen/comment_dsl","sidebar":"tutorialSidebar"},{"id":"current_capacities","path":"/cddl-codegen/current_capacities","sidebar":"tutorialSidebar"},{"id":"examples","path":"/cddl-codegen/examples","sidebar":"tutorialSidebar"},{"id":"getting_started","path":"/cddl-codegen/getting_started","sidebar":"tutorialSidebar"},{"id":"index","path":"/cddl-codegen/","sidebar":"tutorialSidebar"},{"id":"integration-other","path":"/cddl-codegen/integration-other","sidebar":"tutorialSidebar"},{"id":"output_format","path":"/cddl-codegen/output_format","sidebar":"tutorialSidebar"},{"id":"wasm_differences","path":"/cddl-codegen/wasm_differences","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/cddl-codegen/","label":"Introduction"}}}}],"breadcrumbs":false}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"2.4.0","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.0"},"docusaurus-tailwindcss":{"type":"local"},"@easyops-cn/docusaurus-search-local":{"type":"package","name":"@easyops-cn/docusaurus-search-local","version":"0.32.1"}}}'),u={siteConfig:a.Z,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),a=n(412),o=n(5742),i=n(8780),l=n(4574);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(u,{error:t}))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function c(e){let{error:t,tryAgain:n}=e;return r.createElement(f,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(c,e);class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??d)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(405);function o(e){return r.createElement(a.ql,e)}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>m});var r=n(7462),a=n(7294),o=n(3727),i=n(8780),l=n(2263),s=n(3919),u=n(412);const c=a.createContext({collectLink:()=>{}}),d=()=>(0,a.useContext)(c);var f=n(4996);const p=e=>e.startsWith("/");function h(e,t){let{isNavLink:n,to:c,href:h,activeClassName:m,isActive:g,"data-noBrokenLinkCheck":v,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:{trailingSlash:w,baseUrl:E}}=(0,l.Z)(),{withBaseUrl:k}=(0,f.C)(),S=d(),x=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>x.current));const _=c||h;const C=(0,s.Z)(_),T=_?.replace("pathname://","");let L=void 0!==T?(O=T,y&&p(O)?k(O):O):void 0;var O;L&&C&&(L=(0,i.applyTrailingSlash)(L,{trailingSlash:w,baseUrl:E}));const P=(0,a.useRef)(!1),N=n?o.OL:o.rU,A=u.Z.canUseIntersectionObserver,I=(0,a.useRef)(),R=()=>{P.current||null==L||(window.docusaurus.preload(L),P.current=!0)};(0,a.useEffect)((()=>(!A&&C&&null!=L&&window.docusaurus.prefetch(L),()=>{A&&I.current&&I.current.disconnect()})),[I,L,A,C]);const D=L?.startsWith("#")??!1,M=!L||!C||D;return M||v||S.collectLink(L),M?a.createElement("a",(0,r.Z)({ref:x,href:L},_&&!C&&{target:"_blank",rel:"noopener noreferrer"},b)):a.createElement(N,(0,r.Z)({},b,{onMouseEnter:R,onTouchStart:R,innerRef:e=>{x.current=e,A&&e&&C&&(I.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(I.current.unobserve(e),I.current.disconnect(),null!=L&&window.docusaurus.prefetch(L))}))})),I.current.observe(e))},to:L},n&&{isActive:g,activeClassName:m}))}const m=a.forwardRef(h)},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7294);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(7529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),a=n(2263),o=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8940);function o(){return(0,r.useContext)(a._)}},8084:(e,t,n)=>{"use strict";n.d(t,{OD:()=>o,eZ:()=>i});var r=n(2263),a=n(9935);function o(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,r.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}function i(e,t,n){void 0===t&&(t=a.m),void 0===n&&(n={});const r=o(e),i=r?.[t];if(!i&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return i}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8934);function o(){return(0,r.useContext)(a._)}},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t=".",n={};return function e(a,o){Object.entries(a).forEach((a=>{let[i,l]=a;const s=o?`${o}${t}${i}`:i;r(l)?e(l,s):n[s]=l}))}(e),n}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(7294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},4104:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>p,gA:()=>c,_r:()=>s,Jo:()=>h,zh:()=>u,yW:()=>f,gB:()=>d});var r=n(6550),a=n(8084);const o=e=>e.versions.find((e=>e.isLast));function i(e,t){const n=function(e,t){const n=o(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const l={},s=()=>(0,a.OD)("docusaurus-plugin-content-docs")??l,u=e=>(0,a.eZ)("docusaurus-plugin-content-docs",e,{failfast:!0});function c(e){void 0===e&&(e={});const t=s(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function d(e){return u(e).versions}function f(e){const t=u(e);return o(t)}function p(e){const t=u(e),{pathname:n}=(0,r.TH)();return i(t,n)}function h(e){const t=u(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=o(e);return{latestDocSuggestion:i(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(7410),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.Z,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(4294)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},4574:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Dt});var r=n(7294),a=n(6010),o=n(4763),i=n(8839),l=n(7462),s=n(6550),u=n(5999),c=n(4025);const d="docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&f(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&f(e.current)})),{containerRef:e,onClick:n}}const h=(0,u.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function m(e){const t=e.children??h,{containerRef:n,onClick:a}=p();return r.createElement("div",{ref:n,role:"region","aria-label":h},r.createElement("a",(0,l.Z)({},e,{href:`#${d}`,onClick:a}),t))}var g=n(5201),v=n(1078);const y={skipToContent:"skipToContent_fXgn"};function b(){return r.createElement(m,{className:y.skipToContent})}var w=n(2622),E=n(4689);function k(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...s}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S={closeButton:"closeButton_CVFx"};function x(e){return r.createElement("button",(0,l.Z)({type:"button","aria-label":(0,u.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",S.closeButton,e.className)}),r.createElement(k,{width:14,height:14,strokeWidth:3.1}))}const _={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,l.Z)({},e,{className:(0,a.Z)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function L(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,E.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:T.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:T.announcementBarPlaceholder}),r.createElement(C,{className:T.announcementBarContent}),i&&r.createElement(x,{onClick:n,className:T.announcementBarClose}))}var O=n(5912),P=n(7736);var N=n(4001),A=n(1790);const I=r.createContext(null);function R(e){let{children:t}=e;const n=function(){const e=(0,O.e)(),t=(0,A.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,N.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(I.Provider,{value:n},t)}function D(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function M(){const e=(0,r.useContext)(I);if(!e)throw new N.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,A.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:D(o)})),[a,o,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=M();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var B=n(4670),$=n(2389);function z(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function j(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function H(e){let{className:t,buttonClassName:n,value:o,onChange:i}=e;const l=(0,$.Z)(),s=(0,u.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===o?(0,u.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,u.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)(U.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",U.toggleButton,!l&&U.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!l,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(z,{className:(0,a.Z)(U.toggleIcon,U.lightToggleIcon)}),r.createElement(j,{className:(0,a.Z)(U.toggleIcon,U.darkToggleIcon)})))}const Z=r.memo(H),Q={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function V(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,B.I)();return a?null:r.createElement(Z,{className:t,buttonClassName:"dark"===n?Q.darkNavbarColorModeToggle:void 0,value:o,onChange:i})}var W=n(1327);function G(){return r.createElement(W.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function q(){const e=(0,O.e)();return r.createElement("button",{type:"button","aria-label":(0,u.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(k,{color:"var(--ifm-color-emphasis-600)"}))}function Y(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(G,null),r.createElement(V,{className:"margin-right--md"}),r.createElement(q,null))}var K=n(9960),X=n(4996),J=n(3919);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(9471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:i,html:s,isDropdownLink:u,prependBaseUrlToHref:c,...d}=e;const f=(0,X.Z)(a),p=(0,X.Z)(t),h=(0,X.Z)(o,{forcePrependBaseUrl:!0}),m=i&&o&&!(0,J.Z)(o),g=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,m&&r.createElement(te.Z,u&&{width:12,height:12}))};return o?r.createElement(K.Z,(0,l.Z)({href:c?h:o},d,g)):r.createElement(K.Z,(0,l.Z)({to:f,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},d,g))}function re(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(ne,(0,l.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function ae(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ne,(0,l.Z)({className:(0,a.Z)("menu__link",t)},o)))}function oe(e){let{mobile:t=!1,position:n,...a}=e;const o=t?ae:re;return r.createElement(o,(0,l.Z)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ie=n(4348),le=n(2289),se=n(2263);function ue(e,t){return e.some((e=>function(e,t){return!!(0,le.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ce(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const u=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{u.current&&!u.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[u]),r.createElement("div",{ref:u,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c})},r.createElement(ne,(0,l.Z)({"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>r.createElement(Ge,(0,l.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function de(e){let{items:t,className:n,position:o,onClick:i,...u}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:f,toggleCollapsed:p,setCollapsed:h}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&h(!d)}),[c,d,h]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":f})},r.createElement(ne,(0,l.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},u,{onClick:e=>{e.preventDefault(),p()}}),u.children??u.label),r.createElement(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:f},t.map(((e,t)=>r.createElement(Ge,(0,l.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function fe(e){let{mobile:t=!1,...n}=e;const a=t?de:ce;return r.createElement(a,n)}var pe=n(7417);function he(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const me={iconLanguage:"iconLanguage_nlXk"};var ge=n(1029),ve=n(412),ye=n(815),be=n(902),we=n(4104),Ee=n(22),ke=n(8202),Se=n(3926),xe=n(1073),_e=n(2539),Ce=n(726);const Te='',Le='',Oe='',Pe='',Ne='',Ae='',Ie='',Re={searchBar:"searchBar_RVTs",dropdownMenu:"dropdownMenu_qbY6",searchBarLeft:"searchBarLeft_MXDe",suggestion:"suggestion_fB_2",cursor:"cursor_eG29",hitTree:"hitTree_kk6K",hitIcon:"hitIcon_a7Zy",hitPath:"hitPath_ieM4",noResultsIcon:"noResultsIcon_EBY5",hitFooter:"hitFooter_E9YW",hitWrapper:"hitWrapper_sAK8",hitTitle:"hitTitle_vyVt",hitAction:"hitAction_NqkB",hideAction:"hideAction_vcyE",noResults:"noResults_l6Q3",searchBarContainer:"searchBarContainer_NW3z",searchBarLoadingRing:"searchBarLoadingRing_YnHq",searchClearButton:"searchClearButton_qk4g",searchIndexLoading:"searchIndexLoading_EJ1f",searchHintContainer:"searchHintContainer_Pkmr",searchHint:"searchHint_iIMx",focused:"focused_OWtg",input:"input_FOTf",hint:"hint_URu1",suggestions:"suggestions_X8XU",dataset:"dataset_QiCy",empty:"empty_eITn"};function De(e){let{document:t,type:n,page:r,metadata:a,tokens:o,isInterOfTree:i,isLastOfTree:l}=e;const s=0===n,u=1===n,c=[];i?c.push(Ae):l&&c.push(Ie);const d=c.map((e=>`${e}`)),f=`${s?Te:u?Le:Oe}`,p=[`${(0,Ce.o)(t.t,(0,xe.m)(a,"t"),o)}`];if(!i&&!l&&ge.H6){const e=r?(r.b??[]).concat(r.t).concat(t.s&&t.s!==r.t?t.s:[]):t.b;p.push(`${(0,Se.e)(e??[])}`)}else s||p.push(`${(0,_e.C)(r.t||(t.u.startsWith("/docs/api-reference/")?"API Reference":""),o)}`);const h=`${Pe}`;return[...d,f,``,...p,"",h].join("")}function Me(){return`${Ne}${(0,u.I)({id:"theme.SearchBar.noResultsText",message:"No results"})}`}var Fe=n(311);async function Be(){const e=await Promise.all([n.e(443),n.e(525)]).then(n.t.bind(n,8443,23)),t=e.default;return t.noConflict?t.noConflict():e.noConflict&&e.noConflict(),t}const $e="_highlight";const ze=function(e){let{handleSearchBarToggle:t}=e;const{siteConfig:{baseUrl:n}}=(0,se.Z)(),o=(0,we.gA)();let i=n;try{const{preferredVersion:e}=(0,ye.J)(o?.pluginId??ge.gQ);e&&!e.isLast&&(i=e.path+"/")}catch(P){if(ge.l9&&!(P instanceof be.i6))throw P}const l=(0,s.k6)(),c=(0,s.TH)(),d=(0,r.useRef)(null),f=(0,r.useRef)("empty"),p=(0,r.useRef)(!1),[h,m]=(0,r.useState)(!1),[g,v]=(0,r.useState)(!1),[y,b]=(0,r.useState)(""),w=(0,r.useRef)(null),E=(0,r.useCallback)((async()=>{if("empty"!==f.current)return;f.current="loading",m(!0);const[{wrappedIndexes:e,zhDictionary:t},r]=await Promise.all([(0,Ee.w)(i),Be()]);if(w.current=r(d.current,{hint:!1,autoselect:!0,openOnFocus:!0,cssClasses:{root:(0,a.Z)(Re.searchBar,{[Re.searchBarLeft]:"left"===ge.pu}),noPrefix:!0,dropdownMenu:Re.dropdownMenu,input:Re.input,hint:Re.hint,suggestions:Re.suggestions,suggestion:Re.suggestion,cursor:Re.cursor,dataset:Re.dataset,empty:Re.empty}},[{source:(0,ke.v)(e,t,ge.qo),templates:{suggestion:De,empty:Me,footer:e=>{let{query:t,isEmpty:r}=e;if(r)return;const a=document.createElement("a"),o=`${n}search?q=${encodeURIComponent(t)}`;a.href=o,a.textContent=(0,u.I)({id:"theme.SearchBar.seeAll",message:"See all results"}),a.addEventListener("click",(e=>{e.ctrlKey||e.metaKey||(e.preventDefault(),w.current.autocomplete.close(),l.push(o))}));const i=document.createElement("div");return i.className=Re.hitFooter,i.appendChild(a),i}}}]).on("autocomplete:selected",(function(e,t){let{document:{u:n,h:r},tokens:a}=t;d.current?.blur();let o=n;if(ge.vc&&a.length>0){const e=new URLSearchParams;for(const t of a)e.append($e,t);o+=`?${e.toString()}`}r&&(o+=r),l.push(o)})).on("autocomplete:closed",(()=>{d.current?.blur()})),f.current="done",m(!1),p.current){const e=d.current;e.value&&w.current.autocomplete.open(),e.focus()}}),[n,i,l]);(0,r.useEffect)((()=>{if(!ge.vc)return;const e=ve.Z.canUseDOM?new URLSearchParams(c.search).getAll($e):[];setTimeout((()=>{const t=document.querySelector("article");if(!t)return;const n=new ge.vc(t);n.unmark(),0!==e.length&&n.mark(e),b(e.join(" ")),w.current?.autocomplete.setVal(e.join(" "))}))}),[c.search,c.pathname]);const[k,S]=(0,r.useState)(!1),x=(0,r.useCallback)((()=>{p.current=!0,E(),S(!0),t?.(!0)}),[t,E]),_=(0,r.useCallback)((()=>{S(!1),t?.(!1)}),[t]),C=(0,r.useCallback)((()=>{E()}),[E]),T=(0,r.useCallback)((e=>{b(e.target.value),e.target.value&&v(!0)}),[]),L=!!ve.Z.canUseDOM&&/mac/i.test(navigator.userAgentData?.platform??navigator.platform);(0,r.useEffect)((()=>{if(!ge.AY)return;const e=e=>{(L?e.metaKey:e.ctrlKey)&&"KeyK"===e.code&&(e.preventDefault(),d.current?.focus(),x())};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[L,x]);const O=(0,r.useCallback)((()=>{const e=new URLSearchParams(c.search);e.delete($e);const t=e.toString(),n=c.pathname+(""!=t?`?${t}`:"")+c.hash;n!=c.pathname+c.search+c.hash&&l.push(n),b(""),w.current?.autocomplete.setVal("")}),[c.pathname,c.search,c.hash,l]);return r.createElement("div",{className:(0,a.Z)("navbar__search",Re.searchBarContainer,{[Re.searchIndexLoading]:h&&g,[Re.focused]:k})},r.createElement("input",{placeholder:(0,u.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),"aria-label":"Search",className:"navbar__search-input",onMouseEnter:C,onFocus:x,onBlur:_,onChange:T,ref:d,value:y}),r.createElement(Fe.Z,{className:Re.searchBarLoadingRing}),ge.AY&&ge.t_&&(""!==y?r.createElement("button",{className:Re.searchClearButton,onClick:O},"\u2715"):r.createElement("div",{className:Re.searchHintContainer},r.createElement("kbd",{className:Re.searchHint},L?"\u2318":"ctrl"),r.createElement("kbd",{className:Re.searchHint},"K"))))},je={searchBox:"searchBox_ZlJk"};function Ue(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,je.searchBox)},t)}var He=n(4333);const Ze=e=>e.docs.find((t=>t.id===e.mainDocId));var Qe=n(8846);const Ve=e=>e.docs.find((t=>t.id===e.mainDocId));const We={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,se.Z)(),f=(0,pe.l)(),{search:p,hash:h}=(0,s.TH)(),m=[...n,...c.map((e=>{const n=`${`pathname://${f.createUrl({locale:e,fullyQualified:!1})}`}${p}${h}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...a],g=t?(0,u.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return r.createElement(fe,(0,l.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(he,{className:me.iconLanguage}),g),items:m}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(Ue,{className:n},r.createElement(ze,null))},dropdown:fe,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,we.Iw)(a),s=(0,He.vY)(t,a);return null===s?null:r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.path===s.path||!!i?.sidebar&&i.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,we.Iw)(a),s=(0,He.oz)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,He.lO)(a)[0],s=t??i.label,u=n??Ze(i).path;return r.createElement(oe,(0,l.Z)({},o,{label:s,to:u}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...c}=e;const{search:d,hash:f}=(0,s.TH)(),p=(0,we.Iw)(n),h=(0,we.gB)(n),{savePreferredVersionName:m}=(0,Qe.J)(n),g=[...o,...h.map((e=>{const t=p.alternateDocVersions[e.name]??Ve(e);return{label:e.label,to:`${t.path}${d}${f}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...i],v=(0,He.lO)(n)[0],y=t&&g.length>1?(0,u.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):v.label,b=t&&g.length>1?void 0:Ve(v).path;return g.length<=1?r.createElement(oe,(0,l.Z)({},c,{mobile:t,label:y,to:b,isActive:a?()=>!1:void 0})):r.createElement(fe,(0,l.Z)({},c,{mobile:t,label:y,to:b,items:g,isActive:a?()=>!1:void 0}))}};function Ge(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=We[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function qe(){const e=(0,O.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(Ge,(0,l.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Ye(e){return r.createElement("button",(0,l.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(u.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function Ke(){const e=0===(0,w.L)().navbar.items.length,t=M();return r.createElement(r.Fragment,null,!e&&r.createElement(Ye,{onClick:()=>t.hide()}),t.content)}function Xe(){const e=(0,O.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?r.createElement(F,{header:r.createElement(Y,null),primaryMenu:r.createElement(qe,null),secondaryMenu:r.createElement(Ke,null)}):null}const Je={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function et(e){return r.createElement("div",(0,l.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function tt(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,O.e)(),{navbarRef:l,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,P.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+u{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,"aria-label":(0,u.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Je.navbarHideable,!s&&Je.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(et,{onClick:i.toggle}),r.createElement(Xe,null))}var nt=n(8780);const rt={errorBoundaryError:"errorBoundaryError_MTEk"};function at(e){return r.createElement("button",(0,l.Z)({type:"button"},e),r.createElement(u.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function ot(e){let{error:t}=e;const n=(0,nt.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:rt.errorBoundaryError},n)}class it extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const lt="right";function st(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,l.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function ut(){const{toggle:e,shown:t}=(0,O.e)();return r.createElement("button",{onClick:e,"aria-label":(0,u.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(st,null))}const ct={colorModeToggle:"colorModeToggle_DEke"};function dt(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(it,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},r.createElement(Ge,e)))))}function ft(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function pt(){const e=(0,O.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??lt)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement(ft,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(ut,null),r.createElement(G,null),r.createElement(dt,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(dt,{items:a}),r.createElement(V,{className:ct.colorModeToggle}),!o&&r.createElement(Ue,null,r.createElement(ze,null)))})}function ht(){return r.createElement(tt,null,r.createElement(pt,null))}function mt(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...s}=t,u=(0,X.Z)(n),c=(0,X.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(K.Z,(0,l.Z)({className:"footer__link-item"},a?{href:i?c:a}:{to:u},s),o,a&&!(0,J.Z)(a)&&r.createElement(te.Z,null))}function gt(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(mt,{item:t}))}function vt(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(gt,{key:t,item:e})))))}function yt(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(vt,{key:t,column:e}))))}function bt(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function wt(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(mt,{item:t})}function Et(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(wt,{item:e}),t.length!==n+1&&r.createElement(bt,null))))))}function kt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(yt,{columns:t}):r.createElement(Et,{links:t})}var St=n(941);const xt={footerLogoLink:"footerLogoLink_BH7S"};function _t(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(St.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function Ct(e){let{logo:t}=e;return t.href?r.createElement(K.Z,{href:t.href,className:xt.footerLogoLink,target:t.target},r.createElement(_t,{logo:t})):r.createElement(_t,{logo:t})}function Tt(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function Lt(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function Ot(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(Lt,{style:o,links:n&&n.length>0&&r.createElement(kt,{links:n}),logo:a&&r.createElement(Ct,{logo:a}),copyright:t&&r.createElement(Tt,{copyright:t})})}const Pt=r.memo(Ot),Nt=(0,N.Qc)([B.S,E.pl,P.OC,Qe.L5,i.VC,function(e){let{children:t}=e;return r.createElement(A.n2,null,r.createElement(O.M,null,r.createElement(R,null,t)))}]);function At(e){let{children:t}=e;return r.createElement(Nt,null,t)}function It(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(u.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(at,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(ot,{error:t})))))}const Rt={mainWrapper:"mainWrapper_z2l0"};function Dt(e){const{children:t,noFooter:n,wrapperClassName:l,title:s,description:u}=e;return(0,v.t)(),r.createElement(At,null,r.createElement(i.d,{title:s,description:u}),r.createElement(b,null),r.createElement(L,null),r.createElement(ht,null),r.createElement("div",{id:d,className:(0,a.Z)(g.k.wrapper.main,Rt.mainWrapper,l)},r.createElement(o.Z,{fallback:e=>r.createElement(It,e)},t)),!n&&r.createElement(Pt,null))}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),a=n(7294),o=n(9960),i=n(4996),l=n(2263),s=n(2622),u=n(941);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(u.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:u}}=(0,s.L)(),{imageClassName:d,titleClassName:f,...p}=e,h=(0,i.Z)(u?.href||"/"),m=n?"":t,g=u?.alt??m;return a.createElement(o.Z,(0,r.Z)({to:h},p,u?.target&&{target:u.target}),u&&a.createElement(c,{logo:u,alt:g,imageClassName:d}),null!=n&&a.createElement("b",{className:f},n))}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(5742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),a=n(7294),o=n(6010),i=n(2389),l=n(4670);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function u(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:u,className:c,alt:d,...f}=e,p=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,p.map((e=>a.createElement("img",(0,r.Z)({key:e,src:u[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],c)},f)))))}},4348:(e,t,n)=>{"use strict";n.d(t,{u:()=>l,z:()=>g});var r=n(7462),a=n(7294),o=n(412);const i="ease-in-out";function l(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const s={display:"none",overflow:"hidden",height:"0px"},u={display:"block",overflow:"visible",height:"auto"};function c(e,t){const n=t?s:u;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function d(e){if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return 0;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}function f(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=function(){const t=e.scrollHeight;return{transition:`height ${r?.duration??d(t)}ms ${r?.easing??i}`,height:`${t}px`}}();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return c(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(a(),requestAnimationFrame((()=>{e.style.height=s.height,e.style.overflow=s.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{a()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function p(e){if(!o.Z.canUseDOM)return e?s:u}function h(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const u=(0,a.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:o}),a.createElement(t,{ref:u,style:s?void 0:p(n),onTransitionEnd:e=>{"height"===e.propertyName&&(c(u.current,n),i?.(n))},className:l},r)}function m(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(h,(0,r.Z)({},n,{collapsed:l})):null}function g(e){let{lazy:t,...n}=e;const r=t?m:h;return a.createElement(r,n)}},4689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>h,pl:()=>p});var r=n(7294),a=n(2389),o=n(987),i=n(4001),l=n(2622);const s=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),f=r.createContext(null);function p(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{o(c())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&d(!1),!r&&c()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(f.Provider,{value:n},t)}function h(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},4670:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>m});var r=n(7294),a=n(412),o=n(4001),i=n(987),l=n(2622);const s=r.createContext(void 0),u="theme",c=(0,i.WA)(u),d={light:"light",dark:"dark"},f=e=>e===d.dark?d.dark:d.light,p=e=>a.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),h=e=>{c.set(f(e))};function m(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(p(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&h(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),c.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},8846:(e,t,n)=>{"use strict";n.d(t,{J:()=>y,L5:()=>g});var r=n(7294),a=n(4104),o=n(9935),i=n(2622),l=n(4333),s=n(4001),u=n(987);const c=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,u.WA)(c(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(c(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(c(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const p=r.createContext(null);function h(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function m(e){let{children:t}=e;const n=h();return r.createElement(p.Provider,{value:n},t)}function g(e){let{children:t}=e;return l.cE?r.createElement(m,null,t):r.createElement(r.Fragment,null,t)}function v(){const e=(0,r.useContext)(p);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function y(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=v(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},5735:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7294),a=n(4001);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},5912:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(7294),a=n(1790),o=n(8922),i=n(6550),l=(n(1688),n(4001));function s(e){!function(e){const t=(0,i.k6)(),n=(0,l.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var u=n(2622);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,u.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const c=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function f(e){let{children:t}=e;const n=d();return r.createElement(c.Provider,{value:n},t)}function p(){const e=r.useContext(c);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},1790:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(7294),a=n(4001);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},1078:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},8922:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(7294),a=n(412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.Z.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const s=!1;function u(){const[e,t]=(0,r.useState)((()=>s?"ssr":l()));return(0,r.useEffect)((()=>{function e(){t(l())}const n=s?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},5201:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},4333:(e,t,n)=>{"use strict";n.d(t,{Wl:()=>f,_F:()=>m,cE:()=>d,hI:()=>E,lO:()=>y,vY:()=>w,oz:()=>b,s1:()=>v});var r=n(7294),a=n(6550),o=n(8790),i=n(4104),l=n(8846),s=n(5735);function u(e){return Array.from(new Set(e))}var c=n(2289);const d=!!i._r;function f(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=f(t);if(e)return e}}}const p=(e,t)=>void 0!==e&&(0,c.Mg)(e,t),h=(e,t)=>e.some((e=>m(e,t)));function m(e,t){return"link"===e.type?p(e.href,t):"category"===e.type&&(p(e.href,t)||h(e.items,t))}function g(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,c.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,c.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function v(){const e=(0,s.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?g({sidebarItems:e.items,pathname:t}):null}function y(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>u([t,n,a].filter(Boolean))),[t,n,a])}function b(e,t){const n=y(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${Object.keys(t).join("\n- ")}`);return r[1]}),[e,n])}function w(e,t){const n=y(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:u}}},8839:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>c,VC:()=>p});var r=n(7294),a=n(6010),o=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),u=n(2263);function c(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const c=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),l)}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(f,{className:(0,a.Z)(o,i)},t)}},4001:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(7294);const a=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},2289:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7294),a=n(723),o=n(2263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},7736:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>s,RF:()=>d});var r=n(7294),a=n(412),o=n(2389),i=n(4001);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(c()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3361:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(2263);const r="default";function a(e,t){return`docs-${e}-${t}`}},987:(e,t,n)=>{"use strict";n.d(t,{WA:()=>s});n(7294),n(1688);const r="localStorage";function a(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function o(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}let i=!1;const l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function s(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=o(t?.persistence);return null===n?l:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),a({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),a({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},7417:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});var r=n(2263),a=n(6550);function o(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:o}}=(0,r.Z)(),{pathname:i}=(0,a.TH)(),l=o===n?e:e.replace(`/${o}/`,"/"),s=i.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:a}=e;return`${a?t:""}${function(e){return e===n?`${l}`:`${l}${e}/`}(r)}${s}`}}}},4025:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),a=n(6550),o=n(4001);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},2622:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(2263);function a(){return(0,r.Z)().siteConfig.themeConfig}},815:(e,t,n)=>{"use strict";n.d(t,{J:()=>c});var r=n(7294),a=n(8084);const o=e=>(0,a.eZ)("docusaurus-plugin-content-docs",e,{failfast:!0});var i=n(9935),l=n(902);n(1688);const s=r.createContext(null);function u(){const e=(0,r.useContext)(s);if(!e)throw new l.i6("DocsPreferredVersionContextProvider");return e}function c(e){void 0===e&&(e=i.m);const t=o(e),[n,a]=u(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{a.savePreferredVersion(e,t)}),[a,e])}}},902:(e,t,n)=>{"use strict";n.d(t,{i6:()=>a});var r=n(7294);n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;class a extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="post-content";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},311:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(7294),a=n(6010);const o={loadingRing:"loadingRing_RJI3","loading-ring":"loading-ring_FB5o"};function i(e){let{className:t}=e;return r.createElement("div",{className:(0,a.Z)(o.loadingRing,t)},r.createElement("div",null),r.createElement("div",null),r.createElement("div",null),r.createElement("div",null))}},22:(e,t,n)=>{"use strict";n.d(t,{w:()=>i});var r=n(1336),a=n.n(r),o=n(1029);async function i(e){{const t=await(await fetch(`${e}${o.J}`)).json(),n=t.map(((e,t)=>{let{documents:n,index:r}=e;return{type:t,documents:n,index:a().Index.load(r)}})),r=t.reduce(((e,t)=>{for(const n of t.index.invertedIndex)/\p{Unified_Ideograph}/u.test(n[0][0])&&e.add(n[0]);return e}),new Set);return{wrappedIndexes:n,zhDictionary:Array.from(r)}}}},8202:(e,t,n)=>{"use strict";n.d(t,{v:()=>s});var r=n(1336),a=n.n(r);var o=n(1029);function i(e){return l(e).concat(l(e.filter((e=>{const t=e[e.length-1];return!t.trailing&&t.maybeTyping})),!0))}function l(e,t){return e.map((e=>({tokens:e.map((e=>e.value)),term:e.map((e=>({value:e.value,presence:a().Query.presence.REQUIRED,wildcard:(t?e.trailing||e.maybeTyping:e.trailing)?a().Query.wildcard.TRAILING:a().Query.wildcard.NONE})))})))}function s(e,t,n){return function(r,l){const s=function(e,t){if(1===t.length&&["ja","jp","th"].includes(t[0]))return a()[t[0]].tokenizer(e).map((e=>e.toString()));let n=/[^-\s]+/g;return t.includes("zh")&&(n=/\w+|\p{Unified_Ideograph}+/gu),e.toLowerCase().match(n)||[]}(r,o.dK);if(0===s.length)return void l([]);const u=function(e,t){const n=function(e,t){const n=[];return function e(r,a){if(0===r.length)return void n.push(a);const o=r[0];if(/\p{Unified_Ideograph}/u.test(o)){const n=function(e,t){const n=[];return function e(r,a){let o=0,i=!1;for(const l of t)if(r.substr(0,l.length)===l){const t={missed:a.missed,term:a.term.concat({value:l})};r.length>l.length?e(r.substr(l.length),t):n.push(t),i=!0}else for(let t=l.length-1;t>o;t-=1){const s=l.substr(0,t);if(r.substr(0,t)===s){o=t;const l={missed:a.missed,term:a.term.concat({value:s,trailing:!0})};r.length>t?e(r.substr(t),l):n.push(l),i=!0;break}}i||(r.length>0?e(r.substr(1),{missed:a.missed+1,term:a.term}):a.term.length>0&&n.push(a))}(e,{missed:0,term:[]}),n.sort(((e,t)=>{const n=e.missed>0?1:0,r=t.missed>0?1:0;return n!==r?n-r:e.term.length-t.term.length})).map((e=>e.term))}(o,t);for(const t of n){const n=a.concat(...t);e(r.slice(1),n)}}else{const t=a.concat({value:o});e(r.slice(1),t)}}(e,[]),n}(e,t);if(0===n.length)return[{tokens:e,term:e.map((e=>({value:e,presence:a().Query.presence.REQUIRED,wildcard:a().Query.wildcard.LEADING|a().Query.wildcard.TRAILING})))}];for(const a of n)a[a.length-1].maybeTyping=!0;const r=[];for(const i of o.dK)if("en"===i)o._k||r.unshift(a().stopWordFilter);else{const e=a()[i];e.stopWordFilter&&r.unshift(e.stopWordFilter)}let l;if(r.length>0){const e=e=>r.reduce(((e,t)=>e.filter((e=>t(e.value)))),e);l=[];const t=[];for(const r of n){const n=e(r);l.push(n),n.length0&&t.push(n)}n.push(...t)}else l=n.slice();const s=[];for(const a of l)if(a.length>2)for(let e=a.length-1;e>=0;e-=1)s.push(a.slice(0,e).concat(a.slice(e+1)));return i(n).concat(i(s))}(s,t),c=[];e:for(const{term:t,tokens:a}of u)for(const{documents:r,index:o,type:i}of e)if(c.push(...o.query((e=>{for(const n of t)e.term(n.value,{wildcard:n.wildcard,presence:n.presence})})).slice(0,n).filter((e=>!c.some((t=>t.document.i.toString()===e.ref)))).slice(0,n-c.length).map((t=>{const n=r.find((e=>e.i.toString()===t.ref));return{document:n,type:i,page:0!==i&&e[0].documents.find((e=>e.i===n.p)),metadata:t.matchData.metadata,tokens:a,score:t.score}}))),c.length>=n)break e;!function(e){e.forEach(((e,t)=>{e.index=t})),e.sort(((t,n)=>{let r=t.type>0&&t.page?e.findIndex((e=>e.document===t.page)):t.index,a=n.type>0&&n.page?e.findIndex((e=>e.document===n.page)):n.index;return-1===r&&(r=t.index),-1===a&&(a=n.index),r===a?0===t.type?-1:0===n.type?1:t.index-n.index:r-a}))}(c),function(e){e.forEach(((t,n)=>{n>0&&t.page&&e.some((e=>e.document===t.page))&&(n{"use strict";function r(e){return e.join(" \u203a ")}n.d(t,{e:()=>r})},1690:(e,t,n)=>{"use strict";function r(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}n.d(t,{X:()=>r})},1073:(e,t,n)=>{"use strict";function r(e,t){const n=[];for(const r of Object.values(e))r[t]&&n.push(...r[t].position);return n.sort(((e,t)=>e[0]-t[0]||t[1]-e[1]))}n.d(t,{m:()=>r})},2539:(e,t,n)=>{"use strict";n.d(t,{C:()=>a});var r=n(1690);function a(e,t,n){const o=[];for(const i of t){const n=e.toLowerCase().indexOf(i);if(n>=0){n>0&&o.push(a(e.substr(0,n),t)),o.push(`${(0,r.X)(e.substr(n,i.length))}`);const l=n+i.length;l${(0,r.X)(e)}`:(0,r.X)(e):o.join("")}},726:(e,t,n)=>{"use strict";n.d(t,{o:()=>s});var r=n(1690),a=n(2539);const o=/\w+|\p{Unified_Ideograph}/u;function i(e){const t=[];let n=0,r=e;for(;r.length>0;){const a=r.match(o);if(!a){t.push(r);break}a.index>0&&t.push(r.substring(0,a.index)),t.push(a[0]),n+=a.index+a[0].length,r=e.substring(n)}return t}var l=n(1029);function s(e,t,n,o){void 0===o&&(o=l.Hk);const{chunkIndex:s,chunks:u}=function(e,t,n){const o=[];let l=0,s=0,u=-1;for(;ls){const t=i(e.substring(s,c)).map((e=>({html:(0,r.X)(e),textLength:e.length})));for(const e of t)o.push(e)}-1===u&&(u=o.length),s=c+d,o.push({html:(0,a.C)(e.substring(c,s),n,!0),textLength:d})}}if(s({html:(0,r.X)(e),textLength:e.length})));for(const e of t)o.push(e)}return{chunkIndex:u,chunks:o}}(e,t,n),c=u.slice(0,s),d=u[s],f=[d.html],p=u.slice(s+1);let h=d.textLength,m=0,g=0,v=!1,y=!1;for(;h0){const e=c.pop();h+e.textLength<=o?(f.unshift(e.html),m+=e.textLength,h+=e.textLength):(v=!0,c.length=0)}else{if(!(p.length>0))break;{const e=p.shift();h+e.textLength<=o?(f.push(e.html),g+=e.textLength,h+=e.textLength):(y=!0,p.length=0)}}return(v||c.length>0)&&f.unshift("\u2026"),(y||p.length>0)&&f.push("\u2026"),f.join("")}},1029:(e,t,n)=>{"use strict";n.d(t,{vc:()=>o,gQ:()=>p,H6:()=>u,l9:()=>h,dK:()=>r,_k:()=>a,pu:()=>f,AY:()=>c,t_:()=>d,J:()=>i,Hk:()=>s,qo:()=>l});n(1336);const r=["en"],a=!1,o=null,i="search-index.json?_=ef41bc09",l=8,s=50,u=!1,c=!0,d=!0,f="right",p=void 0,h=!0},6010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta});const a=function(){for(var e,t,n=0,a="";n{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>p,PP:()=>L,Ep:()=>f});var r=n(7462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};var l=n(8776);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function h(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,m(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:b,goBack:function(){b(-1)},goForward:function(){b(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(9864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var a=p(n);a&&a!==h&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),m=s(n),g=0;g{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},1336:(e,t,n)=>{var r,a;!function(){var o,i,l,s,u,c,d,f,p,h,m,g,v,y,b,w,E,k,S,x,_,C,T,L,O,P,N,A,I,R,D=function(e){var t=new D.Builder;return t.pipeline.add(D.trimmer,D.stopWordFilter,D.stemmer),t.searchPipeline.add(D.stemmer),e.call(t,t),t.build()};D.version="2.3.9",D.utils={},D.utils.warn=(o=this,function(e){o.console&&console.warn&&console.warn(e)}),D.utils.asString=function(e){return null==e?"":e.toString()},D.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r0){var s=D.utils.clone(t)||{};s.position=[i,l],s.index=a.length,a.push(new D.Token(n.slice(i,o),s))}i=o+1}}return a},D.tokenizer.separator=/[\s\-]+/,D.Pipeline=function(){this._stack=[]},D.Pipeline.registeredFunctions=Object.create(null),D.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&D.utils.warn("Overwriting existing registered function: "+t),e.label=t,D.Pipeline.registeredFunctions[e.label]=e},D.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||D.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},D.Pipeline.load=function(e){var t=new D.Pipeline;return e.forEach((function(e){var n=D.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},D.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){D.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},D.Pipeline.prototype.after=function(e,t){D.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},D.Pipeline.prototype.before=function(e,t){D.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},D.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},D.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n1&&(oe&&(n=a),o!=e);)r=n-t,a=t+Math.floor(r/2),o=this.elements[2*a];return o==e||o>e?2*a:ol?u+=2:i==l&&(t+=n[s+1]*r[u+1],s+=2,u+=2);return t},D.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},D.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t0){var o,i=a.str.charAt(0);i in a.node.edges?o=a.node.edges[i]:(o=new D.TokenSet,a.node.edges[i]=o),1==a.str.length&&(o.final=!0),r.push({node:o,editsRemaining:a.editsRemaining,str:a.str.slice(1)})}if(0!=a.editsRemaining){if("*"in a.node.edges)var l=a.node.edges["*"];else{l=new D.TokenSet;a.node.edges["*"]=l}if(0==a.str.length&&(l.final=!0),r.push({node:l,editsRemaining:a.editsRemaining-1,str:a.str}),a.str.length>1&&r.push({node:a.node,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)}),1==a.str.length&&(a.node.final=!0),a.str.length>=1){if("*"in a.node.edges)var s=a.node.edges["*"];else{s=new D.TokenSet;a.node.edges["*"]=s}1==a.str.length&&(s.final=!0),r.push({node:s,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)})}if(a.str.length>1){var u,c=a.str.charAt(0),d=a.str.charAt(1);d in a.node.edges?u=a.node.edges[d]:(u=new D.TokenSet,a.node.edges[d]=u),1==a.str.length&&(u.final=!0),r.push({node:u,editsRemaining:a.editsRemaining-1,str:c+a.str.slice(2)})}}}return n},D.TokenSet.fromString=function(e){for(var t=new D.TokenSet,n=t,r=0,a=e.length;r=e;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},D.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},D.Index.prototype.search=function(e){return this.query((function(t){new D.QueryParser(e,t).parse()}))},D.Index.prototype.query=function(e){for(var t=new D.Query(this.fields),n=Object.create(null),r=Object.create(null),a=Object.create(null),o=Object.create(null),i=Object.create(null),l=0;l1?1:e},D.Builder.prototype.k1=function(e){this._k1=e},D.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var a=0;a=this.length)return D.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},D.QueryLexer.prototype.width=function(){return this.pos-this.start},D.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},D.QueryLexer.prototype.backup=function(){this.pos-=1},D.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=D.QueryLexer.EOS&&this.backup()},D.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(D.QueryLexer.TERM)),e.ignore(),e.more())return D.QueryLexer.lexText},D.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(D.QueryLexer.EDIT_DISTANCE),D.QueryLexer.lexText},D.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(D.QueryLexer.BOOST),D.QueryLexer.lexText},D.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(D.QueryLexer.TERM)},D.QueryLexer.termSeparator=D.tokenizer.separator,D.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==D.QueryLexer.EOS)return D.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return D.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(D.QueryLexer.TERM),D.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(D.QueryLexer.TERM),D.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(D.QueryLexer.PRESENCE),D.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(D.QueryLexer.PRESENCE),D.QueryLexer.lexText;if(t.match(D.QueryLexer.termSeparator))return D.QueryLexer.lexTerm}else e.escapeCharacter()}},D.QueryParser=function(e,t){this.lexer=new D.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},D.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=D.QueryParser.parseClause;e;)e=e(this);return this.query},D.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},D.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},D.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},D.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case D.QueryLexer.PRESENCE:return D.QueryParser.parsePresence;case D.QueryLexer.FIELD:return D.QueryParser.parseField;case D.QueryLexer.TERM:return D.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new D.QueryParseError(n,t.start,t.end)}},D.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=D.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=D.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new D.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new D.QueryParseError(n,t.start,t.end)}switch(r.type){case D.QueryLexer.FIELD:return D.QueryParser.parseField;case D.QueryLexer.TERM:return D.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new D.QueryParseError(n,r.start,r.end)}}},D.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new D.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var a=e.peekLexeme();if(null==a){r="expecting term, found nothing";throw new D.QueryParseError(r,t.start,t.end)}if(a.type===D.QueryLexer.TERM)return D.QueryParser.parseTerm;r="expecting term, found '"+a.type+"'";throw new D.QueryParseError(r,a.start,a.end)}},D.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case D.QueryLexer.TERM:return e.nextClause(),D.QueryParser.parseTerm;case D.QueryLexer.FIELD:return e.nextClause(),D.QueryParser.parseField;case D.QueryLexer.EDIT_DISTANCE:return D.QueryParser.parseEditDistance;case D.QueryLexer.BOOST:return D.QueryParser.parseBoost;case D.QueryLexer.PRESENCE:return e.nextClause(),D.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new D.QueryParseError(r,n.start,n.end)}else e.nextClause()}},D.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new D.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case D.QueryLexer.TERM:return e.nextClause(),D.QueryParser.parseTerm;case D.QueryLexer.FIELD:return e.nextClause(),D.QueryParser.parseField;case D.QueryLexer.EDIT_DISTANCE:return D.QueryParser.parseEditDistance;case D.QueryLexer.BOOST:return D.QueryParser.parseBoost;case D.QueryLexer.PRESENCE:return e.nextClause(),D.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new D.QueryParseError(r,a.start,a.end)}else e.nextClause()}},D.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new D.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case D.QueryLexer.TERM:return e.nextClause(),D.QueryParser.parseTerm;case D.QueryLexer.FIELD:return e.nextClause(),D.QueryParser.parseField;case D.QueryLexer.EDIT_DISTANCE:return D.QueryParser.parseEditDistance;case D.QueryLexer.BOOST:return D.QueryParser.parseBoost;case D.QueryLexer.PRESENCE:return e.nextClause(),D.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new D.QueryParseError(r,a.start,a.end)}else e.nextClause()}},void 0===(a="function"==typeof(r=function(){return D})?r.call(t,n,t,e):r)||(e.exports=a)}()},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},7418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s{var r=n(5826);e.exports=p,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],f=n[1],p=n.index;if(l+=e.slice(i,p),i=p+d.length,f)l+=f[1];else{var h=e[i],m=n[2],g=n[3],v=n[4],y=n[5],b=n[6],w=n[7];l&&(r.push(l),l="");var E=null!=m&&null!=h&&h!==m,k="+"===b||"*"===b,S="?"===b||"*"===b,x=n[2]||c,_=v||y;r.push({name:g||o++,prefix:m||"",delimiter:x,optional:S,repeat:k,partial:E,asterisk:!!w,pattern:_?u(_):w?".*":"[^"+s(x)+"]+?"})}}return i{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);S+=k.value.length,k=k.next){var x=k.value;if(t.length>e.length)return;if(!(x instanceof a)){var _,C=1;if(y){if(!(_=o(E,S,e,v))||_.index>=e.length)break;var T=_.index,L=_.index+_[0].length,O=S;for(O+=k.value.length;T>=O;)O+=(k=k.next).value.length;if(S=O-=k.value.length,k.value instanceof a)continue;for(var P=k;P!==t.tail&&(Od.reach&&(d.reach=R);var D=k.prev;if(A&&(D=s(t,D,A),S+=A.length),u(t,D,C),k=s(t,D,new a(f,g?r.tokenize(N,g):N,b,N)),I&&s(t,k,I),C>1){var M={cause:f+","+h,reach:R};i(e,t,n,k.prev,S,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a"+o.content+""},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s=0&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function u(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function c(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,c={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=a,n})).join(""),n,r),f=Object.keys(c);return i=0,function e(t){for(var n=0;n=f.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=f[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=u(c[a]),p=o.substring(l+a.length),h=[];if(s&&h.push(s),h.push(d),p){var m=[p];e(m),h.push.apply(h,m)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(h)),n+=h.length-1):r.content=h}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function o(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return r})).replace(//g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),h=f.indexOf(p);if(h>-1){++a;var m=f.substring(0,h),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),v=f.substring(h+p.length),y=[];m&&y.push.apply(y,i([m])),y.push(g),v&&y.push.apply(y,i([v])),"string"==typeof u?l.splice.apply(l,[s,1].concat(y)):u.content=y}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},767:()=>{!function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|)*\*\//.source,n=0;n<2;n++)t=t.replace(//g,(function(){return t}));t=t.replace(//g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(Prism)},4294:(e,t,n)=>{var r={"./prism-rust":767};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=4294},2703:(e,t,n)=>{"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),a=n(7418),o=n(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n