diff --git a/404.html b/404.html index d4b95e8e..f3e364bb 100644 --- a/404.html +++ b/404.html @@ -4,13 +4,13 @@ Page Not Found | Credo - - + +
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/00c1cb92.f4c22810.js b/assets/js/00c1cb92.f4c22810.js deleted file mode 100644 index 40801b1e..00000000 --- a/assets/js/00c1cb92.f4c22810.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[2525],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});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 s(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 s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var a=r.createContext({}),d=function(e){var t=r.useContext(a),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=d(e.components);return r.createElement(a.Provider,{value:t},e.children)},u="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,s=e.originalType,a=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=d(n),c=i,m=u["".concat(a,".").concat(c)]||u[c]||g[c]||s;return n?r.createElement(m,o(o({ref:t},p),{},{components:n})):r.createElement(m,o({ref:t},p))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var s=n.length,o=new Array(s);o[0]=c;var l={};for(var a in t)hasOwnProperty.call(t,a)&&(l[a]=t[a]);l.originalType=e,l[u]="string"==typeof e?e:i,o[1]=l;for(var d=2;d{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>o,default:()=>g,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var r=n(7462),i=(n(7294),n(3905));const s={},o="Postgres Setup for windows",l={unversionedId:"tutorials/indy-sdk-postgres-database-nodejs/windows",id:"tutorials/indy-sdk-postgres-database-nodejs/windows",title:"Postgres Setup for windows",description:"Build Environment Prerequisites",source:"@site/guides/tutorials/indy-sdk-postgres-database-nodejs/windows.md",sourceDirName:"tutorials/indy-sdk-postgres-database-nodejs",slug:"/tutorials/indy-sdk-postgres-database-nodejs/windows",permalink:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/windows",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Postgres Setup for macOS",permalink:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/macos"},next:{title:"Updating Credo",permalink:"/guides/0.5/updating/"}},a={},d=[{value:"Build Environment Prerequisites",id:"build-environment-prerequisites",level:2},{value:"Step 1: Getting dependencies",id:"step-1-getting-dependencies",level:2},{value:"Step 2: Build Postgres plugin",id:"step-2-build-postgres-plugin",level:2},{value:"Step 2.1: Cloning the indy-sdk",id:"step-21-cloning-the-indy-sdk",level:3},{value:"Step 2.2: Building Postgres plugin",id:"step-22-building-postgres-plugin",level:3},{value:"Step 2.3: Setting the file to PATH",id:"step-23-setting-the-file-to-path",level:3}],p={toc:d},u="wrapper";function g(e){let{components:t,...n}=e;return(0,i.kt)(u,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"postgres-setup-for-windows"},"Postgres Setup for windows"),(0,i.kt)("h2",{id:"build-environment-prerequisites"},"Build Environment Prerequisites"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Download and install Visual Studio Community Edition 2022"),(0,i.kt)("li",{parentName:"ol"},"Install git for windows"),(0,i.kt)("li",{parentName:"ol"},"Download rust for windows ",(0,i.kt)("a",{parentName:"li",href:"https://www.rust-lang.org/en-US/install.html"},"here")),(0,i.kt)("li",{parentName:"ol"},"Make sure you have already setup libindy for windows from ",(0,i.kt)("a",{parentName:"li",href:"../../getting-started/indy-sdk/windows"},"here"))),(0,i.kt)("h2",{id:"step-1-getting-dependencies"},"Step 1: Getting dependencies"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Download the prebuilt dependencies ",(0,i.kt)("a",{parentName:"li",href:"https://repo.sovrin.org/windows/libindy/deps/"},"here")),(0,i.kt)("li",{parentName:"ul"},"Extract them"),(0,i.kt)("li",{parentName:"ul"},"Point path to this directory using environment variables:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"set INDY_PREBUILT_DEPS_DIR=C:\\Users\\{WINDOWS_USER}\\Downloads\\indy-sdk-deps")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"set INDY_CRYPTO_PREBUILT_DEPS_DIR=C:\\Users\\{WINDOWS_USER}\\Downloads\\indy-sdk-deps")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"set MILAGRO_DIR=C:\\Users\\{WINDOWS_USER}\\Downloads\\indy-sdk-deps")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"set LIBZMQ_PREFIX=C:\\Users\\{WINDOWS_USER}\\Downloads\\indy-sdk-deps")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"set SODIUM_LIB_DIR=C:\\Users\\{WINDOWS_USER}\\Downloads\\indy-sdk-deps")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"set OPENSSL_DIR=C:\\Users\\{WINDOWS_USER}\\Downloads\\indy-sdk-deps")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"set PATH=C:\\Users\\{WINDOWS_USER}\\Downloads\\indy-sdk-deps\\lib"))))),(0,i.kt)("h2",{id:"step-2-build-postgres-plugin"},"Step 2: Build Postgres plugin"),(0,i.kt)("p",null,"Building Postgres plugin from the indy-sdk repo with cargo."),(0,i.kt)("h3",{id:"step-21-cloning-the-indy-sdk"},"Step 2.1: Cloning the indy-sdk"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sh"},"git clone https://github.com/hyperledger/indy-sdk.git\n\ncd indy-sdk\\experimental\\plugins\\postgres_storage\n")),(0,i.kt)("h3",{id:"step-22-building-postgres-plugin"},"Step 2.2: Building Postgres plugin"),(0,i.kt)("p",null,"If this step throws any errors, it might be because of the environment. Step 1 of this guide provided the dependencies that are required."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sh"},"cargo build --release --target x86_64-pc-windows-msvc\n")),(0,i.kt)("p",null,"The library ",(0,i.kt)("strong",{parentName:"p"},"indystrgpostgres.dll")," file will be located at ",(0,i.kt)("inlineCode",{parentName:"p"},"indy-sdk\\experimental\\plugins\\postgres_storage\\target\\x86_64-pc-windows-msvc\\release")),(0,i.kt)("h3",{id:"step-23-setting-the-file-to-path"},"Step 2.3: Setting the file to PATH"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"set LIB_INDY_STRG_POSTGRES=C:\\Users\\{WINDOWS_USER}\\Downloads\\indy-sdklexperimental\\plugins\\postgres_storage\\target\\x86_64-pc-windows-msvc\\release"))),(0,i.kt)("p",null,"or Alternatively you can copy the ",(0,i.kt)("strong",{parentName:"p"},"indystrgpostgres.dll")," file to ",(0,i.kt)("inlineCode",{parentName:"p"},"c:\\\\windows\\\\system32\\\\")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/06d26907.1488c196.js b/assets/js/06d26907.1488c196.js deleted file mode 100644 index deea974b..00000000 --- a/assets/js/06d26907.1488c196.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[4632],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>y});var r=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 r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),d=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=d(e.components);return r.createElement(l.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=d(n),m=o,y=c["".concat(l,".").concat(m)]||c[m]||u[m]||i;return n?r.createElement(y,a(a({ref:t},p),{},{components:n})):r.createElement(y,a({ref:t},p))}));function y(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:o,a[1]=s;for(var d=2;d{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var r=n(7462),o=(n(7294),n(3905));const i={},a="Windows",s={unversionedId:"getting-started/set-up/indy-sdk/windows",id:"getting-started/set-up/indy-sdk/windows",title:"Windows",description:"To install Indy SDK on Windows, you can download the pre-built binary from the Sovrin repository.",source:"@site/guides/getting-started/set-up/indy-sdk/windows.md",sourceDirName:"getting-started/set-up/indy-sdk",slug:"/getting-started/set-up/indy-sdk/windows",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/windows",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Linux",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/linux"},next:{title:"macOS (Intel)",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/macos-intel"}},l={},d=[{value:"Confirm installation",id:"confirm-installation",level:3}],p={toc:d},c="wrapper";function u(e){let{components:t,...n}=e;return(0,o.kt)(c,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"windows"},"Windows"),(0,o.kt)("p",null,"To install ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-sdk"},"Indy SDK")," on Windows, you can download the pre-built binary from the ",(0,o.kt)("a",{parentName:"p",href:"https://repo.sovrin.org/windows/libindy/master/1.16.0-1636/libindy_1.16.0.zip"},"Sovrin repository"),"."),(0,o.kt)("p",null,"Once downloaded, extract the zip into a ",(0,o.kt)("strong",{parentName:"p"},"permanent location"),"."),(0,o.kt)("p",null,"Next, go to ",(0,o.kt)("inlineCode",{parentName:"p"},"environment variables")," on your system and click on ",(0,o.kt)("inlineCode",{parentName:"p"},"new")," at\n",(0,o.kt)("inlineCode",{parentName:"p"},"System Variables"),". The name MUST be ",(0,o.kt)("inlineCode",{parentName:"p"},"LD_LIBRARY_PATH")," and the value MUST be\nthe path to the extracted libraries."),(0,o.kt)("h3",{id:"confirm-installation"},"Confirm installation"),(0,o.kt)("p",null,"To see whether the Indy SDK is correctly installed on your system, run the following command and it should not error."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-console"},"npx -p @aries-framework/node@^0.3 is-indy-installed\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0c824aea.1645a86c.js b/assets/js/0c824aea.729d7fe3.js similarity index 72% rename from assets/js/0c824aea.1645a86c.js rename to assets/js/0c824aea.729d7fe3.js index a802dd63..f86971ee 100644 --- a/assets/js/0c824aea.1645a86c.js +++ b/assets/js/0c824aea.729d7fe3.js @@ -1 +1 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[1350],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(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||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,s=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=c(n),m=a,h=d["".concat(l,".").concat(m)]||d[m]||p[m]||s;return n?r.createElement(h,o(o({ref:t},u),{},{components:n})):r.createElement(h,o({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var s=n.length,o=new Array(s);o[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:a,o[1]=i;for(var c=2;c{n.d(t,{Z:()=>g});var r=n(7294),a=n(6010),s=n(3438),o=n(9960),i=n(3919),l=n(5999);const c={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){let{href:t,children:n}=e;return r.createElement(o.Z,{href:t,className:(0,a.Z)("card padding--lg",c.cardContainer)},n)}function d(e){let{href:t,icon:n,title:s,description:o}=e;return r.createElement(u,{href:t},r.createElement("h2",{className:(0,a.Z)("text--truncate",c.cardTitle),title:s},n," ",s),o&&r.createElement("p",{className:(0,a.Z)("text--truncate",c.cardDescription),title:o},o))}function p(e){let{item:t}=e;const n=(0,s.Wl)(t);return n?r.createElement(d,{href:n,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function m(e){let{item:t}=e;const n=(0,i.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",a=(0,s.xz)(t.docId??void 0);return r.createElement(d,{href:t.href,icon:n,title:t.label,description:a?.description})}function h(e){let{item:t}=e;switch(t.type){case"link":return r.createElement(m,{item:t});case"category":return r.createElement(p,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function f(e){let{className:t}=e;const n=(0,s.jA)();return r.createElement(g,{items:n.items,className:t})}function g(e){const{items:t,className:n}=e;if(!t)return r.createElement(f,e);const o=(0,s.MN)(t);return r.createElement("section",{className:(0,a.Z)("row",n)},o.map(((e,t)=>r.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},r.createElement(h,{item:e})))))}},5162:(e,t,n)=>{n.d(t,{Z:()=>o});var r=n(7294),a=n(6010);const s={tabItem:"tabItem_Ymn6"};function o(e){let{children:t,hidden:n,className:o}=e;return r.createElement("div",{role:"tabpanel",className:(0,a.Z)(s.tabItem,o),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>w});var r=n(7462),a=n(7294),s=n(6010),o=n(2466),i=n(6550),l=n(1980),c=n(7392),u=n(12);function d(e){return function(e){return a.Children.map(e,(e=>{if((0,a.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:a}}=e;return{value:t,label:n,attributes:r,default:a}}))}function p(e){const{values:t,children:n}=e;return(0,a.useMemo)((()=>{const e=t??d(n);return function(e){const t=(0,c.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function h(e){let{queryString:t=!1,groupId:n}=e;const r=(0,i.k6)(),s=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l._X)(s),(0,a.useCallback)((e=>{if(!s)return;const t=new URLSearchParams(r.location.search);t.set(s,e),r.replace({...r.location,search:t.toString()})}),[s,r])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,s=p(e),[o,i]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:s}))),[l,c]=h({queryString:n,groupId:r}),[d,f]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,s]=(0,u.Nk)(n);return[r,(0,a.useCallback)((e=>{n&&s.set(e)}),[n,s])]}({groupId:r}),g=(()=>{const e=l??d;return m({value:e,tabValues:s})?e:null})();(0,a.useLayoutEffect)((()=>{g&&i(g)}),[g]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!m({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);i(e),c(e),f(e)}),[c,f,s]),tabValues:s}}var g=n(2389);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function k(e){let{className:t,block:n,selectedValue:i,selectValue:l,tabValues:c}=e;const u=[],{blockElementScrollPositionUntilNextRender:d}=(0,o.o5)(),p=e=>{const t=e.currentTarget,n=u.indexOf(t),r=c[n].value;r!==i&&(d(t),l(r))},m=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const n=u.indexOf(e.currentTarget)+1;t=u[n]??u[0];break}case"ArrowLeft":{const n=u.indexOf(e.currentTarget)-1;t=u[n]??u[u.length-1];break}}t?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.Z)("tabs",{"tabs--block":n},t)},c.map((e=>{let{value:t,label:n,attributes:o}=e;return a.createElement("li",(0,r.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:e=>u.push(e),onKeyDown:m,onClick:p},o,{className:(0,s.Z)("tabs__item",b.tabItem,o?.className,{"tabs__item--active":i===t})}),n??t)})))}function v(e){let{lazy:t,children:n,selectedValue:r}=e;if(n=Array.isArray(n)?n:[n],t){const e=n.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},n.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==r}))))}function y(e){const t=f(e);return a.createElement("div",{className:(0,s.Z)("tabs-container",b.tabList)},a.createElement(k,(0,r.Z)({},e,t)),a.createElement(v,(0,r.Z)({},e,t)))}function w(e){const t=(0,g.Z)();return a.createElement(y,(0,r.Z)({key:String(t)},e))}},7114:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var r=n(7462),a=(n(7294),n(3905)),s=n(4866),o=n(5162);n(2991);const i={},l="cheqd",c={unversionedId:"getting-started/set-up/cheqd/index",id:"getting-started/set-up/cheqd/index",title:"cheqd",description:"cheqd is a blockchain network, built in the Cosmos ecosystem for Self-Sovereign Identity (SSI). The cheqd Network leverages the cheqd DID method and enables DID-Linked Resources to be written to the network, associated with a DID and controlled using the verification methods in the DID Document.",source:"@site/guides/getting-started/set-up/cheqd/index.md",sourceDirName:"getting-started/set-up/cheqd",slug:"/getting-started/set-up/cheqd/",permalink:"/guides/0.5/getting-started/set-up/cheqd/",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Indy VDR",permalink:"/guides/0.5/getting-started/set-up/indy-vdr"},next:{title:"Concepts",permalink:"/guides/0.5/concepts/"}},u={},d=[{value:"Installing cheqd",id:"installing-cheqd",level:3},{value:"React Native",id:"react-native",level:4},{value:"Adding the cheqd to the Agent",id:"adding-the-cheqd-to-the-agent",level:3},{value:"Tutorials",id:"tutorials",level:3}],p={toc:d},m="wrapper";function h(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"cheqd"},"cheqd"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/cheqd/sdk"},"cheqd")," is a blockchain network, built in the Cosmos ecosystem for Self-Sovereign Identity (SSI). The cheqd Network leverages the ",(0,a.kt)("a",{parentName:"p",href:"https://docs.cheqd.io/identity/architecture/adr-list/adr-001-cheqd-did-method"},"cheqd DID method")," and enables ",(0,a.kt)("a",{parentName:"p",href:"https://docs.cheqd.io/identity/architecture/adr-list/adr-002-did-linked-resources"},"DID-Linked Resources")," to be written to the network, associated with a DID and controlled using the verification methods in the DID Document."),(0,a.kt)("p",null,"Through this approach, the cheqd Network is able to natively support the ",(0,a.kt)("a",{parentName:"p",href:"https://hyperledger.github.io/anoncreds-spec/"},"Ledger Agnostic AnonCreds Specification (v1.0)")," through its ",(0,a.kt)("a",{parentName:"p",href:"https://docs.cheqd.io/identity/guides/anoncreds"},"AnonCreds Object Method")," (as well as VC-JWT and JSON-LD)."),(0,a.kt)("p",null,"cheqd also has a dedicated token, $CHEQ, used for identity writes to the network, voting in a decentralised governance framework as well as for various payment flows between verifiers, holders and issuers of Verifiable Credentials."),(0,a.kt)("h3",{id:"installing-cheqd"},"Installing cheqd"),(0,a.kt)("p",null,"When using Credo with the cheqd, there's a few extra dependencies that need to be installed. We need to install the ",(0,a.kt)("inlineCode",{parentName:"p"},"@aries-framework/cheqd")," package, which implements the needed interfaces for the agent."),(0,a.kt)("h4",{id:"react-native"},"React Native"),(0,a.kt)("p",null,"To enable react-native support we need to follow the steps below"),(0,a.kt)("p",null,"In the package.json file add the below code snippet, which replaces the cosmjs dependencies witht he cosmjs-rn packages"),(0,a.kt)(s.Z,{mdxType:"Tabs"},(0,a.kt)(o.Z,{label:"NPM",value:"tab1",mdxType:"TabItem"},(0,a.kt)("p",null,"Using ",(0,a.kt)("a",{parentName:"p",href:"https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides"},"NPM ",(0,a.kt)("inlineCode",{parentName:"a"},"overrides"))," we can point the ",(0,a.kt)("inlineCode",{parentName:"p"},"cosmjs")," packages to ",(0,a.kt)("inlineCode",{parentName:"p"},"cosmjs-rn"),"."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "overrides": {\n "@cosmjs/amino": "npm:@cosmjs-rn/amino@^0.27.1",\n "@cosmjs/encoding": "npm:@cosmjs-rn/encoding@^0.27.1",\n "@cosmjs/math": "npm:@cosmjs-rn/math@^0.27.1",\n "@cosmjs/stargate": "npm:@cosmjs-rn/stargate@^0.27.1",\n "@cosmjs/tendermint-rpc": "npm:@cosmjs-rn/tendermint-rpc@^0.27.1",\n "@cosmjs/utils": "npm:@cosmjs-rn/utils@^0.27.1",\n "@cosmjs/proto-signing": "npm:@cosmjs-rn/proto-signing@^0.27.1",\n "@cosmjs/crypto": "npm:@cosmjs-rn/crypto@^0.27.1"\n }\n}\n'))),(0,a.kt)(o.Z,{label:"Yarn",value:"tab2",mdxType:"TabItem"},(0,a.kt)("p",null,"Using ",(0,a.kt)("a",{parentName:"p",href:"https://classic.yarnpkg.com/lang/en/docs/selective-version-resolutions/"},"Yarn ",(0,a.kt)("inlineCode",{parentName:"a"},"resolutions"))," we can point the ",(0,a.kt)("inlineCode",{parentName:"p"},"cosmjs")," packages to ",(0,a.kt)("inlineCode",{parentName:"p"},"cosmjs-rn"),"."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "resolutions": {\n "@cosmjs/amino": "npm:@cosmjs-rn/amino@^0.27.1",\n "@cosmjs/encoding": "npm:@cosmjs-rn/encoding@^0.27.1",\n "@cosmjs/math": "npm:@cosmjs-rn/math@^0.27.1",\n "@cosmjs/stargate": "npm:@cosmjs-rn/stargate@^0.27.1",\n "@cosmjs/tendermint-rpc": "npm:@cosmjs-rn/tendermint-rpc@^0.27.1",\n "@cosmjs/utils": "npm:@cosmjs-rn/utils@^0.27.1",\n "@cosmjs/proto-signing": "npm:@cosmjs-rn/proto-signing@^0.27.1",\n "@cosmjs/crypto": "npm:@cosmjs-rn/crypto@^0.27.1"\n }\n}\n')))),(0,a.kt)("p",null,"Following that we need to add a buffer polyfill"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"yarn add buffer\n")),(0,a.kt)("p",null,"create a shim.js file with the below code snippet"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-typescript"},"import { Buffer } from 'buffer'\nglobal.Buffer = Buffer\n")),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"import shim.js")," file into your file where the App is imported"),(0,a.kt)("h3",{id:"adding-the-cheqd-to-the-agent"},"Adding the cheqd to the Agent"),(0,a.kt)("p",null,"After installing the dependencies, we can register the cheqd Module on the agent by adding the below code snippet to the agent constructor."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-cheqd.ts section-1",showLineNumbers:!0,"set-up-cheqd.ts":!0,"section-1":!0},"")),(0,a.kt)("p",null,"The cosmosPayerSeed can be a 32-bit seed value or a mnemonic, which can be managed using Keplr wallet which can be installed on a mobile or as a browser extension in chrome or safari which allows user's to create accounts, exchange tokens etc. To setup keplr wallet for cheqd follow this ",(0,a.kt)("a",{parentName:"p",href:"https://learn.cheqd.io/getting-set-up-on-cheqd/cheqd-supported-wallets/keplr-wallet"},"tutorial")),(0,a.kt)(s.Z,{mdxType:"Tabs"},(0,a.kt)(o.Z,{label:"Tutorials",value:"tab1",mdxType:"TabItem"},(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/guides/0.5/tutorials/cheqd/"},"Cheqd DID Module")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/guides/0.5/tutorials/registering-schema-and-credential-definition"},"Register Schema and Credential Definition")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/guides/0.5/tutorials/issue-a-credential"},"Issue a Credential"))))))}h.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[1350],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(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||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,s=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=c(n),m=a,h=d["".concat(l,".").concat(m)]||d[m]||p[m]||s;return n?r.createElement(h,o(o({ref:t},u),{},{components:n})):r.createElement(h,o({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var s=n.length,o=new Array(s);o[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:a,o[1]=i;for(var c=2;c{n.d(t,{Z:()=>g});var r=n(7294),a=n(6010),s=n(3438),o=n(9960),i=n(3919),l=n(5999);const c={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){let{href:t,children:n}=e;return r.createElement(o.Z,{href:t,className:(0,a.Z)("card padding--lg",c.cardContainer)},n)}function d(e){let{href:t,icon:n,title:s,description:o}=e;return r.createElement(u,{href:t},r.createElement("h2",{className:(0,a.Z)("text--truncate",c.cardTitle),title:s},n," ",s),o&&r.createElement("p",{className:(0,a.Z)("text--truncate",c.cardDescription),title:o},o))}function p(e){let{item:t}=e;const n=(0,s.Wl)(t);return n?r.createElement(d,{href:n,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function m(e){let{item:t}=e;const n=(0,i.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",a=(0,s.xz)(t.docId??void 0);return r.createElement(d,{href:t.href,icon:n,title:t.label,description:a?.description})}function h(e){let{item:t}=e;switch(t.type){case"link":return r.createElement(m,{item:t});case"category":return r.createElement(p,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function f(e){let{className:t}=e;const n=(0,s.jA)();return r.createElement(g,{items:n.items,className:t})}function g(e){const{items:t,className:n}=e;if(!t)return r.createElement(f,e);const o=(0,s.MN)(t);return r.createElement("section",{className:(0,a.Z)("row",n)},o.map(((e,t)=>r.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},r.createElement(h,{item:e})))))}},5162:(e,t,n)=>{n.d(t,{Z:()=>o});var r=n(7294),a=n(6010);const s={tabItem:"tabItem_Ymn6"};function o(e){let{children:t,hidden:n,className:o}=e;return r.createElement("div",{role:"tabpanel",className:(0,a.Z)(s.tabItem,o),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>w});var r=n(7462),a=n(7294),s=n(6010),o=n(2466),i=n(6550),l=n(1980),c=n(7392),u=n(12);function d(e){return function(e){return a.Children.map(e,(e=>{if((0,a.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:a}}=e;return{value:t,label:n,attributes:r,default:a}}))}function p(e){const{values:t,children:n}=e;return(0,a.useMemo)((()=>{const e=t??d(n);return function(e){const t=(0,c.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function h(e){let{queryString:t=!1,groupId:n}=e;const r=(0,i.k6)(),s=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l._X)(s),(0,a.useCallback)((e=>{if(!s)return;const t=new URLSearchParams(r.location.search);t.set(s,e),r.replace({...r.location,search:t.toString()})}),[s,r])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,s=p(e),[o,i]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:s}))),[l,c]=h({queryString:n,groupId:r}),[d,f]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,s]=(0,u.Nk)(n);return[r,(0,a.useCallback)((e=>{n&&s.set(e)}),[n,s])]}({groupId:r}),g=(()=>{const e=l??d;return m({value:e,tabValues:s})?e:null})();(0,a.useLayoutEffect)((()=>{g&&i(g)}),[g]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!m({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);i(e),c(e),f(e)}),[c,f,s]),tabValues:s}}var g=n(2389);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function k(e){let{className:t,block:n,selectedValue:i,selectValue:l,tabValues:c}=e;const u=[],{blockElementScrollPositionUntilNextRender:d}=(0,o.o5)(),p=e=>{const t=e.currentTarget,n=u.indexOf(t),r=c[n].value;r!==i&&(d(t),l(r))},m=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const n=u.indexOf(e.currentTarget)+1;t=u[n]??u[0];break}case"ArrowLeft":{const n=u.indexOf(e.currentTarget)-1;t=u[n]??u[u.length-1];break}}t?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.Z)("tabs",{"tabs--block":n},t)},c.map((e=>{let{value:t,label:n,attributes:o}=e;return a.createElement("li",(0,r.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:e=>u.push(e),onKeyDown:m,onClick:p},o,{className:(0,s.Z)("tabs__item",b.tabItem,o?.className,{"tabs__item--active":i===t})}),n??t)})))}function v(e){let{lazy:t,children:n,selectedValue:r}=e;if(n=Array.isArray(n)?n:[n],t){const e=n.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},n.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==r}))))}function y(e){const t=f(e);return a.createElement("div",{className:(0,s.Z)("tabs-container",b.tabList)},a.createElement(k,(0,r.Z)({},e,t)),a.createElement(v,(0,r.Z)({},e,t)))}function w(e){const t=(0,g.Z)();return a.createElement(y,(0,r.Z)({key:String(t)},e))}},7114:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var r=n(7462),a=(n(7294),n(3905)),s=n(4866),o=n(5162);n(2991);const i={},l="cheqd",c={unversionedId:"getting-started/set-up/cheqd/index",id:"getting-started/set-up/cheqd/index",title:"cheqd",description:"cheqd is a blockchain network, built in the Cosmos ecosystem for Self-Sovereign Identity (SSI). The cheqd Network leverages the cheqd DID method and enables DID-Linked Resources to be written to the network, associated with a DID and controlled using the verification methods in the DID Document.",source:"@site/guides/getting-started/set-up/cheqd/index.md",sourceDirName:"getting-started/set-up/cheqd",slug:"/getting-started/set-up/cheqd/",permalink:"/guides/0.5/getting-started/set-up/cheqd/",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Indy VDR",permalink:"/guides/0.5/getting-started/set-up/indy-vdr"},next:{title:"Concepts",permalink:"/guides/0.5/concepts/"}},u={},d=[{value:"Installing cheqd",id:"installing-cheqd",level:3},{value:"React Native",id:"react-native",level:4},{value:"Adding the cheqd to the Agent",id:"adding-the-cheqd-to-the-agent",level:3},{value:"Tutorials",id:"tutorials",level:3}],p={toc:d},m="wrapper";function h(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"cheqd"},"cheqd"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/cheqd/sdk"},"cheqd")," is a blockchain network, built in the Cosmos ecosystem for Self-Sovereign Identity (SSI). The cheqd Network leverages the ",(0,a.kt)("a",{parentName:"p",href:"https://docs.cheqd.io/identity/architecture/adr-list/adr-001-cheqd-did-method"},"cheqd DID method")," and enables ",(0,a.kt)("a",{parentName:"p",href:"https://docs.cheqd.io/identity/architecture/adr-list/adr-002-did-linked-resources"},"DID-Linked Resources")," to be written to the network, associated with a DID and controlled using the verification methods in the DID Document."),(0,a.kt)("p",null,"Through this approach, the cheqd Network is able to natively support the ",(0,a.kt)("a",{parentName:"p",href:"https://hyperledger.github.io/anoncreds-spec/"},"Ledger Agnostic AnonCreds Specification (v1.0)")," through its ",(0,a.kt)("a",{parentName:"p",href:"https://docs.cheqd.io/identity/guides/anoncreds"},"AnonCreds Object Method")," (as well as VC-JWT and JSON-LD)."),(0,a.kt)("p",null,"cheqd also has a dedicated token, $CHEQ, used for identity writes to the network, voting in a decentralised governance framework as well as for various payment flows between verifiers, holders and issuers of Verifiable Credentials."),(0,a.kt)("h3",{id:"installing-cheqd"},"Installing cheqd"),(0,a.kt)("p",null,"When using Credo with the cheqd, there's a few extra dependencies that need to be installed. We need to install the ",(0,a.kt)("inlineCode",{parentName:"p"},"@credo-ts/cheqd")," package, which implements the needed interfaces for the agent."),(0,a.kt)("h4",{id:"react-native"},"React Native"),(0,a.kt)("p",null,"To enable react-native support we need to follow the steps below"),(0,a.kt)("p",null,"In the package.json file add the below code snippet, which replaces the cosmjs dependencies with he cosmjs-rn packages"),(0,a.kt)(s.Z,{mdxType:"Tabs"},(0,a.kt)(o.Z,{label:"NPM",value:"tab1",mdxType:"TabItem"},(0,a.kt)("p",null,"Using ",(0,a.kt)("a",{parentName:"p",href:"https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides"},"NPM ",(0,a.kt)("inlineCode",{parentName:"a"},"overrides"))," we can point the ",(0,a.kt)("inlineCode",{parentName:"p"},"cosmjs")," packages to ",(0,a.kt)("inlineCode",{parentName:"p"},"cosmjs-rn"),"."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "overrides": {\n "@cosmjs/amino": "npm:@cosmjs-rn/amino@^0.27.1",\n "@cosmjs/encoding": "npm:@cosmjs-rn/encoding@^0.27.1",\n "@cosmjs/math": "npm:@cosmjs-rn/math@^0.27.1",\n "@cosmjs/stargate": "npm:@cosmjs-rn/stargate@^0.27.1",\n "@cosmjs/tendermint-rpc": "npm:@cosmjs-rn/tendermint-rpc@^0.27.1",\n "@cosmjs/utils": "npm:@cosmjs-rn/utils@^0.27.1",\n "@cosmjs/proto-signing": "npm:@cosmjs-rn/proto-signing@^0.27.1",\n "@cosmjs/crypto": "npm:@cosmjs-rn/crypto@^0.27.1"\n }\n}\n'))),(0,a.kt)(o.Z,{label:"Yarn",value:"tab2",mdxType:"TabItem"},(0,a.kt)("p",null,"Using ",(0,a.kt)("a",{parentName:"p",href:"https://classic.yarnpkg.com/lang/en/docs/selective-version-resolutions/"},"Yarn ",(0,a.kt)("inlineCode",{parentName:"a"},"resolutions"))," we can point the ",(0,a.kt)("inlineCode",{parentName:"p"},"cosmjs")," packages to ",(0,a.kt)("inlineCode",{parentName:"p"},"cosmjs-rn"),"."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "resolutions": {\n "@cosmjs/amino": "npm:@cosmjs-rn/amino@^0.27.1",\n "@cosmjs/encoding": "npm:@cosmjs-rn/encoding@^0.27.1",\n "@cosmjs/math": "npm:@cosmjs-rn/math@^0.27.1",\n "@cosmjs/stargate": "npm:@cosmjs-rn/stargate@^0.27.1",\n "@cosmjs/tendermint-rpc": "npm:@cosmjs-rn/tendermint-rpc@^0.27.1",\n "@cosmjs/utils": "npm:@cosmjs-rn/utils@^0.27.1",\n "@cosmjs/proto-signing": "npm:@cosmjs-rn/proto-signing@^0.27.1",\n "@cosmjs/crypto": "npm:@cosmjs-rn/crypto@^0.27.1"\n }\n}\n')))),(0,a.kt)("p",null,"Following that we need to add a buffer polyfill"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"yarn add buffer\n")),(0,a.kt)("p",null,"create a shim.js file with the below code snippet"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-typescript"},"import { Buffer } from 'buffer'\nglobal.Buffer = Buffer\n")),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"import shim.js")," file into your file where the App is imported"),(0,a.kt)("h3",{id:"adding-the-cheqd-to-the-agent"},"Adding the cheqd to the Agent"),(0,a.kt)("p",null,"After installing the dependencies, we can register the cheqd Module on the agent by adding the below code snippet to the agent constructor."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-cheqd.ts section-1",showLineNumbers:!0,"set-up-cheqd.ts":!0,"section-1":!0},"")),(0,a.kt)("p",null,"The cosmosPayerSeed can be a 32-bit seed value or a mnemonic, which can be managed using Keplr wallet which can be installed on a mobile or as a browser extension in chrome or safari which allows user's to create accounts, exchange tokens etc. To setup keplr wallet for cheqd follow this ",(0,a.kt)("a",{parentName:"p",href:"https://learn.cheqd.io/getting-set-up-on-cheqd/cheqd-supported-wallets/keplr-wallet"},"tutorial")),(0,a.kt)(s.Z,{mdxType:"Tabs"},(0,a.kt)(o.Z,{label:"Tutorials",value:"tab1",mdxType:"TabItem"},(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/guides/0.5/tutorials/cheqd/"},"Cheqd DID Module")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/guides/0.5/tutorials/registering-schema-and-credential-definition"},"Register Schema and Credential Definition")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/guides/0.5/tutorials/issue-a-credential"},"Issue a Credential"))))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0ecb752f.c99828b6.js b/assets/js/0ecb752f.50e94dea.js similarity index 63% rename from assets/js/0ecb752f.c99828b6.js rename to assets/js/0ecb752f.50e94dea.js index 8df5edc3..e88aaab8 100644 --- a/assets/js/0ecb752f.c99828b6.js +++ b/assets/js/0ecb752f.50e94dea.js @@ -1 +1 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[7824],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var d=n.createContext({}),l=function(e){var t=n.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=l(e.components);return n.createElement(d.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,d=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=l(a),h=r,m=c["".concat(d,".").concat(h)]||c[h]||u[h]||i;return a?n.createElement(m,o(o({ref:t},p),{},{components:a})):n.createElement(m,o({ref:t},p))}));function m(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=h;var s={};for(var d in t)hasOwnProperty.call(t,d)&&(s[d]=t[d]);s.originalType=e,s[c]="string"==typeof e?e:r,o[1]=s;for(var l=2;l{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var n=a(7462),r=(a(7294),a(3905));const i={},o="Migrating from an Indy SDK Wallet to Aries Askar",s={unversionedId:"updating/update-indy-sdk-to-askar",id:"updating/update-indy-sdk-to-askar",title:"Migrating from an Indy SDK Wallet to Aries Askar",description:"This documentation explains the process of migrating your Indy SDK wallet to Aries Askar.",source:"@site/guides/updating/update-indy-sdk-to-askar.md",sourceDirName:"updating",slug:"/updating/update-indy-sdk-to-askar",permalink:"/guides/0.5/updating/update-indy-sdk-to-askar",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Update Assistant",permalink:"/guides/0.5/updating/update-assistant"},next:{title:"Migrating from Credo 0.1.0 to 0.2.x",permalink:"/guides/0.5/updating/versions/0.1-to-0.2"}},d={},l=[{value:"What does the migration do internally?",id:"what-does-the-migration-do-internally",level:2},{value:"Create a backup",id:"create-a-backup",level:3},{value:"Migrate the database to an Aries Askar structure",id:"migrate-the-database-to-an-aries-askar-structure",level:3},{value:"Try to open the wallet in the new Aries Askar structure",id:"try-to-open-the-wallet-in-the-new-aries-askar-structure",level:3},{value:"Update the keys",id:"update-the-keys",level:3},{value:"Update the DIDs",id:"update-the-dids",level:3},{value:"Update the credential definitions",id:"update-the-credential-definitions",level:3},{value:"Update the link secret(s) (master secret)",id:"update-the-link-secrets-master-secret",level:3},{value:"Update the credentials",id:"update-the-credentials",level:3},{value:"All the other records",id:"all-the-other-records",level:3},{value:"How to update",id:"how-to-update",level:2},{value:"add the required dependencies",id:"add-the-required-dependencies",level:3},{value:"Getting the database path",id:"getting-the-database-path",level:3},{value:"Android",id:"android",level:4},{value:"iOS",id:"ios",level:4}],p={toc:l},c="wrapper";function u(e){let{components:t,...a}=e;return(0,r.kt)(c,(0,n.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"migrating-from-an-indy-sdk-wallet-to-aries-askar"},"Migrating from an Indy SDK Wallet to Aries Askar"),(0,r.kt)("p",null,"This documentation explains the process of migrating your Indy SDK wallet to ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/aries-askar"},"Aries Askar"),"."),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"While the migration script technically works on node.js, it is strongly advised not to use it, yet. The migration of issuer records (such as Schemas and Credential Definitions) is not implemented yet. When a credential definition is detected it will revert the migration process and no harm is done.")),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"Postgres is not supported. If you are using postgres with Indy SDK and need to update to Aries Askar, please open an issue on ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/openwallet-foundation/credo-ts"},"GitHub"),".")),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"The migration script is supported to run on 0.3.x before migrating from 0.3.x to 0.4.x. Please refer to ",(0,r.kt)("a",{parentName:"p",href:"/guides/0.5/updating/versions/0.3-to-0.4"},"Migrating from Credo 0.3.x to 0.4.x")," to get to 0.4.x afterwards."),(0,r.kt)("p",{parentName:"admonition"},"It is important to note that this script must be ran before you update from 0.3.x to 0.4.x.")),(0,r.kt)("h2",{id:"what-does-the-migration-do-internally"},"What does the migration do internally?"),(0,r.kt)("p",null,"The migration script does the following to make sure everything is migrated properly, and if anything goes wrong, it will revert back to a working state."),(0,r.kt)("h3",{id:"create-a-backup"},"Create a backup"),(0,r.kt)("p",null,"Because undefined behavior might occur, we create a backup in the new ",(0,r.kt)("inlineCode",{parentName:"p"},"tmp")," directory from Credo. if some error occurs, it will be reverted back to the backed-up state and if no error occurs, it will delete the backup from the temporary directory."),(0,r.kt)("h3",{id:"migrate-the-database-to-an-aries-askar-structure"},"Migrate the database to an Aries Askar structure"),(0,r.kt)("p",null,"The Indy-sdk and Aries Askar have different database structures. So first of all we need to change some table names, decrypt all the items with the old Indy keys, encrypt the items with the new Aries Askar keys and store them inside the new structure."),(0,r.kt)("h3",{id:"try-to-open-the-wallet-in-the-new-aries-askar-structure"},"Try to open the wallet in the new Aries Askar structure"),(0,r.kt)("p",null,"When the wallet is correctly transformed, the wallet will be attempted to be opened."),(0,r.kt)("h3",{id:"update-the-keys"},"Update the keys"),(0,r.kt)("p",null,"Aries Askar has a specific way to store keys and every key, defined by the category of ",(0,r.kt)("inlineCode",{parentName:"p"},"Indy::Key")," will be migrated."),(0,r.kt)("h3",{id:"update-the-dids"},"Update the DIDs"),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"This update script does not transform did records. This is fine for something like ",(0,r.kt)("inlineCode",{parentName:"p"},"did:peer"),", but will cause issues with ",(0,r.kt)("inlineCode",{parentName:"p"},"indy")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"sov")," DIDs. For more information, please check out the ",(0,r.kt)("a",{parentName:"p",href:"/guides/0.5/updating/versions/0.3-to-0.4#removal-of-publicdidseed-and-publicdid"},"Migrating from Credo 0.3.x to 0.4.x"))),(0,r.kt)("h3",{id:"update-the-credential-definitions"},"Update the credential definitions"),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"Updating of credential definitions is not yet supported. This is why it is strongly advised not to run this script in a node.js environment.")),(0,r.kt)("h3",{id:"update-the-link-secrets-master-secret"},"Update the link secret(s) (master secret)"),(0,r.kt)("p",null,"The link secrets, identified by the category ",(0,r.kt)("inlineCode",{parentName:"p"},"Indy::MasterSecret"),", are updated next. They are stored inside a new ",(0,r.kt)("inlineCode",{parentName:"p"},"AnonCredsLinkSecretRecord"),"."),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"Since we have to set a default link secret, some additional logic is added to detect this. You can either supply a ",(0,r.kt)("inlineCode",{parentName:"p"},"defaultLinkSercetId")," as a constructor parameter or it will be based on your ",(0,r.kt)("inlineCode",{parentName:"p"},"walletId"),"."),(0,r.kt)("p",{parentName:"admonition"},"If there is no Indy record with the ",(0,r.kt)("inlineCode",{parentName:"p"},"defaultLinkSecretId")," or the ",(0,r.kt)("inlineCode",{parentName:"p"},"walletId"),", an error will be thrown and the migration will be restored.")),(0,r.kt)("h3",{id:"update-the-credentials"},"Update the credentials"),(0,r.kt)("p",null,"The credentials, identified by the category ",(0,r.kt)("inlineCode",{parentName:"p"},"Indy::Credential")," are updated last. They are stored in the new ",(0,r.kt)("inlineCode",{parentName:"p"},"AnonCredsCredentialRecord")," as a one-to-one copy. This means that they now support more tags and will make querying a lot easier."),(0,r.kt)("h3",{id:"all-the-other-records"},"All the other records"),(0,r.kt)("p",null,"All the other records will be transferred without any updates as they are not Indy specific."),(0,r.kt)("h2",{id:"how-to-update"},"How to update"),(0,r.kt)("p",null,"Updating does not require a lot of code, but must be done with caution."),(0,r.kt)("p",null,"It is very important to note that the migration script only has to be run once. If it runs for a second time, it will error saying that the database is already migrated. Also, when the migration is finished, it is common practice to store this state in your persistent app storage. This script does not provide a way to detect if an update has happened, so storing this value will prevent the script from running every time. For more information regarding this topic, please check out ",(0,r.kt)("a",{parentName:"p",href:"/guides/0.5/updating/update-assistant#storing-the-agent-storage-version-outside-of-the-agent-storage"},"Update Assistant"),"."),(0,r.kt)("h3",{id:"add-the-required-dependencies"},"add the required dependencies"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"yarn add @hyperledger/aries-askar-react-native @aries-framework/indy-sdk-to-askar-migration react-native-fs\n")),(0,r.kt)("p",null,"Below is the minimal code required for the migration to work. It is recommended to turn the logger on as it gives a lot of information regarding the migration."),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"The agent is not allowed to be initialized to run this script. This makes sure nothing else happens during the migration.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript"},"import { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { IndySdkToAskarMigrationUpdater } from '@aries-framework/indy-sdk-to-askar-migration'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nconst oldAgent = new Agent({\n config: {\n /* ... */\n },\n modules: {\n ariesAskar: new AskarModule({\n ariesAskar,\n }),\n },\n dependencies: agentDependencies,\n})\n\nconst dbPath = '' // see section below\n\nconst updater = await IndySdkToAskarMigrationUpdater.initialize({ dbPath, agent })\nawait updater.update()\n")),(0,r.kt)("h3",{id:"getting-the-database-path"},"Getting the database path"),(0,r.kt)("h4",{id:"android"},"Android"),(0,r.kt)("p",null,"On android, the database is commonly located under the ",(0,r.kt)("inlineCode",{parentName:"p"},"ExternalDirectoryPath"),"."),(0,r.kt)("p",null,"If you did not follow the default indy-sdk for React Native setup, your path might differ. Check out ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-sdk-react-native#5-load-indy-library"},"step 5 of the Android setup for Indy SDK React Native")," for the default behavior."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript"},"import fs from 'react-native-fs'\n\nconst base = fs.ExternalDirectoryPath\nconst indyClient = '.indy_client'\nconst wallet = 'wallet'\nconst walletId = agent.config.walletConfig.id\nconst file = 'sqlite.db'\n\nconst dbPath = `${base}/${indyClient}/${wallet}/${walletId}/${file}`\n")),(0,r.kt)("h4",{id:"ios"},"iOS"),(0,r.kt)("p",null,"On iOS, the database is commonly located under the ",(0,r.kt)("inlineCode",{parentName:"p"},"DocumentDirectoryPath"),"."),(0,r.kt)("p",null,"For iOS this can only change if your phone does not have the ",(0,r.kt)("inlineCode",{parentName:"p"},"HOME")," environment variable set. This is not usual behavior, and if ",(0,r.kt)("inlineCode",{parentName:"p"},"HOME")," is not set, the ",(0,r.kt)("inlineCode",{parentName:"p"},"base")," in the code section below will be ",(0,r.kt)("inlineCode",{parentName:"p"},"/home/indy/Documents"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript"},"import fs from 'react-native-fs'\n\nconst base = fs.DocumentDirectoryPath\nconst indyClient = '.indy_client'\nconst wallet = 'wallet'\nconst walletId = agent.config.walletConfig.id\nconst file = 'sqlite.db'\n\nconst dbPath = `${base}/${indyClient}/${wallet}/${walletId}/${file}`\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[7824],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});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 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 o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var d=a.createContext({}),l=function(e){var t=a.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=l(e.components);return a.createElement(d.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,d=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=l(n),h=r,m=c["".concat(d,".").concat(h)]||c[h]||u[h]||i;return n?a.createElement(m,o(o({ref:t},p),{},{components:n})):a.createElement(m,o({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=h;var s={};for(var d in t)hasOwnProperty.call(t,d)&&(s[d]=t[d]);s.originalType=e,s[c]="string"==typeof e?e:r,o[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var a=n(7462),r=(n(7294),n(3905));const i={},o="Migrating from an Indy SDK Wallet to Aries Askar",s={unversionedId:"updating/update-indy-sdk-to-askar",id:"updating/update-indy-sdk-to-askar",title:"Migrating from an Indy SDK Wallet to Aries Askar",description:"This documentation explains the process of migrating your Indy SDK wallet to Aries Askar.",source:"@site/guides/updating/update-indy-sdk-to-askar.md",sourceDirName:"updating",slug:"/updating/update-indy-sdk-to-askar",permalink:"/guides/0.5/updating/update-indy-sdk-to-askar",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Update Assistant",permalink:"/guides/0.5/updating/update-assistant"},next:{title:"Migrating from Credo 0.1.0 to 0.2.x",permalink:"/guides/0.5/updating/versions/0.1-to-0.2"}},d={},l=[{value:"What does the migration do internally?",id:"what-does-the-migration-do-internally",level:2},{value:"Create a backup",id:"create-a-backup",level:3},{value:"Migrate the database to an Aries Askar structure",id:"migrate-the-database-to-an-aries-askar-structure",level:3},{value:"Try to open the wallet in the new Aries Askar structure",id:"try-to-open-the-wallet-in-the-new-aries-askar-structure",level:3},{value:"Update the keys",id:"update-the-keys",level:3},{value:"Update the DIDs",id:"update-the-dids",level:3},{value:"Update the credential definitions",id:"update-the-credential-definitions",level:3},{value:"Update the link secret(s) (master secret)",id:"update-the-link-secrets-master-secret",level:3},{value:"Update the credentials",id:"update-the-credentials",level:3},{value:"All the other records",id:"all-the-other-records",level:3},{value:"How to update",id:"how-to-update",level:2},{value:"add the required dependencies",id:"add-the-required-dependencies",level:3},{value:"Getting the database path",id:"getting-the-database-path",level:3},{value:"Android",id:"android",level:4},{value:"iOS",id:"ios",level:4}],p={toc:l},c="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"migrating-from-an-indy-sdk-wallet-to-aries-askar"},"Migrating from an Indy SDK Wallet to Aries Askar"),(0,r.kt)("p",null,"This documentation explains the process of migrating your Indy SDK wallet to ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/aries-askar"},"Aries Askar"),"."),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"While the migration script technically works on node.js, it is strongly advised not to use it, yet. The migration of issuer records (such as Schemas and Credential Definitions) is not implemented yet. When a credential definition is detected it will revert the migration process and no harm is done.")),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"Postgres is not supported. If you are using postgres with Indy SDK and need to update to Aries Askar, please open an issue on ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/openwallet-foundation/credo-ts"},"GitHub"),".")),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"The migration script is supported to run on 0.3.x before migrating from 0.3.x to 0.4.x. Please refer to ",(0,r.kt)("a",{parentName:"p",href:"/guides/0.5/updating/versions/0.3-to-0.4"},"Migrating from Credo 0.3.x to 0.4.x")," to get to 0.4.x afterwards."),(0,r.kt)("p",{parentName:"admonition"},"It is important to note that this script must be ran before you update from 0.3.x to 0.4.x.")),(0,r.kt)("h2",{id:"what-does-the-migration-do-internally"},"What does the migration do internally?"),(0,r.kt)("p",null,"The migration script does the following to make sure everything is migrated properly, and if anything goes wrong, it will revert back to a working state."),(0,r.kt)("h3",{id:"create-a-backup"},"Create a backup"),(0,r.kt)("p",null,"Because undefined behavior might occur, we create a backup in the new ",(0,r.kt)("inlineCode",{parentName:"p"},"tmp")," directory from Credo. if some error occurs, it will be reverted back to the backed-up state and if no error occurs, it will delete the backup from the temporary directory."),(0,r.kt)("h3",{id:"migrate-the-database-to-an-aries-askar-structure"},"Migrate the database to an Aries Askar structure"),(0,r.kt)("p",null,"The Indy-sdk and Aries Askar have different database structures. So first of all we need to change some table names, decrypt all the items with the old Indy keys, encrypt the items with the new Aries Askar keys and store them inside the new structure."),(0,r.kt)("h3",{id:"try-to-open-the-wallet-in-the-new-aries-askar-structure"},"Try to open the wallet in the new Aries Askar structure"),(0,r.kt)("p",null,"When the wallet is correctly transformed, the wallet will be attempted to be opened."),(0,r.kt)("h3",{id:"update-the-keys"},"Update the keys"),(0,r.kt)("p",null,"Aries Askar has a specific way to store keys and every key, defined by the category of ",(0,r.kt)("inlineCode",{parentName:"p"},"Indy::Key")," will be migrated."),(0,r.kt)("h3",{id:"update-the-dids"},"Update the DIDs"),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"This update script does not transform did records. This is fine for something like ",(0,r.kt)("inlineCode",{parentName:"p"},"did:peer"),", but will cause issues with ",(0,r.kt)("inlineCode",{parentName:"p"},"indy")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"sov")," DIDs. For more information, please check out the ",(0,r.kt)("a",{parentName:"p",href:"/guides/0.5/updating/versions/0.3-to-0.4#removal-of-publicdidseed-and-publicdid"},"Migrating from Credo 0.3.x to 0.4.x"))),(0,r.kt)("h3",{id:"update-the-credential-definitions"},"Update the credential definitions"),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"Updating of credential definitions is not yet supported. This is why it is strongly advised not to run this script in a node.js environment.")),(0,r.kt)("h3",{id:"update-the-link-secrets-master-secret"},"Update the link secret(s) (master secret)"),(0,r.kt)("p",null,"The link secrets, identified by the category ",(0,r.kt)("inlineCode",{parentName:"p"},"Indy::MasterSecret"),", are updated next. They are stored inside a new ",(0,r.kt)("inlineCode",{parentName:"p"},"AnonCredsLinkSecretRecord"),"."),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"Since we have to set a default link secret, some additional logic is added to detect this. You can either supply a ",(0,r.kt)("inlineCode",{parentName:"p"},"defaultLinkSercetId")," as a constructor parameter or it will be based on your ",(0,r.kt)("inlineCode",{parentName:"p"},"walletId"),"."),(0,r.kt)("p",{parentName:"admonition"},"If there is no Indy record with the ",(0,r.kt)("inlineCode",{parentName:"p"},"defaultLinkSecretId")," or the ",(0,r.kt)("inlineCode",{parentName:"p"},"walletId"),", an error will be thrown and the migration will be restored.")),(0,r.kt)("h3",{id:"update-the-credentials"},"Update the credentials"),(0,r.kt)("p",null,"The credentials, identified by the category ",(0,r.kt)("inlineCode",{parentName:"p"},"Indy::Credential")," are updated last. They are stored in the new ",(0,r.kt)("inlineCode",{parentName:"p"},"AnonCredsCredentialRecord")," as a one-to-one copy. This means that they now support more tags and will make querying a lot easier."),(0,r.kt)("h3",{id:"all-the-other-records"},"All the other records"),(0,r.kt)("p",null,"All the other records will be transferred without any updates as they are not Indy specific."),(0,r.kt)("h2",{id:"how-to-update"},"How to update"),(0,r.kt)("p",null,"Updating does not require a lot of code, but must be done with caution."),(0,r.kt)("p",null,"It is very important to note that the migration script only has to be run once. If it runs for a second time, it will error saying that the database is already migrated. Also, when the migration is finished, it is common practice to store this state in your persistent app storage. This script does not provide a way to detect if an update has happened, so storing this value will prevent the script from running every time. For more information regarding this topic, please check out ",(0,r.kt)("a",{parentName:"p",href:"/guides/0.5/updating/update-assistant#storing-the-agent-storage-version-outside-of-the-agent-storage"},"Update Assistant"),"."),(0,r.kt)("h3",{id:"add-the-required-dependencies"},"add the required dependencies"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"yarn add @hyperledger/aries-askar-react-native @credo-ts/indy-sdk-to-askar-migration react-native-fs\n")),(0,r.kt)("p",null,"Below is the minimal code required for the migration to work. It is recommended to turn the logger on as it gives a lot of information regarding the migration."),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"The agent is not allowed to be initialized to run this script. This makes sure nothing else happens during the migration.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript"},"import { agentDependencies } from '@credo-ts/react-native'\nimport { AskarModule } from '@credo-ts/askar'\nimport { IndySdkToAskarMigrationUpdater } from '@credo-ts/indy-sdk-to-askar-migration'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nconst oldAgent = new Agent({\n config: {\n /* ... */\n },\n modules: {\n ariesAskar: new AskarModule({\n ariesAskar,\n }),\n },\n dependencies: agentDependencies,\n})\n\nconst dbPath = '' // see section below\n\nconst updater = await IndySdkToAskarMigrationUpdater.initialize({ dbPath, agent })\nawait updater.update()\n")),(0,r.kt)("h3",{id:"getting-the-database-path"},"Getting the database path"),(0,r.kt)("h4",{id:"android"},"Android"),(0,r.kt)("p",null,"On android, the database is commonly located under the ",(0,r.kt)("inlineCode",{parentName:"p"},"ExternalDirectoryPath"),"."),(0,r.kt)("p",null,"If you did not follow the default indy-sdk for React Native setup, your path might differ. Check out ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-sdk-react-native#5-load-indy-library"},"step 5 of the Android setup for Indy SDK React Native")," for the default behavior."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript"},"import fs from 'react-native-fs'\n\nconst base = fs.ExternalDirectoryPath\nconst indyClient = '.indy_client'\nconst wallet = 'wallet'\nconst walletId = agent.config.walletConfig.id\nconst file = 'sqlite.db'\n\nconst dbPath = `${base}/${indyClient}/${wallet}/${walletId}/${file}`\n")),(0,r.kt)("h4",{id:"ios"},"iOS"),(0,r.kt)("p",null,"On iOS, the database is commonly located under the ",(0,r.kt)("inlineCode",{parentName:"p"},"DocumentDirectoryPath"),"."),(0,r.kt)("p",null,"For iOS this can only change if your phone does not have the ",(0,r.kt)("inlineCode",{parentName:"p"},"HOME")," environment variable set. This is not usual behavior, and if ",(0,r.kt)("inlineCode",{parentName:"p"},"HOME")," is not set, the ",(0,r.kt)("inlineCode",{parentName:"p"},"base")," in the code section below will be ",(0,r.kt)("inlineCode",{parentName:"p"},"/home/indy/Documents"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript"},"import fs from 'react-native-fs'\n\nconst base = fs.DocumentDirectoryPath\nconst indyClient = '.indy_client'\nconst wallet = 'wallet'\nconst walletId = agent.config.walletConfig.id\nconst file = 'sqlite.db'\n\nconst dbPath = `${base}/${indyClient}/${wallet}/${walletId}/${file}`\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/17896441.500a5dd6.js b/assets/js/17896441.c43c2ee8.js similarity index 57% rename from assets/js/17896441.500a5dd6.js rename to assets/js/17896441.c43c2ee8.js index 3b036b0a..4b0955f1 100644 --- a/assets/js/17896441.500a5dd6.js +++ b/assets/js/17896441.c43c2ee8.js @@ -1 +1 @@ -(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[7918],{7083:(n,e,t)=>{"use strict";t.d(e,{Z:()=>g});var o=t(7294),r=t(6010),i=t(5281),s=t(5999);const a={admonition:"admonition_WoCw",admonitionHeading:"admonitionHeading_TMsN",admonitionIcon:"admonitionIcon_Ibzs",admonitionContent:"admonitionContent_vXIg"};const d={note:{infimaClassName:"secondary",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))},label:o.createElement(s.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))},label:o.createElement(s.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))},label:o.createElement(s.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))},label:o.createElement(s.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 16 16"},o.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))},label:o.createElement(s.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")},holder:{infimaClassName:"holder",emoji:"\ud83d\uddc4",label:o.createElement(s.Z,{id:"theme.admonition.holder",description:"The default label used for the Caution admonition (:::holder)"},"holder")},issuer:{infimaClassName:"issuer",emoji:"\ud83d\udcc4",label:o.createElement(s.Z,{id:"theme.admonition.issuer",description:"The default label used for the Caution admonition (:::issuer)"},"issuer")},verifier:{infimaClassName:"verifier",emoji:"\ud83d\udc6e",label:o.createElement(s.Z,{id:"theme.admonition.verifier",description:"The default label used for the Verifier admonition (:::verifier)"},"verifier")},bob:{infimaClassName:"bob",emoji:"\ud83e\uddd4",label:o.createElement(s.Z,{id:"theme.admonition.bob",description:"The default label used for the Bob admonition (:::bob)"},"bob")},acme:{infimaClassName:"acme",emoji:"\ud83c\udfe2",label:o.createElement(s.Z,{id:"theme.admonition.acme",description:"The default label used for the acme admonition (:::acme)"},"acme")}},c={secondary:"note",important:"info",success:"tip",warning:"danger"};function l(n){const{mdxAdmonitionTitle:e,rest:t}=function(n){const e=o.Children.toArray(n),t=e.find((n=>o.isValidElement(n)&&"mdxAdmonitionTitle"===n.props?.mdxType)),r=o.createElement(o.Fragment,null,e.filter((n=>n!==t)));return{mdxAdmonitionTitle:t,rest:r}}(n.children);return{...n,title:n.title??e,children:t}}function g(n){const{children:e,type:t,title:s,icon:g}=l(n),u=function(n){const e=c[n]??n,t=d[e];return t||(console.warn(`No admonition config found for admonition type "${e}". Using Info as fallback.`),d.info)}(t),m=s??u.label,{iconComponent:p,emoji:f}=u,w=g??f??o.createElement(p,null);return o.createElement("div",{className:(0,r.Z)(i.k.common.admonition,i.k.common.admonitionType(n.type),"alert",`alert--${u.infimaClassName}`,`admonition-${u.infimaClassName}`,a.admonition)},o.createElement("div",{className:a.admonitionHeading},o.createElement("span",{className:a.admonitionIcon},w),m),o.createElement("div",{className:a.admonitionContent},e))}},1415:(n,e,t)=>{"use strict";t.d(e,{Z:()=>i});var o=t(7294),r=t(8397);function i(n){return o.createElement(o.Fragment,null,o.createElement(r.Z,n))}},8573:(n,e,t)=>{"use strict";t.d(e,{Z:()=>m});var o=t(7462),r=t(7294),i=t(2389),s=t(1170),a=t(2138),d=t(4477);const c=n=>n.split(" ").find((n=>n.match(/^section-/)))?.substr(8),l=(n,e)=>{const t=`start-section-${n}`,o=`end-section-${n}`,r=e.split("\n"),i=r.indexOf(r.find((n=>n.includes(t)))),s=r.indexOf(r.find((n=>n.includes(o))));return r.slice(i+1,s).join("\r\n")},g=n=>n.split(" ").find((n=>n.match(/.(js|ts)$/))),u=n=>n.split("\n").filter((n=>!n.match(/section-/))).join("\r\n");function m(n){let{children:e,...m}=n;const p=(0,i.Z)(),f=(0,d.E)(),w=function(n){return r.Children.toArray(n).some((n=>(0,r.isValidElement)(n)))?n:Array.isArray(n)?n.join(""):n}(e),y=f.version,h="string"==typeof w?a.Z:s.Z;if(!m.metastring)return r.createElement(h,(0,o.Z)({key:String(p)},m),w);let k;try{k=t(2502)(`./${y}/src/${g(m.metastring)}`).default}catch{}const b=c(m.metastring);let C;return k&&(C=b?l(b,k):u(k)),r.createElement(h,(0,o.Z)({key:String(p)},m),C||w)}},7058:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n InitConfig,\n ConnectionEventTypes,\n ConnectionStateChangedEvent,\n WsOutboundTransport,\n HttpOutboundTransport,\n DidExchangeState,\n OutOfBandRecord,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\n\n// start-section-1\nconst initializeBobAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label. It also sets the mediator invitation url,\n // because this is most likely required in a mobile environment.\n const config: InitConfig = {\n label: 'demo-agent-bob',\n walletConfig: {\n id: 'mainBob',\n key: 'demoagentbob00000000000000000000',\n },\n autoAcceptConnections: true,\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({ config, dependencies: agentDependencies })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-1\n\n// start-section-2\nconst initializeAcmeAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label.\n const config: InitConfig = {\n label: 'demo-agent-acme',\n walletConfig: {\n id: 'mainAcme',\n key: 'demoagentacme0000000000000000000',\n },\n autoAcceptConnections: true,\n endpoints: ['http://localhost:3001'],\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({ config, dependencies: agentDependencies })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-2\n\n// start-section-3\nconst createNewInvitation = async (agent: Agent) => {\n const outOfBandRecord = await agent.oob.createInvitation()\n\n return {\n invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),\n outOfBandRecord,\n }\n}\n// end-section-3\n\n// start-section-4\nconst createLegacyInvitation = async (agent: Agent) => {\n const { invitation } = await agent.oob.createLegacyInvitation()\n\n return invitation.toUrl({ domain: 'https://example.org' })\n}\n// end-section-4\n\n// start-section-5\nconst receiveInvitation = async (agent: Agent, invitationUrl: string) => {\n const { outOfBandRecord } = await agent.oob.receiveInvitationFromUrl(invitationUrl)\n\n return outOfBandRecord\n}\n// end-section-5\n\n// start-section-6\nconst setupConnectionListener = (agent: Agent, outOfBandRecord: OutOfBandRecord, cb: (...args: any) => void) => {\n agent.events.on(ConnectionEventTypes.ConnectionStateChanged, ({ payload }) => {\n if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return\n if (payload.connectionRecord.state === DidExchangeState.Completed) {\n // the connection is now ready for usage in other protocols!\n console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)\n\n // Custom business logic can be included here\n // In this example we can send a basic message to the connection, but\n // anything is possible\n cb()\n\n // We exit the flow\n process.exit(0)\n }\n })\n}\n\n// end-section-6\n\nconst run = async () => {\n console.log('Initializing Bob agent...')\n const bobAgent = await initializeBobAgent()\n console.log('Initializing Acme agent...')\n const acmeAgent = await initializeAcmeAgent()\n\n console.log('Creating the invitation as Acme...')\n const { outOfBandRecord, invitationUrl } = await createNewInvitation(acmeAgent)\n\n console.log('Listening for connection changes...')\n setupConnectionListener(acmeAgent, outOfBandRecord, () =>\n console.log('We now have an active connection to use in the following tutorials')\n )\n\n console.log('Accepting the invitation as Bob...')\n await receiveInvitation(bobAgent, invitationUrl)\n}\n\nexport default run\n\nvoid run()\n"},2151:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n InitConfig,\n Agent,\n WsOutboundTransport,\n HttpOutboundTransport,\n ConnectionEventTypes,\n ConnectionStateChangedEvent,\n DidExchangeState,\n AutoAcceptCredential,\n CredentialEventTypes,\n CredentialState,\n CredentialStateChangedEvent,\n OutOfBandRecord,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\nimport { Schema } from 'indy-sdk'\nimport fetch from 'node-fetch'\n\nconst getGenesisTransaction = async (url: string) => {\n // Legacy code has a small issue with the call-signature from node-fetch\n // @ts-ignore\n const response = await fetch(url)\n\n return await response.text()\n}\n\n// start-section-1\nconst initializeHolderAgent = async () => {\n const genesisTransactionsBCovrinTestNet = await getGenesisTransaction('http://test.bcovrin.vonx.io/genesis')\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label. It also sets the mediator invitation url,\n // because this is most likely required in a mobile environment.\n const config: InitConfig = {\n label: 'demo-agent-holder',\n walletConfig: {\n id: 'demo-agent-holder',\n key: 'demoagentholder00000000000000000',\n },\n indyLedgers: [\n {\n id: 'bcovrin-test-net',\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: genesisTransactionsBCovrinTestNet,\n },\n ],\n autoAcceptCredentials: AutoAcceptCredential.ContentApproved,\n autoAcceptConnections: true,\n endpoints: ['http://localhost:3002'],\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({ config, dependencies: agentDependencies })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-1\n\n// start-section-2\nconst initializeIssuerAgent = async () => {\n const genesisTransactionsBCovrinTestNet = await getGenesisTransaction('http://test.bcovrin.vonx.io/genesis')\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label.\n const config: InitConfig = {\n label: 'demo-agent-issuer',\n walletConfig: {\n id: 'demo-agent-issuer',\n key: 'demoagentissuer00000000000000000',\n },\n publicDidSeed: 'demoissuerdidseed000000000000000',\n indyLedgers: [\n {\n id: 'bcovrin-test-net',\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: genesisTransactionsBCovrinTestNet,\n },\n ],\n autoAcceptCredentials: AutoAcceptCredential.ContentApproved,\n autoAcceptConnections: true,\n endpoints: ['http://localhost:3001'],\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({ config, dependencies: agentDependencies })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-2\n\n// start-section-3\nconst registerSchema = async (issuer: Agent) =>\n issuer.ledger.registerSchema({ attributes: ['name', 'age'], name: 'Identity', version: '1.0' })\n// end-section-3\n\n// start-section-4\nconst registerCredentialDefinition = async (issuer: Agent, schema: Schema) =>\n issuer.ledger.registerCredentialDefinition({ schema, supportRevocation: false, tag: 'default' })\n// end-section-4\n\n// start-section-5\nconst setupCredentialListener = (holder: Agent) => {\n holder.events.on(CredentialEventTypes.CredentialStateChanged, async ({ payload }) => {\n switch (payload.credentialRecord.state) {\n case CredentialState.OfferReceived:\n console.log('received a credential')\n // custom logic here\n await holder.credentials.acceptOffer({ credentialRecordId: payload.credentialRecord.id })\n case CredentialState.Done:\n console.log(`Credential for credential id ${payload.credentialRecord.id} is accepted`)\n // For demo purposes we exit the program here.\n process.exit(0)\n }\n })\n}\n// end-section-5\n\n// start-section-6\nconst issueCredential = async (issuer: Agent, credentialDefinitionId: string, connectionId: string) =>\n issuer.credentials.offerCredential({\n protocolVersion: 'v1',\n connectionId,\n credentialFormats: {\n indy: {\n credentialDefinitionId,\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n })\n// end-section-6\n\nconst createNewInvitation = async (issuer: Agent) => {\n const outOfBandRecord = await issuer.oob.createInvitation()\n\n return {\n invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),\n outOfBandRecord,\n }\n}\n\nconst receiveInvitation = async (holder: Agent, invitationUrl: string) => {\n const { outOfBandRecord } = await holder.oob.receiveInvitationFromUrl(invitationUrl)\n\n return outOfBandRecord\n}\n\nconst setupConnectionListener = (\n issuer: Agent,\n outOfBandRecord: OutOfBandRecord,\n cb: (...args: any) => Promise\n) => {\n issuer.events.on(ConnectionEventTypes.ConnectionStateChanged, async ({ payload }) => {\n if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return\n if (payload.connectionRecord.state === DidExchangeState.Completed) {\n // the connection is now ready for usage in other protocols!\n console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)\n\n // Custom business logic can be included here\n // In this example we can send a basic message to the connection, but\n // anything is possible\n await cb(payload.connectionRecord.id)\n }\n })\n}\n\nconst flow = (issuer: Agent) => async (connectionId: string) => {\n console.log('Registering the schema...')\n const schema = await registerSchema(issuer)\n console.log('Registering the credential definition...')\n const credentialDefinition = await registerCredentialDefinition(issuer, schema)\n console.log('Issuing the credential...')\n await issueCredential(issuer, credentialDefinition.id, connectionId)\n}\n\nconst run = async () => {\n console.log('Initializing the holder...')\n const holder = await initializeHolderAgent()\n console.log('Initializing the issuer...')\n const issuer = await initializeIssuerAgent()\n\n console.log('Initializing the credential listener...')\n setupCredentialListener(holder)\n\n console.log('Initializing the connection...')\n const { outOfBandRecord, invitationUrl } = await createNewInvitation(issuer)\n setupConnectionListener(issuer, outOfBandRecord, flow(issuer))\n await receiveInvitation(holder, invitationUrl)\n}\n\nvoid run()\n"},3288:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\nimport { Agent, HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\n\n// start-section-1\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({ config, dependencies: agentDependencies })\n// end-section-1\n\n// start-section-2\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\n// end-section-2\n\n// start-section-3\nconst run = async () => {\n try {\n await agent.initialize()\n } catch (e) {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n }\n}\n// end-section-3\n\nvoid run()\n"},420:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\nimport { Agent, HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\n\n// start-section-1\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({ config, dependencies: agentDependencies })\n// end-section-1\n\n// start-section-2\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\nagent.registerInboundTransport(new HttpInboundTransport({ port: 3000 }))\n// end-section-2\n\n// start-section-3\nconst run = async () => {\n try {\n await agent.initialize()\n } catch (e) {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n }\n}\n// end-section-3\n\nvoid run()\n"},5343:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { AskarModule } from '@aries-framework/askar'\nimport {\n Agent,\n InitConfig,\n ConnectionEventTypes,\n ConnectionStateChangedEvent,\n WsOutboundTransport,\n HttpOutboundTransport,\n DidExchangeState,\n OutOfBandRecord,\n ConnectionsModule,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\n// start-section-1\nconst initializeBobAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label. It also sets the mediator invitation url,\n // because this is most likely required in a mobile environment.\n const config: InitConfig = {\n label: 'demo-agent-bob',\n walletConfig: {\n id: 'mainBob',\n key: 'demoagentbob00000000000000000000',\n },\n }\n\n // A new instance of an agent is created here\n // Askar can also be replaced by the indy-sdk if required\n const agent = new Agent({\n config,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n connections: new ConnectionsModule({ autoAcceptConnections: true }),\n },\n dependencies: agentDependencies,\n })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-1\n\n// start-section-2\nconst initializeAcmeAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label.\n const config: InitConfig = {\n label: 'demo-agent-acme',\n walletConfig: {\n id: 'mainAcme',\n key: 'demoagentacme0000000000000000000',\n },\n endpoints: ['http://localhost:3001'],\n }\n\n // A new instance of an agent is created here\n // Askar can also be replaced by the indy-sdk if required\n const agent = new Agent({\n config,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n connections: new ConnectionsModule({ autoAcceptConnections: true }),\n },\n dependencies: agentDependencies,\n })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-2\n\n// start-section-3\nconst createNewInvitation = async (agent: Agent) => {\n const outOfBandRecord = await agent.oob.createInvitation()\n\n return {\n invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),\n outOfBandRecord,\n }\n}\n// end-section-3\n\n// start-section-4\nconst createLegacyInvitation = async (agent: Agent) => {\n const { invitation } = await agent.oob.createLegacyInvitation()\n\n return invitation.toUrl({ domain: 'https://example.org' })\n}\n// end-section-4\n\n// start-section-5\nconst receiveInvitation = async (agent: Agent, invitationUrl: string) => {\n const { outOfBandRecord } = await agent.oob.receiveInvitationFromUrl(invitationUrl)\n\n return outOfBandRecord\n}\n// end-section-5\n\n// start-section-6\nconst setupConnectionListener = (agent: Agent, outOfBandRecord: OutOfBandRecord, cb: (...args: any) => void) => {\n agent.events.on(ConnectionEventTypes.ConnectionStateChanged, ({ payload }) => {\n if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return\n if (payload.connectionRecord.state === DidExchangeState.Completed) {\n // the connection is now ready for usage in other protocols!\n console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)\n\n // Custom business logic can be included here\n // In this example we can send a basic message to the connection, but\n // anything is possible\n cb()\n\n // We exit the flow\n process.exit(0)\n }\n })\n}\n\n// end-section-6\n\nconst run = async () => {\n console.log('Initializing Bob agent...')\n const bobAgent = await initializeBobAgent()\n console.log('Initializing Acme agent...')\n const acmeAgent = await initializeAcmeAgent()\n\n console.log('Creating the invitation as Acme...')\n const { outOfBandRecord, invitationUrl } = await createNewInvitation(acmeAgent)\n\n console.log('Listening for connection changes...')\n setupConnectionListener(acmeAgent, outOfBandRecord, () =>\n console.log('We now have an active connection to use in the following tutorials')\n )\n\n console.log('Accepting the invitation as Bob...')\n await receiveInvitation(bobAgent, invitationUrl)\n}\n\nexport default run\n\nvoid run()\n"},7283:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n CredentialEventTypes,\n CredentialState,\n CredentialStateChangedEvent,\n DidsModule,\n HttpOutboundTransport,\n InitConfig,\n WsOutboundTransport,\n Agent,\n CredentialsModule,\n V2CredentialProtocol,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport {\n IndyVdrAnonCredsRegistry,\n IndyVdrIndyDidRegistrar,\n IndyVdrIndyDidResolver,\n IndyVdrModule,\n} from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport {\n AnonCredsCredentialFormatService,\n AnonCredsModule,\n LegacyIndyCredentialFormatService,\n} from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\n\nconst issuerConfig: InitConfig = {\n label: 'docs-agent-nodejs-issue-a-credential-issuer',\n walletConfig: {\n id: 'wallet-id-issuer',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst holderConfig: InitConfig = {\n label: 'docs-agent-nodejs-issue-a-credential-holder',\n walletConfig: {\n id: 'wallet-id-holder',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nconst issuer = new Agent({\n config: issuerConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n registrars: [new IndyVdrIndyDidRegistrar()],\n resolvers: [new IndyVdrIndyDidResolver()],\n }),\n credentials: new CredentialsModule({\n credentialProtocols: [\n new V2CredentialProtocol({\n credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],\n }),\n ],\n }),\n },\n})\n\n// Register a simple `WebSocket` outbound transport\nissuer.registerOutboundTransport(new WsOutboundTransport())\n\n// Register a simple `Http` outbound transport\nissuer.registerOutboundTransport(new HttpOutboundTransport())\n\n// Register a simple `Http` inbound transport\nissuer.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n// end-section-1\n\n// start-section-2\nconst holder = new Agent({\n config: holderConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n resolvers: [new IndyVdrIndyDidResolver()],\n }),\n credentials: new CredentialsModule({\n credentialProtocols: [\n new V2CredentialProtocol({\n credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],\n }),\n ],\n }),\n },\n})\n\n// Register a simple `WebSocket` outbound transport\nholder.registerOutboundTransport(new WsOutboundTransport())\n\n// Register a simple `Http` outbound transport\nholder.registerOutboundTransport(new HttpOutboundTransport())\n\n// Register a simple `Http` inbound transport\nholder.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n// end-section-2\n\n// start-section-3\nholder.events.on(CredentialEventTypes.CredentialStateChanged, async ({ payload }) => {\n switch (payload.credentialRecord.state) {\n case CredentialState.OfferReceived:\n console.log('received a credential')\n // custom logic here\n await holder.credentials.acceptOffer({ credentialRecordId: payload.credentialRecord.id })\n case CredentialState.Done:\n console.log(`Credential for credential id ${payload.credentialRecord.id} is accepted`)\n // For demo purposes we exit the program here.\n process.exit(0)\n }\n})\n// end-section-3\n\n// start-section-4\nconst indyCredentialExchangeRecord = await issuer.credentials.offerCredential({\n protocolVersion: 'v2',\n connectionId: '',\n credentialFormats: {\n indy: {\n credentialDefinitionId: '',\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n})\n// end-section-4\n\n// start-section-5\nconst anonCredsCredentialExchangeRecord = issuer.credentials.offerCredential({\n protocolVersion: 'v2',\n connectionId: '',\n credentialFormats: {\n anoncreds: {\n credentialDefinitionId: '',\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n})\n// end-section-5\n"},8276:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n ConsoleLogger,\n HttpOutboundTransport,\n InitConfig,\n LogLevel,\n MediationRecipientModule,\n WsOutboundTransport,\n} from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport { agentDependencies } from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// start-section-1\nconst name = 'alice'\n\n// paste your invitation url here\n// or use the current invitation-url to connect to the public animo-mediator.\nconst mediatorInvitationUrl =\n 'https://mediator.dev.animo.id/invite?oob=eyJAdHlwZSI6Imh0dHBzOi8vZGlkY29tbS5vcmcvb3V0LW9mLWJhbmQvMS4xL2ludml0YXRpb24iLCJAaWQiOiIyMDc1MDM4YS05ZGU3LTRiODItYWUxYi1jNzBmNDg4MjYzYTciLCJsYWJlbCI6IkFuaW1vIE1lZGlhdG9yIiwiYWNjZXB0IjpbImRpZGNvbW0vYWlwMSIsImRpZGNvbW0vYWlwMjtlbnY9cmZjMTkiXSwiaGFuZHNoYWtlX3Byb3RvY29scyI6WyJodHRwczovL2RpZGNvbW0ub3JnL2RpZGV4Y2hhbmdlLzEuMCIsImh0dHBzOi8vZGlkY29tbS5vcmcvY29ubmVjdGlvbnMvMS4wIl0sInNlcnZpY2VzIjpbeyJpZCI6IiNpbmxpbmUtMCIsInNlcnZpY2VFbmRwb2ludCI6Imh0dHBzOi8vbWVkaWF0b3IuZGV2LmFuaW1vLmlkIiwidHlwZSI6ImRpZC1jb21tdW5pY2F0aW9uIiwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtvSG9RTUphdU5VUE5OV1pQcEw3RGs1SzNtQ0NDMlBpNDJGY3FwR25iampMcSJdLCJyb3V0aW5nS2V5cyI6W119LHsiaWQiOiIjaW5saW5lLTEiLCJzZXJ2aWNlRW5kcG9pbnQiOiJ3c3M6Ly9tZWRpYXRvci5kZXYuYW5pbW8uaWQiLCJ0eXBlIjoiZGlkLWNvbW11bmljYXRpb24iLCJyZWNpcGllbnRLZXlzIjpbImRpZDprZXk6ejZNa29Ib1FNSmF1TlVQTk5XWlBwTDdEazVLM21DQ0MyUGk0MkZjcXBHbmJqakxxIl0sInJvdXRpbmdLZXlzIjpbXX1dfQ'\n\nconst agentConfig: InitConfig = {\n label: `Aries Framework JavaScript ${name}`,\n walletConfig: {\n id: name,\n key: name,\n },\n logger: new ConsoleLogger(LogLevel.trace),\n}\n\nconst alice = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n mediationRecipient: new MediationRecipientModule({\n mediatorInvitationUrl,\n }),\n indySdk: new IndySdkModule({ indySdk }),\n },\n})\n\nalice.registerOutboundTransport(new HttpOutboundTransport())\nalice.registerOutboundTransport(new WsOutboundTransport())\n\nawait alice.initialize()\n// end-section-1\n"},768:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n ConnectionsModule,\n HttpOutboundTransport,\n InitConfig,\n MediationStateChangedEvent,\n MediatorModule,\n RoutingEventTypes,\n} from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport { HttpInboundTransport, agentDependencies } from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// start-section-1\nconst name = 'mediator'\nconst port = 3001\n\nconst agentConfig: InitConfig = {\n label: `Aries Framework JavaScript ${name}`,\n walletConfig: {\n id: name,\n key: name,\n },\n endpoints: [`http://localhost:${port}`],\n}\n\nconst mediator = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n indySdk: new IndySdkModule({ indySdk }),\n mediator: new MediatorModule({\n autoAcceptMediationRequests: true,\n }),\n connections: new ConnectionsModule({\n autoAcceptConnections: true,\n }),\n },\n})\n\nmediator.registerOutboundTransport(new HttpOutboundTransport())\nmediator.registerInboundTransport(new HttpInboundTransport({ port }))\n\nawait mediator.initialize()\nconst mediatorOutOfBandRecord = await mediator.oob.createInvitation({ multiUseInvitation: true })\n\nconst mediatiorInvitationUrl = mediatorOutOfBandRecord.outOfBandInvitation.toUrl({\n domain: `http://localhost:${port}`,\n})\nconsole.log(mediatiorInvitationUrl)\n// end-section-1\n\nmediator.events\n .observable(RoutingEventTypes.MediationStateChanged)\n .subscribe(({ payload }) => {\n console.log(`${name} mediation state: ${payload.mediationRecord.state}`)\n })\n"},2055:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { DidsModule, InitConfig, KeyType, LogLevel, TypedArrayEncoder } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs-register-schema-and-cred-def',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport {\n IndyVdrAnonCredsRegistry,\n IndyVdrIndyDidRegistrar,\n IndyVdrIndyDidResolver,\n IndyVdrModule,\n} from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\nimport {\n CheqdAnonCredsRegistry,\n CheqdDidRegistrar,\n CheqdDidResolver,\n CheqdModule,\n CheqdModuleConfig,\n} from '@aries-framework/cheqd'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // We do this to have access to a wallet\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n cheqd: new CheqdModule(\n new CheqdModuleConfig({\n networks: [\n {\n network: '',\n cosmosPayerSeed: '',\n },\n ],\n })\n ),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry(), new CheqdAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n registrars: [new IndyVdrIndyDidRegistrar(), new CheqdDidRegistrar()],\n resolvers: [new IndyVdrIndyDidResolver(), new CheqdDidResolver()],\n }),\n },\n})\n// end-section-1\n\n// start-section-2\nconst seed = TypedArrayEncoder.fromString(``) // What you input on bcovrin. Should be kept secure in production!\nconst unqualifiedIndyDid = `` // will be returned after registering seed on bcovrin\nconst indyDid = `did:indy:bcovrin:test:${unqualifiedIndyDid}`\n\nconst cheqdDid = await agent.dids.create({\n method: 'cheqd',\n secret: {\n verificationMethod: {\n id: 'key-1',\n type: 'Ed25519VerificationKey2020',\n },\n },\n options: {\n network: 'testnet',\n methodSpecificIdAlgo: 'uuid',\n },\n})\n\nawait agent.dids.import({\n did: '',\n overwrite: true,\n privateKeys: [\n {\n privateKey: seed,\n keyType: KeyType.Ed25519,\n },\n ],\n})\n// end-section-2\n\n// start-section-3\nconst schemaResult = await agent.modules.anoncreds.registerSchema({\n schema: {\n attrNames: ['name'],\n issuerId: '',\n name: 'Example Schema to register',\n version: '1.0.0',\n },\n options: {},\n})\n\nif (schemaResult.schemaState.state === 'failed') {\n throw new Error(`Error creating schema: ${schemaResult.schemaState.reason}`)\n}\n// end-section-3\n\n// start-section-4\nconst credentialDefinitionResult = await agent.modules.anoncreds.registerCredentialDefinition({\n credentialDefinition: {\n tag: 'default',\n issuerId: '',\n schemaId: schemaResult.schemaState.schemaId,\n },\n options: {},\n})\n\nif (credentialDefinitionResult.credentialDefinitionState.state === 'failed') {\n throw new Error(\n `Error creating credential definition: ${credentialDefinitionResult.credentialDefinitionState.reason}`\n )\n}\n// end-section-4\n"},6596:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport { anoncreds } from '@hyperledger/anoncreds-react-native'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { IndyVdrAnonCredsRegistry } from '@aries-framework/indy-vdr'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // This is included as we need a wallet on our agent\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n anoncreds: new AnonCredsModule({\n // Here we add an Indy VDR registry as an example, any AnonCreds registry\n // can be used\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},3099:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { IndyVdrAnonCredsRegistry } from '@aries-framework/indy-vdr'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // This is included as we need a wallet on our agent\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n anoncreds: new AnonCredsModule({\n // Here we add an Indy VDR registry as an example, any AnonCreds registry\n // can be used\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},8757:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},3716:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},2107:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { DidDocumentService, InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent, DidsModule, KeyType, DidDocument } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport {\n CheqdAnonCredsRegistry,\n CheqdDidRegistrar,\n CheqdDidResolver,\n CheqdModule,\n CheqdModuleConfig,\n CheqdDidCreateOptions,\n} from '@aries-framework/cheqd'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n dids: new DidsModule({\n registrars: [new CheqdDidRegistrar()],\n resolvers: [new CheqdDidResolver()],\n }),\n\n // AnonCreds\n anoncreds: new AnonCredsModule({\n registries: [new CheqdAnonCredsRegistry()],\n }),\n\n // Add cheqd module\n cheqd: new CheqdModule(\n new CheqdModuleConfig({\n networks: [\n {\n network: '',\n cosmosPayerSeed: '',\n },\n ],\n })\n ),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n\n// start-section-2\n\n// create a key pair\nconst key = await agent.wallet.createKey({\n keyType: KeyType.Ed25519,\n})\n\n// encode public key according to the verification method\nconst ed25519PublicKeyBase58 = key.publicKeyBase58\n\n// Create a DID\nawait agent.dids.create({\n method: 'cheqd',\n secret: {},\n options: {\n network: 'testnet',\n },\n didDocument: new DidDocument({\n id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',\n controller: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d'],\n verificationMethod: [\n {\n id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1',\n type: 'Ed25519VerificationKey2018',\n controller: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',\n publicKeyBase58: ed25519PublicKeyBase58,\n },\n ],\n authentication: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1'],\n }),\n})\n// end-section-2\n\n// start-section-3\nawait agent.dids.create({\n method: 'cheqd',\n // the secret contains a the verification method type and id\n secret: {\n verificationMethod: {\n id: 'key-1',\n type: 'Ed25519VerificationKey2020',\n },\n },\n // an optional methodSpecificIdAlgo parameter\n options: {\n network: 'testnet',\n methodSpecificIdAlgo: 'uuid',\n },\n})\n// end-section-3\n\n// start-section-4\nawait agent.dids.update({\n did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n // Updates DID Document with an additional verification method if provided\n secret: {\n verificationMethod: {\n id: 'key-2',\n type: 'JsonWebKey2020',\n },\n },\n didDocument: {\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n controller: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411'],\n verificationMethod: [\n {\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1',\n type: 'Ed25519VerificationKey2020',\n controller: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n publicKeyMultibase: 'z6MknkzLUEP5cxqqsaysNMWoh8NJRb3YsowTCj2D6yhwyEdj',\n },\n ],\n authentication: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1'],\n // updates did document with a service block\n service: [\n new DidDocumentService({\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#rand',\n type: 'rand',\n serviceEndpoint: 'https://rand.in',\n }),\n ],\n },\n})\n// end-section-4\n\n// start-section-5\nawait agent.dids.deactivate({\n did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n // an optional versionId parameter\n options: {\n versionId: '3.0',\n },\n})\n// end-section-5\n"},4056:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport { Agent, InitConfig } from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport {\n agentDependencies,\n IndySdkPostgresStorageConfig,\n loadIndySdkPostgresPlugin,\n IndySdkPostgresWalletScheme,\n} from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// IndySdkPostgresStorageConfig defines interface for the Postgres plugin configuration.\nconst storageConfig = {\n type: 'postgres_storage',\n config: {\n url: 'localhost:5432',\n wallet_scheme: IndySdkPostgresWalletScheme.DatabasePerWallet,\n },\n credentials: {\n account: 'postgres',\n password: 'postgres',\n admin_account: 'postgres',\n admin_password: 'postgres',\n },\n} satisfies IndySdkPostgresStorageConfig\n\n// load the postgres wallet plugin before agent initialization\nloadIndySdkPostgresPlugin(storageConfig.config, storageConfig.credentials)\n\nconst agentConfig: InitConfig = {\n label: 'My Agent',\n // walletConfig.id and walletConfig.key are still required\n walletConfig: {\n id: 'walletId',\n key: 'testKey0000000000000000000000000',\n // storage is added and defines the postgres plugin configuration\n storage: storageConfig,\n },\n}\n\nconst agent = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n"},1002:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport indySdk from 'indy-sdk-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Indy SDK module on the agent\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},2863:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport indySdk from 'indy-sdk'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Indy SDK module on the agent\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n\nawait agent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},9031:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { IndyVdrModule } from '@aries-framework/indy-vdr'\n\nconst modules = {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n indyNamespace: 'bcovrin:test',\n isProduction: false,\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n}\n// end-section-1\n"},4279:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-react-native'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},4437:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nimport { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},6121:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport type { InitConfig } from '@aries-framework/core'\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n// end-section-1\n\n// start-section-2\nimport { HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\n\n// ... agent setup from prevous section ...\n\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\n// end-section-2\n\n// TODO: we probably want to make this more specific to React Native,\n// so using it in a components and recommending to use the react hooks\n// start-section-3\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n// end-section-3\n"},1031:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport type { InitConfig } from '@aries-framework/core'\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n// end-section-1\n\n// start-section-2\nimport { HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\nimport { HttpInboundTransport } from '@aries-framework/node'\n\n// ... agent setup from prevous section ...\n\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\nagent.registerInboundTransport(new HttpInboundTransport({ port: 3000 }))\n// end-section-2\n\n// start-section-3\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n// end-section-3\n"},6033:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { AskarModule } from '@aries-framework/askar'\nimport {\n Agent,\n InitConfig,\n ConnectionEventTypes,\n ConnectionStateChangedEvent,\n WsOutboundTransport,\n HttpOutboundTransport,\n DidExchangeState,\n OutOfBandRecord,\n ConnectionsModule,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\n// start-section-1\nconst initializeBobAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label. It also sets the mediator invitation url,\n // because this is most likely required in a mobile environment.\n const config: InitConfig = {\n label: 'demo-agent-bob',\n walletConfig: {\n id: 'mainBob',\n key: 'demoagentbob00000000000000000000',\n },\n }\n\n // A new instance of an agent is created here\n // Askar can also be replaced by the indy-sdk if required\n const agent = new Agent({\n config,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n connections: new ConnectionsModule({ autoAcceptConnections: true }),\n },\n dependencies: agentDependencies,\n })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-1\n\n// start-section-2\nconst initializeAcmeAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label.\n const config: InitConfig = {\n label: 'demo-agent-acme',\n walletConfig: {\n id: 'mainAcme',\n key: 'demoagentacme0000000000000000000',\n },\n endpoints: ['http://localhost:3001'],\n }\n\n // A new instance of an agent is created here\n // Askar can also be replaced by the indy-sdk if required\n const agent = new Agent({\n config,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n connections: new ConnectionsModule({ autoAcceptConnections: true }),\n },\n dependencies: agentDependencies,\n })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-2\n\n// start-section-3\nconst createNewInvitation = async (agent: Agent) => {\n const outOfBandRecord = await agent.oob.createInvitation()\n\n return {\n invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),\n outOfBandRecord,\n }\n}\n// end-section-3\n\n// start-section-4\nconst createLegacyInvitation = async (agent: Agent) => {\n const { invitation } = await agent.oob.createLegacyInvitation()\n\n return invitation.toUrl({ domain: 'https://example.org' })\n}\n// end-section-4\n\n// start-section-5\nconst receiveInvitation = async (agent: Agent, invitationUrl: string) => {\n const { outOfBandRecord } = await agent.oob.receiveInvitationFromUrl(invitationUrl)\n\n return outOfBandRecord\n}\n// end-section-5\n\n// start-section-6\nconst setupConnectionListener = (agent: Agent, outOfBandRecord: OutOfBandRecord, cb: (...args: any) => void) => {\n agent.events.on(ConnectionEventTypes.ConnectionStateChanged, ({ payload }) => {\n if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return\n if (payload.connectionRecord.state === DidExchangeState.Completed) {\n // the connection is now ready for usage in other protocols!\n console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)\n\n // Custom business logic can be included here\n // In this example we can send a basic message to the connection, but\n // anything is possible\n cb()\n\n // We exit the flow\n process.exit(0)\n }\n })\n}\n\n// end-section-6\n\nconst run = async () => {\n console.log('Initializing Bob agent...')\n const bobAgent = await initializeBobAgent()\n console.log('Initializing Acme agent...')\n const acmeAgent = await initializeAcmeAgent()\n\n console.log('Creating the invitation as Acme...')\n const { outOfBandRecord, invitationUrl } = await createNewInvitation(acmeAgent)\n\n console.log('Listening for connection changes...')\n setupConnectionListener(acmeAgent, outOfBandRecord, () =>\n console.log('We now have an active connection to use in the following tutorials')\n )\n\n console.log('Accepting the invitation as Bob...')\n await receiveInvitation(bobAgent, invitationUrl)\n}\n\nexport default run\n\nvoid run()\n"},5536:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n CredentialEventTypes,\n CredentialState,\n CredentialStateChangedEvent,\n DidsModule,\n HttpOutboundTransport,\n InitConfig,\n WsOutboundTransport,\n Agent,\n CredentialsModule,\n V2CredentialProtocol,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport {\n IndyVdrAnonCredsRegistry,\n IndyVdrIndyDidRegistrar,\n IndyVdrIndyDidResolver,\n IndyVdrModule,\n} from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport {\n AnonCredsCredentialFormatService,\n AnonCredsModule,\n LegacyIndyCredentialFormatService,\n} from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\n\nconst issuerConfig: InitConfig = {\n label: 'docs-agent-nodejs-issue-a-credential-issuer',\n walletConfig: {\n id: 'wallet-id-issuer',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst holderConfig: InitConfig = {\n label: 'docs-agent-nodejs-issue-a-credential-holder',\n walletConfig: {\n id: 'wallet-id-holder',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nconst issuer = new Agent({\n config: issuerConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n registrars: [new IndyVdrIndyDidRegistrar()],\n resolvers: [new IndyVdrIndyDidResolver()],\n }),\n credentials: new CredentialsModule({\n credentialProtocols: [\n new V2CredentialProtocol({\n credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],\n }),\n ],\n }),\n },\n})\n\n// Register a simple `WebSocket` outbound transport\nissuer.registerOutboundTransport(new WsOutboundTransport())\n\n// Register a simple `Http` outbound transport\nissuer.registerOutboundTransport(new HttpOutboundTransport())\n\n// Register a simple `Http` inbound transport\nissuer.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n// end-section-1\n\n// start-section-2\nconst holder = new Agent({\n config: holderConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n resolvers: [new IndyVdrIndyDidResolver()],\n }),\n credentials: new CredentialsModule({\n credentialProtocols: [\n new V2CredentialProtocol({\n credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],\n }),\n ],\n }),\n },\n})\n\n// Register a simple `WebSocket` outbound transport\nholder.registerOutboundTransport(new WsOutboundTransport())\n\n// Register a simple `Http` outbound transport\nholder.registerOutboundTransport(new HttpOutboundTransport())\n\n// Register a simple `Http` inbound transport\nholder.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n// end-section-2\n\n// start-section-3\nholder.events.on(CredentialEventTypes.CredentialStateChanged, async ({ payload }) => {\n switch (payload.credentialRecord.state) {\n case CredentialState.OfferReceived:\n console.log('received a credential')\n // custom logic here\n await holder.credentials.acceptOffer({ credentialRecordId: payload.credentialRecord.id })\n case CredentialState.Done:\n console.log(`Credential for credential id ${payload.credentialRecord.id} is accepted`)\n // For demo purposes we exit the program here.\n process.exit(0)\n }\n})\n// end-section-3\n\n// start-section-4\nconst indyCredentialExchangeRecord = await issuer.credentials.offerCredential({\n protocolVersion: 'v2',\n connectionId: '',\n credentialFormats: {\n indy: {\n credentialDefinitionId: '',\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n})\n// end-section-4\n\n// start-section-5\nconst anonCredsCredentialExchangeRecord = issuer.credentials.offerCredential({\n protocolVersion: 'v2',\n connectionId: '',\n credentialFormats: {\n anoncreds: {\n credentialDefinitionId: '',\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n})\n// end-section-5\n"},8249:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n ConsoleLogger,\n HttpOutboundTransport,\n InitConfig,\n LogLevel,\n MediationRecipientModule,\n WsOutboundTransport,\n} from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport { agentDependencies } from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// start-section-1\nconst name = 'alice'\n\n// paste your invitation url here\n// or use the current invitation-url to connect to the public animo-mediator.\nconst mediatorInvitationUrl =\n 'https://mediator.dev.animo.id/invite?oob=eyJAdHlwZSI6Imh0dHBzOi8vZGlkY29tbS5vcmcvb3V0LW9mLWJhbmQvMS4xL2ludml0YXRpb24iLCJAaWQiOiIyMDc1MDM4YS05ZGU3LTRiODItYWUxYi1jNzBmNDg4MjYzYTciLCJsYWJlbCI6IkFuaW1vIE1lZGlhdG9yIiwiYWNjZXB0IjpbImRpZGNvbW0vYWlwMSIsImRpZGNvbW0vYWlwMjtlbnY9cmZjMTkiXSwiaGFuZHNoYWtlX3Byb3RvY29scyI6WyJodHRwczovL2RpZGNvbW0ub3JnL2RpZGV4Y2hhbmdlLzEuMCIsImh0dHBzOi8vZGlkY29tbS5vcmcvY29ubmVjdGlvbnMvMS4wIl0sInNlcnZpY2VzIjpbeyJpZCI6IiNpbmxpbmUtMCIsInNlcnZpY2VFbmRwb2ludCI6Imh0dHBzOi8vbWVkaWF0b3IuZGV2LmFuaW1vLmlkIiwidHlwZSI6ImRpZC1jb21tdW5pY2F0aW9uIiwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtvSG9RTUphdU5VUE5OV1pQcEw3RGs1SzNtQ0NDMlBpNDJGY3FwR25iampMcSJdLCJyb3V0aW5nS2V5cyI6W119LHsiaWQiOiIjaW5saW5lLTEiLCJzZXJ2aWNlRW5kcG9pbnQiOiJ3c3M6Ly9tZWRpYXRvci5kZXYuYW5pbW8uaWQiLCJ0eXBlIjoiZGlkLWNvbW11bmljYXRpb24iLCJyZWNpcGllbnRLZXlzIjpbImRpZDprZXk6ejZNa29Ib1FNSmF1TlVQTk5XWlBwTDdEazVLM21DQ0MyUGk0MkZjcXBHbmJqakxxIl0sInJvdXRpbmdLZXlzIjpbXX1dfQ'\n\nconst agentConfig: InitConfig = {\n label: `Credo ${name}`,\n walletConfig: {\n id: name,\n key: name,\n },\n logger: new ConsoleLogger(LogLevel.trace),\n}\n\nconst alice = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n mediationRecipient: new MediationRecipientModule({\n mediatorInvitationUrl,\n }),\n indySdk: new IndySdkModule({ indySdk }),\n },\n})\n\nalice.registerOutboundTransport(new HttpOutboundTransport())\nalice.registerOutboundTransport(new WsOutboundTransport())\n\nawait alice.initialize()\n// end-section-1\n"},1676:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n ConnectionsModule,\n HttpOutboundTransport,\n InitConfig,\n MediationStateChangedEvent,\n MediatorModule,\n RoutingEventTypes,\n} from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport { HttpInboundTransport, agentDependencies } from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// start-section-1\nconst name = 'mediator'\nconst port = 3001\n\nconst agentConfig: InitConfig = {\n label: `Credo ${name}`,\n walletConfig: {\n id: name,\n key: name,\n },\n endpoints: [`http://localhost:${port}`],\n}\n\nconst mediator = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n indySdk: new IndySdkModule({ indySdk }),\n mediator: new MediatorModule({\n autoAcceptMediationRequests: true,\n }),\n connections: new ConnectionsModule({\n autoAcceptConnections: true,\n }),\n },\n})\n\nmediator.registerOutboundTransport(new HttpOutboundTransport())\nmediator.registerInboundTransport(new HttpInboundTransport({ port }))\n\nawait mediator.initialize()\nconst mediatorOutOfBandRecord = await mediator.oob.createInvitation({ multiUseInvitation: true })\n\nconst mediatiorInvitationUrl = mediatorOutOfBandRecord.outOfBandInvitation.toUrl({\n domain: `http://localhost:${port}`,\n})\nconsole.log(mediatiorInvitationUrl)\n// end-section-1\n\nmediator.events\n .observable(RoutingEventTypes.MediationStateChanged)\n .subscribe(({ payload }) => {\n console.log(`${name} mediation state: ${payload.mediationRecord.state}`)\n })\n"},1104:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { DidsModule, InitConfig, KeyType, LogLevel, TypedArrayEncoder } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs-register-schema-and-cred-def',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport {\n IndyVdrAnonCredsRegistry,\n IndyVdrIndyDidRegistrar,\n IndyVdrIndyDidResolver,\n IndyVdrModule,\n} from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\nimport {\n CheqdAnonCredsRegistry,\n CheqdDidRegistrar,\n CheqdDidResolver,\n CheqdModule,\n CheqdModuleConfig,\n} from '@aries-framework/cheqd'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // We do this to have access to a wallet\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n cheqd: new CheqdModule(\n new CheqdModuleConfig({\n networks: [\n {\n network: '',\n cosmosPayerSeed: '',\n },\n ],\n })\n ),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry(), new CheqdAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n registrars: [new IndyVdrIndyDidRegistrar(), new CheqdDidRegistrar()],\n resolvers: [new IndyVdrIndyDidResolver(), new CheqdDidResolver()],\n }),\n },\n})\n// end-section-1\n\n// start-section-2\nconst seed = TypedArrayEncoder.fromString(``) // What you input on bcovrin. Should be kept secure in production!\nconst unqualifiedIndyDid = `` // will be returned after registering seed on bcovrin\nconst indyDid = `did:indy:bcovrin:test:${unqualifiedIndyDid}`\n\nconst cheqdDid = await agent.dids.create({\n method: 'cheqd',\n secret: {\n verificationMethod: {\n id: 'key-1',\n type: 'Ed25519VerificationKey2020',\n },\n },\n options: {\n network: 'testnet',\n methodSpecificIdAlgo: 'uuid',\n },\n})\n\nawait agent.dids.import({\n did: '',\n overwrite: true,\n privateKeys: [\n {\n privateKey: seed,\n keyType: KeyType.Ed25519,\n },\n ],\n})\n// end-section-2\n\n// start-section-3\nconst schemaResult = await agent.modules.anoncreds.registerSchema({\n schema: {\n attrNames: ['name'],\n issuerId: '',\n name: 'Example Schema to register',\n version: '1.0.0',\n },\n options: {},\n})\n\nif (schemaResult.schemaState.state === 'failed') {\n throw new Error(`Error creating schema: ${schemaResult.schemaState.reason}`)\n}\n// end-section-3\n\n// start-section-4\nconst credentialDefinitionResult = await agent.modules.anoncreds.registerCredentialDefinition({\n credentialDefinition: {\n tag: 'default',\n issuerId: '',\n schemaId: schemaResult.schemaState.schemaId,\n },\n options: {},\n})\n\nif (credentialDefinitionResult.credentialDefinitionState.state === 'failed') {\n throw new Error(\n `Error creating credential definition: ${credentialDefinitionResult.credentialDefinitionState.reason}`\n )\n}\n// end-section-4\n"},8001:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport { anoncreds } from '@hyperledger/anoncreds-react-native'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { IndyVdrAnonCredsRegistry } from '@aries-framework/indy-vdr'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // This is included as we need a wallet on our agent\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n anoncreds: new AnonCredsModule({\n // Here we add an Indy VDR registry as an example, any AnonCreds registry\n // can be used\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},5712:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { IndyVdrAnonCredsRegistry } from '@aries-framework/indy-vdr'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // This is included as we need a wallet on our agent\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n anoncreds: new AnonCredsModule({\n // Here we add an Indy VDR registry as an example, any AnonCreds registry\n // can be used\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},3106:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},531:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},1638:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { DidDocumentService, InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent, DidsModule, KeyType, DidDocument } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport {\n CheqdAnonCredsRegistry,\n CheqdDidRegistrar,\n CheqdDidResolver,\n CheqdModule,\n CheqdModuleConfig,\n CheqdDidCreateOptions,\n} from '@aries-framework/cheqd'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n dids: new DidsModule({\n registrars: [new CheqdDidRegistrar()],\n resolvers: [new CheqdDidResolver()],\n }),\n\n // AnonCreds\n anoncreds: new AnonCredsModule({\n registries: [new CheqdAnonCredsRegistry()],\n }),\n\n // Add cheqd module\n cheqd: new CheqdModule(\n new CheqdModuleConfig({\n networks: [\n {\n network: '',\n cosmosPayerSeed: '',\n },\n ],\n })\n ),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n\n// start-section-2\n\n// create a key pair\nconst key = await agent.wallet.createKey({\n keyType: KeyType.Ed25519,\n})\n\n// encode public key according to the verification method\nconst ed25519PublicKeyBase58 = key.publicKeyBase58\n\n// Create a DID\nawait agent.dids.create({\n method: 'cheqd',\n secret: {},\n options: {\n network: 'testnet',\n },\n didDocument: new DidDocument({\n id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',\n controller: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d'],\n verificationMethod: [\n {\n id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1',\n type: 'Ed25519VerificationKey2018',\n controller: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',\n publicKeyBase58: ed25519PublicKeyBase58,\n },\n ],\n authentication: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1'],\n }),\n})\n// end-section-2\n\n// start-section-3\nawait agent.dids.create({\n method: 'cheqd',\n // the secret contains a the verification method type and id\n secret: {\n verificationMethod: {\n id: 'key-1',\n type: 'Ed25519VerificationKey2020',\n },\n },\n // an optional methodSpecificIdAlgo parameter\n options: {\n network: 'testnet',\n methodSpecificIdAlgo: 'uuid',\n },\n})\n// end-section-3\n\n// start-section-4\nawait agent.dids.update({\n did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n // Updates DID Document with an additional verification method if provided\n secret: {\n verificationMethod: {\n id: 'key-2',\n type: 'JsonWebKey2020',\n },\n },\n didDocument: {\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n controller: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411'],\n verificationMethod: [\n {\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1',\n type: 'Ed25519VerificationKey2020',\n controller: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n publicKeyMultibase: 'z6MknkzLUEP5cxqqsaysNMWoh8NJRb3YsowTCj2D6yhwyEdj',\n },\n ],\n authentication: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1'],\n // updates did document with a service block\n service: [\n new DidDocumentService({\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#rand',\n type: 'rand',\n serviceEndpoint: 'https://rand.in',\n }),\n ],\n },\n})\n// end-section-4\n\n// start-section-5\nawait agent.dids.deactivate({\n did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n // an optional versionId parameter\n options: {\n versionId: '3.0',\n },\n})\n// end-section-5\n"},4019:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport { Agent, InitConfig } from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport {\n agentDependencies,\n IndySdkPostgresStorageConfig,\n loadIndySdkPostgresPlugin,\n IndySdkPostgresWalletScheme,\n} from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// IndySdkPostgresStorageConfig defines interface for the Postgres plugin configuration.\nconst storageConfig = {\n type: 'postgres_storage',\n config: {\n url: 'localhost:5432',\n wallet_scheme: IndySdkPostgresWalletScheme.DatabasePerWallet,\n },\n credentials: {\n account: 'postgres',\n password: 'postgres',\n admin_account: 'postgres',\n admin_password: 'postgres',\n },\n} satisfies IndySdkPostgresStorageConfig\n\n// load the postgres wallet plugin before agent initialization\nloadIndySdkPostgresPlugin(storageConfig.config, storageConfig.credentials)\n\nconst agentConfig: InitConfig = {\n label: 'My Agent',\n // walletConfig.id and walletConfig.key are still required\n walletConfig: {\n id: 'walletId',\n key: 'testKey0000000000000000000000000',\n // storage is added and defines the postgres plugin configuration\n storage: storageConfig,\n },\n}\n\nconst agent = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n"},6383:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport indySdk from 'indy-sdk-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Indy SDK module on the agent\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},8555:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport indySdk from 'indy-sdk'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Indy SDK module on the agent\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n\nawait agent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},4613:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { IndyVdrModule } from '@aries-framework/indy-vdr'\n\nconst modules = {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n indyNamespace: 'bcovrin:test',\n isProduction: false,\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n}\n// end-section-1\n"},3995:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-react-native'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},5453:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nimport { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},1308:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport type { InitConfig } from '@aries-framework/core'\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n// end-section-1\n\n// start-section-2\nimport { HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\n\n// ... agent setup from prevous section ...\n\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\n// end-section-2\n\n// TODO: we probably want to make this more specific to React Native,\n// so using it in a components and recommending to use the react hooks\n// start-section-3\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n// end-section-3\n"},2537:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport type { InitConfig } from '@aries-framework/core'\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n// end-section-1\n\n// start-section-2\nimport { HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\nimport { HttpInboundTransport } from '@aries-framework/node'\n\n// ... agent setup from prevous section ...\n\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\nagent.registerInboundTransport(new HttpInboundTransport({ port: 3000 }))\n// end-section-2\n\n// start-section-3\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n// end-section-3\n"},2502:(n,e,t)=>{var o={"./0.3/node_modules/did-resolver/src/__tests__/resolver.test":349,"./0.3/node_modules/did-resolver/src/__tests__/resolver.test.ts":349,"./0.3/node_modules/did-resolver/src/resolver":5883,"./0.3/node_modules/did-resolver/src/resolver.ts":5883,"./0.3/node_modules/luxon/src/datetime":8105,"./0.3/node_modules/luxon/src/datetime.js":8105,"./0.3/node_modules/luxon/src/duration":6721,"./0.3/node_modules/luxon/src/duration.js":6721,"./0.3/node_modules/luxon/src/errors":4015,"./0.3/node_modules/luxon/src/errors.js":4015,"./0.3/node_modules/luxon/src/impl/conversions":8498,"./0.3/node_modules/luxon/src/impl/conversions.js":8498,"./0.3/node_modules/luxon/src/impl/diff":8998,"./0.3/node_modules/luxon/src/impl/diff.js":8998,"./0.3/node_modules/luxon/src/impl/digits":9310,"./0.3/node_modules/luxon/src/impl/digits.js":9310,"./0.3/node_modules/luxon/src/impl/english":4039,"./0.3/node_modules/luxon/src/impl/english.js":4039,"./0.3/node_modules/luxon/src/impl/formats":5303,"./0.3/node_modules/luxon/src/impl/formats.js":5303,"./0.3/node_modules/luxon/src/impl/formatter":4756,"./0.3/node_modules/luxon/src/impl/formatter.js":4756,"./0.3/node_modules/luxon/src/impl/invalid":760,"./0.3/node_modules/luxon/src/impl/invalid.js":760,"./0.3/node_modules/luxon/src/impl/locale":114,"./0.3/node_modules/luxon/src/impl/locale.js":114,"./0.3/node_modules/luxon/src/impl/regexParser":1990,"./0.3/node_modules/luxon/src/impl/regexParser.js":1990,"./0.3/node_modules/luxon/src/impl/tokenParser":4546,"./0.3/node_modules/luxon/src/impl/tokenParser.js":4546,"./0.3/node_modules/luxon/src/impl/util":7866,"./0.3/node_modules/luxon/src/impl/util.js":7866,"./0.3/node_modules/luxon/src/impl/zoneUtil":9776,"./0.3/node_modules/luxon/src/impl/zoneUtil.js":9776,"./0.3/node_modules/luxon/src/info":6965,"./0.3/node_modules/luxon/src/info.js":6965,"./0.3/node_modules/luxon/src/interval":1591,"./0.3/node_modules/luxon/src/interval.js":1591,"./0.3/node_modules/luxon/src/luxon":8004,"./0.3/node_modules/luxon/src/luxon.js":8004,"./0.3/node_modules/luxon/src/luxonFilled":9972,"./0.3/node_modules/luxon/src/luxonFilled.js":9972,"./0.3/node_modules/luxon/src/settings":2636,"./0.3/node_modules/luxon/src/settings.js":2636,"./0.3/node_modules/luxon/src/zone":6476,"./0.3/node_modules/luxon/src/zone.js":6476,"./0.3/node_modules/luxon/src/zones/IANAZone":3176,"./0.3/node_modules/luxon/src/zones/IANAZone.js":3176,"./0.3/node_modules/luxon/src/zones/fixedOffsetZone":1840,"./0.3/node_modules/luxon/src/zones/fixedOffsetZone.js":1840,"./0.3/node_modules/luxon/src/zones/invalidZone":5092,"./0.3/node_modules/luxon/src/zones/invalidZone.js":5092,"./0.3/node_modules/luxon/src/zones/localZone":5617,"./0.3/node_modules/luxon/src/zones/localZone.js":5617,"./0.3/src/create-a-connection":7058,"./0.3/src/create-a-connection.ts":7058,"./0.3/src/issue-a-credential":2151,"./0.3/src/issue-a-credential.ts":2151,"./0.3/src/set-up":420,"./0.3/src/set-up-rn":3288,"./0.3/src/set-up-rn.ts":3288,"./0.3/src/set-up.ts":420,"./0.4/src/create-a-connection":5343,"./0.4/src/create-a-connection.ts":5343,"./0.4/src/issue-a-credential":7283,"./0.4/src/issue-a-credential.ts":7283,"./0.4/src/mediation-recipient":8276,"./0.4/src/mediation-recipient.ts":8276,"./0.4/src/mediator-setup":768,"./0.4/src/mediator-setup.ts":768,"./0.4/src/register-schema-and-cred-def":2055,"./0.4/src/register-schema-and-cred-def.ts":2055,"./0.4/src/set-up":1031,"./0.4/src/set-up-anoncreds-rs":3099,"./0.4/src/set-up-anoncreds-rs-rn":6596,"./0.4/src/set-up-anoncreds-rs-rn.ts":6596,"./0.4/src/set-up-anoncreds-rs.ts":3099,"./0.4/src/set-up-askar":3716,"./0.4/src/set-up-askar-rn":8757,"./0.4/src/set-up-askar-rn.ts":8757,"./0.4/src/set-up-askar.ts":3716,"./0.4/src/set-up-cheqd":2107,"./0.4/src/set-up-cheqd.ts":2107,"./0.4/src/set-up-indy-sdk":2863,"./0.4/src/set-up-indy-sdk-postgres":4056,"./0.4/src/set-up-indy-sdk-postgres.ts":4056,"./0.4/src/set-up-indy-sdk-rn":1002,"./0.4/src/set-up-indy-sdk-rn.ts":1002,"./0.4/src/set-up-indy-sdk.ts":2863,"./0.4/src/set-up-indy-vdr":4437,"./0.4/src/set-up-indy-vdr-config":9031,"./0.4/src/set-up-indy-vdr-config.ts":9031,"./0.4/src/set-up-indy-vdr-rn":4279,"./0.4/src/set-up-indy-vdr-rn.ts":4279,"./0.4/src/set-up-indy-vdr.ts":4437,"./0.4/src/set-up-rn":6121,"./0.4/src/set-up-rn.ts":6121,"./0.4/src/set-up.ts":1031,"./current/src/create-a-connection":6033,"./current/src/create-a-connection.ts":6033,"./current/src/issue-a-credential":5536,"./current/src/issue-a-credential.ts":5536,"./current/src/mediation-recipient":8249,"./current/src/mediation-recipient.ts":8249,"./current/src/mediator-setup":1676,"./current/src/mediator-setup.ts":1676,"./current/src/register-schema-and-cred-def":1104,"./current/src/register-schema-and-cred-def.ts":1104,"./current/src/set-up":2537,"./current/src/set-up-anoncreds-rs":5712,"./current/src/set-up-anoncreds-rs-rn":8001,"./current/src/set-up-anoncreds-rs-rn.ts":8001,"./current/src/set-up-anoncreds-rs.ts":5712,"./current/src/set-up-askar":531,"./current/src/set-up-askar-rn":3106,"./current/src/set-up-askar-rn.ts":3106,"./current/src/set-up-askar.ts":531,"./current/src/set-up-cheqd":1638,"./current/src/set-up-cheqd.ts":1638,"./current/src/set-up-indy-sdk":8555,"./current/src/set-up-indy-sdk-postgres":4019,"./current/src/set-up-indy-sdk-postgres.ts":4019,"./current/src/set-up-indy-sdk-rn":6383,"./current/src/set-up-indy-sdk-rn.ts":6383,"./current/src/set-up-indy-sdk.ts":8555,"./current/src/set-up-indy-vdr":5453,"./current/src/set-up-indy-vdr-config":4613,"./current/src/set-up-indy-vdr-config.ts":4613,"./current/src/set-up-indy-vdr-rn":3995,"./current/src/set-up-indy-vdr-rn.ts":3995,"./current/src/set-up-indy-vdr.ts":5453,"./current/src/set-up-rn":1308,"./current/src/set-up-rn.ts":1308,"./current/src/set-up.ts":2537};function r(n){var e=i(n);return t(e)}function i(n){if(!t.o(o,n)){var e=new Error("Cannot find module '"+n+"'");throw e.code="MODULE_NOT_FOUND",e}return o[n]}r.keys=function(){return Object.keys(o)},r.resolve=i,n.exports=r,r.id=2502}}]); \ No newline at end of file +(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[7918],{7083:(n,e,t)=>{"use strict";t.d(e,{Z:()=>g});var o=t(7294),r=t(6010),i=t(5281),s=t(5999);const a={admonition:"admonition_WoCw",admonitionHeading:"admonitionHeading_TMsN",admonitionIcon:"admonitionIcon_Ibzs",admonitionContent:"admonitionContent_vXIg"};const d={note:{infimaClassName:"secondary",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))},label:o.createElement(s.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))},label:o.createElement(s.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))},label:o.createElement(s.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))},label:o.createElement(s.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 16 16"},o.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))},label:o.createElement(s.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")},holder:{infimaClassName:"holder",emoji:"\ud83d\uddc4",label:o.createElement(s.Z,{id:"theme.admonition.holder",description:"The default label used for the Caution admonition (:::holder)"},"holder")},issuer:{infimaClassName:"issuer",emoji:"\ud83d\udcc4",label:o.createElement(s.Z,{id:"theme.admonition.issuer",description:"The default label used for the Caution admonition (:::issuer)"},"issuer")},verifier:{infimaClassName:"verifier",emoji:"\ud83d\udc6e",label:o.createElement(s.Z,{id:"theme.admonition.verifier",description:"The default label used for the Verifier admonition (:::verifier)"},"verifier")},bob:{infimaClassName:"bob",emoji:"\ud83e\uddd4",label:o.createElement(s.Z,{id:"theme.admonition.bob",description:"The default label used for the Bob admonition (:::bob)"},"bob")},acme:{infimaClassName:"acme",emoji:"\ud83c\udfe2",label:o.createElement(s.Z,{id:"theme.admonition.acme",description:"The default label used for the acme admonition (:::acme)"},"acme")}},c={secondary:"note",important:"info",success:"tip",warning:"danger"};function l(n){const{mdxAdmonitionTitle:e,rest:t}=function(n){const e=o.Children.toArray(n),t=e.find((n=>o.isValidElement(n)&&"mdxAdmonitionTitle"===n.props?.mdxType)),r=o.createElement(o.Fragment,null,e.filter((n=>n!==t)));return{mdxAdmonitionTitle:t,rest:r}}(n.children);return{...n,title:n.title??e,children:t}}function g(n){const{children:e,type:t,title:s,icon:g}=l(n),u=function(n){const e=c[n]??n,t=d[e];return t||(console.warn(`No admonition config found for admonition type "${e}". Using Info as fallback.`),d.info)}(t),m=s??u.label,{iconComponent:p,emoji:f}=u,y=g??f??o.createElement(p,null);return o.createElement("div",{className:(0,r.Z)(i.k.common.admonition,i.k.common.admonitionType(n.type),"alert",`alert--${u.infimaClassName}`,`admonition-${u.infimaClassName}`,a.admonition)},o.createElement("div",{className:a.admonitionHeading},o.createElement("span",{className:a.admonitionIcon},y),m),o.createElement("div",{className:a.admonitionContent},e))}},1415:(n,e,t)=>{"use strict";t.d(e,{Z:()=>i});var o=t(7294),r=t(8397);function i(n){return o.createElement(o.Fragment,null,o.createElement(r.Z,n))}},8573:(n,e,t)=>{"use strict";t.d(e,{Z:()=>m});var o=t(7462),r=t(7294),i=t(2389),s=t(1170),a=t(2138),d=t(4477);const c=n=>n.split(" ").find((n=>n.match(/^section-/)))?.substr(8),l=(n,e)=>{const t=`start-section-${n}`,o=`end-section-${n}`,r=e.split("\n"),i=r.indexOf(r.find((n=>n.includes(t)))),s=r.indexOf(r.find((n=>n.includes(o))));return r.slice(i+1,s).join("\r\n")},g=n=>n.split(" ").find((n=>n.match(/.(js|ts)$/))),u=n=>n.split("\n").filter((n=>!n.match(/section-/))).join("\r\n");function m(n){let{children:e,...m}=n;const p=(0,i.Z)(),f=(0,d.E)(),y=function(n){return r.Children.toArray(n).some((n=>(0,r.isValidElement)(n)))?n:Array.isArray(n)?n.join(""):n}(e),w=f.version,h="string"==typeof y?a.Z:s.Z;if(!m.metastring)return r.createElement(h,(0,o.Z)({key:String(p)},m),y);let b;try{b=t(2502)(`./${w}/src/${g(m.metastring)}`).default}catch{}const k=c(m.metastring);let v;return b&&(v=k?l(k,b):u(b)),r.createElement(h,(0,o.Z)({key:String(p)},m),v||y)}},7058:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n InitConfig,\n ConnectionEventTypes,\n ConnectionStateChangedEvent,\n WsOutboundTransport,\n HttpOutboundTransport,\n DidExchangeState,\n OutOfBandRecord,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\n\n// start-section-1\nconst initializeBobAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label. It also sets the mediator invitation url,\n // because this is most likely required in a mobile environment.\n const config: InitConfig = {\n label: 'demo-agent-bob',\n walletConfig: {\n id: 'mainBob',\n key: 'demoagentbob00000000000000000000',\n },\n autoAcceptConnections: true,\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({ config, dependencies: agentDependencies })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-1\n\n// start-section-2\nconst initializeAcmeAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label.\n const config: InitConfig = {\n label: 'demo-agent-acme',\n walletConfig: {\n id: 'mainAcme',\n key: 'demoagentacme0000000000000000000',\n },\n autoAcceptConnections: true,\n endpoints: ['http://localhost:3001'],\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({ config, dependencies: agentDependencies })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-2\n\n// start-section-3\nconst createNewInvitation = async (agent: Agent) => {\n const outOfBandRecord = await agent.oob.createInvitation()\n\n return {\n invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),\n outOfBandRecord,\n }\n}\n// end-section-3\n\n// start-section-4\nconst createLegacyInvitation = async (agent: Agent) => {\n const { invitation } = await agent.oob.createLegacyInvitation()\n\n return invitation.toUrl({ domain: 'https://example.org' })\n}\n// end-section-4\n\n// start-section-5\nconst receiveInvitation = async (agent: Agent, invitationUrl: string) => {\n const { outOfBandRecord } = await agent.oob.receiveInvitationFromUrl(invitationUrl)\n\n return outOfBandRecord\n}\n// end-section-5\n\n// start-section-6\nconst setupConnectionListener = (agent: Agent, outOfBandRecord: OutOfBandRecord, cb: (...args: any) => void) => {\n agent.events.on(ConnectionEventTypes.ConnectionStateChanged, ({ payload }) => {\n if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return\n if (payload.connectionRecord.state === DidExchangeState.Completed) {\n // the connection is now ready for usage in other protocols!\n console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)\n\n // Custom business logic can be included here\n // In this example we can send a basic message to the connection, but\n // anything is possible\n cb()\n\n // We exit the flow\n process.exit(0)\n }\n })\n}\n\n// end-section-6\n\nconst run = async () => {\n console.log('Initializing Bob agent...')\n const bobAgent = await initializeBobAgent()\n console.log('Initializing Acme agent...')\n const acmeAgent = await initializeAcmeAgent()\n\n console.log('Creating the invitation as Acme...')\n const { outOfBandRecord, invitationUrl } = await createNewInvitation(acmeAgent)\n\n console.log('Listening for connection changes...')\n setupConnectionListener(acmeAgent, outOfBandRecord, () =>\n console.log('We now have an active connection to use in the following tutorials')\n )\n\n console.log('Accepting the invitation as Bob...')\n await receiveInvitation(bobAgent, invitationUrl)\n}\n\nexport default run\n\nvoid run()\n"},2151:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n InitConfig,\n Agent,\n WsOutboundTransport,\n HttpOutboundTransport,\n ConnectionEventTypes,\n ConnectionStateChangedEvent,\n DidExchangeState,\n AutoAcceptCredential,\n CredentialEventTypes,\n CredentialState,\n CredentialStateChangedEvent,\n OutOfBandRecord,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\nimport { Schema } from 'indy-sdk'\nimport fetch from 'node-fetch'\n\nconst getGenesisTransaction = async (url: string) => {\n // Legacy code has a small issue with the call-signature from node-fetch\n // @ts-ignore\n const response = await fetch(url)\n\n return await response.text()\n}\n\n// start-section-1\nconst initializeHolderAgent = async () => {\n const genesisTransactionsBCovrinTestNet = await getGenesisTransaction('http://test.bcovrin.vonx.io/genesis')\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label. It also sets the mediator invitation url,\n // because this is most likely required in a mobile environment.\n const config: InitConfig = {\n label: 'demo-agent-holder',\n walletConfig: {\n id: 'demo-agent-holder',\n key: 'demoagentholder00000000000000000',\n },\n indyLedgers: [\n {\n id: 'bcovrin-test-net',\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: genesisTransactionsBCovrinTestNet,\n },\n ],\n autoAcceptCredentials: AutoAcceptCredential.ContentApproved,\n autoAcceptConnections: true,\n endpoints: ['http://localhost:3002'],\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({ config, dependencies: agentDependencies })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-1\n\n// start-section-2\nconst initializeIssuerAgent = async () => {\n const genesisTransactionsBCovrinTestNet = await getGenesisTransaction('http://test.bcovrin.vonx.io/genesis')\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label.\n const config: InitConfig = {\n label: 'demo-agent-issuer',\n walletConfig: {\n id: 'demo-agent-issuer',\n key: 'demoagentissuer00000000000000000',\n },\n publicDidSeed: 'demoissuerdidseed000000000000000',\n indyLedgers: [\n {\n id: 'bcovrin-test-net',\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: genesisTransactionsBCovrinTestNet,\n },\n ],\n autoAcceptCredentials: AutoAcceptCredential.ContentApproved,\n autoAcceptConnections: true,\n endpoints: ['http://localhost:3001'],\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({ config, dependencies: agentDependencies })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-2\n\n// start-section-3\nconst registerSchema = async (issuer: Agent) =>\n issuer.ledger.registerSchema({ attributes: ['name', 'age'], name: 'Identity', version: '1.0' })\n// end-section-3\n\n// start-section-4\nconst registerCredentialDefinition = async (issuer: Agent, schema: Schema) =>\n issuer.ledger.registerCredentialDefinition({ schema, supportRevocation: false, tag: 'default' })\n// end-section-4\n\n// start-section-5\nconst setupCredentialListener = (holder: Agent) => {\n holder.events.on(CredentialEventTypes.CredentialStateChanged, async ({ payload }) => {\n switch (payload.credentialRecord.state) {\n case CredentialState.OfferReceived:\n console.log('received a credential')\n // custom logic here\n await holder.credentials.acceptOffer({ credentialRecordId: payload.credentialRecord.id })\n case CredentialState.Done:\n console.log(`Credential for credential id ${payload.credentialRecord.id} is accepted`)\n // For demo purposes we exit the program here.\n process.exit(0)\n }\n })\n}\n// end-section-5\n\n// start-section-6\nconst issueCredential = async (issuer: Agent, credentialDefinitionId: string, connectionId: string) =>\n issuer.credentials.offerCredential({\n protocolVersion: 'v1',\n connectionId,\n credentialFormats: {\n indy: {\n credentialDefinitionId,\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n })\n// end-section-6\n\nconst createNewInvitation = async (issuer: Agent) => {\n const outOfBandRecord = await issuer.oob.createInvitation()\n\n return {\n invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),\n outOfBandRecord,\n }\n}\n\nconst receiveInvitation = async (holder: Agent, invitationUrl: string) => {\n const { outOfBandRecord } = await holder.oob.receiveInvitationFromUrl(invitationUrl)\n\n return outOfBandRecord\n}\n\nconst setupConnectionListener = (\n issuer: Agent,\n outOfBandRecord: OutOfBandRecord,\n cb: (...args: any) => Promise\n) => {\n issuer.events.on(ConnectionEventTypes.ConnectionStateChanged, async ({ payload }) => {\n if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return\n if (payload.connectionRecord.state === DidExchangeState.Completed) {\n // the connection is now ready for usage in other protocols!\n console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)\n\n // Custom business logic can be included here\n // In this example we can send a basic message to the connection, but\n // anything is possible\n await cb(payload.connectionRecord.id)\n }\n })\n}\n\nconst flow = (issuer: Agent) => async (connectionId: string) => {\n console.log('Registering the schema...')\n const schema = await registerSchema(issuer)\n console.log('Registering the credential definition...')\n const credentialDefinition = await registerCredentialDefinition(issuer, schema)\n console.log('Issuing the credential...')\n await issueCredential(issuer, credentialDefinition.id, connectionId)\n}\n\nconst run = async () => {\n console.log('Initializing the holder...')\n const holder = await initializeHolderAgent()\n console.log('Initializing the issuer...')\n const issuer = await initializeIssuerAgent()\n\n console.log('Initializing the credential listener...')\n setupCredentialListener(holder)\n\n console.log('Initializing the connection...')\n const { outOfBandRecord, invitationUrl } = await createNewInvitation(issuer)\n setupConnectionListener(issuer, outOfBandRecord, flow(issuer))\n await receiveInvitation(holder, invitationUrl)\n}\n\nvoid run()\n"},3288:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\nimport { Agent, HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\n\n// start-section-1\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({ config, dependencies: agentDependencies })\n// end-section-1\n\n// start-section-2\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\n// end-section-2\n\n// start-section-3\nconst run = async () => {\n try {\n await agent.initialize()\n } catch (e) {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n }\n}\n// end-section-3\n\nvoid run()\n"},420:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\nimport { Agent, HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\n\n// start-section-1\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({ config, dependencies: agentDependencies })\n// end-section-1\n\n// start-section-2\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\nagent.registerInboundTransport(new HttpInboundTransport({ port: 3000 }))\n// end-section-2\n\n// start-section-3\nconst run = async () => {\n try {\n await agent.initialize()\n } catch (e) {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n }\n}\n// end-section-3\n\nvoid run()\n"},5343:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { AskarModule } from '@aries-framework/askar'\nimport {\n Agent,\n InitConfig,\n ConnectionEventTypes,\n ConnectionStateChangedEvent,\n WsOutboundTransport,\n HttpOutboundTransport,\n DidExchangeState,\n OutOfBandRecord,\n ConnectionsModule,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\n// start-section-1\nconst initializeBobAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label. It also sets the mediator invitation url,\n // because this is most likely required in a mobile environment.\n const config: InitConfig = {\n label: 'demo-agent-bob',\n walletConfig: {\n id: 'mainBob',\n key: 'demoagentbob00000000000000000000',\n },\n }\n\n // A new instance of an agent is created here\n // Askar can also be replaced by the indy-sdk if required\n const agent = new Agent({\n config,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n connections: new ConnectionsModule({ autoAcceptConnections: true }),\n },\n dependencies: agentDependencies,\n })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-1\n\n// start-section-2\nconst initializeAcmeAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label.\n const config: InitConfig = {\n label: 'demo-agent-acme',\n walletConfig: {\n id: 'mainAcme',\n key: 'demoagentacme0000000000000000000',\n },\n endpoints: ['http://localhost:3001'],\n }\n\n // A new instance of an agent is created here\n // Askar can also be replaced by the indy-sdk if required\n const agent = new Agent({\n config,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n connections: new ConnectionsModule({ autoAcceptConnections: true }),\n },\n dependencies: agentDependencies,\n })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-2\n\n// start-section-3\nconst createNewInvitation = async (agent: Agent) => {\n const outOfBandRecord = await agent.oob.createInvitation()\n\n return {\n invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),\n outOfBandRecord,\n }\n}\n// end-section-3\n\n// start-section-4\nconst createLegacyInvitation = async (agent: Agent) => {\n const { invitation } = await agent.oob.createLegacyInvitation()\n\n return invitation.toUrl({ domain: 'https://example.org' })\n}\n// end-section-4\n\n// start-section-5\nconst receiveInvitation = async (agent: Agent, invitationUrl: string) => {\n const { outOfBandRecord } = await agent.oob.receiveInvitationFromUrl(invitationUrl)\n\n return outOfBandRecord\n}\n// end-section-5\n\n// start-section-6\nconst setupConnectionListener = (agent: Agent, outOfBandRecord: OutOfBandRecord, cb: (...args: any) => void) => {\n agent.events.on(ConnectionEventTypes.ConnectionStateChanged, ({ payload }) => {\n if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return\n if (payload.connectionRecord.state === DidExchangeState.Completed) {\n // the connection is now ready for usage in other protocols!\n console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)\n\n // Custom business logic can be included here\n // In this example we can send a basic message to the connection, but\n // anything is possible\n cb()\n\n // We exit the flow\n process.exit(0)\n }\n })\n}\n\n// end-section-6\n\nconst run = async () => {\n console.log('Initializing Bob agent...')\n const bobAgent = await initializeBobAgent()\n console.log('Initializing Acme agent...')\n const acmeAgent = await initializeAcmeAgent()\n\n console.log('Creating the invitation as Acme...')\n const { outOfBandRecord, invitationUrl } = await createNewInvitation(acmeAgent)\n\n console.log('Listening for connection changes...')\n setupConnectionListener(acmeAgent, outOfBandRecord, () =>\n console.log('We now have an active connection to use in the following tutorials')\n )\n\n console.log('Accepting the invitation as Bob...')\n await receiveInvitation(bobAgent, invitationUrl)\n}\n\nexport default run\n\nvoid run()\n"},7283:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n CredentialEventTypes,\n CredentialState,\n CredentialStateChangedEvent,\n DidsModule,\n HttpOutboundTransport,\n InitConfig,\n WsOutboundTransport,\n Agent,\n CredentialsModule,\n V2CredentialProtocol,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport {\n IndyVdrAnonCredsRegistry,\n IndyVdrIndyDidRegistrar,\n IndyVdrIndyDidResolver,\n IndyVdrModule,\n} from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport {\n AnonCredsCredentialFormatService,\n AnonCredsModule,\n LegacyIndyCredentialFormatService,\n} from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\n\nconst issuerConfig: InitConfig = {\n label: 'docs-agent-nodejs-issue-a-credential-issuer',\n walletConfig: {\n id: 'wallet-id-issuer',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst holderConfig: InitConfig = {\n label: 'docs-agent-nodejs-issue-a-credential-holder',\n walletConfig: {\n id: 'wallet-id-holder',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nconst issuer = new Agent({\n config: issuerConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n registrars: [new IndyVdrIndyDidRegistrar()],\n resolvers: [new IndyVdrIndyDidResolver()],\n }),\n credentials: new CredentialsModule({\n credentialProtocols: [\n new V2CredentialProtocol({\n credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],\n }),\n ],\n }),\n },\n})\n\n// Register a simple `WebSocket` outbound transport\nissuer.registerOutboundTransport(new WsOutboundTransport())\n\n// Register a simple `Http` outbound transport\nissuer.registerOutboundTransport(new HttpOutboundTransport())\n\n// Register a simple `Http` inbound transport\nissuer.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n// end-section-1\n\n// start-section-2\nconst holder = new Agent({\n config: holderConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n resolvers: [new IndyVdrIndyDidResolver()],\n }),\n credentials: new CredentialsModule({\n credentialProtocols: [\n new V2CredentialProtocol({\n credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],\n }),\n ],\n }),\n },\n})\n\n// Register a simple `WebSocket` outbound transport\nholder.registerOutboundTransport(new WsOutboundTransport())\n\n// Register a simple `Http` outbound transport\nholder.registerOutboundTransport(new HttpOutboundTransport())\n\n// Register a simple `Http` inbound transport\nholder.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n// end-section-2\n\n// start-section-3\nholder.events.on(CredentialEventTypes.CredentialStateChanged, async ({ payload }) => {\n switch (payload.credentialRecord.state) {\n case CredentialState.OfferReceived:\n console.log('received a credential')\n // custom logic here\n await holder.credentials.acceptOffer({ credentialRecordId: payload.credentialRecord.id })\n case CredentialState.Done:\n console.log(`Credential for credential id ${payload.credentialRecord.id} is accepted`)\n // For demo purposes we exit the program here.\n process.exit(0)\n }\n})\n// end-section-3\n\n// start-section-4\nconst indyCredentialExchangeRecord = await issuer.credentials.offerCredential({\n protocolVersion: 'v2',\n connectionId: '',\n credentialFormats: {\n indy: {\n credentialDefinitionId: '',\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n})\n// end-section-4\n\n// start-section-5\nconst anonCredsCredentialExchangeRecord = issuer.credentials.offerCredential({\n protocolVersion: 'v2',\n connectionId: '',\n credentialFormats: {\n anoncreds: {\n credentialDefinitionId: '',\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n})\n// end-section-5\n"},8276:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n ConsoleLogger,\n HttpOutboundTransport,\n InitConfig,\n LogLevel,\n MediationRecipientModule,\n WsOutboundTransport,\n} from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport { agentDependencies } from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// start-section-1\nconst name = 'alice'\n\n// paste your invitation url here\n// or use the current invitation-url to connect to the public animo-mediator.\nconst mediatorInvitationUrl =\n 'https://mediator.dev.animo.id/invite?oob=eyJAdHlwZSI6Imh0dHBzOi8vZGlkY29tbS5vcmcvb3V0LW9mLWJhbmQvMS4xL2ludml0YXRpb24iLCJAaWQiOiIyMDc1MDM4YS05ZGU3LTRiODItYWUxYi1jNzBmNDg4MjYzYTciLCJsYWJlbCI6IkFuaW1vIE1lZGlhdG9yIiwiYWNjZXB0IjpbImRpZGNvbW0vYWlwMSIsImRpZGNvbW0vYWlwMjtlbnY9cmZjMTkiXSwiaGFuZHNoYWtlX3Byb3RvY29scyI6WyJodHRwczovL2RpZGNvbW0ub3JnL2RpZGV4Y2hhbmdlLzEuMCIsImh0dHBzOi8vZGlkY29tbS5vcmcvY29ubmVjdGlvbnMvMS4wIl0sInNlcnZpY2VzIjpbeyJpZCI6IiNpbmxpbmUtMCIsInNlcnZpY2VFbmRwb2ludCI6Imh0dHBzOi8vbWVkaWF0b3IuZGV2LmFuaW1vLmlkIiwidHlwZSI6ImRpZC1jb21tdW5pY2F0aW9uIiwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtvSG9RTUphdU5VUE5OV1pQcEw3RGs1SzNtQ0NDMlBpNDJGY3FwR25iampMcSJdLCJyb3V0aW5nS2V5cyI6W119LHsiaWQiOiIjaW5saW5lLTEiLCJzZXJ2aWNlRW5kcG9pbnQiOiJ3c3M6Ly9tZWRpYXRvci5kZXYuYW5pbW8uaWQiLCJ0eXBlIjoiZGlkLWNvbW11bmljYXRpb24iLCJyZWNpcGllbnRLZXlzIjpbImRpZDprZXk6ejZNa29Ib1FNSmF1TlVQTk5XWlBwTDdEazVLM21DQ0MyUGk0MkZjcXBHbmJqakxxIl0sInJvdXRpbmdLZXlzIjpbXX1dfQ'\n\nconst agentConfig: InitConfig = {\n label: `Aries Framework JavaScript ${name}`,\n walletConfig: {\n id: name,\n key: name,\n },\n logger: new ConsoleLogger(LogLevel.trace),\n}\n\nconst alice = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n mediationRecipient: new MediationRecipientModule({\n mediatorInvitationUrl,\n }),\n indySdk: new IndySdkModule({ indySdk }),\n },\n})\n\nalice.registerOutboundTransport(new HttpOutboundTransport())\nalice.registerOutboundTransport(new WsOutboundTransport())\n\nawait alice.initialize()\n// end-section-1\n"},768:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n ConnectionsModule,\n HttpOutboundTransport,\n InitConfig,\n MediationStateChangedEvent,\n MediatorModule,\n RoutingEventTypes,\n} from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport { HttpInboundTransport, agentDependencies } from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// start-section-1\nconst name = 'mediator'\nconst port = 3001\n\nconst agentConfig: InitConfig = {\n label: `Aries Framework JavaScript ${name}`,\n walletConfig: {\n id: name,\n key: name,\n },\n endpoints: [`http://localhost:${port}`],\n}\n\nconst mediator = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n indySdk: new IndySdkModule({ indySdk }),\n mediator: new MediatorModule({\n autoAcceptMediationRequests: true,\n }),\n connections: new ConnectionsModule({\n autoAcceptConnections: true,\n }),\n },\n})\n\nmediator.registerOutboundTransport(new HttpOutboundTransport())\nmediator.registerInboundTransport(new HttpInboundTransport({ port }))\n\nawait mediator.initialize()\nconst mediatorOutOfBandRecord = await mediator.oob.createInvitation({ multiUseInvitation: true })\n\nconst mediatiorInvitationUrl = mediatorOutOfBandRecord.outOfBandInvitation.toUrl({\n domain: `http://localhost:${port}`,\n})\nconsole.log(mediatiorInvitationUrl)\n// end-section-1\n\nmediator.events\n .observable(RoutingEventTypes.MediationStateChanged)\n .subscribe(({ payload }) => {\n console.log(`${name} mediation state: ${payload.mediationRecord.state}`)\n })\n"},2055:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { DidsModule, InitConfig, KeyType, LogLevel, TypedArrayEncoder } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs-register-schema-and-cred-def',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport {\n IndyVdrAnonCredsRegistry,\n IndyVdrIndyDidRegistrar,\n IndyVdrIndyDidResolver,\n IndyVdrModule,\n} from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\nimport {\n CheqdAnonCredsRegistry,\n CheqdDidRegistrar,\n CheqdDidResolver,\n CheqdModule,\n CheqdModuleConfig,\n} from '@aries-framework/cheqd'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // We do this to have access to a wallet\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n cheqd: new CheqdModule(\n new CheqdModuleConfig({\n networks: [\n {\n network: '',\n cosmosPayerSeed: '',\n },\n ],\n })\n ),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry(), new CheqdAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n registrars: [new IndyVdrIndyDidRegistrar(), new CheqdDidRegistrar()],\n resolvers: [new IndyVdrIndyDidResolver(), new CheqdDidResolver()],\n }),\n },\n})\n// end-section-1\n\n// start-section-2\nconst seed = TypedArrayEncoder.fromString(``) // What you input on bcovrin. Should be kept secure in production!\nconst unqualifiedIndyDid = `` // will be returned after registering seed on bcovrin\nconst indyDid = `did:indy:bcovrin:test:${unqualifiedIndyDid}`\n\nconst cheqdDid = await agent.dids.create({\n method: 'cheqd',\n secret: {\n verificationMethod: {\n id: 'key-1',\n type: 'Ed25519VerificationKey2020',\n },\n },\n options: {\n network: 'testnet',\n methodSpecificIdAlgo: 'uuid',\n },\n})\n\nawait agent.dids.import({\n did: '',\n overwrite: true,\n privateKeys: [\n {\n privateKey: seed,\n keyType: KeyType.Ed25519,\n },\n ],\n})\n// end-section-2\n\n// start-section-3\nconst schemaResult = await agent.modules.anoncreds.registerSchema({\n schema: {\n attrNames: ['name'],\n issuerId: '',\n name: 'Example Schema to register',\n version: '1.0.0',\n },\n options: {},\n})\n\nif (schemaResult.schemaState.state === 'failed') {\n throw new Error(`Error creating schema: ${schemaResult.schemaState.reason}`)\n}\n// end-section-3\n\n// start-section-4\nconst credentialDefinitionResult = await agent.modules.anoncreds.registerCredentialDefinition({\n credentialDefinition: {\n tag: 'default',\n issuerId: '',\n schemaId: schemaResult.schemaState.schemaId,\n },\n options: {},\n})\n\nif (credentialDefinitionResult.credentialDefinitionState.state === 'failed') {\n throw new Error(\n `Error creating credential definition: ${credentialDefinitionResult.credentialDefinitionState.reason}`\n )\n}\n// end-section-4\n"},6596:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport { anoncreds } from '@hyperledger/anoncreds-react-native'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { IndyVdrAnonCredsRegistry } from '@aries-framework/indy-vdr'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // This is included as we need a wallet on our agent\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n anoncreds: new AnonCredsModule({\n // Here we add an Indy VDR registry as an example, any AnonCreds registry\n // can be used\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},3099:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { IndyVdrAnonCredsRegistry } from '@aries-framework/indy-vdr'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // This is included as we need a wallet on our agent\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n anoncreds: new AnonCredsModule({\n // Here we add an Indy VDR registry as an example, any AnonCreds registry\n // can be used\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},8757:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},3716:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},2107:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { DidDocumentService, InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent, DidsModule, KeyType, DidDocument } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport {\n CheqdAnonCredsRegistry,\n CheqdDidRegistrar,\n CheqdDidResolver,\n CheqdModule,\n CheqdModuleConfig,\n CheqdDidCreateOptions,\n} from '@aries-framework/cheqd'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n dids: new DidsModule({\n registrars: [new CheqdDidRegistrar()],\n resolvers: [new CheqdDidResolver()],\n }),\n\n // AnonCreds\n anoncreds: new AnonCredsModule({\n registries: [new CheqdAnonCredsRegistry()],\n }),\n\n // Add cheqd module\n cheqd: new CheqdModule(\n new CheqdModuleConfig({\n networks: [\n {\n network: '',\n cosmosPayerSeed: '',\n },\n ],\n })\n ),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n\n// start-section-2\n\n// create a key pair\nconst key = await agent.wallet.createKey({\n keyType: KeyType.Ed25519,\n})\n\n// encode public key according to the verification method\nconst ed25519PublicKeyBase58 = key.publicKeyBase58\n\n// Create a DID\nawait agent.dids.create({\n method: 'cheqd',\n secret: {},\n options: {\n network: 'testnet',\n },\n didDocument: new DidDocument({\n id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',\n controller: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d'],\n verificationMethod: [\n {\n id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1',\n type: 'Ed25519VerificationKey2018',\n controller: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',\n publicKeyBase58: ed25519PublicKeyBase58,\n },\n ],\n authentication: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1'],\n }),\n})\n// end-section-2\n\n// start-section-3\nawait agent.dids.create({\n method: 'cheqd',\n // the secret contains a the verification method type and id\n secret: {\n verificationMethod: {\n id: 'key-1',\n type: 'Ed25519VerificationKey2020',\n },\n },\n // an optional methodSpecificIdAlgo parameter\n options: {\n network: 'testnet',\n methodSpecificIdAlgo: 'uuid',\n },\n})\n// end-section-3\n\n// start-section-4\nawait agent.dids.update({\n did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n // Updates DID Document with an additional verification method if provided\n secret: {\n verificationMethod: {\n id: 'key-2',\n type: 'JsonWebKey2020',\n },\n },\n didDocument: {\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n controller: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411'],\n verificationMethod: [\n {\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1',\n type: 'Ed25519VerificationKey2020',\n controller: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n publicKeyMultibase: 'z6MknkzLUEP5cxqqsaysNMWoh8NJRb3YsowTCj2D6yhwyEdj',\n },\n ],\n authentication: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1'],\n // updates did document with a service block\n service: [\n new DidDocumentService({\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#rand',\n type: 'rand',\n serviceEndpoint: 'https://rand.in',\n }),\n ],\n },\n})\n// end-section-4\n\n// start-section-5\nawait agent.dids.deactivate({\n did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n // an optional versionId parameter\n options: {\n versionId: '3.0',\n },\n})\n// end-section-5\n"},4056:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport { Agent, InitConfig } from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport {\n agentDependencies,\n IndySdkPostgresStorageConfig,\n loadIndySdkPostgresPlugin,\n IndySdkPostgresWalletScheme,\n} from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// IndySdkPostgresStorageConfig defines interface for the Postgres plugin configuration.\nconst storageConfig = {\n type: 'postgres_storage',\n config: {\n url: 'localhost:5432',\n wallet_scheme: IndySdkPostgresWalletScheme.DatabasePerWallet,\n },\n credentials: {\n account: 'postgres',\n password: 'postgres',\n admin_account: 'postgres',\n admin_password: 'postgres',\n },\n} satisfies IndySdkPostgresStorageConfig\n\n// load the postgres wallet plugin before agent initialization\nloadIndySdkPostgresPlugin(storageConfig.config, storageConfig.credentials)\n\nconst agentConfig: InitConfig = {\n label: 'My Agent',\n // walletConfig.id and walletConfig.key are still required\n walletConfig: {\n id: 'walletId',\n key: 'testKey0000000000000000000000000',\n // storage is added and defines the postgres plugin configuration\n storage: storageConfig,\n },\n}\n\nconst agent = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n"},1002:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport indySdk from 'indy-sdk-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Indy SDK module on the agent\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},2863:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport indySdk from 'indy-sdk'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Indy SDK module on the agent\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n\nawait agent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},9031:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { IndyVdrModule } from '@aries-framework/indy-vdr'\n\nconst modules = {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n indyNamespace: 'bcovrin:test',\n isProduction: false,\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n}\n// end-section-1\n"},4279:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-react-native'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},4437:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nimport { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},6121:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport type { InitConfig } from '@aries-framework/core'\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n// end-section-1\n\n// start-section-2\nimport { HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\n\n// ... agent setup from prevous section ...\n\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\n// end-section-2\n\n// TODO: we probably want to make this more specific to React Native,\n// so using it in a components and recommending to use the react hooks\n// start-section-3\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n// end-section-3\n"},1031:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport type { InitConfig } from '@aries-framework/core'\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n// end-section-1\n\n// start-section-2\nimport { HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\nimport { HttpInboundTransport } from '@aries-framework/node'\n\n// ... agent setup from prevous section ...\n\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\nagent.registerInboundTransport(new HttpInboundTransport({ port: 3000 }))\n// end-section-2\n\n// start-section-3\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n// end-section-3\n"},6033:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { AskarModule } from '@credo-ts/askar'\nimport {\n Agent,\n InitConfig,\n ConnectionEventTypes,\n ConnectionStateChangedEvent,\n WsOutboundTransport,\n HttpOutboundTransport,\n DidExchangeState,\n OutOfBandRecord,\n ConnectionsModule,\n} from '@credo-ts/core'\nimport { agentDependencies, HttpInboundTransport } from '@credo-ts/node'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\n// start-section-1\nconst initializeBobAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label. It also sets the mediator invitation url,\n // because this is most likely required in a mobile environment.\n const config: InitConfig = {\n label: 'demo-agent-bob',\n walletConfig: {\n id: 'mainBob',\n key: 'demoagentbob00000000000000000000',\n },\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({\n config,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n connections: new ConnectionsModule({ autoAcceptConnections: true }),\n },\n dependencies: agentDependencies,\n })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-1\n\n// start-section-2\nconst initializeAcmeAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label.\n const config: InitConfig = {\n label: 'demo-agent-acme',\n walletConfig: {\n id: 'mainAcme',\n key: 'demoagentacme0000000000000000000',\n },\n endpoints: ['http://localhost:3001'],\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({\n config,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n connections: new ConnectionsModule({ autoAcceptConnections: true }),\n },\n dependencies: agentDependencies,\n })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-2\n\n// start-section-3\nconst createNewInvitation = async (agent: Agent) => {\n const outOfBandRecord = await agent.oob.createInvitation()\n\n return {\n invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),\n outOfBandRecord,\n }\n}\n// end-section-3\n\n// start-section-4\nconst createLegacyInvitation = async (agent: Agent) => {\n const { invitation } = await agent.oob.createLegacyInvitation()\n\n return invitation.toUrl({ domain: 'https://example.org' })\n}\n// end-section-4\n\n// start-section-5\nconst receiveInvitation = async (agent: Agent, invitationUrl: string) => {\n const { outOfBandRecord } = await agent.oob.receiveInvitationFromUrl(invitationUrl)\n\n return outOfBandRecord\n}\n// end-section-5\n\n// start-section-6\nconst setupConnectionListener = (agent: Agent, outOfBandRecord: OutOfBandRecord, cb: (...args: any) => void) => {\n agent.events.on(ConnectionEventTypes.ConnectionStateChanged, ({ payload }) => {\n if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return\n if (payload.connectionRecord.state === DidExchangeState.Completed) {\n // the connection is now ready for usage in other protocols!\n console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)\n\n // Custom business logic can be included here\n // In this example we can send a basic message to the connection, but\n // anything is possible\n cb()\n\n // We exit the flow\n process.exit(0)\n }\n })\n}\n\n// end-section-6\n\nconst run = async () => {\n console.log('Initializing Bob agent...')\n const bobAgent = await initializeBobAgent()\n console.log('Initializing Acme agent...')\n const acmeAgent = await initializeAcmeAgent()\n\n console.log('Creating the invitation as Acme...')\n const { outOfBandRecord, invitationUrl } = await createNewInvitation(acmeAgent)\n\n console.log('Listening for connection changes...')\n setupConnectionListener(acmeAgent, outOfBandRecord, () =>\n console.log('We now have an active connection to use in the following tutorials')\n )\n\n console.log('Accepting the invitation as Bob...')\n await receiveInvitation(bobAgent, invitationUrl)\n}\n\nexport default run\n\nvoid run()\n"},5536:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n CredentialEventTypes,\n CredentialState,\n CredentialStateChangedEvent,\n DidsModule,\n HttpOutboundTransport,\n InitConfig,\n WsOutboundTransport,\n Agent,\n CredentialsModule,\n V2CredentialProtocol,\n} from '@credo-ts/core'\nimport { agentDependencies, HttpInboundTransport } from '@credo-ts/node'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport {\n IndyVdrAnonCredsRegistry,\n IndyVdrIndyDidRegistrar,\n IndyVdrIndyDidResolver,\n IndyVdrModule,\n} from '@credo-ts/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport {\n AnonCredsCredentialFormatService,\n AnonCredsModule,\n LegacyIndyCredentialFormatService,\n} from '@credo-ts/anoncreds'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\n\nconst issuerConfig: InitConfig = {\n label: 'docs-agent-nodejs-issue-a-credential-issuer',\n walletConfig: {\n id: 'wallet-id-issuer',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst holderConfig: InitConfig = {\n label: 'docs-agent-nodejs-issue-a-credential-holder',\n walletConfig: {\n id: 'wallet-id-holder',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nconst issuer = new Agent({\n config: issuerConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({\n ariesAskar,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n anoncreds,\n }),\n dids: new DidsModule({\n registrars: [new IndyVdrIndyDidRegistrar()],\n resolvers: [new IndyVdrIndyDidResolver()],\n }),\n credentials: new CredentialsModule({\n credentialProtocols: [\n new V2CredentialProtocol({\n credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],\n }),\n ],\n }),\n },\n})\n\n// Register a simple `WebSocket` outbound transport\nissuer.registerOutboundTransport(new WsOutboundTransport())\n\n// Register a simple `Http` outbound transport\nissuer.registerOutboundTransport(new HttpOutboundTransport())\n\n// Register a simple `Http` inbound transport\nissuer.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n// end-section-1\n\n// start-section-2\nconst holder = new Agent({\n config: holderConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({\n ariesAskar,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n anoncreds,\n }),\n dids: new DidsModule({\n resolvers: [new IndyVdrIndyDidResolver()],\n }),\n credentials: new CredentialsModule({\n credentialProtocols: [\n new V2CredentialProtocol({\n credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],\n }),\n ],\n }),\n },\n})\n\n// Register a simple `WebSocket` outbound transport\nholder.registerOutboundTransport(new WsOutboundTransport())\n\n// Register a simple `Http` outbound transport\nholder.registerOutboundTransport(new HttpOutboundTransport())\n\n// Register a simple `Http` inbound transport\nholder.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n// end-section-2\n\n// start-section-3\nholder.events.on(CredentialEventTypes.CredentialStateChanged, async ({ payload }) => {\n switch (payload.credentialRecord.state) {\n case CredentialState.OfferReceived:\n console.log('received a credential')\n // custom logic here\n await holder.credentials.acceptOffer({ credentialRecordId: payload.credentialRecord.id })\n case CredentialState.Done:\n console.log(`Credential for credential id ${payload.credentialRecord.id} is accepted`)\n // For demo purposes we exit the program here.\n process.exit(0)\n }\n})\n// end-section-3\n\n// start-section-4\nconst indyCredentialExchangeRecord = await issuer.credentials.offerCredential({\n protocolVersion: 'v2',\n connectionId: '',\n credentialFormats: {\n indy: {\n credentialDefinitionId: '',\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n})\n// end-section-4\n\n// start-section-5\nconst anonCredsCredentialExchangeRecord = issuer.credentials.offerCredential({\n protocolVersion: 'v2',\n connectionId: '',\n credentialFormats: {\n anoncreds: {\n credentialDefinitionId: '',\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n})\n// end-section-5\n"},8249:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n ConsoleLogger,\n HttpOutboundTransport,\n InitConfig,\n LogLevel,\n MediationRecipientModule,\n WsOutboundTransport,\n} from '@credo-ts/core'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport { agentDependencies } from '@credo-ts/node'\n\n// start-section-1\nconst name = 'alice'\n\n// paste your invitation url here\n// or use the current invitation-url to connect to the public animo-mediator.\nconst mediatorInvitationUrl =\n 'https://mediator.dev.animo.id/invite?oob=eyJAdHlwZSI6Imh0dHBzOi8vZGlkY29tbS5vcmcvb3V0LW9mLWJhbmQvMS4xL2ludml0YXRpb24iLCJAaWQiOiIyMDc1MDM4YS05ZGU3LTRiODItYWUxYi1jNzBmNDg4MjYzYTciLCJsYWJlbCI6IkFuaW1vIE1lZGlhdG9yIiwiYWNjZXB0IjpbImRpZGNvbW0vYWlwMSIsImRpZGNvbW0vYWlwMjtlbnY9cmZjMTkiXSwiaGFuZHNoYWtlX3Byb3RvY29scyI6WyJodHRwczovL2RpZGNvbW0ub3JnL2RpZGV4Y2hhbmdlLzEuMCIsImh0dHBzOi8vZGlkY29tbS5vcmcvY29ubmVjdGlvbnMvMS4wIl0sInNlcnZpY2VzIjpbeyJpZCI6IiNpbmxpbmUtMCIsInNlcnZpY2VFbmRwb2ludCI6Imh0dHBzOi8vbWVkaWF0b3IuZGV2LmFuaW1vLmlkIiwidHlwZSI6ImRpZC1jb21tdW5pY2F0aW9uIiwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtvSG9RTUphdU5VUE5OV1pQcEw3RGs1SzNtQ0NDMlBpNDJGY3FwR25iampMcSJdLCJyb3V0aW5nS2V5cyI6W119LHsiaWQiOiIjaW5saW5lLTEiLCJzZXJ2aWNlRW5kcG9pbnQiOiJ3c3M6Ly9tZWRpYXRvci5kZXYuYW5pbW8uaWQiLCJ0eXBlIjoiZGlkLWNvbW11bmljYXRpb24iLCJyZWNpcGllbnRLZXlzIjpbImRpZDprZXk6ejZNa29Ib1FNSmF1TlVQTk5XWlBwTDdEazVLM21DQ0MyUGk0MkZjcXBHbmJqakxxIl0sInJvdXRpbmdLZXlzIjpbXX1dfQ'\n\nconst agentConfig: InitConfig = {\n label: `Credo ${name}`,\n walletConfig: {\n id: name,\n key: name,\n },\n logger: new ConsoleLogger(LogLevel.trace),\n}\n\nconst alice = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n mediationRecipient: new MediationRecipientModule({\n mediatorInvitationUrl,\n }),\n askar: new AskarModule({ ariesAskar }),\n },\n})\n\nalice.registerOutboundTransport(new HttpOutboundTransport())\nalice.registerOutboundTransport(new WsOutboundTransport())\n\nawait alice.initialize()\n// end-section-1\n"},1676:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n ConnectionsModule,\n HttpOutboundTransport,\n InitConfig,\n MediationStateChangedEvent,\n MediatorModule,\n RoutingEventTypes,\n} from '@credo-ts/core'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport { HttpInboundTransport, agentDependencies } from '@credo-ts/node'\n\n// start-section-1\nconst name = 'mediator'\nconst port = 3001\n\nconst agentConfig: InitConfig = {\n label: `Credo ${name}`,\n walletConfig: {\n id: name,\n key: name,\n },\n endpoints: [`http://localhost:${port}`],\n}\n\nconst mediator = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n mediator: new MediatorModule({\n autoAcceptMediationRequests: true,\n }),\n connections: new ConnectionsModule({\n autoAcceptConnections: true,\n }),\n },\n})\n\nmediator.registerOutboundTransport(new HttpOutboundTransport())\nmediator.registerInboundTransport(new HttpInboundTransport({ port }))\n\nawait mediator.initialize()\nconst mediatorOutOfBandRecord = await mediator.oob.createInvitation({ multiUseInvitation: true })\n\nconst mediatiorInvitationUrl = mediatorOutOfBandRecord.outOfBandInvitation.toUrl({\n domain: `http://localhost:${port}`,\n})\nconsole.log(mediatiorInvitationUrl)\n// end-section-1\n\nmediator.events\n .observable(RoutingEventTypes.MediationStateChanged)\n .subscribe(({ payload }) => {\n console.log(`${name} mediation state: ${payload.mediationRecord.state}`)\n })\n"},1104:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { DidsModule, InitConfig, KeyType, TypedArrayEncoder } from '@credo-ts/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs-register-schema-and-cred-def',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/node'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport {\n IndyVdrAnonCredsRegistry,\n IndyVdrIndyDidRegistrar,\n IndyVdrIndyDidResolver,\n IndyVdrModule,\n} from '@credo-ts/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { AnonCredsModule } from '@credo-ts/anoncreds'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\nimport {\n CheqdAnonCredsRegistry,\n CheqdDidRegistrar,\n CheqdDidResolver,\n CheqdModule,\n CheqdModuleConfig,\n} from '@credo-ts/cheqd'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // We do this to have access to a wallet\n askar: new AskarModule({\n ariesAskar,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n cheqd: new CheqdModule(\n new CheqdModuleConfig({\n networks: [\n {\n network: '',\n cosmosPayerSeed: '',\n },\n ],\n })\n ),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry(), new CheqdAnonCredsRegistry()],\n anoncreds,\n }),\n dids: new DidsModule({\n registrars: [new IndyVdrIndyDidRegistrar(), new CheqdDidRegistrar()],\n resolvers: [new IndyVdrIndyDidResolver(), new CheqdDidResolver()],\n }),\n },\n})\n// end-section-1\n\n// start-section-2\nconst seed = TypedArrayEncoder.fromString(``) // What you input on bcovrin. Should be kept secure in production!\nconst unqualifiedIndyDid = `` // will be returned after registering seed on bcovrin\nconst indyDid = `did:indy:bcovrin:test:${unqualifiedIndyDid}`\n\nconst cheqdDid = await agent.dids.create({\n method: 'cheqd',\n secret: {\n verificationMethod: {\n id: 'key-1',\n type: 'Ed25519VerificationKey2020',\n },\n },\n options: {\n network: 'testnet',\n methodSpecificIdAlgo: 'uuid',\n },\n})\n\nawait agent.dids.import({\n did: '',\n overwrite: true,\n privateKeys: [\n {\n privateKey: seed,\n keyType: KeyType.Ed25519,\n },\n ],\n})\n// end-section-2\n\n// start-section-3\nconst schemaResult = await agent.modules.anoncreds.registerSchema({\n schema: {\n attrNames: ['name'],\n issuerId: '',\n name: 'Example Schema to register',\n version: '1.0.0',\n },\n options: {},\n})\n\nif (schemaResult.schemaState.state === 'failed') {\n throw new Error(`Error creating schema: ${schemaResult.schemaState.reason}`)\n}\n// end-section-3\n\n// start-section-4\nconst credentialDefinitionResult = await agent.modules.anoncreds.registerCredentialDefinition({\n credentialDefinition: {\n tag: 'default',\n issuerId: '',\n schemaId: schemaResult.schemaState.schemaId,\n },\n options: {\n supportRevocation: false,\n },\n})\n\nif (credentialDefinitionResult.credentialDefinitionState.state === 'failed') {\n throw new Error(\n `Error creating credential definition: ${credentialDefinitionResult.credentialDefinitionState.reason}`\n )\n}\n// end-section-4\n"},8182:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@credo-ts/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/react-native'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport { anoncreds } from '@hyperledger/anoncreds-react-native'\nimport { AnonCredsModule } from '@credo-ts/anoncreds'\nimport { IndyVdrAnonCredsRegistry } from '@credo-ts/indy-vdr'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // This is included as we need a wallet on our agent\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncreds: new AnonCredsModule({\n // Here we add an Indy VDR registry as an example, any AnonCreds registry\n // can be used\n registries: [new IndyVdrAnonCredsRegistry()],\n anoncreds,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},5905:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@credo-ts/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/node'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\nimport { AnonCredsModule } from '@credo-ts/anoncreds'\nimport { IndyVdrAnonCredsRegistry } from '@credo-ts/indy-vdr'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // This is included as we need a wallet on our agent\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncreds: new AnonCredsModule({\n // Here we add an Indy VDR registry as an example, any AnonCreds registry\n // can be used\n registries: [new IndyVdrAnonCredsRegistry()],\n anoncreds,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},3106:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@credo-ts/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/react-native'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},531:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@credo-ts/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/node'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},1638:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { DidDocumentService, InitConfig } from '@credo-ts/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent, DidsModule, KeyType, DidDocument } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/react-native'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport {\n CheqdAnonCredsRegistry,\n CheqdDidRegistrar,\n CheqdDidResolver,\n CheqdModule,\n CheqdModuleConfig,\n CheqdDidCreateOptions,\n} from '@credo-ts/cheqd'\nimport { AnonCredsModule } from '@credo-ts/anoncreds'\nimport { anoncreds } from '@hyperledger/anoncreds-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n dids: new DidsModule({\n registrars: [new CheqdDidRegistrar()],\n resolvers: [new CheqdDidResolver()],\n }),\n\n // AnonCreds\n anoncreds: new AnonCredsModule({\n registries: [new CheqdAnonCredsRegistry()],\n anoncreds,\n }),\n\n // Add cheqd module\n cheqd: new CheqdModule(\n new CheqdModuleConfig({\n networks: [\n {\n network: '',\n cosmosPayerSeed: '',\n },\n ],\n })\n ),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n\n// start-section-2\n\n// create a key pair\nconst key = await agent.wallet.createKey({\n keyType: KeyType.Ed25519,\n})\n\n// encode public key according to the verification method\nconst ed25519PublicKeyBase58 = key.publicKeyBase58\n\n// Create a DID\nawait agent.dids.create({\n method: 'cheqd',\n secret: {},\n options: {\n network: 'testnet',\n },\n didDocument: new DidDocument({\n id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',\n controller: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d'],\n verificationMethod: [\n {\n id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1',\n type: 'Ed25519VerificationKey2018',\n controller: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',\n publicKeyBase58: ed25519PublicKeyBase58,\n },\n ],\n authentication: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1'],\n }),\n})\n// end-section-2\n\n// start-section-3\nawait agent.dids.create({\n method: 'cheqd',\n // the secret contains a the verification method type and id\n secret: {\n verificationMethod: {\n id: 'key-1',\n type: 'Ed25519VerificationKey2020',\n },\n },\n // an optional methodSpecificIdAlgo parameter\n options: {\n network: 'testnet',\n methodSpecificIdAlgo: 'uuid',\n },\n})\n// end-section-3\n\n// start-section-4\nawait agent.dids.update({\n did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n // Updates DID Document with an additional verification method if provided\n secret: {\n verificationMethod: {\n id: 'key-2',\n type: 'JsonWebKey2020',\n },\n },\n didDocument: {\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n controller: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411'],\n verificationMethod: [\n {\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1',\n type: 'Ed25519VerificationKey2020',\n controller: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n publicKeyMultibase: 'z6MknkzLUEP5cxqqsaysNMWoh8NJRb3YsowTCj2D6yhwyEdj',\n },\n ],\n authentication: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1'],\n // updates did document with a service block\n service: [\n new DidDocumentService({\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#rand',\n type: 'rand',\n serviceEndpoint: 'https://rand.in',\n }),\n ],\n },\n})\n// end-section-4\n\n// start-section-5\nawait agent.dids.deactivate({\n did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n // an optional versionId parameter\n options: {\n versionId: '3.0',\n },\n})\n// end-section-5\n"},4613:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { IndyVdrModule } from '@credo-ts/indy-vdr'\n\nconst modules = {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n indyNamespace: 'bcovrin:test',\n isProduction: false,\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n}\n// end-section-1\n"},3995:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@credo-ts/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/react-native'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@credo-ts/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-react-native'\nimport { AnonCredsModule } from '@credo-ts/anoncreds'\nimport { anoncreds } from '@hyperledger/anoncreds-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n anoncreds,\n }),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},5453:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@credo-ts/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/node'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nimport { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@credo-ts/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { AnonCredsModule } from '@credo-ts/anoncreds'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n anoncreds,\n }),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},1308:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport type { InitConfig } from '@credo-ts/core'\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/react-native'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n// end-section-1\n\n// start-section-2\nimport { HttpOutboundTransport, WsOutboundTransport } from '@credo-ts/core'\n\n// ... agent setup from prevous section ...\n\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\n// end-section-2\n\n// TODO: we probably want to make this more specific to React Native,\n// so using it in a components and recommending to use the react hooks\n// start-section-3\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n// end-section-3\n"},2537:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport type { InitConfig } from '@credo-ts/core'\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/node'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n// end-section-1\n\n// start-section-2\nimport { HttpOutboundTransport, WsOutboundTransport } from '@credo-ts/core'\nimport { HttpInboundTransport } from '@credo-ts/node'\n\n// ... agent setup from prevous section ...\n\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\nagent.registerInboundTransport(new HttpInboundTransport({ port: 3000 }))\n// end-section-2\n\n// start-section-3\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n// end-section-3\n"},2502:(n,e,t)=>{var o={"./0.3/node_modules/did-resolver/src/__tests__/resolver.test":349,"./0.3/node_modules/did-resolver/src/__tests__/resolver.test.ts":349,"./0.3/node_modules/did-resolver/src/resolver":5883,"./0.3/node_modules/did-resolver/src/resolver.ts":5883,"./0.3/node_modules/luxon/src/datetime":8105,"./0.3/node_modules/luxon/src/datetime.js":8105,"./0.3/node_modules/luxon/src/duration":6721,"./0.3/node_modules/luxon/src/duration.js":6721,"./0.3/node_modules/luxon/src/errors":4015,"./0.3/node_modules/luxon/src/errors.js":4015,"./0.3/node_modules/luxon/src/impl/conversions":8498,"./0.3/node_modules/luxon/src/impl/conversions.js":8498,"./0.3/node_modules/luxon/src/impl/diff":8998,"./0.3/node_modules/luxon/src/impl/diff.js":8998,"./0.3/node_modules/luxon/src/impl/digits":9310,"./0.3/node_modules/luxon/src/impl/digits.js":9310,"./0.3/node_modules/luxon/src/impl/english":4039,"./0.3/node_modules/luxon/src/impl/english.js":4039,"./0.3/node_modules/luxon/src/impl/formats":5303,"./0.3/node_modules/luxon/src/impl/formats.js":5303,"./0.3/node_modules/luxon/src/impl/formatter":4756,"./0.3/node_modules/luxon/src/impl/formatter.js":4756,"./0.3/node_modules/luxon/src/impl/invalid":760,"./0.3/node_modules/luxon/src/impl/invalid.js":760,"./0.3/node_modules/luxon/src/impl/locale":114,"./0.3/node_modules/luxon/src/impl/locale.js":114,"./0.3/node_modules/luxon/src/impl/regexParser":1990,"./0.3/node_modules/luxon/src/impl/regexParser.js":1990,"./0.3/node_modules/luxon/src/impl/tokenParser":4546,"./0.3/node_modules/luxon/src/impl/tokenParser.js":4546,"./0.3/node_modules/luxon/src/impl/util":7866,"./0.3/node_modules/luxon/src/impl/util.js":7866,"./0.3/node_modules/luxon/src/impl/zoneUtil":9776,"./0.3/node_modules/luxon/src/impl/zoneUtil.js":9776,"./0.3/node_modules/luxon/src/info":6965,"./0.3/node_modules/luxon/src/info.js":6965,"./0.3/node_modules/luxon/src/interval":1591,"./0.3/node_modules/luxon/src/interval.js":1591,"./0.3/node_modules/luxon/src/luxon":8004,"./0.3/node_modules/luxon/src/luxon.js":8004,"./0.3/node_modules/luxon/src/luxonFilled":9972,"./0.3/node_modules/luxon/src/luxonFilled.js":9972,"./0.3/node_modules/luxon/src/settings":2636,"./0.3/node_modules/luxon/src/settings.js":2636,"./0.3/node_modules/luxon/src/zone":6476,"./0.3/node_modules/luxon/src/zone.js":6476,"./0.3/node_modules/luxon/src/zones/IANAZone":3176,"./0.3/node_modules/luxon/src/zones/IANAZone.js":3176,"./0.3/node_modules/luxon/src/zones/fixedOffsetZone":1840,"./0.3/node_modules/luxon/src/zones/fixedOffsetZone.js":1840,"./0.3/node_modules/luxon/src/zones/invalidZone":5092,"./0.3/node_modules/luxon/src/zones/invalidZone.js":5092,"./0.3/node_modules/luxon/src/zones/localZone":5617,"./0.3/node_modules/luxon/src/zones/localZone.js":5617,"./0.3/src/create-a-connection":7058,"./0.3/src/create-a-connection.ts":7058,"./0.3/src/issue-a-credential":2151,"./0.3/src/issue-a-credential.ts":2151,"./0.3/src/set-up":420,"./0.3/src/set-up-rn":3288,"./0.3/src/set-up-rn.ts":3288,"./0.3/src/set-up.ts":420,"./0.4/node_modules/@hyperledger/anoncreds-react-native/android/src/main/AndroidManifest.xml":1960,"./0.4/node_modules/@hyperledger/anoncreds-react-native/android/src/main/java/org/hyperledger/anoncreds/AnoncredsModule.java":8854,"./0.4/node_modules/@hyperledger/anoncreds-react-native/android/src/main/java/org/hyperledger/anoncreds/AnoncredsPackage.java":2510,"./0.4/node_modules/@hyperledger/aries-askar-react-native/android/src/main/AndroidManifest.xml":8339,"./0.4/node_modules/@hyperledger/aries-askar-react-native/android/src/main/java/org/hyperledger/ariesaskar/AriesAskarModule.java":2853,"./0.4/node_modules/@hyperledger/aries-askar-react-native/android/src/main/java/org/hyperledger/ariesaskar/AriesAskarPackage.java":8093,"./0.4/node_modules/@hyperledger/indy-vdr-react-native/android/src/main/AndroidManifest.xml":6666,"./0.4/node_modules/@hyperledger/indy-vdr-react-native/android/src/main/java/org/hyperledger/indyvdr/IndyVdrModule.java":7383,"./0.4/node_modules/@hyperledger/indy-vdr-react-native/android/src/main/java/org/hyperledger/indyvdr/IndyVdrPackage.java":1138,"./0.4/src/create-a-connection":5343,"./0.4/src/create-a-connection.ts":5343,"./0.4/src/issue-a-credential":7283,"./0.4/src/issue-a-credential.ts":7283,"./0.4/src/mediation-recipient":8276,"./0.4/src/mediation-recipient.ts":8276,"./0.4/src/mediator-setup":768,"./0.4/src/mediator-setup.ts":768,"./0.4/src/register-schema-and-cred-def":2055,"./0.4/src/register-schema-and-cred-def.ts":2055,"./0.4/src/set-up":1031,"./0.4/src/set-up-anoncreds-rs":3099,"./0.4/src/set-up-anoncreds-rs-rn":6596,"./0.4/src/set-up-anoncreds-rs-rn.ts":6596,"./0.4/src/set-up-anoncreds-rs.ts":3099,"./0.4/src/set-up-askar":3716,"./0.4/src/set-up-askar-rn":8757,"./0.4/src/set-up-askar-rn.ts":8757,"./0.4/src/set-up-askar.ts":3716,"./0.4/src/set-up-cheqd":2107,"./0.4/src/set-up-cheqd.ts":2107,"./0.4/src/set-up-indy-sdk":2863,"./0.4/src/set-up-indy-sdk-postgres":4056,"./0.4/src/set-up-indy-sdk-postgres.ts":4056,"./0.4/src/set-up-indy-sdk-rn":1002,"./0.4/src/set-up-indy-sdk-rn.ts":1002,"./0.4/src/set-up-indy-sdk.ts":2863,"./0.4/src/set-up-indy-vdr":4437,"./0.4/src/set-up-indy-vdr-config":9031,"./0.4/src/set-up-indy-vdr-config.ts":9031,"./0.4/src/set-up-indy-vdr-rn":4279,"./0.4/src/set-up-indy-vdr-rn.ts":4279,"./0.4/src/set-up-indy-vdr.ts":4437,"./0.4/src/set-up-rn":6121,"./0.4/src/set-up-rn.ts":6121,"./0.4/src/set-up.ts":1031,"./current/src/create-a-connection":6033,"./current/src/create-a-connection.ts":6033,"./current/src/issue-a-credential":5536,"./current/src/issue-a-credential.ts":5536,"./current/src/mediation-recipient":8249,"./current/src/mediation-recipient.ts":8249,"./current/src/mediator-setup":1676,"./current/src/mediator-setup.ts":1676,"./current/src/register-schema-and-cred-def":1104,"./current/src/register-schema-and-cred-def.ts":1104,"./current/src/set-up":2537,"./current/src/set-up-anoncreds":5905,"./current/src/set-up-anoncreds-rn":8182,"./current/src/set-up-anoncreds-rn.ts":8182,"./current/src/set-up-anoncreds.ts":5905,"./current/src/set-up-askar":531,"./current/src/set-up-askar-rn":3106,"./current/src/set-up-askar-rn.ts":3106,"./current/src/set-up-askar.ts":531,"./current/src/set-up-cheqd":1638,"./current/src/set-up-cheqd.ts":1638,"./current/src/set-up-indy-vdr":5453,"./current/src/set-up-indy-vdr-config":4613,"./current/src/set-up-indy-vdr-config.ts":4613,"./current/src/set-up-indy-vdr-rn":3995,"./current/src/set-up-indy-vdr-rn.ts":3995,"./current/src/set-up-indy-vdr.ts":5453,"./current/src/set-up-rn":1308,"./current/src/set-up-rn.ts":1308,"./current/src/set-up.ts":2537};function r(n){var e=i(n);return t(e)}function i(n){if(!t.o(o,n)){var e=new Error("Cannot find module '"+n+"'");throw e.code="MODULE_NOT_FOUND",e}return o[n]}r.keys=function(){return Object.keys(o)},r.resolve=i,n.exports=r,r.id=2502}}]); \ No newline at end of file diff --git a/assets/js/1f391b9e.8f59a356.js b/assets/js/1f391b9e.1b11f611.js similarity index 58% rename from assets/js/1f391b9e.8f59a356.js rename to assets/js/1f391b9e.1b11f611.js index a234b121..c1f2042e 100644 --- a/assets/js/1f391b9e.8f59a356.js +++ b/assets/js/1f391b9e.1b11f611.js @@ -1 +1 @@ -(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[3085,7918],{4247:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>g});var o=t(7294),r=t(6010),i=t(1944),s=t(5281),a=t(7003),d=t(5881),c=t(9407);const l={mdxPageWrapper:"mdxPageWrapper_j9I6"};function g(n){const{content:e}=n,{metadata:{title:t,description:g,frontMatter:u}}=e,{wrapperClassName:m,hide_table_of_contents:p}=u;return o.createElement(i.FG,{className:(0,r.Z)(m??s.k.wrapper.mdxPages,s.k.page.mdxPage)},o.createElement(i.d,{title:t,description:g}),o.createElement(a.Z,null,o.createElement("main",{className:"container container--fluid margin-vert--lg"},o.createElement("div",{className:(0,r.Z)("row",l.mdxPageWrapper)},o.createElement("div",{className:(0,r.Z)("col",!p&&"col--8")},o.createElement("article",null,o.createElement(d.Z,null,o.createElement(e,null)))),!p&&e.toc.length>0&&o.createElement("div",{className:"col col--2"},o.createElement(c.Z,{toc:e.toc,minHeadingLevel:u.toc_min_heading_level,maxHeadingLevel:u.toc_max_heading_level}))))))}},7083:(n,e,t)=>{"use strict";t.d(e,{Z:()=>g});var o=t(7294),r=t(6010),i=t(5281),s=t(5999);const a={admonition:"admonition_WoCw",admonitionHeading:"admonitionHeading_TMsN",admonitionIcon:"admonitionIcon_Ibzs",admonitionContent:"admonitionContent_vXIg"};const d={note:{infimaClassName:"secondary",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))},label:o.createElement(s.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))},label:o.createElement(s.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))},label:o.createElement(s.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))},label:o.createElement(s.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 16 16"},o.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))},label:o.createElement(s.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")},holder:{infimaClassName:"holder",emoji:"\ud83d\uddc4",label:o.createElement(s.Z,{id:"theme.admonition.holder",description:"The default label used for the Caution admonition (:::holder)"},"holder")},issuer:{infimaClassName:"issuer",emoji:"\ud83d\udcc4",label:o.createElement(s.Z,{id:"theme.admonition.issuer",description:"The default label used for the Caution admonition (:::issuer)"},"issuer")},verifier:{infimaClassName:"verifier",emoji:"\ud83d\udc6e",label:o.createElement(s.Z,{id:"theme.admonition.verifier",description:"The default label used for the Verifier admonition (:::verifier)"},"verifier")},bob:{infimaClassName:"bob",emoji:"\ud83e\uddd4",label:o.createElement(s.Z,{id:"theme.admonition.bob",description:"The default label used for the Bob admonition (:::bob)"},"bob")},acme:{infimaClassName:"acme",emoji:"\ud83c\udfe2",label:o.createElement(s.Z,{id:"theme.admonition.acme",description:"The default label used for the acme admonition (:::acme)"},"acme")}},c={secondary:"note",important:"info",success:"tip",warning:"danger"};function l(n){const{mdxAdmonitionTitle:e,rest:t}=function(n){const e=o.Children.toArray(n),t=e.find((n=>o.isValidElement(n)&&"mdxAdmonitionTitle"===n.props?.mdxType)),r=o.createElement(o.Fragment,null,e.filter((n=>n!==t)));return{mdxAdmonitionTitle:t,rest:r}}(n.children);return{...n,title:n.title??e,children:t}}function g(n){const{children:e,type:t,title:s,icon:g}=l(n),u=function(n){const e=c[n]??n,t=d[e];return t||(console.warn(`No admonition config found for admonition type "${e}". Using Info as fallback.`),d.info)}(t),m=s??u.label,{iconComponent:p,emoji:f}=u,w=g??f??o.createElement(p,null);return o.createElement("div",{className:(0,r.Z)(i.k.common.admonition,i.k.common.admonitionType(n.type),"alert",`alert--${u.infimaClassName}`,`admonition-${u.infimaClassName}`,a.admonition)},o.createElement("div",{className:a.admonitionHeading},o.createElement("span",{className:a.admonitionIcon},w),m),o.createElement("div",{className:a.admonitionContent},e))}},1415:(n,e,t)=>{"use strict";t.d(e,{Z:()=>i});var o=t(7294),r=t(8397);function i(n){return o.createElement(o.Fragment,null,o.createElement(r.Z,n))}},8573:(n,e,t)=>{"use strict";t.d(e,{Z:()=>m});var o=t(7462),r=t(7294),i=t(2389),s=t(1170),a=t(2138),d=t(4477);const c=n=>n.split(" ").find((n=>n.match(/^section-/)))?.substr(8),l=(n,e)=>{const t=`start-section-${n}`,o=`end-section-${n}`,r=e.split("\n"),i=r.indexOf(r.find((n=>n.includes(t)))),s=r.indexOf(r.find((n=>n.includes(o))));return r.slice(i+1,s).join("\r\n")},g=n=>n.split(" ").find((n=>n.match(/.(js|ts)$/))),u=n=>n.split("\n").filter((n=>!n.match(/section-/))).join("\r\n");function m(n){let{children:e,...m}=n;const p=(0,i.Z)(),f=(0,d.E)(),w=function(n){return r.Children.toArray(n).some((n=>(0,r.isValidElement)(n)))?n:Array.isArray(n)?n.join(""):n}(e),y=f.version,h="string"==typeof w?a.Z:s.Z;if(!m.metastring)return r.createElement(h,(0,o.Z)({key:String(p)},m),w);let k;try{k=t(2502)(`./${y}/src/${g(m.metastring)}`).default}catch{}const b=c(m.metastring);let C;return k&&(C=b?l(b,k):u(k)),r.createElement(h,(0,o.Z)({key:String(p)},m),C||w)}},7058:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n InitConfig,\n ConnectionEventTypes,\n ConnectionStateChangedEvent,\n WsOutboundTransport,\n HttpOutboundTransport,\n DidExchangeState,\n OutOfBandRecord,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\n\n// start-section-1\nconst initializeBobAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label. It also sets the mediator invitation url,\n // because this is most likely required in a mobile environment.\n const config: InitConfig = {\n label: 'demo-agent-bob',\n walletConfig: {\n id: 'mainBob',\n key: 'demoagentbob00000000000000000000',\n },\n autoAcceptConnections: true,\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({ config, dependencies: agentDependencies })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-1\n\n// start-section-2\nconst initializeAcmeAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label.\n const config: InitConfig = {\n label: 'demo-agent-acme',\n walletConfig: {\n id: 'mainAcme',\n key: 'demoagentacme0000000000000000000',\n },\n autoAcceptConnections: true,\n endpoints: ['http://localhost:3001'],\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({ config, dependencies: agentDependencies })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-2\n\n// start-section-3\nconst createNewInvitation = async (agent: Agent) => {\n const outOfBandRecord = await agent.oob.createInvitation()\n\n return {\n invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),\n outOfBandRecord,\n }\n}\n// end-section-3\n\n// start-section-4\nconst createLegacyInvitation = async (agent: Agent) => {\n const { invitation } = await agent.oob.createLegacyInvitation()\n\n return invitation.toUrl({ domain: 'https://example.org' })\n}\n// end-section-4\n\n// start-section-5\nconst receiveInvitation = async (agent: Agent, invitationUrl: string) => {\n const { outOfBandRecord } = await agent.oob.receiveInvitationFromUrl(invitationUrl)\n\n return outOfBandRecord\n}\n// end-section-5\n\n// start-section-6\nconst setupConnectionListener = (agent: Agent, outOfBandRecord: OutOfBandRecord, cb: (...args: any) => void) => {\n agent.events.on(ConnectionEventTypes.ConnectionStateChanged, ({ payload }) => {\n if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return\n if (payload.connectionRecord.state === DidExchangeState.Completed) {\n // the connection is now ready for usage in other protocols!\n console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)\n\n // Custom business logic can be included here\n // In this example we can send a basic message to the connection, but\n // anything is possible\n cb()\n\n // We exit the flow\n process.exit(0)\n }\n })\n}\n\n// end-section-6\n\nconst run = async () => {\n console.log('Initializing Bob agent...')\n const bobAgent = await initializeBobAgent()\n console.log('Initializing Acme agent...')\n const acmeAgent = await initializeAcmeAgent()\n\n console.log('Creating the invitation as Acme...')\n const { outOfBandRecord, invitationUrl } = await createNewInvitation(acmeAgent)\n\n console.log('Listening for connection changes...')\n setupConnectionListener(acmeAgent, outOfBandRecord, () =>\n console.log('We now have an active connection to use in the following tutorials')\n )\n\n console.log('Accepting the invitation as Bob...')\n await receiveInvitation(bobAgent, invitationUrl)\n}\n\nexport default run\n\nvoid run()\n"},2151:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n InitConfig,\n Agent,\n WsOutboundTransport,\n HttpOutboundTransport,\n ConnectionEventTypes,\n ConnectionStateChangedEvent,\n DidExchangeState,\n AutoAcceptCredential,\n CredentialEventTypes,\n CredentialState,\n CredentialStateChangedEvent,\n OutOfBandRecord,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\nimport { Schema } from 'indy-sdk'\nimport fetch from 'node-fetch'\n\nconst getGenesisTransaction = async (url: string) => {\n // Legacy code has a small issue with the call-signature from node-fetch\n // @ts-ignore\n const response = await fetch(url)\n\n return await response.text()\n}\n\n// start-section-1\nconst initializeHolderAgent = async () => {\n const genesisTransactionsBCovrinTestNet = await getGenesisTransaction('http://test.bcovrin.vonx.io/genesis')\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label. It also sets the mediator invitation url,\n // because this is most likely required in a mobile environment.\n const config: InitConfig = {\n label: 'demo-agent-holder',\n walletConfig: {\n id: 'demo-agent-holder',\n key: 'demoagentholder00000000000000000',\n },\n indyLedgers: [\n {\n id: 'bcovrin-test-net',\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: genesisTransactionsBCovrinTestNet,\n },\n ],\n autoAcceptCredentials: AutoAcceptCredential.ContentApproved,\n autoAcceptConnections: true,\n endpoints: ['http://localhost:3002'],\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({ config, dependencies: agentDependencies })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-1\n\n// start-section-2\nconst initializeIssuerAgent = async () => {\n const genesisTransactionsBCovrinTestNet = await getGenesisTransaction('http://test.bcovrin.vonx.io/genesis')\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label.\n const config: InitConfig = {\n label: 'demo-agent-issuer',\n walletConfig: {\n id: 'demo-agent-issuer',\n key: 'demoagentissuer00000000000000000',\n },\n publicDidSeed: 'demoissuerdidseed000000000000000',\n indyLedgers: [\n {\n id: 'bcovrin-test-net',\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: genesisTransactionsBCovrinTestNet,\n },\n ],\n autoAcceptCredentials: AutoAcceptCredential.ContentApproved,\n autoAcceptConnections: true,\n endpoints: ['http://localhost:3001'],\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({ config, dependencies: agentDependencies })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-2\n\n// start-section-3\nconst registerSchema = async (issuer: Agent) =>\n issuer.ledger.registerSchema({ attributes: ['name', 'age'], name: 'Identity', version: '1.0' })\n// end-section-3\n\n// start-section-4\nconst registerCredentialDefinition = async (issuer: Agent, schema: Schema) =>\n issuer.ledger.registerCredentialDefinition({ schema, supportRevocation: false, tag: 'default' })\n// end-section-4\n\n// start-section-5\nconst setupCredentialListener = (holder: Agent) => {\n holder.events.on(CredentialEventTypes.CredentialStateChanged, async ({ payload }) => {\n switch (payload.credentialRecord.state) {\n case CredentialState.OfferReceived:\n console.log('received a credential')\n // custom logic here\n await holder.credentials.acceptOffer({ credentialRecordId: payload.credentialRecord.id })\n case CredentialState.Done:\n console.log(`Credential for credential id ${payload.credentialRecord.id} is accepted`)\n // For demo purposes we exit the program here.\n process.exit(0)\n }\n })\n}\n// end-section-5\n\n// start-section-6\nconst issueCredential = async (issuer: Agent, credentialDefinitionId: string, connectionId: string) =>\n issuer.credentials.offerCredential({\n protocolVersion: 'v1',\n connectionId,\n credentialFormats: {\n indy: {\n credentialDefinitionId,\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n })\n// end-section-6\n\nconst createNewInvitation = async (issuer: Agent) => {\n const outOfBandRecord = await issuer.oob.createInvitation()\n\n return {\n invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),\n outOfBandRecord,\n }\n}\n\nconst receiveInvitation = async (holder: Agent, invitationUrl: string) => {\n const { outOfBandRecord } = await holder.oob.receiveInvitationFromUrl(invitationUrl)\n\n return outOfBandRecord\n}\n\nconst setupConnectionListener = (\n issuer: Agent,\n outOfBandRecord: OutOfBandRecord,\n cb: (...args: any) => Promise\n) => {\n issuer.events.on(ConnectionEventTypes.ConnectionStateChanged, async ({ payload }) => {\n if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return\n if (payload.connectionRecord.state === DidExchangeState.Completed) {\n // the connection is now ready for usage in other protocols!\n console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)\n\n // Custom business logic can be included here\n // In this example we can send a basic message to the connection, but\n // anything is possible\n await cb(payload.connectionRecord.id)\n }\n })\n}\n\nconst flow = (issuer: Agent) => async (connectionId: string) => {\n console.log('Registering the schema...')\n const schema = await registerSchema(issuer)\n console.log('Registering the credential definition...')\n const credentialDefinition = await registerCredentialDefinition(issuer, schema)\n console.log('Issuing the credential...')\n await issueCredential(issuer, credentialDefinition.id, connectionId)\n}\n\nconst run = async () => {\n console.log('Initializing the holder...')\n const holder = await initializeHolderAgent()\n console.log('Initializing the issuer...')\n const issuer = await initializeIssuerAgent()\n\n console.log('Initializing the credential listener...')\n setupCredentialListener(holder)\n\n console.log('Initializing the connection...')\n const { outOfBandRecord, invitationUrl } = await createNewInvitation(issuer)\n setupConnectionListener(issuer, outOfBandRecord, flow(issuer))\n await receiveInvitation(holder, invitationUrl)\n}\n\nvoid run()\n"},3288:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\nimport { Agent, HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\n\n// start-section-1\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({ config, dependencies: agentDependencies })\n// end-section-1\n\n// start-section-2\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\n// end-section-2\n\n// start-section-3\nconst run = async () => {\n try {\n await agent.initialize()\n } catch (e) {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n }\n}\n// end-section-3\n\nvoid run()\n"},420:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\nimport { Agent, HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\n\n// start-section-1\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({ config, dependencies: agentDependencies })\n// end-section-1\n\n// start-section-2\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\nagent.registerInboundTransport(new HttpInboundTransport({ port: 3000 }))\n// end-section-2\n\n// start-section-3\nconst run = async () => {\n try {\n await agent.initialize()\n } catch (e) {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n }\n}\n// end-section-3\n\nvoid run()\n"},5343:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { AskarModule } from '@aries-framework/askar'\nimport {\n Agent,\n InitConfig,\n ConnectionEventTypes,\n ConnectionStateChangedEvent,\n WsOutboundTransport,\n HttpOutboundTransport,\n DidExchangeState,\n OutOfBandRecord,\n ConnectionsModule,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\n// start-section-1\nconst initializeBobAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label. It also sets the mediator invitation url,\n // because this is most likely required in a mobile environment.\n const config: InitConfig = {\n label: 'demo-agent-bob',\n walletConfig: {\n id: 'mainBob',\n key: 'demoagentbob00000000000000000000',\n },\n }\n\n // A new instance of an agent is created here\n // Askar can also be replaced by the indy-sdk if required\n const agent = new Agent({\n config,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n connections: new ConnectionsModule({ autoAcceptConnections: true }),\n },\n dependencies: agentDependencies,\n })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-1\n\n// start-section-2\nconst initializeAcmeAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label.\n const config: InitConfig = {\n label: 'demo-agent-acme',\n walletConfig: {\n id: 'mainAcme',\n key: 'demoagentacme0000000000000000000',\n },\n endpoints: ['http://localhost:3001'],\n }\n\n // A new instance of an agent is created here\n // Askar can also be replaced by the indy-sdk if required\n const agent = new Agent({\n config,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n connections: new ConnectionsModule({ autoAcceptConnections: true }),\n },\n dependencies: agentDependencies,\n })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-2\n\n// start-section-3\nconst createNewInvitation = async (agent: Agent) => {\n const outOfBandRecord = await agent.oob.createInvitation()\n\n return {\n invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),\n outOfBandRecord,\n }\n}\n// end-section-3\n\n// start-section-4\nconst createLegacyInvitation = async (agent: Agent) => {\n const { invitation } = await agent.oob.createLegacyInvitation()\n\n return invitation.toUrl({ domain: 'https://example.org' })\n}\n// end-section-4\n\n// start-section-5\nconst receiveInvitation = async (agent: Agent, invitationUrl: string) => {\n const { outOfBandRecord } = await agent.oob.receiveInvitationFromUrl(invitationUrl)\n\n return outOfBandRecord\n}\n// end-section-5\n\n// start-section-6\nconst setupConnectionListener = (agent: Agent, outOfBandRecord: OutOfBandRecord, cb: (...args: any) => void) => {\n agent.events.on(ConnectionEventTypes.ConnectionStateChanged, ({ payload }) => {\n if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return\n if (payload.connectionRecord.state === DidExchangeState.Completed) {\n // the connection is now ready for usage in other protocols!\n console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)\n\n // Custom business logic can be included here\n // In this example we can send a basic message to the connection, but\n // anything is possible\n cb()\n\n // We exit the flow\n process.exit(0)\n }\n })\n}\n\n// end-section-6\n\nconst run = async () => {\n console.log('Initializing Bob agent...')\n const bobAgent = await initializeBobAgent()\n console.log('Initializing Acme agent...')\n const acmeAgent = await initializeAcmeAgent()\n\n console.log('Creating the invitation as Acme...')\n const { outOfBandRecord, invitationUrl } = await createNewInvitation(acmeAgent)\n\n console.log('Listening for connection changes...')\n setupConnectionListener(acmeAgent, outOfBandRecord, () =>\n console.log('We now have an active connection to use in the following tutorials')\n )\n\n console.log('Accepting the invitation as Bob...')\n await receiveInvitation(bobAgent, invitationUrl)\n}\n\nexport default run\n\nvoid run()\n"},7283:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n CredentialEventTypes,\n CredentialState,\n CredentialStateChangedEvent,\n DidsModule,\n HttpOutboundTransport,\n InitConfig,\n WsOutboundTransport,\n Agent,\n CredentialsModule,\n V2CredentialProtocol,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport {\n IndyVdrAnonCredsRegistry,\n IndyVdrIndyDidRegistrar,\n IndyVdrIndyDidResolver,\n IndyVdrModule,\n} from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport {\n AnonCredsCredentialFormatService,\n AnonCredsModule,\n LegacyIndyCredentialFormatService,\n} from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\n\nconst issuerConfig: InitConfig = {\n label: 'docs-agent-nodejs-issue-a-credential-issuer',\n walletConfig: {\n id: 'wallet-id-issuer',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst holderConfig: InitConfig = {\n label: 'docs-agent-nodejs-issue-a-credential-holder',\n walletConfig: {\n id: 'wallet-id-holder',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nconst issuer = new Agent({\n config: issuerConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n registrars: [new IndyVdrIndyDidRegistrar()],\n resolvers: [new IndyVdrIndyDidResolver()],\n }),\n credentials: new CredentialsModule({\n credentialProtocols: [\n new V2CredentialProtocol({\n credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],\n }),\n ],\n }),\n },\n})\n\n// Register a simple `WebSocket` outbound transport\nissuer.registerOutboundTransport(new WsOutboundTransport())\n\n// Register a simple `Http` outbound transport\nissuer.registerOutboundTransport(new HttpOutboundTransport())\n\n// Register a simple `Http` inbound transport\nissuer.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n// end-section-1\n\n// start-section-2\nconst holder = new Agent({\n config: holderConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n resolvers: [new IndyVdrIndyDidResolver()],\n }),\n credentials: new CredentialsModule({\n credentialProtocols: [\n new V2CredentialProtocol({\n credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],\n }),\n ],\n }),\n },\n})\n\n// Register a simple `WebSocket` outbound transport\nholder.registerOutboundTransport(new WsOutboundTransport())\n\n// Register a simple `Http` outbound transport\nholder.registerOutboundTransport(new HttpOutboundTransport())\n\n// Register a simple `Http` inbound transport\nholder.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n// end-section-2\n\n// start-section-3\nholder.events.on(CredentialEventTypes.CredentialStateChanged, async ({ payload }) => {\n switch (payload.credentialRecord.state) {\n case CredentialState.OfferReceived:\n console.log('received a credential')\n // custom logic here\n await holder.credentials.acceptOffer({ credentialRecordId: payload.credentialRecord.id })\n case CredentialState.Done:\n console.log(`Credential for credential id ${payload.credentialRecord.id} is accepted`)\n // For demo purposes we exit the program here.\n process.exit(0)\n }\n})\n// end-section-3\n\n// start-section-4\nconst indyCredentialExchangeRecord = await issuer.credentials.offerCredential({\n protocolVersion: 'v2',\n connectionId: '',\n credentialFormats: {\n indy: {\n credentialDefinitionId: '',\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n})\n// end-section-4\n\n// start-section-5\nconst anonCredsCredentialExchangeRecord = issuer.credentials.offerCredential({\n protocolVersion: 'v2',\n connectionId: '',\n credentialFormats: {\n anoncreds: {\n credentialDefinitionId: '',\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n})\n// end-section-5\n"},8276:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n ConsoleLogger,\n HttpOutboundTransport,\n InitConfig,\n LogLevel,\n MediationRecipientModule,\n WsOutboundTransport,\n} from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport { agentDependencies } from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// start-section-1\nconst name = 'alice'\n\n// paste your invitation url here\n// or use the current invitation-url to connect to the public animo-mediator.\nconst mediatorInvitationUrl =\n 'https://mediator.dev.animo.id/invite?oob=eyJAdHlwZSI6Imh0dHBzOi8vZGlkY29tbS5vcmcvb3V0LW9mLWJhbmQvMS4xL2ludml0YXRpb24iLCJAaWQiOiIyMDc1MDM4YS05ZGU3LTRiODItYWUxYi1jNzBmNDg4MjYzYTciLCJsYWJlbCI6IkFuaW1vIE1lZGlhdG9yIiwiYWNjZXB0IjpbImRpZGNvbW0vYWlwMSIsImRpZGNvbW0vYWlwMjtlbnY9cmZjMTkiXSwiaGFuZHNoYWtlX3Byb3RvY29scyI6WyJodHRwczovL2RpZGNvbW0ub3JnL2RpZGV4Y2hhbmdlLzEuMCIsImh0dHBzOi8vZGlkY29tbS5vcmcvY29ubmVjdGlvbnMvMS4wIl0sInNlcnZpY2VzIjpbeyJpZCI6IiNpbmxpbmUtMCIsInNlcnZpY2VFbmRwb2ludCI6Imh0dHBzOi8vbWVkaWF0b3IuZGV2LmFuaW1vLmlkIiwidHlwZSI6ImRpZC1jb21tdW5pY2F0aW9uIiwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtvSG9RTUphdU5VUE5OV1pQcEw3RGs1SzNtQ0NDMlBpNDJGY3FwR25iampMcSJdLCJyb3V0aW5nS2V5cyI6W119LHsiaWQiOiIjaW5saW5lLTEiLCJzZXJ2aWNlRW5kcG9pbnQiOiJ3c3M6Ly9tZWRpYXRvci5kZXYuYW5pbW8uaWQiLCJ0eXBlIjoiZGlkLWNvbW11bmljYXRpb24iLCJyZWNpcGllbnRLZXlzIjpbImRpZDprZXk6ejZNa29Ib1FNSmF1TlVQTk5XWlBwTDdEazVLM21DQ0MyUGk0MkZjcXBHbmJqakxxIl0sInJvdXRpbmdLZXlzIjpbXX1dfQ'\n\nconst agentConfig: InitConfig = {\n label: `Aries Framework JavaScript ${name}`,\n walletConfig: {\n id: name,\n key: name,\n },\n logger: new ConsoleLogger(LogLevel.trace),\n}\n\nconst alice = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n mediationRecipient: new MediationRecipientModule({\n mediatorInvitationUrl,\n }),\n indySdk: new IndySdkModule({ indySdk }),\n },\n})\n\nalice.registerOutboundTransport(new HttpOutboundTransport())\nalice.registerOutboundTransport(new WsOutboundTransport())\n\nawait alice.initialize()\n// end-section-1\n"},768:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n ConnectionsModule,\n HttpOutboundTransport,\n InitConfig,\n MediationStateChangedEvent,\n MediatorModule,\n RoutingEventTypes,\n} from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport { HttpInboundTransport, agentDependencies } from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// start-section-1\nconst name = 'mediator'\nconst port = 3001\n\nconst agentConfig: InitConfig = {\n label: `Aries Framework JavaScript ${name}`,\n walletConfig: {\n id: name,\n key: name,\n },\n endpoints: [`http://localhost:${port}`],\n}\n\nconst mediator = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n indySdk: new IndySdkModule({ indySdk }),\n mediator: new MediatorModule({\n autoAcceptMediationRequests: true,\n }),\n connections: new ConnectionsModule({\n autoAcceptConnections: true,\n }),\n },\n})\n\nmediator.registerOutboundTransport(new HttpOutboundTransport())\nmediator.registerInboundTransport(new HttpInboundTransport({ port }))\n\nawait mediator.initialize()\nconst mediatorOutOfBandRecord = await mediator.oob.createInvitation({ multiUseInvitation: true })\n\nconst mediatiorInvitationUrl = mediatorOutOfBandRecord.outOfBandInvitation.toUrl({\n domain: `http://localhost:${port}`,\n})\nconsole.log(mediatiorInvitationUrl)\n// end-section-1\n\nmediator.events\n .observable(RoutingEventTypes.MediationStateChanged)\n .subscribe(({ payload }) => {\n console.log(`${name} mediation state: ${payload.mediationRecord.state}`)\n })\n"},2055:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { DidsModule, InitConfig, KeyType, LogLevel, TypedArrayEncoder } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs-register-schema-and-cred-def',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport {\n IndyVdrAnonCredsRegistry,\n IndyVdrIndyDidRegistrar,\n IndyVdrIndyDidResolver,\n IndyVdrModule,\n} from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\nimport {\n CheqdAnonCredsRegistry,\n CheqdDidRegistrar,\n CheqdDidResolver,\n CheqdModule,\n CheqdModuleConfig,\n} from '@aries-framework/cheqd'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // We do this to have access to a wallet\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n cheqd: new CheqdModule(\n new CheqdModuleConfig({\n networks: [\n {\n network: '',\n cosmosPayerSeed: '',\n },\n ],\n })\n ),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry(), new CheqdAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n registrars: [new IndyVdrIndyDidRegistrar(), new CheqdDidRegistrar()],\n resolvers: [new IndyVdrIndyDidResolver(), new CheqdDidResolver()],\n }),\n },\n})\n// end-section-1\n\n// start-section-2\nconst seed = TypedArrayEncoder.fromString(``) // What you input on bcovrin. Should be kept secure in production!\nconst unqualifiedIndyDid = `` // will be returned after registering seed on bcovrin\nconst indyDid = `did:indy:bcovrin:test:${unqualifiedIndyDid}`\n\nconst cheqdDid = await agent.dids.create({\n method: 'cheqd',\n secret: {\n verificationMethod: {\n id: 'key-1',\n type: 'Ed25519VerificationKey2020',\n },\n },\n options: {\n network: 'testnet',\n methodSpecificIdAlgo: 'uuid',\n },\n})\n\nawait agent.dids.import({\n did: '',\n overwrite: true,\n privateKeys: [\n {\n privateKey: seed,\n keyType: KeyType.Ed25519,\n },\n ],\n})\n// end-section-2\n\n// start-section-3\nconst schemaResult = await agent.modules.anoncreds.registerSchema({\n schema: {\n attrNames: ['name'],\n issuerId: '',\n name: 'Example Schema to register',\n version: '1.0.0',\n },\n options: {},\n})\n\nif (schemaResult.schemaState.state === 'failed') {\n throw new Error(`Error creating schema: ${schemaResult.schemaState.reason}`)\n}\n// end-section-3\n\n// start-section-4\nconst credentialDefinitionResult = await agent.modules.anoncreds.registerCredentialDefinition({\n credentialDefinition: {\n tag: 'default',\n issuerId: '',\n schemaId: schemaResult.schemaState.schemaId,\n },\n options: {},\n})\n\nif (credentialDefinitionResult.credentialDefinitionState.state === 'failed') {\n throw new Error(\n `Error creating credential definition: ${credentialDefinitionResult.credentialDefinitionState.reason}`\n )\n}\n// end-section-4\n"},6596:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport { anoncreds } from '@hyperledger/anoncreds-react-native'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { IndyVdrAnonCredsRegistry } from '@aries-framework/indy-vdr'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // This is included as we need a wallet on our agent\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n anoncreds: new AnonCredsModule({\n // Here we add an Indy VDR registry as an example, any AnonCreds registry\n // can be used\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},3099:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { IndyVdrAnonCredsRegistry } from '@aries-framework/indy-vdr'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // This is included as we need a wallet on our agent\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n anoncreds: new AnonCredsModule({\n // Here we add an Indy VDR registry as an example, any AnonCreds registry\n // can be used\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},8757:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},3716:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},2107:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { DidDocumentService, InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent, DidsModule, KeyType, DidDocument } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport {\n CheqdAnonCredsRegistry,\n CheqdDidRegistrar,\n CheqdDidResolver,\n CheqdModule,\n CheqdModuleConfig,\n CheqdDidCreateOptions,\n} from '@aries-framework/cheqd'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n dids: new DidsModule({\n registrars: [new CheqdDidRegistrar()],\n resolvers: [new CheqdDidResolver()],\n }),\n\n // AnonCreds\n anoncreds: new AnonCredsModule({\n registries: [new CheqdAnonCredsRegistry()],\n }),\n\n // Add cheqd module\n cheqd: new CheqdModule(\n new CheqdModuleConfig({\n networks: [\n {\n network: '',\n cosmosPayerSeed: '',\n },\n ],\n })\n ),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n\n// start-section-2\n\n// create a key pair\nconst key = await agent.wallet.createKey({\n keyType: KeyType.Ed25519,\n})\n\n// encode public key according to the verification method\nconst ed25519PublicKeyBase58 = key.publicKeyBase58\n\n// Create a DID\nawait agent.dids.create({\n method: 'cheqd',\n secret: {},\n options: {\n network: 'testnet',\n },\n didDocument: new DidDocument({\n id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',\n controller: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d'],\n verificationMethod: [\n {\n id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1',\n type: 'Ed25519VerificationKey2018',\n controller: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',\n publicKeyBase58: ed25519PublicKeyBase58,\n },\n ],\n authentication: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1'],\n }),\n})\n// end-section-2\n\n// start-section-3\nawait agent.dids.create({\n method: 'cheqd',\n // the secret contains a the verification method type and id\n secret: {\n verificationMethod: {\n id: 'key-1',\n type: 'Ed25519VerificationKey2020',\n },\n },\n // an optional methodSpecificIdAlgo parameter\n options: {\n network: 'testnet',\n methodSpecificIdAlgo: 'uuid',\n },\n})\n// end-section-3\n\n// start-section-4\nawait agent.dids.update({\n did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n // Updates DID Document with an additional verification method if provided\n secret: {\n verificationMethod: {\n id: 'key-2',\n type: 'JsonWebKey2020',\n },\n },\n didDocument: {\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n controller: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411'],\n verificationMethod: [\n {\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1',\n type: 'Ed25519VerificationKey2020',\n controller: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n publicKeyMultibase: 'z6MknkzLUEP5cxqqsaysNMWoh8NJRb3YsowTCj2D6yhwyEdj',\n },\n ],\n authentication: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1'],\n // updates did document with a service block\n service: [\n new DidDocumentService({\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#rand',\n type: 'rand',\n serviceEndpoint: 'https://rand.in',\n }),\n ],\n },\n})\n// end-section-4\n\n// start-section-5\nawait agent.dids.deactivate({\n did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n // an optional versionId parameter\n options: {\n versionId: '3.0',\n },\n})\n// end-section-5\n"},4056:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport { Agent, InitConfig } from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport {\n agentDependencies,\n IndySdkPostgresStorageConfig,\n loadIndySdkPostgresPlugin,\n IndySdkPostgresWalletScheme,\n} from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// IndySdkPostgresStorageConfig defines interface for the Postgres plugin configuration.\nconst storageConfig = {\n type: 'postgres_storage',\n config: {\n url: 'localhost:5432',\n wallet_scheme: IndySdkPostgresWalletScheme.DatabasePerWallet,\n },\n credentials: {\n account: 'postgres',\n password: 'postgres',\n admin_account: 'postgres',\n admin_password: 'postgres',\n },\n} satisfies IndySdkPostgresStorageConfig\n\n// load the postgres wallet plugin before agent initialization\nloadIndySdkPostgresPlugin(storageConfig.config, storageConfig.credentials)\n\nconst agentConfig: InitConfig = {\n label: 'My Agent',\n // walletConfig.id and walletConfig.key are still required\n walletConfig: {\n id: 'walletId',\n key: 'testKey0000000000000000000000000',\n // storage is added and defines the postgres plugin configuration\n storage: storageConfig,\n },\n}\n\nconst agent = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n"},1002:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport indySdk from 'indy-sdk-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Indy SDK module on the agent\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},2863:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport indySdk from 'indy-sdk'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Indy SDK module on the agent\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n\nawait agent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},9031:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { IndyVdrModule } from '@aries-framework/indy-vdr'\n\nconst modules = {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n indyNamespace: 'bcovrin:test',\n isProduction: false,\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n}\n// end-section-1\n"},4279:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-react-native'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},4437:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nimport { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},6121:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport type { InitConfig } from '@aries-framework/core'\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n// end-section-1\n\n// start-section-2\nimport { HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\n\n// ... agent setup from prevous section ...\n\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\n// end-section-2\n\n// TODO: we probably want to make this more specific to React Native,\n// so using it in a components and recommending to use the react hooks\n// start-section-3\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n// end-section-3\n"},1031:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport type { InitConfig } from '@aries-framework/core'\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n// end-section-1\n\n// start-section-2\nimport { HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\nimport { HttpInboundTransport } from '@aries-framework/node'\n\n// ... agent setup from prevous section ...\n\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\nagent.registerInboundTransport(new HttpInboundTransport({ port: 3000 }))\n// end-section-2\n\n// start-section-3\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n// end-section-3\n"},6033:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { AskarModule } from '@aries-framework/askar'\nimport {\n Agent,\n InitConfig,\n ConnectionEventTypes,\n ConnectionStateChangedEvent,\n WsOutboundTransport,\n HttpOutboundTransport,\n DidExchangeState,\n OutOfBandRecord,\n ConnectionsModule,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\n// start-section-1\nconst initializeBobAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label. It also sets the mediator invitation url,\n // because this is most likely required in a mobile environment.\n const config: InitConfig = {\n label: 'demo-agent-bob',\n walletConfig: {\n id: 'mainBob',\n key: 'demoagentbob00000000000000000000',\n },\n }\n\n // A new instance of an agent is created here\n // Askar can also be replaced by the indy-sdk if required\n const agent = new Agent({\n config,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n connections: new ConnectionsModule({ autoAcceptConnections: true }),\n },\n dependencies: agentDependencies,\n })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-1\n\n// start-section-2\nconst initializeAcmeAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label.\n const config: InitConfig = {\n label: 'demo-agent-acme',\n walletConfig: {\n id: 'mainAcme',\n key: 'demoagentacme0000000000000000000',\n },\n endpoints: ['http://localhost:3001'],\n }\n\n // A new instance of an agent is created here\n // Askar can also be replaced by the indy-sdk if required\n const agent = new Agent({\n config,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n connections: new ConnectionsModule({ autoAcceptConnections: true }),\n },\n dependencies: agentDependencies,\n })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-2\n\n// start-section-3\nconst createNewInvitation = async (agent: Agent) => {\n const outOfBandRecord = await agent.oob.createInvitation()\n\n return {\n invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),\n outOfBandRecord,\n }\n}\n// end-section-3\n\n// start-section-4\nconst createLegacyInvitation = async (agent: Agent) => {\n const { invitation } = await agent.oob.createLegacyInvitation()\n\n return invitation.toUrl({ domain: 'https://example.org' })\n}\n// end-section-4\n\n// start-section-5\nconst receiveInvitation = async (agent: Agent, invitationUrl: string) => {\n const { outOfBandRecord } = await agent.oob.receiveInvitationFromUrl(invitationUrl)\n\n return outOfBandRecord\n}\n// end-section-5\n\n// start-section-6\nconst setupConnectionListener = (agent: Agent, outOfBandRecord: OutOfBandRecord, cb: (...args: any) => void) => {\n agent.events.on(ConnectionEventTypes.ConnectionStateChanged, ({ payload }) => {\n if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return\n if (payload.connectionRecord.state === DidExchangeState.Completed) {\n // the connection is now ready for usage in other protocols!\n console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)\n\n // Custom business logic can be included here\n // In this example we can send a basic message to the connection, but\n // anything is possible\n cb()\n\n // We exit the flow\n process.exit(0)\n }\n })\n}\n\n// end-section-6\n\nconst run = async () => {\n console.log('Initializing Bob agent...')\n const bobAgent = await initializeBobAgent()\n console.log('Initializing Acme agent...')\n const acmeAgent = await initializeAcmeAgent()\n\n console.log('Creating the invitation as Acme...')\n const { outOfBandRecord, invitationUrl } = await createNewInvitation(acmeAgent)\n\n console.log('Listening for connection changes...')\n setupConnectionListener(acmeAgent, outOfBandRecord, () =>\n console.log('We now have an active connection to use in the following tutorials')\n )\n\n console.log('Accepting the invitation as Bob...')\n await receiveInvitation(bobAgent, invitationUrl)\n}\n\nexport default run\n\nvoid run()\n"},5536:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n CredentialEventTypes,\n CredentialState,\n CredentialStateChangedEvent,\n DidsModule,\n HttpOutboundTransport,\n InitConfig,\n WsOutboundTransport,\n Agent,\n CredentialsModule,\n V2CredentialProtocol,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport {\n IndyVdrAnonCredsRegistry,\n IndyVdrIndyDidRegistrar,\n IndyVdrIndyDidResolver,\n IndyVdrModule,\n} from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport {\n AnonCredsCredentialFormatService,\n AnonCredsModule,\n LegacyIndyCredentialFormatService,\n} from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\n\nconst issuerConfig: InitConfig = {\n label: 'docs-agent-nodejs-issue-a-credential-issuer',\n walletConfig: {\n id: 'wallet-id-issuer',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst holderConfig: InitConfig = {\n label: 'docs-agent-nodejs-issue-a-credential-holder',\n walletConfig: {\n id: 'wallet-id-holder',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nconst issuer = new Agent({\n config: issuerConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n registrars: [new IndyVdrIndyDidRegistrar()],\n resolvers: [new IndyVdrIndyDidResolver()],\n }),\n credentials: new CredentialsModule({\n credentialProtocols: [\n new V2CredentialProtocol({\n credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],\n }),\n ],\n }),\n },\n})\n\n// Register a simple `WebSocket` outbound transport\nissuer.registerOutboundTransport(new WsOutboundTransport())\n\n// Register a simple `Http` outbound transport\nissuer.registerOutboundTransport(new HttpOutboundTransport())\n\n// Register a simple `Http` inbound transport\nissuer.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n// end-section-1\n\n// start-section-2\nconst holder = new Agent({\n config: holderConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n resolvers: [new IndyVdrIndyDidResolver()],\n }),\n credentials: new CredentialsModule({\n credentialProtocols: [\n new V2CredentialProtocol({\n credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],\n }),\n ],\n }),\n },\n})\n\n// Register a simple `WebSocket` outbound transport\nholder.registerOutboundTransport(new WsOutboundTransport())\n\n// Register a simple `Http` outbound transport\nholder.registerOutboundTransport(new HttpOutboundTransport())\n\n// Register a simple `Http` inbound transport\nholder.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n// end-section-2\n\n// start-section-3\nholder.events.on(CredentialEventTypes.CredentialStateChanged, async ({ payload }) => {\n switch (payload.credentialRecord.state) {\n case CredentialState.OfferReceived:\n console.log('received a credential')\n // custom logic here\n await holder.credentials.acceptOffer({ credentialRecordId: payload.credentialRecord.id })\n case CredentialState.Done:\n console.log(`Credential for credential id ${payload.credentialRecord.id} is accepted`)\n // For demo purposes we exit the program here.\n process.exit(0)\n }\n})\n// end-section-3\n\n// start-section-4\nconst indyCredentialExchangeRecord = await issuer.credentials.offerCredential({\n protocolVersion: 'v2',\n connectionId: '',\n credentialFormats: {\n indy: {\n credentialDefinitionId: '',\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n})\n// end-section-4\n\n// start-section-5\nconst anonCredsCredentialExchangeRecord = issuer.credentials.offerCredential({\n protocolVersion: 'v2',\n connectionId: '',\n credentialFormats: {\n anoncreds: {\n credentialDefinitionId: '',\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n})\n// end-section-5\n"},8249:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n ConsoleLogger,\n HttpOutboundTransport,\n InitConfig,\n LogLevel,\n MediationRecipientModule,\n WsOutboundTransport,\n} from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport { agentDependencies } from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// start-section-1\nconst name = 'alice'\n\n// paste your invitation url here\n// or use the current invitation-url to connect to the public animo-mediator.\nconst mediatorInvitationUrl =\n 'https://mediator.dev.animo.id/invite?oob=eyJAdHlwZSI6Imh0dHBzOi8vZGlkY29tbS5vcmcvb3V0LW9mLWJhbmQvMS4xL2ludml0YXRpb24iLCJAaWQiOiIyMDc1MDM4YS05ZGU3LTRiODItYWUxYi1jNzBmNDg4MjYzYTciLCJsYWJlbCI6IkFuaW1vIE1lZGlhdG9yIiwiYWNjZXB0IjpbImRpZGNvbW0vYWlwMSIsImRpZGNvbW0vYWlwMjtlbnY9cmZjMTkiXSwiaGFuZHNoYWtlX3Byb3RvY29scyI6WyJodHRwczovL2RpZGNvbW0ub3JnL2RpZGV4Y2hhbmdlLzEuMCIsImh0dHBzOi8vZGlkY29tbS5vcmcvY29ubmVjdGlvbnMvMS4wIl0sInNlcnZpY2VzIjpbeyJpZCI6IiNpbmxpbmUtMCIsInNlcnZpY2VFbmRwb2ludCI6Imh0dHBzOi8vbWVkaWF0b3IuZGV2LmFuaW1vLmlkIiwidHlwZSI6ImRpZC1jb21tdW5pY2F0aW9uIiwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtvSG9RTUphdU5VUE5OV1pQcEw3RGs1SzNtQ0NDMlBpNDJGY3FwR25iampMcSJdLCJyb3V0aW5nS2V5cyI6W119LHsiaWQiOiIjaW5saW5lLTEiLCJzZXJ2aWNlRW5kcG9pbnQiOiJ3c3M6Ly9tZWRpYXRvci5kZXYuYW5pbW8uaWQiLCJ0eXBlIjoiZGlkLWNvbW11bmljYXRpb24iLCJyZWNpcGllbnRLZXlzIjpbImRpZDprZXk6ejZNa29Ib1FNSmF1TlVQTk5XWlBwTDdEazVLM21DQ0MyUGk0MkZjcXBHbmJqakxxIl0sInJvdXRpbmdLZXlzIjpbXX1dfQ'\n\nconst agentConfig: InitConfig = {\n label: `Credo ${name}`,\n walletConfig: {\n id: name,\n key: name,\n },\n logger: new ConsoleLogger(LogLevel.trace),\n}\n\nconst alice = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n mediationRecipient: new MediationRecipientModule({\n mediatorInvitationUrl,\n }),\n indySdk: new IndySdkModule({ indySdk }),\n },\n})\n\nalice.registerOutboundTransport(new HttpOutboundTransport())\nalice.registerOutboundTransport(new WsOutboundTransport())\n\nawait alice.initialize()\n// end-section-1\n"},1676:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n ConnectionsModule,\n HttpOutboundTransport,\n InitConfig,\n MediationStateChangedEvent,\n MediatorModule,\n RoutingEventTypes,\n} from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport { HttpInboundTransport, agentDependencies } from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// start-section-1\nconst name = 'mediator'\nconst port = 3001\n\nconst agentConfig: InitConfig = {\n label: `Credo ${name}`,\n walletConfig: {\n id: name,\n key: name,\n },\n endpoints: [`http://localhost:${port}`],\n}\n\nconst mediator = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n indySdk: new IndySdkModule({ indySdk }),\n mediator: new MediatorModule({\n autoAcceptMediationRequests: true,\n }),\n connections: new ConnectionsModule({\n autoAcceptConnections: true,\n }),\n },\n})\n\nmediator.registerOutboundTransport(new HttpOutboundTransport())\nmediator.registerInboundTransport(new HttpInboundTransport({ port }))\n\nawait mediator.initialize()\nconst mediatorOutOfBandRecord = await mediator.oob.createInvitation({ multiUseInvitation: true })\n\nconst mediatiorInvitationUrl = mediatorOutOfBandRecord.outOfBandInvitation.toUrl({\n domain: `http://localhost:${port}`,\n})\nconsole.log(mediatiorInvitationUrl)\n// end-section-1\n\nmediator.events\n .observable(RoutingEventTypes.MediationStateChanged)\n .subscribe(({ payload }) => {\n console.log(`${name} mediation state: ${payload.mediationRecord.state}`)\n })\n"},1104:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { DidsModule, InitConfig, KeyType, LogLevel, TypedArrayEncoder } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs-register-schema-and-cred-def',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport {\n IndyVdrAnonCredsRegistry,\n IndyVdrIndyDidRegistrar,\n IndyVdrIndyDidResolver,\n IndyVdrModule,\n} from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\nimport {\n CheqdAnonCredsRegistry,\n CheqdDidRegistrar,\n CheqdDidResolver,\n CheqdModule,\n CheqdModuleConfig,\n} from '@aries-framework/cheqd'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // We do this to have access to a wallet\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n cheqd: new CheqdModule(\n new CheqdModuleConfig({\n networks: [\n {\n network: '',\n cosmosPayerSeed: '',\n },\n ],\n })\n ),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry(), new CheqdAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n registrars: [new IndyVdrIndyDidRegistrar(), new CheqdDidRegistrar()],\n resolvers: [new IndyVdrIndyDidResolver(), new CheqdDidResolver()],\n }),\n },\n})\n// end-section-1\n\n// start-section-2\nconst seed = TypedArrayEncoder.fromString(``) // What you input on bcovrin. Should be kept secure in production!\nconst unqualifiedIndyDid = `` // will be returned after registering seed on bcovrin\nconst indyDid = `did:indy:bcovrin:test:${unqualifiedIndyDid}`\n\nconst cheqdDid = await agent.dids.create({\n method: 'cheqd',\n secret: {\n verificationMethod: {\n id: 'key-1',\n type: 'Ed25519VerificationKey2020',\n },\n },\n options: {\n network: 'testnet',\n methodSpecificIdAlgo: 'uuid',\n },\n})\n\nawait agent.dids.import({\n did: '',\n overwrite: true,\n privateKeys: [\n {\n privateKey: seed,\n keyType: KeyType.Ed25519,\n },\n ],\n})\n// end-section-2\n\n// start-section-3\nconst schemaResult = await agent.modules.anoncreds.registerSchema({\n schema: {\n attrNames: ['name'],\n issuerId: '',\n name: 'Example Schema to register',\n version: '1.0.0',\n },\n options: {},\n})\n\nif (schemaResult.schemaState.state === 'failed') {\n throw new Error(`Error creating schema: ${schemaResult.schemaState.reason}`)\n}\n// end-section-3\n\n// start-section-4\nconst credentialDefinitionResult = await agent.modules.anoncreds.registerCredentialDefinition({\n credentialDefinition: {\n tag: 'default',\n issuerId: '',\n schemaId: schemaResult.schemaState.schemaId,\n },\n options: {},\n})\n\nif (credentialDefinitionResult.credentialDefinitionState.state === 'failed') {\n throw new Error(\n `Error creating credential definition: ${credentialDefinitionResult.credentialDefinitionState.reason}`\n )\n}\n// end-section-4\n"},8001:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport { anoncreds } from '@hyperledger/anoncreds-react-native'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { IndyVdrAnonCredsRegistry } from '@aries-framework/indy-vdr'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // This is included as we need a wallet on our agent\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n anoncreds: new AnonCredsModule({\n // Here we add an Indy VDR registry as an example, any AnonCreds registry\n // can be used\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},5712:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { IndyVdrAnonCredsRegistry } from '@aries-framework/indy-vdr'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // This is included as we need a wallet on our agent\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n anoncreds: new AnonCredsModule({\n // Here we add an Indy VDR registry as an example, any AnonCreds registry\n // can be used\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},3106:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},531:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},1638:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { DidDocumentService, InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent, DidsModule, KeyType, DidDocument } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport {\n CheqdAnonCredsRegistry,\n CheqdDidRegistrar,\n CheqdDidResolver,\n CheqdModule,\n CheqdModuleConfig,\n CheqdDidCreateOptions,\n} from '@aries-framework/cheqd'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n dids: new DidsModule({\n registrars: [new CheqdDidRegistrar()],\n resolvers: [new CheqdDidResolver()],\n }),\n\n // AnonCreds\n anoncreds: new AnonCredsModule({\n registries: [new CheqdAnonCredsRegistry()],\n }),\n\n // Add cheqd module\n cheqd: new CheqdModule(\n new CheqdModuleConfig({\n networks: [\n {\n network: '',\n cosmosPayerSeed: '',\n },\n ],\n })\n ),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n\n// start-section-2\n\n// create a key pair\nconst key = await agent.wallet.createKey({\n keyType: KeyType.Ed25519,\n})\n\n// encode public key according to the verification method\nconst ed25519PublicKeyBase58 = key.publicKeyBase58\n\n// Create a DID\nawait agent.dids.create({\n method: 'cheqd',\n secret: {},\n options: {\n network: 'testnet',\n },\n didDocument: new DidDocument({\n id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',\n controller: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d'],\n verificationMethod: [\n {\n id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1',\n type: 'Ed25519VerificationKey2018',\n controller: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',\n publicKeyBase58: ed25519PublicKeyBase58,\n },\n ],\n authentication: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1'],\n }),\n})\n// end-section-2\n\n// start-section-3\nawait agent.dids.create({\n method: 'cheqd',\n // the secret contains a the verification method type and id\n secret: {\n verificationMethod: {\n id: 'key-1',\n type: 'Ed25519VerificationKey2020',\n },\n },\n // an optional methodSpecificIdAlgo parameter\n options: {\n network: 'testnet',\n methodSpecificIdAlgo: 'uuid',\n },\n})\n// end-section-3\n\n// start-section-4\nawait agent.dids.update({\n did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n // Updates DID Document with an additional verification method if provided\n secret: {\n verificationMethod: {\n id: 'key-2',\n type: 'JsonWebKey2020',\n },\n },\n didDocument: {\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n controller: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411'],\n verificationMethod: [\n {\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1',\n type: 'Ed25519VerificationKey2020',\n controller: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n publicKeyMultibase: 'z6MknkzLUEP5cxqqsaysNMWoh8NJRb3YsowTCj2D6yhwyEdj',\n },\n ],\n authentication: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1'],\n // updates did document with a service block\n service: [\n new DidDocumentService({\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#rand',\n type: 'rand',\n serviceEndpoint: 'https://rand.in',\n }),\n ],\n },\n})\n// end-section-4\n\n// start-section-5\nawait agent.dids.deactivate({\n did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n // an optional versionId parameter\n options: {\n versionId: '3.0',\n },\n})\n// end-section-5\n"},4019:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport { Agent, InitConfig } from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport {\n agentDependencies,\n IndySdkPostgresStorageConfig,\n loadIndySdkPostgresPlugin,\n IndySdkPostgresWalletScheme,\n} from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// IndySdkPostgresStorageConfig defines interface for the Postgres plugin configuration.\nconst storageConfig = {\n type: 'postgres_storage',\n config: {\n url: 'localhost:5432',\n wallet_scheme: IndySdkPostgresWalletScheme.DatabasePerWallet,\n },\n credentials: {\n account: 'postgres',\n password: 'postgres',\n admin_account: 'postgres',\n admin_password: 'postgres',\n },\n} satisfies IndySdkPostgresStorageConfig\n\n// load the postgres wallet plugin before agent initialization\nloadIndySdkPostgresPlugin(storageConfig.config, storageConfig.credentials)\n\nconst agentConfig: InitConfig = {\n label: 'My Agent',\n // walletConfig.id and walletConfig.key are still required\n walletConfig: {\n id: 'walletId',\n key: 'testKey0000000000000000000000000',\n // storage is added and defines the postgres plugin configuration\n storage: storageConfig,\n },\n}\n\nconst agent = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n"},6383:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport indySdk from 'indy-sdk-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Indy SDK module on the agent\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},8555:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport indySdk from 'indy-sdk'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Indy SDK module on the agent\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n\nawait agent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},4613:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { IndyVdrModule } from '@aries-framework/indy-vdr'\n\nconst modules = {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n indyNamespace: 'bcovrin:test',\n isProduction: false,\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n}\n// end-section-1\n"},3995:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-react-native'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},5453:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nimport { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},1308:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport type { InitConfig } from '@aries-framework/core'\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n// end-section-1\n\n// start-section-2\nimport { HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\n\n// ... agent setup from prevous section ...\n\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\n// end-section-2\n\n// TODO: we probably want to make this more specific to React Native,\n// so using it in a components and recommending to use the react hooks\n// start-section-3\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n// end-section-3\n"},2537:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport type { InitConfig } from '@aries-framework/core'\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n// end-section-1\n\n// start-section-2\nimport { HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\nimport { HttpInboundTransport } from '@aries-framework/node'\n\n// ... agent setup from prevous section ...\n\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\nagent.registerInboundTransport(new HttpInboundTransport({ port: 3000 }))\n// end-section-2\n\n// start-section-3\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n// end-section-3\n"},2502:(n,e,t)=>{var o={"./0.3/node_modules/did-resolver/src/__tests__/resolver.test":349,"./0.3/node_modules/did-resolver/src/__tests__/resolver.test.ts":349,"./0.3/node_modules/did-resolver/src/resolver":5883,"./0.3/node_modules/did-resolver/src/resolver.ts":5883,"./0.3/node_modules/luxon/src/datetime":8105,"./0.3/node_modules/luxon/src/datetime.js":8105,"./0.3/node_modules/luxon/src/duration":6721,"./0.3/node_modules/luxon/src/duration.js":6721,"./0.3/node_modules/luxon/src/errors":4015,"./0.3/node_modules/luxon/src/errors.js":4015,"./0.3/node_modules/luxon/src/impl/conversions":8498,"./0.3/node_modules/luxon/src/impl/conversions.js":8498,"./0.3/node_modules/luxon/src/impl/diff":8998,"./0.3/node_modules/luxon/src/impl/diff.js":8998,"./0.3/node_modules/luxon/src/impl/digits":9310,"./0.3/node_modules/luxon/src/impl/digits.js":9310,"./0.3/node_modules/luxon/src/impl/english":4039,"./0.3/node_modules/luxon/src/impl/english.js":4039,"./0.3/node_modules/luxon/src/impl/formats":5303,"./0.3/node_modules/luxon/src/impl/formats.js":5303,"./0.3/node_modules/luxon/src/impl/formatter":4756,"./0.3/node_modules/luxon/src/impl/formatter.js":4756,"./0.3/node_modules/luxon/src/impl/invalid":760,"./0.3/node_modules/luxon/src/impl/invalid.js":760,"./0.3/node_modules/luxon/src/impl/locale":114,"./0.3/node_modules/luxon/src/impl/locale.js":114,"./0.3/node_modules/luxon/src/impl/regexParser":1990,"./0.3/node_modules/luxon/src/impl/regexParser.js":1990,"./0.3/node_modules/luxon/src/impl/tokenParser":4546,"./0.3/node_modules/luxon/src/impl/tokenParser.js":4546,"./0.3/node_modules/luxon/src/impl/util":7866,"./0.3/node_modules/luxon/src/impl/util.js":7866,"./0.3/node_modules/luxon/src/impl/zoneUtil":9776,"./0.3/node_modules/luxon/src/impl/zoneUtil.js":9776,"./0.3/node_modules/luxon/src/info":6965,"./0.3/node_modules/luxon/src/info.js":6965,"./0.3/node_modules/luxon/src/interval":1591,"./0.3/node_modules/luxon/src/interval.js":1591,"./0.3/node_modules/luxon/src/luxon":8004,"./0.3/node_modules/luxon/src/luxon.js":8004,"./0.3/node_modules/luxon/src/luxonFilled":9972,"./0.3/node_modules/luxon/src/luxonFilled.js":9972,"./0.3/node_modules/luxon/src/settings":2636,"./0.3/node_modules/luxon/src/settings.js":2636,"./0.3/node_modules/luxon/src/zone":6476,"./0.3/node_modules/luxon/src/zone.js":6476,"./0.3/node_modules/luxon/src/zones/IANAZone":3176,"./0.3/node_modules/luxon/src/zones/IANAZone.js":3176,"./0.3/node_modules/luxon/src/zones/fixedOffsetZone":1840,"./0.3/node_modules/luxon/src/zones/fixedOffsetZone.js":1840,"./0.3/node_modules/luxon/src/zones/invalidZone":5092,"./0.3/node_modules/luxon/src/zones/invalidZone.js":5092,"./0.3/node_modules/luxon/src/zones/localZone":5617,"./0.3/node_modules/luxon/src/zones/localZone.js":5617,"./0.3/src/create-a-connection":7058,"./0.3/src/create-a-connection.ts":7058,"./0.3/src/issue-a-credential":2151,"./0.3/src/issue-a-credential.ts":2151,"./0.3/src/set-up":420,"./0.3/src/set-up-rn":3288,"./0.3/src/set-up-rn.ts":3288,"./0.3/src/set-up.ts":420,"./0.4/src/create-a-connection":5343,"./0.4/src/create-a-connection.ts":5343,"./0.4/src/issue-a-credential":7283,"./0.4/src/issue-a-credential.ts":7283,"./0.4/src/mediation-recipient":8276,"./0.4/src/mediation-recipient.ts":8276,"./0.4/src/mediator-setup":768,"./0.4/src/mediator-setup.ts":768,"./0.4/src/register-schema-and-cred-def":2055,"./0.4/src/register-schema-and-cred-def.ts":2055,"./0.4/src/set-up":1031,"./0.4/src/set-up-anoncreds-rs":3099,"./0.4/src/set-up-anoncreds-rs-rn":6596,"./0.4/src/set-up-anoncreds-rs-rn.ts":6596,"./0.4/src/set-up-anoncreds-rs.ts":3099,"./0.4/src/set-up-askar":3716,"./0.4/src/set-up-askar-rn":8757,"./0.4/src/set-up-askar-rn.ts":8757,"./0.4/src/set-up-askar.ts":3716,"./0.4/src/set-up-cheqd":2107,"./0.4/src/set-up-cheqd.ts":2107,"./0.4/src/set-up-indy-sdk":2863,"./0.4/src/set-up-indy-sdk-postgres":4056,"./0.4/src/set-up-indy-sdk-postgres.ts":4056,"./0.4/src/set-up-indy-sdk-rn":1002,"./0.4/src/set-up-indy-sdk-rn.ts":1002,"./0.4/src/set-up-indy-sdk.ts":2863,"./0.4/src/set-up-indy-vdr":4437,"./0.4/src/set-up-indy-vdr-config":9031,"./0.4/src/set-up-indy-vdr-config.ts":9031,"./0.4/src/set-up-indy-vdr-rn":4279,"./0.4/src/set-up-indy-vdr-rn.ts":4279,"./0.4/src/set-up-indy-vdr.ts":4437,"./0.4/src/set-up-rn":6121,"./0.4/src/set-up-rn.ts":6121,"./0.4/src/set-up.ts":1031,"./current/src/create-a-connection":6033,"./current/src/create-a-connection.ts":6033,"./current/src/issue-a-credential":5536,"./current/src/issue-a-credential.ts":5536,"./current/src/mediation-recipient":8249,"./current/src/mediation-recipient.ts":8249,"./current/src/mediator-setup":1676,"./current/src/mediator-setup.ts":1676,"./current/src/register-schema-and-cred-def":1104,"./current/src/register-schema-and-cred-def.ts":1104,"./current/src/set-up":2537,"./current/src/set-up-anoncreds-rs":5712,"./current/src/set-up-anoncreds-rs-rn":8001,"./current/src/set-up-anoncreds-rs-rn.ts":8001,"./current/src/set-up-anoncreds-rs.ts":5712,"./current/src/set-up-askar":531,"./current/src/set-up-askar-rn":3106,"./current/src/set-up-askar-rn.ts":3106,"./current/src/set-up-askar.ts":531,"./current/src/set-up-cheqd":1638,"./current/src/set-up-cheqd.ts":1638,"./current/src/set-up-indy-sdk":8555,"./current/src/set-up-indy-sdk-postgres":4019,"./current/src/set-up-indy-sdk-postgres.ts":4019,"./current/src/set-up-indy-sdk-rn":6383,"./current/src/set-up-indy-sdk-rn.ts":6383,"./current/src/set-up-indy-sdk.ts":8555,"./current/src/set-up-indy-vdr":5453,"./current/src/set-up-indy-vdr-config":4613,"./current/src/set-up-indy-vdr-config.ts":4613,"./current/src/set-up-indy-vdr-rn":3995,"./current/src/set-up-indy-vdr-rn.ts":3995,"./current/src/set-up-indy-vdr.ts":5453,"./current/src/set-up-rn":1308,"./current/src/set-up-rn.ts":1308,"./current/src/set-up.ts":2537};function r(n){var e=i(n);return t(e)}function i(n){if(!t.o(o,n)){var e=new Error("Cannot find module '"+n+"'");throw e.code="MODULE_NOT_FOUND",e}return o[n]}r.keys=function(){return Object.keys(o)},r.resolve=i,n.exports=r,r.id=2502}}]); \ No newline at end of file +(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[3085,7918],{4247:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>g});var o=t(7294),r=t(6010),i=t(1944),s=t(5281),a=t(7003),d=t(5881),c=t(9407);const l={mdxPageWrapper:"mdxPageWrapper_j9I6"};function g(n){const{content:e}=n,{metadata:{title:t,description:g,frontMatter:u}}=e,{wrapperClassName:m,hide_table_of_contents:p}=u;return o.createElement(i.FG,{className:(0,r.Z)(m??s.k.wrapper.mdxPages,s.k.page.mdxPage)},o.createElement(i.d,{title:t,description:g}),o.createElement(a.Z,null,o.createElement("main",{className:"container container--fluid margin-vert--lg"},o.createElement("div",{className:(0,r.Z)("row",l.mdxPageWrapper)},o.createElement("div",{className:(0,r.Z)("col",!p&&"col--8")},o.createElement("article",null,o.createElement(d.Z,null,o.createElement(e,null)))),!p&&e.toc.length>0&&o.createElement("div",{className:"col col--2"},o.createElement(c.Z,{toc:e.toc,minHeadingLevel:u.toc_min_heading_level,maxHeadingLevel:u.toc_max_heading_level}))))))}},7083:(n,e,t)=>{"use strict";t.d(e,{Z:()=>g});var o=t(7294),r=t(6010),i=t(5281),s=t(5999);const a={admonition:"admonition_WoCw",admonitionHeading:"admonitionHeading_TMsN",admonitionIcon:"admonitionIcon_Ibzs",admonitionContent:"admonitionContent_vXIg"};const d={note:{infimaClassName:"secondary",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))},label:o.createElement(s.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))},label:o.createElement(s.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))},label:o.createElement(s.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))},label:o.createElement(s.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 16 16"},o.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))},label:o.createElement(s.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")},holder:{infimaClassName:"holder",emoji:"\ud83d\uddc4",label:o.createElement(s.Z,{id:"theme.admonition.holder",description:"The default label used for the Caution admonition (:::holder)"},"holder")},issuer:{infimaClassName:"issuer",emoji:"\ud83d\udcc4",label:o.createElement(s.Z,{id:"theme.admonition.issuer",description:"The default label used for the Caution admonition (:::issuer)"},"issuer")},verifier:{infimaClassName:"verifier",emoji:"\ud83d\udc6e",label:o.createElement(s.Z,{id:"theme.admonition.verifier",description:"The default label used for the Verifier admonition (:::verifier)"},"verifier")},bob:{infimaClassName:"bob",emoji:"\ud83e\uddd4",label:o.createElement(s.Z,{id:"theme.admonition.bob",description:"The default label used for the Bob admonition (:::bob)"},"bob")},acme:{infimaClassName:"acme",emoji:"\ud83c\udfe2",label:o.createElement(s.Z,{id:"theme.admonition.acme",description:"The default label used for the acme admonition (:::acme)"},"acme")}},c={secondary:"note",important:"info",success:"tip",warning:"danger"};function l(n){const{mdxAdmonitionTitle:e,rest:t}=function(n){const e=o.Children.toArray(n),t=e.find((n=>o.isValidElement(n)&&"mdxAdmonitionTitle"===n.props?.mdxType)),r=o.createElement(o.Fragment,null,e.filter((n=>n!==t)));return{mdxAdmonitionTitle:t,rest:r}}(n.children);return{...n,title:n.title??e,children:t}}function g(n){const{children:e,type:t,title:s,icon:g}=l(n),u=function(n){const e=c[n]??n,t=d[e];return t||(console.warn(`No admonition config found for admonition type "${e}". Using Info as fallback.`),d.info)}(t),m=s??u.label,{iconComponent:p,emoji:f}=u,y=g??f??o.createElement(p,null);return o.createElement("div",{className:(0,r.Z)(i.k.common.admonition,i.k.common.admonitionType(n.type),"alert",`alert--${u.infimaClassName}`,`admonition-${u.infimaClassName}`,a.admonition)},o.createElement("div",{className:a.admonitionHeading},o.createElement("span",{className:a.admonitionIcon},y),m),o.createElement("div",{className:a.admonitionContent},e))}},1415:(n,e,t)=>{"use strict";t.d(e,{Z:()=>i});var o=t(7294),r=t(8397);function i(n){return o.createElement(o.Fragment,null,o.createElement(r.Z,n))}},8573:(n,e,t)=>{"use strict";t.d(e,{Z:()=>m});var o=t(7462),r=t(7294),i=t(2389),s=t(1170),a=t(2138),d=t(4477);const c=n=>n.split(" ").find((n=>n.match(/^section-/)))?.substr(8),l=(n,e)=>{const t=`start-section-${n}`,o=`end-section-${n}`,r=e.split("\n"),i=r.indexOf(r.find((n=>n.includes(t)))),s=r.indexOf(r.find((n=>n.includes(o))));return r.slice(i+1,s).join("\r\n")},g=n=>n.split(" ").find((n=>n.match(/.(js|ts)$/))),u=n=>n.split("\n").filter((n=>!n.match(/section-/))).join("\r\n");function m(n){let{children:e,...m}=n;const p=(0,i.Z)(),f=(0,d.E)(),y=function(n){return r.Children.toArray(n).some((n=>(0,r.isValidElement)(n)))?n:Array.isArray(n)?n.join(""):n}(e),w=f.version,h="string"==typeof y?a.Z:s.Z;if(!m.metastring)return r.createElement(h,(0,o.Z)({key:String(p)},m),y);let b;try{b=t(2502)(`./${w}/src/${g(m.metastring)}`).default}catch{}const k=c(m.metastring);let v;return b&&(v=k?l(k,b):u(b)),r.createElement(h,(0,o.Z)({key:String(p)},m),v||y)}},7058:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n InitConfig,\n ConnectionEventTypes,\n ConnectionStateChangedEvent,\n WsOutboundTransport,\n HttpOutboundTransport,\n DidExchangeState,\n OutOfBandRecord,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\n\n// start-section-1\nconst initializeBobAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label. It also sets the mediator invitation url,\n // because this is most likely required in a mobile environment.\n const config: InitConfig = {\n label: 'demo-agent-bob',\n walletConfig: {\n id: 'mainBob',\n key: 'demoagentbob00000000000000000000',\n },\n autoAcceptConnections: true,\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({ config, dependencies: agentDependencies })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-1\n\n// start-section-2\nconst initializeAcmeAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label.\n const config: InitConfig = {\n label: 'demo-agent-acme',\n walletConfig: {\n id: 'mainAcme',\n key: 'demoagentacme0000000000000000000',\n },\n autoAcceptConnections: true,\n endpoints: ['http://localhost:3001'],\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({ config, dependencies: agentDependencies })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-2\n\n// start-section-3\nconst createNewInvitation = async (agent: Agent) => {\n const outOfBandRecord = await agent.oob.createInvitation()\n\n return {\n invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),\n outOfBandRecord,\n }\n}\n// end-section-3\n\n// start-section-4\nconst createLegacyInvitation = async (agent: Agent) => {\n const { invitation } = await agent.oob.createLegacyInvitation()\n\n return invitation.toUrl({ domain: 'https://example.org' })\n}\n// end-section-4\n\n// start-section-5\nconst receiveInvitation = async (agent: Agent, invitationUrl: string) => {\n const { outOfBandRecord } = await agent.oob.receiveInvitationFromUrl(invitationUrl)\n\n return outOfBandRecord\n}\n// end-section-5\n\n// start-section-6\nconst setupConnectionListener = (agent: Agent, outOfBandRecord: OutOfBandRecord, cb: (...args: any) => void) => {\n agent.events.on(ConnectionEventTypes.ConnectionStateChanged, ({ payload }) => {\n if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return\n if (payload.connectionRecord.state === DidExchangeState.Completed) {\n // the connection is now ready for usage in other protocols!\n console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)\n\n // Custom business logic can be included here\n // In this example we can send a basic message to the connection, but\n // anything is possible\n cb()\n\n // We exit the flow\n process.exit(0)\n }\n })\n}\n\n// end-section-6\n\nconst run = async () => {\n console.log('Initializing Bob agent...')\n const bobAgent = await initializeBobAgent()\n console.log('Initializing Acme agent...')\n const acmeAgent = await initializeAcmeAgent()\n\n console.log('Creating the invitation as Acme...')\n const { outOfBandRecord, invitationUrl } = await createNewInvitation(acmeAgent)\n\n console.log('Listening for connection changes...')\n setupConnectionListener(acmeAgent, outOfBandRecord, () =>\n console.log('We now have an active connection to use in the following tutorials')\n )\n\n console.log('Accepting the invitation as Bob...')\n await receiveInvitation(bobAgent, invitationUrl)\n}\n\nexport default run\n\nvoid run()\n"},2151:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n InitConfig,\n Agent,\n WsOutboundTransport,\n HttpOutboundTransport,\n ConnectionEventTypes,\n ConnectionStateChangedEvent,\n DidExchangeState,\n AutoAcceptCredential,\n CredentialEventTypes,\n CredentialState,\n CredentialStateChangedEvent,\n OutOfBandRecord,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\nimport { Schema } from 'indy-sdk'\nimport fetch from 'node-fetch'\n\nconst getGenesisTransaction = async (url: string) => {\n // Legacy code has a small issue with the call-signature from node-fetch\n // @ts-ignore\n const response = await fetch(url)\n\n return await response.text()\n}\n\n// start-section-1\nconst initializeHolderAgent = async () => {\n const genesisTransactionsBCovrinTestNet = await getGenesisTransaction('http://test.bcovrin.vonx.io/genesis')\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label. It also sets the mediator invitation url,\n // because this is most likely required in a mobile environment.\n const config: InitConfig = {\n label: 'demo-agent-holder',\n walletConfig: {\n id: 'demo-agent-holder',\n key: 'demoagentholder00000000000000000',\n },\n indyLedgers: [\n {\n id: 'bcovrin-test-net',\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: genesisTransactionsBCovrinTestNet,\n },\n ],\n autoAcceptCredentials: AutoAcceptCredential.ContentApproved,\n autoAcceptConnections: true,\n endpoints: ['http://localhost:3002'],\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({ config, dependencies: agentDependencies })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-1\n\n// start-section-2\nconst initializeIssuerAgent = async () => {\n const genesisTransactionsBCovrinTestNet = await getGenesisTransaction('http://test.bcovrin.vonx.io/genesis')\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label.\n const config: InitConfig = {\n label: 'demo-agent-issuer',\n walletConfig: {\n id: 'demo-agent-issuer',\n key: 'demoagentissuer00000000000000000',\n },\n publicDidSeed: 'demoissuerdidseed000000000000000',\n indyLedgers: [\n {\n id: 'bcovrin-test-net',\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: genesisTransactionsBCovrinTestNet,\n },\n ],\n autoAcceptCredentials: AutoAcceptCredential.ContentApproved,\n autoAcceptConnections: true,\n endpoints: ['http://localhost:3001'],\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({ config, dependencies: agentDependencies })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-2\n\n// start-section-3\nconst registerSchema = async (issuer: Agent) =>\n issuer.ledger.registerSchema({ attributes: ['name', 'age'], name: 'Identity', version: '1.0' })\n// end-section-3\n\n// start-section-4\nconst registerCredentialDefinition = async (issuer: Agent, schema: Schema) =>\n issuer.ledger.registerCredentialDefinition({ schema, supportRevocation: false, tag: 'default' })\n// end-section-4\n\n// start-section-5\nconst setupCredentialListener = (holder: Agent) => {\n holder.events.on(CredentialEventTypes.CredentialStateChanged, async ({ payload }) => {\n switch (payload.credentialRecord.state) {\n case CredentialState.OfferReceived:\n console.log('received a credential')\n // custom logic here\n await holder.credentials.acceptOffer({ credentialRecordId: payload.credentialRecord.id })\n case CredentialState.Done:\n console.log(`Credential for credential id ${payload.credentialRecord.id} is accepted`)\n // For demo purposes we exit the program here.\n process.exit(0)\n }\n })\n}\n// end-section-5\n\n// start-section-6\nconst issueCredential = async (issuer: Agent, credentialDefinitionId: string, connectionId: string) =>\n issuer.credentials.offerCredential({\n protocolVersion: 'v1',\n connectionId,\n credentialFormats: {\n indy: {\n credentialDefinitionId,\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n })\n// end-section-6\n\nconst createNewInvitation = async (issuer: Agent) => {\n const outOfBandRecord = await issuer.oob.createInvitation()\n\n return {\n invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),\n outOfBandRecord,\n }\n}\n\nconst receiveInvitation = async (holder: Agent, invitationUrl: string) => {\n const { outOfBandRecord } = await holder.oob.receiveInvitationFromUrl(invitationUrl)\n\n return outOfBandRecord\n}\n\nconst setupConnectionListener = (\n issuer: Agent,\n outOfBandRecord: OutOfBandRecord,\n cb: (...args: any) => Promise\n) => {\n issuer.events.on(ConnectionEventTypes.ConnectionStateChanged, async ({ payload }) => {\n if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return\n if (payload.connectionRecord.state === DidExchangeState.Completed) {\n // the connection is now ready for usage in other protocols!\n console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)\n\n // Custom business logic can be included here\n // In this example we can send a basic message to the connection, but\n // anything is possible\n await cb(payload.connectionRecord.id)\n }\n })\n}\n\nconst flow = (issuer: Agent) => async (connectionId: string) => {\n console.log('Registering the schema...')\n const schema = await registerSchema(issuer)\n console.log('Registering the credential definition...')\n const credentialDefinition = await registerCredentialDefinition(issuer, schema)\n console.log('Issuing the credential...')\n await issueCredential(issuer, credentialDefinition.id, connectionId)\n}\n\nconst run = async () => {\n console.log('Initializing the holder...')\n const holder = await initializeHolderAgent()\n console.log('Initializing the issuer...')\n const issuer = await initializeIssuerAgent()\n\n console.log('Initializing the credential listener...')\n setupCredentialListener(holder)\n\n console.log('Initializing the connection...')\n const { outOfBandRecord, invitationUrl } = await createNewInvitation(issuer)\n setupConnectionListener(issuer, outOfBandRecord, flow(issuer))\n await receiveInvitation(holder, invitationUrl)\n}\n\nvoid run()\n"},3288:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\nimport { Agent, HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\n\n// start-section-1\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({ config, dependencies: agentDependencies })\n// end-section-1\n\n// start-section-2\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\n// end-section-2\n\n// start-section-3\nconst run = async () => {\n try {\n await agent.initialize()\n } catch (e) {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n }\n}\n// end-section-3\n\nvoid run()\n"},420:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\nimport { Agent, HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\n\n// start-section-1\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({ config, dependencies: agentDependencies })\n// end-section-1\n\n// start-section-2\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\nagent.registerInboundTransport(new HttpInboundTransport({ port: 3000 }))\n// end-section-2\n\n// start-section-3\nconst run = async () => {\n try {\n await agent.initialize()\n } catch (e) {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n }\n}\n// end-section-3\n\nvoid run()\n"},5343:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { AskarModule } from '@aries-framework/askar'\nimport {\n Agent,\n InitConfig,\n ConnectionEventTypes,\n ConnectionStateChangedEvent,\n WsOutboundTransport,\n HttpOutboundTransport,\n DidExchangeState,\n OutOfBandRecord,\n ConnectionsModule,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\n// start-section-1\nconst initializeBobAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label. It also sets the mediator invitation url,\n // because this is most likely required in a mobile environment.\n const config: InitConfig = {\n label: 'demo-agent-bob',\n walletConfig: {\n id: 'mainBob',\n key: 'demoagentbob00000000000000000000',\n },\n }\n\n // A new instance of an agent is created here\n // Askar can also be replaced by the indy-sdk if required\n const agent = new Agent({\n config,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n connections: new ConnectionsModule({ autoAcceptConnections: true }),\n },\n dependencies: agentDependencies,\n })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-1\n\n// start-section-2\nconst initializeAcmeAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label.\n const config: InitConfig = {\n label: 'demo-agent-acme',\n walletConfig: {\n id: 'mainAcme',\n key: 'demoagentacme0000000000000000000',\n },\n endpoints: ['http://localhost:3001'],\n }\n\n // A new instance of an agent is created here\n // Askar can also be replaced by the indy-sdk if required\n const agent = new Agent({\n config,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n connections: new ConnectionsModule({ autoAcceptConnections: true }),\n },\n dependencies: agentDependencies,\n })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-2\n\n// start-section-3\nconst createNewInvitation = async (agent: Agent) => {\n const outOfBandRecord = await agent.oob.createInvitation()\n\n return {\n invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),\n outOfBandRecord,\n }\n}\n// end-section-3\n\n// start-section-4\nconst createLegacyInvitation = async (agent: Agent) => {\n const { invitation } = await agent.oob.createLegacyInvitation()\n\n return invitation.toUrl({ domain: 'https://example.org' })\n}\n// end-section-4\n\n// start-section-5\nconst receiveInvitation = async (agent: Agent, invitationUrl: string) => {\n const { outOfBandRecord } = await agent.oob.receiveInvitationFromUrl(invitationUrl)\n\n return outOfBandRecord\n}\n// end-section-5\n\n// start-section-6\nconst setupConnectionListener = (agent: Agent, outOfBandRecord: OutOfBandRecord, cb: (...args: any) => void) => {\n agent.events.on(ConnectionEventTypes.ConnectionStateChanged, ({ payload }) => {\n if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return\n if (payload.connectionRecord.state === DidExchangeState.Completed) {\n // the connection is now ready for usage in other protocols!\n console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)\n\n // Custom business logic can be included here\n // In this example we can send a basic message to the connection, but\n // anything is possible\n cb()\n\n // We exit the flow\n process.exit(0)\n }\n })\n}\n\n// end-section-6\n\nconst run = async () => {\n console.log('Initializing Bob agent...')\n const bobAgent = await initializeBobAgent()\n console.log('Initializing Acme agent...')\n const acmeAgent = await initializeAcmeAgent()\n\n console.log('Creating the invitation as Acme...')\n const { outOfBandRecord, invitationUrl } = await createNewInvitation(acmeAgent)\n\n console.log('Listening for connection changes...')\n setupConnectionListener(acmeAgent, outOfBandRecord, () =>\n console.log('We now have an active connection to use in the following tutorials')\n )\n\n console.log('Accepting the invitation as Bob...')\n await receiveInvitation(bobAgent, invitationUrl)\n}\n\nexport default run\n\nvoid run()\n"},7283:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n CredentialEventTypes,\n CredentialState,\n CredentialStateChangedEvent,\n DidsModule,\n HttpOutboundTransport,\n InitConfig,\n WsOutboundTransport,\n Agent,\n CredentialsModule,\n V2CredentialProtocol,\n} from '@aries-framework/core'\nimport { agentDependencies, HttpInboundTransport } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport {\n IndyVdrAnonCredsRegistry,\n IndyVdrIndyDidRegistrar,\n IndyVdrIndyDidResolver,\n IndyVdrModule,\n} from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport {\n AnonCredsCredentialFormatService,\n AnonCredsModule,\n LegacyIndyCredentialFormatService,\n} from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\n\nconst issuerConfig: InitConfig = {\n label: 'docs-agent-nodejs-issue-a-credential-issuer',\n walletConfig: {\n id: 'wallet-id-issuer',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst holderConfig: InitConfig = {\n label: 'docs-agent-nodejs-issue-a-credential-holder',\n walletConfig: {\n id: 'wallet-id-holder',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nconst issuer = new Agent({\n config: issuerConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n registrars: [new IndyVdrIndyDidRegistrar()],\n resolvers: [new IndyVdrIndyDidResolver()],\n }),\n credentials: new CredentialsModule({\n credentialProtocols: [\n new V2CredentialProtocol({\n credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],\n }),\n ],\n }),\n },\n})\n\n// Register a simple `WebSocket` outbound transport\nissuer.registerOutboundTransport(new WsOutboundTransport())\n\n// Register a simple `Http` outbound transport\nissuer.registerOutboundTransport(new HttpOutboundTransport())\n\n// Register a simple `Http` inbound transport\nissuer.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n// end-section-1\n\n// start-section-2\nconst holder = new Agent({\n config: holderConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n resolvers: [new IndyVdrIndyDidResolver()],\n }),\n credentials: new CredentialsModule({\n credentialProtocols: [\n new V2CredentialProtocol({\n credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],\n }),\n ],\n }),\n },\n})\n\n// Register a simple `WebSocket` outbound transport\nholder.registerOutboundTransport(new WsOutboundTransport())\n\n// Register a simple `Http` outbound transport\nholder.registerOutboundTransport(new HttpOutboundTransport())\n\n// Register a simple `Http` inbound transport\nholder.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n// end-section-2\n\n// start-section-3\nholder.events.on(CredentialEventTypes.CredentialStateChanged, async ({ payload }) => {\n switch (payload.credentialRecord.state) {\n case CredentialState.OfferReceived:\n console.log('received a credential')\n // custom logic here\n await holder.credentials.acceptOffer({ credentialRecordId: payload.credentialRecord.id })\n case CredentialState.Done:\n console.log(`Credential for credential id ${payload.credentialRecord.id} is accepted`)\n // For demo purposes we exit the program here.\n process.exit(0)\n }\n})\n// end-section-3\n\n// start-section-4\nconst indyCredentialExchangeRecord = await issuer.credentials.offerCredential({\n protocolVersion: 'v2',\n connectionId: '',\n credentialFormats: {\n indy: {\n credentialDefinitionId: '',\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n})\n// end-section-4\n\n// start-section-5\nconst anonCredsCredentialExchangeRecord = issuer.credentials.offerCredential({\n protocolVersion: 'v2',\n connectionId: '',\n credentialFormats: {\n anoncreds: {\n credentialDefinitionId: '',\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n})\n// end-section-5\n"},8276:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n ConsoleLogger,\n HttpOutboundTransport,\n InitConfig,\n LogLevel,\n MediationRecipientModule,\n WsOutboundTransport,\n} from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport { agentDependencies } from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// start-section-1\nconst name = 'alice'\n\n// paste your invitation url here\n// or use the current invitation-url to connect to the public animo-mediator.\nconst mediatorInvitationUrl =\n 'https://mediator.dev.animo.id/invite?oob=eyJAdHlwZSI6Imh0dHBzOi8vZGlkY29tbS5vcmcvb3V0LW9mLWJhbmQvMS4xL2ludml0YXRpb24iLCJAaWQiOiIyMDc1MDM4YS05ZGU3LTRiODItYWUxYi1jNzBmNDg4MjYzYTciLCJsYWJlbCI6IkFuaW1vIE1lZGlhdG9yIiwiYWNjZXB0IjpbImRpZGNvbW0vYWlwMSIsImRpZGNvbW0vYWlwMjtlbnY9cmZjMTkiXSwiaGFuZHNoYWtlX3Byb3RvY29scyI6WyJodHRwczovL2RpZGNvbW0ub3JnL2RpZGV4Y2hhbmdlLzEuMCIsImh0dHBzOi8vZGlkY29tbS5vcmcvY29ubmVjdGlvbnMvMS4wIl0sInNlcnZpY2VzIjpbeyJpZCI6IiNpbmxpbmUtMCIsInNlcnZpY2VFbmRwb2ludCI6Imh0dHBzOi8vbWVkaWF0b3IuZGV2LmFuaW1vLmlkIiwidHlwZSI6ImRpZC1jb21tdW5pY2F0aW9uIiwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtvSG9RTUphdU5VUE5OV1pQcEw3RGs1SzNtQ0NDMlBpNDJGY3FwR25iampMcSJdLCJyb3V0aW5nS2V5cyI6W119LHsiaWQiOiIjaW5saW5lLTEiLCJzZXJ2aWNlRW5kcG9pbnQiOiJ3c3M6Ly9tZWRpYXRvci5kZXYuYW5pbW8uaWQiLCJ0eXBlIjoiZGlkLWNvbW11bmljYXRpb24iLCJyZWNpcGllbnRLZXlzIjpbImRpZDprZXk6ejZNa29Ib1FNSmF1TlVQTk5XWlBwTDdEazVLM21DQ0MyUGk0MkZjcXBHbmJqakxxIl0sInJvdXRpbmdLZXlzIjpbXX1dfQ'\n\nconst agentConfig: InitConfig = {\n label: `Aries Framework JavaScript ${name}`,\n walletConfig: {\n id: name,\n key: name,\n },\n logger: new ConsoleLogger(LogLevel.trace),\n}\n\nconst alice = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n mediationRecipient: new MediationRecipientModule({\n mediatorInvitationUrl,\n }),\n indySdk: new IndySdkModule({ indySdk }),\n },\n})\n\nalice.registerOutboundTransport(new HttpOutboundTransport())\nalice.registerOutboundTransport(new WsOutboundTransport())\n\nawait alice.initialize()\n// end-section-1\n"},768:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n ConnectionsModule,\n HttpOutboundTransport,\n InitConfig,\n MediationStateChangedEvent,\n MediatorModule,\n RoutingEventTypes,\n} from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport { HttpInboundTransport, agentDependencies } from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// start-section-1\nconst name = 'mediator'\nconst port = 3001\n\nconst agentConfig: InitConfig = {\n label: `Aries Framework JavaScript ${name}`,\n walletConfig: {\n id: name,\n key: name,\n },\n endpoints: [`http://localhost:${port}`],\n}\n\nconst mediator = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n indySdk: new IndySdkModule({ indySdk }),\n mediator: new MediatorModule({\n autoAcceptMediationRequests: true,\n }),\n connections: new ConnectionsModule({\n autoAcceptConnections: true,\n }),\n },\n})\n\nmediator.registerOutboundTransport(new HttpOutboundTransport())\nmediator.registerInboundTransport(new HttpInboundTransport({ port }))\n\nawait mediator.initialize()\nconst mediatorOutOfBandRecord = await mediator.oob.createInvitation({ multiUseInvitation: true })\n\nconst mediatiorInvitationUrl = mediatorOutOfBandRecord.outOfBandInvitation.toUrl({\n domain: `http://localhost:${port}`,\n})\nconsole.log(mediatiorInvitationUrl)\n// end-section-1\n\nmediator.events\n .observable(RoutingEventTypes.MediationStateChanged)\n .subscribe(({ payload }) => {\n console.log(`${name} mediation state: ${payload.mediationRecord.state}`)\n })\n"},2055:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { DidsModule, InitConfig, KeyType, LogLevel, TypedArrayEncoder } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs-register-schema-and-cred-def',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport {\n IndyVdrAnonCredsRegistry,\n IndyVdrIndyDidRegistrar,\n IndyVdrIndyDidResolver,\n IndyVdrModule,\n} from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\nimport {\n CheqdAnonCredsRegistry,\n CheqdDidRegistrar,\n CheqdDidResolver,\n CheqdModule,\n CheqdModuleConfig,\n} from '@aries-framework/cheqd'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // We do this to have access to a wallet\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n cheqd: new CheqdModule(\n new CheqdModuleConfig({\n networks: [\n {\n network: '',\n cosmosPayerSeed: '',\n },\n ],\n })\n ),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry(), new CheqdAnonCredsRegistry()],\n }),\n dids: new DidsModule({\n registrars: [new IndyVdrIndyDidRegistrar(), new CheqdDidRegistrar()],\n resolvers: [new IndyVdrIndyDidResolver(), new CheqdDidResolver()],\n }),\n },\n})\n// end-section-1\n\n// start-section-2\nconst seed = TypedArrayEncoder.fromString(``) // What you input on bcovrin. Should be kept secure in production!\nconst unqualifiedIndyDid = `` // will be returned after registering seed on bcovrin\nconst indyDid = `did:indy:bcovrin:test:${unqualifiedIndyDid}`\n\nconst cheqdDid = await agent.dids.create({\n method: 'cheqd',\n secret: {\n verificationMethod: {\n id: 'key-1',\n type: 'Ed25519VerificationKey2020',\n },\n },\n options: {\n network: 'testnet',\n methodSpecificIdAlgo: 'uuid',\n },\n})\n\nawait agent.dids.import({\n did: '',\n overwrite: true,\n privateKeys: [\n {\n privateKey: seed,\n keyType: KeyType.Ed25519,\n },\n ],\n})\n// end-section-2\n\n// start-section-3\nconst schemaResult = await agent.modules.anoncreds.registerSchema({\n schema: {\n attrNames: ['name'],\n issuerId: '',\n name: 'Example Schema to register',\n version: '1.0.0',\n },\n options: {},\n})\n\nif (schemaResult.schemaState.state === 'failed') {\n throw new Error(`Error creating schema: ${schemaResult.schemaState.reason}`)\n}\n// end-section-3\n\n// start-section-4\nconst credentialDefinitionResult = await agent.modules.anoncreds.registerCredentialDefinition({\n credentialDefinition: {\n tag: 'default',\n issuerId: '',\n schemaId: schemaResult.schemaState.schemaId,\n },\n options: {},\n})\n\nif (credentialDefinitionResult.credentialDefinitionState.state === 'failed') {\n throw new Error(\n `Error creating credential definition: ${credentialDefinitionResult.credentialDefinitionState.reason}`\n )\n}\n// end-section-4\n"},6596:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport { anoncreds } from '@hyperledger/anoncreds-react-native'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { IndyVdrAnonCredsRegistry } from '@aries-framework/indy-vdr'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // This is included as we need a wallet on our agent\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n anoncreds: new AnonCredsModule({\n // Here we add an Indy VDR registry as an example, any AnonCreds registry\n // can be used\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},3099:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\nimport { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'\nimport { IndyVdrAnonCredsRegistry } from '@aries-framework/indy-vdr'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // This is included as we need a wallet on our agent\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncredsRs: new AnonCredsRsModule({\n anoncreds,\n }),\n anoncreds: new AnonCredsModule({\n // Here we add an Indy VDR registry as an example, any AnonCreds registry\n // can be used\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},8757:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},3716:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},2107:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { DidDocumentService, InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent, DidsModule, KeyType, DidDocument } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport {\n CheqdAnonCredsRegistry,\n CheqdDidRegistrar,\n CheqdDidResolver,\n CheqdModule,\n CheqdModuleConfig,\n CheqdDidCreateOptions,\n} from '@aries-framework/cheqd'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n dids: new DidsModule({\n registrars: [new CheqdDidRegistrar()],\n resolvers: [new CheqdDidResolver()],\n }),\n\n // AnonCreds\n anoncreds: new AnonCredsModule({\n registries: [new CheqdAnonCredsRegistry()],\n }),\n\n // Add cheqd module\n cheqd: new CheqdModule(\n new CheqdModuleConfig({\n networks: [\n {\n network: '',\n cosmosPayerSeed: '',\n },\n ],\n })\n ),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n\n// start-section-2\n\n// create a key pair\nconst key = await agent.wallet.createKey({\n keyType: KeyType.Ed25519,\n})\n\n// encode public key according to the verification method\nconst ed25519PublicKeyBase58 = key.publicKeyBase58\n\n// Create a DID\nawait agent.dids.create({\n method: 'cheqd',\n secret: {},\n options: {\n network: 'testnet',\n },\n didDocument: new DidDocument({\n id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',\n controller: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d'],\n verificationMethod: [\n {\n id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1',\n type: 'Ed25519VerificationKey2018',\n controller: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',\n publicKeyBase58: ed25519PublicKeyBase58,\n },\n ],\n authentication: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1'],\n }),\n})\n// end-section-2\n\n// start-section-3\nawait agent.dids.create({\n method: 'cheqd',\n // the secret contains a the verification method type and id\n secret: {\n verificationMethod: {\n id: 'key-1',\n type: 'Ed25519VerificationKey2020',\n },\n },\n // an optional methodSpecificIdAlgo parameter\n options: {\n network: 'testnet',\n methodSpecificIdAlgo: 'uuid',\n },\n})\n// end-section-3\n\n// start-section-4\nawait agent.dids.update({\n did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n // Updates DID Document with an additional verification method if provided\n secret: {\n verificationMethod: {\n id: 'key-2',\n type: 'JsonWebKey2020',\n },\n },\n didDocument: {\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n controller: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411'],\n verificationMethod: [\n {\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1',\n type: 'Ed25519VerificationKey2020',\n controller: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n publicKeyMultibase: 'z6MknkzLUEP5cxqqsaysNMWoh8NJRb3YsowTCj2D6yhwyEdj',\n },\n ],\n authentication: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1'],\n // updates did document with a service block\n service: [\n new DidDocumentService({\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#rand',\n type: 'rand',\n serviceEndpoint: 'https://rand.in',\n }),\n ],\n },\n})\n// end-section-4\n\n// start-section-5\nawait agent.dids.deactivate({\n did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n // an optional versionId parameter\n options: {\n versionId: '3.0',\n },\n})\n// end-section-5\n"},4056:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport { Agent, InitConfig } from '@aries-framework/core'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport {\n agentDependencies,\n IndySdkPostgresStorageConfig,\n loadIndySdkPostgresPlugin,\n IndySdkPostgresWalletScheme,\n} from '@aries-framework/node'\nimport indySdk from 'indy-sdk'\n\n// IndySdkPostgresStorageConfig defines interface for the Postgres plugin configuration.\nconst storageConfig = {\n type: 'postgres_storage',\n config: {\n url: 'localhost:5432',\n wallet_scheme: IndySdkPostgresWalletScheme.DatabasePerWallet,\n },\n credentials: {\n account: 'postgres',\n password: 'postgres',\n admin_account: 'postgres',\n admin_password: 'postgres',\n },\n} satisfies IndySdkPostgresStorageConfig\n\n// load the postgres wallet plugin before agent initialization\nloadIndySdkPostgresPlugin(storageConfig.config, storageConfig.credentials)\n\nconst agentConfig: InitConfig = {\n label: 'My Agent',\n // walletConfig.id and walletConfig.key are still required\n walletConfig: {\n id: 'walletId',\n key: 'testKey0000000000000000000000000',\n // storage is added and defines the postgres plugin configuration\n storage: storageConfig,\n },\n}\n\nconst agent = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n"},1002:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport indySdk from 'indy-sdk-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Indy SDK module on the agent\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},2863:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { IndySdkModule } from '@aries-framework/indy-sdk'\nimport indySdk from 'indy-sdk'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Indy SDK module on the agent\n indySdk: new IndySdkModule({\n indySdk,\n }),\n },\n})\n// end-section-1\n\nawait agent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},9031:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { IndyVdrModule } from '@aries-framework/indy-vdr'\n\nconst modules = {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n indyNamespace: 'bcovrin:test',\n isProduction: false,\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n}\n// end-section-1\n"},4279:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-react-native'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},4437:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@aries-framework/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\nimport { AskarModule } from '@aries-framework/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nimport { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@aries-framework/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { AnonCredsModule } from '@aries-framework/anoncreds'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n }),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},6121:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport type { InitConfig } from '@aries-framework/core'\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/react-native'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n// end-section-1\n\n// start-section-2\nimport { HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\n\n// ... agent setup from prevous section ...\n\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\n// end-section-2\n\n// TODO: we probably want to make this more specific to React Native,\n// so using it in a components and recommending to use the react hooks\n// start-section-3\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n// end-section-3\n"},1031:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport type { InitConfig } from '@aries-framework/core'\nimport { Agent } from '@aries-framework/core'\nimport { agentDependencies } from '@aries-framework/node'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n// end-section-1\n\n// start-section-2\nimport { HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'\nimport { HttpInboundTransport } from '@aries-framework/node'\n\n// ... agent setup from prevous section ...\n\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\nagent.registerInboundTransport(new HttpInboundTransport({ port: 3000 }))\n// end-section-2\n\n// start-section-3\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n// end-section-3\n"},6033:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { AskarModule } from '@credo-ts/askar'\nimport {\n Agent,\n InitConfig,\n ConnectionEventTypes,\n ConnectionStateChangedEvent,\n WsOutboundTransport,\n HttpOutboundTransport,\n DidExchangeState,\n OutOfBandRecord,\n ConnectionsModule,\n} from '@credo-ts/core'\nimport { agentDependencies, HttpInboundTransport } from '@credo-ts/node'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\n// start-section-1\nconst initializeBobAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label. It also sets the mediator invitation url,\n // because this is most likely required in a mobile environment.\n const config: InitConfig = {\n label: 'demo-agent-bob',\n walletConfig: {\n id: 'mainBob',\n key: 'demoagentbob00000000000000000000',\n },\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({\n config,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n connections: new ConnectionsModule({ autoAcceptConnections: true }),\n },\n dependencies: agentDependencies,\n })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-1\n\n// start-section-2\nconst initializeAcmeAgent = async () => {\n // Simple agent configuration. This sets some basic fields like the wallet\n // configuration and the label.\n const config: InitConfig = {\n label: 'demo-agent-acme',\n walletConfig: {\n id: 'mainAcme',\n key: 'demoagentacme0000000000000000000',\n },\n endpoints: ['http://localhost:3001'],\n }\n\n // A new instance of an agent is created here\n const agent = new Agent({\n config,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n connections: new ConnectionsModule({ autoAcceptConnections: true }),\n },\n dependencies: agentDependencies,\n })\n\n // Register a simple `WebSocket` outbound transport\n agent.registerOutboundTransport(new WsOutboundTransport())\n\n // Register a simple `Http` outbound transport\n agent.registerOutboundTransport(new HttpOutboundTransport())\n\n // Register a simple `Http` inbound transport\n agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))\n\n // Initialize the agent\n await agent.initialize()\n\n return agent\n}\n// end-section-2\n\n// start-section-3\nconst createNewInvitation = async (agent: Agent) => {\n const outOfBandRecord = await agent.oob.createInvitation()\n\n return {\n invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),\n outOfBandRecord,\n }\n}\n// end-section-3\n\n// start-section-4\nconst createLegacyInvitation = async (agent: Agent) => {\n const { invitation } = await agent.oob.createLegacyInvitation()\n\n return invitation.toUrl({ domain: 'https://example.org' })\n}\n// end-section-4\n\n// start-section-5\nconst receiveInvitation = async (agent: Agent, invitationUrl: string) => {\n const { outOfBandRecord } = await agent.oob.receiveInvitationFromUrl(invitationUrl)\n\n return outOfBandRecord\n}\n// end-section-5\n\n// start-section-6\nconst setupConnectionListener = (agent: Agent, outOfBandRecord: OutOfBandRecord, cb: (...args: any) => void) => {\n agent.events.on(ConnectionEventTypes.ConnectionStateChanged, ({ payload }) => {\n if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return\n if (payload.connectionRecord.state === DidExchangeState.Completed) {\n // the connection is now ready for usage in other protocols!\n console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)\n\n // Custom business logic can be included here\n // In this example we can send a basic message to the connection, but\n // anything is possible\n cb()\n\n // We exit the flow\n process.exit(0)\n }\n })\n}\n\n// end-section-6\n\nconst run = async () => {\n console.log('Initializing Bob agent...')\n const bobAgent = await initializeBobAgent()\n console.log('Initializing Acme agent...')\n const acmeAgent = await initializeAcmeAgent()\n\n console.log('Creating the invitation as Acme...')\n const { outOfBandRecord, invitationUrl } = await createNewInvitation(acmeAgent)\n\n console.log('Listening for connection changes...')\n setupConnectionListener(acmeAgent, outOfBandRecord, () =>\n console.log('We now have an active connection to use in the following tutorials')\n )\n\n console.log('Accepting the invitation as Bob...')\n await receiveInvitation(bobAgent, invitationUrl)\n}\n\nexport default run\n\nvoid run()\n"},5536:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n CredentialEventTypes,\n CredentialState,\n CredentialStateChangedEvent,\n DidsModule,\n HttpOutboundTransport,\n InitConfig,\n WsOutboundTransport,\n Agent,\n CredentialsModule,\n V2CredentialProtocol,\n} from '@credo-ts/core'\nimport { agentDependencies, HttpInboundTransport } from '@credo-ts/node'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport {\n IndyVdrAnonCredsRegistry,\n IndyVdrIndyDidRegistrar,\n IndyVdrIndyDidResolver,\n IndyVdrModule,\n} from '@credo-ts/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport {\n AnonCredsCredentialFormatService,\n AnonCredsModule,\n LegacyIndyCredentialFormatService,\n} from '@credo-ts/anoncreds'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\n\nconst issuerConfig: InitConfig = {\n label: 'docs-agent-nodejs-issue-a-credential-issuer',\n walletConfig: {\n id: 'wallet-id-issuer',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst holderConfig: InitConfig = {\n label: 'docs-agent-nodejs-issue-a-credential-holder',\n walletConfig: {\n id: 'wallet-id-holder',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nconst issuer = new Agent({\n config: issuerConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({\n ariesAskar,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n anoncreds,\n }),\n dids: new DidsModule({\n registrars: [new IndyVdrIndyDidRegistrar()],\n resolvers: [new IndyVdrIndyDidResolver()],\n }),\n credentials: new CredentialsModule({\n credentialProtocols: [\n new V2CredentialProtocol({\n credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],\n }),\n ],\n }),\n },\n})\n\n// Register a simple `WebSocket` outbound transport\nissuer.registerOutboundTransport(new WsOutboundTransport())\n\n// Register a simple `Http` outbound transport\nissuer.registerOutboundTransport(new HttpOutboundTransport())\n\n// Register a simple `Http` inbound transport\nissuer.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n// end-section-1\n\n// start-section-2\nconst holder = new Agent({\n config: holderConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({\n ariesAskar,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n anoncreds,\n }),\n dids: new DidsModule({\n resolvers: [new IndyVdrIndyDidResolver()],\n }),\n credentials: new CredentialsModule({\n credentialProtocols: [\n new V2CredentialProtocol({\n credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],\n }),\n ],\n }),\n },\n})\n\n// Register a simple `WebSocket` outbound transport\nholder.registerOutboundTransport(new WsOutboundTransport())\n\n// Register a simple `Http` outbound transport\nholder.registerOutboundTransport(new HttpOutboundTransport())\n\n// Register a simple `Http` inbound transport\nholder.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))\n// end-section-2\n\n// start-section-3\nholder.events.on(CredentialEventTypes.CredentialStateChanged, async ({ payload }) => {\n switch (payload.credentialRecord.state) {\n case CredentialState.OfferReceived:\n console.log('received a credential')\n // custom logic here\n await holder.credentials.acceptOffer({ credentialRecordId: payload.credentialRecord.id })\n case CredentialState.Done:\n console.log(`Credential for credential id ${payload.credentialRecord.id} is accepted`)\n // For demo purposes we exit the program here.\n process.exit(0)\n }\n})\n// end-section-3\n\n// start-section-4\nconst indyCredentialExchangeRecord = await issuer.credentials.offerCredential({\n protocolVersion: 'v2',\n connectionId: '',\n credentialFormats: {\n indy: {\n credentialDefinitionId: '',\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n})\n// end-section-4\n\n// start-section-5\nconst anonCredsCredentialExchangeRecord = issuer.credentials.offerCredential({\n protocolVersion: 'v2',\n connectionId: '',\n credentialFormats: {\n anoncreds: {\n credentialDefinitionId: '',\n attributes: [\n { name: 'name', value: 'Jane Doe' },\n { name: 'age', value: '23' },\n ],\n },\n },\n})\n// end-section-5\n"},8249:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n ConsoleLogger,\n HttpOutboundTransport,\n InitConfig,\n LogLevel,\n MediationRecipientModule,\n WsOutboundTransport,\n} from '@credo-ts/core'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport { agentDependencies } from '@credo-ts/node'\n\n// start-section-1\nconst name = 'alice'\n\n// paste your invitation url here\n// or use the current invitation-url to connect to the public animo-mediator.\nconst mediatorInvitationUrl =\n 'https://mediator.dev.animo.id/invite?oob=eyJAdHlwZSI6Imh0dHBzOi8vZGlkY29tbS5vcmcvb3V0LW9mLWJhbmQvMS4xL2ludml0YXRpb24iLCJAaWQiOiIyMDc1MDM4YS05ZGU3LTRiODItYWUxYi1jNzBmNDg4MjYzYTciLCJsYWJlbCI6IkFuaW1vIE1lZGlhdG9yIiwiYWNjZXB0IjpbImRpZGNvbW0vYWlwMSIsImRpZGNvbW0vYWlwMjtlbnY9cmZjMTkiXSwiaGFuZHNoYWtlX3Byb3RvY29scyI6WyJodHRwczovL2RpZGNvbW0ub3JnL2RpZGV4Y2hhbmdlLzEuMCIsImh0dHBzOi8vZGlkY29tbS5vcmcvY29ubmVjdGlvbnMvMS4wIl0sInNlcnZpY2VzIjpbeyJpZCI6IiNpbmxpbmUtMCIsInNlcnZpY2VFbmRwb2ludCI6Imh0dHBzOi8vbWVkaWF0b3IuZGV2LmFuaW1vLmlkIiwidHlwZSI6ImRpZC1jb21tdW5pY2F0aW9uIiwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtvSG9RTUphdU5VUE5OV1pQcEw3RGs1SzNtQ0NDMlBpNDJGY3FwR25iampMcSJdLCJyb3V0aW5nS2V5cyI6W119LHsiaWQiOiIjaW5saW5lLTEiLCJzZXJ2aWNlRW5kcG9pbnQiOiJ3c3M6Ly9tZWRpYXRvci5kZXYuYW5pbW8uaWQiLCJ0eXBlIjoiZGlkLWNvbW11bmljYXRpb24iLCJyZWNpcGllbnRLZXlzIjpbImRpZDprZXk6ejZNa29Ib1FNSmF1TlVQTk5XWlBwTDdEazVLM21DQ0MyUGk0MkZjcXBHbmJqakxxIl0sInJvdXRpbmdLZXlzIjpbXX1dfQ'\n\nconst agentConfig: InitConfig = {\n label: `Credo ${name}`,\n walletConfig: {\n id: name,\n key: name,\n },\n logger: new ConsoleLogger(LogLevel.trace),\n}\n\nconst alice = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n mediationRecipient: new MediationRecipientModule({\n mediatorInvitationUrl,\n }),\n askar: new AskarModule({ ariesAskar }),\n },\n})\n\nalice.registerOutboundTransport(new HttpOutboundTransport())\nalice.registerOutboundTransport(new WsOutboundTransport())\n\nawait alice.initialize()\n// end-section-1\n"},1676:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import {\n Agent,\n ConnectionsModule,\n HttpOutboundTransport,\n InitConfig,\n MediationStateChangedEvent,\n MediatorModule,\n RoutingEventTypes,\n} from '@credo-ts/core'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport { HttpInboundTransport, agentDependencies } from '@credo-ts/node'\n\n// start-section-1\nconst name = 'mediator'\nconst port = 3001\n\nconst agentConfig: InitConfig = {\n label: `Credo ${name}`,\n walletConfig: {\n id: name,\n key: name,\n },\n endpoints: [`http://localhost:${port}`],\n}\n\nconst mediator = new Agent({\n config: agentConfig,\n dependencies: agentDependencies,\n modules: {\n askar: new AskarModule({ ariesAskar }),\n mediator: new MediatorModule({\n autoAcceptMediationRequests: true,\n }),\n connections: new ConnectionsModule({\n autoAcceptConnections: true,\n }),\n },\n})\n\nmediator.registerOutboundTransport(new HttpOutboundTransport())\nmediator.registerInboundTransport(new HttpInboundTransport({ port }))\n\nawait mediator.initialize()\nconst mediatorOutOfBandRecord = await mediator.oob.createInvitation({ multiUseInvitation: true })\n\nconst mediatiorInvitationUrl = mediatorOutOfBandRecord.outOfBandInvitation.toUrl({\n domain: `http://localhost:${port}`,\n})\nconsole.log(mediatiorInvitationUrl)\n// end-section-1\n\nmediator.events\n .observable(RoutingEventTypes.MediationStateChanged)\n .subscribe(({ payload }) => {\n console.log(`${name} mediation state: ${payload.mediationRecord.state}`)\n })\n"},1104:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { DidsModule, InitConfig, KeyType, TypedArrayEncoder } from '@credo-ts/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs-register-schema-and-cred-def',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/node'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\nimport {\n IndyVdrAnonCredsRegistry,\n IndyVdrIndyDidRegistrar,\n IndyVdrIndyDidResolver,\n IndyVdrModule,\n} from '@credo-ts/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { AnonCredsModule } from '@credo-ts/anoncreds'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\nimport {\n CheqdAnonCredsRegistry,\n CheqdDidRegistrar,\n CheqdDidResolver,\n CheqdModule,\n CheqdModuleConfig,\n} from '@credo-ts/cheqd'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // We do this to have access to a wallet\n askar: new AskarModule({\n ariesAskar,\n }),\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n cheqd: new CheqdModule(\n new CheqdModuleConfig({\n networks: [\n {\n network: '',\n cosmosPayerSeed: '',\n },\n ],\n })\n ),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry(), new CheqdAnonCredsRegistry()],\n anoncreds,\n }),\n dids: new DidsModule({\n registrars: [new IndyVdrIndyDidRegistrar(), new CheqdDidRegistrar()],\n resolvers: [new IndyVdrIndyDidResolver(), new CheqdDidResolver()],\n }),\n },\n})\n// end-section-1\n\n// start-section-2\nconst seed = TypedArrayEncoder.fromString(``) // What you input on bcovrin. Should be kept secure in production!\nconst unqualifiedIndyDid = `` // will be returned after registering seed on bcovrin\nconst indyDid = `did:indy:bcovrin:test:${unqualifiedIndyDid}`\n\nconst cheqdDid = await agent.dids.create({\n method: 'cheqd',\n secret: {\n verificationMethod: {\n id: 'key-1',\n type: 'Ed25519VerificationKey2020',\n },\n },\n options: {\n network: 'testnet',\n methodSpecificIdAlgo: 'uuid',\n },\n})\n\nawait agent.dids.import({\n did: '',\n overwrite: true,\n privateKeys: [\n {\n privateKey: seed,\n keyType: KeyType.Ed25519,\n },\n ],\n})\n// end-section-2\n\n// start-section-3\nconst schemaResult = await agent.modules.anoncreds.registerSchema({\n schema: {\n attrNames: ['name'],\n issuerId: '',\n name: 'Example Schema to register',\n version: '1.0.0',\n },\n options: {},\n})\n\nif (schemaResult.schemaState.state === 'failed') {\n throw new Error(`Error creating schema: ${schemaResult.schemaState.reason}`)\n}\n// end-section-3\n\n// start-section-4\nconst credentialDefinitionResult = await agent.modules.anoncreds.registerCredentialDefinition({\n credentialDefinition: {\n tag: 'default',\n issuerId: '',\n schemaId: schemaResult.schemaState.schemaId,\n },\n options: {\n supportRevocation: false,\n },\n})\n\nif (credentialDefinitionResult.credentialDefinitionState.state === 'failed') {\n throw new Error(\n `Error creating credential definition: ${credentialDefinitionResult.credentialDefinitionState.reason}`\n )\n}\n// end-section-4\n"},8182:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@credo-ts/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/react-native'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport { anoncreds } from '@hyperledger/anoncreds-react-native'\nimport { AnonCredsModule } from '@credo-ts/anoncreds'\nimport { IndyVdrAnonCredsRegistry } from '@credo-ts/indy-vdr'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // This is included as we need a wallet on our agent\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncreds: new AnonCredsModule({\n // Here we add an Indy VDR registry as an example, any AnonCreds registry\n // can be used\n registries: [new IndyVdrAnonCredsRegistry()],\n anoncreds,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},5905:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@credo-ts/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/node'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\nimport { AnonCredsModule } from '@credo-ts/anoncreds'\nimport { IndyVdrAnonCredsRegistry } from '@credo-ts/indy-vdr'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n // This is included as we need a wallet on our agent\n askar: new AskarModule({\n ariesAskar,\n }),\n anoncreds: new AnonCredsModule({\n // Here we add an Indy VDR registry as an example, any AnonCreds registry\n // can be used\n registries: [new IndyVdrAnonCredsRegistry()],\n anoncreds,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},3106:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@credo-ts/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/react-native'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},531:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@credo-ts/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/node'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n // Register the Askar module on the agent\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},1638:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import { DidDocumentService, InitConfig } from '@credo-ts/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent, DidsModule, KeyType, DidDocument } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/react-native'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport {\n CheqdAnonCredsRegistry,\n CheqdDidRegistrar,\n CheqdDidResolver,\n CheqdModule,\n CheqdModuleConfig,\n CheqdDidCreateOptions,\n} from '@credo-ts/cheqd'\nimport { AnonCredsModule } from '@credo-ts/anoncreds'\nimport { anoncreds } from '@hyperledger/anoncreds-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n dids: new DidsModule({\n registrars: [new CheqdDidRegistrar()],\n resolvers: [new CheqdDidResolver()],\n }),\n\n // AnonCreds\n anoncreds: new AnonCredsModule({\n registries: [new CheqdAnonCredsRegistry()],\n anoncreds,\n }),\n\n // Add cheqd module\n cheqd: new CheqdModule(\n new CheqdModuleConfig({\n networks: [\n {\n network: '',\n cosmosPayerSeed: '',\n },\n ],\n })\n ),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n\n// start-section-2\n\n// create a key pair\nconst key = await agent.wallet.createKey({\n keyType: KeyType.Ed25519,\n})\n\n// encode public key according to the verification method\nconst ed25519PublicKeyBase58 = key.publicKeyBase58\n\n// Create a DID\nawait agent.dids.create({\n method: 'cheqd',\n secret: {},\n options: {\n network: 'testnet',\n },\n didDocument: new DidDocument({\n id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',\n controller: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d'],\n verificationMethod: [\n {\n id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1',\n type: 'Ed25519VerificationKey2018',\n controller: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',\n publicKeyBase58: ed25519PublicKeyBase58,\n },\n ],\n authentication: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1'],\n }),\n})\n// end-section-2\n\n// start-section-3\nawait agent.dids.create({\n method: 'cheqd',\n // the secret contains a the verification method type and id\n secret: {\n verificationMethod: {\n id: 'key-1',\n type: 'Ed25519VerificationKey2020',\n },\n },\n // an optional methodSpecificIdAlgo parameter\n options: {\n network: 'testnet',\n methodSpecificIdAlgo: 'uuid',\n },\n})\n// end-section-3\n\n// start-section-4\nawait agent.dids.update({\n did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n // Updates DID Document with an additional verification method if provided\n secret: {\n verificationMethod: {\n id: 'key-2',\n type: 'JsonWebKey2020',\n },\n },\n didDocument: {\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n controller: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411'],\n verificationMethod: [\n {\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1',\n type: 'Ed25519VerificationKey2020',\n controller: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n publicKeyMultibase: 'z6MknkzLUEP5cxqqsaysNMWoh8NJRb3YsowTCj2D6yhwyEdj',\n },\n ],\n authentication: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1'],\n // updates did document with a service block\n service: [\n new DidDocumentService({\n id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#rand',\n type: 'rand',\n serviceEndpoint: 'https://rand.in',\n }),\n ],\n },\n})\n// end-section-4\n\n// start-section-5\nawait agent.dids.deactivate({\n did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',\n // an optional versionId parameter\n options: {\n versionId: '3.0',\n },\n})\n// end-section-5\n"},4613:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { IndyVdrModule } from '@credo-ts/indy-vdr'\n\nconst modules = {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n indyNamespace: 'bcovrin:test',\n isProduction: false,\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n}\n// end-section-1\n"},3995:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@credo-ts/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/react-native'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-react-native'\n\nimport { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@credo-ts/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-react-native'\nimport { AnonCredsModule } from '@credo-ts/anoncreds'\nimport { anoncreds } from '@hyperledger/anoncreds-react-native'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n anoncreds,\n }),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},5453:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="import type { InitConfig } from '@credo-ts/core'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\n// start-section-1\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/node'\nimport { AskarModule } from '@credo-ts/askar'\nimport { ariesAskar } from '@hyperledger/aries-askar-nodejs'\n\nimport { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@credo-ts/indy-vdr'\nimport { indyVdr } from '@hyperledger/indy-vdr-nodejs'\nimport { AnonCredsModule } from '@credo-ts/anoncreds'\nimport { anoncreds } from '@hyperledger/anoncreds-nodejs'\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n modules: {\n indyVdr: new IndyVdrModule({\n indyVdr,\n networks: [\n {\n isProduction: false,\n indyNamespace: 'bcovrin:test',\n genesisTransactions: '',\n connectOnStartup: true,\n },\n ],\n }),\n anoncreds: new AnonCredsModule({\n registries: [new IndyVdrAnonCredsRegistry()],\n anoncreds,\n }),\n // Indy VDR can optionally be used with Askar as wallet and storage implementation\n askar: new AskarModule({\n ariesAskar,\n }),\n },\n})\n// end-section-1\n\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n"},1308:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport type { InitConfig } from '@credo-ts/core'\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/react-native'\n\nconst config: InitConfig = {\n label: 'docs-agent-react-native',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n// end-section-1\n\n// start-section-2\nimport { HttpOutboundTransport, WsOutboundTransport } from '@credo-ts/core'\n\n// ... agent setup from prevous section ...\n\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\n// end-section-2\n\n// TODO: we probably want to make this more specific to React Native,\n// so using it in a components and recommending to use the react hooks\n// start-section-3\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n// end-section-3\n"},2537:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>o});const o="// start-section-1\nimport type { InitConfig } from '@credo-ts/core'\nimport { Agent } from '@credo-ts/core'\nimport { agentDependencies } from '@credo-ts/node'\n\nconst config: InitConfig = {\n label: 'docs-agent-nodejs',\n walletConfig: {\n id: 'wallet-id',\n key: 'testkey0000000000000000000000000',\n },\n}\n\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n// end-section-1\n\n// start-section-2\nimport { HttpOutboundTransport, WsOutboundTransport } from '@credo-ts/core'\nimport { HttpInboundTransport } from '@credo-ts/node'\n\n// ... agent setup from prevous section ...\n\nagent.registerOutboundTransport(new HttpOutboundTransport())\nagent.registerOutboundTransport(new WsOutboundTransport())\nagent.registerInboundTransport(new HttpInboundTransport({ port: 3000 }))\n// end-section-2\n\n// start-section-3\nagent\n .initialize()\n .then(() => {\n console.log('Agent initialized!')\n })\n .catch((e) => {\n console.error(`Something went wrong while setting up the agent! Message: ${e}`)\n })\n// end-section-3\n"},2502:(n,e,t)=>{var o={"./0.3/node_modules/did-resolver/src/__tests__/resolver.test":349,"./0.3/node_modules/did-resolver/src/__tests__/resolver.test.ts":349,"./0.3/node_modules/did-resolver/src/resolver":5883,"./0.3/node_modules/did-resolver/src/resolver.ts":5883,"./0.3/node_modules/luxon/src/datetime":8105,"./0.3/node_modules/luxon/src/datetime.js":8105,"./0.3/node_modules/luxon/src/duration":6721,"./0.3/node_modules/luxon/src/duration.js":6721,"./0.3/node_modules/luxon/src/errors":4015,"./0.3/node_modules/luxon/src/errors.js":4015,"./0.3/node_modules/luxon/src/impl/conversions":8498,"./0.3/node_modules/luxon/src/impl/conversions.js":8498,"./0.3/node_modules/luxon/src/impl/diff":8998,"./0.3/node_modules/luxon/src/impl/diff.js":8998,"./0.3/node_modules/luxon/src/impl/digits":9310,"./0.3/node_modules/luxon/src/impl/digits.js":9310,"./0.3/node_modules/luxon/src/impl/english":4039,"./0.3/node_modules/luxon/src/impl/english.js":4039,"./0.3/node_modules/luxon/src/impl/formats":5303,"./0.3/node_modules/luxon/src/impl/formats.js":5303,"./0.3/node_modules/luxon/src/impl/formatter":4756,"./0.3/node_modules/luxon/src/impl/formatter.js":4756,"./0.3/node_modules/luxon/src/impl/invalid":760,"./0.3/node_modules/luxon/src/impl/invalid.js":760,"./0.3/node_modules/luxon/src/impl/locale":114,"./0.3/node_modules/luxon/src/impl/locale.js":114,"./0.3/node_modules/luxon/src/impl/regexParser":1990,"./0.3/node_modules/luxon/src/impl/regexParser.js":1990,"./0.3/node_modules/luxon/src/impl/tokenParser":4546,"./0.3/node_modules/luxon/src/impl/tokenParser.js":4546,"./0.3/node_modules/luxon/src/impl/util":7866,"./0.3/node_modules/luxon/src/impl/util.js":7866,"./0.3/node_modules/luxon/src/impl/zoneUtil":9776,"./0.3/node_modules/luxon/src/impl/zoneUtil.js":9776,"./0.3/node_modules/luxon/src/info":6965,"./0.3/node_modules/luxon/src/info.js":6965,"./0.3/node_modules/luxon/src/interval":1591,"./0.3/node_modules/luxon/src/interval.js":1591,"./0.3/node_modules/luxon/src/luxon":8004,"./0.3/node_modules/luxon/src/luxon.js":8004,"./0.3/node_modules/luxon/src/luxonFilled":9972,"./0.3/node_modules/luxon/src/luxonFilled.js":9972,"./0.3/node_modules/luxon/src/settings":2636,"./0.3/node_modules/luxon/src/settings.js":2636,"./0.3/node_modules/luxon/src/zone":6476,"./0.3/node_modules/luxon/src/zone.js":6476,"./0.3/node_modules/luxon/src/zones/IANAZone":3176,"./0.3/node_modules/luxon/src/zones/IANAZone.js":3176,"./0.3/node_modules/luxon/src/zones/fixedOffsetZone":1840,"./0.3/node_modules/luxon/src/zones/fixedOffsetZone.js":1840,"./0.3/node_modules/luxon/src/zones/invalidZone":5092,"./0.3/node_modules/luxon/src/zones/invalidZone.js":5092,"./0.3/node_modules/luxon/src/zones/localZone":5617,"./0.3/node_modules/luxon/src/zones/localZone.js":5617,"./0.3/src/create-a-connection":7058,"./0.3/src/create-a-connection.ts":7058,"./0.3/src/issue-a-credential":2151,"./0.3/src/issue-a-credential.ts":2151,"./0.3/src/set-up":420,"./0.3/src/set-up-rn":3288,"./0.3/src/set-up-rn.ts":3288,"./0.3/src/set-up.ts":420,"./0.4/node_modules/@hyperledger/anoncreds-react-native/android/src/main/AndroidManifest.xml":1960,"./0.4/node_modules/@hyperledger/anoncreds-react-native/android/src/main/java/org/hyperledger/anoncreds/AnoncredsModule.java":8854,"./0.4/node_modules/@hyperledger/anoncreds-react-native/android/src/main/java/org/hyperledger/anoncreds/AnoncredsPackage.java":2510,"./0.4/node_modules/@hyperledger/aries-askar-react-native/android/src/main/AndroidManifest.xml":8339,"./0.4/node_modules/@hyperledger/aries-askar-react-native/android/src/main/java/org/hyperledger/ariesaskar/AriesAskarModule.java":2853,"./0.4/node_modules/@hyperledger/aries-askar-react-native/android/src/main/java/org/hyperledger/ariesaskar/AriesAskarPackage.java":8093,"./0.4/node_modules/@hyperledger/indy-vdr-react-native/android/src/main/AndroidManifest.xml":6666,"./0.4/node_modules/@hyperledger/indy-vdr-react-native/android/src/main/java/org/hyperledger/indyvdr/IndyVdrModule.java":7383,"./0.4/node_modules/@hyperledger/indy-vdr-react-native/android/src/main/java/org/hyperledger/indyvdr/IndyVdrPackage.java":1138,"./0.4/src/create-a-connection":5343,"./0.4/src/create-a-connection.ts":5343,"./0.4/src/issue-a-credential":7283,"./0.4/src/issue-a-credential.ts":7283,"./0.4/src/mediation-recipient":8276,"./0.4/src/mediation-recipient.ts":8276,"./0.4/src/mediator-setup":768,"./0.4/src/mediator-setup.ts":768,"./0.4/src/register-schema-and-cred-def":2055,"./0.4/src/register-schema-and-cred-def.ts":2055,"./0.4/src/set-up":1031,"./0.4/src/set-up-anoncreds-rs":3099,"./0.4/src/set-up-anoncreds-rs-rn":6596,"./0.4/src/set-up-anoncreds-rs-rn.ts":6596,"./0.4/src/set-up-anoncreds-rs.ts":3099,"./0.4/src/set-up-askar":3716,"./0.4/src/set-up-askar-rn":8757,"./0.4/src/set-up-askar-rn.ts":8757,"./0.4/src/set-up-askar.ts":3716,"./0.4/src/set-up-cheqd":2107,"./0.4/src/set-up-cheqd.ts":2107,"./0.4/src/set-up-indy-sdk":2863,"./0.4/src/set-up-indy-sdk-postgres":4056,"./0.4/src/set-up-indy-sdk-postgres.ts":4056,"./0.4/src/set-up-indy-sdk-rn":1002,"./0.4/src/set-up-indy-sdk-rn.ts":1002,"./0.4/src/set-up-indy-sdk.ts":2863,"./0.4/src/set-up-indy-vdr":4437,"./0.4/src/set-up-indy-vdr-config":9031,"./0.4/src/set-up-indy-vdr-config.ts":9031,"./0.4/src/set-up-indy-vdr-rn":4279,"./0.4/src/set-up-indy-vdr-rn.ts":4279,"./0.4/src/set-up-indy-vdr.ts":4437,"./0.4/src/set-up-rn":6121,"./0.4/src/set-up-rn.ts":6121,"./0.4/src/set-up.ts":1031,"./current/src/create-a-connection":6033,"./current/src/create-a-connection.ts":6033,"./current/src/issue-a-credential":5536,"./current/src/issue-a-credential.ts":5536,"./current/src/mediation-recipient":8249,"./current/src/mediation-recipient.ts":8249,"./current/src/mediator-setup":1676,"./current/src/mediator-setup.ts":1676,"./current/src/register-schema-and-cred-def":1104,"./current/src/register-schema-and-cred-def.ts":1104,"./current/src/set-up":2537,"./current/src/set-up-anoncreds":5905,"./current/src/set-up-anoncreds-rn":8182,"./current/src/set-up-anoncreds-rn.ts":8182,"./current/src/set-up-anoncreds.ts":5905,"./current/src/set-up-askar":531,"./current/src/set-up-askar-rn":3106,"./current/src/set-up-askar-rn.ts":3106,"./current/src/set-up-askar.ts":531,"./current/src/set-up-cheqd":1638,"./current/src/set-up-cheqd.ts":1638,"./current/src/set-up-indy-vdr":5453,"./current/src/set-up-indy-vdr-config":4613,"./current/src/set-up-indy-vdr-config.ts":4613,"./current/src/set-up-indy-vdr-rn":3995,"./current/src/set-up-indy-vdr-rn.ts":3995,"./current/src/set-up-indy-vdr.ts":5453,"./current/src/set-up-rn":1308,"./current/src/set-up-rn.ts":1308,"./current/src/set-up.ts":2537};function r(n){var e=i(n);return t(e)}function i(n){if(!t.o(o,n)){var e=new Error("Cannot find module '"+n+"'");throw e.code="MODULE_NOT_FOUND",e}return o[n]}r.keys=function(){return Object.keys(o)},r.resolve=i,n.exports=r,r.id=2502}}]); \ No newline at end of file diff --git a/assets/js/2332f431.9b8a1baa.js b/assets/js/2332f431.9b8a1baa.js deleted file mode 100644 index 99d0b77c..00000000 --- a/assets/js/2332f431.9b8a1baa.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[82],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>g});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 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 o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),u=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={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,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=u(n),m=r,g=c["".concat(l,".").concat(m)]||c[m]||d[m]||i;return n?a.createElement(g,o(o({ref:t},p),{},{components:n})):a.createElement(g,o({ref:t},p))}));function g(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:r,o[1]=s;for(var u=2;u{n.d(t,{Z:()=>f});var a=n(7294),r=n(6010),i=n(3438),o=n(9960),s=n(3919),l=n(5999);const u={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function p(e){let{href:t,children:n}=e;return a.createElement(o.Z,{href:t,className:(0,r.Z)("card padding--lg",u.cardContainer)},n)}function c(e){let{href:t,icon:n,title:i,description:o}=e;return a.createElement(p,{href:t},a.createElement("h2",{className:(0,r.Z)("text--truncate",u.cardTitle),title:i},n," ",i),o&&a.createElement("p",{className:(0,r.Z)("text--truncate",u.cardDescription),title:o},o))}function d(e){let{item:t}=e;const n=(0,i.Wl)(t);return n?a.createElement(c,{href:n,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function m(e){let{item:t}=e;const n=(0,s.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",r=(0,i.xz)(t.docId??void 0);return a.createElement(c,{href:t.href,icon:n,title:t.label,description:r?.description})}function g(e){let{item:t}=e;switch(t.type){case"link":return a.createElement(m,{item:t});case"category":return a.createElement(d,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function h(e){let{className:t}=e;const n=(0,i.jA)();return a.createElement(f,{items:n.items,className:t})}function f(e){const{items:t,className:n}=e;if(!t)return a.createElement(h,e);const o=(0,i.MN)(t);return a.createElement("section",{className:(0,r.Z)("row",n)},o.map(((e,t)=>a.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},a.createElement(g,{item:e})))))}},5162:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(7294),r=n(6010);const i={tabItem:"tabItem_Ymn6"};function o(e){let{children:t,hidden:n,className:o}=e;return a.createElement("div",{role:"tabpanel",className:(0,r.Z)(i.tabItem,o),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>N});var a=n(7462),r=n(7294),i=n(6010),o=n(2466),s=n(6550),l=n(1980),u=n(7392),p=n(12);function c(e){return function(e){return r.Children.map(e,(e=>{if((0,r.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:r}}=e;return{value:t,label:n,attributes:a,default:r}}))}function d(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??c(n);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function g(e){let{queryString:t=!1,groupId:n}=e;const a=(0,s.k6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l._X)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(a.location.search);t.set(i,e),a.replace({...a.location,search:t.toString()})}),[i,a])]}function h(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,i=d(e),[o,s]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:i}))),[l,u]=g({queryString:n,groupId:a}),[c,h]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,i]=(0,p.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:a}),f=(()=>{const e=l??c;return m({value:e,tabValues:i})?e:null})();(0,r.useLayoutEffect)((()=>{f&&s(f)}),[f]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);s(e),u(e),h(e)}),[u,h,i]),tabValues:i}}var f=n(2389);const k={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function b(e){let{className:t,block:n,selectedValue:s,selectValue:l,tabValues:u}=e;const p=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.o5)(),d=e=>{const t=e.currentTarget,n=p.indexOf(t),a=u[n].value;a!==s&&(c(t),l(a))},m=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=p.indexOf(e.currentTarget)+1;t=p[n]??p[0];break}case"ArrowLeft":{const n=p.indexOf(e.currentTarget)-1;t=p[n]??p[p.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":n},t)},u.map((e=>{let{value:t,label:n,attributes:o}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:s===t?0:-1,"aria-selected":s===t,key:t,ref:e=>p.push(e),onKeyDown:m,onClick:d},o,{className:(0,i.Z)("tabs__item",k.tabItem,o?.className,{"tabs__item--active":s===t})}),n??t)})))}function y(e){let{lazy:t,children:n,selectedValue:a}=e;if(n=Array.isArray(n)?n:[n],t){const e=n.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},n.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function v(e){const t=h(e);return r.createElement("div",{className:(0,i.Z)("tabs-container",k.tabList)},r.createElement(b,(0,a.Z)({},e,t)),r.createElement(y,(0,a.Z)({},e,t)))}function N(e){const t=(0,f.Z)();return r.createElement(v,(0,a.Z)({key:String(t)},e))}},8278:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>h,frontMatter:()=>l,metadata:()=>p,toc:()=>d});var a=n(7462),r=(n(7294),n(3905)),i=n(4866),o=n(5162),s=n(2991);const l={},u="Agent Setup",p={unversionedId:"getting-started/set-up/index",id:"getting-started/set-up/index",title:"Agent Setup",description:"This guide assumes you have followed the Prerequisites, and you have a valid",source:"@site/guides/getting-started/set-up/index.md",sourceDirName:"getting-started/set-up",slug:"/getting-started/set-up/",permalink:"/guides/0.5/getting-started/set-up/",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Prerequisites",permalink:"/guides/0.5/getting-started/prerequisites"},next:{title:"Aries Askar",permalink:"/guides/0.5/getting-started/set-up/aries-askar"}},c={},d=[{value:"Installing the required dependencies",id:"installing-the-required-dependencies",level:3},{value:"Additional setup",id:"additional-setup",level:3},{value:"Setting up the agent",id:"setting-up-the-agent",level:3},{value:"Adding a wallet and storage implementation",id:"adding-a-wallet-and-storage-implementation",level:3},{value:"Setting up the transports",id:"setting-up-the-transports",level:3},{value:"Initializing the agent",id:"initializing-the-agent",level:3},{value:"Next Steps",id:"next-steps",level:3},{value:"Useful resources",id:"useful-resources",level:3}],m={toc:d},g="wrapper";function h(e){let{components:t,...n}=e;return(0,r.kt)(g,(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"agent-setup"},"Agent Setup"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"This guide assumes you have followed the ",(0,r.kt)("a",{parentName:"p",href:"./prerequisites"},"Prerequisites"),", and you have a valid\n",(0,r.kt)("a",{parentName:"p",href:"https://nodejs.org"},"Node.JS")," or ",(0,r.kt)("a",{parentName:"p",href:"https://reactnative.dev"},"React Native")," project setup.")),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"Credo is still in ",(0,r.kt)("strong",{parentName:"p"},"active development"),", and as such some APIs are still experimental. ",(0,r.kt)("strong",{parentName:"p"},"When using any experimental features, make sure to use an exact version of Credo")," (",(0,r.kt)("inlineCode",{parentName:"p"},"0.4.0"),") instead of a range (",(0,r.kt)("inlineCode",{parentName:"p"},"^0.4.0"),"), to prevent accidental breaking changes. If you're not leveraging any experimental features, you can use a range (",(0,r.kt)("inlineCode",{parentName:"p"},"^0.4.0"),") to get the latest bugfixes and features."),(0,r.kt)("p",{parentName:"admonition"},"For Credo ",(0,r.kt)("inlineCode",{parentName:"p"},"0.4.x"),", ",(0,r.kt)("strong",{parentName:"p"},"the following features are experimental"),":"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"Implementing your own ",(0,r.kt)("inlineCode",{parentName:"li"},"AnonCredsRegistry")," and AnonCreds service implementation."),(0,r.kt)("li",{parentName:"ul"},"Using the shared component libraries from ",(0,r.kt)("inlineCode",{parentName:"li"},"@aries-framework/aries-askar"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"@aries-framework/indy-vdr")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"@aries-framework/anoncreds-rs")),(0,r.kt)("li",{parentName:"ul"},"Using OpenID4VC from the ",(0,r.kt)("inlineCode",{parentName:"li"},"@aries-framework/openid4vc-client")," module"),(0,r.kt)("li",{parentName:"ul"},"W3C JWT Verifiable Credentials"),(0,r.kt)("li",{parentName:"ul"},"Using multi-tenancy from the ",(0,r.kt)("inlineCode",{parentName:"li"},"@aries-framework/tenants")," module"),(0,r.kt)("li",{parentName:"ul"},"Using BBS+ Signatures from the ",(0,r.kt)("inlineCode",{parentName:"li"},"@aries-framework/bbs-signatures")," module"),(0,r.kt)("li",{parentName:"ul"},"Using the cheqd module from the ",(0,r.kt)("inlineCode",{parentName:"li"},"@aries-framework/cheqd")," module"))),(0,r.kt)("h3",{id:"installing-the-required-dependencies"},"Installing the required dependencies"),(0,r.kt)("p",null,"First we have to install the minimal amount of dependencies that are required\nfor configuring an Credo agent."),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @aries-framework/core@^0.4.0 @aries-framework/node@^0.4.0\n"))),(0,r.kt)(o.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @aries-framework/core@^0.4.0 @aries-framework/react-native@^0.4.0 react-native-fs react-native-get-random-values\n")))),(0,r.kt)("h3",{id:"additional-setup"},"Additional setup"),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Node.js",value:"tab1",mdxType:"TabItem"},(0,r.kt)("p",null,"No additional setup is required for Node.JS")),(0,r.kt)(o.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,r.kt)("p",null,"Since ",(0,r.kt)("a",{parentName:"p",href:"https://reactnative.dev"},"React Native")," does not have an implementation\nfor\n",(0,r.kt)("a",{parentName:"p",href:"https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues"},(0,r.kt)("inlineCode",{parentName:"a"},"crypto.getRandomValues()")),"\nwe have to setup a polyfill for this. We have to do this at the entrypoint of\nthe application. This could is most likely ",(0,r.kt)("inlineCode",{parentName:"p"},"index.(js|ts|jsx|tsx)")," at the root\nof your application."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-diff",metastring:'title="index.tsx" showLineNumbers',title:'"index.tsx"',showLineNumbers:!0},"+ import 'react-native-get-random-values'\n")),(0,r.kt)("p",null,"In addition you need add support for resolving modules with the ",(0,r.kt)("inlineCode",{parentName:"p"},".cjs")," extension, as this is used by some of Credo's dependencies and not automatically supported by React Native."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js",metastring:'title="metro.config.js" showLineNumbers',title:'"metro.config.js"',showLineNumbers:!0},"module.exports = {\n // ... other Metro config options ...\n resolver: {\n // make sure this includes `cjs` (and other extensions you need)\n sourceExts: ['js', 'json', 'ts', 'tsx', 'cjs'],\n },\n}\n")),(0,r.kt)("p",null,"Finally, if you're using ",(0,r.kt)("a",{parentName:"p",href:"https://expo.dev"},"Expo")," you need to add a custom resolution 'hack' that removes support for the legacy unimodules."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Yarn")),(0,r.kt)("p",null,"For yarn we can replace the ",(0,r.kt)("inlineCode",{parentName:"p"},"@unimodules/react-native-adapter")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"@unimodules/core")," dependencies with an empty directory. Make sure to create the ",(0,r.kt)("inlineCode",{parentName:"p"},"noop")," directory in the root of your project and create a ",(0,r.kt)("inlineCode",{parentName:"p"},".gitkeep")," file in the directory so that the directory is committed to your repository."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'title="package.json" showLineNumbers',title:'"package.json"',showLineNumbers:!0},'{\n // ... other package.json options ...\n "resolutions": {\n "@unimodules/react-native-adapter": "./noop",\n "@unimodules/core": "./noop"\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"NPM")),(0,r.kt)("p",null,"Not supported at the moment. NPM overrides work different than Yarn resolutions, and thus we can't use the same trick. If you're using NPM, feel free to open a PR with a working solution."))),(0,r.kt)("h3",{id:"setting-up-the-agent"},"Setting up the agent"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"this section does not assume any knowledge of the agent configuration.\nIn the ",(0,r.kt)("a",{parentName:"p",href:"../tutorials/agent-config"},"Agent Config")," tutorial we will discuss in-depth what every\nfield in the configuration does and when to set it.")),(0,r.kt)("p",null,"In order to use the agent in the application we have to configure and\ninitialize it. This following configuration is quite generic and possibly not\nenough for your specific use cases. Please refer to the\n",(0,r.kt)("a",{parentName:"p",href:"../tutorials/index"},"tutorials")," for a more use-case-specific agent setup."),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up.ts section-1",showLineNumbers:!0,"set-up.ts":!0,"section-1":!0},""))),(0,r.kt)(o.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-rn.ts section-1",showLineNumbers:!0,"set-up-rn.ts":!0,"section-1":!0},"")))),(0,r.kt)("h3",{id:"adding-a-wallet-and-storage-implementation"},"Adding a wallet and storage implementation"),(0,r.kt)("p",null,"After creating the ",(0,r.kt)("inlineCode",{parentName:"p"},"Agent")," instance, we need to provide the agent with a wallet and storage implementation. Credo provides a few implementations out of the box, but you can also implement your own. Currently the following Wallet and Storage implementations are supported out of the box. Follow the specific guides to set up the wallet and storage implementation of your choice."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"./set-up/aries-askar"},"Aries Askar")," - Recommended."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"./set-up/indy-sdk"},"Indy SDK")," - Legacy. Will be deprecated in the future.")),(0,r.kt)(s.Z,{items:[{type:"link",label:"Aries Askar",href:"./set-up/aries-askar",docId:"getting-started/set-up/aries-askar"},{type:"link",label:"Indy SDK",href:"./set-up/indy-sdk",docId:"getting-started/set-up/indy-sdk/index"}],mdxType:"DocCardList"}),(0,r.kt)("h3",{id:"setting-up-the-transports"},"Setting up the transports"),(0,r.kt)("p",null,"Finally, we have to set an outbound transport that\nwill handle traffic from the agent. It is also possible to set an inbound\ntransport in the same way as the outbound transport."),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Node.js",value:"tab1",mdxType:"TabItem"},(0,r.kt)("p",null,"Sets up an WS outbound and HTTP inbound and outbound transport."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up.ts section-2",showLineNumbers:!0,"set-up.ts":!0,"section-2":!0},""))),(0,r.kt)(o.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,r.kt)("p",null,"For mobile agents the WebSocket transport is often required. We will go into\nmore depth about the reasons for this in the ",(0,r.kt)("a",{parentName:"p",href:"/guides/0.5/tutorials/mediation"},"mediation")," section."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-rn.ts section-2",showLineNumbers:!0,"set-up-rn.ts":!0,"section-2":!0},"")))),(0,r.kt)("h3",{id:"initializing-the-agent"},"Initializing the agent"),(0,r.kt)("p",null,"Finally, we can initialize the agent and it's ready for use."),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Node.js",value:"tab1",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up.ts section-3",showLineNumbers:!0,"set-up.ts":!0,"section-3":!0},""))),(0,r.kt)(o.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-rn.ts section-3",showLineNumbers:!0,"set-up-rn.ts":!0,"section-3":!0},"")))),(0,r.kt)("h3",{id:"next-steps"},"Next Steps"),(0,r.kt)("p",null,"Now that you have your agent setup, it's time to start building your application. Head over to the tutorials page to get started."),(0,r.kt)(s.Z,{items:[{type:"link",label:"Tutorials",href:"../tutorials/index",docId:"tutorials/index"},{type:"link",label:"Create a Connection",href:"../tutorials/create-a-connection",docId:"tutorials/create-a-connection"}],mdxType:"DocCardList"}),(0,r.kt)("h3",{id:"useful-resources"},"Useful resources"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0004-agents/README.md"},"Hyperledger Aries RFC - 004:\nAgents"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2332f431.be9295db.js b/assets/js/2332f431.be9295db.js new file mode 100644 index 00000000..1df83b04 --- /dev/null +++ b/assets/js/2332f431.be9295db.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[82],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>g});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 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 o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),u=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={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,i=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=u(n),m=r,g=p["".concat(l,".").concat(m)]||p[m]||d[m]||i;return n?a.createElement(g,o(o({ref:t},c),{},{components:n})):a.createElement(g,o({ref:t},c))}));function g(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:r,o[1]=s;for(var u=2;u{n.d(t,{Z:()=>f});var a=n(7294),r=n(6010),i=n(3438),o=n(9960),s=n(3919),l=n(5999);const u={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function c(e){let{href:t,children:n}=e;return a.createElement(o.Z,{href:t,className:(0,r.Z)("card padding--lg",u.cardContainer)},n)}function p(e){let{href:t,icon:n,title:i,description:o}=e;return a.createElement(c,{href:t},a.createElement("h2",{className:(0,r.Z)("text--truncate",u.cardTitle),title:i},n," ",i),o&&a.createElement("p",{className:(0,r.Z)("text--truncate",u.cardDescription),title:o},o))}function d(e){let{item:t}=e;const n=(0,i.Wl)(t);return n?a.createElement(p,{href:n,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function m(e){let{item:t}=e;const n=(0,s.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",r=(0,i.xz)(t.docId??void 0);return a.createElement(p,{href:t.href,icon:n,title:t.label,description:r?.description})}function g(e){let{item:t}=e;switch(t.type){case"link":return a.createElement(m,{item:t});case"category":return a.createElement(d,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function h(e){let{className:t}=e;const n=(0,i.jA)();return a.createElement(f,{items:n.items,className:t})}function f(e){const{items:t,className:n}=e;if(!t)return a.createElement(h,e);const o=(0,i.MN)(t);return a.createElement("section",{className:(0,r.Z)("row",n)},o.map(((e,t)=>a.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},a.createElement(g,{item:e})))))}},5162:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(7294),r=n(6010);const i={tabItem:"tabItem_Ymn6"};function o(e){let{children:t,hidden:n,className:o}=e;return a.createElement("div",{role:"tabpanel",className:(0,r.Z)(i.tabItem,o),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>N});var a=n(7462),r=n(7294),i=n(6010),o=n(2466),s=n(6550),l=n(1980),u=n(7392),c=n(12);function p(e){return function(e){return r.Children.map(e,(e=>{if((0,r.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:r}}=e;return{value:t,label:n,attributes:a,default:r}}))}function d(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??p(n);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function g(e){let{queryString:t=!1,groupId:n}=e;const a=(0,s.k6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l._X)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(a.location.search);t.set(i,e),a.replace({...a.location,search:t.toString()})}),[i,a])]}function h(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,i=d(e),[o,s]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:i}))),[l,u]=g({queryString:n,groupId:a}),[p,h]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,i]=(0,c.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:a}),f=(()=>{const e=l??p;return m({value:e,tabValues:i})?e:null})();(0,r.useLayoutEffect)((()=>{f&&s(f)}),[f]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);s(e),u(e),h(e)}),[u,h,i]),tabValues:i}}var f=n(2389);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function k(e){let{className:t,block:n,selectedValue:s,selectValue:l,tabValues:u}=e;const c=[],{blockElementScrollPositionUntilNextRender:p}=(0,o.o5)(),d=e=>{const t=e.currentTarget,n=c.indexOf(t),a=u[n].value;a!==s&&(p(t),l(a))},m=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;t=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;t=c[n]??c[c.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":n},t)},u.map((e=>{let{value:t,label:n,attributes:o}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:s===t?0:-1,"aria-selected":s===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:d},o,{className:(0,i.Z)("tabs__item",b.tabItem,o?.className,{"tabs__item--active":s===t})}),n??t)})))}function y(e){let{lazy:t,children:n,selectedValue:a}=e;if(n=Array.isArray(n)?n:[n],t){const e=n.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},n.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function v(e){const t=h(e);return r.createElement("div",{className:(0,i.Z)("tabs-container",b.tabList)},r.createElement(k,(0,a.Z)({},e,t)),r.createElement(y,(0,a.Z)({},e,t)))}function N(e){const t=(0,f.Z)();return r.createElement(v,(0,a.Z)({key:String(t)},e))}},8278:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>h,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var a=n(7462),r=(n(7294),n(3905)),i=n(4866),o=n(5162),s=n(2991);const l={},u="Agent Setup",c={unversionedId:"getting-started/set-up/index",id:"getting-started/set-up/index",title:"Agent Setup",description:"This guide assumes you have followed the Prerequisites, and you have a valid",source:"@site/guides/getting-started/set-up/index.md",sourceDirName:"getting-started/set-up",slug:"/getting-started/set-up/",permalink:"/guides/0.5/getting-started/set-up/",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Prerequisites",permalink:"/guides/0.5/getting-started/prerequisites"},next:{title:"Aries Askar",permalink:"/guides/0.5/getting-started/set-up/aries-askar"}},p={},d=[{value:"Installing the required dependencies",id:"installing-the-required-dependencies",level:3},{value:"Additional setup",id:"additional-setup",level:3},{value:"Setting up the agent",id:"setting-up-the-agent",level:3},{value:"Adding a wallet and storage implementation",id:"adding-a-wallet-and-storage-implementation",level:3},{value:"Setting up the transports",id:"setting-up-the-transports",level:3},{value:"Initializing the agent",id:"initializing-the-agent",level:3},{value:"Next Steps",id:"next-steps",level:3},{value:"Useful resources",id:"useful-resources",level:3}],m={toc:d},g="wrapper";function h(e){let{components:t,...n}=e;return(0,r.kt)(g,(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"agent-setup"},"Agent Setup"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"This guide assumes you have followed the ",(0,r.kt)("a",{parentName:"p",href:"./prerequisites"},"Prerequisites"),", and you have a valid\n",(0,r.kt)("a",{parentName:"p",href:"https://nodejs.org"},"Node.JS")," or ",(0,r.kt)("a",{parentName:"p",href:"https://reactnative.dev"},"React Native")," project setup.")),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"Credo is still in ",(0,r.kt)("strong",{parentName:"p"},"active development"),", and as such some APIs are still experimental. ",(0,r.kt)("strong",{parentName:"p"},"When using any experimental features, make sure to use an exact version of Credo")," (",(0,r.kt)("inlineCode",{parentName:"p"},"0.5.0"),") instead of a range (",(0,r.kt)("inlineCode",{parentName:"p"},"^0.5.0"),"), to prevent accidental breaking changes. If you're not leveraging any experimental features, you can use a range (",(0,r.kt)("inlineCode",{parentName:"p"},"^0.5.0"),") to get the latest bugfixes and features."),(0,r.kt)("p",{parentName:"admonition"},"For Credo ",(0,r.kt)("inlineCode",{parentName:"p"},"0.5.x"),", ",(0,r.kt)("strong",{parentName:"p"},"the following features are experimental"),":"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"Using OpenID4VC from the ",(0,r.kt)("inlineCode",{parentName:"li"},"@credo-ts/openid4vc")," module"),(0,r.kt)("li",{parentName:"ul"},"SD-JWT Verifiable Credentials"),(0,r.kt)("li",{parentName:"ul"},"Using multi-tenancy from the ",(0,r.kt)("inlineCode",{parentName:"li"},"@credo-ts/tenants")," module"),(0,r.kt)("li",{parentName:"ul"},"Using BBS+ Signatures from the ",(0,r.kt)("inlineCode",{parentName:"li"},"@credo-ts/bbs-signatures")," module"),(0,r.kt)("li",{parentName:"ul"},"Using the cheqd module from the ",(0,r.kt)("inlineCode",{parentName:"li"},"@credo-ts/cheqd")," module"))),(0,r.kt)("h3",{id:"installing-the-required-dependencies"},"Installing the required dependencies"),(0,r.kt)("p",null,"First we have to install the minimal amount of dependencies that are required for configuring an Credo agent."),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @credo-ts/core@^0.5.0 @credo-ts/node@^0.5.0\n"))),(0,r.kt)(o.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @credo-ts/core@^0.5.0 @credo-ts/react-native@^0.5.0 react-native-fs react-native-get-random-values\n")))),(0,r.kt)("h3",{id:"additional-setup"},"Additional setup"),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Node.js",value:"tab1",mdxType:"TabItem"},(0,r.kt)("p",null,"No additional setup is required for Node.JS")),(0,r.kt)(o.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,r.kt)("p",null,"Since ",(0,r.kt)("a",{parentName:"p",href:"https://reactnative.dev"},"React Native")," does not have an implementation\nfor\n",(0,r.kt)("a",{parentName:"p",href:"https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues"},(0,r.kt)("inlineCode",{parentName:"a"},"crypto.getRandomValues()")),"\nwe have to setup a polyfill for this. We have to do this at the entrypoint of\nthe application. This could is most likely ",(0,r.kt)("inlineCode",{parentName:"p"},"index.(js|ts|jsx|tsx)")," at the root\nof your application."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-diff",metastring:'title="index.tsx" showLineNumbers',title:'"index.tsx"',showLineNumbers:!0},"+ import 'react-native-get-random-values'\n")),(0,r.kt)("p",null,"In addition you need add support for resolving modules with the ",(0,r.kt)("inlineCode",{parentName:"p"},".cjs")," extension, as this is used by some of Credo's dependencies and not automatically supported by React Native."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js",metastring:'title="metro.config.js" showLineNumbers',title:'"metro.config.js"',showLineNumbers:!0},"module.exports = {\n // ... other Metro config options ...\n resolver: {\n // make sure this includes `cjs` (and other extensions you need)\n sourceExts: ['js', 'json', 'ts', 'tsx', 'cjs'],\n },\n}\n")),(0,r.kt)("p",null,"Finally, if you're using ",(0,r.kt)("a",{parentName:"p",href:"https://expo.dev"},"Expo")," you need to add a custom resolution 'hack' that removes support for the legacy unimodules."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Yarn")),(0,r.kt)("p",null,"For yarn we can replace the ",(0,r.kt)("inlineCode",{parentName:"p"},"@unimodules/react-native-adapter")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"@unimodules/core")," dependencies with an empty directory. Make sure to create the ",(0,r.kt)("inlineCode",{parentName:"p"},"noop")," directory in the root of your project and create a ",(0,r.kt)("inlineCode",{parentName:"p"},".gitkeep")," file in the directory so that the directory is committed to your repository."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'title="package.json" showLineNumbers',title:'"package.json"',showLineNumbers:!0},'{\n // ... other package.json options ...\n "resolutions": {\n "@unimodules/react-native-adapter": "./noop",\n "@unimodules/core": "./noop"\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"NPM")),(0,r.kt)("p",null,"Not supported at the moment. NPM overrides work different than Yarn resolutions, and thus we can't use the same trick. If you're using NPM, feel free to open a PR with a working solution."))),(0,r.kt)("h3",{id:"setting-up-the-agent"},"Setting up the agent"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"this section does not assume any knowledge of the agent configuration.\nIn the ",(0,r.kt)("a",{parentName:"p",href:"../tutorials/agent-config"},"Agent Config")," tutorial we will discuss in-depth what every\nfield in the configuration does and when to set it.")),(0,r.kt)("p",null,"In order to use the agent in the application we have to configure and\ninitialize it. This following configuration is quite generic and possibly not\nenough for your specific use cases. Please refer to the\n",(0,r.kt)("a",{parentName:"p",href:"../tutorials/index"},"tutorials")," for a more use-case-specific agent setup."),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up.ts section-1",showLineNumbers:!0,"set-up.ts":!0,"section-1":!0},""))),(0,r.kt)(o.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-rn.ts section-1",showLineNumbers:!0,"set-up-rn.ts":!0,"section-1":!0},"")))),(0,r.kt)("h3",{id:"adding-a-wallet-and-storage-implementation"},"Adding a wallet and storage implementation"),(0,r.kt)("p",null,"After creating the ",(0,r.kt)("inlineCode",{parentName:"p"},"Agent")," instance, we need to provide the agent with a wallet and storage implementation. Credo provides one implementations out of the box, but you can also implement your own. Currently a Wallet and Storage implementation using Aries Askar is supported out of the box."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"./set-up/aries-askar"},"Aries Askar"))),(0,r.kt)(s.Z,{items:[{type:"link",label:"Aries Askar",href:"./set-up/aries-askar",docId:"getting-started/set-up/aries-askar"}],mdxType:"DocCardList"}),(0,r.kt)("h3",{id:"setting-up-the-transports"},"Setting up the transports"),(0,r.kt)("p",null,"Finally, we have to set an outbound transport that\nwill handle traffic from the agent. It is also possible to set an inbound\ntransport in the same way as the outbound transport."),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Node.js",value:"tab1",mdxType:"TabItem"},(0,r.kt)("p",null,"Sets up an WS outbound and HTTP inbound and outbound transport."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up.ts section-2",showLineNumbers:!0,"set-up.ts":!0,"section-2":!0},""))),(0,r.kt)(o.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,r.kt)("p",null,"For mobile agents the WebSocket transport is often required. We will go into\nmore depth about the reasons for this in the ",(0,r.kt)("a",{parentName:"p",href:"/guides/0.5/tutorials/mediation"},"mediation")," section."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-rn.ts section-2",showLineNumbers:!0,"set-up-rn.ts":!0,"section-2":!0},"")))),(0,r.kt)("h3",{id:"initializing-the-agent"},"Initializing the agent"),(0,r.kt)("p",null,"Finally, we can initialize the agent and it's ready for use."),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Node.js",value:"tab1",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up.ts section-3",showLineNumbers:!0,"set-up.ts":!0,"section-3":!0},""))),(0,r.kt)(o.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-rn.ts section-3",showLineNumbers:!0,"set-up-rn.ts":!0,"section-3":!0},"")))),(0,r.kt)("h3",{id:"next-steps"},"Next Steps"),(0,r.kt)("p",null,"Now that you have your agent setup, it's time to start building your application. Head over to the tutorials page to get started."),(0,r.kt)(s.Z,{items:[{type:"link",label:"Tutorials",href:"../tutorials/index",docId:"tutorials/index"},{type:"link",label:"Create a Connection",href:"../tutorials/create-a-connection",docId:"tutorials/create-a-connection"}],mdxType:"DocCardList"}),(0,r.kt)("h3",{id:"useful-resources"},"Useful resources"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0004-agents/README.md"},"Hyperledger Aries RFC - 004:\nAgents"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/32456564.74f902ca.js b/assets/js/32456564.74f902ca.js new file mode 100644 index 00000000..6eb6a67b --- /dev/null +++ b/assets/js/32456564.74f902ca.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[8937],{3905:(t,e,a)=>{a.d(e,{Zo:()=>p,kt:()=>h});var n=a(7294);function i(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function s(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function r(t){for(var e=1;e=0||(i[a]=t[a]);return i}(t,e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(i[a]=t[a])}return i}var l=n.createContext({}),u=function(t){var e=n.useContext(l),a=e;return t&&(a="function"==typeof t?t(e):r(r({},e),t)),a},p=function(t){var e=u(t.components);return n.createElement(l.Provider,{value:e},t.children)},d="mdxType",g={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},c=n.forwardRef((function(t,e){var a=t.components,i=t.mdxType,s=t.originalType,l=t.parentName,p=o(t,["components","mdxType","originalType","parentName"]),d=u(a),c=i,h=d["".concat(l,".").concat(c)]||d[c]||g[c]||s;return a?n.createElement(h,r(r({ref:e},p),{},{components:a})):n.createElement(h,r({ref:e},p))}));function h(t,e){var a=arguments,i=e&&e.mdxType;if("string"==typeof t||i){var s=a.length,r=new Array(s);r[0]=c;var o={};for(var l in e)hasOwnProperty.call(e,l)&&(o[l]=e[l]);o.originalType=t,o[d]="string"==typeof t?t:i,r[1]=o;for(var u=2;u{a.r(e),a.d(e,{assets:()=>l,contentTitle:()=>r,default:()=>g,frontMatter:()=>s,metadata:()=>o,toc:()=>u});var n=a(7462),i=(a(7294),a(3905));const s={},r="Update Assistant",o={unversionedId:"updating/update-assistant",id:"updating/update-assistant",title:"Update Assistant",description:"The Update Assistant helps you update the storage objects from Credo to newer versions. This documents describes the different ways you can leverage the Update Assistant from fully managed to more manual approaches.",source:"@site/guides/updating/update-assistant.md",sourceDirName:"updating",slug:"/updating/update-assistant",permalink:"/guides/0.5/updating/update-assistant",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Updating Credo",permalink:"/guides/0.5/updating/"},next:{title:"Migrating from an Indy SDK Wallet to Aries Askar",permalink:"/guides/0.5/updating/update-indy-sdk-to-askar"}},l={},u=[{value:"Update Strategies",id:"update-strategies",level:2},{value:"Manually instantiating the update assistant on agent startup",id:"manually-instantiating-the-update-assistant-on-agent-startup",level:3},{value:"Storing the agent storage version outside of the agent storage",id:"storing-the-agent-storage-version-outside-of-the-agent-storage",level:3},{value:"Automatically update on agent startup",id:"automatically-update-on-agent-startup",level:3},{value:"Backups",id:"backups",level:2}],p={toc:u},d="wrapper";function g(t){let{components:e,...a}=t;return(0,i.kt)(d,(0,n.Z)({},p,a,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"update-assistant"},"Update Assistant"),(0,i.kt)("p",null,"The Update Assistant helps you update the storage objects from Credo to newer versions. This documents describes the different ways you can leverage the Update Assistant from fully managed to more manual approaches."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#update-strategies"},"Update Strategies"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#manually-instantiating-the-update-assistant-on-agent-startup"},"Manually instantiating the update assistant on agent startup")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#storing-the-agent-storage-version-outside-of-the-agent-storage"},"Storing the agent storage version outside of the agent storage")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#automatically-update-on-agent-startup"},"Automatically update on agent startup")))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#backups"},"Backups"))),(0,i.kt)("h2",{id:"update-strategies"},"Update Strategies"),(0,i.kt)("p",null,"There are three options on how to leverage the update assistant on agent startup:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Manually instantiating the update assistant on agent startup"),(0,i.kt)("li",{parentName:"ol"},"Storing the agent storage version outside of the agent storage"),(0,i.kt)("li",{parentName:"ol"},"Automatically update on agent startup")),(0,i.kt)("h3",{id:"manually-instantiating-the-update-assistant-on-agent-startup"},"Manually instantiating the update assistant on agent startup"),(0,i.kt)("p",null,"When the version of the storage is stored inside the agent storage, it means we need to check if the agent needs to be updated on every agent startup. We'll initialize the update assistant and check whether the storage is up to date. The advantage of this approach is that you don't have to store anything yourself, and have full control over the workflow."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-ts"},"import { UpdateAssistant, Agent } from '@credo-ts/core'\n\n// or @credo-ts/node\nimport { agentDependencies } from '@credo-ts/react-native'\n\n// First create the agent\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n\n// Then initialize the update assistant with the update config\nconst updateAssistant = new UpdateAssistant(agent, {\n v0_1ToV0_2: {\n mediationRoleUpdateStrategy: 'allMediator',\n },\n})\n\n// Initialize the update assistant so we can read the current storage version\n// from the wallet. If you manually initialize the wallet you should do this _before_\n// calling initialize on the update assistant\n// await agent.wallet.initialize(walletConfig)\nawait updateAssistant.initialize()\n\n// Check if the agent is up to date, if not call update\nif (!(await updateAssistant.isUpToDate())) {\n await updateAssistant.update()\n}\n\n// Once finished initialize the agent. You should do this on every launch of the agent\nawait agent.initialize()\n")),(0,i.kt)("h3",{id:"storing-the-agent-storage-version-outside-of-the-agent-storage"},"Storing the agent storage version outside of the agent storage"),(0,i.kt)("p",null,"When the version of the storage is stored outside of the agent storage, you don't have to initialize the ",(0,i.kt)("inlineCode",{parentName:"p"},"UpdateAssistant")," on every agent agent startup. You can just check if the storage version is up to date and instantiate the ",(0,i.kt)("inlineCode",{parentName:"p"},"UpdateAssistant")," if not. The advantage of this approach is that you don't have to instantiate the ",(0,i.kt)("inlineCode",{parentName:"p"},"UpdateAssistant")," on every agent startup, but this does mean that you have to store the storage version yourself."),(0,i.kt)("p",null,"When a wallet has been exported and later imported you don't always have the latest version available. If this is the case you can always rely on Method 1 or 2 for updating the wallet, and storing the version yourself afterwards. You can also get the current version by calling ",(0,i.kt)("inlineCode",{parentName:"p"},"await updateAssistant.getCurrentAgentStorageVersion()"),". Do note the ",(0,i.kt)("inlineCode",{parentName:"p"},"UpdateAssistant")," needs to be initialized before calling this method."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-ts"},"import { UpdateAssistant, Agent } from '@credo-ts/core'\n\n// or @credo-ts/node\nimport { agentDependencies } from '@credo-ts/react-native'\n\n// The storage version will normally be stored in e.g. persistent storage on a mobile device\nlet currentStorageVersion: VersionString = '0.1'\n\n// First create the agent\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n\n// We only initialize the update assistant if our stored version is not equal\n// to the frameworkStorageVersion of the UpdateAssistant. The advantage of this\n// is that we don't have to initialize the UpdateAssistant to retrieve the current\n// storage version.\nif (currentStorageVersion !== UpdateAssistant.frameworkStorageVersion) {\n const updateAssistant = new UpdateAssistant(agent, {\n v0_1ToV0_2: {\n mediationRoleUpdateStrategy: 'recipientIfEndpoint',\n },\n })\n\n // Same as with the previous strategy, if you normally call agent.wallet.initialize() manually\n // you need to call this before calling updateAssistant.initialize()\n await updateAssistant.initialize()\n\n await updateAssistant.update()\n\n // Store the version so we can leverage it during the next agent startup and don't have\n // to initialize the update assistant again until a new version is released\n currentStorageVersion = UpdateAssistant.frameworkStorageVersion\n}\n\n// Once finished initialize the agent. You should do this on every launch of the agent\nawait agent.initialize()\n")),(0,i.kt)("h3",{id:"automatically-update-on-agent-startup"},"Automatically update on agent startup"),(0,i.kt)("p",null,"This is by far the easiest way to update the agent, but has the least amount of flexibility and is not configurable. This means you will have to use the default update options to update the agent storage. You can find the default update config in the respective version migration guides (e.g. in ",(0,i.kt)("a",{parentName:"p",href:"/guides/0.5/updating/versions/0.1-to-0.2"},"0.1-to-0.2"),")."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-ts"},"import { UpdateAssistant, Agent } from '@credo-ts/core'\n\n// or @credo-ts/node\nimport { agentDependencies } from '@credo-ts/react-native'\n\n// First create the agent, setting the autoUpdateStorageOnStartup option to true\nconst agent = new Agent({\n config: {\n ...config,\n autoUpdateStorageOnStartup: true,\n },\n dependencies: agentDependencies,\n})\n\n// Then we call initialize, which under the hood will call the update assistant if the storage is not update to date.\nawait agent.initialize()\n")),(0,i.kt)("h2",{id:"backups"},"Backups"),(0,i.kt)("p",null,"Before starting the update, the update assistant will automatically create a backup of the wallet. If the migration succeeds the backup won't be used. If the backup fails, another backup will be made of the migrated wallet, after which the backup will be restored."),(0,i.kt)("p",null,"The backups can be found at the following locations. The ",(0,i.kt)("inlineCode",{parentName:"p"},"backupIdentifier")," is generated at the start of the update process and generated based on the current timestamp."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Backup path: ",(0,i.kt)("inlineCode",{parentName:"li"},"${agent.config.fileSystem.basePath}/afj/migration/backup/${backupIdentifier}")),(0,i.kt)("li",{parentName:"ul"},"Migration backup: ",(0,i.kt)("inlineCode",{parentName:"li"},"${agent.config.fileSystem.basePath}/afj/migration/backup/${backupIdentifier}-error"))),(0,i.kt)("blockquote",null,(0,i.kt)("p",{parentName:"blockquote"},"In the future the backup assistant will make a number of improvements to the recovery process. Namely:"),(0,i.kt)("ul",{parentName:"blockquote"},(0,i.kt)("li",{parentName:"ul"},"Do not throw an error if the update fails, but rather return an object that contains the status, and include the backup paths and backup identifiers."))))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/32456564.cd6a0377.js b/assets/js/32456564.cd6a0377.js deleted file mode 100644 index ac8daa94..00000000 --- a/assets/js/32456564.cd6a0377.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[8937],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var n=a(7294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function s(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var l=n.createContext({}),u=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},p=function(e){var t=u(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=u(a),c=i,h=d["".concat(l,".").concat(c)]||d[c]||g[c]||r;return a?n.createElement(h,s(s({ref:t},p),{},{components:a})):n.createElement(h,s({ref:t},p))}));function h(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=a.length,s=new Array(r);s[0]=c;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[d]="string"==typeof e?e:i,s[1]=o;for(var u=2;u{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>g,frontMatter:()=>r,metadata:()=>o,toc:()=>u});var n=a(7462),i=(a(7294),a(3905));const r={},s="Update Assistant",o={unversionedId:"updating/update-assistant",id:"updating/update-assistant",title:"Update Assistant",description:"The Update Assistant helps you update the storage objects from Credo to newer versions. This documents describes the different ways you can leverage the Update Assistant from fully managed to more manual approaches.",source:"@site/guides/updating/update-assistant.md",sourceDirName:"updating",slug:"/updating/update-assistant",permalink:"/guides/0.5/updating/update-assistant",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Updating Credo",permalink:"/guides/0.5/updating/"},next:{title:"Migrating from an Indy SDK Wallet to Aries Askar",permalink:"/guides/0.5/updating/update-indy-sdk-to-askar"}},l={},u=[{value:"Update Strategies",id:"update-strategies",level:2},{value:"Manually instantiating the update assistant on agent startup",id:"manually-instantiating-the-update-assistant-on-agent-startup",level:3},{value:"Storing the agent storage version outside of the agent storage",id:"storing-the-agent-storage-version-outside-of-the-agent-storage",level:3},{value:"Automatically update on agent startup",id:"automatically-update-on-agent-startup",level:3},{value:"Backups",id:"backups",level:2}],p={toc:u},d="wrapper";function g(e){let{components:t,...a}=e;return(0,i.kt)(d,(0,n.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"update-assistant"},"Update Assistant"),(0,i.kt)("p",null,"The Update Assistant helps you update the storage objects from Credo to newer versions. This documents describes the different ways you can leverage the Update Assistant from fully managed to more manual approaches."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#update-strategies"},"Update Strategies"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#manually-instantiating-the-update-assistant-on-agent-startup"},"Manually instantiating the update assistant on agent startup")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#storing-the-agent-storage-version-outside-of-the-agent-storage"},"Storing the agent storage version outside of the agent storage")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#automatically-update-on-agent-startup"},"Automatically update on agent startup")))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#backups"},"Backups"))),(0,i.kt)("h2",{id:"update-strategies"},"Update Strategies"),(0,i.kt)("p",null,"There are three options on how to leverage the update assistant on agent startup:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Manually instantiating the update assistant on agent startup"),(0,i.kt)("li",{parentName:"ol"},"Storing the agent storage version outside of the agent storage"),(0,i.kt)("li",{parentName:"ol"},"Automatically update on agent startup")),(0,i.kt)("h3",{id:"manually-instantiating-the-update-assistant-on-agent-startup"},"Manually instantiating the update assistant on agent startup"),(0,i.kt)("p",null,"When the version of the storage is stored inside the agent storage, it means we need to check if the agent needs to be updated on every agent startup. We'll initialize the update assistant and check whether the storage is up to date. The advantage of this approach is that you don't have to store anything yourself, and have full control over the workflow."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-ts"},"import { UpdateAssistant, Agent } from '@aries-framework/core'\n\n// or @aries-framework/node\nimport { agentDependencies } from '@aries-framework/react-native'\n\n// First create the agent\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n\n// Then initialize the update assistant with the update config\nconst updateAssistant = new UpdateAssistant(agent, {\n v0_1ToV0_2: {\n mediationRoleUpdateStrategy: 'allMediator',\n },\n})\n\n// Initialize the update assistant so we can read the current storage version\n// from the wallet. If you manually initialize the wallet you should do this _before_\n// calling initialize on the update assistant\n// await agent.wallet.initialize(walletConfig)\nawait updateAssistant.initialize()\n\n// Check if the agent is up to date, if not call update\nif (!(await updateAssistant.isUpToDate())) {\n await updateAssistant.update()\n}\n\n// Once finished initialize the agent. You should do this on every launch of the agent\nawait agent.initialize()\n")),(0,i.kt)("h3",{id:"storing-the-agent-storage-version-outside-of-the-agent-storage"},"Storing the agent storage version outside of the agent storage"),(0,i.kt)("p",null,"When the version of the storage is stored outside of the agent storage, you don't have to initialize the ",(0,i.kt)("inlineCode",{parentName:"p"},"UpdateAssistant")," on every agent agent startup. You can just check if the storage version is up to date and instantiate the ",(0,i.kt)("inlineCode",{parentName:"p"},"UpdateAssistant")," if not. The advantage of this approach is that you don't have to instantiate the ",(0,i.kt)("inlineCode",{parentName:"p"},"UpdateAssistant")," on every agent startup, but this does mean that you have to store the storage version yourself."),(0,i.kt)("p",null,"When a wallet has been exported and later imported you don't always have the latest version available. If this is the case you can always rely on Method 1 or 2 for updating the wallet, and storing the version yourself afterwards. You can also get the current version by calling ",(0,i.kt)("inlineCode",{parentName:"p"},"await updateAssistant.getCurrentAgentStorageVersion()"),". Do note the ",(0,i.kt)("inlineCode",{parentName:"p"},"UpdateAssistant")," needs to be initialized before calling this method."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-ts"},"import { UpdateAssistant, Agent } from '@aries-framework/core'\n\n// or @aries-framework/node\nimport { agentDependencies } from '@aries-framework/react-native'\n\n// The storage version will normally be stored in e.g. persistent storage on a mobile device\nlet currentStorageVersion: VersionString = '0.1'\n\n// First create the agent\nconst agent = new Agent({\n config,\n dependencies: agentDependencies,\n})\n\n// We only initialize the update assistant if our stored version is not equal\n// to the frameworkStorageVersion of the UpdateAssistant. The advantage of this\n// is that we don't have to initialize the UpdateAssistant to retrieve the current\n// storage version.\nif (currentStorageVersion !== UpdateAssistant.frameworkStorageVersion) {\n const updateAssistant = new UpdateAssistant(agent, {\n v0_1ToV0_2: {\n mediationRoleUpdateStrategy: 'recipientIfEndpoint',\n },\n })\n\n // Same as with the previous strategy, if you normally call agent.wallet.initialize() manually\n // you need to call this before calling updateAssistant.initialize()\n await updateAssistant.initialize()\n\n await updateAssistant.update()\n\n // Store the version so we can leverage it during the next agent startup and don't have\n // to initialize the update assistant again until a new version is released\n currentStorageVersion = UpdateAssistant.frameworkStorageVersion\n}\n\n// Once finished initialize the agent. You should do this on every launch of the agent\nawait agent.initialize()\n")),(0,i.kt)("h3",{id:"automatically-update-on-agent-startup"},"Automatically update on agent startup"),(0,i.kt)("p",null,"This is by far the easiest way to update the agent, but has the least amount of flexibility and is not configurable. This means you will have to use the default update options to update the agent storage. You can find the default update config in the respective version migration guides (e.g. in ",(0,i.kt)("a",{parentName:"p",href:"/guides/0.5/updating/versions/0.1-to-0.2"},"0.1-to-0.2"),")."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-ts"},"import { UpdateAssistant, Agent } from '@aries-framework/core'\n\n// or @aries-framework/node\nimport { agentDependencies } from '@aries-framework/react-native'\n\n// First create the agent, setting the autoUpdateStorageOnStartup option to true\nconst agent = new Agent({\n config: {\n ...config,\n autoUpdateStorageOnStartup: true,\n },\n dependencies: agentDependencies,\n})\n\n// Then we call initialize, which under the hood will call the update assistant if the storage is not update to date.\nawait agent.initialize()\n")),(0,i.kt)("h2",{id:"backups"},"Backups"),(0,i.kt)("p",null,"Before starting the update, the update assistant will automatically create a backup of the wallet. If the migration succeeds the backup won't be used. If the backup fails, another backup will be made of the migrated wallet, after which the backup will be restored."),(0,i.kt)("p",null,"The backups can be found at the following locations. The ",(0,i.kt)("inlineCode",{parentName:"p"},"backupIdentifier")," is generated at the start of the update process and generated based on the current timestamp."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Backup path: ",(0,i.kt)("inlineCode",{parentName:"li"},"${agent.config.fileSystem.basePath}/afj/migration/backup/${backupIdentifier}")),(0,i.kt)("li",{parentName:"ul"},"Migration backup: ",(0,i.kt)("inlineCode",{parentName:"li"},"${agent.config.fileSystem.basePath}/afj/migration/backup/${backupIdentifier}-error"))),(0,i.kt)("blockquote",null,(0,i.kt)("p",{parentName:"blockquote"},"In the future the backup assistant will make a number of improvements to the recovery process. Namely:"),(0,i.kt)("ul",{parentName:"blockquote"},(0,i.kt)("li",{parentName:"ul"},"Do not throw an error if the update fails, but rather return an object that contains the status, and include the backup paths and backup identifiers."))))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/331e6edf.375ff227.js b/assets/js/331e6edf.375ff227.js new file mode 100644 index 00000000..583cdad0 --- /dev/null +++ b/assets/js/331e6edf.375ff227.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[9196],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var r=n(7294);function a(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 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||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=l(n),p=a,h=u["".concat(c,".").concat(p)]||u[p]||g[p]||i;return n?r.createElement(h,o(o({ref:t},d),{},{components:n})):r.createElement(h,o({ref:t},d))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=p;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:a,o[1]=s;for(var l=2;l{n.d(t,{Z:()=>f});var r=n(7294),a=n(6010),i=n(3438),o=n(9960),s=n(3919),c=n(5999);const l={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function d(e){let{href:t,children:n}=e;return r.createElement(o.Z,{href:t,className:(0,a.Z)("card padding--lg",l.cardContainer)},n)}function u(e){let{href:t,icon:n,title:i,description:o}=e;return r.createElement(d,{href:t},r.createElement("h2",{className:(0,a.Z)("text--truncate",l.cardTitle),title:i},n," ",i),o&&r.createElement("p",{className:(0,a.Z)("text--truncate",l.cardDescription),title:o},o))}function g(e){let{item:t}=e;const n=(0,i.Wl)(t);return n?r.createElement(u,{href:n,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:(0,c.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function p(e){let{item:t}=e;const n=(0,s.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",a=(0,i.xz)(t.docId??void 0);return r.createElement(u,{href:t.href,icon:n,title:t.label,description:a?.description})}function h(e){let{item:t}=e;switch(t.type){case"link":return r.createElement(p,{item:t});case"category":return r.createElement(g,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function m(e){let{className:t}=e;const n=(0,i.jA)();return r.createElement(f,{items:n.items,className:t})}function f(e){const{items:t,className:n}=e;if(!t)return r.createElement(m,e);const o=(0,i.MN)(t);return r.createElement("section",{className:(0,a.Z)("row",n)},o.map(((e,t)=>r.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},r.createElement(h,{item:e})))))}},8856:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=n(7462),a=(n(7294),n(3905)),i=n(2991);const o={},s="Updating Credo",c={unversionedId:"updating/index",id:"updating/index",title:"Updating Credo",description:"This section will cover everything you need to know about updating Credo to a newer version.",source:"@site/guides/updating/index.md",sourceDirName:"updating",slug:"/updating/",permalink:"/guides/0.5/updating/",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Mediation",permalink:"/guides/0.5/tutorials/mediation"},next:{title:"Update Assistant",permalink:"/guides/0.5/updating/update-assistant"}},l={},d=[{value:"Versioning",id:"versioning",level:2},{value:"Types of breaking changes",id:"types-of-breaking-changes",level:2},{value:"Breaking Code Changes",id:"breaking-code-changes",level:3},{value:"Breaking Storage Changes",id:"breaking-storage-changes",level:3},{value:"Migration Guides",id:"migration-guides",level:2}],u={toc:d},g="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(g,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"updating-credo"},"Updating Credo"),(0,a.kt)("p",null,"This section will cover everything you need to know about updating Credo to a newer version."),(0,a.kt)(i.Z,{mdxType:"DocCardList"}),(0,a.kt)("h2",{id:"versioning"},"Versioning"),(0,a.kt)("p",null,"Credo follows ",(0,a.kt)("a",{parentName:"p",href:"https://semver.org/"},"semantic versioning"),". This means that major version changes (",(0,a.kt)("strong",{parentName:"p"},"1"),".0.0) are considered breaking changes. When features are added this is a minor version change (0.",(0,a.kt)("strong",{parentName:"p"},"1"),".0). For bug fixes the patch version change is used (0.0.",(0,a.kt)("strong",{parentName:"p"},"1"),")."),(0,a.kt)("p",null,"While Credo is still in pre-1.0.0 version, the version change types are shifted to the right. This means a major version change is now a minor change (0.",(0,a.kt)("strong",{parentName:"p"},"1"),".0) and a minor change is now a patch change (0.0.",(0,a.kt)("strong",{parentName:"p"},"1"),"). This is done to keep the version below 1.0.0, indicating the framework is still in early development and users can expect more breaking changes that when the version has already reached 1.0.0."),(0,a.kt)("p",null,"This means if the second number in the version (0.",(0,a.kt)("strong",{parentName:"p"},"1"),".0) changes, you need to be careful with updating and always consult this page for update instructions. If only the third number changes (0.0.",(0,a.kt)("strong",{parentName:"p"},"1"),"), you can update without any issues."),(0,a.kt)("h2",{id:"types-of-breaking-changes"},"Types of breaking changes"),(0,a.kt)("p",null,"Updates to Credo bring new features and improvements to the framework. To better adapt the framework to new features we sometimes make breaking changes that will improve how Credo works. There's two parts to updates with breaking changes:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Breaking code changes"),(0,a.kt)("li",{parentName:"ol"},"Breaking storage changes")),(0,a.kt)("h3",{id:"breaking-code-changes"},"Breaking Code Changes"),(0,a.kt)("p",null,"Breaking changes to code means changes to how you interact with Credo. This includes methods being renamed, moved to another module or extended to better integrate with new features. We'll try to cover all breaking changes in migration guides, so you know exactly what is needed to update to a new version and keep the same functionality."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"If you encounter any breaking changes that aren't mentioned in the migration docs, please open an issue in the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/openwallet-foundation/credo-ts-docs/issues"},"Credo Docs")," repository, or directly create a PR describing the change.")),(0,a.kt)("h3",{id:"breaking-storage-changes"},"Breaking Storage Changes"),(0,a.kt)("p",null,"Breaking changes to storage are a bit more complex to deal with. While breaking changes to code only require you to update your code once, breaking changes to storage needs to be updated for every agent instance. Luckily, we've made the migration as easy as possible for you using the ",(0,a.kt)("a",{parentName:"p",href:"/guides/0.5/updating/update-assistant"},"Update Assistant"),". The Update Assistant will update all storage objects to the storage model that is expected by the newest version. If a version made changes to the storage, this will be explicitly mentioned in the migration guide. See the ",(0,a.kt)("a",{parentName:"p",href:"/guides/0.5/updating/update-assistant"},"Update Assistant")," documentation for detailed instructions on how to use the update assistant."),(0,a.kt)("h2",{id:"migration-guides"},"Migration Guides"),(0,a.kt)("p",null,"Currently the following migration guides are available:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/guides/0.5/updating/versions/0.1-to-0.2"},"Migrating from Credo 0.1.0 to 0.2.x")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/guides/0.5/updating/versions/0.2-to-0.3"},"Migrating from Credo 0.2.x to 0.3.x")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/guides/0.5/updating/versions/0.3-to-0.4"},"Migrating from Credo 0.3.x to 0.4.x")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/guides/0.5/updating/update-indy-sdk-to-askar"},"Migrating from an Indy SDK Wallet to Aries Askar"))))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/331e6edf.de3b4b21.js b/assets/js/331e6edf.de3b4b21.js deleted file mode 100644 index 991121e9..00000000 --- a/assets/js/331e6edf.de3b4b21.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[9196],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var r=n(7294);function a(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 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||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=l(n),p=a,h=u["".concat(c,".").concat(p)]||u[p]||g[p]||i;return n?r.createElement(h,o(o({ref:t},d),{},{components:n})):r.createElement(h,o({ref:t},d))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=p;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:a,o[1]=s;for(var l=2;l{n.d(t,{Z:()=>f});var r=n(7294),a=n(6010),i=n(3438),o=n(9960),s=n(3919),c=n(5999);const l={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function d(e){let{href:t,children:n}=e;return r.createElement(o.Z,{href:t,className:(0,a.Z)("card padding--lg",l.cardContainer)},n)}function u(e){let{href:t,icon:n,title:i,description:o}=e;return r.createElement(d,{href:t},r.createElement("h2",{className:(0,a.Z)("text--truncate",l.cardTitle),title:i},n," ",i),o&&r.createElement("p",{className:(0,a.Z)("text--truncate",l.cardDescription),title:o},o))}function g(e){let{item:t}=e;const n=(0,i.Wl)(t);return n?r.createElement(u,{href:n,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:(0,c.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function p(e){let{item:t}=e;const n=(0,s.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",a=(0,i.xz)(t.docId??void 0);return r.createElement(u,{href:t.href,icon:n,title:t.label,description:a?.description})}function h(e){let{item:t}=e;switch(t.type){case"link":return r.createElement(p,{item:t});case"category":return r.createElement(g,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function m(e){let{className:t}=e;const n=(0,i.jA)();return r.createElement(f,{items:n.items,className:t})}function f(e){const{items:t,className:n}=e;if(!t)return r.createElement(m,e);const o=(0,i.MN)(t);return r.createElement("section",{className:(0,a.Z)("row",n)},o.map(((e,t)=>r.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},r.createElement(h,{item:e})))))}},8856:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=n(7462),a=(n(7294),n(3905)),i=n(2991);const o={},s="Updating Credo",c={unversionedId:"updating/index",id:"updating/index",title:"Updating Credo",description:"This section will cover everything you need to know about updating Credo to a newer version.",source:"@site/guides/updating/index.md",sourceDirName:"updating",slug:"/updating/",permalink:"/guides/0.5/updating/",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Postgres Setup for windows",permalink:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/windows"},next:{title:"Update Assistant",permalink:"/guides/0.5/updating/update-assistant"}},l={},d=[{value:"Versioning",id:"versioning",level:2},{value:"Types of breaking changes",id:"types-of-breaking-changes",level:2},{value:"Breaking Code Changes",id:"breaking-code-changes",level:3},{value:"Breaking Storage Changes",id:"breaking-storage-changes",level:3},{value:"Migration Guides",id:"migration-guides",level:2}],u={toc:d},g="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(g,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"updating-credo"},"Updating Credo"),(0,a.kt)("p",null,"This section will cover everything you need to know about updating Credo to a newer version."),(0,a.kt)(i.Z,{mdxType:"DocCardList"}),(0,a.kt)("h2",{id:"versioning"},"Versioning"),(0,a.kt)("p",null,"Credo follows ",(0,a.kt)("a",{parentName:"p",href:"https://semver.org/"},"semantic versioning"),". This means that major version changes (",(0,a.kt)("strong",{parentName:"p"},"1"),".0.0) are considered breaking changes. When features are added this is a minor version change (0.",(0,a.kt)("strong",{parentName:"p"},"1"),".0). For bug fixes the patch version change is used (0.0.",(0,a.kt)("strong",{parentName:"p"},"1"),")."),(0,a.kt)("p",null,"While Credo is still in pre-1.0.0 version, the version change types are shifted to the right. This means a major version change is now a minor change (0.",(0,a.kt)("strong",{parentName:"p"},"1"),".0) and a minor change is now a patch change (0.0.",(0,a.kt)("strong",{parentName:"p"},"1"),"). This is done to keep the version below 1.0.0, indicating the framework is still in early development and users can expect more breaking changes that when the version has already reached 1.0.0."),(0,a.kt)("p",null,"This means if the second number in the version (0.",(0,a.kt)("strong",{parentName:"p"},"1"),".0) changes, you need to be careful with updating and always consult this page for update instructions. If only the third number changes (0.0.",(0,a.kt)("strong",{parentName:"p"},"1"),"), you can update without any issues."),(0,a.kt)("h2",{id:"types-of-breaking-changes"},"Types of breaking changes"),(0,a.kt)("p",null,"Updates to Credo bring new features and improvements to the framework. To better adapt the framework to new features we sometimes make breaking changes that will improve how Credo works. There's two parts to updates with breaking changes:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Breaking code changes"),(0,a.kt)("li",{parentName:"ol"},"Breaking storage changes")),(0,a.kt)("h3",{id:"breaking-code-changes"},"Breaking Code Changes"),(0,a.kt)("p",null,"Breaking changes to code means changes to how you interact with Credo. This includes methods being renamed, moved to another module or extended to better integrate with new features. We'll try to cover all breaking changes in migration guides, so you know exactly what is needed to update to a new version and keep the same functionality."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"If you encounter any breaking changes that aren't mentioned in the migration docs, please open an issue in the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/openwallet-foundation/credo-ts-docs/issues"},"Credo Docs")," repository, or directly create a PR describing the change.")),(0,a.kt)("h3",{id:"breaking-storage-changes"},"Breaking Storage Changes"),(0,a.kt)("p",null,"Breaking changes to storage are a bit more complex to deal with. While breaking changes to code only require you to update your code once, breaking changes to storage needs to be updated for every agent instance. Luckily, we've made the migration as easy as possible for you using the ",(0,a.kt)("a",{parentName:"p",href:"/guides/0.5/updating/update-assistant"},"Update Assistant"),". The Update Assistant will update all storage objects to the storage model that is expected by the newest version. If a version made changes to the storage, this will be explicitly mentioned in the migration guide. See the ",(0,a.kt)("a",{parentName:"p",href:"/guides/0.5/updating/update-assistant"},"Update Assistant")," documentation for detailed instructions on how to use the update assistant."),(0,a.kt)("h2",{id:"migration-guides"},"Migration Guides"),(0,a.kt)("p",null,"Currently the following migration guides are available:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/guides/0.5/updating/versions/0.1-to-0.2"},"Migrating from Credo 0.1.0 to 0.2.x")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/guides/0.5/updating/versions/0.2-to-0.3"},"Migrating from Credo 0.2.x to 0.3.x")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/guides/0.5/updating/versions/0.3-to-0.4"},"Migrating from Credo 0.3.x to 0.4.x")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/guides/0.5/updating/update-indy-sdk-to-askar"},"Migrating from an Indy SDK Wallet to Aries Askar"))))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/369c14e0.ac5daf50.js b/assets/js/369c14e0.ac5daf50.js new file mode 100644 index 00000000..7b9254a0 --- /dev/null +++ b/assets/js/369c14e0.ac5daf50.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[2913],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>v});var n=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var p=n.createContext({}),l=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d=function(e){var t=l(e.components);return n.createElement(p.Provider,{value:t},e.children)},f="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,p=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),f=l(r),c=i,v=f["".concat(p,".").concat(c)]||f[c]||u[c]||a;return r?n.createElement(v,o(o({ref:t},d),{},{components:r})):n.createElement(v,o({ref:t},d))}));function v(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,o=new Array(a);o[0]=c;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[f]="string"==typeof e?e:i,o[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var n=r(7462),i=(r(7294),r(3905));const a={},o="OpenID for Verifiable Credentials",s={unversionedId:"features/openid4vc",id:"features/openid4vc",title:"OpenID for Verifiable Credentials",description:"Since Credo 0.4, support was added to receive credentials using OpenID for Verifiable Credential Issuance, and since 0.5 support was added for all the other OpenID for Verifiable Credential flows.",source:"@site/guides/features/openid4vc.md",sourceDirName:"features",slug:"/features/openid4vc",permalink:"/guides/0.5/features/openid4vc",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Hyperledger Aries and Aries Interop Profile",permalink:"/guides/0.5/features/aries"},next:{title:"Decentralized Identifiers",permalink:"/guides/0.5/features/dids"}},p={},l=[{value:"OpenID for Verifiable Credential Issuance",id:"openid-for-verifiable-credential-issuance",level:2},{value:"OpenID for Verifiable Presentations",id:"openid-for-verifiable-presentations",level:2},{value:"Self-Issued OpenID Provider v2",id:"self-issued-openid-provider-v2",level:2}],d={toc:l},f="wrapper";function u(e){let{components:t,...r}=e;return(0,i.kt)(f,(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"openid-for-verifiable-credentials"},"OpenID for Verifiable Credentials"),(0,i.kt)("p",null,"Since Credo 0.4, support was added to receive credentials using OpenID for Verifiable Credential Issuance, and since 0.5 support was added for all the other OpenID for Verifiable Credential flows."),(0,i.kt)("p",null,"This means Credo has support for ",(0,i.kt)("a",{parentName:"p",href:"https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html"},"OpenID for Verifiable Credential Issuance"),", ",(0,i.kt)("a",{parentName:"p",href:"https://openid.net/specs/openid-4-verifiable-presentations-1_0.html"},"OpenID for Verifiable Presentations"),", and ",(0,i.kt)("a",{parentName:"p",href:"https://openid.net/specs/openid-connect-self-issued-v2-1_0.html"},"Self-Issued OpenID Provider v2"),"."),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"Support for OpenID for Verifiable Credentials in Credo is still in an experimental phase, and thus is subject to breaking changes. Also, due to the early stages of these specifications, supported draft versions and flows may change and evolve. As early adopters it\u2019s important to align with the evolving specs, and we are doing out best to keep up-to-date without breaking existing deployments."),(0,i.kt)("p",{parentName:"admonition"},"Currently, work is ongoing to update the supported versions for OpenID4VC to the latest available Draft versions:"),(0,i.kt)("ul",{parentName:"admonition"},(0,i.kt)("li",{parentName:"ul"},"OpenID for Verifiable Credential Issuance - Draft 12"),(0,i.kt)("li",{parentName:"ul"},"OpenID for Verifiable Presentations - Draft 20"),(0,i.kt)("li",{parentName:"ul"},"Self-Issued OpenID Provider - Draft 13"))),(0,i.kt)("h2",{id:"openid-for-verifiable-credential-issuance"},"OpenID for Verifiable Credential Issuance"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0-11.html"},"OpenID for Verifiable Credential Issuance - Draft 11")," is supported, but only the immediate issuance using the Pre-Authorized Code flow. The deferred endpoint, batch endpoints and Authorized Code Flow are not supported at the moment."),(0,i.kt)("h2",{id:"openid-for-verifiable-presentations"},"OpenID for Verifiable Presentations"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://openid.net/specs/openid-connect-4-verifiable-presentations-1_0-ID1.html"},"OpenID for Verifiable Presentations - Implementers Draft 1 (Draft 8)")," is supported for requesting and presenting verifiable presentations as part of an authorization request and response. OpenID for Verifiable Presentations is only supported in combination with Self-Issued OpenID Provider V2."),(0,i.kt)("h2",{id:"self-issued-openid-provider-v2"},"Self-Issued OpenID Provider v2"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://openid.net/specs/openid-connect-self-issued-v2-1_0-ID1.html"},"Self-Issued OpenID Provider V2 - Implementers Draft 1 (Draft 7)")," is supported for allowing holders of credentials to act as their own OpenID Provider, and present credentials to a verifier without the need for a third party. Both SIOPv2 authentication requests and responses with verifiable presentations (using VP Token) or without (using ID Token for e.g. DID authentication) are supported."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/394d7bf2.11b51def.js b/assets/js/394d7bf2.11b51def.js deleted file mode 100644 index bdd97172..00000000 --- a/assets/js/394d7bf2.11b51def.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[8368],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,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 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 o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),d=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=d(e.components);return a.createElement(l.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,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=d(n),m=r,h=u["".concat(l,".").concat(m)]||u[m]||c[m]||i;return n?a.createElement(h,o(o({ref:t},p),{},{components:n})):a.createElement(h,o({ref:t},p))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:r,o[1]=s;for(var d=2;d{n.d(t,{Z:()=>o});var a=n(7294),r=n(6010);const i={tabItem:"tabItem_Ymn6"};function o(e){let{children:t,hidden:n,className:o}=e;return a.createElement("div",{role:"tabpanel",className:(0,r.Z)(i.tabItem,o),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>N});var a=n(7462),r=n(7294),i=n(6010),o=n(2466),s=n(6550),l=n(1980),d=n(7392),p=n(12);function u(e){return function(e){return r.Children.map(e,(e=>{if((0,r.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:r}}=e;return{value:t,label:n,attributes:a,default:r}}))}function c(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??u(n);return function(e){const t=(0,d.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function h(e){let{queryString:t=!1,groupId:n}=e;const a=(0,s.k6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l._X)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(a.location.search);t.set(i,e),a.replace({...a.location,search:t.toString()})}),[i,a])]}function g(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,i=c(e),[o,s]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:i}))),[l,d]=h({queryString:n,groupId:a}),[u,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,i]=(0,p.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:a}),f=(()=>{const e=l??u;return m({value:e,tabValues:i})?e:null})();(0,r.useLayoutEffect)((()=>{f&&s(f)}),[f]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);s(e),d(e),g(e)}),[d,g,i]),tabValues:i}}var f=n(2389);const y={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function k(e){let{className:t,block:n,selectedValue:s,selectValue:l,tabValues:d}=e;const p=[],{blockElementScrollPositionUntilNextRender:u}=(0,o.o5)(),c=e=>{const t=e.currentTarget,n=p.indexOf(t),a=d[n].value;a!==s&&(u(t),l(a))},m=e=>{let t=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const n=p.indexOf(e.currentTarget)+1;t=p[n]??p[0];break}case"ArrowLeft":{const n=p.indexOf(e.currentTarget)-1;t=p[n]??p[p.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":n},t)},d.map((e=>{let{value:t,label:n,attributes:o}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:s===t?0:-1,"aria-selected":s===t,key:t,ref:e=>p.push(e),onKeyDown:m,onClick:c},o,{className:(0,i.Z)("tabs__item",y.tabItem,o?.className,{"tabs__item--active":s===t})}),n??t)})))}function v(e){let{lazy:t,children:n,selectedValue:a}=e;if(n=Array.isArray(n)?n:[n],t){const e=n.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},n.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function b(e){const t=g(e);return r.createElement("div",{className:(0,i.Z)("tabs-container",y.tabList)},r.createElement(k,(0,a.Z)({},e,t)),r.createElement(v,(0,a.Z)({},e,t)))}function N(e){const t=(0,f.Z)();return r.createElement(b,(0,a.Z)({key:String(t)},e))}},3172:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>d,toc:()=>u});var a=n(7462),r=(n(7294),n(3905)),i=n(4866),o=n(5162);const s={},l="Indy VDR",d={unversionedId:"getting-started/set-up/indy-vdr",id:"getting-started/set-up/indy-vdr",title:"Indy VDR",description:"Hyperledger Indy VDR, Verifiable Data Registry, can be used to connect to one or more Indy Node ledger pools given sets of genesis transactions. Methods are provided to construct ledger requests and send them to the validators, collecting the results and ensuring that there is a consensus between the nodes. In the context of Credo, we mainly leverage it to register, and resolve, schemas, credential definitions and DIDs.",source:"@site/guides/getting-started/set-up/indy-vdr.md",sourceDirName:"getting-started/set-up",slug:"/getting-started/set-up/indy-vdr",permalink:"/guides/0.5/getting-started/set-up/indy-vdr",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"AnonCreds RS",permalink:"/guides/0.5/getting-started/set-up/anoncreds-rs"},next:{title:"cheqd",permalink:"/guides/0.5/getting-started/set-up/cheqd/"}},p={},u=[{value:"Installing Indy VDR",id:"installing-indy-vdr",level:3},{value:"Adding Indy VDR to the agent",id:"adding-indy-vdr-to-the-agent",level:3},{value:"Configuration",id:"configuration",level:3},{value:"indyVdr",id:"indyvdr",level:4},{value:"networks",id:"networks",level:4},{value:"indyNamespace",id:"indynamespace",level:5},{value:"isProduction",id:"isproduction",level:5},{value:"genesisTransactions",id:"genesistransactions",level:5},{value:"connectOnStartup",id:"connectonstartup",level:5},{value:"transactionAuthorAgreement",id:"transactionauthoragreement",level:5},{value:"transactionAuthorAgreement.version",id:"transactionauthoragreementversion",level:5},{value:"transactionAuthorAgreement.acceptanceMechanism",id:"transactionauthoragreementacceptancemechanism",level:5},{value:"Supported Node.JS versions for Indy VDR",id:"supported-nodejs-versions-for-indy-vdr",level:3}],c={toc:u},m="wrapper";function h(e){let{components:t,...n}=e;return(0,r.kt)(m,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"indy-vdr"},"Indy VDR"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-vdr"},"Hyperledger Indy VDR"),", Verifiable Data Registry, can be used to connect to one or more Indy Node ledger pools given sets of genesis transactions. Methods are provided to construct ledger requests and send them to the validators, collecting the results and ensuring that there is a consensus between the nodes. In the context of Credo, we mainly leverage it to register, and resolve, schemas, credential definitions and DIDs."),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"Support for Indy VDR in Credo is currently experimental. We recommend new projects to use Indy VDR from the start, and also to migrate existing projects to Indy VDR, from the indy-sdk. However, projects may experience some issues. If you encounter any issues, please ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/openwallet-foundation/credo-ts/issues/new"},"open an issue"),"."),(0,r.kt)("p",{parentName:"admonition"},"Currently, there are few limitations to using Indy VDR."),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"When running in Node.JS, only Node.JS 18 is supported for now. See ",(0,r.kt)("a",{parentName:"li",href:"#supported-nodejs-versions-for-indy-vdr"},"Supported Node.JS versions for Indy VDR")),(0,r.kt)("li",{parentName:"ul"},"Install scripts rely on bash command substitution to get the proper binaries for each system architecture and platform. Therefore, if you are under Windows, you must configure ",(0,r.kt)("inlineCode",{parentName:"li"},"npm")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"yarn")," to use a bash-compliant shell (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},'npm config set script-shell "C:\\\\Program Files\\\\git\\\\bin\\\\bash.exe"'),")"))),(0,r.kt)("h3",{id:"installing-indy-vdr"},"Installing Indy VDR"),(0,r.kt)("p",null,"When using Credo with Indy VDR, there are a few extra dependencies that need to be installed. We need to install the ",(0,r.kt)("inlineCode",{parentName:"p"},"@hyperledger/indy-vdr"),", which contains all the functionality to register objects on an Hyperledger Indy VDR. Secondly, we need to add native bindings for the specific platform ",(0,r.kt)("inlineCode",{parentName:"p"},"@hyperledger/indy-vdr-"),". Currently there are bindings for Node.JS, as ",(0,r.kt)("inlineCode",{parentName:"p"},"@hyperledger/indy-vdr-nodejs"),", and React Native as ",(0,r.kt)("inlineCode",{parentName:"p"},"@hyperlegder/indy-vdr-react-native"),"."),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @aries-framework/indy-vdr@^0.4.0 @hyperledger/indy-vdr-nodejs@^0.1.0\n"))),(0,r.kt)(o.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @aries-framework/indy-vdr@^0.4.0 @hyperledger/indy-vdr-react-native@^0.1.0\n")))),(0,r.kt)("h3",{id:"adding-indy-vdr-to-the-agent"},"Adding Indy VDR to the agent"),(0,r.kt)("p",null,"After installing the dependencies, we can register the Indy VDR module on the agent."),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-indy-vdr.ts section-1",showLineNumbers:!0,"set-up-indy-vdr.ts":!0,"section-1":!0},""))),(0,r.kt)(o.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-indy-vdr-rn.ts section-1",showLineNumbers:!0,"set-up-indy-vdr-rn.ts":!0,"section-1":!0},"")))),(0,r.kt)("h3",{id:"configuration"},"Configuration"),(0,r.kt)("p",null,"As you can see below, the Indy VDR module takes the native bindings and a list of networks. This list of networks will be used to resolve and register objects on."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"typescript showLineNumbers set-up-indy-vdr-config.ts section-1",typescript:!0,showLineNumbers:!0,"set-up-indy-vdr-config.ts":!0,"section-1":!0},"")),(0,r.kt)("h4",{id:"indyvdr"},"indyVdr"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Type"),": ",(0,r.kt)("inlineCode",{parentName:"p"},"IndyVdr")),(0,r.kt)("p",null,"the ",(0,r.kt)("inlineCode",{parentName:"p"},"indyVdr")," key takes a class that implements all the native bindings for Indy VDR. This can be imoprted from the ",(0,r.kt)("inlineCode",{parentName:"p"},"@hyperledger/indy-vdr-nodejs")," package or the ",(0,r.kt)("inlineCode",{parentName:"p"},"@hyperledger/indy-vdr-react-native")," package."),(0,r.kt)("h4",{id:"networks"},"networks"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Type"),": ",(0,r.kt)("inlineCode",{parentName:"p"},"IndyVdrPoolConfig[]")),(0,r.kt)("p",null,"An array of indy networks to connect to. The list can contain the following object and it must ",(0,r.kt)("a",{parentName:"p",href:"#indyledgersgenesistransactions"},(0,r.kt)("inlineCode",{parentName:"a"},"genesisTransactions")),"."),(0,r.kt)("h5",{id:"indynamespace"},"indyNamespace"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Type"),": ",(0,r.kt)("inlineCode",{parentName:"p"},"string")),(0,r.kt)("p",null,"The Indy namespace aka the name identifying the name of the network connecting to. See also ",(0,r.kt)("a",{parentName:"p",href:"https://hyperledger.github.io/indy-did-method/#indy-did-method-identifiers"},"indy did method identifiers")),(0,r.kt)("h5",{id:"isproduction"},(0,r.kt)("inlineCode",{parentName:"h5"},"isProduction")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Type"),": ",(0,r.kt)("inlineCode",{parentName:"p"},"boolean")),(0,r.kt)("p",null,"Whether the ledger is a production ledger. This is used for detecting which ledger to use in case of unqualified identifiers as production ledgers have priority."),(0,r.kt)("h5",{id:"genesistransactions"},(0,r.kt)("inlineCode",{parentName:"h5"},"genesisTransactions")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Type"),": ",(0,r.kt)("inlineCode",{parentName:"p"},"string")),(0,r.kt)("p",null,"Stringified JSON object of the transaction."),(0,r.kt)("h5",{id:"connectonstartup"},(0,r.kt)("inlineCode",{parentName:"h5"},"connectOnStartup")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Type"),": ",(0,r.kt)("inlineCode",{parentName:"p"},"boolean")),(0,r.kt)("p",null,"Whether to connect to the ledger on startup. Defaults to ",(0,r.kt)("inlineCode",{parentName:"p"},"false"),"."),(0,r.kt)("h5",{id:"transactionauthoragreement"},(0,r.kt)("inlineCode",{parentName:"h5"},"transactionAuthorAgreement")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Type"),": ",(0,r.kt)("inlineCode",{parentName:"p"},"TransactionAuthorAgreement")),(0,r.kt)("p",null,"JSON representation specifying the version and acceptance mechanism. The version is the unique version of the transaction author agreement acceptance mechanism list (AML). The acceptance mechanism refers to the acceptance mechanism label of the item in the AML. For more details you may consult the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-node/blob/master/docs/source/transactions.md#transaction_author_agreement_aml"},"indy-node docs on AML")),(0,r.kt)("h5",{id:"transactionauthoragreementversion"},(0,r.kt)("inlineCode",{parentName:"h5"},"transactionAuthorAgreement.version")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Type"),": ",(0,r.kt)("inlineCode",{parentName:"p"},"string")),(0,r.kt)("p",null,"The version of the AML acceptance mechanism. This is a string representation of a version number e.g. '1' or '1.4'"),(0,r.kt)("h5",{id:"transactionauthoragreementacceptancemechanism"},(0,r.kt)("inlineCode",{parentName:"h5"},"transactionAuthorAgreement.acceptanceMechanism")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Type"),": ",(0,r.kt)("inlineCode",{parentName:"p"},"string")),(0,r.kt)("p",null,"The acceptance mechanism to choose. This ",(0,r.kt)("em",{parentName:"p"},"must")," be ",(0,r.kt)("em",{parentName:"p"},"one")," of the available labels of the acceptance mechanisms key-value pairs in the AML e.g. 'EULA'."),(0,r.kt)("h3",{id:"supported-nodejs-versions-for-indy-vdr"},"Supported Node.JS versions for Indy VDR"),(0,r.kt)("p",null,"Due to an issue in ",(0,r.kt)("inlineCode",{parentName:"p"},"ref-napi")," (which is used in the Node.JS bindings for Indy VDR), performance for Indy VDR in Node.JS is not as expected. A patched version for ",(0,r.kt)("inlineCode",{parentName:"p"},"ref-napi")," has been published that fixes this issue, but this only works in Node.JS 18+."),(0,r.kt)("p",null,"To use Indy VDR in Node.JS, make sure you're using Node.JS 18 and patch the ",(0,r.kt)("inlineCode",{parentName:"p"},"ref-napi")," package to point towards ",(0,r.kt)("inlineCode",{parentName:"p"},"@2060.io/ref-napi")," in your ",(0,r.kt)("inlineCode",{parentName:"p"},"package.json"),":"),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"NPM",value:"tab1",mdxType:"TabItem"},(0,r.kt)("p",null,"Using ",(0,r.kt)("a",{parentName:"p",href:"https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides"},"NPM ",(0,r.kt)("inlineCode",{parentName:"a"},"overrides"))," we can point the ",(0,r.kt)("inlineCode",{parentName:"p"},"ref-napi")," package to ",(0,r.kt)("inlineCode",{parentName:"p"},"@2060.io/ref-napi"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "overrides": {\n "ref-napi": "npm:@2060.io/ref-napi"\n }\n}\n'))),(0,r.kt)(o.Z,{label:"Yarn",value:"tab2",mdxType:"TabItem"},(0,r.kt)("p",null,"Using ",(0,r.kt)("a",{parentName:"p",href:"https://classic.yarnpkg.com/lang/en/docs/selective-version-resolutions/"},"Yarn ",(0,r.kt)("inlineCode",{parentName:"a"},"resolutions"))," we can point the ",(0,r.kt)("inlineCode",{parentName:"p"},"ref-napi")," package to ",(0,r.kt)("inlineCode",{parentName:"p"},"@2060.io/ref-napi"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "resolutions": {\n "ref-napi": "npm:@2060.io/ref-napi"\n }\n}\n')))),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See the following issues for more information on the performance bottleneck"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/hyperledger/aries-askar/issues/76"},"https://github.com/hyperledger/aries-askar/issues/76")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/node-ffi-napi/ref-napi/issues/72"},"https://github.com/node-ffi-napi/ref-napi/issues/72")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/node-ffi-napi/ref-napi/pull/73"},"https://github.com/node-ffi-napi/ref-napi/pull/73")))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/394d7bf2.8e036a29.js b/assets/js/394d7bf2.8e036a29.js new file mode 100644 index 00000000..4b9f108c --- /dev/null +++ b/assets/js/394d7bf2.8e036a29.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[8368],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(7294);function a(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 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||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),d=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=d(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=d(n),m=a,h=u["".concat(l,".").concat(m)]||u[m]||p[m]||i;return n?r.createElement(h,o(o({ref:t},c),{},{components:n})):r.createElement(h,o({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:a,o[1]=s;for(var d=2;d{n.d(t,{Z:()=>o});var r=n(7294),a=n(6010);const i={tabItem:"tabItem_Ymn6"};function o(e){let{children:t,hidden:n,className:o}=e;return r.createElement("div",{role:"tabpanel",className:(0,a.Z)(i.tabItem,o),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>N});var r=n(7462),a=n(7294),i=n(6010),o=n(2466),s=n(6550),l=n(1980),d=n(7392),c=n(12);function u(e){return function(e){return a.Children.map(e,(e=>{if((0,a.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:a}}=e;return{value:t,label:n,attributes:r,default:a}}))}function p(e){const{values:t,children:n}=e;return(0,a.useMemo)((()=>{const e=t??u(n);return function(e){const t=(0,d.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function h(e){let{queryString:t=!1,groupId:n}=e;const r=(0,s.k6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l._X)(i),(0,a.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(r.location.search);t.set(i,e),r.replace({...r.location,search:t.toString()})}),[i,r])]}function g(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,i=p(e),[o,s]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[l,d]=h({queryString:n,groupId:r}),[u,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,i]=(0,c.Nk)(n);return[r,(0,a.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:r}),y=(()=>{const e=l??u;return m({value:e,tabValues:i})?e:null})();(0,a.useLayoutEffect)((()=>{y&&s(y)}),[y]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);s(e),d(e),g(e)}),[d,g,i]),tabValues:i}}var y=n(2389);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function v(e){let{className:t,block:n,selectedValue:s,selectValue:l,tabValues:d}=e;const c=[],{blockElementScrollPositionUntilNextRender:u}=(0,o.o5)(),p=e=>{const t=e.currentTarget,n=c.indexOf(t),r=d[n].value;r!==s&&(u(t),l(r))},m=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;t=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;t=c[n]??c[c.length-1];break}}t?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":n},t)},d.map((e=>{let{value:t,label:n,attributes:o}=e;return a.createElement("li",(0,r.Z)({role:"tab",tabIndex:s===t?0:-1,"aria-selected":s===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:p},o,{className:(0,i.Z)("tabs__item",f.tabItem,o?.className,{"tabs__item--active":s===t})}),n??t)})))}function b(e){let{lazy:t,children:n,selectedValue:r}=e;if(n=Array.isArray(n)?n:[n],t){const e=n.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},n.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==r}))))}function k(e){const t=g(e);return a.createElement("div",{className:(0,i.Z)("tabs-container",f.tabList)},a.createElement(v,(0,r.Z)({},e,t)),a.createElement(b,(0,r.Z)({},e,t)))}function N(e){const t=(0,y.Z)();return a.createElement(k,(0,r.Z)({key:String(t)},e))}},3172:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>d,toc:()=>u});var r=n(7462),a=(n(7294),n(3905)),i=n(4866),o=n(5162);const s={},l="Indy VDR",d={unversionedId:"getting-started/set-up/indy-vdr",id:"getting-started/set-up/indy-vdr",title:"Indy VDR",description:"Hyperledger Indy VDR, Verifiable Data Registry, can be used to connect to one or more Indy Node ledger pools given sets of genesis transactions. Methods are provided to construct ledger requests and send them to the validators, collecting the results and ensuring that there is a consensus between the nodes. In the context of Credo, we mainly leverage it to register, and resolve, schemas, credential definitions and DIDs.",source:"@site/guides/getting-started/set-up/indy-vdr.md",sourceDirName:"getting-started/set-up",slug:"/getting-started/set-up/indy-vdr",permalink:"/guides/0.5/getting-started/set-up/indy-vdr",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"AnonCreds",permalink:"/guides/0.5/getting-started/set-up/anoncreds"},next:{title:"cheqd",permalink:"/guides/0.5/getting-started/set-up/cheqd/"}},c={},u=[{value:"Installing Indy VDR",id:"installing-indy-vdr",level:3},{value:"Adding Indy VDR to the agent",id:"adding-indy-vdr-to-the-agent",level:3},{value:"Configuration",id:"configuration",level:3},{value:"indyVdr",id:"indyvdr",level:4},{value:"networks",id:"networks",level:4},{value:"indyNamespace",id:"indynamespace",level:5},{value:"isProduction",id:"isproduction",level:5},{value:"genesisTransactions",id:"genesistransactions",level:5},{value:"connectOnStartup",id:"connectonstartup",level:5},{value:"transactionAuthorAgreement",id:"transactionauthoragreement",level:5},{value:"transactionAuthorAgreement.version",id:"transactionauthoragreementversion",level:5},{value:"transactionAuthorAgreement.acceptanceMechanism",id:"transactionauthoragreementacceptancemechanism",level:5}],p={toc:u},m="wrapper";function h(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"indy-vdr"},"Indy VDR"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-vdr"},"Hyperledger Indy VDR"),", Verifiable Data Registry, can be used to connect to one or more Indy Node ledger pools given sets of genesis transactions. Methods are provided to construct ledger requests and send them to the validators, collecting the results and ensuring that there is a consensus between the nodes. In the context of Credo, we mainly leverage it to register, and resolve, schemas, credential definitions and DIDs."),(0,a.kt)("h3",{id:"installing-indy-vdr"},"Installing Indy VDR"),(0,a.kt)("p",null,"When using Credo with Indy VDR, there are a few extra dependencies that need to be installed. We need to install the ",(0,a.kt)("inlineCode",{parentName:"p"},"@hyperledger/indy-vdr"),", which contains all the functionality to register objects on an Hyperledger Indy VDR. Secondly, we need to add native bindings for the specific platform ",(0,a.kt)("inlineCode",{parentName:"p"},"@hyperledger/indy-vdr-"),". Currently there are bindings for Node.JS, as ",(0,a.kt)("inlineCode",{parentName:"p"},"@hyperledger/indy-vdr-nodejs"),", and React Native as ",(0,a.kt)("inlineCode",{parentName:"p"},"@hyperlegder/indy-vdr-react-native"),"."),(0,a.kt)(i.Z,{mdxType:"Tabs"},(0,a.kt)(o.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @credo-ts/indy-vdr@^0.5.0 @hyperledger/indy-vdr-nodejs@^0.2.0\n"))),(0,a.kt)(o.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @credo-ts/indy-vdr@^0.5.0 @hyperledger/indy-vdr-react-native@^0.2.0\n")))),(0,a.kt)("h3",{id:"adding-indy-vdr-to-the-agent"},"Adding Indy VDR to the agent"),(0,a.kt)("p",null,"After installing the dependencies, we can register the Indy VDR module on the agent."),(0,a.kt)(i.Z,{mdxType:"Tabs"},(0,a.kt)(o.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-indy-vdr.ts section-1",showLineNumbers:!0,"set-up-indy-vdr.ts":!0,"section-1":!0},""))),(0,a.kt)(o.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-indy-vdr-rn.ts section-1",showLineNumbers:!0,"set-up-indy-vdr-rn.ts":!0,"section-1":!0},"")))),(0,a.kt)("h3",{id:"configuration"},"Configuration"),(0,a.kt)("p",null,"As you can see below, the Indy VDR module takes the native bindings and a list of networks. This list of networks will be used to resolve and register objects on."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"typescript showLineNumbers set-up-indy-vdr-config.ts section-1",typescript:!0,showLineNumbers:!0,"set-up-indy-vdr-config.ts":!0,"section-1":!0},"")),(0,a.kt)("h4",{id:"indyvdr"},"indyVdr"),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Type"),": ",(0,a.kt)("inlineCode",{parentName:"p"},"IndyVdr")),(0,a.kt)("p",null,"the ",(0,a.kt)("inlineCode",{parentName:"p"},"indyVdr")," key takes a class that implements all the native bindings for Indy VDR. This can be imoprted from the ",(0,a.kt)("inlineCode",{parentName:"p"},"@hyperledger/indy-vdr-nodejs")," package or the ",(0,a.kt)("inlineCode",{parentName:"p"},"@hyperledger/indy-vdr-react-native")," package."),(0,a.kt)("h4",{id:"networks"},"networks"),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Type"),": ",(0,a.kt)("inlineCode",{parentName:"p"},"IndyVdrPoolConfig[]")),(0,a.kt)("p",null,"An array of indy networks to connect to. The list can contain the following object and it must ",(0,a.kt)("a",{parentName:"p",href:"#indyledgersgenesistransactions"},(0,a.kt)("inlineCode",{parentName:"a"},"genesisTransactions")),"."),(0,a.kt)("h5",{id:"indynamespace"},"indyNamespace"),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Type"),": ",(0,a.kt)("inlineCode",{parentName:"p"},"string")),(0,a.kt)("p",null,"The Indy namespace aka the name identifying the name of the network connecting to. See also ",(0,a.kt)("a",{parentName:"p",href:"https://hyperledger.github.io/indy-did-method/#indy-did-method-identifiers"},"indy did method identifiers")),(0,a.kt)("h5",{id:"isproduction"},(0,a.kt)("inlineCode",{parentName:"h5"},"isProduction")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Type"),": ",(0,a.kt)("inlineCode",{parentName:"p"},"boolean")),(0,a.kt)("p",null,"Whether the ledger is a production ledger. This is used for detecting which ledger to use in case of unqualified identifiers as production ledgers have priority."),(0,a.kt)("h5",{id:"genesistransactions"},(0,a.kt)("inlineCode",{parentName:"h5"},"genesisTransactions")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Type"),": ",(0,a.kt)("inlineCode",{parentName:"p"},"string")),(0,a.kt)("p",null,"Stringified JSON object of the transaction."),(0,a.kt)("h5",{id:"connectonstartup"},(0,a.kt)("inlineCode",{parentName:"h5"},"connectOnStartup")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Type"),": ",(0,a.kt)("inlineCode",{parentName:"p"},"boolean")),(0,a.kt)("p",null,"Whether to connect to the ledger on startup. Defaults to ",(0,a.kt)("inlineCode",{parentName:"p"},"false"),"."),(0,a.kt)("h5",{id:"transactionauthoragreement"},(0,a.kt)("inlineCode",{parentName:"h5"},"transactionAuthorAgreement")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Type"),": ",(0,a.kt)("inlineCode",{parentName:"p"},"TransactionAuthorAgreement")),(0,a.kt)("p",null,"JSON representation specifying the version and acceptance mechanism. The version is the unique version of the transaction author agreement acceptance mechanism list (AML). The acceptance mechanism refers to the acceptance mechanism label of the item in the AML. For more details you may consult the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-node/blob/master/docs/source/transactions.md#transaction_author_agreement_aml"},"indy-node docs on AML")),(0,a.kt)("h5",{id:"transactionauthoragreementversion"},(0,a.kt)("inlineCode",{parentName:"h5"},"transactionAuthorAgreement.version")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Type"),": ",(0,a.kt)("inlineCode",{parentName:"p"},"string")),(0,a.kt)("p",null,"The version of the AML acceptance mechanism. This is a string representation of a version number e.g. '1' or '1.4'"),(0,a.kt)("h5",{id:"transactionauthoragreementacceptancemechanism"},(0,a.kt)("inlineCode",{parentName:"h5"},"transactionAuthorAgreement.acceptanceMechanism")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Type"),": ",(0,a.kt)("inlineCode",{parentName:"p"},"string")),(0,a.kt)("p",null,"The acceptance mechanism to choose. This ",(0,a.kt)("em",{parentName:"p"},"must")," be ",(0,a.kt)("em",{parentName:"p"},"one")," of the available labels of the acceptance mechanisms key-value pairs in the AML e.g. 'EULA'."))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/41c1fec5.ae3a9ded.js b/assets/js/41c1fec5.ae3a9ded.js new file mode 100644 index 00000000..49cf436f --- /dev/null +++ b/assets/js/41c1fec5.ae3a9ded.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[8796],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,s=d(e,["components","mdxType","originalType","parentName"]),u=p(r),m=a,f=u["".concat(l,".").concat(m)]||u[m]||c[m]||i;return r?n.createElement(f,o(o({ref:t},s),{},{components:r})):n.createElement(f,o({ref:t},s))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var d={};for(var l in t)hasOwnProperty.call(t,l)&&(d[l]=t[l]);d.originalType=e,d[u]="string"==typeof e?e:a,o[1]=d;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>d,toc:()=>p});var n=r(7462),a=(r(7294),r(3905));const i={},o="Decentralized Identifiers",d={unversionedId:"features/dids",id:"features/dids",title:"Decentralized Identifiers",description:"Decentralized identifiers are a core components of Credo, and used everywhere in the framework.",source:"@site/guides/features/dids.md",sourceDirName:"features",slug:"/features/dids",permalink:"/guides/0.5/features/dids",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"OpenID for Verifiable Credentials",permalink:"/guides/0.5/features/openid4vc"},next:{title:"Verifiable Credentials",permalink:"/guides/0.5/features/credentials"}},l={},p=[{value:"Supported DID Methods",id:"supported-did-methods",level:2}],s={toc:p},u="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"decentralized-identifiers"},"Decentralized Identifiers"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://www.w3.org/TR/did-core/"},"Decentralized identifiers")," are a core components of Credo, and used everywhere in the framework."),(0,a.kt)("p",null,"The base DID implementation allows all components within the framework (whether it be credential signing, sending messages over DIDComm, or verifying a SIOPv2 ID Token) to leverage DIDs. The pluggable DID Resolver and DID Registrar interfaces allow for easy extension of the supported DID methods."),(0,a.kt)("p",null,"In addition, any DID can be imported into the framework, meaning it can be used for signing of credentials and DIDComm, without needing a DID Registrar to register the DID."),(0,a.kt)("h2",{id:"supported-did-methods"},"Supported DID Methods"),(0,a.kt)("p",null,"Currently the following DID methods are supported by Credo:"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:null},"Method"),(0,a.kt)("th",{parentName:"tr",align:null},"Note"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"did:key")),(0,a.kt)("td",{parentName:"tr",align:null})),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"did:jwk")),(0,a.kt)("td",{parentName:"tr",align:null})),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"did:peer")),(0,a.kt)("td",{parentName:"tr",align:null},"Not supported for OpenID4VC")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"did:web")),(0,a.kt)("td",{parentName:"tr",align:null},"No registrar available, but you can use the ",(0,a.kt)("inlineCode",{parentName:"td"},"DidDocumentBuilder")," to build and later import the DID Document.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"did:cheqd")),(0,a.kt)("td",{parentName:"tr",align:null},"Available through the ",(0,a.kt)("inlineCode",{parentName:"td"},"@credo-ts/cheqd")," package.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"did:indy")),(0,a.kt)("td",{parentName:"tr",align:null},"Available through the ",(0,a.kt)("inlineCode",{parentName:"td"},"@credo-ts/indy-vdr")," package.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"did:sov")),(0,a.kt)("td",{parentName:"tr",align:null},"Available through the ",(0,a.kt)("inlineCode",{parentName:"td"},"@credo-ts/indy-vdr")," package.")))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/466eb4b6.8ef8cc51.js b/assets/js/466eb4b6.fa1459da.js similarity index 59% rename from assets/js/466eb4b6.8ef8cc51.js rename to assets/js/466eb4b6.fa1459da.js index 1f1fe8d9..9b4dc934 100644 --- a/assets/js/466eb4b6.8ef8cc51.js +++ b/assets/js/466eb4b6.fa1459da.js @@ -1 +1 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[4354],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>g});var i=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 a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function s(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var d=i.createContext({}),l=function(e){var t=i.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=l(e.components);return i.createElement(d.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,d=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),p=l(n),m=r,g=p["".concat(d,".").concat(m)]||p[m]||u[m]||a;return n?i.createElement(g,s(s({ref:t},c),{},{components:n})):i.createElement(g,s({ref:t},c))}));function g(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,s=new Array(a);s[0]=m;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o[p]="string"==typeof e?e:r,s[1]=o;for(var l=2;l{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>s,default:()=>u,frontMatter:()=>a,metadata:()=>o,toc:()=>l});var i=n(7462),r=(n(7294),n(3905));const a={},s="Registering a schema and credential definition on an AnonCreds Registry",o={unversionedId:"tutorials/registering-schema-and-credential-definition",id:"tutorials/registering-schema-and-credential-definition",title:"Registering a schema and credential definition on an AnonCreds Registry",description:"In this tutorial we will register a schema and credential definition on an AnonCredsRegistry e.g. Hyperledger Indy ledger indy-vdr, cheqd.",source:"@site/guides/tutorials/registering-schema-and-credential-definition.md",sourceDirName:"tutorials",slug:"/tutorials/registering-schema-and-credential-definition",permalink:"/guides/0.5/tutorials/registering-schema-and-credential-definition",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Cheqd Did Module",permalink:"/guides/0.5/tutorials/cheqd/"},next:{title:"Issue a credential",permalink:"/guides/0.5/tutorials/issue-a-credential"}},d={},l=[{value:"1. Setting up the agent",id:"1-setting-up-the-agent",level:3},{value:"2. Importing a DID (optional)",id:"2-importing-a-did-optional",level:3},{value:"3. Registering a schema",id:"3-registering-a-schema",level:3},{value:"3. Registering a credential definition",id:"3-registering-a-credential-definition",level:3},{value:"Using it",id:"using-it",level:3},{value:"Useful Resources",id:"useful-resources",level:3}],c={toc:l},p="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,i.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"registering-a-schema-and-credential-definition-on-an-anoncreds-registry"},"Registering a schema and credential definition on an AnonCreds Registry"),(0,r.kt)("p",null,"In this tutorial we will register a schema and credential definition on an AnonCredsRegistry e.g. Hyperledger Indy ledger ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-vdr"},"indy-vdr"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/openwallet-foundation/credo-ts/packages/cheqd"},"cheqd"),"."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"This section assumes that"),(0,r.kt)("ol",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ol"},"You have ",(0,r.kt)("a",{parentName:"li",href:"../getting-started"},"set-up your development environment"),"."),(0,r.kt)("li",{parentName:"ol"},"You have basic knowledge of the required fields in the ",(0,r.kt)("a",{parentName:"li",href:"./agent-config"},"Agent Config")))),(0,r.kt)("h3",{id:"1-setting-up-the-agent"},"1. Setting up the agent"),(0,r.kt)("p",null,"First, an agent must be setup with a wallet and an indy-vdr or cheqd module. For these code examples, we will use a Node.js environment."),(0,r.kt)("admonition",{type:"issuer"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers register-schema-and-cred-def.ts section-1",showLineNumbers:!0,"register-schema-and-cred-def.ts":!0,"section-1":!0},""))),(0,r.kt)("h3",{id:"2-importing-a-did-optional"},"2. Importing a DID (optional)"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"There are many ledgers which can be used to register DIDs on for development."),(0,r.kt)("h4",{parentName:"admonition",id:"indy-vdr"},"Indy VDR"),(0,r.kt)("p",{parentName:"admonition"},"We recommend ",(0,r.kt)("a",{parentName:"p",href:"http://test.bcovrin.vonx.io/"},"bcovrin test net"),". This network allows very easily to register a DID from a seed which can then be used as the ",(0,r.kt)("inlineCode",{parentName:"p"},"privateKey")," in the snippet below. The seed is used as the private key for legacy compatibility with the Hyperledger Indy-SDK. The ",(0,r.kt)("a",{parentName:"p",href:"http://test.bcovrin.vonx.io/genesis"},"genesis transactions")," can also be retrieved for easy integration."),(0,r.kt)("h4",{parentName:"admonition",id:"cheqd"},"Cheqd"),(0,r.kt)("p",{parentName:"admonition"},"Follow the ",(0,r.kt)("a",{parentName:"p",href:"/guides/0.5/getting-started/set-up/cheqd/"},"cheqd setup")," and ",(0,r.kt)("a",{parentName:"p",href:"/guides/0.5/tutorials/cheqd/"},"cheqd DID module")," to setup the network and create a DID. Cheqd supports a mainnet for production and a testnet for development purposes.")),(0,r.kt)("p",null,"In order to register a schema and credential definition, a DID must be added to the agent first. This can be done by calling ",(0,r.kt)("inlineCode",{parentName:"p"},"agent.dids.create()"),", but this does require an endorser DID to be present as the ",(0,r.kt)("inlineCode",{parentName:"p"},"submitterDid"),". For this tutorial a DID will already be registered on the ledger, but it will be imported, with the associated private key, to be used later when registering the schema and credential definition."),(0,r.kt)("p",null,"This section can be omitted if your agent already has a DID in its wallet."),(0,r.kt)("admonition",{type:"issuer"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers register-schema-and-cred-def.ts section-2",showLineNumbers:!0,"register-schema-and-cred-def.ts":!0,"section-2":!0},""))),(0,r.kt)("h3",{id:"3-registering-a-schema"},"3. Registering a schema"),(0,r.kt)("p",null,"When you have a registered DID on a network and in your wallet, you can register a schema. Registering a schema requires four fields: ",(0,r.kt)("inlineCode",{parentName:"p"},"issuerId"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"name"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"version")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"attrNames"),". It is important to note that the ",(0,r.kt)("inlineCode",{parentName:"p"},"issuerId")," must be the same as a DID in your wallet."),(0,r.kt)("admonition",{type:"issuer"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers register-schema-and-cred-def.ts section-3",showLineNumbers:!0,"register-schema-and-cred-def.ts":!0,"section-3":!0},""))),(0,r.kt)("h3",{id:"3-registering-a-credential-definition"},"3. Registering a credential definition"),(0,r.kt)("p",null,"After registering a schema, a credential definition can be registered based on the schema. The credential definition, amongst more things, binds the schema to a specific issuer. Schemas can be reused between issuers, but a credential definition is specific to an issuer. In a credential definition revocation can also be specified. This section will not go in-depth about revocation."),(0,r.kt)("admonition",{type:"issuer"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers register-schema-and-cred-def.ts section-4",showLineNumbers:!0,"register-schema-and-cred-def.ts":!0,"section-4":!0},""))),(0,r.kt)("h3",{id:"using-it"},"Using it"),(0,r.kt)("p",null,"After everything is registered on a AnonCredsRegistry, we can use it to issue credentials. The next tutorial is all about issuing an AnonCreds credential with this setup."),(0,r.kt)("h3",{id:"useful-resources"},"Useful Resources"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://docs.cheqd.io/identity/guides/anoncreds"},"Cheqd AnonCreds Specification"))))}u.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[4354],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>g});var i=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 a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function s(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var d=i.createContext({}),l=function(e){var t=i.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=l(e.components);return i.createElement(d.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,d=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),p=l(n),m=r,g=p["".concat(d,".").concat(m)]||p[m]||u[m]||a;return n?i.createElement(g,s(s({ref:t},c),{},{components:n})):i.createElement(g,s({ref:t},c))}));function g(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,s=new Array(a);s[0]=m;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o[p]="string"==typeof e?e:r,s[1]=o;for(var l=2;l{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>s,default:()=>u,frontMatter:()=>a,metadata:()=>o,toc:()=>l});var i=n(7462),r=(n(7294),n(3905));const a={},s="Registering a schema and credential definition on an AnonCreds Registry",o={unversionedId:"tutorials/registering-schema-and-credential-definition",id:"tutorials/registering-schema-and-credential-definition",title:"Registering a schema and credential definition on an AnonCreds Registry",description:"In this tutorial we will register a schema and credential definition on an AnonCredsRegistry e.g. Hyperledger Indy ledger indy-vdr, cheqd.",source:"@site/guides/tutorials/registering-schema-and-credential-definition.md",sourceDirName:"tutorials",slug:"/tutorials/registering-schema-and-credential-definition",permalink:"/guides/0.5/tutorials/registering-schema-and-credential-definition",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Cheqd Did Module",permalink:"/guides/0.5/tutorials/cheqd/"},next:{title:"Issue a credential",permalink:"/guides/0.5/tutorials/issue-a-credential"}},d={},l=[{value:"1. Setting up the agent",id:"1-setting-up-the-agent",level:3},{value:"2. Importing a DID (optional)",id:"2-importing-a-did-optional",level:3},{value:"3. Registering a schema",id:"3-registering-a-schema",level:3},{value:"3. Registering a credential definition",id:"3-registering-a-credential-definition",level:3},{value:"Using it",id:"using-it",level:3},{value:"Useful Resources",id:"useful-resources",level:3}],c={toc:l},p="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,i.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"registering-a-schema-and-credential-definition-on-an-anoncreds-registry"},"Registering a schema and credential definition on an AnonCreds Registry"),(0,r.kt)("p",null,"In this tutorial we will register a schema and credential definition on an AnonCredsRegistry e.g. Hyperledger Indy ledger ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-vdr"},"indy-vdr"),", ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/openwallet-foundation/credo-ts/packages/cheqd"},"cheqd"),"."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"This section assumes that"),(0,r.kt)("ol",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ol"},"You have ",(0,r.kt)("a",{parentName:"li",href:"../getting-started"},"set-up your development environment"),"."),(0,r.kt)("li",{parentName:"ol"},"You have basic knowledge of the required fields in the ",(0,r.kt)("a",{parentName:"li",href:"./agent-config"},"Agent Config")))),(0,r.kt)("h3",{id:"1-setting-up-the-agent"},"1. Setting up the agent"),(0,r.kt)("p",null,"First, an agent must be setup with a wallet and an indy-vdr or cheqd module. For these code examples, we will use a Node.js environment."),(0,r.kt)("admonition",{type:"issuer"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers register-schema-and-cred-def.ts section-1",showLineNumbers:!0,"register-schema-and-cred-def.ts":!0,"section-1":!0},""))),(0,r.kt)("h3",{id:"2-importing-a-did-optional"},"2. Importing a DID (optional)"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"There are many ledgers which can be used to register DIDs on for development."),(0,r.kt)("h4",{parentName:"admonition",id:"indy-vdr"},"Indy VDR"),(0,r.kt)("p",{parentName:"admonition"},"We recommend ",(0,r.kt)("a",{parentName:"p",href:"http://test.bcovrin.vonx.io/"},"BCovrin Testnet"),". This network allows very easily to register a DID from a seed which can then be used as the ",(0,r.kt)("inlineCode",{parentName:"p"},"privateKey")," in the snippet below. The seed is used as the private key for legacy compatibility with the Hyperledger Indy-SDK. The ",(0,r.kt)("a",{parentName:"p",href:"http://test.bcovrin.vonx.io/genesis"},"genesis transactions")," can also be retrieved for easy integration."),(0,r.kt)("h4",{parentName:"admonition",id:"cheqd"},"Cheqd"),(0,r.kt)("p",{parentName:"admonition"},"Follow the ",(0,r.kt)("a",{parentName:"p",href:"/guides/0.5/getting-started/set-up/cheqd/"},"cheqd setup")," and ",(0,r.kt)("a",{parentName:"p",href:"/guides/0.5/tutorials/cheqd/"},"cheqd DID module")," to setup the network and create a DID. Cheqd supports a mainnet for production and a testnet for development purposes.")),(0,r.kt)("p",null,"In order to register a schema and credential definition, a DID must be added to the agent first. This can be done by calling ",(0,r.kt)("inlineCode",{parentName:"p"},"agent.dids.create()"),", but this does require an endorser DID to be present as the ",(0,r.kt)("inlineCode",{parentName:"p"},"submitterDid"),". For this tutorial a DID will already be registered on the ledger, but it will be imported, with the associated private key, to be used later when registering the schema and credential definition."),(0,r.kt)("p",null,"This section can be omitted if your agent already has a DID in its wallet."),(0,r.kt)("admonition",{type:"issuer"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers register-schema-and-cred-def.ts section-2",showLineNumbers:!0,"register-schema-and-cred-def.ts":!0,"section-2":!0},""))),(0,r.kt)("h3",{id:"3-registering-a-schema"},"3. Registering a schema"),(0,r.kt)("p",null,"When you have a registered DID on a network and in your wallet, you can register a schema. Registering a schema requires four fields: ",(0,r.kt)("inlineCode",{parentName:"p"},"issuerId"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"name"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"version")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"attrNames"),". It is important to note that the ",(0,r.kt)("inlineCode",{parentName:"p"},"issuerId")," must be the same as a DID in your wallet."),(0,r.kt)("admonition",{type:"issuer"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers register-schema-and-cred-def.ts section-3",showLineNumbers:!0,"register-schema-and-cred-def.ts":!0,"section-3":!0},""))),(0,r.kt)("h3",{id:"3-registering-a-credential-definition"},"3. Registering a credential definition"),(0,r.kt)("p",null,"After registering a schema, a credential definition can be registered based on the schema. The credential definition, amongst more things, binds the schema to a specific issuer. Schemas can be reused between issuers, but a credential definition is specific to an issuer. In a credential definition revocation can also be specified. This section will not go in-depth about revocation."),(0,r.kt)("admonition",{type:"issuer"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers register-schema-and-cred-def.ts section-4",showLineNumbers:!0,"register-schema-and-cred-def.ts":!0,"section-4":!0},""))),(0,r.kt)("h3",{id:"using-it"},"Using it"),(0,r.kt)("p",null,"After everything is registered on a AnonCredsRegistry, we can use it to issue credentials. The next tutorial is all about issuing an AnonCreds credential with this setup."),(0,r.kt)("h3",{id:"useful-resources"},"Useful Resources"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://docs.cheqd.io/identity/guides/anoncreds"},"Cheqd AnonCreds Specification"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4da4ce16.880b581d.js b/assets/js/4da4ce16.880b581d.js deleted file mode 100644 index a91666da..00000000 --- a/assets/js/4da4ce16.880b581d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[1119],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(7294);function a(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 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||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),d=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=d(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=d(n),m=a,h=p["".concat(s,".").concat(m)]||p[m]||u[m]||i;return n?r.createElement(h,o(o({ref:t},c),{},{components:n})):r.createElement(h,o({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:a,o[1]=l;for(var d=2;d{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>d});var r=n(7462),a=(n(7294),n(3905));const i={},o="macOS (ARM)",l={unversionedId:"getting-started/set-up/indy-sdk/macos-arm",id:"getting-started/set-up/indy-sdk/macos-arm",title:"macOS (ARM)",description:"To install Indy SDK on macOS, a couple of dependencies are required. This guide covers the installation of the Indy SDK for macs with an ARM processor. For installing the Indy SDK on Intel based macs, please refer to the Indy SDK macOS (Intel) guide.",source:"@site/guides/getting-started/set-up/indy-sdk/macos-arm.md",sourceDirName:"getting-started/set-up/indy-sdk",slug:"/getting-started/set-up/indy-sdk/macos-arm",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/macos-arm",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"macOS (Intel)",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/macos-intel"},next:{title:"React Native",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/react-native"}},s={},d=[{value:"Libsodium",id:"libsodium",level:3},{value:"Libzmq",id:"libzmq",level:3},{value:"Indy SDK",id:"indy-sdk",level:3},{value:"Confirm installation",id:"confirm-installation",level:3}],c={toc:d},p="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"macos-arm"},"macOS (ARM)"),(0,a.kt)("p",null,"To install ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-sdk"},"Indy SDK")," on macOS, a couple of dependencies are required. This guide covers the installation of the Indy SDK for macs with an ARM processor. For installing the Indy SDK on Intel based macs, please refer to the ",(0,a.kt)("a",{parentName:"p",href:"./macos-intel"},"Indy SDK macOS (Intel)")," guide."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"This installation assumes that you have ",(0,a.kt)("a",{parentName:"p",href:"https://brew.sh"},"brew")," installed. If not, please install it via this command:"),(0,a.kt)("pre",{parentName:"admonition"},(0,a.kt)("code",{parentName:"pre"},'/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"\n'))),(0,a.kt)("h3",{id:"libsodium"},"Libsodium"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/jedisct1/libsodium"},"Libsodium")," is used by the Indy SDK for encryption, decryption, hashing and signing."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"brew install libsodium\n")),(0,a.kt)("h3",{id:"libzmq"},"Libzmq"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/zeromq/libzmq"},"Libzmq")," is a lightweight messaging queue used by the Indy SDK."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"brew install zeromq\n")),(0,a.kt)("h3",{id:"indy-sdk"},"Indy SDK"),(0,a.kt)("p",null,"The Indy SDK does not been distributed properly for macOS. We have a pre-built library available that can\nbe downloaded. If you prefer to build from source, you can follow the instructions in the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-sdk#how-to-build-indy-sdk-from-source"},"Indy SDK repository")),(0,a.kt)("p",null,"First, download the pre-built library from ",(0,a.kt)("a",{parentName:"p",href:"https://drive.google.com/file/d/1JaRqAEAyodjeh120YYZ0t42zfhN3wHiW/view"},"Google Drive"),"."),(0,a.kt)("p",null,"After this, open ",(0,a.kt)("inlineCode",{parentName:"p"},"Finder"),", ",(0,a.kt)("inlineCode",{parentName:"p"},"control+click")," on the library and click on ",(0,a.kt)("inlineCode",{parentName:"p"},"open"),".\nThis is something that has to be done as the library is not properly signed."),(0,a.kt)("p",null,"Lastly the library just has to be moved to the correct location."),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"If you downloaded the file in another directory, please change the first part of this command")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"sudo mv ~/Downloads/libindy.dylib /usr/local/lib/\n")),(0,a.kt)("h3",{id:"confirm-installation"},"Confirm installation"),(0,a.kt)("p",null,"To see whether the Indy SDK is correctly installed on your system, run the following command and it should not error."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"npx -p @aries-framework/node@^0.3 is-indy-installed\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/514aaf1d.c14f0a5d.js b/assets/js/514aaf1d.c14f0a5d.js new file mode 100644 index 00000000..0ba66d9f --- /dev/null +++ b/assets/js/514aaf1d.c14f0a5d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[2050],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),p=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),m=p(r),c=n,f=m["".concat(s,".").concat(c)]||m[c]||u[c]||i;return r?a.createElement(f,o(o({ref:t},d),{},{components:r})):a.createElement(f,o({ref:t},d))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[m]="string"==typeof e?e:n,o[1]=l;for(var p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var a=r(7462),n=(r(7294),r(3905));const i={},o="Hyperledger Aries and Aries Interop Profile",l={unversionedId:"features/aries",id:"features/aries",title:"Hyperledger Aries and Aries Interop Profile",description:"Initially, Credo was built as an Hyperledger Aries framework, focusing on implementing the Aries RFCs and supporting the Aries Interop Profile.",source:"@site/guides/features/aries.md",sourceDirName:"features",slug:"/features/aries",permalink:"/guides/0.5/features/aries",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Supported Features",permalink:"/guides/0.5/features/"},next:{title:"OpenID for Verifiable Credentials",permalink:"/guides/0.5/features/openid4vc"}},s={},p=[{value:"Aries Interop Profile",id:"aries-interop-profile",level:2},{value:"Additional Aries RFCs",id:"additional-aries-rfcs",level:2},{value:"Divergence from Aries RFCs",id:"divergence-from-aries-rfcs",level:2}],d={toc:p},m="wrapper";function u(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"hyperledger-aries-and-aries-interop-profile"},"Hyperledger Aries and Aries Interop Profile"),(0,n.kt)("p",null,"Initially, Credo was built as an Hyperledger Aries framework, focusing on implementing the ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/aries-rfcs"},"Aries RFCs")," and supporting the ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/aries-rfcs/tree/main/concepts/0302-aries-interop-profile"},"Aries Interop Profile"),"."),(0,n.kt)("p",null,"Support for Hyperledger Aries, DIDComm and AnonCreds is at the core of Credo, and thus if you're building an identity solution supporting these standards, Credo is a great fit."),(0,n.kt)("h2",{id:"aries-interop-profile"},"Aries Interop Profile"),(0,n.kt)("p",null,"Credo currently has ",(0,n.kt)("strong",{parentName:"p"},"full support for ",(0,n.kt)("a",{parentName:"strong",href:"https://github.com/hyperledger/aries-rfcs/tree/main/concepts/0302-aries-interop-profile#aries-interop-profile-version-10"},"Aries Interop Profile 1.0")," (AIP 1)")," as well as ",(0,n.kt)("strong",{parentName:"p"},"most of the features from ",(0,n.kt)("a",{parentName:"strong",href:"https://github.com/hyperledger/aries-rfcs/tree/main/concepts/0302-aries-interop-profile#aries-interop-profile-version-20"},"Aries Interop Profile 2.0")," (AIP 2)")),(0,n.kt)("p",null,"The following table lists which parts of AIP 2 are supported by Credo:"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Feature"),(0,n.kt)("th",{parentName:"tr",align:null},"Support"),(0,n.kt)("th",{parentName:"tr",align:null},"Notes"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/hyperledger/aries-rfcs/tree/main/concepts/0302-aries-interop-profile#base-requirements"},"Base Requirements")),(0,n.kt)("td",{parentName:"tr",align:null},"\u2705"),(0,n.kt)("td",{parentName:"tr",align:null})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/hyperledger/aries-rfcs/tree/main/concepts/0302-aries-interop-profile#mediate-mediator-coordination"},"Mediator Coordination")),(0,n.kt)("td",{parentName:"tr",align:null},"\u2705"),(0,n.kt)("td",{parentName:"tr",align:null})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/hyperledger/aries-rfcs/tree/main/concepts/0302-aries-interop-profile#indycred-indy-based-credentials"},"Indy Based Credentials")),(0,n.kt)("td",{parentName:"tr",align:null},"\u2705"),(0,n.kt)("td",{parentName:"tr",align:null},"Also support for the newer ledger-agnostic ",(0,n.kt)("a",{parentName:"td",href:"https://github.com/hyperledger/aries-rfcs/tree/main/features/0771-anoncreds-attachments"},"AnonCreds attachment format"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/hyperledger/aries-rfcs/tree/main/features/0771-anoncreds-attachments"},"JSON-LD Based Credentials")),(0,n.kt)("td",{parentName:"tr",align:null},"\u2705"),(0,n.kt)("td",{parentName:"tr",align:null})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/hyperledger/aries-rfcs/tree/main/concepts/0302-aries-interop-profile#bbscred-bbs-based-credentials"},"BBS+ Based Credentials")),(0,n.kt)("td",{parentName:"tr",align:null},"\u2705"),(0,n.kt)("td",{parentName:"tr",align:null})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/hyperledger/aries-rfcs/tree/main/concepts/0302-aries-interop-profile#chat-chat-related-features"},"Chat related features")),(0,n.kt)("td",{parentName:"tr",align:null},"\u2705"),(0,n.kt)("td",{parentName:"tr",align:null})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/hyperledger/aries-rfcs/tree/main/concepts/0302-aries-interop-profile#didcommv2prep-didcomm-v2-prep"},"DIDCommm v2 Prep")),(0,n.kt)("td",{parentName:"tr",align:null},"\u274c"),(0,n.kt)("td",{parentName:"tr",align:null})))),(0,n.kt)("h2",{id:"additional-aries-rfcs"},"Additional Aries RFCs"),(0,n.kt)("p",null,"In addition to the Aries RFCs listed by the Aries Interop Profile, Credo also supports the following Aries RFCs:"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Aries RFC"),(0,n.kt)("th",{parentName:"tr",align:null},"Support"),(0,n.kt)("th",{parentName:"tr",align:null},"Notes"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/hyperledger/aries-rfcs/tree/main/features/0212-pickup"},"Aries RFC 0212 Pickup V1")),(0,n.kt)("td",{parentName:"tr",align:null},"\u2705"),(0,n.kt)("td",{parentName:"tr",align:null})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/hyperledger/aries-rfcs/tree/main/features/0685-pickup-v2"},"Aries RFC 0685 Pickup V2")),(0,n.kt)("td",{parentName:"tr",align:null},"\u2705"),(0,n.kt)("td",{parentName:"tr",align:null})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/hyperledger/aries-rfcs/tree/be8c7bf856577745e0165e9cda0918fa554d120e/features/0721-revocation-notification-v2"},"Aries RFC 0721 Revocation Notification V2")),(0,n.kt)("td",{parentName:"tr",align:null},"\u2705"),(0,n.kt)("td",{parentName:"tr",align:null})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/hyperledger/aries-rfcs/tree/be8c7bf856577745e0165e9cda0918fa554d120e/features/0771-anoncreds-attachments"},"Aries RFC 0771: AnonCreds Attachment Format")),(0,n.kt)("td",{parentName:"tr",align:null},"\u2705"),(0,n.kt)("td",{parentName:"tr",align:null})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/hyperledger/aries-rfcs/blob/main/features/0794-did-rotate/README.md"},"Aries RFC 0794: DID Rotate V1")),(0,n.kt)("td",{parentName:"tr",align:null},"\u2705"),(0,n.kt)("td",{parentName:"tr",align:null})))),(0,n.kt)("h2",{id:"divergence-from-aries-rfcs"},"Divergence from Aries RFCs"),(0,n.kt)("p",null,"Although Credo tries to follow the standards as described in the Aries RFCs as much as possible, some features in Credo slightly diverge from the written spec. Below is an overview of the features that diverge from the spec, their impact and the reasons for diverging."),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Feature"),(0,n.kt)("th",{parentName:"tr",align:null},"Impact"),(0,n.kt)("th",{parentName:"tr",align:null},"Reason"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Support for ",(0,n.kt)("inlineCode",{parentName:"td"},"imageUrl")," attribute in connection invitation and connection request"),(0,n.kt)("td",{parentName:"tr",align:null},"Properties that are not recognized should be ignored, meaning this shouldn't limit interoperability between agents. As the image url is self-attested it could give a false sense of trust. Better, credential based, method for visually identifying an entity are not present yet."),(0,n.kt)("td",{parentName:"tr",align:null},"Even though not documented, almost all agents support this feature. Not including this feature means Credo is lacking in features in comparison to other implementations.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Revocation Notification v1 uses a different ",(0,n.kt)("inlineCode",{parentName:"td"},"thread_id")," format ( ",(0,n.kt)("inlineCode",{parentName:"td"},"indy::::"),") than specified in the Aries RFC"),(0,n.kt)("td",{parentName:"tr",align:null},"Any agents adhering to the ",(0,n.kt)("a",{parentName:"td",href:"https://github.com/hyperledger/aries-rfcs/tree/main/features/0183-revocation-notification"},"revocation notification v1 RFC")," will not be interoperable with Credo. However, revocation notification is considered an optional portion of revocation, therefore this will not break core revocation behavior. Ideally agents should use and implement revocation notification v2."),(0,n.kt)("td",{parentName:"tr",align:null},"Actual implementations (ACA-Py) of revocation notification v1 so far have implemented this different format, so this format change was made to remain interoperable.")))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5d1c397c.f13ab292.js b/assets/js/5d1c397c.f13ab292.js new file mode 100644 index 00000000..871d62e9 --- /dev/null +++ b/assets/js/5d1c397c.f13ab292.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[6840],{3905:(e,n,t)=>{t.d(n,{Zo:()=>c,kt:()=>f});var o=t(7294);function r(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 o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function g(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var l=o.createContext({}),s=function(e){var n=o.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):g(g({},n),e)),t},c=function(e){var n=s(e.components);return o.createElement(l.Provider,{value:n},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},d=o.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),u=s(t),d=r,f=u["".concat(l,".").concat(d)]||u[d]||p[d]||a;return t?o.createElement(f,g(g({ref:n},c),{},{components:t})):o.createElement(f,g({ref:n},c))}));function f(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,g=new Array(a);g[0]=d;var i={};for(var l in n)hasOwnProperty.call(n,l)&&(i[l]=n[l]);i.originalType=e,i[u]="string"==typeof e?e:r,g[1]=i;for(var s=2;s{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>g,default:()=>p,frontMatter:()=>a,metadata:()=>i,toc:()=>s});var o=t(7462),r=(t(7294),t(3905));const a={},g="Logging",i={unversionedId:"tutorials/agent-config/logging",id:"tutorials/agent-config/logging",title:"Logging",description:"Using the Default ConsoleLogger",source:"@site/guides/tutorials/agent-config/logging.md",sourceDirName:"tutorials/agent-config",slug:"/tutorials/agent-config/logging",permalink:"/guides/0.5/tutorials/agent-config/logging",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Agent Config",permalink:"/guides/0.5/tutorials/agent-config/"},next:{title:"Create a connection",permalink:"/guides/0.5/tutorials/create-a-connection"}},l={},s=[{value:"Using the Default ConsoleLogger",id:"using-the-default-consolelogger",level:2},{value:"Creating your own Logger",id:"creating-your-own-logger",level:2}],c={toc:s},u="wrapper";function p(e){let{components:n,...t}=e;return(0,r.kt)(u,(0,o.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"logging"},"Logging"),(0,r.kt)("h2",{id:"using-the-default-consolelogger"},"Using the Default ConsoleLogger"),(0,r.kt)("p",null,"To enable logging inside the framework a logger must be passed to the agent config. A simple ",(0,r.kt)("inlineCode",{parentName:"p"},"ConsoleLogger")," can be imported from the framework."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-ts"},"import type { InitConfig } from '@credo-ts/core'\nimport { ConsoleLogger, LogLevel } from '@credo-ts/core'\n\nconst agentConfig: InitConfig = {\n // ... other config properties ...\n logger: new ConsoleLogger(LogLevel.info),\n}\n")),(0,r.kt)("h2",{id:"creating-your-own-logger"},"Creating your own Logger"),(0,r.kt)("p",null,"For more advanced use cases the ",(0,r.kt)("inlineCode",{parentName:"p"},"Logger")," interface can be implemented. See the example below."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-ts"},"import { Logger, LogLevel } from '@credo-ts/core'\n\nclass MyCustomLogger implements Logger {\n public logLevel: LogLevel\n\n public constructor(logLevel: LogLevel = LogLevel.off) {\n this.logLevel = logLevel\n }\n\n public test(message: string, data?: Record): void {\n console.log(message, data)\n }\n\n public trace(message: string, data?: Record): void {\n console.log(message, data)\n }\n\n public debug(message: string, data?: Record): void {\n console.log(message, data)\n }\n\n public info(message: string, data?: Record): void {\n console.log(message, data)\n }\n\n public warn(message: string, data?: Record): void {\n console.log(message, data)\n }\n\n public error(message: string, data?: Record): void {\n console.log(message, data)\n }\n\n public fatal(message: string, data?: Record): void {\n console.log(message, data)\n }\n}\n")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5d1c397c.f2b71c6e.js b/assets/js/5d1c397c.f2b71c6e.js deleted file mode 100644 index 07b73d7a..00000000 --- a/assets/js/5d1c397c.f2b71c6e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[6840],{3905:(e,n,t)=>{t.d(n,{Zo:()=>c,kt:()=>m});var o=t(7294);function r(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 o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function i(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var g=o.createContext({}),s=function(e){var n=o.useContext(g),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},c=function(e){var n=s(e.components);return o.createElement(g.Provider,{value:n},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},u=o.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,g=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=s(t),u=r,m=p["".concat(g,".").concat(u)]||p[u]||d[u]||a;return t?o.createElement(m,i(i({ref:n},c),{},{components:t})):o.createElement(m,i({ref:n},c))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,i=new Array(a);i[0]=u;var l={};for(var g in n)hasOwnProperty.call(n,g)&&(l[g]=n[g]);l.originalType=e,l[p]="string"==typeof e?e:r,i[1]=l;for(var s=2;s{t.r(n),t.d(n,{assets:()=>g,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var o=t(7462),r=(t(7294),t(3905));const a={},i="Logging",l={unversionedId:"tutorials/agent-config/logging",id:"tutorials/agent-config/logging",title:"Logging",description:"Using the Default ConsoleLogger",source:"@site/guides/tutorials/agent-config/logging.md",sourceDirName:"tutorials/agent-config",slug:"/tutorials/agent-config/logging",permalink:"/guides/0.5/tutorials/agent-config/logging",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Agent Config",permalink:"/guides/0.5/tutorials/agent-config/"},next:{title:"Create a connection",permalink:"/guides/0.5/tutorials/create-a-connection"}},g={},s=[{value:"Using the Default ConsoleLogger",id:"using-the-default-consolelogger",level:2},{value:"Creating your own Logger",id:"creating-your-own-logger",level:2},{value:"Indy Logs",id:"indy-logs",level:2}],c={toc:s},p="wrapper";function d(e){let{components:n,...t}=e;return(0,r.kt)(p,(0,o.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"logging"},"Logging"),(0,r.kt)("h2",{id:"using-the-default-consolelogger"},"Using the Default ConsoleLogger"),(0,r.kt)("p",null,"To enable logging inside the framework a logger must be passed to the agent config. A simple ",(0,r.kt)("inlineCode",{parentName:"p"},"ConsoleLogger")," can be imported from the framework."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-ts"},"import type { InitConfig } from '@aries-framework/core'\nimport { ConsoleLogger, LogLevel } from '@aries-framework/core'\n\nconst agentConfig: InitConfig = {\n // ... other config properties ...\n logger: new ConsoleLogger(LogLevel.info),\n}\n")),(0,r.kt)("h2",{id:"creating-your-own-logger"},"Creating your own Logger"),(0,r.kt)("p",null,"For more advanced use cases the ",(0,r.kt)("inlineCode",{parentName:"p"},"Logger")," interface can be implemented. See the example below."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-ts"},"import { Logger, LogLevel } from '@aries-framework/core'\n\nclass MyCustomLogger implements Logger {\n public logLevel: LogLevel\n\n public constructor(logLevel: LogLevel = LogLevel.off) {\n this.logLevel = logLevel\n }\n\n public test(message: string, data?: Record): void {\n console.log(message, data)\n }\n\n public trace(message: string, data?: Record): void {\n console.log(message, data)\n }\n\n public debug(message: string, data?: Record): void {\n console.log(message, data)\n }\n\n public info(message: string, data?: Record): void {\n console.log(message, data)\n }\n\n public warn(message: string, data?: Record): void {\n console.log(message, data)\n }\n\n public error(message: string, data?: Record): void {\n console.log(message, data)\n }\n\n public fatal(message: string, data?: Record): void {\n console.log(message, data)\n }\n}\n")),(0,r.kt)("h2",{id:"indy-logs"},"Indy Logs"),(0,r.kt)("p",null,"To enable logging in the underlying Rust framework, either ",(0,r.kt)("inlineCode",{parentName:"p"},"setLogger")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"setDefaultLogger")," must be called on the indy dependency, as seen ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-sdk/tree/master/wrappers/nodejs#logger"},"here"),"."),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"The ",(0,r.kt)("inlineCode",{parentName:"p"},"setLogger")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"setDefaultLogger")," methods have only been implemented in the Node.JS wrapper of the indy sdk. This won't work when importing from ",(0,r.kt)("inlineCode",{parentName:"p"},"@aries-framework/react-native"))),(0,r.kt)("p",null,"The easiest way to do this from Credo is through the ",(0,r.kt)("inlineCode",{parentName:"p"},"indy")," property of ",(0,r.kt)("inlineCode",{parentName:"p"},"agentDependencies"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-ts"},"import { agentDependencies } from '@aries-framework/node'\nagentDependencies.indy.setDefaultLogger('trace')\n\n// OR\n\nagentDependencies.indy.setLogger((level, target, message, modulePath, file, line) => {\n console.log('libindy said:', level, target, message, modulePath, file, line)\n})\n")),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"WARNING: You can only set the logger once. Call indy_set_default_logger, indy_set_logger, not both. Once it's been set, libindy won't let you change it.")),(0,r.kt)("p",null,"You can also set the environment variable ",(0,r.kt)("inlineCode",{parentName:"p"},"RUST_LOG")," to log at specified log levels.\nSee ",(0,r.kt)("a",{parentName:"p",href:"https://crates.io/crates/env_logger"},"https://crates.io/crates/env_logger")," for more information."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5edc3d1c.3860f396.js b/assets/js/5edc3d1c.3860f396.js deleted file mode 100644 index d9e632db..00000000 --- a/assets/js/5edc3d1c.3860f396.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[1313],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var r=n(7294);function s(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 r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(s[n]=e[n]);return s}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}var l=r.createContext({}),d=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=d(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},g=r.forwardRef((function(e,t){var n=e.components,s=e.mdxType,o=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=d(n),g=s,f=p["".concat(l,".").concat(g)]||p[g]||c[g]||o;return n?r.createElement(f,a(a({ref:t},u),{},{components:n})):r.createElement(f,a({ref:t},u))}));function f(e,t){var n=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var o=n.length,a=new Array(o);a[0]=g;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:s,a[1]=i;for(var d=2;d{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=n(7462),s=(n(7294),n(3905));const o={},a="Using PostgreSQL as Database for Indy SDK in Node.js",i={unversionedId:"tutorials/indy-sdk-postgres-database-nodejs/index",id:"tutorials/indy-sdk-postgres-database-nodejs/index",title:"Using PostgreSQL as Database for Indy SDK in Node.js",description:"By default the Indy SDK will use an SQLite database for storage. In mobile environments this is sufficient and allows us to keep storage local to the device, but in server environments we oftentimes want a more scalable storage solution. By leveraging the PostgreSQL plugin for Indy SDK we can use PostgreSQL as a storage solution instead of SQLite.",source:"@site/guides/tutorials/indy-sdk-postgres-database-nodejs/index.md",sourceDirName:"tutorials/indy-sdk-postgres-database-nodejs",slug:"/tutorials/indy-sdk-postgres-database-nodejs/",permalink:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Mediation",permalink:"/guides/0.5/tutorials/mediation"},next:{title:"Postgres Setup for Linux",permalink:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/linux"}},l={},d=[{value:"Installation of the Postgres Plugin",id:"installation-of-the-postgres-plugin",level:2},{value:"Using the Postgres Plugin in Credo",id:"using-the-postgres-plugin-in-credo",level:2}],u={toc:d},p="wrapper";function c(e){let{components:t,...n}=e;return(0,s.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"using-postgresql-as-database-for-indy-sdk-in-nodejs"},"Using PostgreSQL as Database for Indy SDK in Node.js"),(0,s.kt)("p",null,"By default the Indy SDK will use an SQLite database for storage. In mobile environments this is sufficient and allows us to keep storage local to the device, but in server environments we oftentimes want a more scalable storage solution. By leveraging the PostgreSQL plugin for Indy SDK we can use PostgreSQL as a storage solution instead of SQLite."),(0,s.kt)("p",null,"This document describes the installation process of the Postgres plugin for IndySDK and how you need to configure Credo to use it."),(0,s.kt)("h2",{id:"installation-of-the-postgres-plugin"},"Installation of the Postgres Plugin"),(0,s.kt)("p",null,"For installation of the Postgres plugin, please refer to the platform specific guides:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/macos"},"macOS")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/linux"},"Linux")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/windows"},"Windows"))),(0,s.kt)("h2",{id:"using-the-postgres-plugin-in-credo"},"Using the Postgres Plugin in Credo"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-indy-sdk-postgres.ts section-1",showLineNumbers:!0,"set-up-indy-sdk-postgres.ts":!0,"section-1":!0},"")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/60053357.203ae6de.js b/assets/js/60053357.203ae6de.js new file mode 100644 index 00000000..7f8a1e14 --- /dev/null +++ b/assets/js/60053357.203ae6de.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[6266],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var i=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,i)}return a}function r(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=i.createContext({}),d=function(e){var t=i.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},u=function(e){var t=d(e.components);return i.createElement(l.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=d(a),c=n,h=p["".concat(l,".").concat(c)]||p[c]||m[c]||o;return a?i.createElement(h,r(r({ref:t},u),{},{components:a})):i.createElement(h,r({ref:t},u))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,r=new Array(o);r[0]=c;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:n,r[1]=s;for(var d=2;d{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>m,frontMatter:()=>o,metadata:()=>s,toc:()=>d});var i=a(7462),n=(a(7294),a(3905));const o={},r="Mediation",s={unversionedId:"tutorials/mediation",id:"tutorials/mediation",title:"Mediation",description:"This section assumes that you have:",source:"@site/guides/tutorials/mediation.md",sourceDirName:"tutorials",slug:"/tutorials/mediation",permalink:"/guides/0.5/tutorials/mediation",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Issue a credential",permalink:"/guides/0.5/tutorials/issue-a-credential"},next:{title:"Updating Credo",permalink:"/guides/0.5/updating/"}},l={},d=[{value:"What is a mediator, and Why should I use one?",id:"what-is-a-mediator-and-why-should-i-use-one",level:3},{value:"1. Mediator setup",id:"1-mediator-setup",level:3},{value:"2. Recipient (Alice) setup",id:"2-recipient-alice-setup",level:3},{value:"3. Message exchange",id:"3-message-exchange",level:3},{value:"Useful resources",id:"useful-resources",level:3}],u={toc:d},p="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,i.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"mediation"},"Mediation"),(0,n.kt)("blockquote",null,(0,n.kt)("p",{parentName:"blockquote"},"This section assumes that you have:"),(0,n.kt)("ol",{parentName:"blockquote"},(0,n.kt)("li",{parentName:"ol"},"Set up a ",(0,n.kt)("a",{parentName:"li",href:"../getting-started/installation"},"valid environment")," for development"),(0,n.kt)("li",{parentName:"ol"},"Basic knowledge of the required fields in the ",(0,n.kt)("a",{parentName:"li",href:"./agent-config"},"agent\nconfig"))),(0,n.kt)("p",{parentName:"blockquote"},"The agent setup varies depending on your target environment, React Native or Node.js.",(0,n.kt)("br",{parentName:"p"}),"\n","This tutorial assumes a Node.js environment for all agents (Alice, Bob, Meditator).")),(0,n.kt)("p",null,"This tutorial shows how to set up a mediator, how to configure an agent to use a mediator, and how agents exchange messages with a mediator in place.\nConcepts are explained in isolation:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/guides/0.5/tutorials/mediation#1-mediator-setup"},"First"),", it is shown how to set up a mediator."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/guides/0.5/tutorials/mediation#2-recipient-alice-setup"},"Second"),", it is demonstrated how to use a mediator."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/guides/0.5/tutorials/mediation#3-message-exchange"},"Third"),", the message exchange between agents with a mediator in place is explained.")),(0,n.kt)("h3",{id:"what-is-a-mediator-and-why-should-i-use-one"},"What is a mediator, and Why should I use one?"),(0,n.kt)("p",null,"A mediator is just a special type of agent."),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"\"When we describe agent-to-agent communication, it is convenient to think of an interaction only in terms of Alice and Bob and their agents. We say things like: \"Alice's agent sends a message to Bob's agent\" -- or perhaps \"Alice's edge agent sends a message to Bob's cloud agent, which forwards it to Bob's edge agent\"."),(0,n.kt)("p",{parentName:"admonition"},"Such statements adopt a useful level of abstraction--one that's highly recommended for most discussions. However, they make a number of simplifications. By modeling the roles of mediators and relays in routing, we can support routes that use multiple transports, routes that are not fully known (or knowable) to the sender, routes that pass through mix networks, and other advanced and powerful concepts.\"",(0,n.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0046-mediators-and-relays/README.md#aries-rfc-0046-mediators-and-relays"},"Aries RFC 0046: Mediators and Relays"))),(0,n.kt)("p",null,'A practical example where the use of mediators is beneficial can be found in a mobile environment. A mobile agent, aka. your mobile wallet, receives messages from other agents. Technically, sending HTTP messages to a mobile agent is impossible because the agent does not have a public IP. As you have probably seen in previous examples, a workaround for this scenario is to use ngrok. Another option is to use a mediator. When an agent is configured to use a mediator, messages to that agent are routed through the mediator and from there to its destination. Thus, a mobile agent can use a "public" mediator to receive messages on its behalf and poll them from time to time.'),(0,n.kt)("p",null,"This is just one example of how a mediator can be used. Further resources about mediators can be found ",(0,n.kt)("a",{parentName:"p",href:"/guides/0.5/tutorials/mediation#useful-resources"},"here"),"."),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"With mediators, WebSockets come in handy. In a production environment, it is recommendable to register a ",(0,n.kt)("inlineCode",{parentName:"p"},"WsInboundTransport()")," for Alice and a ",(0,n.kt)("inlineCode",{parentName:"p"},"WsOutboundTransport()")," for the mediator. These WebSocket transports allow the mediator to push messages to Alice instead of having Alice pull messages from the mediator repeatedly.")),(0,n.kt)("h3",{id:"1-mediator-setup"},"1. Mediator setup"),(0,n.kt)("p",null,"The first part shows how to set up a mediator agent. Generally, there are two ways to do that: deploying it from scratch or using a third-party mediator. This section focuses on the former approach, setting up the mediator from scratch."),(0,n.kt)("p",null,"The mediator is set up on port 3001 and creates an Out-of-Band invitation that allows multiple other agents to connect to the mediator. Configuring an agent as a mediator demands utilizing the ",(0,n.kt)("inlineCode",{parentName:"p"},"MediatorModule"),". In this example, the ",(0,n.kt)("inlineCode",{parentName:"p"},"autoAcceptMediationRequests")," flag is set to true to accept mediation requests automatically."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers mediator-setup.ts section-1",showLineNumbers:!0,"mediator-setup.ts":!0,"section-1":!0},"")),(0,n.kt)("h3",{id:"2-recipient-alice-setup"},"2. Recipient (Alice) setup"),(0,n.kt)("p",null,"The second part shows how to use a mediator. Becoming a recipient of a mediator requires using the ",(0,n.kt)("inlineCode",{parentName:"p"},"MediationRecipientModule"),". The setup is the same whether you use your own or a third-party mediator."),(0,n.kt)("p",null,"The easiest way to set everything up is by configuring the ",(0,n.kt)("inlineCode",{parentName:"p"},"MediationRecipientModule")," to connect to the mediator on agent startup. This can be done by constructing the module with the ",(0,n.kt)("inlineCode",{parentName:"p"},"mediatorInvitationUrl"),". You can get the mediatorInvitationUrl either from ",(0,n.kt)("a",{parentName:"p",href:"/guides/0.5/tutorials/mediation#1-mediator-setup"},"part one")," by running a mediator yourself or from a public mediator such as the Animo-mediator. The following snippet uses the latter approach."),(0,n.kt)("p",null,"The ",(0,n.kt)("inlineCode",{parentName:"p"},"ConnectionsModule")," used in this snippet serves the sole purpose of automatically accepting connections and thus simplifying setup."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers mediation-recipient.ts section-1",showLineNumbers:!0,"mediation-recipient.ts":!0,"section-1":!0},"")),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"In case you are using a third-party mediator and cannot create an invitationUrl, it is common practice for mediators to provide an endpoint from which the invitationUrl can be fetched.")),(0,n.kt)("h3",{id:"3-message-exchange"},"3. Message exchange"),(0,n.kt)("p",null,"This section explains the message exchange between agents when a mediator is in place. The process is illustrated using the diagram below. Parts ",(0,n.kt)("a",{parentName:"p",href:"/guides/0.5/tutorials/mediation#1-mediator-setup"},"one")," and ",(0,n.kt)("a",{parentName:"p",href:"/guides/0.5/tutorials/mediation#2-recipient-alice-setup"},"two")," of this tutorial showed how to set up and use a mediator. If the ",(0,n.kt)("inlineCode",{parentName:"p"},"mediatorInvitationUrl")," is specified when constructing the ",(0,n.kt)("inlineCode",{parentName:"p"},"MediationRecipientModule")," (as in ",(0,n.kt)("a",{parentName:"p",href:"/guides/0.5/tutorials/mediation#2-recipient-alice-setup"},"Part two"),"), the mediation request and grant ",(0,n.kt)("em",{parentName:"p"},"(1-2)")," between Alice and the mediator will be performed automatically when Alice's agent is started."),(0,n.kt)("p",null,"If Alice establishes a connection with another fictional agent, say, Bob's agent, who is not using any mediators ",(0,n.kt)("em",{parentName:"p"},"(3-6)"),". (Connection establishment is no different when a mediator is involved). Then, messages from Alice to Bob ",(0,n.kt)("em",{parentName:"p"},"(7)")," are routed directly to Bob, while messages from Bob to Alice ",(0,n.kt)("em",{parentName:"p"},"(8-9)")," are routed through the intermediary."),(0,n.kt)("mermaid",{value:"sequenceDiagram\n autonumber\n participant Alice\n participant Mediator\n participant Bob\n Note over Mediator: Start\n Note over Alice: Start\n Alice->>Mediator: Request Mediation\n Mediator->>Alice: Grant Mediation\n Note over Bob: Start\n Alice->>Alice: CreateInvitation\n Alice --\x3e Bob: (Send Invitation to Bob)\n Bob->>Bob: RecieveInvitation\n Alice->>Bob: WaitForConnection\n Alice->>Bob: SendMessage Alice->Bob\n Bob->>Mediator: SendMessage Bob->Alice (Mediator)\n Mediator->>Alice: ForwardMessage Bob->Alice (Mediator)"}),(0,n.kt)("h3",{id:"useful-resources"},"Useful resources"),(0,n.kt)("p",null,"For more information about mediator refer to:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/hyperledger/aries-rfcs/tree/main/features/0211-route-coordination"},"Aries Mediator Coordination Protocol")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://indicio-tech.github.io/mediator"},"Indicio Public Mediator")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/animo/animo-mediator"},"Setup your own Credo Mediator")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0046-mediators-and-relays/README.md#aries-rfc-0046-mediators-and-relays"},"Aries RFC 0046: Mediators and Relays"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/60053357.3a4af8f4.js b/assets/js/60053357.3a4af8f4.js deleted file mode 100644 index 979c23b8..00000000 --- a/assets/js/60053357.3a4af8f4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[6266],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var i=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,i)}return a}function r(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=i.createContext({}),d=function(e){var t=i.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},u=function(e){var t=d(e.components);return i.createElement(l.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},c=i.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=d(a),c=n,h=p["".concat(l,".").concat(c)]||p[c]||m[c]||o;return a?i.createElement(h,r(r({ref:t},u),{},{components:a})):i.createElement(h,r({ref:t},u))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,r=new Array(o);r[0]=c;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:n,r[1]=s;for(var d=2;d{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>m,frontMatter:()=>o,metadata:()=>s,toc:()=>d});var i=a(7462),n=(a(7294),a(3905));const o={},r="Mediation",s={unversionedId:"tutorials/mediation",id:"tutorials/mediation",title:"Mediation",description:"This section assumes that you have:",source:"@site/guides/tutorials/mediation.md",sourceDirName:"tutorials",slug:"/tutorials/mediation",permalink:"/guides/0.5/tutorials/mediation",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Issue a credential",permalink:"/guides/0.5/tutorials/issue-a-credential"},next:{title:"Using PostgreSQL as Database for Indy SDK in Node.js",permalink:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/"}},l={},d=[{value:"What is a mediator, and Why should I use one?",id:"what-is-a-mediator-and-why-should-i-use-one",level:3},{value:"1. Mediator setup",id:"1-mediator-setup",level:3},{value:"2. Recipient (Alice) setup",id:"2-recipient-alice-setup",level:3},{value:"3. Message exchange",id:"3-message-exchange",level:3},{value:"Useful resources",id:"useful-resources",level:3}],u={toc:d},p="wrapper";function m(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,i.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"mediation"},"Mediation"),(0,n.kt)("blockquote",null,(0,n.kt)("p",{parentName:"blockquote"},"This section assumes that you have:"),(0,n.kt)("ol",{parentName:"blockquote"},(0,n.kt)("li",{parentName:"ol"},"Set up a ",(0,n.kt)("a",{parentName:"li",href:"../getting-started/installation"},"valid environment")," for development"),(0,n.kt)("li",{parentName:"ol"},"Basic knowledge of the required fields in the ",(0,n.kt)("a",{parentName:"li",href:"./agent-config"},"agent\nconfig"))),(0,n.kt)("p",{parentName:"blockquote"},"The agent setup varies depending on your target environment, React Native or Node.js.",(0,n.kt)("br",{parentName:"p"}),"\n","This tutorial assumes a Node.js environment for all agents (Alice, Bob, Meditator).")),(0,n.kt)("p",null,"This tutorial shows how to set up a mediator, how to configure an agent to use a mediator, and how agents exchange messages with a mediator in place.\nConcepts are explained in isolation:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/guides/0.5/tutorials/mediation#1-mediator-setup"},"First"),", it is shown how to set up a mediator."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/guides/0.5/tutorials/mediation#2-recipient-alice-setup"},"Second"),", it is demonstrated how to use a mediator."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/guides/0.5/tutorials/mediation#3-message-exchange"},"Third"),", the message exchange between agents with a mediator in place is explained.")),(0,n.kt)("h3",{id:"what-is-a-mediator-and-why-should-i-use-one"},"What is a mediator, and Why should I use one?"),(0,n.kt)("p",null,"A mediator is just a special type of agent."),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"\"When we describe agent-to-agent communication, it is convenient to think of an interaction only in terms of Alice and Bob and their agents. We say things like: \"Alice's agent sends a message to Bob's agent\" -- or perhaps \"Alice's edge agent sends a message to Bob's cloud agent, which forwards it to Bob's edge agent\"."),(0,n.kt)("p",{parentName:"admonition"},"Such statements adopt a useful level of abstraction--one that's highly recommended for most discussions. However, they make a number of simplifications. By modeling the roles of mediators and relays in routing, we can support routes that use multiple transports, routes that are not fully known (or knowable) to the sender, routes that pass through mix networks, and other advanced and powerful concepts.\"",(0,n.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0046-mediators-and-relays/README.md#aries-rfc-0046-mediators-and-relays"},"Aries RFC 0046: Mediators and Relays"))),(0,n.kt)("p",null,'A practical example where the use of mediators is beneficial can be found in a mobile environment. A mobile agent, aka. your mobile wallet, receives messages from other agents. Technically, sending HTTP messages to a mobile agent is impossible because the agent does not have a public IP. As you have probably seen in previous examples, a workaround for this scenario is to use ngrok. Another option is to use a mediator. When an agent is configured to use a mediator, messages to that agent are routed through the mediator and from there to its destination. Thus, a mobile agent can use a "public" mediator to receive messages on its behalf and poll them from time to time.'),(0,n.kt)("p",null,"This is just one example of how a mediator can be used. Further resources about mediators can be found ",(0,n.kt)("a",{parentName:"p",href:"/guides/0.5/tutorials/mediation#useful-resources"},"here"),"."),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"With mediators, WebSockets come in handy. In a production environment, it is recommendable to register a ",(0,n.kt)("inlineCode",{parentName:"p"},"WsInboundTransport()")," for Alice and a ",(0,n.kt)("inlineCode",{parentName:"p"},"WsOutboundTransport()")," for the mediator. These WebSocket transports allow the mediator to push messages to Alice instead of having Alice pull messages from the mediator repeatedly.")),(0,n.kt)("h3",{id:"1-mediator-setup"},"1. Mediator setup"),(0,n.kt)("p",null,"The first part shows how to set up a mediator agent. Generally, there are two ways to do that: deploying it from scratch or using a third-party mediator. This section focuses on the former approach, setting up the mediator from scratch."),(0,n.kt)("p",null,"The mediator is set up on port 3001 and creates an Out-of-Band invitation that allows multiple other agents to connect to the mediator. Configuring an agent as a mediator demands utilizing the ",(0,n.kt)("inlineCode",{parentName:"p"},"MediatorModule"),". In this example, the ",(0,n.kt)("inlineCode",{parentName:"p"},"autoAcceptMediationRequests")," flag is set to true to accept mediation requests automatically."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers mediator-setup.ts section-1",showLineNumbers:!0,"mediator-setup.ts":!0,"section-1":!0},"")),(0,n.kt)("h3",{id:"2-recipient-alice-setup"},"2. Recipient (Alice) setup"),(0,n.kt)("p",null,"The second part shows how to use a mediator. Becoming a recipient of a mediator requires using the ",(0,n.kt)("inlineCode",{parentName:"p"},"MediationRecipientModule"),". The setup is the same whether you use your own or a third-party mediator."),(0,n.kt)("p",null,"The easiest way to set everything up is by configuring the ",(0,n.kt)("inlineCode",{parentName:"p"},"MediationRecipientModule")," to connect to the mediator on agent startup. This can be done by constructing the module with the ",(0,n.kt)("inlineCode",{parentName:"p"},"mediatorInvitationUrl"),". You can get the mediatorInvitationUrl either from ",(0,n.kt)("a",{parentName:"p",href:"/guides/0.5/tutorials/mediation#1-mediator-setup"},"part one")," by running a mediator yourself or from a public mediator such as the Animo-mediator. The following snippet uses the latter approach."),(0,n.kt)("p",null,"The ",(0,n.kt)("inlineCode",{parentName:"p"},"ConnectionsModule")," used in this snippet serves the sole purpose of automatically accepting connections and thus simplifying setup."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers mediation-recipient.ts section-1",showLineNumbers:!0,"mediation-recipient.ts":!0,"section-1":!0},"")),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"In case you are using a third-party mediator and cannot create an invitationUrl, it is common practice for mediators to provide an endpoint from which the invitationUrl can be fetched.")),(0,n.kt)("h3",{id:"3-message-exchange"},"3. Message exchange"),(0,n.kt)("p",null,"This section explains the message exchange between agents when a mediator is in place. The process is illustrated using the diagram below. Parts ",(0,n.kt)("a",{parentName:"p",href:"/guides/0.5/tutorials/mediation#1-mediator-setup"},"one")," and ",(0,n.kt)("a",{parentName:"p",href:"/guides/0.5/tutorials/mediation#2-recipient-alice-setup"},"two")," of this tutorial showed how to set up and use a mediator. If the ",(0,n.kt)("inlineCode",{parentName:"p"},"mediatorInvitationUrl")," is specified when constructing the ",(0,n.kt)("inlineCode",{parentName:"p"},"MediationRecipientModule")," (as in ",(0,n.kt)("a",{parentName:"p",href:"/guides/0.5/tutorials/mediation#2-recipient-alice-setup"},"Part two"),"), the mediation request and grant ",(0,n.kt)("em",{parentName:"p"},"(1-2)")," between Alice and the mediator will be performed automatically when Alice's agent is started."),(0,n.kt)("p",null,"If Alice establishes a connection with another fictional agent, say, Bob's agent, who is not using any mediators ",(0,n.kt)("em",{parentName:"p"},"(3-6)"),". (Connection establishment is no different when a mediator is involved). Then, messages from Alice to Bob ",(0,n.kt)("em",{parentName:"p"},"(7)")," are routed directly to Bob, while messages from Bob to Alice ",(0,n.kt)("em",{parentName:"p"},"(8-9)")," are routed through the intermediary."),(0,n.kt)("mermaid",{value:"sequenceDiagram\n autonumber\n participant Alice\n participant Mediator\n participant Bob\n Note over Mediator: Start\n Note over Alice: Start\n Alice->>Mediator: Request Mediation\n Mediator->>Alice: Grant Mediation\n Note over Bob: Start\n Alice->>Alice: CreateInvitation\n Alice --\x3e Bob: (Send Invitation to Bob)\n Bob->>Bob: RecieveInvitation\n Alice->>Bob: WaitForConnection\n Alice->>Bob: SendMessage Alice->Bob\n Bob->>Mediator: SendMessage Bob->Alice (Mediator)\n Mediator->>Alice: ForwardMessage Bob->Alice (Mediator)"}),(0,n.kt)("h3",{id:"useful-resources"},"Useful resources"),(0,n.kt)("p",null,"For more information about mediator refer to:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/hyperledger/aries-rfcs/tree/main/features/0211-route-coordination"},"Aries Mediator Coordination Protocol")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://indicio-tech.github.io/mediator"},"Indicio Public Mediator")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/animo/animo-mediator"},"Setup your own Credo Mediator")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/hyperledger/aries-rfcs/blob/main/concepts/0046-mediators-and-relays/README.md#aries-rfc-0046-mediators-and-relays"},"Aries RFC 0046: Mediators and Relays"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6414033c.82b49c2d.js b/assets/js/6414033c.82b49c2d.js new file mode 100644 index 00000000..625b808b --- /dev/null +++ b/assets/js/6414033c.82b49c2d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[4226],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),l=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),d=l(r),f=a,m=d["".concat(s,".").concat(f)]||d[f]||p[f]||o;return r?n.createElement(m,i(i({ref:t},u),{},{components:r})):n.createElement(m,i({ref:t},u))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=f;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[d]="string"==typeof e?e:a,i[1]=c;for(var l=2;l{r.d(t,{Z:()=>g});var n=r(7294),a=r(6010),o=r(3438),i=r(9960),c=r(3919),s=r(5999);const l={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){let{href:t,children:r}=e;return n.createElement(i.Z,{href:t,className:(0,a.Z)("card padding--lg",l.cardContainer)},r)}function d(e){let{href:t,icon:r,title:o,description:i}=e;return n.createElement(u,{href:t},n.createElement("h2",{className:(0,a.Z)("text--truncate",l.cardTitle),title:o},r," ",o),i&&n.createElement("p",{className:(0,a.Z)("text--truncate",l.cardDescription),title:i},i))}function p(e){let{item:t}=e;const r=(0,o.Wl)(t);return r?n.createElement(d,{href:r,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:(0,s.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function f(e){let{item:t}=e;const r=(0,c.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",a=(0,o.xz)(t.docId??void 0);return n.createElement(d,{href:t.href,icon:r,title:t.label,description:a?.description})}function m(e){let{item:t}=e;switch(t.type){case"link":return n.createElement(f,{item:t});case"category":return n.createElement(p,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function y(e){let{className:t}=e;const r=(0,o.jA)();return n.createElement(g,{items:r.items,className:t})}function g(e){const{items:t,className:r}=e;if(!t)return n.createElement(y,e);const i=(0,o.MN)(t);return n.createElement("section",{className:(0,a.Z)("row",r)},i.map(((e,t)=>n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(m,{item:e})))))}},7574:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>f,frontMatter:()=>i,metadata:()=>s,toc:()=>u});var n=r(7462),a=(r(7294),r(3905)),o=r(2991);const i={},c="Supported Features",s={unversionedId:"features/index",id:"features/index",title:"Supported Features",description:"This section tries to list all the standards and features that are supported by Credo.",source:"@site/guides/features/index.md",sourceDirName:"features",slug:"/features/",permalink:"/guides/0.5/features/",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Platform and Environment",permalink:"/guides/0.5/concepts/platform-and-environment"},next:{title:"Hyperledger Aries and Aries Interop Profile",permalink:"/guides/0.5/features/aries"}},l={},u=[],d={toc:u},p="wrapper";function f(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"supported-features"},"Supported Features"),(0,a.kt)("p",null,"This section tries to list all the standards and features that are supported by Credo."),(0,a.kt)(o.Z,{mdxType:"DocCardList"}))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/67da112e.8bb35d6e.js b/assets/js/67da112e.8bb35d6e.js new file mode 100644 index 00000000..e79015e5 --- /dev/null +++ b/assets/js/67da112e.8bb35d6e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[5666],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>c});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({}),s=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=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},g=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),m=s(n),g=o,c=m["".concat(p,".").concat(g)]||m[g]||u[g]||i;return n?a.createElement(c,r(r({ref:t},d),{},{components:n})):a.createElement(c,r({ref:t},d))}));function c(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,r=new Array(i);r[0]=g;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:o,r[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var a=n(7462),o=(n(7294),n(3905));const i={},r="Agent Config",l={unversionedId:"tutorials/agent-config/index",id:"tutorials/agent-config/index",title:"Agent Config",description:"The Credo agent is very extensible. These are all the configuration options with a short description:",source:"@site/guides/tutorials/agent-config/index.md",sourceDirName:"tutorials/agent-config",slug:"/tutorials/agent-config/",permalink:"/guides/0.5/tutorials/agent-config/",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Tutorials",permalink:"/guides/0.5/tutorials/"},next:{title:"Logging",permalink:"/guides/0.5/tutorials/agent-config/logging"}},p={},s=[{value:"label*",id:"label",level:2},{value:"walletConfig",id:"walletconfig",level:2},{value:"walletConfig.id*",id:"walletconfigid",level:3},{value:"walletConfig.key*",id:"walletconfigkey",level:3},{value:"walletConfig.keyDerivationMethod",id:"walletconfigkeyderivationmethod",level:3},{value:"walletConfig.storage",id:"walletconfigstorage",level:3},{value:"endpoints",id:"endpoints",level:2},{value:"logger",id:"logger",level:2},{value:"didCommMimeType",id:"didcommmimetype",level:2},{value:"useDidSovPrefixWhereAllowed",id:"usedidsovprefixwhereallowed",level:2},{value:"useDidKeyInProtocols",id:"usedidkeyinprotocols",level:2},{value:"connectionImageUrl",id:"connectionimageurl",level:2},{value:"autoUpdateStorageOnStartup",id:"autoupdatestorageonstartup",level:2}],d={toc:s},m="wrapper";function u(e){let{components:t,...n}=e;return(0,o.kt)(m,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"agent-config"},"Agent Config"),(0,o.kt)("p",null,"The Credo agent is very extensible. These are all the configuration options with a short description:"),(0,o.kt)("h2",{id:"label"},(0,o.kt)("inlineCode",{parentName:"h2"},"label"),"*"),(0,o.kt)("p",null,"The label is seen by other users when creating a connection. This should not\nbe used as a base for authenticity, as it is entirely up to the user to\nset this."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Type"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"string")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"label: 'my-demo-agent'\n")),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"walletconfig"},(0,o.kt)("inlineCode",{parentName:"h2"},"walletConfig")),(0,o.kt)("p",null,"Configuration for the setup of the wallet. Including this in the agent\nconfiguration makes it possible that, when initializing the agent, the wallet\nwill also be initialized. When an application requires the agent without an\ninitialized wallet for any reason, this can be omitted and later on the wallet\ncan be initialized separately."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Type"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"WalletConfig")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"import { KeyDerivationMethod } from '@credo-ts/core'\n\nwalletConfig: {\n id: 'foo',\n key: 'testkey000000000000000000000',\n keyDerivationMethod: KeyDerivationMethod.Argon2IMod,\n storage: {\n type: 'postgres_storage',\n ... // depends on the storage type\n }\n}\n")),(0,o.kt)("h3",{id:"walletconfigid"},(0,o.kt)("inlineCode",{parentName:"h3"},"walletConfig.id"),"*"),(0,o.kt)("p",null,"Identifier string. Using another value here will open a new wallet."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Type"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"string")),(0,o.kt)("h3",{id:"walletconfigkey"},(0,o.kt)("inlineCode",{parentName:"h3"},"walletConfig.key"),"*"),(0,o.kt)("p",null,"Key to unlock the wallet with. This value MUST be kept as a secret and should\nbe seem like a password."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Type"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"string")),(0,o.kt)("h3",{id:"walletconfigkeyderivationmethod"},(0,o.kt)("inlineCode",{parentName:"h3"},"walletConfig.keyDerivationMethod")),(0,o.kt)("p",null,"The method used for key derivation of the\n",(0,o.kt)("a",{parentName:"p",href:"#walletconfigkey"},(0,o.kt)("inlineCode",{parentName:"a"},"walletConfig.key")),"."),(0,o.kt)("p",null,"When using ",(0,o.kt)("inlineCode",{parentName:"p"},"KeyDerivationMethod.Raw"),", the key must be a base58-encoded\n",(0,o.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/ChaCha20-Poly1305"},"ChaCha20-Poly1305")," key."),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"For the advanced readers\n",(0,o.kt)("a",{parentName:"p",href:"https://www.password-hashing.net/argon2-specs.pdf"},"here")," is the\nspecification of Argon2.")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Type"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"enum KeyDerivationMethod")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Default"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"KeyDerivationMethod.Argon2IMod")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Members"),":"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"KeyDerivationMethod.Argon2IMod"))),(0,o.kt)("p",null,"\xa0","\xa0","\xa0"," uses Argon2I modular (most secure option, but slower)"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"KeyDerivationMethod.Argon2Int"))),(0,o.kt)("p",null,"\xa0","\xa0","\xa0"," uses Argon2 integer (less secure, but faster)"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"KeyDerivationMethod.Raw"))),(0,o.kt)("p",null,"\xa0","\xa0","\xa0"," uses no derivation method and the key must be a base58-encoded ",(0,o.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/ChaCha20-Poly1305"},"ChaCha20-Poly1305")," key."),(0,o.kt)("h3",{id:"walletconfigstorage"},(0,o.kt)("inlineCode",{parentName:"h3"},"walletConfig.storage")),(0,o.kt)("p",null,"Specify which storage is being used for the wallet. The default is an SQLite\ndatabase, but a Postgres database could be used as well."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Type"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"object")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Default"),": An SQLite database"),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"endpoints"},(0,o.kt)("inlineCode",{parentName:"h2"},"endpoints")),(0,o.kt)("p",null,"A list of endpoints (schema + host + port) used for invitations and where other\nagents might reach you. This could be used to host a website that would\nredirect, for example with deep linking, to a wallet where the invitation can be\naccepted."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Type"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"string")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"endpoints: ['https://example.org:3000']\n")),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"logger"},(0,o.kt)("inlineCode",{parentName:"h2"},"logger")),(0,o.kt)("p",null,"A logger instance that implements the ",(0,o.kt)("inlineCode",{parentName:"p"},"Logger")," interface. This can be extremely\nhelpful for debugging. Credo exposes a ",(0,o.kt)("inlineCode",{parentName:"p"},"ConsoleLogger"),"\nthat can be used for simple logs. See ",(0,o.kt)("a",{parentName:"p",href:"./logging"},"Logging")," for more details on creating your own logger instance."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Type"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"Logger")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"import { ConsoleLogger, LogLevel } from '@credo-ts/core'\n\nlogger: new ConsoleLogger(LogLevel.info)\n")),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"didcommmimetype"},(0,o.kt)("inlineCode",{parentName:"h2"},"didCommMimeType")),(0,o.kt)("p",null,"The mime-type used for sending and receiving messages. ",(0,o.kt)("inlineCode",{parentName:"p"},"application/jwe")," and\n",(0,o.kt)("inlineCode",{parentName:"p"},"application/json")," are used as fallback but are less desirable as they are\nmuch more ambiguous in their specification."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Type"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"enum DidCommMimeType")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Default"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"DidCommMimeType.V1")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Members"),":"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"DidCommMimeType.V0"))),(0,o.kt)("p",null,"\xa0","\xa0","\xa0",' "application/ssi-agent-wire"'),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"DidCommMimeType.V1"))),(0,o.kt)("p",null,"\xa0","\xa0","\xa0",' "application/didcomm-envelope-enc"'),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"import { DidCommMimeType } from '@credo-ts/core'\n\ndidCommMimeType: DidCommMimeType.V1\n")),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"usedidsovprefixwhereallowed"},(0,o.kt)("inlineCode",{parentName:"h2"},"useDidSovPrefixWhereAllowed")),(0,o.kt)("p",null,"Whether to emit the legacy did:sov prefix ",(0,o.kt)("inlineCode",{parentName:"p"},"did:sov:BzCbsNYhMrjHiqZDTUASHg;spec")," in the ",(0,o.kt)("inlineCode",{parentName:"p"},"@type")," of messages for messages that allow it. A message can allow emitting the legacy prefix by setting the ",(0,o.kt)("inlineCode",{parentName:"p"},"allowDidSovPrefix")," on the message class. This is the case for all core messages that have been defined before the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/aries-rfcs/blob/main/features/0348-transition-msg-type-to-https/README.md"},"Migration to ",(0,o.kt)("inlineCode",{parentName:"a"},"https://didcomm.org")," message type"),", to allow for the best possible interoperability with other agents."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Type"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"boolean")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Default"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"false")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"useDidSovPrefixWhereAllowed: true\n")),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"usedidkeyinprotocols"},(0,o.kt)("inlineCode",{parentName:"h2"},"useDidKeyInProtocols")),(0,o.kt)("p",null,"Whether to use ",(0,o.kt)("inlineCode",{parentName:"p"},"did:key")," in protocols by default as defined in ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/aries-rfcs/blob/main/features/0360-use-did-key/README.md"},"RFC 0360: did:key Usage"),". Adopting this RFC can break interop with agents that haven't adopted this RFC yet. The framework does it best to automatically detect whether the other agent supports ",(0,o.kt)("inlineCode",{parentName:"p"},"did:key"),", however in some cases we can't determine this. In those cases this parameter can be used to force the framework to use ",(0,o.kt)("inlineCode",{parentName:"p"},"did:key")," or not."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Type"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"boolean")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Default"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"true")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"useDidKeyInProtocols: true\n")),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"connectionimageurl"},(0,o.kt)("inlineCode",{parentName:"h2"},"connectionImageUrl")),(0,o.kt)("p",null,"A URL to an image used so that other agents can display this. Like the\n",(0,o.kt)("a",{parentName:"p",href:"#label"},(0,o.kt)("inlineCode",{parentName:"a"},"Label"))," this is completely up to the user to define\nthis. It MUST not be used got any base of authenticity."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Type"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"string")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"connectionImageUrl: 'https://picsum.photos/200'\n")),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"autoupdatestorageonstartup"},(0,o.kt)("inlineCode",{parentName:"h2"},"autoUpdateStorageOnStartup")),(0,o.kt)("p",null,"Whether the storage should automatically be updated when a newer version of\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/openwallet-foundation/credo-ts"},"Credo")," is used."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Type"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"boolean")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Default"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"false")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"autoUpdateStorageOnStartup: true\n")),(0,o.kt)("hr",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/67da112e.e9e800dd.js b/assets/js/67da112e.e9e800dd.js deleted file mode 100644 index 2ca544e6..00000000 --- a/assets/js/67da112e.e9e800dd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[5666],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>c});var a=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 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 r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=a.createContext({}),s=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=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},m="mdxType",g={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,i=e.mdxType,o=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),m=s(n),u=i,c=m["".concat(p,".").concat(u)]||m[u]||g[u]||o;return n?a.createElement(c,r(r({ref:t},d),{},{components:n})):a.createElement(c,r({ref:t},d))}));function c(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,r=new Array(o);r[0]=u;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:i,r[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>r,default:()=>g,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var a=n(7462),i=(n(7294),n(3905));const o={},r="Agent Config",l={unversionedId:"tutorials/agent-config/index",id:"tutorials/agent-config/index",title:"Agent Config",description:"The Credo agent is very extensible. These are all the configuration options with a short description:",source:"@site/guides/tutorials/agent-config/index.md",sourceDirName:"tutorials/agent-config",slug:"/tutorials/agent-config/",permalink:"/guides/0.5/tutorials/agent-config/",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Tutorials",permalink:"/guides/0.5/tutorials/"},next:{title:"Logging",permalink:"/guides/0.5/tutorials/agent-config/logging"}},p={},s=[{value:"label*",id:"label",level:2},{value:"walletConfig",id:"walletconfig",level:2},{value:"walletConfig.id*",id:"walletconfigid",level:3},{value:"walletConfig.key*",id:"walletconfigkey",level:3},{value:"walletConfig.keyDerivationMethod",id:"walletconfigkeyderivationmethod",level:3},{value:"walletConfig.storage",id:"walletconfigstorage",level:3},{value:"endpoints",id:"endpoints",level:2},{value:"logger",id:"logger",level:2},{value:"didCommMimeType",id:"didcommmimetype",level:2},{value:"useDidSovPrefixWhereAllowed",id:"usedidsovprefixwhereallowed",level:2},{value:"useDidKeyInProtocols",id:"usedidkeyinprotocols",level:2},{value:"connectionImageUrl",id:"connectionimageurl",level:2},{value:"autoUpdateStorageOnStartup",id:"autoupdatestorageonstartup",level:2}],d={toc:s},m="wrapper";function g(e){let{components:t,...n}=e;return(0,i.kt)(m,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"agent-config"},"Agent Config"),(0,i.kt)("p",null,"The Credo agent is very extensible. These are all the configuration options with a short description:"),(0,i.kt)("h2",{id:"label"},(0,i.kt)("inlineCode",{parentName:"h2"},"label"),"*"),(0,i.kt)("p",null,"The label is seen by other users when creating a connection. This should not\nbe used as a base for authenticity, as it is entirely up to the user to\nset this."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Type"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"string")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"label: 'my-demo-agent'\n")),(0,i.kt)("hr",null),(0,i.kt)("h2",{id:"walletconfig"},(0,i.kt)("inlineCode",{parentName:"h2"},"walletConfig")),(0,i.kt)("p",null,"Configuration for the setup of the wallet. Including this in the agent\nconfiguration makes it possible that, when initializing the agent, the wallet\nwill also be initialized. When an application requires the agent without an\ninitialized wallet for any reason, this can be omitted and later on the wallet\ncan be initialized separately."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Type"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"WalletConfig")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"import { KeyDerivationMethod } from '@aries-framework/core'\n\nwalletConfig: {\n id: 'foo',\n key: 'testkey000000000000000000000',\n keyDerivationMethod: KeyDerivationMethod.Argon2IMod,\n storage: {\n type: 'postgres_storage',\n ... // depends on the storage type\n }\n}\n")),(0,i.kt)("h3",{id:"walletconfigid"},(0,i.kt)("inlineCode",{parentName:"h3"},"walletConfig.id"),"*"),(0,i.kt)("p",null,"Identifier string. Using another value here will open a new wallet."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Type"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"string")),(0,i.kt)("h3",{id:"walletconfigkey"},(0,i.kt)("inlineCode",{parentName:"h3"},"walletConfig.key"),"*"),(0,i.kt)("p",null,"Key to unlock the wallet with. This value MUST be kept as a secret and should\nbe seem like a password."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Type"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"string")),(0,i.kt)("h3",{id:"walletconfigkeyderivationmethod"},(0,i.kt)("inlineCode",{parentName:"h3"},"walletConfig.keyDerivationMethod")),(0,i.kt)("p",null,"The method used for key derivation of the\n",(0,i.kt)("a",{parentName:"p",href:"#walletconfigkey"},(0,i.kt)("inlineCode",{parentName:"a"},"walletConfig.key")),"."),(0,i.kt)("p",null,"When using ",(0,i.kt)("inlineCode",{parentName:"p"},"KeyDerivationMethod.Raw"),", it is strongly recommended to get the raw\nkey via\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-sdk/blob/1c7096dd95d0fd53881070f66907df4b9e61b874/libindy/src/api/wallet.rs#L560"},(0,i.kt)("inlineCode",{parentName:"a"},"indy_generate_wallet_key")),".\nIf you really must implement your own key generation, it is required to be a\nbase58-encoded\n",(0,i.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/ChaCha20-Poly1305"},"ChaCha20-Poly1305")," key."),(0,i.kt)("blockquote",null,(0,i.kt)("p",{parentName:"blockquote"},"For the advanced readers\n",(0,i.kt)("a",{parentName:"p",href:"https://www.password-hashing.net/argon2-specs.pdf"},"here")," is the\nspecification of Argon2.")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Type"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"enum KeyDerivationMethod")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Default"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"KeyDerivationMethod.Argon2IMod")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Members"),":"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("inlineCode",{parentName:"strong"},"KeyDerivationMethod.Argon2IMod"))),(0,i.kt)("p",null,"\xa0","\xa0","\xa0"," uses Argon2I modular (most secure option, but slower)"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("inlineCode",{parentName:"strong"},"KeyDerivationMethod.Argon2Int"))),(0,i.kt)("p",null,"\xa0","\xa0","\xa0"," uses Argon2 integer (less secure, but faster)"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("inlineCode",{parentName:"strong"},"KeyDerivationMethod.Raw"))),(0,i.kt)("p",null,"\xa0","\xa0","\xa0"," uses no derivation method.\nIt is recommended to use the\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-sdk/blob/1c7096dd95d0fd53881070f66907df4b9e61b874/libindy/src/api/wallet.rs#L560"},(0,i.kt)("inlineCode",{parentName:"a"},"indy_generate_wallet_key")),"\nfor key generation."),(0,i.kt)("h3",{id:"walletconfigstorage"},(0,i.kt)("inlineCode",{parentName:"h3"},"walletConfig.storage")),(0,i.kt)("p",null,"Specify which storage is being used for the wallet. The default is an SQLite\ndatabase, but a Postgres database could be used as well."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Type"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"object")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Default"),": An SQLite database"),(0,i.kt)("hr",null),(0,i.kt)("h2",{id:"endpoints"},(0,i.kt)("inlineCode",{parentName:"h2"},"endpoints")),(0,i.kt)("p",null,"A list of endpoints (schema + host + port) used for invitations and where other\nagents might reach you. This could be used to host a website that would\nredirect, for example with deep linking, to a wallet where the invitation can be\naccepted."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Type"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"string")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"endpoints: ['https://example.org:3000']\n")),(0,i.kt)("hr",null),(0,i.kt)("h2",{id:"logger"},(0,i.kt)("inlineCode",{parentName:"h2"},"logger")),(0,i.kt)("p",null,"A logger instance that implements the ",(0,i.kt)("inlineCode",{parentName:"p"},"Logger")," interface. This can be extremely\nhelpful for debugging. Credo exposes a ",(0,i.kt)("inlineCode",{parentName:"p"},"ConsoleLogger"),"\nthat can be used for simple logs. See ",(0,i.kt)("a",{parentName:"p",href:"./logging"},"Logging")," for more details on creating your own logger instance."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Type"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"Logger")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"import { ConsoleLogger, LogLevel } from '@credo-ts/core'\n\nlogger: new ConsoleLogger(LogLevel.info)\n")),(0,i.kt)("hr",null),(0,i.kt)("h2",{id:"didcommmimetype"},(0,i.kt)("inlineCode",{parentName:"h2"},"didCommMimeType")),(0,i.kt)("p",null,"The mime-type used for sending and receiving messages. ",(0,i.kt)("inlineCode",{parentName:"p"},"application/jwe")," and\n",(0,i.kt)("inlineCode",{parentName:"p"},"application/json")," are used as fallback but are less desirable as they are\nmuch more ambiguous in their specification."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Type"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"enum DidCommMimeType")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Default"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"DidCommMimeType.V1")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Members"),":"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("inlineCode",{parentName:"strong"},"DidCommMimeType.V0"))),(0,i.kt)("p",null,"\xa0","\xa0","\xa0",' "application/ssi-agent-wire"'),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("inlineCode",{parentName:"strong"},"DidCommMimeType.V1"))),(0,i.kt)("p",null,"\xa0","\xa0","\xa0",' "application/didcomm-envelope-enc"'),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"import { DidCommMimeType } from '@credo-ts/core'\n\ndidCommMimeType: DidCommMimeType.V1\n")),(0,i.kt)("hr",null),(0,i.kt)("h2",{id:"usedidsovprefixwhereallowed"},(0,i.kt)("inlineCode",{parentName:"h2"},"useDidSovPrefixWhereAllowed")),(0,i.kt)("p",null,"Whether to emit the legacy did:sov prefix ",(0,i.kt)("inlineCode",{parentName:"p"},"did:sov:BzCbsNYhMrjHiqZDTUASHg;spec")," in the ",(0,i.kt)("inlineCode",{parentName:"p"},"@type")," of messages for messages that allow it. A message can allow emitting the legacy prefix by setting the ",(0,i.kt)("inlineCode",{parentName:"p"},"allowDidSovPrefix")," on the message class. This is the case for all core messages that have been defined before the ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/aries-rfcs/blob/main/features/0348-transition-msg-type-to-https/README.md"},"Migration to ",(0,i.kt)("inlineCode",{parentName:"a"},"https://didcomm.org")," message type"),", to allow for the best possible interoperability with other agents."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Type"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"boolean")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Default"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"false")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"useDidSovPrefixWhereAllowed: true\n")),(0,i.kt)("hr",null),(0,i.kt)("h2",{id:"usedidkeyinprotocols"},(0,i.kt)("inlineCode",{parentName:"h2"},"useDidKeyInProtocols")),(0,i.kt)("p",null,"Whether to use ",(0,i.kt)("inlineCode",{parentName:"p"},"did:key")," in protocols by default as defined in ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/aries-rfcs/blob/main/features/0360-use-did-key/README.md"},"RFC 0360: did:key Usage"),". Adopting this RFC can break interop with agents that haven't adopted this RFC yet. The framework does it best to automatically detect whether the other agent supports ",(0,i.kt)("inlineCode",{parentName:"p"},"did:key"),", however in some cases we can't determine this. In those cases this parameter can be used to force the framework to use ",(0,i.kt)("inlineCode",{parentName:"p"},"did:key")," or not."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Type"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"boolean")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Default"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"true")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"useDidKeyInProtocols: true\n")),(0,i.kt)("hr",null),(0,i.kt)("h2",{id:"connectionimageurl"},(0,i.kt)("inlineCode",{parentName:"h2"},"connectionImageUrl")),(0,i.kt)("p",null,"A URL to an image used so that other agents can display this. Like the\n",(0,i.kt)("a",{parentName:"p",href:"#label"},(0,i.kt)("inlineCode",{parentName:"a"},"Label"))," this is completely up to the user to define\nthis. It MUST not be used got any base of authenticity."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Type"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"string")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"connectionImageUrl: 'https://picsum.photos/200'\n")),(0,i.kt)("hr",null),(0,i.kt)("h2",{id:"autoupdatestorageonstartup"},(0,i.kt)("inlineCode",{parentName:"h2"},"autoUpdateStorageOnStartup")),(0,i.kt)("p",null,"Whether the storage should automatically be updated when a newer version of\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/openwallet-foundation/credo-ts"},"Credo")," is used."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Type"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"boolean")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Default"),": ",(0,i.kt)("inlineCode",{parentName:"p"},"false")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript",metastring:'title="example"',title:'"example"'},"autoUpdateStorageOnStartup: true\n")),(0,i.kt)("hr",null))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6e4808e6.9e5dacb9.js b/assets/js/6e4808e6.8649b62c.js similarity index 62% rename from assets/js/6e4808e6.9e5dacb9.js rename to assets/js/6e4808e6.8649b62c.js index 40b3b0cc..30110558 100644 --- a/assets/js/6e4808e6.9e5dacb9.js +++ b/assets/js/6e4808e6.8649b62c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[1271],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});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 s(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 i=a.createContext({}),u=function(e){var t=a.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=u(e.components);return a.createElement(i.Provider,{value:t},e.children)},p="mdxType",d={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,i=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=u(n),m=r,f=p["".concat(i,".").concat(m)]||p[m]||d[m]||o;return n?a.createElement(f,s(s({ref:t},c),{},{components:n})):a.createElement(f,s({ref:t},c))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=m;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[p]="string"==typeof e?e:r,s[1]=l;for(var u=2;u{n.d(t,{Z:()=>s});var a=n(7294),r=n(6010);const o={tabItem:"tabItem_Ymn6"};function s(e){let{children:t,hidden:n,className:s}=e;return a.createElement("div",{role:"tabpanel",className:(0,r.Z)(o.tabItem,s),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>w});var a=n(7462),r=n(7294),o=n(6010),s=n(2466),l=n(6550),i=n(1980),u=n(7392),c=n(12);function p(e){return function(e){return r.Children.map(e,(e=>{if((0,r.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:r}}=e;return{value:t,label:n,attributes:a,default:r}}))}function d(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??p(n);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function f(e){let{queryString:t=!1,groupId:n}=e;const a=(0,l.k6)(),o=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,i._X)(o),(0,r.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(a.location.search);t.set(o,e),a.replace({...a.location,search:t.toString()})}),[o,a])]}function h(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,o=d(e),[s,l]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:o}))),[i,u]=f({queryString:n,groupId:a}),[p,h]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,o]=(0,c.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&o.set(e)}),[n,o])]}({groupId:a}),k=(()=>{const e=i??p;return m({value:e,tabValues:o})?e:null})();(0,r.useLayoutEffect)((()=>{k&&l(k)}),[k]);return{selectedValue:s,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),h(e)}),[u,h,o]),tabValues:o}}var k=n(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function y(e){let{className:t,block:n,selectedValue:l,selectValue:i,tabValues:u}=e;const c=[],{blockElementScrollPositionUntilNextRender:p}=(0,s.o5)(),d=e=>{const t=e.currentTarget,n=c.indexOf(t),a=u[n].value;a!==l&&(p(t),i(a))},m=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;t=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;t=c[n]??c[c.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":n},t)},u.map((e=>{let{value:t,label:n,attributes:s}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:l===t?0:-1,"aria-selected":l===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:d},s,{className:(0,o.Z)("tabs__item",g.tabItem,s?.className,{"tabs__item--active":l===t})}),n??t)})))}function b(e){let{lazy:t,children:n,selectedValue:a}=e;if(n=Array.isArray(n)?n:[n],t){const e=n.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},n.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function v(e){const t=h(e);return r.createElement("div",{className:(0,o.Z)("tabs-container",g.tabList)},r.createElement(y,(0,a.Z)({},e,t)),r.createElement(b,(0,a.Z)({},e,t)))}function w(e){const t=(0,k.Z)();return r.createElement(v,(0,a.Z)({key:String(t)},e))}},1752:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>f,frontMatter:()=>l,metadata:()=>u,toc:()=>p});var a=n(7462),r=(n(7294),n(3905)),o=n(4866),s=n(5162);const l={},i="React Hooks",u={unversionedId:"extensions/react-hooks",id:"extensions/react-hooks",title:"React Hooks",description:"The React Hooks package exposes useful React hooks that allow you to easily interact with Credo from a React client application.",source:"@site/guides/extensions/react-hooks.md",sourceDirName:"extensions",slug:"/extensions/react-hooks",permalink:"/guides/0.5/extensions/react-hooks",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"REST API",permalink:"/guides/0.5/extensions/rest"},next:{title:"Redux Store",permalink:"/guides/0.5/extensions/redux-store"}},c={},p=[{value:"Installation",id:"installation",level:2},{value:"npm",id:"npm",level:2},{value:"Yarn",id:"yarn",level:2},{value:"Usage",id:"usage",level:2}],d={toc:p},m="wrapper";function f(e){let{components:t,...n}=e;return(0,r.kt)(m,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"react-hooks"},"React Hooks"),(0,r.kt)("p",null,"The React Hooks package exposes useful React hooks that allow you to easily interact with Credo from a React client application."),(0,r.kt)("p",null,"These hooks provide a simple way to query agent data in a client application, allowing you to focus on the user interface."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"This document is for version ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"0.5.x"))," of the ",(0,r.kt)("inlineCode",{parentName:"p"},"@aries-framework/react-hooks")," package, that works with ",(0,r.kt)("inlineCode",{parentName:"p"},"@aries-framework/core")," version ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"0.4.x")),". Extension packages (such as React Hooks) are versioned separately from the core packages.")),(0,r.kt)("h2",{id:"installation"},"Installation"),(0,r.kt)("p",null,"To add the React Hooks package to your existing project simply run:"),(0,r.kt)(o.Z,{mdxType:"Tabs"},(0,r.kt)(s.Z,{label:"npm",value:"tab1",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"npm i @aries-framework/react-hooks@^0.5\n"))),(0,r.kt)(s.Z,{label:"Yarn",value:"tab2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"yarn add @aries-framework/react-hooks@^0.5\n")))),(0,r.kt)("h2",{id:"usage"},"Usage"),(0,r.kt)("p",null,"This package exposes useful React hooks that allow you to easily interact with Credo."),(0,r.kt)("p",null,"Everything exported from Hooks:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-ts"},"import AgentProvider, {\n useAgent,\n useConnections,\n useConnectionById,\n useCredentials,\n useCredentialById,\n useCredentialByState,\n useProofs,\n useProofById,\n useProofByState,\n} from '@aries-framework/react-hooks'\n")),(0,r.kt)("p",null,"First step is to wrap your entire app in our ",(0,r.kt)("inlineCode",{parentName:"p"},""),". The provider takes an initialized agent. The base of your app should look something like this:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-tsx"},"import AgentProvider from '@aries-framework/react-hooks'\n\nconst App = () => {\n const [agent, setAgent] = useState(undefined)\n\n const initializeAgent = async () => {\n const appAgent = new Agent({\n /* agent options */\n })\n await appAgent.initialize()\n setAgent(appAgent)\n }\n\n useEffect(() => {\n initializeAgent()\n }, [])\n\n if (!agent) return \n\n return /* Your app here */\n}\n")),(0,r.kt)("p",null,"And that's it! Your app should be set up to receive all the necessary data your app will need! Now let's see how we actually get that data to our components."),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"useAgent")," hook returns ",(0,r.kt)("inlineCode",{parentName:"p"},"{ agent, loading }")," so anytime you need access to any of the methods tied to the agent, you can ",(0,r.kt)("inlineCode",{parentName:"p"},"useAgent()")," anywhere."),(0,r.kt)("p",null,"The following is an example of how you could use the ",(0,r.kt)("inlineCode",{parentName:"p"},"useConnections")," hook to render a full list of all a user's connections."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-ts"},"import { useConnections } from '@aries-framework/react-hooks'\n\nconst MyConnectionsComponent = () => {\n // all base hooks return an array of objects and a loading boolean\n const { connections, loading } = useConnections()\n\n return } />\n}\n")),(0,r.kt)("p",null,"The three base hooks: ",(0,r.kt)("inlineCode",{parentName:"p"},"useConnections"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"useCredentials"),", and ",(0,r.kt)("inlineCode",{parentName:"p"},"useProofs")," work just like the above! Just call the hook, destructure the data, and pass it through!"),(0,r.kt)("p",null,"Each base hook has a ",(0,r.kt)("inlineCode",{parentName:"p"},"ById")," version that returns a singular record. For example if I wanted only a specific connectionRecord, I'd do this."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-ts"},"const connection = useConnectionById(id)\n")),(0,r.kt)("p",null,"More commonly, you'll want to get a filtered list of records based off of their state. Well, Hooray! We have a ",(0,r.kt)("inlineCode",{parentName:"p"},"ByState")," version as well. For example, you can do this:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-ts"},"const credentials = useCredentialByState(CredentialState.OfferReceived)\n")))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[1271],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});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 s(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 i=a.createContext({}),u=function(e){var t=a.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=u(e.components);return a.createElement(i.Provider,{value:t},e.children)},p="mdxType",d={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,i=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=u(n),m=r,f=p["".concat(i,".").concat(m)]||p[m]||d[m]||o;return n?a.createElement(f,s(s({ref:t},c),{},{components:n})):a.createElement(f,s({ref:t},c))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=m;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[p]="string"==typeof e?e:r,s[1]=l;for(var u=2;u{n.d(t,{Z:()=>s});var a=n(7294),r=n(6010);const o={tabItem:"tabItem_Ymn6"};function s(e){let{children:t,hidden:n,className:s}=e;return a.createElement("div",{role:"tabpanel",className:(0,r.Z)(o.tabItem,s),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>w});var a=n(7462),r=n(7294),o=n(6010),s=n(2466),l=n(6550),i=n(1980),u=n(7392),c=n(12);function p(e){return function(e){return r.Children.map(e,(e=>{if((0,r.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:r}}=e;return{value:t,label:n,attributes:a,default:r}}))}function d(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??p(n);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function f(e){let{queryString:t=!1,groupId:n}=e;const a=(0,l.k6)(),o=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,i._X)(o),(0,r.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(a.location.search);t.set(o,e),a.replace({...a.location,search:t.toString()})}),[o,a])]}function h(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,o=d(e),[s,l]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:o}))),[i,u]=f({queryString:n,groupId:a}),[p,h]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,o]=(0,c.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&o.set(e)}),[n,o])]}({groupId:a}),g=(()=>{const e=i??p;return m({value:e,tabValues:o})?e:null})();(0,r.useLayoutEffect)((()=>{g&&l(g)}),[g]);return{selectedValue:s,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),h(e)}),[u,h,o]),tabValues:o}}var g=n(2389);const k={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function y(e){let{className:t,block:n,selectedValue:l,selectValue:i,tabValues:u}=e;const c=[],{blockElementScrollPositionUntilNextRender:p}=(0,s.o5)(),d=e=>{const t=e.currentTarget,n=c.indexOf(t),a=u[n].value;a!==l&&(p(t),i(a))},m=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;t=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;t=c[n]??c[c.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":n},t)},u.map((e=>{let{value:t,label:n,attributes:s}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:l===t?0:-1,"aria-selected":l===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:d},s,{className:(0,o.Z)("tabs__item",k.tabItem,s?.className,{"tabs__item--active":l===t})}),n??t)})))}function b(e){let{lazy:t,children:n,selectedValue:a}=e;if(n=Array.isArray(n)?n:[n],t){const e=n.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},n.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function v(e){const t=h(e);return r.createElement("div",{className:(0,o.Z)("tabs-container",k.tabList)},r.createElement(y,(0,a.Z)({},e,t)),r.createElement(b,(0,a.Z)({},e,t)))}function w(e){const t=(0,g.Z)();return r.createElement(v,(0,a.Z)({key:String(t)},e))}},1752:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>f,frontMatter:()=>l,metadata:()=>u,toc:()=>p});var a=n(7462),r=(n(7294),n(3905)),o=n(4866),s=n(5162);const l={},i="React Hooks",u={unversionedId:"extensions/react-hooks",id:"extensions/react-hooks",title:"React Hooks",description:"The React Hooks package exposes useful React hooks that allow you to easily interact with Credo from a React client application.",source:"@site/guides/extensions/react-hooks.md",sourceDirName:"extensions",slug:"/extensions/react-hooks",permalink:"/guides/0.5/extensions/react-hooks",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"REST API",permalink:"/guides/0.5/extensions/rest"},next:{title:"Redux Store",permalink:"/guides/0.5/extensions/redux-store"}},c={},p=[{value:"Installation",id:"installation",level:2},{value:"npm",id:"npm",level:2},{value:"Yarn",id:"yarn",level:2},{value:"Usage",id:"usage",level:2}],d={toc:p},m="wrapper";function f(e){let{components:t,...n}=e;return(0,r.kt)(m,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"react-hooks"},"React Hooks"),(0,r.kt)("p",null,"The React Hooks package exposes useful React hooks that allow you to easily interact with Credo from a React client application."),(0,r.kt)("p",null,"These hooks provide a simple way to query agent data in a client application, allowing you to focus on the user interface."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"This document is for version ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"0.5.x"))," of the ",(0,r.kt)("inlineCode",{parentName:"p"},"@credo-ts/react-hooks")," package, that works with ",(0,r.kt)("inlineCode",{parentName:"p"},"@credo-ts/core")," version ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"0.4.x")),". Extension packages (such as React Hooks) are versioned separately from the core packages.")),(0,r.kt)("h2",{id:"installation"},"Installation"),(0,r.kt)("p",null,"To add the React Hooks package to your existing project simply run:"),(0,r.kt)(o.Z,{mdxType:"Tabs"},(0,r.kt)(s.Z,{label:"npm",value:"tab1",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"npm i @credo-ts/react-hooks@^0.5\n"))),(0,r.kt)(s.Z,{label:"Yarn",value:"tab2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"yarn add @credo-ts/react-hooks@^0.5\n")))),(0,r.kt)("h2",{id:"usage"},"Usage"),(0,r.kt)("p",null,"This package exposes useful React hooks that allow you to easily interact with Credo."),(0,r.kt)("p",null,"Everything exported from Hooks:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-ts"},"import AgentProvider, {\n useAgent,\n useConnections,\n useConnectionById,\n useCredentials,\n useCredentialById,\n useCredentialByState,\n useProofs,\n useProofById,\n useProofByState,\n} from '@credo-ts/react-hooks'\n")),(0,r.kt)("p",null,"First step is to wrap your entire app in our ",(0,r.kt)("inlineCode",{parentName:"p"},""),". The provider takes an initialized agent. The base of your app should look something like this:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-tsx"},"import AgentProvider from '@credo-ts/react-hooks'\n\nconst App = () => {\n const [agent, setAgent] = useState(undefined)\n\n const initializeAgent = async () => {\n const appAgent = new Agent({\n /* agent options */\n })\n await appAgent.initialize()\n setAgent(appAgent)\n }\n\n useEffect(() => {\n initializeAgent()\n }, [])\n\n if (!agent) return \n\n return /* Your app here */\n}\n")),(0,r.kt)("p",null,"And that's it! Your app should be set up to receive all the necessary data your app will need! Now let's see how we actually get that data to our components."),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"useAgent")," hook returns ",(0,r.kt)("inlineCode",{parentName:"p"},"{ agent, loading }")," so anytime you need access to any of the methods tied to the agent, you can ",(0,r.kt)("inlineCode",{parentName:"p"},"useAgent()")," anywhere."),(0,r.kt)("p",null,"The following is an example of how you could use the ",(0,r.kt)("inlineCode",{parentName:"p"},"useConnections")," hook to render a full list of all a user's connections."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-ts"},"import { useConnections } from '@credo-ts/react-hooks'\n\nconst MyConnectionsComponent = () => {\n // all base hooks return an array of objects and a loading boolean\n const { connections, loading } = useConnections()\n\n return } />\n}\n")),(0,r.kt)("p",null,"The three base hooks: ",(0,r.kt)("inlineCode",{parentName:"p"},"useConnections"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"useCredentials"),", and ",(0,r.kt)("inlineCode",{parentName:"p"},"useProofs")," work just like the above! Just call the hook, destructure the data, and pass it through!"),(0,r.kt)("p",null,"Each base hook has a ",(0,r.kt)("inlineCode",{parentName:"p"},"ById")," version that returns a singular record. For example if I wanted only a specific connectionRecord, I'd do this."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-ts"},"const connection = useConnectionById(id)\n")),(0,r.kt)("p",null,"More commonly, you'll want to get a filtered list of records based off of their state. Well, Hooray! We have a ",(0,r.kt)("inlineCode",{parentName:"p"},"ByState")," version as well. For example, you can do this:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-ts"},"const credentials = useCredentialByState(CredentialState.OfferReceived)\n")))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7697e6e6.ff268635.js b/assets/js/7697e6e6.ff268635.js new file mode 100644 index 00000000..ebcf22ab --- /dev/null +++ b/assets/js/7697e6e6.ff268635.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[7867],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),c=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(r),f=a,m=p["".concat(l,".").concat(f)]||p[f]||u[f]||i;return r?n.createElement(m,o(o({ref:t},d),{},{components:r})):n.createElement(m,o({ref:t},d))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=f;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,o[1]=s;for(var c=2;c{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var n=r(7462),a=(r(7294),r(3905));const i={},o="Verifiable Credentials",s={unversionedId:"features/credentials",id:"features/credentials",title:"Verifiable Credentials",description:"One of the main features of Credo is the issuance and verification of Verifiable Credentials.",source:"@site/guides/features/credentials.md",sourceDirName:"features",slug:"/features/credentials",permalink:"/guides/0.5/features/credentials",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Decentralized Identifiers",permalink:"/guides/0.5/features/dids"},next:{title:"Tutorials",permalink:"/guides/0.5/tutorials/"}},l={},c=[{value:"W3C Verifiable Credentials",id:"w3c-verifiable-credentials",level:2},{value:"SD-JWT VC",id:"sd-jwt-vc",level:2},{value:"AnonCreds",id:"anoncreds",level:2}],d={toc:c},p="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"verifiable-credentials"},"Verifiable Credentials"),(0,a.kt)("p",null,"One of the main features of Credo is the issuance and verification of Verifiable Credentials."),(0,a.kt)("h2",{id:"w3c-verifiable-credentials"},"W3C Verifiable Credentials"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://www.w3.org/TR/vc-data-model/"},"W3C Verifiable Credentials")," are probably the most widely known credential format, and defined the World Wide Web Consortium (W3C)."),(0,a.kt)("p",null,"Credo currently supports the issuance and verification of W3C Verifiable Credentials according to the ",(0,a.kt)("strong",{parentName:"p"},"Data Model v1.1"),", and support both the ",(0,a.kt)("strong",{parentName:"p"},"Linked Data Proof")," and ",(0,a.kt)("strong",{parentName:"p"},"Json Web Token (JWT)")," proof formats."),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Issuance of W3C JWT credentials is not supported over DIDComm"),", while verification ",(0,a.kt)("strong",{parentName:"p"},"is supported")),(0,a.kt)("h2",{id:"sd-jwt-vc"},"SD-JWT VC"),(0,a.kt)("p",null,"Selective Disclosure JWT Verifiable Credentials are a special type of JWT Verifiable Credentials, that allow for selective disclosure of the claims in the credential."),(0,a.kt)("p",null,"Credo currently supports ",(0,a.kt)("a",{parentName:"p",href:"https://www.ietf.org/archive/id/draft-ietf-oauth-sd-jwt-vc-01.html"},"SD-JWT-based Verifiable Credentials (SD-JWT VC) - Draft 01"),"."),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Issuance of SD-JWT credentials is not supported over DIDComm"),", while verification ",(0,a.kt)("strong",{parentName:"p"},"is supported"),"."),(0,a.kt)("h2",{id:"anoncreds"},"AnonCreds"),(0,a.kt)("p",null,"Credo supports the issuance and verification of ",(0,a.kt)("a",{parentName:"p",href:"https://hyperledger.github.io/anoncreds-spec/"},"AnonCreds")," credentials. AnonCreds credentials are a bit 'heavier' to implement and support than other credential formats, but allow for the best unlinkability."),(0,a.kt)("p",null,"Issuance and verification of AnonCreds credentials is ",(0,a.kt)("strong",{parentName:"p"},"only available over DIDComm"),"."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/79d2b703.091bb580.js b/assets/js/79d2b703.091bb580.js deleted file mode 100644 index fd1985bb..00000000 --- a/assets/js/79d2b703.091bb580.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[7902],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(7294);function a(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 r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),d=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=d(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),u=d(n),m=a,h=u["".concat(l,".").concat(m)]||u[m]||p[m]||i;return n?r.createElement(h,s(s({ref:t},c),{},{components:n})):r.createElement(h,s({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,s=new Array(i);s[0]=m;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[u]="string"==typeof e?e:a,s[1]=o;for(var d=2;d{n.d(t,{Z:()=>y});var r=n(7294),a=n(6010),i=n(3438),s=n(9960),o=n(3919),l=n(5999);const d={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function c(e){let{href:t,children:n}=e;return r.createElement(s.Z,{href:t,className:(0,a.Z)("card padding--lg",d.cardContainer)},n)}function u(e){let{href:t,icon:n,title:i,description:s}=e;return r.createElement(c,{href:t},r.createElement("h2",{className:(0,a.Z)("text--truncate",d.cardTitle),title:i},n," ",i),s&&r.createElement("p",{className:(0,a.Z)("text--truncate",d.cardDescription),title:s},s))}function p(e){let{item:t}=e;const n=(0,i.Wl)(t);return n?r.createElement(u,{href:n,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function m(e){let{item:t}=e;const n=(0,o.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",a=(0,i.xz)(t.docId??void 0);return r.createElement(u,{href:t.href,icon:n,title:t.label,description:a?.description})}function h(e){let{item:t}=e;switch(t.type){case"link":return r.createElement(m,{item:t});case"category":return r.createElement(p,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function f(e){let{className:t}=e;const n=(0,i.jA)();return r.createElement(y,{items:n.items,className:t})}function y(e){const{items:t,className:n}=e;if(!t)return r.createElement(f,e);const s=(0,i.MN)(t);return r.createElement("section",{className:(0,a.Z)("row",n)},s.map(((e,t)=>r.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},r.createElement(h,{item:e})))))}},5162:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(7294),a=n(6010);const i={tabItem:"tabItem_Ymn6"};function s(e){let{children:t,hidden:n,className:s}=e;return r.createElement("div",{role:"tabpanel",className:(0,a.Z)(i.tabItem,s),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>w});var r=n(7462),a=n(7294),i=n(6010),s=n(2466),o=n(6550),l=n(1980),d=n(7392),c=n(12);function u(e){return function(e){return a.Children.map(e,(e=>{if((0,a.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:a}}=e;return{value:t,label:n,attributes:r,default:a}}))}function p(e){const{values:t,children:n}=e;return(0,a.useMemo)((()=>{const e=t??u(n);return function(e){const t=(0,d.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function h(e){let{queryString:t=!1,groupId:n}=e;const r=(0,o.k6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l._X)(i),(0,a.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(r.location.search);t.set(i,e),r.replace({...r.location,search:t.toString()})}),[i,r])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,i=p(e),[s,o]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[l,d]=h({queryString:n,groupId:r}),[u,f]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,i]=(0,c.Nk)(n);return[r,(0,a.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:r}),y=(()=>{const e=l??u;return m({value:e,tabValues:i})?e:null})();(0,a.useLayoutEffect)((()=>{y&&o(y)}),[y]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),d(e),f(e)}),[d,f,i]),tabValues:i}}var y=n(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function b(e){let{className:t,block:n,selectedValue:o,selectValue:l,tabValues:d}=e;const c=[],{blockElementScrollPositionUntilNextRender:u}=(0,s.o5)(),p=e=>{const t=e.currentTarget,n=c.indexOf(t),r=d[n].value;r!==o&&(u(t),l(r))},m=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;t=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;t=c[n]??c[c.length-1];break}}t?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":n},t)},d.map((e=>{let{value:t,label:n,attributes:s}=e;return a.createElement("li",(0,r.Z)({role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:p},s,{className:(0,i.Z)("tabs__item",g.tabItem,s?.className,{"tabs__item--active":o===t})}),n??t)})))}function k(e){let{lazy:t,children:n,selectedValue:r}=e;if(n=Array.isArray(n)?n:[n],t){const e=n.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},n.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==r}))))}function v(e){const t=f(e);return a.createElement("div",{className:(0,i.Z)("tabs-container",g.tabList)},a.createElement(b,(0,r.Z)({},e,t)),a.createElement(k,(0,r.Z)({},e,t)))}function w(e){const t=(0,y.Z)();return a.createElement(v,(0,r.Z)({key:String(t)},e))}},9875:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>d,default:()=>f,frontMatter:()=>l,metadata:()=>c,toc:()=>p});var r=n(7462),a=(n(7294),n(3905)),i=n(4866),s=n(5162),o=n(2991);const l={},d="Indy SDK",c={unversionedId:"getting-started/set-up/indy-sdk/index",id:"getting-started/set-up/indy-sdk/index",title:"Indy SDK",description:"Indy SDK provides a distributed ledger based foundation for self-sovereign identity. It can provide the Wallet and StorageService implementations for the agent, as well as a way to interact with Indy ledgers and an implementation of the legacy (v0.1) AnonCreds Specification",source:"@site/guides/getting-started/set-up/indy-sdk/index.md",sourceDirName:"getting-started/set-up/indy-sdk",slug:"/getting-started/set-up/indy-sdk/",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Aries Askar",permalink:"/guides/0.5/getting-started/set-up/aries-askar"},next:{title:"Linux",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/linux"}},u={},p=[{value:"Installing the Indy SDK",id:"installing-the-indy-sdk",level:3},{value:"Adding the Indy SDK to the Agent",id:"adding-the-indy-sdk-to-the-agent",level:3}],m={toc:p},h="wrapper";function f(e){let{components:t,...n}=e;return(0,a.kt)(h,(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"indy-sdk"},"Indy SDK"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-sdk"},"Indy SDK")," provides a distributed ledger based foundation for self-sovereign identity. It can provide the ",(0,a.kt)("inlineCode",{parentName:"p"},"Wallet")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"StorageService")," implementations for the agent, as well as a way to interact with Indy ledgers and an implementation of the legacy (v0.1) ",(0,a.kt)("a",{parentName:"p",href:"https://hyperledger.github.io/anoncreds-spec/"},"AnonCreds Specification")),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"The Indy SDK integration in Credo is currently in maintenance mode. We recommend new projects to use ",(0,a.kt)("a",{parentName:"p",href:"../aries-askar"},"Aries Askar")," from the start, and also to migrate existing projects to Aries Askar.")),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"The AnonCreds implementation from the Indy SDK only supports the ",(0,a.kt)("a",{parentName:"p",href:"https://hyperledger.github.io/anoncreds-methods-registry/#hyperledger-indy-legacy-anoncreds-method"},"Hyperledger Indy Legacy AnonCreds Method")," (the pre-standardized implementation), and doesn't support the new Ledger ",(0,a.kt)("a",{parentName:"p",href:"https://hyperledger.github.io/anoncreds-spec/"},"Agnostic AnonCreds Specification (v1.0)"),". Use the new AnonCreds Rust implementation, which is also supported by Credo, in combination with ",(0,a.kt)("a",{parentName:"p",href:"../aries-askar"},"Aries Askar")," and Indy VDR to replace the bevhaviour of the Indy SDK, and support the new features these libraries have to offer.")),(0,a.kt)("h3",{id:"installing-the-indy-sdk"},"Installing the Indy SDK"),(0,a.kt)("p",null,"When using Credo with the Indy SDK, there's a few extra dependencies that need to be installed. We need to install the ",(0,a.kt)("inlineCode",{parentName:"p"},"@aries-framework/indy-sdk")," package, which implements the needed interfaces for the agent. Secondly, we need to install the native Indy SDK library and the bindings for our specific platform. Currently there are bindings for Node.JS and React Native."),(0,a.kt)("p",null,"To start off, install the native Indy SDK library. The setup for this depends on the platform you are using. Follow the instructions for your platform below."),(0,a.kt)(o.Z,{mdxType:"DocCardList"}),(0,a.kt)("p",null,"After the native Indy SDK library is installed, we can add the Indy SDK libraries."),(0,a.kt)(i.Z,{mdxType:"Tabs"},(0,a.kt)(s.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @aries-framework/indy-sdk@^0.4.0 indy-sdk\n")),(0,a.kt)("p",null,"And install the needed types"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"yarn add --dev @types/indy-sdk\n"))),(0,a.kt)(s.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @aries-framework/indy-sdk@^0.4.0 indy-sdk-react-native\n")),(0,a.kt)("p",null,"And then install the needed types"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"yarn add --dev @types/indy-sdk-react-native@npm:@types/indy-sdk\n")))),(0,a.kt)("h3",{id:"adding-the-indy-sdk-to-the-agent"},"Adding the Indy SDK to the Agent"),(0,a.kt)("p",null,"After installing the dependencies, we can register the Indy SDK Module on the agent."),(0,a.kt)(i.Z,{mdxType:"Tabs"},(0,a.kt)(s.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-indy-sdk.ts section-1",showLineNumbers:!0,"set-up-indy-sdk.ts":!0,"section-1":!0},""))),(0,a.kt)(s.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-indy-sdk-rn.ts section-1",showLineNumbers:!0,"set-up-indy-sdk-rn.ts":!0,"section-1":!0},"")))))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/82aa0257.70249622.js b/assets/js/82aa0257.70249622.js deleted file mode 100644 index 2689adfb..00000000 --- a/assets/js/82aa0257.70249622.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[9989],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var n=r(7294);function s(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(s[r]=e[r]);return s}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(s[r]=e[r])}return s}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var r=e.components,s=e.mdxType,i=e.originalType,l=e.parentName,d=a(e,["components","mdxType","originalType","parentName"]),u=p(r),c=s,m=u["".concat(l,".").concat(c)]||u[c]||g[c]||i;return r?n.createElement(m,o(o({ref:t},d),{},{components:r})):n.createElement(m,o({ref:t},d))}));function m(e,t){var r=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var i=r.length,o=new Array(i);o[0]=c;var a={};for(var l in t)hasOwnProperty.call(t,l)&&(a[l]=t[l]);a.originalType=e,a[u]="string"==typeof e?e:s,o[1]=a;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>g,frontMatter:()=>i,metadata:()=>a,toc:()=>p});var n=r(7462),s=(r(7294),r(3905));const i={},o="Postgres Setup for macOS",a={unversionedId:"tutorials/indy-sdk-postgres-database-nodejs/macos",id:"tutorials/indy-sdk-postgres-database-nodejs/macos",title:"Postgres Setup for macOS",description:"Prerequisites",source:"@site/guides/tutorials/indy-sdk-postgres-database-nodejs/macos.md",sourceDirName:"tutorials/indy-sdk-postgres-database-nodejs",slug:"/tutorials/indy-sdk-postgres-database-nodejs/macos",permalink:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/macos",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Postgres Setup for Linux",permalink:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/linux"},next:{title:"Postgres Setup for windows",permalink:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/windows"}},l={},p=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Step 1: installing the dependencies using brew",id:"step-1-installing-the-dependencies-using-brew",level:2},{value:"Step 2: Build Postgres plugin",id:"step-2-build-postgres-plugin",level:2},{value:"Step 2.1: Cloning the indy-sdk",id:"step-21-cloning-the-indy-sdk",level:3},{value:"Step 2.2: Building Postgres plugin",id:"step-22-building-postgres-plugin",level:3},{value:"Step 2.3: Moving the file",id:"step-23-moving-the-file",level:3}],d={toc:p},u="wrapper";function g(e){let{components:t,...r}=e;return(0,s.kt)(u,(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"postgres-setup-for-macos"},"Postgres Setup for macOS"),(0,s.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Homebrew"),(0,s.kt)("li",{parentName:"ul"},"Cargo (We have to build Postgres plugin from source)"),(0,s.kt)("li",{parentName:"ul"},"git (to clone a repo, could also be done with downloading the zip from the GitHub page)")),(0,s.kt)("h2",{id:"step-1-installing-the-dependencies-using-brew"},"Step 1: installing the dependencies using brew"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sh"},"brew install libsodium zeromq\n")),(0,s.kt)("h2",{id:"step-2-build-postgres-plugin"},"Step 2: Build Postgres plugin"),(0,s.kt)("p",null,"Building Postgres plugin from the indy-sdk repo with cargo."),(0,s.kt)("h3",{id:"step-21-cloning-the-indy-sdk"},"Step 2.1: Cloning the indy-sdk"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sh"},"git clone https://github.com/hyperledger/indy-sdk.git\n\ncd indy-sdk/experimental/plugins/postgres_storage\n")),(0,s.kt)("h3",{id:"step-22-building-postgres-plugin"},"Step 2.2: Building Postgres plugin"),(0,s.kt)("p",null,"If this step throws any errors, it might be because you miss some packages. Step 1 of this guide provided the dependencies that are required, but it also assumed that you have some basic development packages installed. If you are missing some packages, you can install them with your package manager."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sh"},"pwd\n\n# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage\n\ncargo build --release\n")),(0,s.kt)("h3",{id:"step-23-moving-the-file"},"Step 2.3: Moving the file"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sh"},"pwd\n\n# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage\n\nsudo mv ./target/release/libindystrgpostgres.dylib /usr/local/lib/libindystrgpostgres.dylib\n")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1329.f911dbaf.js b/assets/js/8929.afff4b8b.js similarity index 83% rename from assets/js/1329.f911dbaf.js rename to assets/js/8929.afff4b8b.js index ac5d808d..0d11a76f 100644 --- a/assets/js/1329.f911dbaf.js +++ b/assets/js/8929.afff4b8b.js @@ -1,2 +1,2 @@ -/*! For license information please see 1329.f911dbaf.js.LICENSE.txt */ -(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[1329],{7967:(t,e)=>{"use strict";e.N=void 0;var n=/^([^\w]*)(javascript|data|vbscript)/im,r=/&#(\w+)(^\w|;)?/g,i=/&(newline|tab);/gi,a=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,s=/^.+(:|:)/gim,o=[".","/"];e.N=function(t){var e,l=(e=t||"",e.replace(r,(function(t,e){return String.fromCharCode(e)}))).replace(i,"").replace(a,"").trim();if(!l)return"about:blank";if(function(t){return o.indexOf(t[0])>-1}(l))return l;var c=l.match(s);if(!c)return l;var u=c[0];return n.test(u)?"about:blank":l}},3905:(t,e,n)=>{"use strict";n.d(e,{Zo:()=>u,kt:()=>f});var r=n(7294);function i(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function a(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function s(t){for(var e=1;e=0||(i[n]=t[n]);return i}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(i[n]=t[n])}return i}var l=r.createContext({}),c=function(t){var e=r.useContext(l),n=e;return t&&(n="function"==typeof t?t(e):s(s({},e),t)),n},u=function(t){var e=c(t.components);return r.createElement(l.Provider,{value:e},t.children)},h="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},p=r.forwardRef((function(t,e){var n=t.components,i=t.mdxType,a=t.originalType,l=t.parentName,u=o(t,["components","mdxType","originalType","parentName"]),h=c(n),p=i,f=h["".concat(l,".").concat(p)]||h[p]||d[p]||a;return n?r.createElement(f,s(s({ref:e},u),{},{components:n})):r.createElement(f,s({ref:e},u))}));function f(t,e){var n=arguments,i=e&&e.mdxType;if("string"==typeof t||i){var a=n.length,s=new Array(a);s[0]=p;var o={};for(var l in e)hasOwnProperty.call(e,l)&&(o[l]=e[l]);o.originalType=t,o[h]="string"==typeof t?t:i,s[1]=o;for(var c=2;c{"use strict";n.d(e,{Z:()=>u});var r=n(7462),i=n(7294),a=n(6010),s=n(6412),o=n(5281),l=n(7016);const c={codeBlockContainer:"codeBlockContainer_Ckt0"};function u(t){let{as:e,...n}=t;const u=(0,s.p)(),h=(0,l.QC)(u);return i.createElement(e,(0,r.Z)({},n,{style:h,className:(0,a.Z)(n.className,c.codeBlockContainer,o.k.common.codeBlock)}))}},1170:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(7294),i=n(6010),a=n(6505),s=n(2944);function o(t){let{children:e,className:n}=t;return r.createElement(a.Z,{as:"pre",tabIndex:0,className:(0,i.Z)(s.Z.codeBlockStandalone,"thin-scrollbar",n)},r.createElement("code",{className:s.Z.codeBlockLines},e))}},2138:(t,e,n)=>{"use strict";n.d(e,{Z:()=>O});var r=n(7462),i=n(7294),a=n(6010),s=n(6668),o=n(6412),l=n(7016),c=n(902);const u={attributes:!0,characterData:!0,childList:!0,subtree:!0};function h(t,e){const[n,r]=(0,i.useState)(),a=(0,i.useCallback)((()=>{r(t.current?.closest("[role=tabpanel][hidden]"))}),[t,r]);(0,i.useEffect)((()=>{a()}),[a]),function(t,e,n){void 0===n&&(n=u);const r=(0,c.zX)(e),a=(0,c.Ql)(n);(0,i.useEffect)((()=>{const e=new MutationObserver(r);return t&&e.observe(t,a),()=>e.disconnect()}),[t,r,a])}(n,(t=>{t.forEach((t=>{"attributes"===t.type&&"hidden"===t.attributeName&&(e(),a())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}const d={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]};var p={Prism:n(7410).Z,theme:d};function f(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function m(){return m=Object.assign||function(t){for(var e=1;e0&&t[n-1]===e?t:t.concat(e)};function x(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&-1===e.indexOf(r)&&(n[r]=t[r]);return n}var v=function(t){function e(){for(var e=this,n=[],r=arguments.length;r--;)n[r]=arguments[r];t.apply(this,n),f(this,"getThemeDict",(function(t){if(void 0!==e.themeDict&&t.theme===e.prevTheme&&t.language===e.prevLanguage)return e.themeDict;e.prevTheme=t.theme,e.prevLanguage=t.language;var n=t.theme?function(t,e){var n=t.plain,r=Object.create(null),i=t.styles.reduce((function(t,n){var r=n.languages,i=n.style;return r&&!r.includes(e)||n.types.forEach((function(e){var n=m({},t[e],i);t[e]=n})),t}),r);return i.root=n,i.plain=m({},n,{backgroundColor:null}),i}(t.theme,t.language):void 0;return e.themeDict=n})),f(this,"getLineProps",(function(t){var n=t.key,r=t.className,i=t.style,a=m({},x(t,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),s=e.getThemeDict(e.props);return void 0!==s&&(a.style=s.plain),void 0!==i&&(a.style=void 0!==a.style?m({},a.style,i):i),void 0!==n&&(a.key=n),r&&(a.className+=" "+r),a})),f(this,"getStyleForToken",(function(t){var n=t.types,r=t.empty,i=n.length,a=e.getThemeDict(e.props);if(void 0!==a){if(1===i&&"plain"===n[0])return r?{display:"inline-block"}:void 0;if(1===i&&!r)return a[n[0]];var s=r?{display:"inline-block"}:{},o=n.map((function(t){return a[t]}));return Object.assign.apply(Object,[s].concat(o))}})),f(this,"getTokenProps",(function(t){var n=t.key,r=t.className,i=t.style,a=t.token,s=m({},x(t,["key","className","style","token"]),{className:"token "+a.types.join(" "),children:a.content,style:e.getStyleForToken(a),key:void 0});return void 0!==i&&(s.style=void 0!==s.style?m({},s.style,i):i),void 0!==n&&(s.key=n),r&&(s.className+=" "+r),s})),f(this,"tokenize",(function(t,e,n,r){var i={code:e,grammar:n,language:r,tokens:[]};t.hooks.run("before-tokenize",i);var a=i.tokens=t.tokenize(i.code,i.grammar,i.language);return t.hooks.run("after-tokenize",i),a}))}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.render=function(){var t=this.props,e=t.Prism,n=t.language,r=t.code,i=t.children,a=this.getThemeDict(this.props),s=e.languages[n];return i({tokens:function(t){for(var e=[[]],n=[t],r=[0],i=[t.length],a=0,s=0,o=[],l=[o];s>-1;){for(;(a=r[s]++)0?u:["plain"],c=h):(u=b(u,h.type),h.alias&&(u=b(u,h.alias)),c=h.content),"string"==typeof c){var d=c.split(g),p=d.length;o.push({types:u,content:d[0]});for(var f=1;f{!function(t,e){let{target:n=document.body}=void 0===e?{}:e;if("string"!=typeof t)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof t}\`.`);const r=document.createElement("textarea"),i=document.activeElement;r.value=t,r.setAttribute("readonly",""),r.style.contain="strict",r.style.position="absolute",r.style.left="-9999px",r.style.fontSize="12pt";const a=document.getSelection(),s=a.rangeCount>0&&a.getRangeAt(0);n.append(r),r.select(),r.selectionStart=0,r.selectionEnd=t.length;let o=!1;try{o=document.execCommand("copy")}catch{}r.remove(),s&&(a.removeAllRanges(),a.addRange(s)),i&&i.focus()}(e),s(!0),o.current=window.setTimeout((()=>{s(!1)}),1e3)}),[e]);return(0,i.useEffect)((()=>()=>window.clearTimeout(o.current)),[]),i.createElement("button",{type:"button","aria-label":r?(0,T.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,T.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,T.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,a.Z)("clean-btn",n,w.copyButton,r&&w.copyButtonCopied),onClick:l},i.createElement("span",{className:w.copyButtonIcons,"aria-hidden":"true"},i.createElement("svg",{className:w.copyButtonIcon,viewBox:"0 0 24 24"},i.createElement("path",{d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})),i.createElement("svg",{className:w.copyButtonSuccessIcon,viewBox:"0 0 24 24"},i.createElement("path",{d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))))}const E={wordWrapButtonIcon:"wordWrapButtonIcon_Bwma",wordWrapButtonEnabled:"wordWrapButtonEnabled_EoeP"};function C(t){let{className:e,onClick:n,isEnabled:r}=t;const s=(0,T.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return i.createElement("button",{type:"button",onClick:n,className:(0,a.Z)("clean-btn",e,r&&E.wordWrapButtonEnabled),"aria-label":s,title:s},i.createElement("svg",{className:E.wordWrapButtonIcon,viewBox:"0 0 24 24","aria-hidden":"true"},i.createElement("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})))}var D=n(6505),A=n(2944);function O(t){let{children:e,className:n="",metastring:c,title:u,showLineNumbers:d,language:f}=t;const{prism:{defaultLanguage:m,magicComments:g}}=(0,s.L)(),y=f??(0,l.Vo)(n)??m,b=(0,o.p)(),x=function(){const[t,e]=(0,i.useState)(!1),[n,r]=(0,i.useState)(!1),a=(0,i.useRef)(null),s=(0,i.useCallback)((()=>{const n=a.current.querySelector("code");t?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),e((t=>!t))}),[a,t]),o=(0,i.useCallback)((()=>{const{scrollWidth:t,clientWidth:e}=a.current,n=t>e||a.current.querySelector("code").hasAttribute("style");r(n)}),[a]);return h(a,o),(0,i.useEffect)((()=>{o()}),[t,o]),(0,i.useEffect)((()=>(window.addEventListener("resize",o,{passive:!0}),()=>{window.removeEventListener("resize",o)})),[o]),{codeBlockRef:a,isEnabled:t,isCodeScrollable:n,toggle:s}}(),v=(0,l.bc)(c)||u,{lineClassNames:T,code:w}=(0,l.nZ)(e,{metastring:c,language:y,magicComments:g}),E=d??(0,l.nt)(c);return i.createElement(D.Z,{as:"div",className:(0,a.Z)(n,y&&!n.includes(`language-${y}`)&&`language-${y}`)},v&&i.createElement("div",{className:A.Z.codeBlockTitle},v),i.createElement("div",{className:A.Z.codeBlockContent},i.createElement(_,(0,r.Z)({},p,{theme:b,code:w,language:y??"text"}),(t=>{let{className:e,tokens:n,getLineProps:r,getTokenProps:s}=t;return i.createElement("pre",{tabIndex:0,ref:x.codeBlockRef,className:(0,a.Z)(e,A.Z.codeBlock,"thin-scrollbar")},i.createElement("code",{className:(0,a.Z)(A.Z.codeBlockLines,E&&A.Z.codeBlockLinesWithNumbering)},n.map(((t,e)=>i.createElement(k.Z,{key:e,line:t,getLineProps:r,getTokenProps:s,classNames:T[e],showLineNumbers:E})))))})),i.createElement("div",{className:A.Z.buttonGroup},(x.isEnabled||x.isCodeScrollable)&&i.createElement(C,{className:A.Z.codeButton,onClick:()=>x.toggle(),isEnabled:x.isEnabled}),i.createElement(S,{className:A.Z.codeButton,code:w}))))}},8397:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(7462),i=n(7294),a=n(6010);const s={codeLine:"codeLine_lJS_",codeLineNumber:"codeLineNumber_Tfdd",codeLineContent:"codeLineContent_feaV"};function o(t){let{line:e,classNames:n,showLineNumbers:o,getLineProps:l,getTokenProps:c}=t;1===e.length&&"\n"===e[0].content&&(e[0].content="");const u=l({line:e,className:(0,a.Z)(n,o&&s.codeLine)}),h=e.map(((t,e)=>i.createElement("span",(0,r.Z)({key:e},c({token:t,key:e})))));return i.createElement("span",u,o?i.createElement(i.Fragment,null,i.createElement("span",{className:s.codeLineNumber}),i.createElement("span",{className:s.codeLineContent},h)):h,i.createElement("br",null))}},2503:(t,e,n)=>{"use strict";n.d(e,{Z:()=>u});var r=n(7462),i=n(7294),a=n(6010),s=n(5999),o=n(6668),l=n(9960);const c={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function u(t){let{as:e,id:n,...u}=t;const{navbar:{hideOnScroll:h}}=(0,o.L)();if("h1"===e||!n)return i.createElement(e,(0,r.Z)({},u,{id:void 0}));const d=(0,s.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return i.createElement(e,(0,r.Z)({},u,{className:(0,a.Z)("anchor",h?c.anchorWithHideOnScrollNavbar:c.anchorWithStickyNavbar,u.className),id:n}),u.children,i.createElement(l.Z,{className:"hash-link",to:`#${n}`,"aria-label":d,title:d},"\u200b"))}},5881:(t,e,n)=>{"use strict";n.d(e,{Z:()=>N});var r=n(7294),i=n(3905),a=n(7462),s=n(5742);var o=n(8573);var l=n(9960);var c=n(6010),u=n(2389),h=n(6043);const d={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function p(t){return!!t&&("SUMMARY"===t.tagName||p(t.parentElement))}function f(t,e){return!!t&&(t===e||f(t.parentElement,e))}function m(t){let{summary:e,children:n,...i}=t;const s=(0,u.Z)(),o=(0,r.useRef)(null),{collapsed:l,setCollapsed:m}=(0,h.u)({initialState:!i.open}),[g,y]=(0,r.useState)(i.open);return r.createElement("details",(0,a.Z)({},i,{ref:o,open:g,"data-collapsed":l,className:(0,c.Z)(d.details,s&&d.isBrowser,i.className),onMouseDown:t=>{p(t.target)&&t.detail>1&&t.preventDefault()},onClick:t=>{t.stopPropagation();const e=t.target;p(e)&&f(e,o.current)&&(t.preventDefault(),l?(m(!1),y(!0)):m(!0))}}),e??r.createElement("summary",null,"Details"),r.createElement(h.z,{lazy:!1,collapsed:l,disableSSRStyle:!0,onCollapseTransitionEnd:t=>{m(t),y(!t)}},r.createElement("div",{className:d.collapsibleContent},n)))}const g={details:"details_b_Ee"},y="alert alert--info";function b(t){let{...e}=t;return r.createElement(m,(0,a.Z)({},e,{className:(0,c.Z)(y,g.details,e.className)}))}var x=n(2503);function v(t){return r.createElement(x.Z,t)}const _={containsTaskList:"containsTaskList_mC6p"};const k={img:"img_ev3q"};var T=n(7083);function w(t){let{children:e,fallback:n}=t;return(0,u.Z)()?r.createElement(r.Fragment,null,e?.()):n??null}var S=n(6668),E=n(2949),C=n(6432);const D="docusaurus-mermaid-container";function A(){const{colorMode:t}=(0,E.I)(),e=(0,S.L)().mermaid,n=e.theme[t],{options:i}=e;return(0,r.useMemo)((()=>({startOnLoad:!1,...i,theme:n})),[n,i])}const O={container:"container_lyt7"};function I(t){let{value:e}=t;const n=function(t,e){const n=A(),i=e??n;return(0,r.useMemo)((()=>{C.o.mermaidAPI.initialize(i);const e=`mermaid-svg-${Math.round(1e7*Math.random())}`;return C.o.render(e,t)}),[t,i])}(e);return r.createElement("div",{className:`${D} ${O.container}`,dangerouslySetInnerHTML:{__html:n}})}const L={head:function(t){const e=r.Children.map(t.children,(t=>r.isValidElement(t)?function(t){if(t.props?.mdxType&&t.props.originalType){const{mdxType:e,originalType:n,...i}=t.props;return r.createElement(t.props.originalType,i)}return t}(t):t));return r.createElement(s.Z,t,e)},code:function(t){const e=["a","abbr","b","br","button","cite","code","del","dfn","em","i","img","input","ins","kbd","label","object","output","q","ruby","s","small","span","strong","sub","sup","time","u","var","wbr"];return r.Children.toArray(t.children).every((t=>"string"==typeof t&&!t.includes("\n")||(0,r.isValidElement)(t)&&e.includes(t.props?.mdxType)))?r.createElement("code",t):r.createElement(o.Z,t)},a:function(t){return r.createElement(l.Z,t)},pre:function(t){return r.createElement(o.Z,(0,r.isValidElement)(t.children)&&"code"===t.children.props?.originalType?t.children.props:{...t})},details:function(t){const e=r.Children.toArray(t.children),n=e.find((t=>r.isValidElement(t)&&"summary"===t.props?.mdxType)),i=r.createElement(r.Fragment,null,e.filter((t=>t!==n)));return r.createElement(b,(0,a.Z)({},t,{summary:n}),i)},ul:function(t){return r.createElement("ul",(0,a.Z)({},t,{className:(e=t.className,(0,c.Z)(e,e?.includes("contains-task-list")&&_.containsTaskList))}));var e},img:function(t){return r.createElement("img",(0,a.Z)({loading:"lazy"},t,{className:(e=t.className,(0,c.Z)(e,k.img))}));var e},h1:t=>r.createElement(v,(0,a.Z)({as:"h1"},t)),h2:t=>r.createElement(v,(0,a.Z)({as:"h2"},t)),h3:t=>r.createElement(v,(0,a.Z)({as:"h3"},t)),h4:t=>r.createElement(v,(0,a.Z)({as:"h4"},t)),h5:t=>r.createElement(v,(0,a.Z)({as:"h5"},t)),h6:t=>r.createElement(v,(0,a.Z)({as:"h6"},t)),admonition:T.Z,mermaid:function(t){return r.createElement(w,null,(()=>r.createElement(I,t)))}};function N(t){let{children:e}=t;return r.createElement(i.Zo,{components:L},e)}},9407:(t,e,n)=>{"use strict";n.d(e,{Z:()=>u});var r=n(7462),i=n(7294),a=n(6010),s=n(3743);const o={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},l="table-of-contents__link toc-highlight",c="table-of-contents__link--active";function u(t){let{className:e,...n}=t;return i.createElement("div",{className:(0,a.Z)(o.tableOfContents,"thin-scrollbar",e)},i.createElement(s.Z,(0,r.Z)({},n,{linkClassName:l,linkActiveClassName:c})))}},3743:(t,e,n)=>{"use strict";n.d(e,{Z:()=>f});var r=n(7462),i=n(7294),a=n(6668);function s(t){const e=t.map((t=>({...t,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);e.forEach(((t,e)=>{const r=n.slice(2,t.level);t.parentIndex=Math.max(...r),n[t.level]=e}));const r=[];return e.forEach((t=>{const{parentIndex:n,...i}=t;n>=0?e[n].children.push(i):r.push(i)})),r}function o(t){let{toc:e,minHeadingLevel:n,maxHeadingLevel:r}=t;return e.flatMap((t=>{const e=o({toc:t.children,minHeadingLevel:n,maxHeadingLevel:r});return function(t){return t.level>=n&&t.level<=r}(t)?[{...t,children:e}]:e}))}function l(t){const e=t.getBoundingClientRect();return e.top===e.bottom?l(t.parentNode):e}function c(t,e){let{anchorTopOffset:n}=e;const r=t.find((t=>l(t).top>=n));if(r){return function(t){return t.top>0&&t.bottom{t.current=e?0:document.querySelector(".navbar").clientHeight}),[e]),t}function h(t){const e=(0,i.useRef)(void 0),n=u();(0,i.useEffect)((()=>{if(!t)return()=>{};const{linkClassName:r,linkActiveClassName:i,minHeadingLevel:a,maxHeadingLevel:s}=t;function o(){const t=function(t){return Array.from(document.getElementsByClassName(t))}(r),o=function(t){let{minHeadingLevel:e,maxHeadingLevel:n}=t;const r=[];for(let i=e;i<=n;i+=1)r.push(`h${i}.anchor`);return Array.from(document.querySelectorAll(r.join()))}({minHeadingLevel:a,maxHeadingLevel:s}),l=c(o,{anchorTopOffset:n.current}),u=t.find((t=>l&&l.id===function(t){return decodeURIComponent(t.href.substring(t.href.indexOf("#")+1))}(t)));t.forEach((t=>{!function(t,n){n?(e.current&&e.current!==t&&e.current.classList.remove(i),t.classList.add(i),e.current=t):t.classList.remove(i)}(t,t===u)}))}return document.addEventListener("scroll",o),document.addEventListener("resize",o),o(),()=>{document.removeEventListener("scroll",o),document.removeEventListener("resize",o)}}),[t,n])}function d(t){let{toc:e,className:n,linkClassName:r,isChild:a}=t;return e.length?i.createElement("ul",{className:a?void 0:n},e.map((t=>i.createElement("li",{key:t.id},i.createElement("a",{href:`#${t.id}`,className:r??void 0,dangerouslySetInnerHTML:{__html:t.value}}),i.createElement(d,{isChild:!0,toc:t.children,className:n,linkClassName:r}))))):null}const p=i.memo(d);function f(t){let{toc:e,className:n="table-of-contents table-of-contents__left-border",linkClassName:l="table-of-contents__link",linkActiveClassName:c,minHeadingLevel:u,maxHeadingLevel:d,...f}=t;const m=(0,a.L)(),g=u??m.tableOfContents.minHeadingLevel,y=d??m.tableOfContents.maxHeadingLevel,b=function(t){let{toc:e,minHeadingLevel:n,maxHeadingLevel:r}=t;return(0,i.useMemo)((()=>o({toc:s(e),minHeadingLevel:n,maxHeadingLevel:r})),[e,n,r])}({toc:e,minHeadingLevel:g,maxHeadingLevel:y});return h((0,i.useMemo)((()=>{if(l&&c)return{linkClassName:l,linkActiveClassName:c,minHeadingLevel:g,maxHeadingLevel:y}}),[l,c,g,y])),i.createElement(p,(0,r.Z)({toc:b,className:n,linkClassName:l},f))}},6412:(t,e,n)=>{"use strict";n.d(e,{p:()=>a});var r=n(2949),i=n(6668);function a(){const{prism:t}=(0,i.L)(),{colorMode:e}=(0,r.I)(),n=t.theme,a=t.darkTheme||n;return"dark"===e?a:n}},7016:(t,e,n)=>{"use strict";n.d(e,{QC:()=>p,Vo:()=>h,bc:()=>c,nZ:()=>d,nt:()=>u});var r=n(7594),i=n.n(r);const a=/title=(?["'])(?.*?)\1/,s=/\{(?<range>[\d,-]+)\}/,o={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function l(t,e){const n=t.map((t=>{const{start:n,end:r}=o[t];return`(?:${n}\\s*(${e.flatMap((t=>[t.line,t.block?.start,t.block?.end].filter(Boolean))).join("|")})\\s*${r})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function c(t){return t?.match(a)?.groups.title??""}function u(t){return Boolean(t?.includes("showLineNumbers"))}function h(t){const e=t.split(" ").find((t=>t.startsWith("language-")));return e?.replace(/language-/,"")}function d(t,e){let n=t.replace(/\n$/,"");const{language:r,magicComments:a,metastring:c}=e;if(c&&s.test(c)){const t=c.match(s).groups.range;if(0===a.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${c}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const e=a[0].className,r=i()(t).filter((t=>t>0)).map((t=>[t-1,[e]]));return{lineClassNames:Object.fromEntries(r),code:n}}if(void 0===r)return{lineClassNames:{},code:n};const u=function(t,e){switch(t){case"js":case"javascript":case"ts":case"typescript":return l(["js","jsBlock"],e);case"jsx":case"tsx":return l(["js","jsBlock","jsx"],e);case"html":return l(["js","jsBlock","html"],e);case"python":case"py":case"bash":return l(["bash"],e);case"markdown":case"md":return l(["html","jsx","bash"],e);default:return l(Object.keys(o),e)}}(r,a),h=n.split("\n"),d=Object.fromEntries(a.map((t=>[t.className,{start:0,range:""}]))),p=Object.fromEntries(a.filter((t=>t.line)).map((t=>{let{className:e,line:n}=t;return[n,e]}))),f=Object.fromEntries(a.filter((t=>t.block)).map((t=>{let{className:e,block:n}=t;return[n.start,e]}))),m=Object.fromEntries(a.filter((t=>t.block)).map((t=>{let{className:e,block:n}=t;return[n.end,e]})));for(let i=0;i<h.length;){const t=h[i].match(u);if(!t){i+=1;continue}const e=t.slice(1).find((t=>void 0!==t));p[e]?d[p[e]].range+=`${i},`:f[e]?d[f[e]].start=i:m[e]&&(d[m[e]].range+=`${d[m[e]].start}-${i-1},`),h.splice(i,1)}n=h.join("\n");const g={};return Object.entries(d).forEach((t=>{let[e,{range:n}]=t;i()(n).forEach((t=>{g[t]??=[],g[t].push(e)}))})),{lineClassNames:g,code:n}}function p(t){const e={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(t.plain).forEach((t=>{let[r,i]=t;const a=e[r];a&&"string"==typeof i&&(n[a]=i)})),n}},7484:function(t){t.exports=function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",a="minute",s="hour",o="day",l="week",c="month",u="quarter",h="year",d="date",p="Invalid Date",f=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,m=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},y=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},b={s:y,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+y(r,2,"0")+":"+y(i,2,"0")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),a=n-i<0,s=e.clone().add(r+(a?-1:1),c);return+(-(r+(n-i)/(a?i-s:s-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:l,d:o,D:d,h:s,m:a,s:i,ms:r,Q:u}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},x="en",v={};v[x]=g;var _=function(t){return t instanceof S},k=function t(e,n,r){var i;if(!e)return x;if("string"==typeof e){var a=e.toLowerCase();v[a]&&(i=a),n&&(v[a]=n,i=a);var s=e.split("-");if(!i&&s.length>1)return t(s[0])}else{var o=e.name;v[o]=e,i=o}return!r&&i&&(x=i),i||!r&&x},T=function(t,e){if(_(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new S(n)},w=b;w.l=k,w.i=_,w.w=function(t,e){return T(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var S=function(){function g(t){this.$L=k(t.locale,null,!0),this.parse(t)}var y=g.prototype;return y.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(w.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match(f);if(r){var i=r[2]-1||0,a=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},y.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},y.$utils=function(){return w},y.isValid=function(){return!(this.$d.toString()===p)},y.isSame=function(t,e){var n=T(t);return this.startOf(e)<=n&&n<=this.endOf(e)},y.isAfter=function(t,e){return T(t)<this.startOf(e)},y.isBefore=function(t,e){return this.endOf(e)<T(t)},y.$g=function(t,e,n){return w.u(t)?this[e]:this.set(n,t)},y.unix=function(){return Math.floor(this.valueOf()/1e3)},y.valueOf=function(){return this.$d.getTime()},y.startOf=function(t,e){var n=this,r=!!w.u(e)||e,u=w.p(t),p=function(t,e){var i=w.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(o)},f=function(t,e){return w.w(n.toDate()[t].apply(n.toDate("s"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},m=this.$W,g=this.$M,y=this.$D,b="set"+(this.$u?"UTC":"");switch(u){case h:return r?p(1,0):p(31,11);case c:return r?p(1,g):p(0,g+1);case l:var x=this.$locale().weekStart||0,v=(m<x?m+7:m)-x;return p(r?y-v:y+(6-v),g);case o:case d:return f(b+"Hours",0);case s:return f(b+"Minutes",1);case a:return f(b+"Seconds",2);case i:return f(b+"Milliseconds",3);default:return this.clone()}},y.endOf=function(t){return this.startOf(t,!1)},y.$set=function(t,e){var n,l=w.p(t),u="set"+(this.$u?"UTC":""),p=(n={},n[o]=u+"Date",n[d]=u+"Date",n[c]=u+"Month",n[h]=u+"FullYear",n[s]=u+"Hours",n[a]=u+"Minutes",n[i]=u+"Seconds",n[r]=u+"Milliseconds",n)[l],f=l===o?this.$D+(e-this.$W):e;if(l===c||l===h){var m=this.clone().set(d,1);m.$d[p](f),m.init(),this.$d=m.set(d,Math.min(this.$D,m.daysInMonth())).$d}else p&&this.$d[p](f);return this.init(),this},y.set=function(t,e){return this.clone().$set(t,e)},y.get=function(t){return this[w.p(t)]()},y.add=function(r,u){var d,p=this;r=Number(r);var f=w.p(u),m=function(t){var e=T(p);return w.w(e.date(e.date()+Math.round(t*r)),p)};if(f===c)return this.set(c,this.$M+r);if(f===h)return this.set(h,this.$y+r);if(f===o)return m(1);if(f===l)return m(7);var g=(d={},d[a]=e,d[s]=n,d[i]=t,d)[f]||1,y=this.$d.getTime()+r*g;return w.w(y,this)},y.subtract=function(t,e){return this.add(-1*t,e)},y.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||p;var r=t||"YYYY-MM-DDTHH:mm:ssZ",i=w.z(this),a=this.$H,s=this.$m,o=this.$M,l=n.weekdays,c=n.months,u=function(t,n,i,a){return t&&(t[n]||t(e,r))||i[n].slice(0,a)},h=function(t){return w.s(a%12||12,t,"0")},d=n.meridiem||function(t,e,n){var r=t<12?"AM":"PM";return n?r.toLowerCase():r},f={YY:String(this.$y).slice(-2),YYYY:this.$y,M:o+1,MM:w.s(o+1,2,"0"),MMM:u(n.monthsShort,o,c,3),MMMM:u(c,o),D:this.$D,DD:w.s(this.$D,2,"0"),d:String(this.$W),dd:u(n.weekdaysMin,this.$W,l,2),ddd:u(n.weekdaysShort,this.$W,l,3),dddd:l[this.$W],H:String(a),HH:w.s(a,2,"0"),h:h(1),hh:h(2),a:d(a,s,!0),A:d(a,s,!1),m:String(s),mm:w.s(s,2,"0"),s:String(this.$s),ss:w.s(this.$s,2,"0"),SSS:w.s(this.$ms,3,"0"),Z:i};return r.replace(m,(function(t,e){return e||f[t]||i.replace(":","")}))},y.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},y.diff=function(r,d,p){var f,m=w.p(d),g=T(r),y=(g.utcOffset()-this.utcOffset())*e,b=this-g,x=w.m(this,g);return x=(f={},f[h]=x/12,f[c]=x,f[u]=x/3,f[l]=(b-y)/6048e5,f[o]=(b-y)/864e5,f[s]=b/n,f[a]=b/e,f[i]=b/t,f)[m]||b,p?x:w.a(x)},y.daysInMonth=function(){return this.endOf(c).$D},y.$locale=function(){return v[this.$L]},y.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=k(t,e,!0);return r&&(n.$L=r),n},y.clone=function(){return w.w(this.$d,this)},y.toDate=function(){return new Date(this.valueOf())},y.toJSON=function(){return this.isValid()?this.toISOString():null},y.toISOString=function(){return this.$d.toISOString()},y.toString=function(){return this.$d.toUTCString()},g}(),E=S.prototype;return T.prototype=E,[["$ms",r],["$s",i],["$m",a],["$H",s],["$W",o],["$M",c],["$y",h],["$D",d]].forEach((function(t){E[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),T.extend=function(t,e){return t.$i||(t(e,S,T),t.$i=!0),T},T.locale=k,T.isDayjs=_,T.unix=function(t){return T(1e3*t)},T.en=v[x],T.Ls=v,T.p={},T}()},8734:function(t){t.exports=function(){"use strict";return function(t,e){var n=e.prototype,r=n.format;n.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return r.bind(this)(t);var i=this.$utils(),a=(t||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(t){switch(t){case"Q":return Math.ceil((e.$M+1)/3);case"Do":return n.ordinal(e.$D);case"gggg":return e.weekYear();case"GGGG":return e.isoWeekYear();case"wo":return n.ordinal(e.week(),"W");case"w":case"ww":return i.s(e.week(),"w"===t?1:2,"0");case"W":case"WW":return i.s(e.isoWeek(),"W"===t?1:2,"0");case"k":case"kk":return i.s(String(0===e.$H?24:e.$H),"k"===t?1:2,"0");case"X":return Math.floor(e.$d.getTime()/1e3);case"x":return e.$d.getTime();case"z":return"["+e.offsetName()+"]";case"zzz":return"["+e.offsetName("long")+"]";default:return t}}));return r.bind(this)(a)}}}()},285:function(t){t.exports=function(){"use strict";var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},e=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d\d/,r=/\d\d?/,i=/\d*[^-_:/,()\s\d]+/,a={},s=function(t){return(t=+t)+(t>68?1900:2e3)},o=function(t){return function(e){this[t]=+e}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(t){(this.zone||(this.zone={})).offset=function(t){if(!t)return 0;if("Z"===t)return 0;var e=t.match(/([+-]|\d\d)/g),n=60*e[1]+(+e[2]||0);return 0===n?0:"+"===e[0]?-n:n}(t)}],c=function(t){var e=a[t];return e&&(e.indexOf?e:e.s.concat(e.f))},u=function(t,e){var n,r=a.meridiem;if(r){for(var i=1;i<=24;i+=1)if(t.indexOf(r(i,0,e))>-1){n=i>12;break}}else n=t===(e?"pm":"PM");return n},h={A:[i,function(t){this.afternoon=u(t,!1)}],a:[i,function(t){this.afternoon=u(t,!0)}],S:[/\d/,function(t){this.milliseconds=100*+t}],SS:[n,function(t){this.milliseconds=10*+t}],SSS:[/\d{3}/,function(t){this.milliseconds=+t}],s:[r,o("seconds")],ss:[r,o("seconds")],m:[r,o("minutes")],mm:[r,o("minutes")],H:[r,o("hours")],h:[r,o("hours")],HH:[r,o("hours")],hh:[r,o("hours")],D:[r,o("day")],DD:[n,o("day")],Do:[i,function(t){var e=a.ordinal,n=t.match(/\d+/);if(this.day=n[0],e)for(var r=1;r<=31;r+=1)e(r).replace(/\[|\]/g,"")===t&&(this.day=r)}],M:[r,o("month")],MM:[n,o("month")],MMM:[i,function(t){var e=c("months"),n=(c("monthsShort")||e.map((function(t){return t.slice(0,3)}))).indexOf(t)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(t){var e=c("months").indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e}],Y:[/[+-]?\d+/,o("year")],YY:[n,function(t){this.year=s(t)}],YYYY:[/\d{4}/,o("year")],Z:l,ZZ:l};function d(n){var r,i;r=n,i=a&&a.formats;for(var s=(n=r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(e,n,r){var a=r&&r.toUpperCase();return n||i[r]||t[r]||i[a].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(t,e,n){return e||n.slice(1)}))}))).match(e),o=s.length,l=0;l<o;l+=1){var c=s[l],u=h[c],d=u&&u[0],p=u&&u[1];s[l]=p?{regex:d,parser:p}:c.replace(/^\[|\]$/g,"")}return function(t){for(var e={},n=0,r=0;n<o;n+=1){var i=s[n];if("string"==typeof i)r+=i.length;else{var a=i.regex,l=i.parser,c=t.slice(r),u=a.exec(c)[0];l.call(e,u),t=t.replace(u,"")}}return function(t){var e=t.afternoon;if(void 0!==e){var n=t.hours;e?n<12&&(t.hours+=12):12===n&&(t.hours=0),delete t.afternoon}}(e),e}}return function(t,e,n){n.p.customParseFormat=!0,t&&t.parseTwoDigitYear&&(s=t.parseTwoDigitYear);var r=e.prototype,i=r.parse;r.parse=function(t){var e=t.date,r=t.utc,s=t.args;this.$u=r;var o=s[1];if("string"==typeof o){var l=!0===s[2],c=!0===s[3],u=l||c,h=s[2];c&&(h=s[2]),a=this.$locale(),!l&&h&&(a=n.Ls[h]),this.$d=function(t,e,n){try{if(["x","X"].indexOf(e)>-1)return new Date(("X"===e?1e3:1)*t);var r=d(e)(t),i=r.year,a=r.month,s=r.day,o=r.hours,l=r.minutes,c=r.seconds,u=r.milliseconds,h=r.zone,p=new Date,f=s||(i||a?1:p.getDate()),m=i||p.getFullYear(),g=0;i&&!a||(g=a>0?a-1:p.getMonth());var y=o||0,b=l||0,x=c||0,v=u||0;return h?new Date(Date.UTC(m,g,f,y,b,x,v+60*h.offset*1e3)):n?new Date(Date.UTC(m,g,f,y,b,x,v)):new Date(m,g,f,y,b,x,v)}catch(t){return new Date("")}}(e,o,r),this.init(),h&&!0!==h&&(this.$L=this.locale(h).$L),u&&e!=this.format(o)&&(this.$d=new Date("")),a={}}else if(o instanceof Array)for(var p=o.length,f=1;f<=p;f+=1){s[1]=o[f-1];var m=n.apply(this,s);if(m.isValid()){this.$d=m.$d,this.$L=m.$L,this.init();break}f===p&&(this.$d=new Date(""))}else i.call(this,t)}}}()},9542:function(t){t.exports=function(){"use strict";var t="day";return function(e,n,r){var i=function(e){return e.add(4-e.isoWeekday(),t)},a=n.prototype;a.isoWeekYear=function(){return i(this).year()},a.isoWeek=function(e){if(!this.$utils().u(e))return this.add(7*(e-this.isoWeek()),t);var n,a,s,o=i(this),l=(n=this.isoWeekYear(),s=4-(a=(this.$u?r.utc:r)().year(n).startOf("year")).isoWeekday(),a.isoWeekday()>4&&(s+=7),a.add(s,t));return o.diff(l,"week")+1},a.isoWeekday=function(t){return this.$utils().u(t)?this.day()||7:this.day(this.day()%7?t:t-7)};var s=a.startOf;a.startOf=function(t,e){var n=this.$utils(),r=!!n.u(e)||e;return"isoweek"===n.p(t)?r?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):s.bind(this)(t,e)}}}()},7856:function(t){t.exports=function(){"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,n){return e=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},e(t,n)}function n(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function r(t,i,a){return r=n()?Reflect.construct:function(t,n,r){var i=[null];i.push.apply(i,n);var a=new(Function.bind.apply(t,i));return r&&e(a,r.prototype),a},r.apply(null,arguments)}function i(t){return a(t)||s(t)||o(t)||c()}function a(t){if(Array.isArray(t))return l(t)}function s(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function o(t,e){if(t){if("string"==typeof t)return l(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(t,e):void 0}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function c(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u=Object.hasOwnProperty,h=Object.setPrototypeOf,d=Object.isFrozen,p=Object.getPrototypeOf,f=Object.getOwnPropertyDescriptor,m=Object.freeze,g=Object.seal,y=Object.create,b="undefined"!=typeof Reflect&&Reflect,x=b.apply,v=b.construct;x||(x=function(t,e,n){return t.apply(e,n)}),m||(m=function(t){return t}),g||(g=function(t){return t}),v||(v=function(t,e){return r(t,i(e))});var _=L(Array.prototype.forEach),k=L(Array.prototype.pop),T=L(Array.prototype.push),w=L(String.prototype.toLowerCase),S=L(String.prototype.toString),E=L(String.prototype.match),C=L(String.prototype.replace),D=L(String.prototype.indexOf),A=L(String.prototype.trim),O=L(RegExp.prototype.test),I=N(TypeError);function L(t){return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return x(t,e,r)}}function N(t){return function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return v(t,n)}}function M(t,e,n){n=n||w,h&&h(t,null);for(var r=e.length;r--;){var i=e[r];if("string"==typeof i){var a=n(i);a!==i&&(d(e)||(e[r]=a),i=a)}t[i]=!0}return t}function F(t){var e,n=y(null);for(e in t)!0===x(u,t,[e])&&(n[e]=t[e]);return n}function B(t,e){for(;null!==t;){var n=f(t,e);if(n){if(n.get)return L(n.get);if("function"==typeof n.value)return L(n.value)}t=p(t)}function r(t){return console.warn("fallback value for",t),null}return r}var R=m(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),$=m(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Z=m(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),j=m(["animate","color-profile","cursor","discard","fedropshadow","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),P=m(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"]),z=m(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Y=m(["#text"]),U=m(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),W=m(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),H=m(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),q=m(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),V=g(/\{\{[\w\W]*|[\w\W]*\}\}/gm),G=g(/<%[\w\W]*|[\w\W]*%>/gm),X=g(/\${[\w\W]*}/gm),K=g(/^data-[\-\w.\u00B7-\uFFFF]/),Q=g(/^aria-[\-\w]+$/),J=g(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),tt=g(/^(?:\w+script|data):/i),et=g(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),nt=g(/^html$/i),rt=function(){return"undefined"==typeof window?null:window},it=function(e,n){if("object"!==t(e)||"function"!=typeof e.createPolicy)return null;var r=null,i="data-tt-policy-suffix";n.currentScript&&n.currentScript.hasAttribute(i)&&(r=n.currentScript.getAttribute(i));var a="dompurify"+(r?"#"+r:"");try{return e.createPolicy(a,{createHTML:function(t){return t},createScriptURL:function(t){return t}})}catch(s){return console.warn("TrustedTypes policy "+a+" could not be created."),null}};function at(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:rt(),n=function(t){return at(t)};if(n.version="2.4.3",n.removed=[],!e||!e.document||9!==e.document.nodeType)return n.isSupported=!1,n;var r=e.document,a=e.document,s=e.DocumentFragment,o=e.HTMLTemplateElement,l=e.Node,c=e.Element,u=e.NodeFilter,h=e.NamedNodeMap,d=void 0===h?e.NamedNodeMap||e.MozNamedAttrMap:h,p=e.HTMLFormElement,f=e.DOMParser,g=e.trustedTypes,y=c.prototype,b=B(y,"cloneNode"),x=B(y,"nextSibling"),v=B(y,"childNodes"),L=B(y,"parentNode");if("function"==typeof o){var N=a.createElement("template");N.content&&N.content.ownerDocument&&(a=N.content.ownerDocument)}var st=it(g,r),ot=st?st.createHTML(""):"",lt=a,ct=lt.implementation,ut=lt.createNodeIterator,ht=lt.createDocumentFragment,dt=lt.getElementsByTagName,pt=r.importNode,ft={};try{ft=F(a).documentMode?a.documentMode:{}}catch(Le){}var mt={};n.isSupported="function"==typeof L&&ct&&void 0!==ct.createHTMLDocument&&9!==ft;var gt,yt,bt=V,xt=G,vt=X,_t=K,kt=Q,Tt=tt,wt=et,St=J,Et=null,Ct=M({},[].concat(i(R),i($),i(Z),i(P),i(Y))),Dt=null,At=M({},[].concat(i(U),i(W),i(H),i(q))),Ot=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),It=null,Lt=null,Nt=!0,Mt=!0,Ft=!1,Bt=!1,Rt=!1,$t=!1,Zt=!1,jt=!1,Pt=!1,zt=!1,Yt=!0,Ut=!1,Wt="user-content-",Ht=!0,qt=!1,Vt={},Gt=null,Xt=M({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Kt=null,Qt=M({},["audio","video","img","source","image","track"]),Jt=null,te=M({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),ee="http://www.w3.org/1998/Math/MathML",ne="http://www.w3.org/2000/svg",re="http://www.w3.org/1999/xhtml",ie=re,ae=!1,se=null,oe=M({},[ee,ne,re],S),le=["application/xhtml+xml","text/html"],ce="text/html",ue=null,he=a.createElement("form"),de=function(t){return t instanceof RegExp||t instanceof Function},pe=function(e){ue&&ue===e||(e&&"object"===t(e)||(e={}),e=F(e),gt=gt=-1===le.indexOf(e.PARSER_MEDIA_TYPE)?ce:e.PARSER_MEDIA_TYPE,yt="application/xhtml+xml"===gt?S:w,Et="ALLOWED_TAGS"in e?M({},e.ALLOWED_TAGS,yt):Ct,Dt="ALLOWED_ATTR"in e?M({},e.ALLOWED_ATTR,yt):At,se="ALLOWED_NAMESPACES"in e?M({},e.ALLOWED_NAMESPACES,S):oe,Jt="ADD_URI_SAFE_ATTR"in e?M(F(te),e.ADD_URI_SAFE_ATTR,yt):te,Kt="ADD_DATA_URI_TAGS"in e?M(F(Qt),e.ADD_DATA_URI_TAGS,yt):Qt,Gt="FORBID_CONTENTS"in e?M({},e.FORBID_CONTENTS,yt):Xt,It="FORBID_TAGS"in e?M({},e.FORBID_TAGS,yt):{},Lt="FORBID_ATTR"in e?M({},e.FORBID_ATTR,yt):{},Vt="USE_PROFILES"in e&&e.USE_PROFILES,Nt=!1!==e.ALLOW_ARIA_ATTR,Mt=!1!==e.ALLOW_DATA_ATTR,Ft=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Bt=e.SAFE_FOR_TEMPLATES||!1,Rt=e.WHOLE_DOCUMENT||!1,jt=e.RETURN_DOM||!1,Pt=e.RETURN_DOM_FRAGMENT||!1,zt=e.RETURN_TRUSTED_TYPE||!1,Zt=e.FORCE_BODY||!1,Yt=!1!==e.SANITIZE_DOM,Ut=e.SANITIZE_NAMED_PROPS||!1,Ht=!1!==e.KEEP_CONTENT,qt=e.IN_PLACE||!1,St=e.ALLOWED_URI_REGEXP||St,ie=e.NAMESPACE||re,e.CUSTOM_ELEMENT_HANDLING&&de(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ot.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&de(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Ot.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Ot.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Bt&&(Mt=!1),Pt&&(jt=!0),Vt&&(Et=M({},i(Y)),Dt=[],!0===Vt.html&&(M(Et,R),M(Dt,U)),!0===Vt.svg&&(M(Et,$),M(Dt,W),M(Dt,q)),!0===Vt.svgFilters&&(M(Et,Z),M(Dt,W),M(Dt,q)),!0===Vt.mathMl&&(M(Et,P),M(Dt,H),M(Dt,q))),e.ADD_TAGS&&(Et===Ct&&(Et=F(Et)),M(Et,e.ADD_TAGS,yt)),e.ADD_ATTR&&(Dt===At&&(Dt=F(Dt)),M(Dt,e.ADD_ATTR,yt)),e.ADD_URI_SAFE_ATTR&&M(Jt,e.ADD_URI_SAFE_ATTR,yt),e.FORBID_CONTENTS&&(Gt===Xt&&(Gt=F(Gt)),M(Gt,e.FORBID_CONTENTS,yt)),Ht&&(Et["#text"]=!0),Rt&&M(Et,["html","head","body"]),Et.table&&(M(Et,["tbody"]),delete It.tbody),m&&m(e),ue=e)},fe=M({},["mi","mo","mn","ms","mtext"]),me=M({},["foreignobject","desc","title","annotation-xml"]),ge=M({},["title","style","font","a","script"]),ye=M({},$);M(ye,Z),M(ye,j);var be=M({},P);M(be,z);var xe=function(t){var e=L(t);e&&e.tagName||(e={namespaceURI:ie,tagName:"template"});var n=w(t.tagName),r=w(e.tagName);return!!se[t.namespaceURI]&&(t.namespaceURI===ne?e.namespaceURI===re?"svg"===n:e.namespaceURI===ee?"svg"===n&&("annotation-xml"===r||fe[r]):Boolean(ye[n]):t.namespaceURI===ee?e.namespaceURI===re?"math"===n:e.namespaceURI===ne?"math"===n&&me[r]:Boolean(be[n]):t.namespaceURI===re?!(e.namespaceURI===ne&&!me[r])&&!(e.namespaceURI===ee&&!fe[r])&&!be[n]&&(ge[n]||!ye[n]):!("application/xhtml+xml"!==gt||!se[t.namespaceURI]))},ve=function(t){T(n.removed,{element:t});try{t.parentNode.removeChild(t)}catch(Le){try{t.outerHTML=ot}catch(Le){t.remove()}}},_e=function(t,e){try{T(n.removed,{attribute:e.getAttributeNode(t),from:e})}catch(Le){T(n.removed,{attribute:null,from:e})}if(e.removeAttribute(t),"is"===t&&!Dt[t])if(jt||Pt)try{ve(e)}catch(Le){}else try{e.setAttribute(t,"")}catch(Le){}},ke=function(t){var e,n;if(Zt)t="<remove></remove>"+t;else{var r=E(t,/^[\r\n\t ]+/);n=r&&r[0]}"application/xhtml+xml"===gt&&ie===re&&(t='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+t+"</body></html>");var i=st?st.createHTML(t):t;if(ie===re)try{e=(new f).parseFromString(i,gt)}catch(Le){}if(!e||!e.documentElement){e=ct.createDocument(ie,"template",null);try{e.documentElement.innerHTML=ae?ot:i}catch(Le){}}var s=e.body||e.documentElement;return t&&n&&s.insertBefore(a.createTextNode(n),s.childNodes[0]||null),ie===re?dt.call(e,Rt?"html":"body")[0]:Rt?e.documentElement:s},Te=function(t){return ut.call(t.ownerDocument||t,t,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT,null,!1)},we=function(t){return t instanceof p&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||!(t.attributes instanceof d)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore||"function"!=typeof t.hasChildNodes)},Se=function(e){return"object"===t(l)?e instanceof l:e&&"object"===t(e)&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},Ee=function(t,e,r){mt[t]&&_(mt[t],(function(t){t.call(n,e,r,ue)}))},Ce=function(t){var e;if(Ee("beforeSanitizeElements",t,null),we(t))return ve(t),!0;if(O(/[\u0080-\uFFFF]/,t.nodeName))return ve(t),!0;var r=yt(t.nodeName);if(Ee("uponSanitizeElement",t,{tagName:r,allowedTags:Et}),t.hasChildNodes()&&!Se(t.firstElementChild)&&(!Se(t.content)||!Se(t.content.firstElementChild))&&O(/<[/\w]/g,t.innerHTML)&&O(/<[/\w]/g,t.textContent))return ve(t),!0;if("select"===r&&O(/<template/i,t.innerHTML))return ve(t),!0;if(!Et[r]||It[r]){if(!It[r]&&Ae(r)){if(Ot.tagNameCheck instanceof RegExp&&O(Ot.tagNameCheck,r))return!1;if(Ot.tagNameCheck instanceof Function&&Ot.tagNameCheck(r))return!1}if(Ht&&!Gt[r]){var i=L(t)||t.parentNode,a=v(t)||t.childNodes;if(a&&i)for(var s=a.length-1;s>=0;--s)i.insertBefore(b(a[s],!0),x(t))}return ve(t),!0}return t instanceof c&&!xe(t)?(ve(t),!0):"noscript"!==r&&"noembed"!==r||!O(/<\/no(script|embed)/i,t.innerHTML)?(Bt&&3===t.nodeType&&(e=t.textContent,e=C(e,bt," "),e=C(e,xt," "),e=C(e,vt," "),t.textContent!==e&&(T(n.removed,{element:t.cloneNode()}),t.textContent=e)),Ee("afterSanitizeElements",t,null),!1):(ve(t),!0)},De=function(t,e,n){if(Yt&&("id"===e||"name"===e)&&(n in a||n in he))return!1;if(Mt&&!Lt[e]&&O(_t,e));else if(Nt&&O(kt,e));else if(!Dt[e]||Lt[e]){if(!(Ae(t)&&(Ot.tagNameCheck instanceof RegExp&&O(Ot.tagNameCheck,t)||Ot.tagNameCheck instanceof Function&&Ot.tagNameCheck(t))&&(Ot.attributeNameCheck instanceof RegExp&&O(Ot.attributeNameCheck,e)||Ot.attributeNameCheck instanceof Function&&Ot.attributeNameCheck(e))||"is"===e&&Ot.allowCustomizedBuiltInElements&&(Ot.tagNameCheck instanceof RegExp&&O(Ot.tagNameCheck,n)||Ot.tagNameCheck instanceof Function&&Ot.tagNameCheck(n))))return!1}else if(Jt[e]);else if(O(St,C(n,wt,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==D(n,"data:")||!Kt[t])if(Ft&&!O(Tt,C(n,wt,"")));else if(n)return!1;return!0},Ae=function(t){return t.indexOf("-")>0},Oe=function(e){var r,i,a,s;Ee("beforeSanitizeAttributes",e,null);var o=e.attributes;if(o){var l={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Dt};for(s=o.length;s--;){var c=r=o[s],u=c.name,h=c.namespaceURI;if(i="value"===u?r.value:A(r.value),a=yt(u),l.attrName=a,l.attrValue=i,l.keepAttr=!0,l.forceKeepAttr=void 0,Ee("uponSanitizeAttribute",e,l),i=l.attrValue,!l.forceKeepAttr&&(_e(u,e),l.keepAttr))if(O(/\/>/i,i))_e(u,e);else{Bt&&(i=C(i,bt," "),i=C(i,xt," "),i=C(i,vt," "));var d=yt(e.nodeName);if(De(d,a,i)){if(!Ut||"id"!==a&&"name"!==a||(_e(u,e),i=Wt+i),st&&"object"===t(g)&&"function"==typeof g.getAttributeType)if(h);else switch(g.getAttributeType(d,a)){case"TrustedHTML":i=st.createHTML(i);break;case"TrustedScriptURL":i=st.createScriptURL(i)}try{h?e.setAttributeNS(h,u,i):e.setAttribute(u,i),k(n.removed)}catch(Le){}}}}Ee("afterSanitizeAttributes",e,null)}},Ie=function t(e){var n,r=Te(e);for(Ee("beforeSanitizeShadowDOM",e,null);n=r.nextNode();)Ee("uponSanitizeShadowNode",n,null),Ce(n)||(n.content instanceof s&&t(n.content),Oe(n));Ee("afterSanitizeShadowDOM",e,null)};return n.sanitize=function(i){var a,o,c,u,h,d=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if((ae=!i)&&(i="\x3c!--\x3e"),"string"!=typeof i&&!Se(i)){if("function"!=typeof i.toString)throw I("toString is not a function");if("string"!=typeof(i=i.toString()))throw I("dirty is not a string, aborting")}if(!n.isSupported){if("object"===t(e.toStaticHTML)||"function"==typeof e.toStaticHTML){if("string"==typeof i)return e.toStaticHTML(i);if(Se(i))return e.toStaticHTML(i.outerHTML)}return i}if($t||pe(d),n.removed=[],"string"==typeof i&&(qt=!1),qt){if(i.nodeName){var p=yt(i.nodeName);if(!Et[p]||It[p])throw I("root node is forbidden and cannot be sanitized in-place")}}else if(i instanceof l)1===(o=(a=ke("\x3c!----\x3e")).ownerDocument.importNode(i,!0)).nodeType&&"BODY"===o.nodeName||"HTML"===o.nodeName?a=o:a.appendChild(o);else{if(!jt&&!Bt&&!Rt&&-1===i.indexOf("<"))return st&&zt?st.createHTML(i):i;if(!(a=ke(i)))return jt?null:zt?ot:""}a&&Zt&&ve(a.firstChild);for(var f=Te(qt?i:a);c=f.nextNode();)3===c.nodeType&&c===u||Ce(c)||(c.content instanceof s&&Ie(c.content),Oe(c),u=c);if(u=null,qt)return i;if(jt){if(Pt)for(h=ht.call(a.ownerDocument);a.firstChild;)h.appendChild(a.firstChild);else h=a;return Dt.shadowroot&&(h=pt.call(r,h,!0)),h}var m=Rt?a.outerHTML:a.innerHTML;return Rt&&Et["!doctype"]&&a.ownerDocument&&a.ownerDocument.doctype&&a.ownerDocument.doctype.name&&O(nt,a.ownerDocument.doctype.name)&&(m="<!DOCTYPE "+a.ownerDocument.doctype.name+">\n"+m),Bt&&(m=C(m,bt," "),m=C(m,xt," "),m=C(m,vt," ")),st&&zt?st.createHTML(m):m},n.setConfig=function(t){pe(t),$t=!0},n.clearConfig=function(){ue=null,$t=!1},n.isValidAttribute=function(t,e,n){ue||pe({});var r=yt(t),i=yt(e);return De(r,i,n)},n.addHook=function(t,e){"function"==typeof e&&(mt[t]=mt[t]||[],T(mt[t],e))},n.removeHook=function(t){if(mt[t])return k(mt[t])},n.removeHooks=function(t){mt[t]&&(mt[t]=[])},n.removeAllHooks=function(){mt={}},n}return at()}()},6432:(t,e,n)=>{"use strict";n.d(e,{a:()=>Pn,b:()=>Ys,c:()=>zt,d:()=>Zn,e:()=>jt,f:()=>Gs,g:()=>dr,h:()=>wl,i:()=>ys,j:()=>qr,k:()=>Gr,l:()=>It,m:()=>Zr,n:()=>Bt,o:()=>wp,p:()=>So,s:()=>vr});const r=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];var r=Array.from("string"==typeof t?[t]:t);r[r.length-1]=r[r.length-1].replace(/\r?\n([\t ]*)$/,"");var i=r.reduce((function(t,e){var n=e.match(/\n([\t ]+|(?!\s).)/g);return n?t.concat(n.map((function(t){var e,n;return null!==(n=null===(e=t.match(/[\t ]/g))||void 0===e?void 0:e.length)&&void 0!==n?n:0}))):t}),[]);if(i.length){var a=new RegExp("\n[\t ]{"+Math.min.apply(Math,i)+"}","g");r=r.map((function(t){return t.replace(a,"\n")}))}r[0]=r[0].replace(/^\r?\n/,"");var s=r[0];return e.forEach((function(t,e){var n=s.match(/(?:^|\n)( *)$/),i=n?n[1]:"",a=t;"string"==typeof t&&t.includes("\n")&&(a=String(t).split("\n").map((function(t,e){return 0===e?t:""+i+t})).join("\n")),s+=a+r[e+1]})),s};var i=n(7484),a=n.n(i),s=n(7967),o=n(9373),l=n(7856),u=n.n(l),h=n(1610),d=n(1691);const p=(t,e)=>{const n=h.Z.parse(t);for(const r in e)n[r]=d.Z.channel.clamp[r](e[r]);return h.Z.stringify(n)},f=(t,e)=>{const n=h.Z.parse(t),r={};for(const i in e)e[i]&&(r[i]=n[i]+e[i]);return p(t,r)};var m=n(1883);const g=(t,e,n=0,r=1)=>{if("number"!=typeof t)return p(t,{a:e});const i=m.Z.set({r:d.Z.channel.clamp.r(t),g:d.Z.channel.clamp.g(e),b:d.Z.channel.clamp.b(n),a:d.Z.channel.clamp.a(r)});return h.Z.stringify(i)},y=(t,e,n=50)=>{const{r:r,g:i,b:a,a:s}=h.Z.parse(t),{r:o,g:l,b:c,a:u}=h.Z.parse(e),d=n/100,p=2*d-1,f=s-u,m=((p*f==-1?p:(p+f)/(1+p*f))+1)/2,y=1-m;return g(r*m+o*y,i*m+l*y,a*m+c*y,s*d+u*(1-d))},b=(t,e=100)=>{const n=h.Z.parse(t);return n.r=255-n.r,n.g=255-n.g,n.b=255-n.b,y(n,t,e)};var x=n(7201),v=n(5920),_=n(2454),k="comm",T="rule",w="decl",S=Math.abs,E=String.fromCharCode;Object.assign;function C(t){return t.trim()}function D(t,e,n){return t.replace(e,n)}function A(t,e){return t.indexOf(e)}function O(t,e){return 0|t.charCodeAt(e)}function I(t,e,n){return t.slice(e,n)}function L(t){return t.length}function N(t){return t.length}function M(t,e){return e.push(t),t}function F(t,e){for(var n="",r=N(t),i=0;i<r;i++)n+=e(t[i],i,t,e)||"";return n}function B(t,e,n,r){switch(t.type){case"@import":case w:return t.return=t.return||t.value;case k:return"";case"@keyframes":return t.return=t.value+"{"+F(t.children,r)+"}";case T:t.value=t.props.join(",")}return L(n=F(t.children,r))?t.return=t.value+"{"+n+"}":""}var R=1,$=1,Z=0,j=0,P=0,z="";function Y(t,e,n,r,i,a,s){return{value:t,root:e,parent:n,type:r,props:i,children:a,line:R,column:$,length:s,return:""}}function U(){return P=j>0?O(z,--j):0,$--,10===P&&($=1,R--),P}function W(){return P=j<Z?O(z,j++):0,$++,10===P&&($=1,R++),P}function H(){return O(z,j)}function q(){return j}function V(t,e){return I(z,t,e)}function G(t){switch(t){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function X(t){return R=$=1,Z=L(z=t),j=0,[]}function K(t){return z="",t}function Q(t){return C(V(j-1,et(91===t?t+2:40===t?t+1:t)))}function J(t){for(;(P=H())&&P<33;)W();return G(t)>2||G(P)>3?"":" "}function tt(t,e){for(;--e&&W()&&!(P<48||P>102||P>57&&P<65||P>70&&P<97););return V(t,q()+(e<6&&32==H()&&32==W()))}function et(t){for(;W();)switch(P){case t:return j;case 34:case 39:34!==t&&39!==t&&et(P);break;case 40:41===t&&et(t);break;case 92:W()}return j}function nt(t,e){for(;W()&&t+P!==57&&(t+P!==84||47!==H()););return"/*"+V(e,j-1)+"*"+E(47===t?t:W())}function rt(t){for(;!G(H());)W();return V(t,j)}function it(t){return K(at("",null,null,null,[""],t=X(t),0,[0],t))}function at(t,e,n,r,i,a,s,o,l){for(var c=0,u=0,h=s,d=0,p=0,f=0,m=1,g=1,y=1,b=0,x="",v=i,_=a,k=r,T=x;g;)switch(f=b,b=W()){case 40:if(108!=f&&58==O(T,h-1)){-1!=A(T+=D(Q(b),"&","&\f"),"&\f")&&(y=-1);break}case 34:case 39:case 91:T+=Q(b);break;case 9:case 10:case 13:case 32:T+=J(f);break;case 92:T+=tt(q()-1,7);continue;case 47:switch(H()){case 42:case 47:M(ot(nt(W(),q()),e,n),l);break;default:T+="/"}break;case 123*m:o[c++]=L(T)*y;case 125*m:case 59:case 0:switch(b){case 0:case 125:g=0;case 59+u:p>0&&L(T)-h&&M(p>32?lt(T+";",r,n,h-1):lt(D(T," ","")+";",r,n,h-2),l);break;case 59:T+=";";default:if(M(k=st(T,e,n,c,u,i,o,x,v=[],_=[],h),a),123===b)if(0===u)at(T,e,k,k,v,a,h,o,_);else switch(99===d&&110===O(T,3)?100:d){case 100:case 109:case 115:at(t,k,k,r&&M(st(t,k,k,0,0,i,o,x,i,v=[],h),_),i,_,h,o,r?v:_);break;default:at(T,k,k,k,[""],_,0,o,_)}}c=u=p=0,m=y=1,x=T="",h=s;break;case 58:h=1+L(T),p=f;default:if(m<1)if(123==b)--m;else if(125==b&&0==m++&&125==U())continue;switch(T+=E(b),b*m){case 38:y=u>0?1:(T+="\f",-1);break;case 44:o[c++]=(L(T)-1)*y,y=1;break;case 64:45===H()&&(T+=Q(W())),d=H(),u=h=L(x=T+=rt(q())),b++;break;case 45:45===f&&2==L(T)&&(m=0)}}return a}function st(t,e,n,r,i,a,s,o,l,c,u){for(var h=i-1,d=0===i?a:[""],p=N(d),f=0,m=0,g=0;f<r;++f)for(var y=0,b=I(t,h+1,h=S(m=s[f])),x=t;y<p;++y)(x=C(m>0?d[y]+" "+b:D(b,/&\f/g,d[y])))&&(l[g++]=x);return Y(t,e,n,0===i?T:o,l,c,u)}function ot(t,e,n){return Y(t,e,n,k,E(P),I(t,2,-2),0)}function lt(t,e,n,r){return Y(t,e,n,w,I(t,0,r),I(t,r+1,-1),r)}var ct=n(277),ut=n(5625),ht=n(9354);const dt=[];for(let c=0;c<256;++c)dt.push((c+256).toString(16).slice(1));function pt(t,e=0){return(dt[t[e+0]]+dt[t[e+1]]+dt[t[e+2]]+dt[t[e+3]]+"-"+dt[t[e+4]]+dt[t[e+5]]+"-"+dt[t[e+6]]+dt[t[e+7]]+"-"+dt[t[e+8]]+dt[t[e+9]]+"-"+dt[t[e+10]]+dt[t[e+11]]+dt[t[e+12]]+dt[t[e+13]]+dt[t[e+14]]+dt[t[e+15]]).toLowerCase()}const ft=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;const mt=function(t){return"string"==typeof t&&ft.test(t)};const gt=function(t){if(!mt(t))throw TypeError("Invalid UUID");let e;const n=new Uint8Array(16);return n[0]=(e=parseInt(t.slice(0,8),16))>>>24,n[1]=e>>>16&255,n[2]=e>>>8&255,n[3]=255&e,n[4]=(e=parseInt(t.slice(9,13),16))>>>8,n[5]=255&e,n[6]=(e=parseInt(t.slice(14,18),16))>>>8,n[7]=255&e,n[8]=(e=parseInt(t.slice(19,23),16))>>>8,n[9]=255&e,n[10]=(e=parseInt(t.slice(24,36),16))/1099511627776&255,n[11]=e/4294967296&255,n[12]=e>>>24&255,n[13]=e>>>16&255,n[14]=e>>>8&255,n[15]=255&e,n};function yt(t,e,n,r){switch(t){case 0:return e&n^~e&r;case 1:case 3:return e^n^r;case 2:return e&n^e&r^n&r}}function bt(t,e){return t<<e|t>>>32-e}const xt=function(t){const e=[1518500249,1859775393,2400959708,3395469782],n=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof t){const e=unescape(encodeURIComponent(t));t=[];for(let n=0;n<e.length;++n)t.push(e.charCodeAt(n))}else Array.isArray(t)||(t=Array.prototype.slice.call(t));t.push(128);const r=t.length/4+2,i=Math.ceil(r/16),a=new Array(i);for(let s=0;s<i;++s){const e=new Uint32Array(16);for(let n=0;n<16;++n)e[n]=t[64*s+4*n]<<24|t[64*s+4*n+1]<<16|t[64*s+4*n+2]<<8|t[64*s+4*n+3];a[s]=e}a[i-1][14]=8*(t.length-1)/Math.pow(2,32),a[i-1][14]=Math.floor(a[i-1][14]),a[i-1][15]=8*(t.length-1)&4294967295;for(let s=0;s<i;++s){const t=new Uint32Array(80);for(let e=0;e<16;++e)t[e]=a[s][e];for(let e=16;e<80;++e)t[e]=bt(t[e-3]^t[e-8]^t[e-14]^t[e-16],1);let r=n[0],i=n[1],o=n[2],l=n[3],c=n[4];for(let n=0;n<80;++n){const a=Math.floor(n/20),s=bt(r,5)+yt(a,i,o,l)+c+e[a]+t[n]>>>0;c=l,l=o,o=bt(i,30)>>>0,i=r,r=s}n[0]=n[0]+r>>>0,n[1]=n[1]+i>>>0,n[2]=n[2]+o>>>0,n[3]=n[3]+l>>>0,n[4]=n[4]+c>>>0}return[n[0]>>24&255,n[0]>>16&255,n[0]>>8&255,255&n[0],n[1]>>24&255,n[1]>>16&255,n[1]>>8&255,255&n[1],n[2]>>24&255,n[2]>>16&255,n[2]>>8&255,255&n[2],n[3]>>24&255,n[3]>>16&255,n[3]>>8&255,255&n[3],n[4]>>24&255,n[4]>>16&255,n[4]>>8&255,255&n[4]]},vt=function(t,e,n){function r(t,r,i,a){var s;if("string"==typeof t&&(t=function(t){t=unescape(encodeURIComponent(t));const e=[];for(let n=0;n<t.length;++n)e.push(t.charCodeAt(n));return e}(t)),"string"==typeof r&&(r=gt(r)),16!==(null===(s=r)||void 0===s?void 0:s.length))throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let o=new Uint8Array(16+t.length);if(o.set(r),o.set(t,r.length),o=n(o),o[6]=15&o[6]|e,o[8]=63&o[8]|128,i){a=a||0;for(let t=0;t<16;++t)i[a+t]=o[t];return i}return pt(o)}try{r.name=t}catch(i){}return r.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",r.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",r}("v5",80,xt),_t=vt;n(1518),n(6225);var kt=n(3349),Tt=(n(3352),n(2930),n(9542)),wt=n.n(Tt),St=n(285),Et=n.n(St),Ct=n(8734),Dt=n.n(Ct),At=n(9697);const Ot={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},It={trace:(...t)=>{},debug:(...t)=>{},info:(...t)=>{},warn:(...t)=>{},error:(...t)=>{},fatal:(...t)=>{}},Lt=function(t="fatal"){let e=Ot.fatal;"string"==typeof t?(t=t.toLowerCase())in Ot&&(e=Ot[t]):"number"==typeof t&&(e=t),It.trace=()=>{},It.debug=()=>{},It.info=()=>{},It.warn=()=>{},It.error=()=>{},It.fatal=()=>{},e<=Ot.fatal&&(It.fatal=console.error?console.error.bind(console,Nt("FATAL"),"color: orange"):console.log.bind(console,"\x1b[35m",Nt("FATAL"))),e<=Ot.error&&(It.error=console.error?console.error.bind(console,Nt("ERROR"),"color: orange"):console.log.bind(console,"\x1b[31m",Nt("ERROR"))),e<=Ot.warn&&(It.warn=console.warn?console.warn.bind(console,Nt("WARN"),"color: orange"):console.log.bind(console,"\x1b[33m",Nt("WARN"))),e<=Ot.info&&(It.info=console.info?console.info.bind(console,Nt("INFO"),"color: lightblue"):console.log.bind(console,"\x1b[34m",Nt("INFO"))),e<=Ot.debug&&(It.debug=console.debug?console.debug.bind(console,Nt("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1b[32m",Nt("DEBUG"))),e<=Ot.trace&&(It.trace=console.debug?console.debug.bind(console,Nt("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1b[32m",Nt("TRACE")))},Nt=t=>`%c${a()().format("ss.SSS")} : ${t} : `,Mt=t=>u().sanitize(t),Ft=(t,e)=>{var n;if(!1!==(null==(n=e.flowchart)?void 0:n.htmlLabels)){const n=e.securityLevel;"antiscript"===n||"strict"===n?t=Mt(t):"loose"!==n&&(t=(t=(t=Zt(t)).replace(/</g,"<").replace(/>/g,">")).replace(/=/g,"="),t=$t(t))}return t},Bt=(t,e)=>t?t=e.dompurifyConfig?u().sanitize(Ft(t,e),e.dompurifyConfig).toString():u().sanitize(Ft(t,e),{FORBID_TAGS:["style"]}).toString():t,Rt=/<br\s*\/?>/gi,$t=t=>t.replace(/#br#/g,"<br/>"),Zt=t=>t.replace(Rt,"#br#"),jt=t=>!1!==t&&!["false","null","0"].includes(String(t).trim().toLowerCase()),Pt=function(t){let e=t;if(t.split("~").length-1>=2){let t=e;do{e=t,t=e.replace(/~([^\s,:;]+)~/,"<$1>")}while(t!=e);return Pt(t)}return e},zt={getRows:t=>{if(!t)return[""];return Zt(t).replace(/\\n/g,"#br#").split("#br#")},sanitizeText:Bt,sanitizeTextOrArray:(t,e)=>"string"==typeof t?Bt(t,e):t.flat().map((t=>Bt(t,e))),hasBreaks:t=>Rt.test(t),splitBreaks:t=>t.split(Rt),lineBreakRegex:Rt,removeScript:Mt,getUrl:t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=e.replaceAll(/\(/g,"\\("),e=e.replaceAll(/\)/g,"\\)")),e},evaluate:jt},Yt=(t,e)=>f(t,e?{s:-40,l:10}:{s:-40,l:-10}),Ut="#ffffff",Wt="#f2f2f2";class Ht{constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=(0,v.Z)(this.contrast,55),this.background="#ffffff",this.tertiaryColor=f(this.primaryColor,{h:-160}),this.primaryBorderColor=Yt(this.primaryColor,this.darkMode),this.secondaryBorderColor=Yt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Yt(this.tertiaryColor,this.darkMode),this.primaryTextColor=b(this.primaryColor),this.secondaryTextColor=b(this.secondaryColor),this.tertiaryTextColor=b(this.tertiaryColor),this.lineColor=b(this.background),this.textColor=b(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.personBorder="calculated",this.personBkg="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=(0,v.Z)(this.contrast,55),this.border2=this.contrast,this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||b(this["cScale"+t]);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this.darkMode?this["cScalePeer"+t]=this["cScalePeer"+t]||(0,v.Z)(this["cScale"+t],10):this["cScalePeer"+t]=this["cScalePeer"+t]||(0,x.Z)(this["cScale"+t],10);this.scaleLabelColor=this.scaleLabelColor||(this.darkMode?"black":this.labelTextColor),this.cScaleLabel0=this.cScaleLabel0||this.cScale1,this.cScaleLabel2=this.cScaleLabel2||this.cScale1;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||f(this.mainBkg,{l:-(5+5*t)}),this["surfacePeer"+t]=this["surfacePeer"+t]||f(this.mainBkg,{l:-(8+5*t)});this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.text,this.actorBorder=(0,v.Z)(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.lineColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.sectionBkgColor=(0,v.Z)(this.contrast,30),this.sectionBkgColor2=(0,v.Z)(this.contrast,30),this.taskBorderColor=(0,x.Z)(this.contrast,10),this.taskBkgColor=this.contrast,this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor=this.text,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.gridColor=(0,v.Z)(this.border1,30),this.doneTaskBkgColor=this.done,this.doneTaskBorderColor=this.lineColor,this.critBkgColor=this.critical,this.critBorderColor=(0,x.Z)(this.critBkgColor,10),this.todayLineColor=this.critBkgColor,this.transitionColor=this.transitionColor||"#000",this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f4f4f4",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.stateBorder=this.stateBorder||"#000",this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#222",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=f(this.primaryColor,{h:64}),this.fillType3=f(this.secondaryColor,{h:64}),this.fillType4=f(this.primaryColor,{h:-64}),this.fillType5=f(this.secondaryColor,{h:-64}),this.fillType6=f(this.primaryColor,{h:128}),this.fillType7=f(this.secondaryColor,{h:128});for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["pie"+t]=this["cScale"+t];this.pie12=this.pie0,this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOpacity=this.pieOpacity||"0.7",this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.edgeLabelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=(0,x.Z)(this.pie1,25)||this.primaryColor,this.git1=this.pie2||this.secondaryColor,this.git2=this.pie3||this.tertiaryColor,this.git3=this.pie4||f(this.primaryColor,{h:-30}),this.git4=this.pie5||f(this.primaryColor,{h:-60}),this.git5=this.pie6||f(this.primaryColor,{h:-90}),this.git6=this.pie7||f(this.primaryColor,{h:60}),this.git7=this.pie8||f(this.primaryColor,{h:120}),this.gitInv0=this.gitInv0||b(this.git0),this.gitInv1=this.gitInv1||b(this.git1),this.gitInv2=this.gitInv2||b(this.git2),this.gitInv3=this.gitInv3||b(this.git3),this.gitInv4=this.gitInv4||b(this.git4),this.gitInv5=this.gitInv5||b(this.git5),this.gitInv6=this.gitInv6||b(this.git6),this.gitInv7=this.gitInv7||b(this.git7),this.branchLabelColor=this.branchLabelColor||this.labelTextColor,this.gitBranchLabel0=this.branchLabelColor,this.gitBranchLabel1="white",this.gitBranchLabel2=this.branchLabelColor,this.gitBranchLabel3="white",this.gitBranchLabel4=this.branchLabelColor,this.gitBranchLabel5=this.branchLabelColor,this.gitBranchLabel6=this.branchLabelColor,this.gitBranchLabel7=this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Ut,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Wt}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach((e=>{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}}const qt={base:{getThemeVariables:t=>{const e=new class{constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||f(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||f(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Yt(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Yt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Yt(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Yt(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||b(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||b(this.tertiaryColor),this.lineColor=this.lineColor||b(this.background),this.textColor=this.textColor||this.primaryTextColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?(0,x.Z)(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||"grey",this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||(0,x.Z)(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||b(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||(0,v.Z)(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||f(this.primaryColor,{h:30}),this.cScale4=this.cScale4||f(this.primaryColor,{h:60}),this.cScale5=this.cScale5||f(this.primaryColor,{h:90}),this.cScale6=this.cScale6||f(this.primaryColor,{h:120}),this.cScale7=this.cScale7||f(this.primaryColor,{h:150}),this.cScale8=this.cScale8||f(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||f(this.primaryColor,{h:270}),this.cScale10=this.cScale10||f(this.primaryColor,{h:300}),this.cScale11=this.cScale11||f(this.primaryColor,{h:330}),this.darkMode)for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScale"+e]=(0,x.Z)(this["cScale"+e],75);else for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScale"+e]=(0,x.Z)(this["cScale"+e],25);for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScaleInv"+e]=this["cScaleInv"+e]||b(this["cScale"+e]);for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this.darkMode?this["cScalePeer"+e]=this["cScalePeer"+e]||(0,v.Z)(this["cScale"+e],10):this["cScalePeer"+e]=this["cScalePeer"+e]||(0,x.Z)(this["cScale"+e],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScaleLabel"+e]=this["cScaleLabel"+e]||this.scaleLabelColor;const t=this.darkMode?-4:-1;for(let e=0;e<5;e++)this["surface"+e]=this["surface"+e]||f(this.mainBkg,{h:180,s:-15,l:t*(5+3*e)}),this["surfacePeer"+e]=this["surfacePeer"+e]||f(this.mainBkg,{h:180,s:-15,l:t*(8+3*e)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||f(this.primaryColor,{h:64}),this.fillType3=this.fillType3||f(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||f(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||f(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||f(this.primaryColor,{h:128}),this.fillType7=this.fillType7||f(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||f(this.primaryColor,{l:-10}),this.pie5=this.pie5||f(this.secondaryColor,{l:-10}),this.pie6=this.pie6||f(this.tertiaryColor,{l:-10}),this.pie7=this.pie7||f(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||f(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||f(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||f(this.primaryColor,{h:60,l:-20}),this.pie11=this.pie11||f(this.primaryColor,{h:-60,l:-20}),this.pie12=this.pie12||f(this.primaryColor,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOpacity=this.pieOpacity||"0.7",this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?(0,x.Z)(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||f(this.primaryColor,{h:-30}),this.git4=this.git4||f(this.primaryColor,{h:-60}),this.git5=this.git5||f(this.primaryColor,{h:-90}),this.git6=this.git6||f(this.primaryColor,{h:60}),this.git7=this.git7||f(this.primaryColor,{h:120}),this.darkMode?(this.git0=(0,v.Z)(this.git0,25),this.git1=(0,v.Z)(this.git1,25),this.git2=(0,v.Z)(this.git2,25),this.git3=(0,v.Z)(this.git3,25),this.git4=(0,v.Z)(this.git4,25),this.git5=(0,v.Z)(this.git5,25),this.git6=(0,v.Z)(this.git6,25),this.git7=(0,v.Z)(this.git7,25)):(this.git0=(0,x.Z)(this.git0,25),this.git1=(0,x.Z)(this.git1,25),this.git2=(0,x.Z)(this.git2,25),this.git3=(0,x.Z)(this.git3,25),this.git4=(0,x.Z)(this.git4,25),this.git5=(0,x.Z)(this.git5,25),this.git6=(0,x.Z)(this.git6,25),this.git7=(0,x.Z)(this.git7,25)),this.gitInv0=this.gitInv0||b(this.git0),this.gitInv1=this.gitInv1||b(this.git1),this.gitInv2=this.gitInv2||b(this.git2),this.gitInv3=this.gitInv3||b(this.git3),this.gitInv4=this.gitInv4||b(this.git4),this.gitInv5=this.gitInv5||b(this.git5),this.gitInv6=this.gitInv6||b(this.git6),this.gitInv7=this.gitInv7||b(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Ut,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Wt}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach((e=>{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e}},dark:{getThemeVariables:t=>{const e=new class{constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=(0,v.Z)(this.primaryColor,16),this.tertiaryColor=f(this.primaryColor,{h:-160}),this.primaryBorderColor=b(this.background),this.secondaryBorderColor=Yt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Yt(this.tertiaryColor,this.darkMode),this.primaryTextColor=b(this.primaryColor),this.secondaryTextColor=b(this.secondaryColor),this.tertiaryTextColor=b(this.tertiaryColor),this.lineColor=b(this.background),this.textColor=b(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=(0,v.Z)(b("#323D47"),10),this.lineColor="calculated",this.border1="#81B1DB",this.border2=g(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=(0,x.Z)("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.taskBorderColor=g(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=g(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.personBorder="calculated",this.personBkg="calculated",this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=(0,v.Z)(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=(0,v.Z)(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.mainContrastColor,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=(0,v.Z)(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=f(this.primaryColor,{h:64}),this.fillType3=f(this.secondaryColor,{h:64}),this.fillType4=f(this.primaryColor,{h:-64}),this.fillType5=f(this.secondaryColor,{h:-64}),this.fillType6=f(this.primaryColor,{h:128}),this.fillType7=f(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||f(this.primaryColor,{h:30}),this.cScale4=this.cScale4||f(this.primaryColor,{h:60}),this.cScale5=this.cScale5||f(this.primaryColor,{h:90}),this.cScale6=this.cScale6||f(this.primaryColor,{h:120}),this.cScale7=this.cScale7||f(this.primaryColor,{h:150}),this.cScale8=this.cScale8||f(this.primaryColor,{h:210}),this.cScale9=this.cScale9||f(this.primaryColor,{h:270}),this.cScale10=this.cScale10||f(this.primaryColor,{h:300}),this.cScale11=this.cScale11||f(this.primaryColor,{h:330});for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||b(this["cScale"+t]);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScalePeer"+t]=this["cScalePeer"+t]||(0,v.Z)(this["cScale"+t],10);for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||f(this.mainBkg,{h:30,s:-30,l:-(4*t-10)}),this["surfacePeer"+t]=this["surfacePeer"+t]||f(this.mainBkg,{h:30,s:-30,l:-(4*t-7)});this.scaleLabelColor=this.scaleLabelColor||(this.darkMode?"black":this.labelTextColor);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["pie"+t]=this["cScale"+t];this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOpacity=this.pieOpacity||"0.7",this.classText=this.primaryTextColor,this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?(0,x.Z)(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=(0,v.Z)(this.secondaryColor,20),this.git1=(0,v.Z)(this.pie2||this.secondaryColor,20),this.git2=(0,v.Z)(this.pie3||this.tertiaryColor,20),this.git3=(0,v.Z)(this.pie4||f(this.primaryColor,{h:-30}),20),this.git4=(0,v.Z)(this.pie5||f(this.primaryColor,{h:-60}),20),this.git5=(0,v.Z)(this.pie6||f(this.primaryColor,{h:-90}),10),this.git6=(0,v.Z)(this.pie7||f(this.primaryColor,{h:60}),10),this.git7=(0,v.Z)(this.pie8||f(this.primaryColor,{h:120}),20),this.gitInv0=this.gitInv0||b(this.git0),this.gitInv1=this.gitInv1||b(this.git1),this.gitInv2=this.gitInv2||b(this.git2),this.gitInv3=this.gitInv3||b(this.git3),this.gitInv4=this.gitInv4||b(this.git4),this.gitInv5=this.gitInv5||b(this.git5),this.gitInv6=this.gitInv6||b(this.git6),this.gitInv7=this.gitInv7||b(this.git7),this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||(0,v.Z)(this.background,12),this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||(0,v.Z)(this.background,2)}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach((e=>{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e}},default:{getThemeVariables:t=>{const e=new class{constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=f(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=f(this.primaryColor,{h:-160}),this.primaryBorderColor=Yt(this.primaryColor,this.darkMode),this.secondaryBorderColor=Yt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Yt(this.tertiaryColor,this.darkMode),this.primaryTextColor=b(this.primaryColor),this.secondaryTextColor=b(this.secondaryColor),this.tertiaryTextColor=b(this.tertiaryColor),this.lineColor=b(this.background),this.textColor=b(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#e8e8e8",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=g(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder="calculated",this.personBkg="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||f(this.primaryColor,{h:30}),this.cScale4=this.cScale4||f(this.primaryColor,{h:60}),this.cScale5=this.cScale5||f(this.primaryColor,{h:90}),this.cScale6=this.cScale6||f(this.primaryColor,{h:120}),this.cScale7=this.cScale7||f(this.primaryColor,{h:150}),this.cScale8=this.cScale8||f(this.primaryColor,{h:210}),this.cScale9=this.cScale9||f(this.primaryColor,{h:270}),this.cScale10=this.cScale10||f(this.primaryColor,{h:300}),this.cScale11=this.cScale11||f(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,x.Z)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,x.Z)(this.tertiaryColor,40);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScale"+t]=(0,x.Z)(this["cScale"+t],10),this["cScalePeer"+t]=this["cScalePeer"+t]||(0,x.Z)(this["cScale"+t],25);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||f(this["cScale"+t],{h:180});for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||f(this.mainBkg,{h:30,l:-(5+5*t)}),this["surfacePeer"+t]=this["surfacePeer"+t]||f(this.mainBkg,{h:30,l:-(7+5*t)});if(this.scaleLabelColor="calculated"!==this.scaleLabelColor&&this.scaleLabelColor?this.scaleLabelColor:this.labelTextColor,"calculated"!==this.labelTextColor){this.cScaleLabel0=this.cScaleLabel0||b(this.labelTextColor),this.cScaleLabel3=this.cScaleLabel3||b(this.labelTextColor);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.labelTextColor}this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.textColor,this.edgeLabelBackground=this.labelBackground,this.actorBorder=(0,v.Z)(this.border1,23),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.signalColor=this.textColor,this.signalTextColor=this.textColor,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.specialStateColor=this.lineColor,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=f(this.primaryColor,{h:64}),this.fillType3=f(this.secondaryColor,{h:64}),this.fillType4=f(this.primaryColor,{h:-64}),this.fillType5=f(this.secondaryColor,{h:-64}),this.fillType6=f(this.primaryColor,{h:128}),this.fillType7=f(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||f(this.tertiaryColor,{l:-40}),this.pie4=this.pie4||f(this.primaryColor,{l:-10}),this.pie5=this.pie5||f(this.secondaryColor,{l:-30}),this.pie6=this.pie6||f(this.tertiaryColor,{l:-20}),this.pie7=this.pie7||f(this.primaryColor,{h:60,l:-20}),this.pie8=this.pie8||f(this.primaryColor,{h:-60,l:-40}),this.pie9=this.pie9||f(this.primaryColor,{h:120,l:-40}),this.pie10=this.pie10||f(this.primaryColor,{h:60,l:-40}),this.pie11=this.pie11||f(this.primaryColor,{h:-90,l:-40}),this.pie12=this.pie12||f(this.primaryColor,{h:120,l:-30}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOpacity=this.pieOpacity||"0.7",this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.labelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||f(this.primaryColor,{h:-30}),this.git4=this.git4||f(this.primaryColor,{h:-60}),this.git5=this.git5||f(this.primaryColor,{h:-90}),this.git6=this.git6||f(this.primaryColor,{h:60}),this.git7=this.git7||f(this.primaryColor,{h:120}),this.darkMode?(this.git0=(0,v.Z)(this.git0,25),this.git1=(0,v.Z)(this.git1,25),this.git2=(0,v.Z)(this.git2,25),this.git3=(0,v.Z)(this.git3,25),this.git4=(0,v.Z)(this.git4,25),this.git5=(0,v.Z)(this.git5,25),this.git6=(0,v.Z)(this.git6,25),this.git7=(0,v.Z)(this.git7,25)):(this.git0=(0,x.Z)(this.git0,25),this.git1=(0,x.Z)(this.git1,25),this.git2=(0,x.Z)(this.git2,25),this.git3=(0,x.Z)(this.git3,25),this.git4=(0,x.Z)(this.git4,25),this.git5=(0,x.Z)(this.git5,25),this.git6=(0,x.Z)(this.git6,25),this.git7=(0,x.Z)(this.git7,25)),this.gitInv0=this.gitInv0||(0,x.Z)(b(this.git0),25),this.gitInv1=this.gitInv1||b(this.git1),this.gitInv2=this.gitInv2||b(this.git2),this.gitInv3=this.gitInv3||b(this.git3),this.gitInv4=this.gitInv4||b(this.git4),this.gitInv5=this.gitInv5||b(this.git5),this.gitInv6=this.gitInv6||b(this.git6),this.gitInv7=this.gitInv7||b(this.git7),this.gitBranchLabel0=this.gitBranchLabel0||b(this.labelTextColor),this.gitBranchLabel1=this.gitBranchLabel1||this.labelTextColor,this.gitBranchLabel2=this.gitBranchLabel2||this.labelTextColor,this.gitBranchLabel3=this.gitBranchLabel3||b(this.labelTextColor),this.gitBranchLabel4=this.gitBranchLabel4||this.labelTextColor,this.gitBranchLabel5=this.gitBranchLabel5||this.labelTextColor,this.gitBranchLabel6=this.gitBranchLabel6||this.labelTextColor,this.gitBranchLabel7=this.gitBranchLabel7||this.labelTextColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Ut,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Wt}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach((e=>{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e}},forest:{getThemeVariables:t=>{const e=new class{constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=(0,v.Z)("#cde498",10),this.primaryBorderColor=Yt(this.primaryColor,this.darkMode),this.secondaryBorderColor=Yt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Yt(this.tertiaryColor,this.darkMode),this.primaryTextColor=b(this.primaryColor),this.secondaryTextColor=b(this.secondaryColor),this.tertiaryTextColor=b(this.primaryColor),this.lineColor=b(this.background),this.textColor=b(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder="calculated",this.personBkg="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||f(this.primaryColor,{h:30}),this.cScale4=this.cScale4||f(this.primaryColor,{h:60}),this.cScale5=this.cScale5||f(this.primaryColor,{h:90}),this.cScale6=this.cScale6||f(this.primaryColor,{h:120}),this.cScale7=this.cScale7||f(this.primaryColor,{h:150}),this.cScale8=this.cScale8||f(this.primaryColor,{h:210}),this.cScale9=this.cScale9||f(this.primaryColor,{h:270}),this.cScale10=this.cScale10||f(this.primaryColor,{h:300}),this.cScale11=this.cScale11||f(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,x.Z)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,x.Z)(this.tertiaryColor,40);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScale"+t]=(0,x.Z)(this["cScale"+t],10),this["cScalePeer"+t]=this["cScalePeer"+t]||(0,x.Z)(this["cScale"+t],25);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||f(this["cScale"+t],{h:180});this.scaleLabelColor="calculated"!==this.scaleLabelColor&&this.scaleLabelColor?this.scaleLabelColor:this.labelTextColor;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||f(this.mainBkg,{h:30,s:-30,l:-(5+5*t)}),this["surfacePeer"+t]=this["surfacePeer"+t]||f(this.mainBkg,{h:30,s:-30,l:-(8+5*t)});this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.actorBorder=(0,x.Z)(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.taskBorderColor=this.border1,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor=this.lineColor,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=f(this.primaryColor,{h:64}),this.fillType3=f(this.secondaryColor,{h:64}),this.fillType4=f(this.primaryColor,{h:-64}),this.fillType5=f(this.secondaryColor,{h:-64}),this.fillType6=f(this.primaryColor,{h:128}),this.fillType7=f(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||f(this.primaryColor,{l:-30}),this.pie5=this.pie5||f(this.secondaryColor,{l:-30}),this.pie6=this.pie6||f(this.tertiaryColor,{h:40,l:-40}),this.pie7=this.pie7||f(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||f(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||f(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||f(this.primaryColor,{h:60,l:-50}),this.pie11=this.pie11||f(this.primaryColor,{h:-60,l:-50}),this.pie12=this.pie12||f(this.primaryColor,{h:120,l:-50}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOpacity=this.pieOpacity||"0.7",this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.edgeLabelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||f(this.primaryColor,{h:-30}),this.git4=this.git4||f(this.primaryColor,{h:-60}),this.git5=this.git5||f(this.primaryColor,{h:-90}),this.git6=this.git6||f(this.primaryColor,{h:60}),this.git7=this.git7||f(this.primaryColor,{h:120}),this.darkMode?(this.git0=(0,v.Z)(this.git0,25),this.git1=(0,v.Z)(this.git1,25),this.git2=(0,v.Z)(this.git2,25),this.git3=(0,v.Z)(this.git3,25),this.git4=(0,v.Z)(this.git4,25),this.git5=(0,v.Z)(this.git5,25),this.git6=(0,v.Z)(this.git6,25),this.git7=(0,v.Z)(this.git7,25)):(this.git0=(0,x.Z)(this.git0,25),this.git1=(0,x.Z)(this.git1,25),this.git2=(0,x.Z)(this.git2,25),this.git3=(0,x.Z)(this.git3,25),this.git4=(0,x.Z)(this.git4,25),this.git5=(0,x.Z)(this.git5,25),this.git6=(0,x.Z)(this.git6,25),this.git7=(0,x.Z)(this.git7,25)),this.gitInv0=this.gitInv0||b(this.git0),this.gitInv1=this.gitInv1||b(this.git1),this.gitInv2=this.gitInv2||b(this.git2),this.gitInv3=this.gitInv3||b(this.git3),this.gitInv4=this.gitInv4||b(this.git4),this.gitInv5=this.gitInv5||b(this.git5),this.gitInv6=this.gitInv6||b(this.git6),this.gitInv7=this.gitInv7||b(this.git7),this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Ut,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Wt}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach((e=>{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e}},neutral:{getThemeVariables:t=>{const e=new Ht;return e.calculate(t),e}}},Vt={theme:"default",themeVariables:qt.default.getThemeVariables(),themeCSS:void 0,maxTextSize:5e4,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize"],deterministicIds:!1,deterministicIDSeed:void 0,flowchart:{titleTopMargin:25,diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,useMaxWidth:!0,defaultRenderer:"dagre-wrapper"},sequence:{hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20,messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},noteFont:function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},actorFont:function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",tickInterval:void 0,useMaxWidth:!0,topAxis:!1,useWidth:void 0},journey:{diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},timeline:{diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},class:{titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,useMaxWidth:!0,defaultRenderer:"dagre-wrapper"},state:{titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,useMaxWidth:!0,defaultRenderer:"dagre-wrapper"},er:{titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12,useMaxWidth:!0},pie:{useWidth:void 0,useMaxWidth:!0},requirement:{useWidth:void 0,useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},gitGraph:{titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0},c4:{useWidth:void 0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,useMaxWidth:!0,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,personFont:function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},external_personFont:function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},systemFont:function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},external_systemFont:function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},system_dbFont:function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},external_system_dbFont:function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},system_queueFont:function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},external_system_queueFont:function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},containerFont:function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},external_containerFont:function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},container_dbFont:function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},external_container_dbFont:function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},container_queueFont:function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},external_container_queueFont:function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},componentFont:function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},external_componentFont:function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},component_dbFont:function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},external_component_dbFont:function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},component_queueFont:function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},external_component_queueFont:function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},boundaryFont:function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},fontSize:16};Vt.class&&(Vt.class.arrowMarkerAbsolute=Vt.arrowMarkerAbsolute),Vt.gitGraph&&(Vt.gitGraph.arrowMarkerAbsolute=Vt.arrowMarkerAbsolute);const Gt=(t,e="")=>Object.keys(t).reduce(((n,r)=>Array.isArray(t[r])?n:"object"==typeof t[r]&&null!==t[r]?[...n,e+r,...Gt(t[r],"")]:[...n,e+r]),[]),Xt=Gt(Vt,""),Kt=Vt;function Qt(t){return null==t}var Jt={isNothing:Qt,isObject:function(t){return"object"==typeof t&&null!==t},toArray:function(t){return Array.isArray(t)?t:Qt(t)?[]:[t]},repeat:function(t,e){var n,r="";for(n=0;n<e;n+=1)r+=t;return r},isNegativeZero:function(t){return 0===t&&Number.NEGATIVE_INFINITY===1/t},extend:function(t,e){var n,r,i,a;if(e)for(n=0,r=(a=Object.keys(e)).length;n<r;n+=1)t[i=a[n]]=e[i];return t}};function te(t,e){var n="",r=t.reason||"(unknown reason)";return t.mark?(t.mark.name&&(n+='in "'+t.mark.name+'" '),n+="("+(t.mark.line+1)+":"+(t.mark.column+1)+")",!e&&t.mark.snippet&&(n+="\n\n"+t.mark.snippet),r+" "+n):r}function ee(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=te(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||""}ee.prototype=Object.create(Error.prototype),ee.prototype.constructor=ee,ee.prototype.toString=function(t){return this.name+": "+te(this,t)};var ne=ee;function re(t,e,n,r,i){var a="",s="",o=Math.floor(i/2)-1;return r-e>o&&(e=r-o+(a=" ... ").length),n-r>o&&(n=r+o-(s=" ...").length),{str:a+t.slice(e,n).replace(/\t/g,"\u2192")+s,pos:r-e+a.length}}function ie(t,e){return Jt.repeat(" ",e-t.length)+t}var ae=function(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),"number"!=typeof e.indent&&(e.indent=1),"number"!=typeof e.linesBefore&&(e.linesBefore=3),"number"!=typeof e.linesAfter&&(e.linesAfter=2);for(var n,r=/\r?\n|\r|\0/g,i=[0],a=[],s=-1;n=r.exec(t.buffer);)a.push(n.index),i.push(n.index+n[0].length),t.position<=n.index&&s<0&&(s=i.length-2);s<0&&(s=i.length-1);var o,l,c="",u=Math.min(t.line+e.linesAfter,a.length).toString().length,h=e.maxLength-(e.indent+u+3);for(o=1;o<=e.linesBefore&&!(s-o<0);o++)l=re(t.buffer,i[s-o],a[s-o],t.position-(i[s]-i[s-o]),h),c=Jt.repeat(" ",e.indent)+ie((t.line-o+1).toString(),u)+" | "+l.str+"\n"+c;for(l=re(t.buffer,i[s],a[s],t.position,h),c+=Jt.repeat(" ",e.indent)+ie((t.line+1).toString(),u)+" | "+l.str+"\n",c+=Jt.repeat("-",e.indent+u+3+l.pos)+"^\n",o=1;o<=e.linesAfter&&!(s+o>=a.length);o++)l=re(t.buffer,i[s+o],a[s+o],t.position-(i[s]-i[s+o]),h),c+=Jt.repeat(" ",e.indent)+ie((t.line+o+1).toString(),u)+" | "+l.str+"\n";return c.replace(/\n$/,"")},se=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],oe=["scalar","sequence","mapping"];var le=function(t,e){var n,r;if(e=e||{},Object.keys(e).forEach((function(e){if(-1===se.indexOf(e))throw new ne('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')})),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=(n=e.styleAliases||null,r={},null!==n&&Object.keys(n).forEach((function(t){n[t].forEach((function(e){r[String(e)]=t}))})),r),-1===oe.indexOf(this.kind))throw new ne('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')};function ce(t,e){var n=[];return t[e].forEach((function(t){var e=n.length;n.forEach((function(n,r){n.tag===t.tag&&n.kind===t.kind&&n.multi===t.multi&&(e=r)})),n[e]=t})),n}function ue(t){return this.extend(t)}ue.prototype.extend=function(t){var e=[],n=[];if(t instanceof le)n.push(t);else if(Array.isArray(t))n=n.concat(t);else{if(!t||!Array.isArray(t.implicit)&&!Array.isArray(t.explicit))throw new ne("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.implicit&&(e=e.concat(t.implicit)),t.explicit&&(n=n.concat(t.explicit))}e.forEach((function(t){if(!(t instanceof le))throw new ne("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(t.loadKind&&"scalar"!==t.loadKind)throw new ne("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(t.multi)throw new ne("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")})),n.forEach((function(t){if(!(t instanceof le))throw new ne("Specified list of YAML types (or a single Type object) contains a non-Type object.")}));var r=Object.create(ue.prototype);return r.implicit=(this.implicit||[]).concat(e),r.explicit=(this.explicit||[]).concat(n),r.compiledImplicit=ce(r,"implicit"),r.compiledExplicit=ce(r,"explicit"),r.compiledTypeMap=function(){var t,e,n={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function r(t){t.multi?(n.multi[t.kind].push(t),n.multi.fallback.push(t)):n[t.kind][t.tag]=n.fallback[t.tag]=t}for(t=0,e=arguments.length;t<e;t+=1)arguments[t].forEach(r);return n}(r.compiledImplicit,r.compiledExplicit),r};var he=new ue({explicit:[new le("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return null!==t?t:""}}),new le("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return null!==t?t:[]}}),new le("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return null!==t?t:{}}})]});var de=new le("tag:yaml.org,2002:null",{kind:"scalar",resolve:function(t){if(null===t)return!0;var e=t.length;return 1===e&&"~"===t||4===e&&("null"===t||"Null"===t||"NULL"===t)},construct:function(){return null},predicate:function(t){return null===t},represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"});var pe=new le("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(t){if(null===t)return!1;var e=t.length;return 4===e&&("true"===t||"True"===t||"TRUE"===t)||5===e&&("false"===t||"False"===t||"FALSE"===t)},construct:function(t){return"true"===t||"True"===t||"TRUE"===t},predicate:function(t){return"[object Boolean]"===Object.prototype.toString.call(t)},represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"});function fe(t){return 48<=t&&t<=55}function me(t){return 48<=t&&t<=57}var ge=new le("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(t){if(null===t)return!1;var e,n,r=t.length,i=0,a=!1;if(!r)return!1;if("-"!==(e=t[i])&&"+"!==e||(e=t[++i]),"0"===e){if(i+1===r)return!0;if("b"===(e=t[++i])){for(i++;i<r;i++)if("_"!==(e=t[i])){if("0"!==e&&"1"!==e)return!1;a=!0}return a&&"_"!==e}if("x"===e){for(i++;i<r;i++)if("_"!==(e=t[i])){if(!(48<=(n=t.charCodeAt(i))&&n<=57||65<=n&&n<=70||97<=n&&n<=102))return!1;a=!0}return a&&"_"!==e}if("o"===e){for(i++;i<r;i++)if("_"!==(e=t[i])){if(!fe(t.charCodeAt(i)))return!1;a=!0}return a&&"_"!==e}}if("_"===e)return!1;for(;i<r;i++)if("_"!==(e=t[i])){if(!me(t.charCodeAt(i)))return!1;a=!0}return!(!a||"_"===e)},construct:function(t){var e,n=t,r=1;if(-1!==n.indexOf("_")&&(n=n.replace(/_/g,"")),"-"!==(e=n[0])&&"+"!==e||("-"===e&&(r=-1),e=(n=n.slice(1))[0]),"0"===n)return 0;if("0"===e){if("b"===n[1])return r*parseInt(n.slice(2),2);if("x"===n[1])return r*parseInt(n.slice(2),16);if("o"===n[1])return r*parseInt(n.slice(2),8)}return r*parseInt(n,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&t%1==0&&!Jt.isNegativeZero(t)},represent:{binary:function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),ye=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var be=/^[-+]?[0-9]+e/;var xe=new le("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(t){return null!==t&&!(!ye.test(t)||"_"===t[t.length-1])},construct:function(t){var e,n;return n="-"===(e=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),".inf"===e?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:n*parseFloat(e,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||Jt.isNegativeZero(t))},represent:function(t,e){var n;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Jt.isNegativeZero(t))return"-0.0";return n=t.toString(10),be.test(n)?n.replace("e",".e"):n},defaultStyle:"lowercase"}),ve=he.extend({implicit:[de,pe,ge,xe]}),_e=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),ke=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");var Te=new le("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(t){return null!==t&&(null!==_e.exec(t)||null!==ke.exec(t))},construct:function(t){var e,n,r,i,a,s,o,l,c=0,u=null;if(null===(e=_e.exec(t))&&(e=ke.exec(t)),null===e)throw new Error("Date resolve error");if(n=+e[1],r=+e[2]-1,i=+e[3],!e[4])return new Date(Date.UTC(n,r,i));if(a=+e[4],s=+e[5],o=+e[6],e[7]){for(c=e[7].slice(0,3);c.length<3;)c+="0";c=+c}return e[9]&&(u=6e4*(60*+e[10]+ +(e[11]||0)),"-"===e[9]&&(u=-u)),l=new Date(Date.UTC(n,r,i,a,s,o,c)),u&&l.setTime(l.getTime()-u),l},instanceOf:Date,represent:function(t){return t.toISOString()}});var we=new le("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(t){return"<<"===t||null===t}}),Se="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";var Ee=new le("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(t){if(null===t)return!1;var e,n,r=0,i=t.length,a=Se;for(n=0;n<i;n++)if(!((e=a.indexOf(t.charAt(n)))>64)){if(e<0)return!1;r+=6}return r%8==0},construct:function(t){var e,n,r=t.replace(/[\r\n=]/g,""),i=r.length,a=Se,s=0,o=[];for(e=0;e<i;e++)e%4==0&&e&&(o.push(s>>16&255),o.push(s>>8&255),o.push(255&s)),s=s<<6|a.indexOf(r.charAt(e));return 0===(n=i%4*6)?(o.push(s>>16&255),o.push(s>>8&255),o.push(255&s)):18===n?(o.push(s>>10&255),o.push(s>>2&255)):12===n&&o.push(s>>4&255),new Uint8Array(o)},predicate:function(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)},represent:function(t){var e,n,r="",i=0,a=t.length,s=Se;for(e=0;e<a;e++)e%3==0&&e&&(r+=s[i>>18&63],r+=s[i>>12&63],r+=s[i>>6&63],r+=s[63&i]),i=(i<<8)+t[e];return 0===(n=a%3)?(r+=s[i>>18&63],r+=s[i>>12&63],r+=s[i>>6&63],r+=s[63&i]):2===n?(r+=s[i>>10&63],r+=s[i>>4&63],r+=s[i<<2&63],r+=s[64]):1===n&&(r+=s[i>>2&63],r+=s[i<<4&63],r+=s[64],r+=s[64]),r}}),Ce=Object.prototype.hasOwnProperty,De=Object.prototype.toString;var Ae=new le("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(t){if(null===t)return!0;var e,n,r,i,a,s=[],o=t;for(e=0,n=o.length;e<n;e+=1){if(r=o[e],a=!1,"[object Object]"!==De.call(r))return!1;for(i in r)if(Ce.call(r,i)){if(a)return!1;a=!0}if(!a)return!1;if(-1!==s.indexOf(i))return!1;s.push(i)}return!0},construct:function(t){return null!==t?t:[]}}),Oe=Object.prototype.toString;var Ie=new le("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:function(t){if(null===t)return!0;var e,n,r,i,a,s=t;for(a=new Array(s.length),e=0,n=s.length;e<n;e+=1){if(r=s[e],"[object Object]"!==Oe.call(r))return!1;if(1!==(i=Object.keys(r)).length)return!1;a[e]=[i[0],r[i[0]]]}return!0},construct:function(t){if(null===t)return[];var e,n,r,i,a,s=t;for(a=new Array(s.length),e=0,n=s.length;e<n;e+=1)r=s[e],i=Object.keys(r),a[e]=[i[0],r[i[0]]];return a}}),Le=Object.prototype.hasOwnProperty;var Ne=new le("tag:yaml.org,2002:set",{kind:"mapping",resolve:function(t){if(null===t)return!0;var e,n=t;for(e in n)if(Le.call(n,e)&&null!==n[e])return!1;return!0},construct:function(t){return null!==t?t:{}}}),Me=ve.extend({implicit:[Te,we],explicit:[Ee,Ae,Ie,Ne]}),Fe=Object.prototype.hasOwnProperty,Be=1,Re=2,$e=3,Ze=4,je=1,Pe=2,ze=3,Ye=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Ue=/[\x85\u2028\u2029]/,We=/[,\[\]\{\}]/,He=/^(?:!|!!|![a-z\-]+!)$/i,qe=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Ve(t){return Object.prototype.toString.call(t)}function Ge(t){return 10===t||13===t}function Xe(t){return 9===t||32===t}function Ke(t){return 9===t||32===t||10===t||13===t}function Qe(t){return 44===t||91===t||93===t||123===t||125===t}function Je(t){var e;return 48<=t&&t<=57?t-48:97<=(e=32|t)&&e<=102?e-97+10:-1}function tn(t){return 48===t?"\0":97===t?"\x07":98===t?"\b":116===t||9===t?"\t":110===t?"\n":118===t?"\v":102===t?"\f":114===t?"\r":101===t?"\x1b":32===t?" ":34===t?'"':47===t?"/":92===t?"\\":78===t?"\x85":95===t?"\xa0":76===t?"\u2028":80===t?"\u2029":""}function en(t){return t<=65535?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>10),56320+(t-65536&1023))}for(var nn=new Array(256),rn=new Array(256),an=0;an<256;an++)nn[an]=tn(an)?1:0,rn[an]=tn(an);function sn(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||Me,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function on(t,e){var n={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return n.snippet=ae(n),new ne(e,n)}function ln(t,e){throw on(t,e)}function cn(t,e){t.onWarning&&t.onWarning.call(null,on(t,e))}var un={YAML:function(t,e,n){var r,i,a;null!==t.version&&ln(t,"duplication of %YAML directive"),1!==n.length&&ln(t,"YAML directive accepts exactly one argument"),null===(r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&ln(t,"ill-formed argument of the YAML directive"),i=parseInt(r[1],10),a=parseInt(r[2],10),1!==i&&ln(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=a<2,1!==a&&2!==a&&cn(t,"unsupported YAML version of the document")},TAG:function(t,e,n){var r,i;2!==n.length&&ln(t,"TAG directive accepts exactly two arguments"),r=n[0],i=n[1],He.test(r)||ln(t,"ill-formed tag handle (first argument) of the TAG directive"),Fe.call(t.tagMap,r)&&ln(t,'there is a previously declared suffix for "'+r+'" tag handle'),qe.test(i)||ln(t,"ill-formed tag prefix (second argument) of the TAG directive");try{i=decodeURIComponent(i)}catch(a){ln(t,"tag prefix is malformed: "+i)}t.tagMap[r]=i}};function hn(t,e,n,r){var i,a,s,o;if(e<n){if(o=t.input.slice(e,n),r)for(i=0,a=o.length;i<a;i+=1)9===(s=o.charCodeAt(i))||32<=s&&s<=1114111||ln(t,"expected valid JSON character");else Ye.test(o)&&ln(t,"the stream contains non-printable characters");t.result+=o}}function dn(t,e,n,r){var i,a,s,o;for(Jt.isObject(n)||ln(t,"cannot merge mappings; the provided source object is unacceptable"),s=0,o=(i=Object.keys(n)).length;s<o;s+=1)a=i[s],Fe.call(e,a)||(e[a]=n[a],r[a]=!0)}function pn(t,e,n,r,i,a,s,o,l){var c,u;if(Array.isArray(i))for(c=0,u=(i=Array.prototype.slice.call(i)).length;c<u;c+=1)Array.isArray(i[c])&&ln(t,"nested arrays are not supported inside keys"),"object"==typeof i&&"[object Object]"===Ve(i[c])&&(i[c]="[object Object]");if("object"==typeof i&&"[object Object]"===Ve(i)&&(i="[object Object]"),i=String(i),null===e&&(e={}),"tag:yaml.org,2002:merge"===r)if(Array.isArray(a))for(c=0,u=a.length;c<u;c+=1)dn(t,e,a[c],n);else dn(t,e,a,n);else t.json||Fe.call(n,i)||!Fe.call(e,i)||(t.line=s||t.line,t.lineStart=o||t.lineStart,t.position=l||t.position,ln(t,"duplicated mapping key")),"__proto__"===i?Object.defineProperty(e,i,{configurable:!0,enumerable:!0,writable:!0,value:a}):e[i]=a,delete n[i];return e}function fn(t){var e;10===(e=t.input.charCodeAt(t.position))?t.position++:13===e?(t.position++,10===t.input.charCodeAt(t.position)&&t.position++):ln(t,"a line break is expected"),t.line+=1,t.lineStart=t.position,t.firstTabInLine=-1}function mn(t,e,n){for(var r=0,i=t.input.charCodeAt(t.position);0!==i;){for(;Xe(i);)9===i&&-1===t.firstTabInLine&&(t.firstTabInLine=t.position),i=t.input.charCodeAt(++t.position);if(e&&35===i)do{i=t.input.charCodeAt(++t.position)}while(10!==i&&13!==i&&0!==i);if(!Ge(i))break;for(fn(t),i=t.input.charCodeAt(t.position),r++,t.lineIndent=0;32===i;)t.lineIndent++,i=t.input.charCodeAt(++t.position)}return-1!==n&&0!==r&&t.lineIndent<n&&cn(t,"deficient indentation"),r}function gn(t){var e,n=t.position;return!(45!==(e=t.input.charCodeAt(n))&&46!==e||e!==t.input.charCodeAt(n+1)||e!==t.input.charCodeAt(n+2)||(n+=3,0!==(e=t.input.charCodeAt(n))&&!Ke(e)))}function yn(t,e){1===e?t.result+=" ":e>1&&(t.result+=Jt.repeat("\n",e-1))}function bn(t,e){var n,r,i=t.tag,a=t.anchor,s=[],o=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=s),r=t.input.charCodeAt(t.position);0!==r&&(-1!==t.firstTabInLine&&(t.position=t.firstTabInLine,ln(t,"tab characters must not be used in indentation")),45===r)&&Ke(t.input.charCodeAt(t.position+1));)if(o=!0,t.position++,mn(t,!0,-1)&&t.lineIndent<=e)s.push(null),r=t.input.charCodeAt(t.position);else if(n=t.line,_n(t,e,$e,!1,!0),s.push(t.result),mn(t,!0,-1),r=t.input.charCodeAt(t.position),(t.line===n||t.lineIndent>e)&&0!==r)ln(t,"bad indentation of a sequence entry");else if(t.lineIndent<e)break;return!!o&&(t.tag=i,t.anchor=a,t.kind="sequence",t.result=s,!0)}function xn(t){var e,n,r,i,a=!1,s=!1;if(33!==(i=t.input.charCodeAt(t.position)))return!1;if(null!==t.tag&&ln(t,"duplication of a tag property"),60===(i=t.input.charCodeAt(++t.position))?(a=!0,i=t.input.charCodeAt(++t.position)):33===i?(s=!0,n="!!",i=t.input.charCodeAt(++t.position)):n="!",e=t.position,a){do{i=t.input.charCodeAt(++t.position)}while(0!==i&&62!==i);t.position<t.length?(r=t.input.slice(e,t.position),i=t.input.charCodeAt(++t.position)):ln(t,"unexpected end of the stream within a verbatim tag")}else{for(;0!==i&&!Ke(i);)33===i&&(s?ln(t,"tag suffix cannot contain exclamation marks"):(n=t.input.slice(e-1,t.position+1),He.test(n)||ln(t,"named tag handle cannot contain such characters"),s=!0,e=t.position+1)),i=t.input.charCodeAt(++t.position);r=t.input.slice(e,t.position),We.test(r)&&ln(t,"tag suffix cannot contain flow indicator characters")}r&&!qe.test(r)&&ln(t,"tag name cannot contain such characters: "+r);try{r=decodeURIComponent(r)}catch(o){ln(t,"tag name is malformed: "+r)}return a?t.tag=r:Fe.call(t.tagMap,n)?t.tag=t.tagMap[n]+r:"!"===n?t.tag="!"+r:"!!"===n?t.tag="tag:yaml.org,2002:"+r:ln(t,'undeclared tag handle "'+n+'"'),!0}function vn(t){var e,n;if(38!==(n=t.input.charCodeAt(t.position)))return!1;for(null!==t.anchor&&ln(t,"duplication of an anchor property"),n=t.input.charCodeAt(++t.position),e=t.position;0!==n&&!Ke(n)&&!Qe(n);)n=t.input.charCodeAt(++t.position);return t.position===e&&ln(t,"name of an anchor node must contain at least one character"),t.anchor=t.input.slice(e,t.position),!0}function _n(t,e,n,r,i){var a,s,o,l,c,u,h,d,p,f=1,m=!1,g=!1;if(null!==t.listener&&t.listener("open",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,a=s=o=Ze===n||$e===n,r&&mn(t,!0,-1)&&(m=!0,t.lineIndent>e?f=1:t.lineIndent===e?f=0:t.lineIndent<e&&(f=-1)),1===f)for(;xn(t)||vn(t);)mn(t,!0,-1)?(m=!0,o=a,t.lineIndent>e?f=1:t.lineIndent===e?f=0:t.lineIndent<e&&(f=-1)):o=!1;if(o&&(o=m||i),1!==f&&Ze!==n||(d=Be===n||Re===n?e:e+1,p=t.position-t.lineStart,1===f?o&&(bn(t,p)||function(t,e,n){var r,i,a,s,o,l,c,u=t.tag,h=t.anchor,d={},p=Object.create(null),f=null,m=null,g=null,y=!1,b=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=d),c=t.input.charCodeAt(t.position);0!==c;){if(y||-1===t.firstTabInLine||(t.position=t.firstTabInLine,ln(t,"tab characters must not be used in indentation")),r=t.input.charCodeAt(t.position+1),a=t.line,63!==c&&58!==c||!Ke(r)){if(s=t.line,o=t.lineStart,l=t.position,!_n(t,n,Re,!1,!0))break;if(t.line===a){for(c=t.input.charCodeAt(t.position);Xe(c);)c=t.input.charCodeAt(++t.position);if(58===c)Ke(c=t.input.charCodeAt(++t.position))||ln(t,"a whitespace character is expected after the key-value separator within a block mapping"),y&&(pn(t,d,p,f,m,null,s,o,l),f=m=g=null),b=!0,y=!1,i=!1,f=t.tag,m=t.result;else{if(!b)return t.tag=u,t.anchor=h,!0;ln(t,"can not read an implicit mapping pair; a colon is missed")}}else{if(!b)return t.tag=u,t.anchor=h,!0;ln(t,"can not read a block mapping entry; a multiline key may not be an implicit key")}}else 63===c?(y&&(pn(t,d,p,f,m,null,s,o,l),f=m=g=null),b=!0,y=!0,i=!0):y?(y=!1,i=!0):ln(t,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),t.position+=1,c=r;if((t.line===a||t.lineIndent>e)&&(y&&(s=t.line,o=t.lineStart,l=t.position),_n(t,e,Ze,!0,i)&&(y?m=t.result:g=t.result),y||(pn(t,d,p,f,m,g,s,o,l),f=m=g=null),mn(t,!0,-1),c=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&0!==c)ln(t,"bad indentation of a mapping entry");else if(t.lineIndent<e)break}return y&&pn(t,d,p,f,m,null,s,o,l),b&&(t.tag=u,t.anchor=h,t.kind="mapping",t.result=d),b}(t,p,d))||function(t,e){var n,r,i,a,s,o,l,c,u,h,d,p,f=!0,m=t.tag,g=t.anchor,y=Object.create(null);if(91===(p=t.input.charCodeAt(t.position)))s=93,c=!1,a=[];else{if(123!==p)return!1;s=125,c=!0,a={}}for(null!==t.anchor&&(t.anchorMap[t.anchor]=a),p=t.input.charCodeAt(++t.position);0!==p;){if(mn(t,!0,e),(p=t.input.charCodeAt(t.position))===s)return t.position++,t.tag=m,t.anchor=g,t.kind=c?"mapping":"sequence",t.result=a,!0;f?44===p&&ln(t,"expected the node content, but found ','"):ln(t,"missed comma between flow collection entries"),d=null,o=l=!1,63===p&&Ke(t.input.charCodeAt(t.position+1))&&(o=l=!0,t.position++,mn(t,!0,e)),n=t.line,r=t.lineStart,i=t.position,_n(t,e,Be,!1,!0),h=t.tag,u=t.result,mn(t,!0,e),p=t.input.charCodeAt(t.position),!l&&t.line!==n||58!==p||(o=!0,p=t.input.charCodeAt(++t.position),mn(t,!0,e),_n(t,e,Be,!1,!0),d=t.result),c?pn(t,a,y,h,u,d,n,r,i):o?a.push(pn(t,null,y,h,u,d,n,r,i)):a.push(u),mn(t,!0,e),44===(p=t.input.charCodeAt(t.position))?(f=!0,p=t.input.charCodeAt(++t.position)):f=!1}ln(t,"unexpected end of the stream within a flow collection")}(t,d)?g=!0:(s&&function(t,e){var n,r,i,a,s,o=je,l=!1,c=!1,u=e,h=0,d=!1;if(124===(a=t.input.charCodeAt(t.position)))r=!1;else{if(62!==a)return!1;r=!0}for(t.kind="scalar",t.result="";0!==a;)if(43===(a=t.input.charCodeAt(++t.position))||45===a)je===o?o=43===a?ze:Pe:ln(t,"repeat of a chomping mode identifier");else{if(!((i=48<=(s=a)&&s<=57?s-48:-1)>=0))break;0===i?ln(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?ln(t,"repeat of an indentation width identifier"):(u=e+i-1,c=!0)}if(Xe(a)){do{a=t.input.charCodeAt(++t.position)}while(Xe(a));if(35===a)do{a=t.input.charCodeAt(++t.position)}while(!Ge(a)&&0!==a)}for(;0!==a;){for(fn(t),t.lineIndent=0,a=t.input.charCodeAt(t.position);(!c||t.lineIndent<u)&&32===a;)t.lineIndent++,a=t.input.charCodeAt(++t.position);if(!c&&t.lineIndent>u&&(u=t.lineIndent),Ge(a))h++;else{if(t.lineIndent<u){o===ze?t.result+=Jt.repeat("\n",l?1+h:h):o===je&&l&&(t.result+="\n");break}for(r?Xe(a)?(d=!0,t.result+=Jt.repeat("\n",l?1+h:h)):d?(d=!1,t.result+=Jt.repeat("\n",h+1)):0===h?l&&(t.result+=" "):t.result+=Jt.repeat("\n",h):t.result+=Jt.repeat("\n",l?1+h:h),l=!0,c=!0,h=0,n=t.position;!Ge(a)&&0!==a;)a=t.input.charCodeAt(++t.position);hn(t,n,t.position,!1)}}return!0}(t,d)||function(t,e){var n,r,i;if(39!==(n=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,r=i=t.position;0!==(n=t.input.charCodeAt(t.position));)if(39===n){if(hn(t,r,t.position,!0),39!==(n=t.input.charCodeAt(++t.position)))return!0;r=t.position,t.position++,i=t.position}else Ge(n)?(hn(t,r,i,!0),yn(t,mn(t,!1,e)),r=i=t.position):t.position===t.lineStart&&gn(t)?ln(t,"unexpected end of the document within a single quoted scalar"):(t.position++,i=t.position);ln(t,"unexpected end of the stream within a single quoted scalar")}(t,d)||function(t,e){var n,r,i,a,s,o,l;if(34!==(o=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,n=r=t.position;0!==(o=t.input.charCodeAt(t.position));){if(34===o)return hn(t,n,t.position,!0),t.position++,!0;if(92===o){if(hn(t,n,t.position,!0),Ge(o=t.input.charCodeAt(++t.position)))mn(t,!1,e);else if(o<256&&nn[o])t.result+=rn[o],t.position++;else if((s=120===(l=o)?2:117===l?4:85===l?8:0)>0){for(i=s,a=0;i>0;i--)(s=Je(o=t.input.charCodeAt(++t.position)))>=0?a=(a<<4)+s:ln(t,"expected hexadecimal character");t.result+=en(a),t.position++}else ln(t,"unknown escape sequence");n=r=t.position}else Ge(o)?(hn(t,n,r,!0),yn(t,mn(t,!1,e)),n=r=t.position):t.position===t.lineStart&&gn(t)?ln(t,"unexpected end of the document within a double quoted scalar"):(t.position++,r=t.position)}ln(t,"unexpected end of the stream within a double quoted scalar")}(t,d)?g=!0:!function(t){var e,n,r;if(42!==(r=t.input.charCodeAt(t.position)))return!1;for(r=t.input.charCodeAt(++t.position),e=t.position;0!==r&&!Ke(r)&&!Qe(r);)r=t.input.charCodeAt(++t.position);return t.position===e&&ln(t,"name of an alias node must contain at least one character"),n=t.input.slice(e,t.position),Fe.call(t.anchorMap,n)||ln(t,'unidentified alias "'+n+'"'),t.result=t.anchorMap[n],mn(t,!0,-1),!0}(t)?function(t,e,n){var r,i,a,s,o,l,c,u,h=t.kind,d=t.result;if(Ke(u=t.input.charCodeAt(t.position))||Qe(u)||35===u||38===u||42===u||33===u||124===u||62===u||39===u||34===u||37===u||64===u||96===u)return!1;if((63===u||45===u)&&(Ke(r=t.input.charCodeAt(t.position+1))||n&&Qe(r)))return!1;for(t.kind="scalar",t.result="",i=a=t.position,s=!1;0!==u;){if(58===u){if(Ke(r=t.input.charCodeAt(t.position+1))||n&&Qe(r))break}else if(35===u){if(Ke(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&gn(t)||n&&Qe(u))break;if(Ge(u)){if(o=t.line,l=t.lineStart,c=t.lineIndent,mn(t,!1,-1),t.lineIndent>=e){s=!0,u=t.input.charCodeAt(t.position);continue}t.position=a,t.line=o,t.lineStart=l,t.lineIndent=c;break}}s&&(hn(t,i,a,!1),yn(t,t.line-o),i=a=t.position,s=!1),Xe(u)||(a=t.position+1),u=t.input.charCodeAt(++t.position)}return hn(t,i,a,!1),!!t.result||(t.kind=h,t.result=d,!1)}(t,d,Be===n)&&(g=!0,null===t.tag&&(t.tag="?")):(g=!0,null===t.tag&&null===t.anchor||ln(t,"alias node should not have any properties")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===f&&(g=o&&bn(t,p))),null===t.tag)null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);else if("?"===t.tag){for(null!==t.result&&"scalar"!==t.kind&&ln(t,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+t.kind+'"'),l=0,c=t.implicitTypes.length;l<c;l+=1)if((h=t.implicitTypes[l]).resolve(t.result)){t.result=h.construct(t.result),t.tag=h.tag,null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);break}}else if("!"!==t.tag){if(Fe.call(t.typeMap[t.kind||"fallback"],t.tag))h=t.typeMap[t.kind||"fallback"][t.tag];else for(h=null,l=0,c=(u=t.typeMap.multi[t.kind||"fallback"]).length;l<c;l+=1)if(t.tag.slice(0,u[l].tag.length)===u[l].tag){h=u[l];break}h||ln(t,"unknown tag !<"+t.tag+">"),null!==t.result&&h.kind!==t.kind&&ln(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+h.kind+'", not "'+t.kind+'"'),h.resolve(t.result,t.tag)?(t.result=h.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):ln(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||g}function kn(t){var e,n,r,i,a=t.position,s=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(i=t.input.charCodeAt(t.position))&&(mn(t,!0,-1),i=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==i));){for(s=!0,i=t.input.charCodeAt(++t.position),e=t.position;0!==i&&!Ke(i);)i=t.input.charCodeAt(++t.position);for(r=[],(n=t.input.slice(e,t.position)).length<1&&ln(t,"directive name must not be less than one character in length");0!==i;){for(;Xe(i);)i=t.input.charCodeAt(++t.position);if(35===i){do{i=t.input.charCodeAt(++t.position)}while(0!==i&&!Ge(i));break}if(Ge(i))break;for(e=t.position;0!==i&&!Ke(i);)i=t.input.charCodeAt(++t.position);r.push(t.input.slice(e,t.position))}0!==i&&fn(t),Fe.call(un,n)?un[n](t,n,r):cn(t,'unknown document directive "'+n+'"')}mn(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,mn(t,!0,-1)):s&&ln(t,"directives end mark is expected"),_n(t,t.lineIndent-1,Ze,!1,!0),mn(t,!0,-1),t.checkLineBreaks&&Ue.test(t.input.slice(a,t.position))&&cn(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&gn(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,mn(t,!0,-1)):t.position<t.length-1&&ln(t,"end of the stream or a document separator is expected")}function Tn(t,e){e=e||{},0!==(t=String(t)).length&&(10!==t.charCodeAt(t.length-1)&&13!==t.charCodeAt(t.length-1)&&(t+="\n"),65279===t.charCodeAt(0)&&(t=t.slice(1)));var n=new sn(t,e),r=t.indexOf("\0");for(-1!==r&&(n.position=r,ln(n,"null byte is not allowed in input")),n.input+="\0";32===n.input.charCodeAt(n.position);)n.lineIndent+=1,n.position+=1;for(;n.position<n.length-1;)kn(n);return n.documents}var wn=he,Sn={loadAll:function(t,e,n){null!==e&&"object"==typeof e&&void 0===n&&(n=e,e=null);var r=Tn(t,n);if("function"!=typeof e)return r;for(var i=0,a=r.length;i<a;i+=1)e(r[i])},load:function(t,e){var n=Tn(t,e);if(0!==n.length){if(1===n.length)return n[0];throw new ne("expected a single document in the stream, but found more")}}}.load;const En=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s;const Cn=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,Dn=/\s*%%.*\n/gm,An={},On=function(t,e){t=t.replace(En,"").replace(Cn,"").replace(Dn,"\n");for(const[n,{detector:r}]of Object.entries(An)){if(r(t,e))return n}throw new Error(`No diagram type detected for text: ${t}`)},In=(...t)=>{for(const{id:e,detector:n,loader:r}of t)Ln(e,n,r)},Ln=(t,e,n)=>{An[t]?It.error(`Detector with key ${t} already exists`):An[t]={detector:e,loader:n},It.debug(`Detector with key ${t} added${n?" with loader":""}`)},Nn=function(t,e,n){const{depth:r,clobber:i}=Object.assign({depth:2,clobber:!1},n);return Array.isArray(e)&&!Array.isArray(t)?(e.forEach((e=>Nn(t,e,n))),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach((e=>{t.includes(e)||t.push(e)})),t):void 0===t||r<=0?null!=t&&"object"==typeof t&&"object"==typeof e?Object.assign(t,e):e:(void 0!==e&&"object"==typeof t&&"object"==typeof e&&Object.keys(e).forEach((n=>{"object"!=typeof e[n]||void 0!==t[n]&&"object"!=typeof t[n]?(i||"object"!=typeof t[n]&&"object"!=typeof e[n])&&(t[n]=e[n]):(void 0===t[n]&&(t[n]=Array.isArray(e[n])?[]:{}),t[n]=Nn(t[n],e[n],{depth:r-1,clobber:i}))})),t)},Mn=Nn,Fn={curveBasis:o.$0Z,curveBasisClosed:o.Dts,curveBasisOpen:o.WQY,curveBumpX:o.qpX,curveBumpY:o.u93,curveBundle:o.tFB,curveCardinalClosed:o.OvA,curveCardinalOpen:o.dCK,curveCardinal:o.YY7,curveCatmullRomClosed:o.fGX,curveCatmullRomOpen:o.$m7,curveCatmullRom:o.zgE,curveLinear:o.c_6,curveLinearClosed:o.fxm,curveMonotoneX:o.FdL,curveMonotoneY:o.ak_,curveNatural:o.SxZ,curveStep:o.eA_,curveStepAfter:o.jsv,curveStepBefore:o.iJ},Bn=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,Rn=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,$n=function(t,e=null){try{const n=new RegExp(`[%]{2}(?![{]${Rn.source})(?=[}][%]{2}).*\n`,"ig");let r;t=t.trim().replace(n,"").replace(/'/gm,'"'),It.debug(`Detecting diagram directive${null!==e?" type:"+e:""} based on the text:${t}`);const i=[];for(;null!==(r=Bn.exec(t));)if(r.index===Bn.lastIndex&&Bn.lastIndex++,r&&!e||e&&r[1]&&r[1].match(e)||e&&r[2]&&r[2].match(e)){const t=r[1]?r[1]:r[2],e=r[3]?r[3].trim():r[4]?JSON.parse(r[4].trim()):null;i.push({type:t,args:e})}return 0===i.length&&i.push({type:t,args:null}),1===i.length?i[0]:i}catch(n){return It.error(`ERROR: ${n.message} - Unable to parse directive\n ${null!==e?" type:"+e:""} based on the text:${t}`),{type:null,args:null}}};function Zn(t,e){if(!t)return e;const n=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return Fn[n]||e}function jn(t,e){return t&&e?Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)):0}function Pn(t){let e="",n="";for(const r of t)void 0!==r&&(r.startsWith("color:")||r.startsWith("text-align:")?n=n+r+";":e=e+r+";");return{style:e,labelStyle:n}}let zn=0;const Yn=()=>(zn++,"id-"+Math.random().toString(36).substr(2,12)+"-"+zn);const Un=t=>function(t){let e="";const n="0123456789abcdef",r=n.length;for(let i=0;i<t;i++)e+=n.charAt(Math.floor(Math.random()*r));return e}(t.length),Wn=function(t,e){const n=e.text.replace(zt.lineBreakRegex," "),[,r]=er(e.fontSize),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.style("text-anchor",e.anchor),i.style("font-family",e.fontFamily),i.style("font-size",r),i.style("font-weight",e.fontWeight),i.attr("fill",e.fill),void 0!==e.class&&i.attr("class",e.class);const a=i.append("tspan");return a.attr("x",e.x+2*e.textMargin),a.attr("fill",e.fill),a.text(n),i},Hn=(0,_.Z)(((t,e,n)=>{if(!t)return t;if(n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"<br/>"},n),zt.lineBreakRegex.test(t))return t;const r=t.split(" "),i=[];let a="";return r.forEach(((t,s)=>{const o=Gn(`${t} `,n),l=Gn(a,n);if(o>e){const{hyphenatedStrings:r,remainingWord:s}=qn(t,e,"-",n);i.push(a,...r),a=s}else l+o>=e?(i.push(a),a=t):a=[a,t].filter(Boolean).join(" ");s+1===r.length&&i.push(a)})),i.filter((t=>""!==t)).join(n.joinWith)}),((t,e,n)=>`${t}${e}${n.fontSize}${n.fontWeight}${n.fontFamily}${n.joinWith}`)),qn=(0,_.Z)(((t,e,n="-",r)=>{r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},r);const i=[...t],a=[];let s="";return i.forEach(((t,o)=>{const l=`${s}${t}`;if(Gn(l,r)>=e){const t=o+1,e=i.length===t,r=`${l}${n}`;a.push(e?l:r),s=""}else s=l})),{hyphenatedStrings:a,remainingWord:s}}),((t,e,n="-",r)=>`${t}${e}${n}${r.fontSize}${r.fontWeight}${r.fontFamily}`));function Vn(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:15},e),Xn(t,e).height}function Gn(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e),Xn(t,e).width}const Xn=(0,_.Z)(((t,e)=>{e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e);const{fontSize:n,fontFamily:r,fontWeight:i}=e;if(!t)return{width:0,height:0};const[,a]=er(n),s=["sans-serif",r],l=t.split(zt.lineBreakRegex),c=[],u=(0,o.Ys)("body");if(!u.remove)return{width:0,height:0,lineHeight:0};const h=u.append("svg");for(const o of s){let t=0;const e={width:0,height:0,lineHeight:0};for(const n of l){const r={x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0};r.text=n;const s=Wn(h,r).style("font-size",a).style("font-weight",i).style("font-family",o),l=(s._groups||s)[0][0].getBBox();e.width=Math.round(Math.max(e.width,l.width)),t=Math.round(l.height),e.height+=t,e.lineHeight=Math.round(Math.max(e.lineHeight,t))}c.push(e)}h.remove();return c[isNaN(c[1].height)||isNaN(c[1].width)||isNaN(c[1].lineHeight)||c[0].height>c[1].height&&c[0].width>c[1].width&&c[0].lineHeight>c[1].lineHeight?0:1]}),((t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`));let Kn;const Qn=t=>{if(It.debug("directiveSanitizer called with",t),"object"==typeof t&&(t.length?t.forEach((t=>Qn(t))):Object.keys(t).forEach((e=>{It.debug("Checking key",e),e.startsWith("__")&&(It.debug("sanitize deleting __ option",e),delete t[e]),e.includes("proto")&&(It.debug("sanitize deleting proto option",e),delete t[e]),e.includes("constr")&&(It.debug("sanitize deleting constr option",e),delete t[e]),e.includes("themeCSS")&&(It.debug("sanitizing themeCss option"),t[e]=Jn(t[e])),e.includes("fontFamily")&&(It.debug("sanitizing fontFamily option"),t[e]=Jn(t[e])),e.includes("altFontFamily")&&(It.debug("sanitizing altFontFamily option"),t[e]=Jn(t[e])),Xt.includes(e)?"object"==typeof t[e]&&(It.debug("sanitize deleting object",e),Qn(t[e])):(It.debug("sanitize deleting option",e),delete t[e])}))),t.themeVariables){const e=Object.keys(t.themeVariables);for(const n of e){const e=t.themeVariables[n];e&&e.match&&!e.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[n]="")}}It.debug("After sanitization",t)},Jn=t=>{let e=0,n=0;for(const r of t){if(e<n)return"{ /* ERROR: Unbalanced CSS */ }";"{"===r?e++:"}"===r&&n++}return e!==n?"{ /* ERROR: Unbalanced CSS */ }":t};function tr(t){return"str"in t}const er=t=>{if("number"==typeof t)return[t,t+"px"];const e=parseInt(t,10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]},nr={assignWithDepth:Mn,wrapLabel:Hn,calculateTextHeight:Vn,calculateTextWidth:Gn,calculateTextDimensions:Xn,detectInit:function(t,e){const n=$n(t,/(?:init\b)|(?:initialize\b)/);let r={};if(Array.isArray(n)){const t=n.map((t=>t.args));Qn(t),r=Mn(r,[...t])}else r=n.args;if(r){let n=On(t,e);["config"].forEach((t=>{void 0!==r[t]&&("flowchart-v2"===n&&(n="flowchart"),r[n]=r[t],delete r[t])}))}return r},detectDirective:$n,isSubstringInArray:function(t,e){for(const[n,r]of e.entries())if(r.match(t))return n;return-1},interpolateToCurve:Zn,calcLabelPosition:function(t){return 1===t.length?t[0]:function(t){let e,n=0;t.forEach((t=>{n+=jn(t,e),e=t}));let r,i=n/2;return e=void 0,t.forEach((t=>{if(e&&!r){const n=jn(t,e);if(n<i)i-=n;else{const a=i/n;a<=0&&(r=e),a>=1&&(r={x:t.x,y:t.y}),a>0&&a<1&&(r={x:(1-a)*e.x+a*t.x,y:(1-a)*e.y+a*t.y})}}e=t})),r}(t)},calcCardinalityPosition:(t,e,n)=>{let r;It.info(`our points ${JSON.stringify(e)}`),e[0]!==n&&(e=e.reverse());let i,a=25;r=void 0,e.forEach((t=>{if(r&&!i){const e=jn(t,r);if(e<a)a-=e;else{const n=a/e;n<=0&&(i=r),n>=1&&(i={x:t.x,y:t.y}),n>0&&n<1&&(i={x:(1-n)*r.x+n*t.x,y:(1-n)*r.y+n*t.y})}}r=t}));const s=t?10:5,o=Math.atan2(e[0].y-i.y,e[0].x-i.x),l={x:0,y:0};return l.x=Math.sin(o)*s+(e[0].x+i.x)/2,l.y=-Math.cos(o)*s+(e[0].y+i.y)/2,l},calcTerminalLabelPosition:function(t,e,n){let r,i=JSON.parse(JSON.stringify(n));It.info("our points",i),"start_left"!==e&&"start_right"!==e&&(i=i.reverse()),i.forEach((t=>{r=t}));let a,s=25+t;r=void 0,i.forEach((t=>{if(r&&!a){const e=jn(t,r);if(e<s)s-=e;else{const n=s/e;n<=0&&(a=r),n>=1&&(a={x:t.x,y:t.y}),n>0&&n<1&&(a={x:(1-n)*r.x+n*t.x,y:(1-n)*r.y+n*t.y})}}r=t}));const o=10+.5*t,l=Math.atan2(i[0].y-a.y,i[0].x-a.x),c={x:0,y:0};return c.x=Math.sin(l)*o+(i[0].x+a.x)/2,c.y=-Math.cos(l)*o+(i[0].y+a.y)/2,"start_left"===e&&(c.x=Math.sin(l+Math.PI)*o+(i[0].x+a.x)/2,c.y=-Math.cos(l+Math.PI)*o+(i[0].y+a.y)/2),"end_right"===e&&(c.x=Math.sin(l-Math.PI)*o+(i[0].x+a.x)/2-5,c.y=-Math.cos(l-Math.PI)*o+(i[0].y+a.y)/2-5),"end_left"===e&&(c.x=Math.sin(l)*o+(i[0].x+a.x)/2-5,c.y=-Math.cos(l)*o+(i[0].y+a.y)/2-5),c},formatUrl:function(t,e){const n=t.trim();if(n)return"loose"!==e.securityLevel?(0,s.N)(n):n},getStylesFromArray:Pn,generateId:Yn,random:Un,runFunc:(t,...e)=>{const n=t.split("."),r=n.length-1,i=n[r];let a=window;for(let s=0;s<r;s++)if(a=a[n[s]],!a)return;a[i](...e)},entityDecode:function(t){return Kn=Kn||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),Kn.innerHTML=t,unescape(Kn.textContent)},initIdGenerator:class{constructor(t,e){this.deterministic=t,this.seed=e,this.count=e?e.length:0}next(){return this.deterministic?this.count++:Date.now()}},directiveSanitizer:Qn,sanitizeCss:Jn,insertTitle:(t,e,n,r)=>{if(!r)return;const i=t.node().getBBox();t.append("text").text(r).attr("x",i.x+i.width/2).attr("y",-n).attr("class",e)},parseFontSize:er},rr="9.4.3",ir=Object.freeze(Kt);let ar,sr=Mn({},ir),or=[],lr=Mn({},ir);const cr=(t,e)=>{let n=Mn({},t),r={};for(const i of e)pr(i),r=Mn(r,i);if(n=Mn(n,r),r.theme&&r.theme in qt){const t=Mn({},ar),e=Mn(t.themeVariables||{},r.themeVariables);n.theme&&n.theme in qt&&(n.themeVariables=qt[n.theme].getThemeVariables(e))}return lr=n,br(lr),lr},ur=()=>Mn({},sr),hr=t=>(br(t),Mn(lr,t),dr()),dr=()=>Mn({},lr),pr=t=>{["secure",...sr.secure??[]].forEach((e=>{void 0!==t[e]&&(It.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])})),Object.keys(t).forEach((e=>{0===e.indexOf("__")&&delete t[e]})),Object.keys(t).forEach((e=>{"string"==typeof t[e]&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],"object"==typeof t[e]&&pr(t[e])}))},fr=t=>{t.fontFamily&&(t.themeVariables&&t.themeVariables.fontFamily||(t.themeVariables={fontFamily:t.fontFamily})),or.push(t),cr(sr,or)},mr=(t=sr)=>{or=[],cr(t,or)};var gr=(t=>(t.LAZY_LOAD_DEPRECATED="The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.",t))(gr||{});const yr={},br=t=>{var e;t&&((t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&(yr[e="LAZY_LOAD_DEPRECATED"]||(It.warn(gr[e]),yr[e]=!0)))},xr=function(t,e,n,r){const i=function(t,e,n){let r=new Map;return n?(r.set("width","100%"),r.set("style",`max-width: ${e}px;`)):(r.set("height",t),r.set("width",e)),r}(e,n,r);!function(t,e){for(let n of e)t.attr(n[0],n[1])}(t,i)},vr=function(t,e,n,r){const i=e.node().getBBox(),a=i.width,s=i.height;It.info(`SVG bounds: ${a}x${s}`,i);let o=0,l=0;It.info(`Graph bounds: ${o}x${l}`,t),o=a+2*n,l=s+2*n,It.info(`Calculated bounds: ${o}x${l}`),xr(e,l,o,r);const c=`${i.x-n} ${i.y-n} ${i.width+2*n} ${i.height+2*n}`;e.attr("viewBox",c)},_r=t=>`g.classGroup text {\n fill: ${t.nodeBorder};\n fill: ${t.classText};\n stroke: none;\n font-family: ${t.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${t.classText};\n}\n.edgeLabel .label rect {\n fill: ${t.mainBkg};\n}\n.label text {\n fill: ${t.classText};\n}\n.edgeLabel .label span {\n background: ${t.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${t.nodeBorder};\n stroke: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${t.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${t.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${t.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n#compositionStart, .composition {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n`,kr=t=>`\n .entityBox {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n }\n\n .attributeBoxOdd {\n fill: ${t.attributeBackgroundColorOdd};\n stroke: ${t.nodeBorder};\n }\n\n .attributeBoxEven {\n fill: ${t.attributeBackgroundColorEven};\n stroke: ${t.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${t.tertiaryColor};\n opacity: 0.7;\n background-color: ${t.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${t.lineColor};\n }\n\n .entityTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n } \n`,Tr=()=>"",wr=t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n .cluster-label text {\n fill: ${t.titleColor};\n }\n .cluster-label span {\n color: ${t.titleColor};\n }\n\n .label text,span {\n fill: ${t.nodeTextColor||t.textColor};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ${t.clusterBkg};\n stroke: ${t.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n .cluster span {\n color: ${t.titleColor};\n }\n /* .cluster div {\n color: ${t.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n`,Sr=t=>`\n .mermaid-main-font {\n font-family: "trebuchet ms", verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n .exclude-range {\n fill: ${t.excludeBkgColor};\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${t.sectionBkgColor};\n }\n\n .section2 {\n fill: ${t.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${t.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n // font-size: ${t.ganttFontSize};\n // text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${t.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ${t.fontFamily};\n fill: ${t.textColor};\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${t.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n\n // .taskText:not([font-size]) {\n // font-size: ${t.ganttFontSize};\n // }\n\n .taskTextOutsideRight {\n fill: ${t.taskTextDarkColor};\n text-anchor: start;\n // font-size: ${t.ganttFontSize};\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ${t.taskTextDarkColor};\n text-anchor: end;\n // font-size: ${t.ganttFontSize};\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${t.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${t.taskBkgColor};\n stroke: ${t.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${t.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${t.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${t.activeTaskBkgColor};\n stroke: ${t.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${t.doneTaskBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor} ;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n`,Er=()=>"",Cr=t=>`\n .pieCircle{\n stroke: ${t.pieStrokeColor};\n stroke-width : ${t.pieStrokeWidth};\n opacity : ${t.pieOpacity};\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${t.pieTitleTextSize};\n fill: ${t.pieTitleTextColor};\n font-family: ${t.fontFamily};\n }\n .slice {\n font-family: ${t.fontFamily};\n fill: ${t.pieSectionTextColor};\n font-size:${t.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${t.pieLegendTextColor};\n font-family: ${t.fontFamily};\n font-size: ${t.pieLegendTextSize};\n }\n`,Dr=t=>`\n\n marker {\n fill: ${t.relationColor};\n stroke: ${t.relationColor};\n }\n\n marker.cross {\n stroke: ${t.lineColor};\n }\n\n svg {\n font-family: ${t.fontFamily};\n font-size: ${t.fontSize};\n }\n\n .reqBox {\n fill: ${t.requirementBackground};\n fill-opacity: 100%;\n stroke: ${t.requirementBorderColor};\n stroke-width: ${t.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${t.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${t.relationLabelBackground};\n fill-opacity: 100%;\n }\n\n .req-title-line {\n stroke: ${t.requirementBorderColor};\n stroke-width: ${t.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${t.relationColor};\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ${t.relationLabelColor};\n }\n\n`,Ar=t=>`.actor {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${t.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${t.actorLineColor};\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${t.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${t.signalColor};\n }\n\n #arrowhead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .sequenceNumber {\n fill: ${t.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${t.signalColor};\n }\n\n #crosshead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .messageText {\n fill: ${t.signalTextColor};\n stroke: none;\n }\n\n .labelBox {\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${t.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${t.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${t.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation1 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation2 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${t.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n .actor-man circle, line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n stroke-width: 2px;\n }\n`,Or=t=>`\ndefs #statediagram-barbEnd {\n fill: ${t.transitionColor};\n stroke: ${t.transitionColor};\n }\ng.stateGroup text {\n fill: ${t.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${t.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${t.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${t.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${t.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n\n text {\n fill: ${t.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${t.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel .label text {\n fill: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${t.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${t.innerEndBackground};\n stroke: ${t.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${t.compositeBackground||t.background};\n // stroke: ${t.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${t.stateBkg||t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${t.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${t.compositeTitleBackground};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${t.stateLabelColor};\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${t.stateBorder||t.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${t.compositeBackground||t.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${t.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${t.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${t.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${t.lineColor};\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n`,Ir=t=>`.label {\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n color: ${t.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${t.textColor}\n }\n\n .legend {\n fill: ${t.textColor};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${t.textColor}\n }\n\n .face {\n ${t.faceColor?`fill: ${t.faceColor}`:"fill: #FFF8DC"};\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${t.fillType0?`fill: ${t.fillType0}`:""};\n }\n .task-type-1, .section-type-1 {\n ${t.fillType0?`fill: ${t.fillType1}`:""};\n }\n .task-type-2, .section-type-2 {\n ${t.fillType0?`fill: ${t.fillType2}`:""};\n }\n .task-type-3, .section-type-3 {\n ${t.fillType0?`fill: ${t.fillType3}`:""};\n }\n .task-type-4, .section-type-4 {\n ${t.fillType0?`fill: ${t.fillType4}`:""};\n }\n .task-type-5, .section-type-5 {\n ${t.fillType0?`fill: ${t.fillType5}`:""};\n }\n .task-type-6, .section-type-6 {\n ${t.fillType0?`fill: ${t.fillType6}`:""};\n }\n .task-type-7, .section-type-7 {\n ${t.fillType0?`fill: ${t.fillType7}`:""};\n }\n\n .actor-0 {\n ${t.actor0?`fill: ${t.actor0}`:""};\n }\n .actor-1 {\n ${t.actor1?`fill: ${t.actor1}`:""};\n }\n .actor-2 {\n ${t.actor2?`fill: ${t.actor2}`:""};\n }\n .actor-3 {\n ${t.actor3?`fill: ${t.actor3}`:""};\n }\n .actor-4 {\n ${t.actor4?`fill: ${t.actor4}`:""};\n }\n .actor-5 {\n ${t.actor5?`fill: ${t.actor5}`:""};\n }\n`,Lr=t=>`.person {\n stroke: ${t.personBorder};\n fill: ${t.personBkg};\n }\n`,Nr={flowchart:wr,"flowchart-v2":wr,sequence:Ar,gantt:Sr,classDiagram:_r,"classDiagram-v2":_r,class:_r,stateDiagram:Or,state:Or,info:Er,pie:Cr,er:kr,error:Tr,journey:Ir,requirement:Dr,c4:Lr},Mr=(t,e,n)=>{let r="";return t in Nr&&Nr[t]?r=Nr[t](n):It.warn(`No theme found for ${t}`),` & {\n font-family: ${n.fontFamily};\n font-size: ${n.fontSize};\n fill: ${n.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n & .error-icon {\n fill: ${n.errorBkgColor};\n }\n & .error-text {\n fill: ${n.errorTextColor};\n stroke: ${n.errorTextColor};\n }\n\n & .edge-thickness-normal {\n stroke-width: 2px;\n }\n & .edge-thickness-thick {\n stroke-width: 3.5px\n }\n & .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n & .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n & .marker {\n fill: ${n.lineColor};\n stroke: ${n.lineColor};\n }\n & .marker.cross {\n stroke: ${n.lineColor};\n }\n\n & svg {\n font-family: ${n.fontFamily};\n font-size: ${n.fontSize};\n }\n\n ${r}\n\n ${e}\n`};let Fr="",Br="",Rr="";const $r=t=>Bt(t,dr()),Zr=function(){Fr="",Rr="",Br=""},jr=function(t){Fr=$r(t).replace(/^\s+/g,"")},Pr=function(){return Fr||Br},zr=function(t){Rr=$r(t).replace(/\n\s+/g,"\n")},Yr=function(){return Rr},Ur=function(t){Br=$r(t)},Wr=function(){return Br},Hr={setAccTitle:jr,getAccTitle:Pr,setDiagramTitle:Ur,getDiagramTitle:Wr,getAccDescription:Yr,setAccDescription:zr,clear:Zr},qr=Object.freeze(Object.defineProperty({__proto__:null,clear:Zr,default:Hr,getAccDescription:Yr,getAccTitle:Pr,getDiagramTitle:Wr,setAccDescription:zr,setAccTitle:jr,setDiagramTitle:Ur},Symbol.toStringTag,{value:"Module"}));let Vr={};const Gr=function(t,e,n,r){It.debug("parseDirective is being called",e,n,r);try{if(void 0!==e)switch(e=e.trim(),n){case"open_directive":Vr={};break;case"type_directive":if(!Vr)throw new Error("currentDirective is undefined");Vr.type=e.toLowerCase();break;case"arg_directive":if(!Vr)throw new Error("currentDirective is undefined");Vr.args=JSON.parse(e);break;case"close_directive":Xr(t,Vr,r),Vr=void 0}}catch(i){It.error(`Error while rendering sequenceDiagram directive: ${e} jison context: ${n}`),It.error(i.message)}},Xr=function(t,e,n){switch(It.info(`Directive type=${e.type} with args:`,e.args),e.type){case"init":case"initialize":["config"].forEach((t=>{void 0!==e.args[t]&&("flowchart-v2"===n&&(n="flowchart"),e.args[n]=e.args[t],delete e.args[t])})),It.info("sanitize in handleDirective",e.args),Qn(e.args),It.info("sanitize in handleDirective (done)",e.args),fr(e.args);break;case"wrap":case"nowrap":t&&t.setWrap&&t.setWrap("wrap"===e.type);break;case"themeCss":It.warn("themeCss encountered");break;default:It.warn(`Unhandled directive: source: '%%{${e.type}: ${JSON.stringify(e.args?e.args:{})}}%%`,e)}},Kr=It,Qr=Lt,Jr=dr,ti=t=>Bt(t,Jr()),ei=vr,ni=(t,e,n,r)=>Gr(t,e,n,r),ri={},ii=(t,e,n)=>{if(ri[t])throw new Error(`Diagram ${t} already registered.`);var r,i;ri[t]=e,n&&Ln(t,n),r=t,i=e.styles,Nr[r]=i,e.injectUtils&&e.injectUtils(Kr,Qr,Jr,ti,ei,qr,ni)},ai=t=>{if(t in ri)return ri[t];throw new Error(`Diagram ${t} not found.`)};var si=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,4],r=[1,7],i=[1,5],a=[1,9],s=[1,6],o=[2,6],l=[1,16],c=[6,8,14,20,22,24,25,27,29,32,37,40,50,55],u=[8,14,20,22,24,25,27,29,32,37,40],h=[8,13,14,20,22,24,25,27,29,32,37,40],d=[1,26],p=[6,8,14,50,55],f=[8,14,55],m=[1,53],g=[1,52],y=[8,14,30,33,35,38,55],b=[1,67],x=[1,68],v=[1,69],_=[8,14,33,35,42,55],k={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,GG:6,document:7,EOF:8,":":9,DIR:10,options:11,body:12,OPT:13,NL:14,line:15,statement:16,commitStatement:17,mergeStatement:18,cherryPickStatement:19,acc_title:20,acc_title_value:21,acc_descr:22,acc_descr_value:23,acc_descr_multiline_value:24,section:25,branchStatement:26,CHECKOUT:27,ref:28,BRANCH:29,ORDER:30,NUM:31,CHERRY_PICK:32,COMMIT_ID:33,STR:34,COMMIT_TAG:35,EMPTYSTR:36,MERGE:37,COMMIT_TYPE:38,commitType:39,COMMIT:40,commit_arg:41,COMMIT_MSG:42,NORMAL:43,REVERSE:44,HIGHLIGHT:45,openDirective:46,typeDirective:47,closeDirective:48,argDirective:49,open_directive:50,type_directive:51,arg_directive:52,close_directive:53,ID:54,";":55,$accept:0,$end:1},terminals_:{2:"error",6:"GG",8:"EOF",9:":",10:"DIR",13:"OPT",14:"NL",20:"acc_title",21:"acc_title_value",22:"acc_descr",23:"acc_descr_value",24:"acc_descr_multiline_value",25:"section",27:"CHECKOUT",29:"BRANCH",30:"ORDER",31:"NUM",32:"CHERRY_PICK",33:"COMMIT_ID",34:"STR",35:"COMMIT_TAG",36:"EMPTYSTR",37:"MERGE",38:"COMMIT_TYPE",40:"COMMIT",42:"COMMIT_MSG",43:"NORMAL",44:"REVERSE",45:"HIGHLIGHT",50:"open_directive",51:"type_directive",52:"arg_directive",53:"close_directive",54:"ID",55:";"},productions_:[0,[3,2],[3,2],[3,3],[3,4],[3,5],[7,0],[7,2],[11,2],[11,1],[12,0],[12,2],[15,2],[15,1],[16,1],[16,1],[16,1],[16,2],[16,2],[16,1],[16,1],[16,1],[16,2],[26,2],[26,4],[19,3],[19,5],[19,5],[19,5],[19,5],[18,2],[18,4],[18,4],[18,4],[18,6],[18,6],[18,6],[18,6],[18,6],[18,6],[18,8],[18,8],[18,8],[18,8],[18,8],[18,8],[17,2],[17,3],[17,3],[17,5],[17,5],[17,3],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,3],[17,5],[17,5],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[41,0],[41,1],[39,1],[39,1],[39,1],[5,3],[5,5],[46,1],[47,1],[49,1],[48,1],[28,1],[28,1],[4,1],[4,1],[4,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 3:return a[o];case 4:return a[o-1];case 5:return r.setDirection(a[o-3]),a[o-1];case 7:r.setOptions(a[o-1]),this.$=a[o];break;case 8:a[o-1]+=a[o],this.$=a[o-1];break;case 10:this.$=[];break;case 11:a[o-1].push(a[o]),this.$=a[o-1];break;case 12:this.$=a[o-1];break;case 17:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 18:case 19:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 20:r.addSection(a[o].substr(8)),this.$=a[o].substr(8);break;case 22:r.checkout(a[o]);break;case 23:r.branch(a[o]);break;case 24:r.branch(a[o-2],a[o]);break;case 25:r.cherryPick(a[o],"",void 0);break;case 26:r.cherryPick(a[o-2],"",a[o]);break;case 27:case 29:r.cherryPick(a[o-2],"","");break;case 28:r.cherryPick(a[o],"",a[o-2]);break;case 30:r.merge(a[o],"","","");break;case 31:r.merge(a[o-2],a[o],"","");break;case 32:r.merge(a[o-2],"",a[o],"");break;case 33:r.merge(a[o-2],"","",a[o]);break;case 34:r.merge(a[o-4],a[o],"",a[o-2]);break;case 35:r.merge(a[o-4],"",a[o],a[o-2]);break;case 36:r.merge(a[o-4],"",a[o-2],a[o]);break;case 37:r.merge(a[o-4],a[o-2],a[o],"");break;case 38:r.merge(a[o-4],a[o-2],"",a[o]);break;case 39:r.merge(a[o-4],a[o],a[o-2],"");break;case 40:r.merge(a[o-6],a[o-4],a[o-2],a[o]);break;case 41:r.merge(a[o-6],a[o],a[o-4],a[o-2]);break;case 42:r.merge(a[o-6],a[o-4],a[o],a[o-2]);break;case 43:r.merge(a[o-6],a[o-2],a[o-4],a[o]);break;case 44:r.merge(a[o-6],a[o],a[o-2],a[o-4]);break;case 45:r.merge(a[o-6],a[o-2],a[o],a[o-4]);break;case 46:r.commit(a[o]);break;case 47:r.commit("","",r.commitType.NORMAL,a[o]);break;case 48:r.commit("","",a[o],"");break;case 49:r.commit("","",a[o],a[o-2]);break;case 50:r.commit("","",a[o-2],a[o]);break;case 51:r.commit("",a[o],r.commitType.NORMAL,"");break;case 52:r.commit("",a[o-2],r.commitType.NORMAL,a[o]);break;case 53:r.commit("",a[o],r.commitType.NORMAL,a[o-2]);break;case 54:r.commit("",a[o-2],a[o],"");break;case 55:r.commit("",a[o],a[o-2],"");break;case 56:r.commit("",a[o-4],a[o-2],a[o]);break;case 57:r.commit("",a[o-4],a[o],a[o-2]);break;case 58:r.commit("",a[o-2],a[o-4],a[o]);break;case 59:r.commit("",a[o],a[o-4],a[o-2]);break;case 60:r.commit("",a[o],a[o-2],a[o-4]);break;case 61:r.commit("",a[o-2],a[o],a[o-4]);break;case 62:r.commit(a[o],"",r.commitType.NORMAL,"");break;case 63:r.commit(a[o],"",r.commitType.NORMAL,a[o-2]);break;case 64:r.commit(a[o-2],"",r.commitType.NORMAL,a[o]);break;case 65:r.commit(a[o-2],"",a[o],"");break;case 66:r.commit(a[o],"",a[o-2],"");break;case 67:r.commit(a[o],a[o-2],r.commitType.NORMAL,"");break;case 68:r.commit(a[o-2],a[o],r.commitType.NORMAL,"");break;case 69:r.commit(a[o-4],"",a[o-2],a[o]);break;case 70:r.commit(a[o-4],"",a[o],a[o-2]);break;case 71:r.commit(a[o-2],"",a[o-4],a[o]);break;case 72:r.commit(a[o],"",a[o-4],a[o-2]);break;case 73:r.commit(a[o],"",a[o-2],a[o-4]);break;case 74:r.commit(a[o-2],"",a[o],a[o-4]);break;case 75:r.commit(a[o-4],a[o],a[o-2],"");break;case 76:r.commit(a[o-4],a[o-2],a[o],"");break;case 77:r.commit(a[o-2],a[o],a[o-4],"");break;case 78:r.commit(a[o],a[o-2],a[o-4],"");break;case 79:r.commit(a[o],a[o-4],a[o-2],"");break;case 80:r.commit(a[o-2],a[o-4],a[o],"");break;case 81:r.commit(a[o-4],a[o],r.commitType.NORMAL,a[o-2]);break;case 82:r.commit(a[o-4],a[o-2],r.commitType.NORMAL,a[o]);break;case 83:r.commit(a[o-2],a[o],r.commitType.NORMAL,a[o-4]);break;case 84:r.commit(a[o],a[o-2],r.commitType.NORMAL,a[o-4]);break;case 85:r.commit(a[o],a[o-4],r.commitType.NORMAL,a[o-2]);break;case 86:r.commit(a[o-2],a[o-4],r.commitType.NORMAL,a[o]);break;case 87:r.commit(a[o-6],a[o-4],a[o-2],a[o]);break;case 88:r.commit(a[o-6],a[o-4],a[o],a[o-2]);break;case 89:r.commit(a[o-6],a[o-2],a[o-4],a[o]);break;case 90:r.commit(a[o-6],a[o],a[o-4],a[o-2]);break;case 91:r.commit(a[o-6],a[o-2],a[o],a[o-4]);break;case 92:r.commit(a[o-6],a[o],a[o-2],a[o-4]);break;case 93:r.commit(a[o-4],a[o-6],a[o-2],a[o]);break;case 94:r.commit(a[o-4],a[o-6],a[o],a[o-2]);break;case 95:r.commit(a[o-2],a[o-6],a[o-4],a[o]);break;case 96:r.commit(a[o],a[o-6],a[o-4],a[o-2]);break;case 97:r.commit(a[o-2],a[o-6],a[o],a[o-4]);break;case 98:r.commit(a[o],a[o-6],a[o-2],a[o-4]);break;case 99:r.commit(a[o],a[o-4],a[o-2],a[o-6]);break;case 100:r.commit(a[o-2],a[o-4],a[o],a[o-6]);break;case 101:r.commit(a[o],a[o-2],a[o-4],a[o-6]);break;case 102:r.commit(a[o-2],a[o],a[o-4],a[o-6]);break;case 103:r.commit(a[o-4],a[o-2],a[o],a[o-6]);break;case 104:r.commit(a[o-4],a[o],a[o-2],a[o-6]);break;case 105:r.commit(a[o-2],a[o-4],a[o-6],a[o]);break;case 106:r.commit(a[o],a[o-4],a[o-6],a[o-2]);break;case 107:r.commit(a[o-2],a[o],a[o-6],a[o-4]);break;case 108:r.commit(a[o],a[o-2],a[o-6],a[o-4]);break;case 109:r.commit(a[o-4],a[o-2],a[o-6],a[o]);break;case 110:r.commit(a[o-4],a[o],a[o-6],a[o-2]);break;case 111:this.$="";break;case 112:this.$=a[o];break;case 113:this.$=r.commitType.NORMAL;break;case 114:this.$=r.commitType.REVERSE;break;case 115:this.$=r.commitType.HIGHLIGHT;break;case 118:r.parseDirective("%%{","open_directive");break;case 119:r.parseDirective(a[o],"type_directive");break;case 120:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 121:r.parseDirective("}%%","close_directive","gitGraph")}},table:[{3:1,4:2,5:3,6:n,8:r,14:i,46:8,50:a,55:s},{1:[3]},{3:10,4:2,5:3,6:n,8:r,14:i,46:8,50:a,55:s},{3:11,4:2,5:3,6:n,8:r,14:i,46:8,50:a,55:s},{7:12,8:o,9:[1,13],10:[1,14],11:15,14:l},e(c,[2,124]),e(c,[2,125]),e(c,[2,126]),{47:17,51:[1,18]},{51:[2,118]},{1:[2,1]},{1:[2,2]},{8:[1,19]},{7:20,8:o,11:15,14:l},{9:[1,21]},e(u,[2,10],{12:22,13:[1,23]}),e(h,[2,9]),{9:[1,25],48:24,53:d},e([9,53],[2,119]),{1:[2,3]},{8:[1,27]},{7:28,8:o,11:15,14:l},{8:[2,7],14:[1,31],15:29,16:30,17:32,18:33,19:34,20:[1,35],22:[1,36],24:[1,37],25:[1,38],26:39,27:[1,40],29:[1,44],32:[1,43],37:[1,42],40:[1,41]},e(h,[2,8]),e(p,[2,116]),{49:45,52:[1,46]},e(p,[2,121]),{1:[2,4]},{8:[1,47]},e(u,[2,11]),{4:48,8:r,14:i,55:s},e(u,[2,13]),e(f,[2,14]),e(f,[2,15]),e(f,[2,16]),{21:[1,49]},{23:[1,50]},e(f,[2,19]),e(f,[2,20]),e(f,[2,21]),{28:51,34:m,54:g},e(f,[2,111],{41:54,33:[1,57],34:[1,59],35:[1,55],38:[1,56],42:[1,58]}),{28:60,34:m,54:g},{33:[1,61],35:[1,62]},{28:63,34:m,54:g},{48:64,53:d},{53:[2,120]},{1:[2,5]},e(u,[2,12]),e(f,[2,17]),e(f,[2,18]),e(f,[2,22]),e(y,[2,122]),e(y,[2,123]),e(f,[2,46]),{34:[1,65]},{39:66,43:b,44:x,45:v},{34:[1,70]},{34:[1,71]},e(f,[2,112]),e(f,[2,30],{33:[1,72],35:[1,74],38:[1,73]}),{34:[1,75]},{34:[1,76],36:[1,77]},e(f,[2,23],{30:[1,78]}),e(p,[2,117]),e(f,[2,47],{33:[1,80],38:[1,79],42:[1,81]}),e(f,[2,48],{33:[1,83],35:[1,82],42:[1,84]}),e(_,[2,113]),e(_,[2,114]),e(_,[2,115]),e(f,[2,51],{35:[1,85],38:[1,86],42:[1,87]}),e(f,[2,62],{33:[1,90],35:[1,88],38:[1,89]}),{34:[1,91]},{39:92,43:b,44:x,45:v},{34:[1,93]},e(f,[2,25],{35:[1,94]}),{33:[1,95]},{33:[1,96]},{31:[1,97]},{39:98,43:b,44:x,45:v},{34:[1,99]},{34:[1,100]},{34:[1,101]},{34:[1,102]},{34:[1,103]},{34:[1,104]},{39:105,43:b,44:x,45:v},{34:[1,106]},{34:[1,107]},{39:108,43:b,44:x,45:v},{34:[1,109]},e(f,[2,31],{35:[1,111],38:[1,110]}),e(f,[2,32],{33:[1,113],35:[1,112]}),e(f,[2,33],{33:[1,114],38:[1,115]}),{34:[1,116],36:[1,117]},{34:[1,118]},{34:[1,119]},e(f,[2,24]),e(f,[2,49],{33:[1,120],42:[1,121]}),e(f,[2,53],{38:[1,122],42:[1,123]}),e(f,[2,63],{33:[1,125],38:[1,124]}),e(f,[2,50],{33:[1,126],42:[1,127]}),e(f,[2,55],{35:[1,128],42:[1,129]}),e(f,[2,66],{33:[1,131],35:[1,130]}),e(f,[2,52],{38:[1,132],42:[1,133]}),e(f,[2,54],{35:[1,134],42:[1,135]}),e(f,[2,67],{35:[1,137],38:[1,136]}),e(f,[2,64],{33:[1,139],38:[1,138]}),e(f,[2,65],{33:[1,141],35:[1,140]}),e(f,[2,68],{35:[1,143],38:[1,142]}),{39:144,43:b,44:x,45:v},{34:[1,145]},{34:[1,146]},{34:[1,147]},{34:[1,148]},{39:149,43:b,44:x,45:v},e(f,[2,26]),e(f,[2,27]),e(f,[2,28]),e(f,[2,29]),{34:[1,150]},{34:[1,151]},{39:152,43:b,44:x,45:v},{34:[1,153]},{39:154,43:b,44:x,45:v},{34:[1,155]},{34:[1,156]},{34:[1,157]},{34:[1,158]},{34:[1,159]},{34:[1,160]},{34:[1,161]},{39:162,43:b,44:x,45:v},{34:[1,163]},{34:[1,164]},{34:[1,165]},{39:166,43:b,44:x,45:v},{34:[1,167]},{39:168,43:b,44:x,45:v},{34:[1,169]},{34:[1,170]},{34:[1,171]},{39:172,43:b,44:x,45:v},{34:[1,173]},e(f,[2,37],{35:[1,174]}),e(f,[2,38],{38:[1,175]}),e(f,[2,36],{33:[1,176]}),e(f,[2,39],{35:[1,177]}),e(f,[2,34],{38:[1,178]}),e(f,[2,35],{33:[1,179]}),e(f,[2,60],{42:[1,180]}),e(f,[2,73],{33:[1,181]}),e(f,[2,61],{42:[1,182]}),e(f,[2,84],{38:[1,183]}),e(f,[2,74],{33:[1,184]}),e(f,[2,83],{38:[1,185]}),e(f,[2,59],{42:[1,186]}),e(f,[2,72],{33:[1,187]}),e(f,[2,58],{42:[1,188]}),e(f,[2,78],{35:[1,189]}),e(f,[2,71],{33:[1,190]}),e(f,[2,77],{35:[1,191]}),e(f,[2,57],{42:[1,192]}),e(f,[2,85],{38:[1,193]}),e(f,[2,56],{42:[1,194]}),e(f,[2,79],{35:[1,195]}),e(f,[2,80],{35:[1,196]}),e(f,[2,86],{38:[1,197]}),e(f,[2,70],{33:[1,198]}),e(f,[2,81],{38:[1,199]}),e(f,[2,69],{33:[1,200]}),e(f,[2,75],{35:[1,201]}),e(f,[2,76],{35:[1,202]}),e(f,[2,82],{38:[1,203]}),{34:[1,204]},{39:205,43:b,44:x,45:v},{34:[1,206]},{34:[1,207]},{39:208,43:b,44:x,45:v},{34:[1,209]},{34:[1,210]},{34:[1,211]},{34:[1,212]},{39:213,43:b,44:x,45:v},{34:[1,214]},{39:215,43:b,44:x,45:v},{34:[1,216]},{34:[1,217]},{34:[1,218]},{34:[1,219]},{34:[1,220]},{34:[1,221]},{34:[1,222]},{39:223,43:b,44:x,45:v},{34:[1,224]},{34:[1,225]},{34:[1,226]},{39:227,43:b,44:x,45:v},{34:[1,228]},{39:229,43:b,44:x,45:v},{34:[1,230]},{34:[1,231]},{34:[1,232]},{39:233,43:b,44:x,45:v},e(f,[2,40]),e(f,[2,42]),e(f,[2,41]),e(f,[2,43]),e(f,[2,45]),e(f,[2,44]),e(f,[2,101]),e(f,[2,102]),e(f,[2,99]),e(f,[2,100]),e(f,[2,104]),e(f,[2,103]),e(f,[2,108]),e(f,[2,107]),e(f,[2,106]),e(f,[2,105]),e(f,[2,110]),e(f,[2,109]),e(f,[2,98]),e(f,[2,97]),e(f,[2,96]),e(f,[2,95]),e(f,[2,93]),e(f,[2,94]),e(f,[2,92]),e(f,[2,91]),e(f,[2,90]),e(f,[2,89]),e(f,[2,87]),e(f,[2,88])],defaultActions:{9:[2,118],10:[2,1],11:[2,2],19:[2,3],27:[2,4],46:[2,120],47:[2,5]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},T=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),50;case 1:return this.begin("type_directive"),51;case 2:return this.popState(),this.begin("arg_directive"),9;case 3:return this.popState(),this.popState(),53;case 4:return 52;case 5:return this.begin("acc_title"),20;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),22;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:case 34:case 38:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:return 14;case 13:case 14:break;case 15:return 6;case 16:return 40;case 17:return 33;case 18:return 38;case 19:return 42;case 20:return 43;case 21:return 44;case 22:return 45;case 23:return 35;case 24:return 29;case 25:return 30;case 26:return 37;case 27:return 32;case 28:return 27;case 29:case 30:return 10;case 31:return 9;case 32:return"CARET";case 33:this.begin("options");break;case 35:return 13;case 36:return 36;case 37:this.begin("string");break;case 39:return 34;case 40:return 31;case 41:return 54;case 42:return 8}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit(?=\s|$))/i,/^(?:id:)/i,/^(?:type:)/i,/^(?:msg:)/i,/^(?:NORMAL\b)/i,/^(?:REVERSE\b)/i,/^(?:HIGHLIGHT\b)/i,/^(?:tag:)/i,/^(?:branch(?=\s|$))/i,/^(?:order:)/i,/^(?:merge(?=\s|$))/i,/^(?:cherry-pick(?=\s|$))/i,/^(?:checkout(?=\s|$))/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:[ \r\n\t]+end\b)/i,/^(?:[\s\S]+(?=[ \r\n\t]+end))/i,/^(?:["]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[0-9]+(?=\s|$))/i,/^(?:\w([-\./\w]*[-\w])?)/i,/^(?:$)/i,/^(?:\s+)/i],conditions:{acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},options:{rules:[34,35],inclusive:!1},string:{rules:[38,39],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,36,37,40,41,42,43],inclusive:!0}}},t);function w(){this.yy={}}return k.lexer=T,w.prototype=k,k.Parser=w,new w}();si.parser=si;const oi=si,li=t=>null!==t.match(/^\s*gitGraph/);let ci=dr().gitGraph.mainBranchName,ui=dr().gitGraph.mainBranchOrder,hi={},di=null,pi={};pi[ci]={name:ci,order:ui};let fi={};fi[ci]=di;let mi=ci,gi="LR",yi=0;function bi(){return Un({length:7})}let xi={};const vi=function(t){if(t=zt.sanitizeText(t,dr()),void 0===fi[t]){let e=new Error('Trying to checkout branch which is not yet created. (Help try using "branch '+t+'")');throw e.hash={text:"checkout "+t,token:"checkout "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"branch '+t+'"']},e}{mi=t;const e=fi[mi];di=hi[e]}};function _i(t,e,n){const r=t.indexOf(e);-1===r?t.push(n):t.splice(r,1,n)}function ki(t){const e=t.reduce(((t,e)=>t.seq>e.seq?t:e),t[0]);let n="";t.forEach((function(t){n+=t===e?"\t*":"\t|"}));const r=[n,e.id,e.seq];for(let i in fi)fi[i]===e.id&&r.push(i);if(It.debug(r.join(" ")),e.parents&&2==e.parents.length){const n=hi[e.parents[0]];_i(t,e,n),t.push(hi[e.parents[1]])}else{if(0==e.parents.length)return;{const n=hi[e.parents];_i(t,e,n)}}ki(t=function(t,e){const n=Object.create(null);return t.reduce(((t,r)=>{const i=e(r);return n[i]||(n[i]=!0,t.push(r)),t}),[])}(t,(t=>t.id)))}const Ti=function(){const t=Object.keys(hi).map((function(t){return hi[t]}));return t.forEach((function(t){It.debug(t.id)})),t.sort(((t,e)=>t.seq-e.seq)),t},wi={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},Si={parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().gitGraph,setDirection:function(t){gi=t},setOptions:function(t){It.debug("options str",t),t=(t=t&&t.trim())||"{}";try{xi=JSON.parse(t)}catch(e){It.error("error while parsing gitGraph options",e.message)}},getOptions:function(){return xi},commit:function(t,e,n,r){It.debug("Entering commit:",t,e,n,r),e=zt.sanitizeText(e,dr()),t=zt.sanitizeText(t,dr()),r=zt.sanitizeText(r,dr());const i={id:e||yi+"-"+bi(),message:t,seq:yi++,type:n||wi.NORMAL,tag:r||"",parents:null==di?[]:[di.id],branch:mi};di=i,hi[i.id]=i,fi[mi]=i.id,It.debug("in pushCommit "+i.id)},branch:function(t,e){if(t=zt.sanitizeText(t,dr()),void 0!==fi[t]){let e=new Error('Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout '+t+'")');throw e.hash={text:"branch "+t,token:"branch "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"checkout '+t+'"']},e}fi[t]=null!=di?di.id:null,pi[t]={name:t,order:e?parseInt(e,10):null},vi(t),It.debug("in createBranch")},merge:function(t,e,n,r){t=zt.sanitizeText(t,dr()),e=zt.sanitizeText(e,dr());const i=hi[fi[mi]],a=hi[fi[t]];if(mi===t){let e=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},e}if(void 0===i||!i){let e=new Error('Incorrect usage of "merge". Current branch ('+mi+")has no commits");throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["commit"]},e}if(void 0===fi[t]){let e=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") does not exist");throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch "+t]},e}if(void 0===a||!a){let e=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") has no commits");throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"commit"']},e}if(i===a){let e=new Error('Incorrect usage of "merge". Both branches have same head');throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},e}if(e&&void 0!==hi[e]){let i=new Error('Incorrect usage of "merge". Commit with id:'+e+" already exists, use different custom Id");throw i.hash={text:"merge "+t+e+n+r,token:"merge "+t+e+n+r,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["merge "+t+" "+e+"_UNIQUE "+n+" "+r]},i}const s={id:e||yi+"-"+bi(),message:"merged branch "+t+" into "+mi,seq:yi++,parents:[null==di?null:di.id,fi[t]],branch:mi,type:wi.MERGE,customType:n,customId:!!e,tag:r||""};di=s,hi[s.id]=s,fi[mi]=s.id,It.debug(fi),It.debug("in mergeBranch")},cherryPick:function(t,e,n){if(It.debug("Entering cherryPick:",t,e,n),t=zt.sanitizeText(t,dr()),e=zt.sanitizeText(e,dr()),n=zt.sanitizeText(n,dr()),!t||void 0===hi[t]){let n=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw n.hash={text:"cherryPick "+t+" "+e,token:"cherryPick "+t+" "+e,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},n}let r=hi[t],i=r.branch;if(r.type===wi.MERGE){let n=new Error('Incorrect usage of "cherryPick". Source commit should not be a merge commit');throw n.hash={text:"cherryPick "+t+" "+e,token:"cherryPick "+t+" "+e,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},n}if(!e||void 0===hi[e]){if(i===mi){let n=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw n.hash={text:"cherryPick "+t+" "+e,token:"cherryPick "+t+" "+e,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},n}const a=hi[fi[mi]];if(void 0===a||!a){let n=new Error('Incorrect usage of "cherry-pick". Current branch ('+mi+")has no commits");throw n.hash={text:"cherryPick "+t+" "+e,token:"cherryPick "+t+" "+e,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},n}const s={id:yi+"-"+bi(),message:"cherry-picked "+r+" into "+mi,seq:yi++,parents:[null==di?null:di.id,r.id],branch:mi,type:wi.CHERRY_PICK,tag:n??"cherry-pick:"+r.id};di=s,hi[s.id]=s,fi[mi]=s.id,It.debug(fi),It.debug("in cherryPick")}},checkout:vi,prettyPrint:function(){It.debug(hi);ki([Ti()[0]])},clear:function(){hi={},di=null;let t=dr().gitGraph.mainBranchName,e=dr().gitGraph.mainBranchOrder;fi={},fi[t]=null,pi={},pi[t]={name:t,order:e},mi=t,yi=0,Zr()},getBranchesAsObjArray:function(){const t=Object.values(pi).map(((t,e)=>null!==t.order?t:{...t,order:parseFloat(`0.${e}`,10)})).sort(((t,e)=>t.order-e.order)).map((({name:t})=>({name:t})));return t},getBranches:function(){return fi},getCommits:function(){return hi},getCommitsArray:Ti,getCurrentBranch:function(){return mi},getDirection:function(){return gi},getHead:function(){return di},setAccTitle:jr,getAccTitle:Pr,getAccDescription:Yr,setAccDescription:zr,setDiagramTitle:Ur,getDiagramTitle:Wr,commitType:wi};let Ei={};const Ci=0,Di=1,Ai=2,Oi=3,Ii=4;let Li={},Ni={},Mi=[],Fi=0;const Bi=(t,e,n)=>{const r=Jr().gitGraph,i=t.append("g").attr("class","commit-bullets"),a=t.append("g").attr("class","commit-labels");let s=0;Object.keys(e).sort(((t,n)=>e[t].seq-e[n].seq)).forEach((t=>{const o=e[t],l=Li[o.branch].pos,c=s+10;if(n){let t,e=void 0!==o.customType&&""!==o.customType?o.customType:o.type;switch(e){case Ci:t="commit-normal";break;case Di:t="commit-reverse";break;case Ai:t="commit-highlight";break;case Oi:t="commit-merge";break;case Ii:t="commit-cherry-pick";break;default:t="commit-normal"}if(e===Ai){const e=i.append("rect");e.attr("x",c-10),e.attr("y",l-10),e.attr("height",20),e.attr("width",20),e.attr("class",`commit ${o.id} commit-highlight${Li[o.branch].index%8} ${t}-outer`),i.append("rect").attr("x",c-6).attr("y",l-6).attr("height",12).attr("width",12).attr("class",`commit ${o.id} commit${Li[o.branch].index%8} ${t}-inner`)}else if(e===Ii)i.append("circle").attr("cx",c).attr("cy",l).attr("r",10).attr("class",`commit ${o.id} ${t}`),i.append("circle").attr("cx",c-3).attr("cy",l+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${o.id} ${t}`),i.append("circle").attr("cx",c+3).attr("cy",l+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${o.id} ${t}`),i.append("line").attr("x1",c+3).attr("y1",l+1).attr("x2",c).attr("y2",l-5).attr("stroke","#fff").attr("class",`commit ${o.id} ${t}`),i.append("line").attr("x1",c-3).attr("y1",l+1).attr("x2",c).attr("y2",l-5).attr("stroke","#fff").attr("class",`commit ${o.id} ${t}`);else{const n=i.append("circle");if(n.attr("cx",c),n.attr("cy",l),n.attr("r",o.type===Oi?9:10),n.attr("class",`commit ${o.id} commit${Li[o.branch].index%8}`),e===Oi){const e=i.append("circle");e.attr("cx",c),e.attr("cy",l),e.attr("r",6),e.attr("class",`commit ${t} ${o.id} commit${Li[o.branch].index%8}`)}if(e===Di){i.append("path").attr("d",`M ${c-5},${l-5}L${c+5},${l+5}M${c-5},${l+5}L${c+5},${l-5}`).attr("class",`commit ${t} ${o.id} commit${Li[o.branch].index%8}`)}}}if(Ni[o.id]={x:s+10,y:l},n){const t=4,e=2;if(o.type!==Ii&&(o.customId&&o.type===Oi||o.type!==Oi)&&r.showCommitLabel){const t=a.append("g"),n=t.insert("rect").attr("class","commit-label-bkg"),i=t.append("text").attr("x",s).attr("y",l+25).attr("class","commit-label").text(o.id);let c=i.node().getBBox();if(n.attr("x",s+10-c.width/2-e).attr("y",l+13.5).attr("width",c.width+2*e).attr("height",c.height+2*e),i.attr("x",s+10-c.width/2),r.rotateCommitLabel){let e=-7.5-(c.width+10)/25*9.5,n=10+c.width/25*8.5;t.attr("transform","translate("+e+", "+n+") rotate("+"-45, "+s+", "+l+")")}}if(o.tag){const n=a.insert("polygon"),r=a.append("circle"),i=a.append("text").attr("y",l-16).attr("class","tag-label").text(o.tag);let c=i.node().getBBox();i.attr("x",s+10-c.width/2);const u=c.height/2,h=l-19.2;n.attr("class","tag-label-bkg").attr("points",`\n ${s-c.width/2-t/2},${h+e}\n ${s-c.width/2-t/2},${h-e}\n ${s+10-c.width/2-t},${h-u-e}\n ${s+10+c.width/2+t},${h-u-e}\n ${s+10+c.width/2+t},${h+u+e}\n ${s+10-c.width/2-t},${h+u+e}`),r.attr("cx",s-c.width/2+t/2).attr("cy",h).attr("r",1.5).attr("class","tag-hole")}}s+=50,s>Fi&&(Fi=s)}))},Ri=(t,e,n=0)=>{const r=t+Math.abs(t-e)/2;if(n>5)return r;if(Mi.every((t=>Math.abs(t-r)>=10)))return Mi.push(r),r;const i=Math.abs(t-e);return Ri(t,e-i/5,n+1)},$i=(t,e,n,r)=>{const i=Ni[e.id],a=Ni[n.id],s=((t,e,n)=>Object.keys(n).filter((r=>n[r].branch===e.branch&&n[r].seq>t.seq&&n[r].seq<e.seq)).length>0)(e,n,r);let o,l="",c="",u=0,h=0,d=Li[n.branch].index;if(s){l="A 10 10, 0, 0, 0,",c="A 10 10, 0, 0, 1,",u=10,h=10,d=Li[n.branch].index;const t=i.y<a.y?Ri(i.y,a.y):Ri(a.y,i.y);o=i.y<a.y?`M ${i.x} ${i.y} L ${i.x} ${t-u} ${l} ${i.x+h} ${t} L ${a.x-u} ${t} ${c} ${a.x} ${t+h} L ${a.x} ${a.y}`:`M ${i.x} ${i.y} L ${i.x} ${t+u} ${c} ${i.x+h} ${t} L ${a.x-u} ${t} ${l} ${a.x} ${t-h} L ${a.x} ${a.y}`}else i.y<a.y&&(l="A 20 20, 0, 0, 0,",u=20,h=20,d=Li[n.branch].index,o=`M ${i.x} ${i.y} L ${i.x} ${a.y-u} ${l} ${i.x+h} ${a.y} L ${a.x} ${a.y}`),i.y>a.y&&(l="A 20 20, 0, 0, 0,",u=20,h=20,d=Li[e.branch].index,o=`M ${i.x} ${i.y} L ${a.x-u} ${i.y} ${l} ${a.x} ${i.y-h} L ${a.x} ${a.y}`),i.y===a.y&&(d=Li[e.branch].index,o=`M ${i.x} ${i.y} L ${i.x} ${a.y-u} ${l} ${i.x+h} ${a.y} L ${a.x} ${a.y}`);t.append("path").attr("d",o).attr("class","arrow arrow"+d%8)},Zi=(t,e)=>{const n=Jr().gitGraph,r=t.append("g");e.forEach(((t,e)=>{const i=e%8,a=Li[t.name].pos,s=r.append("line");s.attr("x1",0),s.attr("y1",a),s.attr("x2",Fi),s.attr("y2",a),s.attr("class","branch branch"+i),Mi.push(a);const o=(t=>{const e=document.createElementNS("http://www.w3.org/2000/svg","text");let n=[];n="string"==typeof t?t.split(/\\n|\n|<br\s*\/?>/gi):Array.isArray(t)?t:[];for(const r of n){const t=document.createElementNS("http://www.w3.org/2000/svg","tspan");t.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),t.setAttribute("dy","1em"),t.setAttribute("x","0"),t.setAttribute("class","row"),t.textContent=r.trim(),e.appendChild(t)}return e})(t.name),l=r.insert("rect"),c=r.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+i);c.node().appendChild(o);let u=o.getBBox();l.attr("class","branchLabelBkg label"+i).attr("rx",4).attr("ry",4).attr("x",-u.width-4-(!0===n.rotateCommitLabel?30:0)).attr("y",-u.height/2+8).attr("width",u.width+18).attr("height",u.height+4),c.attr("transform","translate("+(-u.width-14-(!0===n.rotateCommitLabel?30:0))+", "+(a-u.height/2-1)+")"),l.attr("transform","translate(-19, "+(a-u.height/2)+")")}))},ji={draw:function(t,e,n,r){Li={},Ni={},Ei={},Fi=0,Mi=[];const i=Jr(),a=i.gitGraph;It.debug("in gitgraph renderer",t+"\n","id:",e,n),Ei=r.db.getCommits();const s=r.db.getBranchesAsObjArray();let l=0;s.forEach(((t,e)=>{Li[t.name]={pos:l,index:e},l+=50+(a.rotateCommitLabel?40:0)}));const c=(0,o.Ys)(`[id="${e}"]`);Bi(c,Ei,!1),a.showBranches&&Zi(c,s),((t,e)=>{const n=t.append("g").attr("class","commit-arrows");Object.keys(e).forEach((t=>{const r=e[t];r.parents&&r.parents.length>0&&r.parents.forEach((t=>{$i(n,e[t],r,e)}))}))})(c,Ei),Bi(c,Ei,!0),nr.insertTitle(c,"gitTitleText",a.titleTopMargin,r.db.getDiagramTitle()),ei(void 0,c,a.diagramPadding,a.useMaxWidth??i.useMaxWidth)}},Pi=t=>`\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n ${[0,1,2,3,4,5,6,7].map((e=>`\n .branch-label${e} { fill: ${t["gitBranchLabel"+e]}; }\n .commit${e} { stroke: ${t["git"+e]}; fill: ${t["git"+e]}; }\n .commit-highlight${e} { stroke: ${t["gitInv"+e]}; fill: ${t["gitInv"+e]}; }\n .label${e} { fill: ${t["git"+e]}; }\n .arrow${e} { stroke: ${t["git"+e]}; }\n `)).join("\n")}\n\n .branch {\n stroke-width: 1;\n stroke: ${t.lineColor};\n stroke-dasharray: 2;\n }\n .commit-label { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelColor};}\n .commit-label-bkg { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelBackground}; opacity: 0.5; }\n .tag-label { font-size: ${t.tagLabelFontSize}; fill: ${t.tagLabelColor};}\n .tag-label-bkg { fill: ${t.tagLabelBackground}; stroke: ${t.tagLabelBorder}; }\n .tag-hole { fill: ${t.textColor}; }\n\n .commit-merge {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n }\n .commit-reverse {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n stroke-width: 3;\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n }\n\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n }\n`;var zi=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,6],r=[1,7],i=[1,8],a=[1,9],s=[1,16],o=[1,11],l=[1,12],u=[1,13],h=[1,14],d=[1,15],p=[1,27],f=[1,33],m=[1,34],g=[1,35],y=[1,36],b=[1,37],x=[1,72],v=[1,73],_=[1,74],k=[1,75],T=[1,76],w=[1,77],S=[1,78],E=[1,38],C=[1,39],D=[1,40],A=[1,41],O=[1,42],I=[1,43],L=[1,44],N=[1,45],M=[1,46],F=[1,47],B=[1,48],R=[1,49],$=[1,50],Z=[1,51],j=[1,52],P=[1,53],z=[1,54],Y=[1,55],U=[1,56],W=[1,57],H=[1,59],q=[1,60],V=[1,61],G=[1,62],X=[1,63],K=[1,64],Q=[1,65],J=[1,66],tt=[1,67],et=[1,68],nt=[1,69],rt=[24,52],it=[24,44,46,47,48,49,50,51,52,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],at=[15,24,44,46,47,48,49,50,51,52,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],st=[1,94],ot=[1,95],lt=[1,96],ct=[1,97],ut=[15,24,52],ht=[7,8,9,10,18,22,25,26,27,28],dt=[15,24,43,52],pt=[15,24,43,52,86,87,89,90],ft=[15,43],mt=[44,46,47,48,49,50,51,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],gt={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,directive:6,direction_tb:7,direction_bt:8,direction_rl:9,direction_lr:10,graphConfig:11,openDirective:12,typeDirective:13,closeDirective:14,NEWLINE:15,":":16,argDirective:17,open_directive:18,type_directive:19,arg_directive:20,close_directive:21,C4_CONTEXT:22,statements:23,EOF:24,C4_CONTAINER:25,C4_COMPONENT:26,C4_DYNAMIC:27,C4_DEPLOYMENT:28,otherStatements:29,diagramStatements:30,otherStatement:31,title:32,accDescription:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,boundaryStatement:39,boundaryStartStatement:40,boundaryStopStatement:41,boundaryStart:42,LBRACE:43,ENTERPRISE_BOUNDARY:44,attributes:45,SYSTEM_BOUNDARY:46,BOUNDARY:47,CONTAINER_BOUNDARY:48,NODE:49,NODE_L:50,NODE_R:51,RBRACE:52,diagramStatement:53,PERSON:54,PERSON_EXT:55,SYSTEM:56,SYSTEM_DB:57,SYSTEM_QUEUE:58,SYSTEM_EXT:59,SYSTEM_EXT_DB:60,SYSTEM_EXT_QUEUE:61,CONTAINER:62,CONTAINER_DB:63,CONTAINER_QUEUE:64,CONTAINER_EXT:65,CONTAINER_EXT_DB:66,CONTAINER_EXT_QUEUE:67,COMPONENT:68,COMPONENT_DB:69,COMPONENT_QUEUE:70,COMPONENT_EXT:71,COMPONENT_EXT_DB:72,COMPONENT_EXT_QUEUE:73,REL:74,BIREL:75,REL_U:76,REL_D:77,REL_L:78,REL_R:79,REL_B:80,REL_INDEX:81,UPDATE_EL_STYLE:82,UPDATE_REL_STYLE:83,UPDATE_LAYOUT_CONFIG:84,attribute:85,STR:86,STR_KEY:87,STR_VALUE:88,ATTRIBUTE:89,ATTRIBUTE_EMPTY:90,$accept:0,$end:1},terminals_:{2:"error",7:"direction_tb",8:"direction_bt",9:"direction_rl",10:"direction_lr",15:"NEWLINE",16:":",18:"open_directive",19:"type_directive",20:"arg_directive",21:"close_directive",22:"C4_CONTEXT",24:"EOF",25:"C4_CONTAINER",26:"C4_COMPONENT",27:"C4_DYNAMIC",28:"C4_DEPLOYMENT",32:"title",33:"accDescription",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",43:"LBRACE",44:"ENTERPRISE_BOUNDARY",46:"SYSTEM_BOUNDARY",47:"BOUNDARY",48:"CONTAINER_BOUNDARY",49:"NODE",50:"NODE_L",51:"NODE_R",52:"RBRACE",54:"PERSON",55:"PERSON_EXT",56:"SYSTEM",57:"SYSTEM_DB",58:"SYSTEM_QUEUE",59:"SYSTEM_EXT",60:"SYSTEM_EXT_DB",61:"SYSTEM_EXT_QUEUE",62:"CONTAINER",63:"CONTAINER_DB",64:"CONTAINER_QUEUE",65:"CONTAINER_EXT",66:"CONTAINER_EXT_DB",67:"CONTAINER_EXT_QUEUE",68:"COMPONENT",69:"COMPONENT_DB",70:"COMPONENT_QUEUE",71:"COMPONENT_EXT",72:"COMPONENT_EXT_DB",73:"COMPONENT_EXT_QUEUE",74:"REL",75:"BIREL",76:"REL_U",77:"REL_D",78:"REL_L",79:"REL_R",80:"REL_B",81:"REL_INDEX",82:"UPDATE_EL_STYLE",83:"UPDATE_REL_STYLE",84:"UPDATE_LAYOUT_CONFIG",86:"STR",87:"STR_KEY",88:"STR_VALUE",89:"ATTRIBUTE",90:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[3,2],[5,1],[5,1],[5,1],[5,1],[4,1],[6,4],[6,6],[12,1],[13,1],[17,1],[14,1],[11,4],[11,4],[11,4],[11,4],[11,4],[23,1],[23,1],[23,2],[29,1],[29,2],[29,3],[31,1],[31,1],[31,2],[31,2],[31,1],[39,3],[40,3],[40,3],[40,4],[42,2],[42,2],[42,2],[42,2],[42,2],[42,2],[42,2],[41,1],[30,1],[30,2],[30,3],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,1],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[45,1],[45,2],[85,1],[85,2],[85,1],[85,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 4:r.setDirection("TB");break;case 5:r.setDirection("BT");break;case 6:r.setDirection("RL");break;case 7:r.setDirection("LR");break;case 11:r.parseDirective("%%{","open_directive");break;case 12:break;case 13:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 14:r.parseDirective("}%%","close_directive","c4Context");break;case 15:case 16:case 17:case 18:case 19:r.setC4Type(a[o-3]);break;case 26:r.setTitle(a[o].substring(6)),this.$=a[o].substring(6);break;case 27:r.setAccDescription(a[o].substring(15)),this.$=a[o].substring(15);break;case 28:this.$=a[o].trim(),r.setTitle(this.$);break;case 29:case 30:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 35:case 36:a[o].splice(2,0,"ENTERPRISE"),r.addPersonOrSystemBoundary(...a[o]),this.$=a[o];break;case 37:r.addPersonOrSystemBoundary(...a[o]),this.$=a[o];break;case 38:a[o].splice(2,0,"CONTAINER"),r.addContainerBoundary(...a[o]),this.$=a[o];break;case 39:r.addDeploymentNode("node",...a[o]),this.$=a[o];break;case 40:r.addDeploymentNode("nodeL",...a[o]),this.$=a[o];break;case 41:r.addDeploymentNode("nodeR",...a[o]),this.$=a[o];break;case 42:r.popBoundaryParseStack();break;case 46:r.addPersonOrSystem("person",...a[o]),this.$=a[o];break;case 47:r.addPersonOrSystem("external_person",...a[o]),this.$=a[o];break;case 48:r.addPersonOrSystem("system",...a[o]),this.$=a[o];break;case 49:r.addPersonOrSystem("system_db",...a[o]),this.$=a[o];break;case 50:r.addPersonOrSystem("system_queue",...a[o]),this.$=a[o];break;case 51:r.addPersonOrSystem("external_system",...a[o]),this.$=a[o];break;case 52:r.addPersonOrSystem("external_system_db",...a[o]),this.$=a[o];break;case 53:r.addPersonOrSystem("external_system_queue",...a[o]),this.$=a[o];break;case 54:r.addContainer("container",...a[o]),this.$=a[o];break;case 55:r.addContainer("container_db",...a[o]),this.$=a[o];break;case 56:r.addContainer("container_queue",...a[o]),this.$=a[o];break;case 57:r.addContainer("external_container",...a[o]),this.$=a[o];break;case 58:r.addContainer("external_container_db",...a[o]),this.$=a[o];break;case 59:r.addContainer("external_container_queue",...a[o]),this.$=a[o];break;case 60:r.addComponent("component",...a[o]),this.$=a[o];break;case 61:r.addComponent("component_db",...a[o]),this.$=a[o];break;case 62:r.addComponent("component_queue",...a[o]),this.$=a[o];break;case 63:r.addComponent("external_component",...a[o]),this.$=a[o];break;case 64:r.addComponent("external_component_db",...a[o]),this.$=a[o];break;case 65:r.addComponent("external_component_queue",...a[o]),this.$=a[o];break;case 67:r.addRel("rel",...a[o]),this.$=a[o];break;case 68:r.addRel("birel",...a[o]),this.$=a[o];break;case 69:r.addRel("rel_u",...a[o]),this.$=a[o];break;case 70:r.addRel("rel_d",...a[o]),this.$=a[o];break;case 71:r.addRel("rel_l",...a[o]),this.$=a[o];break;case 72:r.addRel("rel_r",...a[o]),this.$=a[o];break;case 73:r.addRel("rel_b",...a[o]),this.$=a[o];break;case 74:a[o].splice(0,1),r.addRel("rel",...a[o]),this.$=a[o];break;case 75:r.updateElStyle("update_el_style",...a[o]),this.$=a[o];break;case 76:r.updateRelStyle("update_rel_style",...a[o]),this.$=a[o];break;case 77:r.updateLayoutConfig("update_layout_config",...a[o]),this.$=a[o];break;case 78:this.$=[a[o]];break;case 79:a[o].unshift(a[o-1]),this.$=a[o];break;case 80:case 82:this.$=a[o].trim();break;case 81:let t={};t[a[o-1].trim()]=a[o].trim(),this.$=t;break;case 83:this.$=""}},table:[{3:1,4:2,5:3,6:4,7:n,8:r,9:i,10:a,11:5,12:10,18:s,22:o,25:l,26:u,27:h,28:d},{1:[3]},{1:[2,1]},{1:[2,2]},{3:17,4:2,5:3,6:4,7:n,8:r,9:i,10:a,11:5,12:10,18:s,22:o,25:l,26:u,27:h,28:d},{1:[2,8]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{1:[2,7]},{13:18,19:[1,19]},{15:[1,20]},{15:[1,21]},{15:[1,22]},{15:[1,23]},{15:[1,24]},{19:[2,11]},{1:[2,3]},{14:25,16:[1,26],21:p},e([16,21],[2,12]),{23:28,29:29,30:30,31:31,32:f,33:m,34:g,36:y,38:b,39:58,40:70,42:71,44:x,46:v,47:_,48:k,49:T,50:w,51:S,53:32,54:E,55:C,56:D,57:A,58:O,59:I,60:L,61:N,62:M,63:F,64:B,65:R,66:$,67:Z,68:j,69:P,70:z,71:Y,72:U,73:W,74:H,75:q,76:V,77:G,78:X,79:K,80:Q,81:J,82:tt,83:et,84:nt},{23:79,29:29,30:30,31:31,32:f,33:m,34:g,36:y,38:b,39:58,40:70,42:71,44:x,46:v,47:_,48:k,49:T,50:w,51:S,53:32,54:E,55:C,56:D,57:A,58:O,59:I,60:L,61:N,62:M,63:F,64:B,65:R,66:$,67:Z,68:j,69:P,70:z,71:Y,72:U,73:W,74:H,75:q,76:V,77:G,78:X,79:K,80:Q,81:J,82:tt,83:et,84:nt},{23:80,29:29,30:30,31:31,32:f,33:m,34:g,36:y,38:b,39:58,40:70,42:71,44:x,46:v,47:_,48:k,49:T,50:w,51:S,53:32,54:E,55:C,56:D,57:A,58:O,59:I,60:L,61:N,62:M,63:F,64:B,65:R,66:$,67:Z,68:j,69:P,70:z,71:Y,72:U,73:W,74:H,75:q,76:V,77:G,78:X,79:K,80:Q,81:J,82:tt,83:et,84:nt},{23:81,29:29,30:30,31:31,32:f,33:m,34:g,36:y,38:b,39:58,40:70,42:71,44:x,46:v,47:_,48:k,49:T,50:w,51:S,53:32,54:E,55:C,56:D,57:A,58:O,59:I,60:L,61:N,62:M,63:F,64:B,65:R,66:$,67:Z,68:j,69:P,70:z,71:Y,72:U,73:W,74:H,75:q,76:V,77:G,78:X,79:K,80:Q,81:J,82:tt,83:et,84:nt},{23:82,29:29,30:30,31:31,32:f,33:m,34:g,36:y,38:b,39:58,40:70,42:71,44:x,46:v,47:_,48:k,49:T,50:w,51:S,53:32,54:E,55:C,56:D,57:A,58:O,59:I,60:L,61:N,62:M,63:F,64:B,65:R,66:$,67:Z,68:j,69:P,70:z,71:Y,72:U,73:W,74:H,75:q,76:V,77:G,78:X,79:K,80:Q,81:J,82:tt,83:et,84:nt},{15:[1,83]},{17:84,20:[1,85]},{15:[2,14]},{24:[1,86]},e(rt,[2,20],{53:32,39:58,40:70,42:71,30:87,44:x,46:v,47:_,48:k,49:T,50:w,51:S,54:E,55:C,56:D,57:A,58:O,59:I,60:L,61:N,62:M,63:F,64:B,65:R,66:$,67:Z,68:j,69:P,70:z,71:Y,72:U,73:W,74:H,75:q,76:V,77:G,78:X,79:K,80:Q,81:J,82:tt,83:et,84:nt}),e(rt,[2,21]),e(it,[2,23],{15:[1,88]}),e(rt,[2,43],{15:[1,89]}),e(at,[2,26]),e(at,[2,27]),{35:[1,90]},{37:[1,91]},e(at,[2,30]),{45:92,85:93,86:st,87:ot,89:lt,90:ct},{45:98,85:93,86:st,87:ot,89:lt,90:ct},{45:99,85:93,86:st,87:ot,89:lt,90:ct},{45:100,85:93,86:st,87:ot,89:lt,90:ct},{45:101,85:93,86:st,87:ot,89:lt,90:ct},{45:102,85:93,86:st,87:ot,89:lt,90:ct},{45:103,85:93,86:st,87:ot,89:lt,90:ct},{45:104,85:93,86:st,87:ot,89:lt,90:ct},{45:105,85:93,86:st,87:ot,89:lt,90:ct},{45:106,85:93,86:st,87:ot,89:lt,90:ct},{45:107,85:93,86:st,87:ot,89:lt,90:ct},{45:108,85:93,86:st,87:ot,89:lt,90:ct},{45:109,85:93,86:st,87:ot,89:lt,90:ct},{45:110,85:93,86:st,87:ot,89:lt,90:ct},{45:111,85:93,86:st,87:ot,89:lt,90:ct},{45:112,85:93,86:st,87:ot,89:lt,90:ct},{45:113,85:93,86:st,87:ot,89:lt,90:ct},{45:114,85:93,86:st,87:ot,89:lt,90:ct},{45:115,85:93,86:st,87:ot,89:lt,90:ct},{45:116,85:93,86:st,87:ot,89:lt,90:ct},e(ut,[2,66]),{45:117,85:93,86:st,87:ot,89:lt,90:ct},{45:118,85:93,86:st,87:ot,89:lt,90:ct},{45:119,85:93,86:st,87:ot,89:lt,90:ct},{45:120,85:93,86:st,87:ot,89:lt,90:ct},{45:121,85:93,86:st,87:ot,89:lt,90:ct},{45:122,85:93,86:st,87:ot,89:lt,90:ct},{45:123,85:93,86:st,87:ot,89:lt,90:ct},{45:124,85:93,86:st,87:ot,89:lt,90:ct},{45:125,85:93,86:st,87:ot,89:lt,90:ct},{45:126,85:93,86:st,87:ot,89:lt,90:ct},{45:127,85:93,86:st,87:ot,89:lt,90:ct},{30:128,39:58,40:70,42:71,44:x,46:v,47:_,48:k,49:T,50:w,51:S,53:32,54:E,55:C,56:D,57:A,58:O,59:I,60:L,61:N,62:M,63:F,64:B,65:R,66:$,67:Z,68:j,69:P,70:z,71:Y,72:U,73:W,74:H,75:q,76:V,77:G,78:X,79:K,80:Q,81:J,82:tt,83:et,84:nt},{15:[1,130],43:[1,129]},{45:131,85:93,86:st,87:ot,89:lt,90:ct},{45:132,85:93,86:st,87:ot,89:lt,90:ct},{45:133,85:93,86:st,87:ot,89:lt,90:ct},{45:134,85:93,86:st,87:ot,89:lt,90:ct},{45:135,85:93,86:st,87:ot,89:lt,90:ct},{45:136,85:93,86:st,87:ot,89:lt,90:ct},{45:137,85:93,86:st,87:ot,89:lt,90:ct},{24:[1,138]},{24:[1,139]},{24:[1,140]},{24:[1,141]},e(ht,[2,9]),{14:142,21:p},{21:[2,13]},{1:[2,15]},e(rt,[2,22]),e(it,[2,24],{31:31,29:143,32:f,33:m,34:g,36:y,38:b}),e(rt,[2,44],{29:29,30:30,31:31,53:32,39:58,40:70,42:71,23:144,32:f,33:m,34:g,36:y,38:b,44:x,46:v,47:_,48:k,49:T,50:w,51:S,54:E,55:C,56:D,57:A,58:O,59:I,60:L,61:N,62:M,63:F,64:B,65:R,66:$,67:Z,68:j,69:P,70:z,71:Y,72:U,73:W,74:H,75:q,76:V,77:G,78:X,79:K,80:Q,81:J,82:tt,83:et,84:nt}),e(at,[2,28]),e(at,[2,29]),e(ut,[2,46]),e(dt,[2,78],{85:93,45:145,86:st,87:ot,89:lt,90:ct}),e(pt,[2,80]),{88:[1,146]},e(pt,[2,82]),e(pt,[2,83]),e(ut,[2,47]),e(ut,[2,48]),e(ut,[2,49]),e(ut,[2,50]),e(ut,[2,51]),e(ut,[2,52]),e(ut,[2,53]),e(ut,[2,54]),e(ut,[2,55]),e(ut,[2,56]),e(ut,[2,57]),e(ut,[2,58]),e(ut,[2,59]),e(ut,[2,60]),e(ut,[2,61]),e(ut,[2,62]),e(ut,[2,63]),e(ut,[2,64]),e(ut,[2,65]),e(ut,[2,67]),e(ut,[2,68]),e(ut,[2,69]),e(ut,[2,70]),e(ut,[2,71]),e(ut,[2,72]),e(ut,[2,73]),e(ut,[2,74]),e(ut,[2,75]),e(ut,[2,76]),e(ut,[2,77]),{41:147,52:[1,148]},{15:[1,149]},{43:[1,150]},e(ft,[2,35]),e(ft,[2,36]),e(ft,[2,37]),e(ft,[2,38]),e(ft,[2,39]),e(ft,[2,40]),e(ft,[2,41]),{1:[2,16]},{1:[2,17]},{1:[2,18]},{1:[2,19]},{15:[1,151]},e(it,[2,25]),e(rt,[2,45]),e(dt,[2,79]),e(pt,[2,81]),e(ut,[2,31]),e(ut,[2,42]),e(mt,[2,32]),e(mt,[2,33],{15:[1,152]}),e(ht,[2,10]),e(mt,[2,34])],defaultActions:{2:[2,1],3:[2,2],5:[2,8],6:[2,4],7:[2,5],8:[2,6],9:[2,7],16:[2,11],17:[2,3],27:[2,14],85:[2,13],86:[2,15],138:[2,16],139:[2,17],140:[2,18],141:[2,19]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},yt=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),18;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 10;case 5:return this.begin("type_directive"),19;case 6:return this.popState(),this.begin("arg_directive"),16;case 7:return this.popState(),this.popState(),21;case 8:return 20;case 9:return 32;case 10:return 33;case 11:return this.begin("acc_title"),34;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),36;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:case 78:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:case 21:case 75:break;case 19:c;break;case 20:return 15;case 22:return 22;case 23:return 25;case 24:return 26;case 25:return 27;case 26:return 28;case 27:return this.begin("person_ext"),55;case 28:return this.begin("person"),54;case 29:return this.begin("system_ext_queue"),61;case 30:return this.begin("system_ext_db"),60;case 31:return this.begin("system_ext"),59;case 32:return this.begin("system_queue"),58;case 33:return this.begin("system_db"),57;case 34:return this.begin("system"),56;case 35:return this.begin("boundary"),47;case 36:return this.begin("enterprise_boundary"),44;case 37:return this.begin("system_boundary"),46;case 38:return this.begin("container_ext_queue"),67;case 39:return this.begin("container_ext_db"),66;case 40:return this.begin("container_ext"),65;case 41:return this.begin("container_queue"),64;case 42:return this.begin("container_db"),63;case 43:return this.begin("container"),62;case 44:return this.begin("container_boundary"),48;case 45:return this.begin("component_ext_queue"),73;case 46:return this.begin("component_ext_db"),72;case 47:return this.begin("component_ext"),71;case 48:return this.begin("component_queue"),70;case 49:return this.begin("component_db"),69;case 50:return this.begin("component"),68;case 51:case 52:return this.begin("node"),49;case 53:return this.begin("node_l"),50;case 54:return this.begin("node_r"),51;case 55:return this.begin("rel"),74;case 56:return this.begin("birel"),75;case 57:case 58:return this.begin("rel_u"),76;case 59:case 60:return this.begin("rel_d"),77;case 61:case 62:return this.begin("rel_l"),78;case 63:case 64:return this.begin("rel_r"),79;case 65:return this.begin("rel_b"),80;case 66:return this.begin("rel_index"),81;case 67:return this.begin("update_el_style"),82;case 68:return this.begin("update_rel_style"),83;case 69:return this.begin("update_layout_config"),84;case 70:return"EOF_IN_STRUCT";case 71:return this.begin("attribute"),"ATTRIBUTE_EMPTY";case 72:this.begin("attribute");break;case 73:case 84:this.popState(),this.popState();break;case 74:case 76:return 90;case 77:this.begin("string");break;case 79:case 85:return"STR";case 80:this.begin("string_kv");break;case 81:return this.begin("string_kv_key"),"STR_KEY";case 82:this.popState(),this.begin("string_kv_value");break;case 83:return"STR_VALUE";case 86:return"LBRACE";case 87:return"RBRACE";case 88:return"SPACE";case 89:return"EOL";case 90:return 24}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[16,17],inclusive:!1},acc_descr:{rules:[14],inclusive:!1},acc_title:{rules:[12],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[7,8],inclusive:!1},type_directive:{rules:[6,7],inclusive:!1},open_directive:{rules:[5],inclusive:!1},string_kv_value:{rules:[83,84],inclusive:!1},string_kv_key:{rules:[82],inclusive:!1},string_kv:{rules:[81],inclusive:!1},string:{rules:[78,79],inclusive:!1},attribute:{rules:[73,74,75,76,77,80,85],inclusive:!1},update_layout_config:{rules:[70,71,72,73],inclusive:!1},update_rel_style:{rules:[70,71,72,73],inclusive:!1},update_el_style:{rules:[70,71,72,73],inclusive:!1},rel_b:{rules:[70,71,72,73],inclusive:!1},rel_r:{rules:[70,71,72,73],inclusive:!1},rel_l:{rules:[70,71,72,73],inclusive:!1},rel_d:{rules:[70,71,72,73],inclusive:!1},rel_u:{rules:[70,71,72,73],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[70,71,72,73],inclusive:!1},node_r:{rules:[70,71,72,73],inclusive:!1},node_l:{rules:[70,71,72,73],inclusive:!1},node:{rules:[70,71,72,73],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[70,71,72,73],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[70,71,72,73],inclusive:!1},component_ext:{rules:[70,71,72,73],inclusive:!1},component_queue:{rules:[70,71,72,73],inclusive:!1},component_db:{rules:[70,71,72,73],inclusive:!1},component:{rules:[70,71,72,73],inclusive:!1},container_boundary:{rules:[70,71,72,73],inclusive:!1},container_ext_queue:{rules:[],inclusive:!1},container_ext_db:{rules:[70,71,72,73],inclusive:!1},container_ext:{rules:[70,71,72,73],inclusive:!1},container_queue:{rules:[70,71,72,73],inclusive:!1},container_db:{rules:[70,71,72,73],inclusive:!1},container:{rules:[70,71,72,73],inclusive:!1},birel:{rules:[70,71,72,73],inclusive:!1},system_boundary:{rules:[70,71,72,73],inclusive:!1},enterprise_boundary:{rules:[70,71,72,73],inclusive:!1},boundary:{rules:[70,71,72,73],inclusive:!1},system_ext_queue:{rules:[70,71,72,73],inclusive:!1},system_ext_db:{rules:[70,71,72,73],inclusive:!1},system_ext:{rules:[70,71,72,73],inclusive:!1},system_queue:{rules:[70,71,72,73],inclusive:!1},system_db:{rules:[70,71,72,73],inclusive:!1},system:{rules:[70,71,72,73],inclusive:!1},person_ext:{rules:[70,71,72,73],inclusive:!1},person:{rules:[70,71,72,73],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,86,87,88,89,90],inclusive:!0}}},t);function bt(){this.yy={}}return gt.lexer=yt,bt.prototype=gt,gt.Parser=bt,new bt}();zi.parser=zi;const Yi=zi,Ui=t=>null!==t.match(/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/);let Wi=[],Hi=[""],qi="global",Vi="",Gi=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Xi=[],Ki="",Qi=!1,Ji=4,ta=2;var ea;const na=function(t){return null==t?Wi:Wi.filter((e=>e.parentBoundary===t))},ra=function(){return Qi},ia={addPersonOrSystem:function(t,e,n,r,i,a,s){if(null===e||null===n)return;let o={};const l=Wi.find((t=>t.alias===e));if(l&&e===l.alias?o=l:(o.alias=e,Wi.push(o)),o.label=null==n?{text:""}:{text:n},null==r)o.descr={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]={text:e}}else o.descr={text:r};if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]=e}else o.sprite=i;if("object"==typeof a){let[t,e]=Object.entries(a)[0];o[t]=e}else o.tags=a;if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.link=s;o.typeC4Shape={text:t},o.parentBoundary=qi,o.wrap=ra()},addPersonOrSystemBoundary:function(t,e,n,r,i){if(null===t||null===e)return;let a={};const s=Gi.find((e=>e.alias===t));if(s&&t===s.alias?a=s:(a.alias=t,Gi.push(a)),a.label=null==e?{text:""}:{text:e},null==n)a.type={text:"system"};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];a[t]={text:e}}else a.type={text:n};if("object"==typeof r){let[t,e]=Object.entries(r)[0];a[t]=e}else a.tags=r;if("object"==typeof i){let[t,e]=Object.entries(i)[0];a[t]=e}else a.link=i;a.parentBoundary=qi,a.wrap=ra(),Vi=qi,qi=t,Hi.push(Vi)},addContainer:function(t,e,n,r,i,a,s,o){if(null===e||null===n)return;let l={};const c=Wi.find((t=>t.alias===e));if(c&&e===c.alias?l=c:(l.alias=e,Wi.push(l)),l.label=null==n?{text:""}:{text:n},null==r)l.techn={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]={text:e}}else l.techn={text:r};if(null==i)l.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]={text:e}}else l.descr={text:i};if("object"==typeof a){let[t,e]=Object.entries(a)[0];l[t]=e}else l.sprite=a;if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=e}else l.tags=s;if("object"==typeof o){let[t,e]=Object.entries(o)[0];l[t]=e}else l.link=o;l.wrap=ra(),l.typeC4Shape={text:t},l.parentBoundary=qi},addContainerBoundary:function(t,e,n,r,i){if(null===t||null===e)return;let a={};const s=Gi.find((e=>e.alias===t));if(s&&t===s.alias?a=s:(a.alias=t,Gi.push(a)),a.label=null==e?{text:""}:{text:e},null==n)a.type={text:"container"};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];a[t]={text:e}}else a.type={text:n};if("object"==typeof r){let[t,e]=Object.entries(r)[0];a[t]=e}else a.tags=r;if("object"==typeof i){let[t,e]=Object.entries(i)[0];a[t]=e}else a.link=i;a.parentBoundary=qi,a.wrap=ra(),Vi=qi,qi=t,Hi.push(Vi)},addComponent:function(t,e,n,r,i,a,s,o){if(null===e||null===n)return;let l={};const c=Wi.find((t=>t.alias===e));if(c&&e===c.alias?l=c:(l.alias=e,Wi.push(l)),l.label=null==n?{text:""}:{text:n},null==r)l.techn={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]={text:e}}else l.techn={text:r};if(null==i)l.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]={text:e}}else l.descr={text:i};if("object"==typeof a){let[t,e]=Object.entries(a)[0];l[t]=e}else l.sprite=a;if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=e}else l.tags=s;if("object"==typeof o){let[t,e]=Object.entries(o)[0];l[t]=e}else l.link=o;l.wrap=ra(),l.typeC4Shape={text:t},l.parentBoundary=qi},addDeploymentNode:function(t,e,n,r,i,a,s,o){if(null===e||null===n)return;let l={};const c=Gi.find((t=>t.alias===e));if(c&&e===c.alias?l=c:(l.alias=e,Gi.push(l)),l.label=null==n?{text:""}:{text:n},null==r)l.type={text:"node"};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]={text:e}}else l.type={text:r};if(null==i)l.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]={text:e}}else l.descr={text:i};if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=e}else l.tags=s;if("object"==typeof o){let[t,e]=Object.entries(o)[0];l[t]=e}else l.link=o;l.nodeType=t,l.parentBoundary=qi,l.wrap=ra(),Vi=qi,qi=e,Hi.push(Vi)},popBoundaryParseStack:function(){qi=Vi,Hi.pop(),Vi=Hi.pop(),Hi.push(Vi)},addRel:function(t,e,n,r,i,a,s,o,l){if(null==t||null==e||null==n||null==r)return;let c={};const u=Xi.find((t=>t.from===e&&t.to===n));if(u?c=u:Xi.push(c),c.type=t,c.from=e,c.to=n,c.label={text:r},null==i)c.techn={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];c[t]={text:e}}else c.techn={text:i};if(null==a)c.descr={text:""};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];c[t]={text:e}}else c.descr={text:a};if("object"==typeof s){let[t,e]=Object.entries(s)[0];c[t]=e}else c.sprite=s;if("object"==typeof o){let[t,e]=Object.entries(o)[0];c[t]=e}else c.tags=o;if("object"==typeof l){let[t,e]=Object.entries(l)[0];c[t]=e}else c.link=l;c.wrap=ra()},updateElStyle:function(t,e,n,r,i,a,s,o,l,c,u){let h=Wi.find((t=>t.alias===e));if(void 0!==h||(h=Gi.find((t=>t.alias===e)),void 0!==h)){if(null!=n)if("object"==typeof n){let[t,e]=Object.entries(n)[0];h[t]=e}else h.bgColor=n;if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];h[t]=e}else h.fontColor=r;if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];h[t]=e}else h.borderColor=i;if(null!=a)if("object"==typeof a){let[t,e]=Object.entries(a)[0];h[t]=e}else h.shadowing=a;if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];h[t]=e}else h.shape=s;if(null!=o)if("object"==typeof o){let[t,e]=Object.entries(o)[0];h[t]=e}else h.sprite=o;if(null!=l)if("object"==typeof l){let[t,e]=Object.entries(l)[0];h[t]=e}else h.techn=l;if(null!=c)if("object"==typeof c){let[t,e]=Object.entries(c)[0];h[t]=e}else h.legendText=c;if(null!=u)if("object"==typeof u){let[t,e]=Object.entries(u)[0];h[t]=e}else h.legendSprite=u}},updateRelStyle:function(t,e,n,r,i,a,s){const o=Xi.find((t=>t.from===e&&t.to===n));if(void 0!==o){if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]=e}else o.textColor=r;if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]=e}else o.lineColor=i;if(null!=a)if("object"==typeof a){let[t,e]=Object.entries(a)[0];o[t]=parseInt(e)}else o.offsetX=parseInt(a);if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=parseInt(e)}else o.offsetY=parseInt(s)}},updateLayoutConfig:function(t,e,n){let r=Ji,i=ta;if("object"==typeof e){const t=Object.values(e)[0];r=parseInt(t)}else r=parseInt(e);if("object"==typeof n){const t=Object.values(n)[0];i=parseInt(t)}else i=parseInt(n);r>=1&&(Ji=r),i>=1&&(ta=i)},autoWrap:ra,setWrap:function(t){Qi=t},getC4ShapeArray:na,getC4Shape:function(t){return Wi.find((e=>e.alias===t))},getC4ShapeKeys:function(t){return Object.keys(na(t))},getBoundarys:function(t){return null==t?Gi:Gi.filter((e=>e.parentBoundary===t))},getCurrentBoundaryParse:function(){return qi},getParentBoundaryParse:function(){return Vi},getRels:function(){return Xi},getTitle:function(){return Ki},getC4Type:function(){return ea},getC4ShapeInRow:function(){return Ji},getC4BoundaryInRow:function(){return ta},setAccTitle:jr,getAccTitle:Pr,getAccDescription:Yr,setAccDescription:zr,parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().c4,clear:function(){Wi=[],Gi=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Vi="",qi="global",Hi=[""],Xi=[],Hi=[""],Ki="",Qi=!1,Ji=4,ta=2},LINETYPE:{SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},setTitle:function(t){let e=Bt(t,dr());Ki=e},setC4Type:function(t){let e=Bt(t,dr());ea=e}},aa=function(t,e){const n=t.append("rect");if(n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),"undefined"!==e.attrs&&null!==e.attrs)for(let r in e.attrs)n.attr(r,e.attrs[r]);return"undefined"!==e.class&&n.attr("class",e.class),n},sa=function(t,e,n,r,i,a){const o=t.append("image");o.attr("width",e),o.attr("height",n),o.attr("x",r),o.attr("y",i);let l=a.startsWith("data:image/png;base64")?a:(0,s.N)(a);o.attr("xlink:href",l)},oa=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},la=(t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),ca=function(){function t(t,e,n,i,a,s,o){r(e.append("text").attr("x",n+a/2).attr("y",i+s/2+5).style("text-anchor","middle").text(t),o)}function e(t,e,n,i,a,s,o,l){const{fontSize:c,fontFamily:u,fontWeight:h}=l,d=t.split(zt.lineBreakRegex);for(let p=0;p<d.length;p++){const t=p*c-c*(d.length-1)/2,s=e.append("text").attr("x",n+a/2).attr("y",i).style("text-anchor","middle").attr("dominant-baseline","middle").style("font-size",c).style("font-weight",h).style("font-family",u);s.append("tspan").attr("dy",t).text(d[p]).attr("alignment-baseline","mathematical"),r(s,o)}}function n(t,n,i,a,s,o,l,c){const u=n.append("switch"),h=u.append("foreignObject").attr("x",i).attr("y",a).attr("width",s).attr("height",o).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");h.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,u,i,a,s,0,l,c),r(h,l)}function r(t,e){for(const n in e)e.hasOwnProperty(n)&&t.attr(n,e[n])}return function(r){return"fo"===r.textPlacement?n:"old"===r.textPlacement?t:e}}(),ua=function(t,e,n){const r=t.append("g");let i=e.bgColor?e.bgColor:"none",a=e.borderColor?e.borderColor:"#444444",s=e.fontColor?e.fontColor:"black",o={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};e.nodeType&&(o={"stroke-width":1});let l={x:e.x,y:e.y,fill:i,stroke:a,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:o};aa(r,l);let c=n.boundaryFont();c.fontWeight="bold",c.fontSize=c.fontSize+2,c.fontColor=s,ca(n)(e.label.text,r,e.x,e.y+e.label.Y,e.width,e.height,{fill:"#444444"},c),e.type&&""!==e.type.text&&(c=n.boundaryFont(),c.fontColor=s,ca(n)(e.type.text,r,e.x,e.y+e.type.Y,e.width,e.height,{fill:"#444444"},c)),e.descr&&""!==e.descr.text&&(c=n.boundaryFont(),c.fontSize=c.fontSize-2,c.fontColor=s,ca(n)(e.descr.text,r,e.x,e.y+e.descr.Y,e.width,e.height,{fill:"#444444"},c))},ha=function(t,e,n){var r;let i=e.bgColor?e.bgColor:n[e.typeC4Shape.text+"_bg_color"],a=e.borderColor?e.borderColor:n[e.typeC4Shape.text+"_border_color"],s=e.fontColor?e.fontColor:"#FFFFFF",o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(e.typeC4Shape.text){case"person":o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII="}const l=t.append("g");l.attr("class","person-man");const c=oa();switch(e.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":c.x=e.x,c.y=e.y,c.fill=i,c.width=e.width,c.height=e.height,c.stroke=a,c.rx=2.5,c.ry=2.5,c.attrs={"stroke-width":.5},aa(l,c);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":l.append("path").attr("fill",i).attr("stroke-width","0.5").attr("stroke",a).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2).replaceAll("height",e.height)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",a).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":l.append("path").attr("fill",i).attr("stroke-width","0.5").attr("stroke",a).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("width",e.width).replaceAll("half",e.height/2)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",a).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",e.x+e.width).replaceAll("starty",e.y).replaceAll("half",e.height/2))}let u=la(n,e.typeC4Shape.text);switch(l.append("text").attr("fill",s).attr("font-family",u.fontFamily).attr("font-size",u.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",e.typeC4Shape.width).attr("x",e.x+e.width/2-e.typeC4Shape.width/2).attr("y",e.y+e.typeC4Shape.Y).text("<<"+e.typeC4Shape.text+">>"),e.typeC4Shape.text){case"person":case"external_person":sa(l,48,48,e.x+e.width/2-24,e.y+e.image.Y,o)}let h=n[e.typeC4Shape.text+"Font"]();return h.fontWeight="bold",h.fontSize=h.fontSize+2,h.fontColor=s,ca(n)(e.label.text,l,e.x,e.y+e.label.Y,e.width,e.height,{fill:s},h),h=n[e.typeC4Shape.text+"Font"](),h.fontColor=s,e.techn&&""!==(null==(r=e.techn)?void 0:r.text)?ca(n)(e.techn.text,l,e.x,e.y+e.techn.Y,e.width,e.height,{fill:s,"font-style":"italic"},h):e.type&&""!==e.type.text&&ca(n)(e.type.text,l,e.x,e.y+e.type.Y,e.width,e.height,{fill:s,"font-style":"italic"},h),e.descr&&""!==e.descr.text&&(h=n.personFont(),h.fontColor=s,ca(n)(e.descr.text,l,e.x,e.y+e.descr.Y,e.width,e.height,{fill:s},h)),e.height},da=(t,e,n)=>{const r=t.append("g");let i=0;for(let a of e){let t=a.textColor?a.textColor:"#444444",e=a.lineColor?a.lineColor:"#444444",s=a.offsetX?parseInt(a.offsetX):0,o=a.offsetY?parseInt(a.offsetY):0,l="";if(0===i){let t=r.append("line");t.attr("x1",a.startPoint.x),t.attr("y1",a.startPoint.y),t.attr("x2",a.endPoint.x),t.attr("y2",a.endPoint.y),t.attr("stroke-width","1"),t.attr("stroke",e),t.style("fill","none"),"rel_b"!==a.type&&t.attr("marker-end","url("+l+"#arrowhead)"),"birel"!==a.type&&"rel_b"!==a.type||t.attr("marker-start","url("+l+"#arrowend)"),i=-1}else{let t=r.append("path");t.attr("fill","none").attr("stroke-width","1").attr("stroke",e).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",a.startPoint.x).replaceAll("starty",a.startPoint.y).replaceAll("controlx",a.startPoint.x+(a.endPoint.x-a.startPoint.x)/2-(a.endPoint.x-a.startPoint.x)/4).replaceAll("controly",a.startPoint.y+(a.endPoint.y-a.startPoint.y)/2).replaceAll("stopx",a.endPoint.x).replaceAll("stopy",a.endPoint.y)),"rel_b"!==a.type&&t.attr("marker-end","url("+l+"#arrowhead)"),"birel"!==a.type&&"rel_b"!==a.type||t.attr("marker-start","url("+l+"#arrowend)")}let c=n.messageFont();ca(n)(a.label.text,r,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+s,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+o,a.label.width,a.label.height,{fill:t},c),a.techn&&""!==a.techn.text&&(c=n.messageFont(),ca(n)("["+a.techn.text+"]",r,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+s,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+n.messageFontSize+5+o,Math.max(a.label.width,a.techn.width),a.techn.height,{fill:t,"font-style":"italic"},c))}},pa=function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},fa=function(t){t.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},ma=function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},ga=function(t){const e=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);e.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),e.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},ya=function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},ba=function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},xa=function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")};s.N;let va=0,_a=0,ka=4,Ta=2;zi.yy=ia;let wa={};class Sa{constructor(t){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,Ea(t.db.getConfig())}setData(t,e,n,r){this.nextData.startx=this.data.startx=t,this.nextData.stopx=this.data.stopx=e,this.nextData.starty=this.data.starty=n,this.nextData.stopy=this.data.stopy=r}updateVal(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])}insert(t){this.nextData.cnt=this.nextData.cnt+1;let e=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+t.margin:this.nextData.stopx+2*t.margin,n=e+t.width,r=this.nextData.starty+2*t.margin,i=r+t.height;(e>=this.data.widthLimit||n>=this.data.widthLimit||this.nextData.cnt>ka)&&(e=this.nextData.startx+t.margin+wa.nextLinePaddingX,r=this.nextData.stopy+2*t.margin,this.nextData.stopx=n=e+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=i=r+t.height,this.nextData.cnt=1),t.x=e,t.y=r,this.updateVal(this.data,"startx",e,Math.min),this.updateVal(this.data,"starty",r,Math.min),this.updateVal(this.data,"stopx",n,Math.max),this.updateVal(this.data,"stopy",i,Math.max),this.updateVal(this.nextData,"startx",e,Math.min),this.updateVal(this.nextData,"starty",r,Math.min),this.updateVal(this.nextData,"stopx",n,Math.max),this.updateVal(this.nextData,"stopy",i,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},Ea(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}}const Ea=function(t){Mn(wa,t),t.fontFamily&&(wa.personFontFamily=wa.systemFontFamily=wa.messageFontFamily=t.fontFamily),t.fontSize&&(wa.personFontSize=wa.systemFontSize=wa.messageFontSize=t.fontSize),t.fontWeight&&(wa.personFontWeight=wa.systemFontWeight=wa.messageFontWeight=t.fontWeight)},Ca=(t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),Da=t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight});function Aa(t,e,n,r,i){if(!e[t].width)if(n)e[t].text=Hn(e[t].text,i,r),e[t].textLines=e[t].text.split(zt.lineBreakRegex).length,e[t].width=i,e[t].height=Vn(e[t].text,r);else{let n=e[t].text.split(zt.lineBreakRegex);e[t].textLines=n.length;let i=0;e[t].height=0,e[t].width=0;for(const a of n)e[t].width=Math.max(Gn(a,r),e[t].width),i=Vn(a,r),e[t].height=e[t].height+i}}const Oa=function(t,e,n){e.x=n.data.startx,e.y=n.data.starty,e.width=n.data.stopx-n.data.startx,e.height=n.data.stopy-n.data.starty,e.label.y=wa.c4ShapeMargin-35;let r=e.wrap&&wa.wrap,i=Da(wa);i.fontSize=i.fontSize+2,i.fontWeight="bold",Aa("label",e,r,i,Gn(e.label.text,i)),ua(t,e,wa)},Ia=function(t,e,n,r){let i=0;for(const a of r){i=0;const r=n[a];let s=Ca(wa,r.typeC4Shape.text);switch(s.fontSize=s.fontSize-2,r.typeC4Shape.width=Gn("<<"+r.typeC4Shape.text+">>",s),r.typeC4Shape.height=s.fontSize+2,r.typeC4Shape.Y=wa.c4ShapePadding,i=r.typeC4Shape.Y+r.typeC4Shape.height-4,r.image={width:0,height:0,Y:0},r.typeC4Shape.text){case"person":case"external_person":r.image.width=48,r.image.height=48,r.image.Y=i,i=r.image.Y+r.image.height}r.sprite&&(r.image.width=48,r.image.height=48,r.image.Y=i,i=r.image.Y+r.image.height);let o=r.wrap&&wa.wrap,l=wa.width-2*wa.c4ShapePadding,c=Ca(wa,r.typeC4Shape.text);if(c.fontSize=c.fontSize+2,c.fontWeight="bold",Aa("label",r,o,c,l),r.label.Y=i+8,i=r.label.Y+r.label.height,r.type&&""!==r.type.text){r.type.text="["+r.type.text+"]",Aa("type",r,o,Ca(wa,r.typeC4Shape.text),l),r.type.Y=i+5,i=r.type.Y+r.type.height}else if(r.techn&&""!==r.techn.text){r.techn.text="["+r.techn.text+"]",Aa("techn",r,o,Ca(wa,r.techn.text),l),r.techn.Y=i+5,i=r.techn.Y+r.techn.height}let u=i,h=r.label.width;if(r.descr&&""!==r.descr.text){Aa("descr",r,o,Ca(wa,r.typeC4Shape.text),l),r.descr.Y=i+20,i=r.descr.Y+r.descr.height,h=Math.max(r.label.width,r.descr.width),u=i-5*r.descr.textLines}h+=wa.c4ShapePadding,r.width=Math.max(r.width||wa.width,h,wa.width),r.height=Math.max(r.height||wa.height,u,wa.height),r.margin=r.margin||wa.c4ShapeMargin,t.insert(r),ha(e,r,wa)}t.bumpLastMargin(wa.c4ShapeMargin)};class La{constructor(t,e){this.x=t,this.y=e}}let Na=function(t,e){let n=t.x,r=t.y,i=e.x,a=e.y,s=n+t.width/2,o=r+t.height/2,l=Math.abs(n-i),c=Math.abs(r-a),u=c/l,h=t.height/t.width,d=null;return r==a&&n<i?d=new La(n+t.width,o):r==a&&n>i?d=new La(n,o):n==i&&r<a?d=new La(s,r+t.height):n==i&&r>a&&(d=new La(s,r)),n>i&&r<a?d=h>=u?new La(n,o+u*t.width/2):new La(s-l/c*t.height/2,r+t.height):n<i&&r<a?d=h>=u?new La(n+t.width,o+u*t.width/2):new La(s+l/c*t.height/2,r+t.height):n<i&&r>a?d=h>=u?new La(n+t.width,o-u*t.width/2):new La(s+t.height/2*l/c,r):n>i&&r>a&&(d=h>=u?new La(n,o-t.width/2*u):new La(s-t.height/2*l/c,r)),d},Ma=function(t,e){let n={x:0,y:0};n.x=e.x+e.width/2,n.y=e.y+e.height/2;let r=Na(t,n);return n.x=t.x+t.width/2,n.y=t.y+t.height/2,{startPoint:r,endPoint:Na(e,n)}};function Fa(t,e,n,r,i){let a=new Sa(i);a.data.widthLimit=n.data.widthLimit/Math.min(Ta,r.length);for(let[s,o]of r.entries()){let r=0;o.image={width:0,height:0,Y:0},o.sprite&&(o.image.width=48,o.image.height=48,o.image.Y=r,r=o.image.Y+o.image.height);let l=o.wrap&&wa.wrap,c=Da(wa);if(c.fontSize=c.fontSize+2,c.fontWeight="bold",Aa("label",o,l,c,a.data.widthLimit),o.label.Y=r+8,r=o.label.Y+o.label.height,o.type&&""!==o.type.text){o.type.text="["+o.type.text+"]",Aa("type",o,l,Da(wa),a.data.widthLimit),o.type.Y=r+5,r=o.type.Y+o.type.height}if(o.descr&&""!==o.descr.text){let t=Da(wa);t.fontSize=t.fontSize-2,Aa("descr",o,l,t,a.data.widthLimit),o.descr.Y=r+20,r=o.descr.Y+o.descr.height}if(0==s||s%Ta==0){let t=n.data.startx+wa.diagramMarginX,e=n.data.stopy+wa.diagramMarginY+r;a.setData(t,t,e,e)}else{let t=a.data.stopx!==a.data.startx?a.data.stopx+wa.diagramMarginX:a.data.startx,e=a.data.starty;a.setData(t,t,e,e)}a.name=o.alias;let u=i.db.getC4ShapeArray(o.alias),h=i.db.getC4ShapeKeys(o.alias);h.length>0&&Ia(a,t,u,h),e=o.alias;let d=i.db.getBoundarys(e);d.length>0&&Fa(t,e,a,d,i),"global"!==o.alias&&Oa(t,o,a),n.data.stopy=Math.max(a.data.stopy+wa.c4ShapeMargin,n.data.stopy),n.data.stopx=Math.max(a.data.stopx+wa.c4ShapeMargin,n.data.stopx),va=Math.max(va,n.data.stopx),_a=Math.max(_a,n.data.stopy)}}const Ba={drawPersonOrSystemArray:Ia,drawBoundary:Oa,setConf:Ea,draw:function(t,e,n,r){wa=dr().c4;const i=dr().securityLevel;let a;"sandbox"===i&&(a=(0,o.Ys)("#i"+e));const s="sandbox"===i?(0,o.Ys)(a.nodes()[0].contentDocument.body):(0,o.Ys)("body");let l=r.db;r.db.setWrap(wa.wrap),ka=l.getC4ShapeInRow(),Ta=l.getC4BoundaryInRow(),It.debug(`C:${JSON.stringify(wa,null,2)}`);const c="sandbox"===i?s.select(`[id="${e}"]`):(0,o.Ys)(`[id="${e}"]`);ba(c),ya(c),xa(c);let u=new Sa(r);u.setData(wa.diagramMarginX,wa.diagramMarginX,wa.diagramMarginY,wa.diagramMarginY),u.data.widthLimit=screen.availWidth,va=wa.diagramMarginX,_a=wa.diagramMarginY;const h=r.db.getTitle();Fa(c,"",u,r.db.getBoundarys(""),r),pa(c),fa(c),ga(c),ma(c),function(t,e,n,r){let i=0;for(let s of e){i+=1;let t=s.wrap&&wa.wrap,e={fontFamily:(a=wa).messageFontFamily,fontSize:a.messageFontSize,fontWeight:a.messageFontWeight};"C4Dynamic"===r.db.getC4Type()&&(s.label.text=i+": "+s.label.text);let o=Gn(s.label.text,e);Aa("label",s,t,e,o),s.techn&&""!==s.techn.text&&(o=Gn(s.techn.text,e),Aa("techn",s,t,e,o)),s.descr&&""!==s.descr.text&&(o=Gn(s.descr.text,e),Aa("descr",s,t,e,o));let l=n(s.from),c=n(s.to),u=Ma(l,c);s.startPoint=u.startPoint,s.endPoint=u.endPoint}var a;da(t,e,wa)}(c,r.db.getRels(),r.db.getC4Shape,r),u.data.stopx=va,u.data.stopy=_a;const d=u.data;let p=d.stopy-d.starty+2*wa.diagramMarginY;const f=d.stopx-d.startx+2*wa.diagramMarginX;h&&c.append("text").text(h).attr("x",(d.stopx-d.startx)/2-4*wa.diagramMarginX).attr("y",d.starty+wa.diagramMarginY),xr(c,p,f,wa.useMaxWidth);const m=h?60:0;c.attr("viewBox",d.startx-wa.diagramMarginX+" -"+(wa.diagramMarginY+m)+" "+f+" "+(p+m)),It.debug("models:",d)}};var Ra=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,3],r=[1,7],i=[1,8],a=[1,9],s=[1,10],o=[1,13],l=[1,12],c=[1,16,25],u=[1,20],h=[1,32],d=[1,33],p=[1,34],f=[1,36],m=[1,39],g=[1,37],y=[1,38],b=[1,44],x=[1,45],v=[1,40],_=[1,41],k=[1,42],T=[1,43],w=[1,48],S=[1,49],E=[1,50],C=[1,51],D=[16,25],A=[1,65],O=[1,66],I=[1,67],L=[1,68],N=[1,69],M=[1,70],F=[1,71],B=[1,80],R=[16,25,32,45,46,54,60,61,62,63,64,65,66,71,73],$=[16,25,30,32,45,46,50,54,60,61,62,63,64,65,66,71,73,88,89,90,91],Z=[5,8,9,10,11,16,19,23,25],j=[54,88,89,90,91],P=[54,65,66,88,89,90,91],z=[54,60,61,62,63,64,88,89,90,91],Y=[16,25,32],U=[1,107],W={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statments:5,direction:6,directive:7,direction_tb:8,direction_bt:9,direction_rl:10,direction_lr:11,graphConfig:12,openDirective:13,typeDirective:14,closeDirective:15,NEWLINE:16,":":17,argDirective:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,CLASS_DIAGRAM:23,statements:24,EOF:25,statement:26,className:27,alphaNumToken:28,classLiteralName:29,GENERICTYPE:30,relationStatement:31,LABEL:32,classStatement:33,methodStatement:34,annotationStatement:35,clickStatement:36,cssClassStatement:37,noteStatement:38,acc_title:39,acc_title_value:40,acc_descr:41,acc_descr_value:42,acc_descr_multiline_value:43,CLASS:44,STYLE_SEPARATOR:45,STRUCT_START:46,members:47,STRUCT_STOP:48,ANNOTATION_START:49,ANNOTATION_END:50,MEMBER:51,SEPARATOR:52,relation:53,STR:54,NOTE_FOR:55,noteText:56,NOTE:57,relationType:58,lineType:59,AGGREGATION:60,EXTENSION:61,COMPOSITION:62,DEPENDENCY:63,LOLLIPOP:64,LINE:65,DOTTED_LINE:66,CALLBACK:67,LINK:68,LINK_TARGET:69,CLICK:70,CALLBACK_NAME:71,CALLBACK_ARGS:72,HREF:73,CSSCLASS:74,commentToken:75,textToken:76,graphCodeTokens:77,textNoTagsToken:78,TAGSTART:79,TAGEND:80,"==":81,"--":82,PCT:83,DEFAULT:84,SPACE:85,MINUS:86,keywords:87,UNICODE_TEXT:88,NUM:89,ALPHA:90,BQUOTE_STR:91,$accept:0,$end:1},terminals_:{2:"error",5:"statments",8:"direction_tb",9:"direction_bt",10:"direction_rl",11:"direction_lr",16:"NEWLINE",17:":",19:"open_directive",20:"type_directive",21:"arg_directive",22:"close_directive",23:"CLASS_DIAGRAM",25:"EOF",30:"GENERICTYPE",32:"LABEL",39:"acc_title",40:"acc_title_value",41:"acc_descr",42:"acc_descr_value",43:"acc_descr_multiline_value",44:"CLASS",45:"STYLE_SEPARATOR",46:"STRUCT_START",48:"STRUCT_STOP",49:"ANNOTATION_START",50:"ANNOTATION_END",51:"MEMBER",52:"SEPARATOR",54:"STR",55:"NOTE_FOR",57:"NOTE",60:"AGGREGATION",61:"EXTENSION",62:"COMPOSITION",63:"DEPENDENCY",64:"LOLLIPOP",65:"LINE",66:"DOTTED_LINE",67:"CALLBACK",68:"LINK",69:"LINK_TARGET",70:"CLICK",71:"CALLBACK_NAME",72:"CALLBACK_ARGS",73:"HREF",74:"CSSCLASS",77:"graphCodeTokens",79:"TAGSTART",80:"TAGEND",81:"==",82:"--",83:"PCT",84:"DEFAULT",85:"SPACE",86:"MINUS",87:"keywords",88:"UNICODE_TEXT",89:"NUM",90:"ALPHA",91:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[3,1],[3,2],[6,1],[6,1],[6,1],[6,1],[4,1],[7,4],[7,6],[13,1],[14,1],[18,1],[15,1],[12,4],[24,1],[24,2],[24,3],[27,1],[27,1],[27,2],[27,2],[27,2],[26,1],[26,2],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,2],[26,2],[26,1],[33,2],[33,4],[33,5],[33,7],[35,4],[47,1],[47,2],[34,1],[34,2],[34,1],[34,1],[31,3],[31,4],[31,4],[31,5],[38,3],[38,2],[53,3],[53,2],[53,2],[53,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[36,3],[36,4],[36,3],[36,4],[36,4],[36,5],[36,3],[36,4],[36,4],[36,5],[36,3],[36,4],[36,4],[36,5],[37,3],[75,1],[75,1],[76,1],[76,1],[76,1],[76,1],[76,1],[76,1],[76,1],[78,1],[78,1],[78,1],[78,1],[28,1],[28,1],[28,1],[29,1],[56,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 5:r.setDirection("TB");break;case 6:r.setDirection("BT");break;case 7:r.setDirection("RL");break;case 8:r.setDirection("LR");break;case 12:r.parseDirective("%%{","open_directive");break;case 13:r.parseDirective(a[o],"type_directive");break;case 14:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 15:r.parseDirective("}%%","close_directive","class");break;case 20:case 21:this.$=a[o];break;case 22:this.$=a[o-1]+a[o];break;case 23:case 24:this.$=a[o-1]+"~"+a[o];break;case 25:r.addRelation(a[o]);break;case 26:a[o-1].title=r.cleanupLabel(a[o]),r.addRelation(a[o-1]);break;case 35:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 36:case 37:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 38:r.addClass(a[o]);break;case 39:r.addClass(a[o-2]),r.setCssClass(a[o-2],a[o]);break;case 40:r.addClass(a[o-3]),r.addMembers(a[o-3],a[o-1]);break;case 41:r.addClass(a[o-5]),r.setCssClass(a[o-5],a[o-3]),r.addMembers(a[o-5],a[o-1]);break;case 42:r.addAnnotation(a[o],a[o-2]);break;case 43:this.$=[a[o]];break;case 44:a[o].push(a[o-1]),this.$=a[o];break;case 45:case 47:case 48:break;case 46:r.addMember(a[o-1],r.cleanupLabel(a[o]));break;case 49:this.$={id1:a[o-2],id2:a[o],relation:a[o-1],relationTitle1:"none",relationTitle2:"none"};break;case 50:this.$={id1:a[o-3],id2:a[o],relation:a[o-1],relationTitle1:a[o-2],relationTitle2:"none"};break;case 51:this.$={id1:a[o-3],id2:a[o],relation:a[o-2],relationTitle1:"none",relationTitle2:a[o-1]};break;case 52:this.$={id1:a[o-4],id2:a[o],relation:a[o-2],relationTitle1:a[o-3],relationTitle2:a[o-1]};break;case 53:r.addNote(a[o],a[o-1]);break;case 54:r.addNote(a[o]);break;case 55:this.$={type1:a[o-2],type2:a[o],lineType:a[o-1]};break;case 56:this.$={type1:"none",type2:a[o],lineType:a[o-1]};break;case 57:this.$={type1:a[o-1],type2:"none",lineType:a[o]};break;case 58:this.$={type1:"none",type2:"none",lineType:a[o]};break;case 59:this.$=r.relationType.AGGREGATION;break;case 60:this.$=r.relationType.EXTENSION;break;case 61:this.$=r.relationType.COMPOSITION;break;case 62:this.$=r.relationType.DEPENDENCY;break;case 63:this.$=r.relationType.LOLLIPOP;break;case 64:this.$=r.lineType.LINE;break;case 65:this.$=r.lineType.DOTTED_LINE;break;case 66:case 72:this.$=a[o-2],r.setClickEvent(a[o-1],a[o]);break;case 67:case 73:this.$=a[o-3],r.setClickEvent(a[o-2],a[o-1]),r.setTooltip(a[o-2],a[o]);break;case 68:case 76:this.$=a[o-2],r.setLink(a[o-1],a[o]);break;case 69:case 77:this.$=a[o-3],r.setLink(a[o-2],a[o-1],a[o]);break;case 70:case 78:this.$=a[o-3],r.setLink(a[o-2],a[o-1]),r.setTooltip(a[o-2],a[o]);break;case 71:case 79:this.$=a[o-4],r.setLink(a[o-3],a[o-2],a[o]),r.setTooltip(a[o-3],a[o-1]);break;case 74:this.$=a[o-3],r.setClickEvent(a[o-2],a[o-1],a[o]);break;case 75:this.$=a[o-4],r.setClickEvent(a[o-3],a[o-2],a[o-1]),r.setTooltip(a[o-3],a[o]);break;case 80:r.setCssClass(a[o-1],a[o])}},table:[{3:1,4:2,5:n,6:4,7:5,8:r,9:i,10:a,11:s,12:6,13:11,19:o,23:l},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{3:14,4:2,5:n,6:4,7:5,8:r,9:i,10:a,11:s,12:6,13:11,19:o,23:l},{1:[2,9]},e(c,[2,5]),e(c,[2,6]),e(c,[2,7]),e(c,[2,8]),{14:15,20:[1,16]},{16:[1,17]},{20:[2,12]},{1:[2,4]},{15:18,17:[1,19],22:u},e([17,22],[2,13]),{6:31,7:30,8:r,9:i,10:a,11:s,13:11,19:o,24:21,26:22,27:35,28:46,29:47,31:23,33:24,34:25,35:26,36:27,37:28,38:29,39:h,41:d,43:p,44:f,49:m,51:g,52:y,55:b,57:x,67:v,68:_,70:k,74:T,88:w,89:S,90:E,91:C},{16:[1,52]},{18:53,21:[1,54]},{16:[2,15]},{25:[1,55]},{16:[1,56],25:[2,17]},e(D,[2,25],{32:[1,57]}),e(D,[2,27]),e(D,[2,28]),e(D,[2,29]),e(D,[2,30]),e(D,[2,31]),e(D,[2,32]),e(D,[2,33]),e(D,[2,34]),{40:[1,58]},{42:[1,59]},e(D,[2,37]),e(D,[2,45],{53:60,58:63,59:64,32:[1,62],54:[1,61],60:A,61:O,62:I,63:L,64:N,65:M,66:F}),{27:72,28:46,29:47,88:w,89:S,90:E,91:C},e(D,[2,47]),e(D,[2,48]),{28:73,88:w,89:S,90:E},{27:74,28:46,29:47,88:w,89:S,90:E,91:C},{27:75,28:46,29:47,88:w,89:S,90:E,91:C},{27:76,28:46,29:47,88:w,89:S,90:E,91:C},{54:[1,77]},{27:78,28:46,29:47,88:w,89:S,90:E,91:C},{54:B,56:79},e(R,[2,20],{28:46,29:47,27:81,30:[1,82],88:w,89:S,90:E,91:C}),e(R,[2,21],{30:[1,83]}),e($,[2,94]),e($,[2,95]),e($,[2,96]),e([16,25,30,32,45,46,54,60,61,62,63,64,65,66,71,73],[2,97]),e(Z,[2,10]),{15:84,22:u},{22:[2,14]},{1:[2,16]},{6:31,7:30,8:r,9:i,10:a,11:s,13:11,19:o,24:85,25:[2,18],26:22,27:35,28:46,29:47,31:23,33:24,34:25,35:26,36:27,37:28,38:29,39:h,41:d,43:p,44:f,49:m,51:g,52:y,55:b,57:x,67:v,68:_,70:k,74:T,88:w,89:S,90:E,91:C},e(D,[2,26]),e(D,[2,35]),e(D,[2,36]),{27:86,28:46,29:47,54:[1,87],88:w,89:S,90:E,91:C},{53:88,58:63,59:64,60:A,61:O,62:I,63:L,64:N,65:M,66:F},e(D,[2,46]),{59:89,65:M,66:F},e(j,[2,58],{58:90,60:A,61:O,62:I,63:L,64:N}),e(P,[2,59]),e(P,[2,60]),e(P,[2,61]),e(P,[2,62]),e(P,[2,63]),e(z,[2,64]),e(z,[2,65]),e(D,[2,38],{45:[1,91],46:[1,92]}),{50:[1,93]},{54:[1,94]},{54:[1,95]},{71:[1,96],73:[1,97]},{28:98,88:w,89:S,90:E},{54:B,56:99},e(D,[2,54]),e(D,[2,98]),e(R,[2,22]),e(R,[2,23]),e(R,[2,24]),{16:[1,100]},{25:[2,19]},e(Y,[2,49]),{27:101,28:46,29:47,88:w,89:S,90:E,91:C},{27:102,28:46,29:47,54:[1,103],88:w,89:S,90:E,91:C},e(j,[2,57],{58:104,60:A,61:O,62:I,63:L,64:N}),e(j,[2,56]),{28:105,88:w,89:S,90:E},{47:106,51:U},{27:108,28:46,29:47,88:w,89:S,90:E,91:C},e(D,[2,66],{54:[1,109]}),e(D,[2,68],{54:[1,111],69:[1,110]}),e(D,[2,72],{54:[1,112],72:[1,113]}),e(D,[2,76],{54:[1,115],69:[1,114]}),e(D,[2,80]),e(D,[2,53]),e(Z,[2,11]),e(Y,[2,51]),e(Y,[2,50]),{27:116,28:46,29:47,88:w,89:S,90:E,91:C},e(j,[2,55]),e(D,[2,39],{46:[1,117]}),{48:[1,118]},{47:119,48:[2,43],51:U},e(D,[2,42]),e(D,[2,67]),e(D,[2,69]),e(D,[2,70],{69:[1,120]}),e(D,[2,73]),e(D,[2,74],{54:[1,121]}),e(D,[2,77]),e(D,[2,78],{69:[1,122]}),e(Y,[2,52]),{47:123,51:U},e(D,[2,40]),{48:[2,44]},e(D,[2,71]),e(D,[2,75]),e(D,[2,79]),{48:[1,124]},e(D,[2,41])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],6:[2,9],13:[2,12],14:[2,4],20:[2,15],54:[2,14],55:[2,16],85:[2,19],119:[2,44]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},H=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),19;case 1:return 8;case 2:return 9;case 3:return 10;case 4:return 11;case 5:return this.begin("type_directive"),20;case 6:return this.popState(),this.begin("arg_directive"),17;case 7:return this.popState(),this.popState(),22;case 8:return 21;case 9:case 10:case 19:case 27:break;case 11:return this.begin("acc_title"),39;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),41;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:case 39:case 42:case 45:case 48:case 51:case 54:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:return 16;case 20:case 21:return 23;case 22:return this.begin("struct"),46;case 23:return"EDGE_STATE";case 24:return"EOF_IN_STRUCT";case 25:return"OPEN_IN_STRUCT";case 26:return this.popState(),48;case 28:return"MEMBER";case 29:return 44;case 30:return 74;case 31:return 67;case 32:return 68;case 33:return 70;case 34:return 55;case 35:return 57;case 36:return 49;case 37:return 50;case 38:this.begin("generic");break;case 40:return"GENERICTYPE";case 41:this.begin("string");break;case 43:return"STR";case 44:this.begin("bqstring");break;case 46:return"BQUOTE_STR";case 47:this.begin("href");break;case 49:return 73;case 50:this.begin("callback_name");break;case 52:this.popState(),this.begin("callback_args");break;case 53:return 71;case 55:return 72;case 56:case 57:case 58:case 59:return 69;case 60:case 61:return 61;case 62:case 63:return 63;case 64:return 62;case 65:return 60;case 66:return 64;case 67:return 65;case 68:return 66;case 69:return 32;case 70:return 45;case 71:return 86;case 72:return"DOT";case 73:return"PLUS";case 74:return 83;case 75:case 76:return"EQUALS";case 77:return 90;case 78:return"PUNCTUATION";case 79:return 89;case 80:return 88;case 81:return 85;case 82:return 25}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:[{])/,/^(?:\[\*\])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:class\b)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[16,17],inclusive:!1},acc_descr:{rules:[14],inclusive:!1},acc_title:{rules:[12],inclusive:!1},arg_directive:{rules:[7,8],inclusive:!1},type_directive:{rules:[6,7],inclusive:!1},open_directive:{rules:[5],inclusive:!1},callback_args:{rules:[54,55],inclusive:!1},callback_name:{rules:[51,52,53],inclusive:!1},href:{rules:[48,49],inclusive:!1},struct:{rules:[23,24,25,26,27,28],inclusive:!1},generic:{rules:[39,40],inclusive:!1},bqstring:{rules:[45,46],inclusive:!1},string:{rules:[42,43],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,23,29,30,31,32,33,34,35,36,37,38,41,44,47,50,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82],inclusive:!0}}},t);function q(){this.yy={}}return W.lexer=H,q.prototype=W,W.Parser=q,new q}();Ra.parser=Ra;const $a=Ra,Za=(t,e)=>{var n;return"dagre-wrapper"!==(null==(n=null==e?void 0:e.class)?void 0:n.defaultRenderer)&&null!==t.match(/^\s*classDiagram/)},ja=(t,e)=>{var n;return null!==t.match(/^\s*classDiagram/)&&"dagre-wrapper"===(null==(n=null==e?void 0:e.class)?void 0:n.defaultRenderer)||null!==t.match(/^\s*classDiagram-v2/)},Pa="classid-";let za=[],Ya={},Ua=[],Wa=0,Ha=[];const qa=t=>zt.sanitizeText(t,dr()),Va=function(t){let e="",n=t;if(t.indexOf("~")>0){let r=t.split("~");n=r[0],e=zt.sanitizeText(r[1],dr())}return{className:n,type:e}},Ga=function(t){let e=Va(t);void 0===Ya[e.className]&&(Ya[e.className]={id:e.className,type:e.type,cssClasses:[],methods:[],members:[],annotations:[],domId:Pa+e.className+"-"+Wa},Wa++)},Xa=function(t){const e=Object.keys(Ya);for(const n of e)if(Ya[n].id===t)return Ya[n].domId},Ka=function(t,e){const n=Va(t).className,r=Ya[n];if("string"==typeof e){const t=e.trim();t.startsWith("<<")&&t.endsWith(">>")?r.annotations.push(qa(t.substring(2,t.length-2))):t.indexOf(")")>0?r.methods.push(qa(t)):t&&r.members.push(qa(t))}},Qa=function(t,e){t.split(",").forEach((function(t){let n=t;t[0].match(/\d/)&&(n=Pa+n),void 0!==Ya[n]&&Ya[n].cssClasses.push(e)}))},Ja=function(t,e,n){const r=dr();let i=t,a=Xa(i);if("loose"===r.securityLevel&&void 0!==e&&void 0!==Ya[i]){let t=[];if("string"==typeof n){t=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let e=0;e<t.length;e++){let n=t[e].trim();'"'===n.charAt(0)&&'"'===n.charAt(n.length-1)&&(n=n.substr(1,n.length-2)),t[e]=n}}0===t.length&&t.push(a),Ha.push((function(){const n=document.querySelector(`[id="${a}"]`);null!==n&&n.addEventListener("click",(function(){nr.runFunc(e,...t)}),!1)}))}},ts=function(t){let e=(0,o.Ys)(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=(0,o.Ys)("body").append("div").attr("class","mermaidTooltip").style("opacity",0));(0,o.Ys)(t).select("svg").selectAll("g.node").on("mouseover",(function(){const t=(0,o.Ys)(this);if(null===t.attr("title"))return;const n=this.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.text(t.attr("title")).style("left",window.scrollX+n.left+(n.right-n.left)/2+"px").style("top",window.scrollY+n.top-14+document.body.scrollTop+"px"),e.html(e.html().replace(/<br\/>/g,"<br/>")),t.classed("hover",!0)})).on("mouseout",(function(){e.transition().duration(500).style("opacity",0);(0,o.Ys)(this).classed("hover",!1)}))};Ha.push(ts);let es="TB";const ns={parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},setAccTitle:jr,getAccTitle:Pr,getAccDescription:Yr,setAccDescription:zr,getConfig:()=>dr().class,addClass:Ga,bindFunctions:function(t){Ha.forEach((function(e){e(t)}))},clear:function(){za=[],Ya={},Ua=[],Ha=[],Ha.push(ts),Zr()},getClass:function(t){return Ya[t]},getClasses:function(){return Ya},getNotes:function(){return Ua},addAnnotation:function(t,e){const n=Va(t).className;Ya[n].annotations.push(e)},addNote:function(t,e){const n={id:`note${Ua.length}`,class:e,text:t};Ua.push(n)},getRelations:function(){return za},addRelation:function(t){It.debug("Adding relation: "+JSON.stringify(t)),Ga(t.id1),Ga(t.id2),t.id1=Va(t.id1).className,t.id2=Va(t.id2).className,t.relationTitle1=zt.sanitizeText(t.relationTitle1.trim(),dr()),t.relationTitle2=zt.sanitizeText(t.relationTitle2.trim(),dr()),za.push(t)},getDirection:()=>es,setDirection:t=>{es=t},addMember:Ka,addMembers:function(t,e){Array.isArray(e)&&(e.reverse(),e.forEach((e=>Ka(t,e))))},cleanupLabel:function(t){return":"===t.substring(0,1)?zt.sanitizeText(t.substr(1).trim(),dr()):qa(t.trim())},lineType:{LINE:0,DOTTED_LINE:1},relationType:{AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4},setClickEvent:function(t,e,n){t.split(",").forEach((function(t){Ja(t,e,n),Ya[t].haveCallback=!0})),Qa(t,"clickable")},setCssClass:Qa,setLink:function(t,e,n){const r=dr();t.split(",").forEach((function(t){let i=t;t[0].match(/\d/)&&(i=Pa+i),void 0!==Ya[i]&&(Ya[i].link=nr.formatUrl(e,r),"sandbox"===r.securityLevel?Ya[i].linkTarget="_top":Ya[i].linkTarget="string"==typeof n?qa(n):"_blank")})),Qa(t,"clickable")},getTooltip:function(t){return Ya[t].tooltip},setTooltip:function(t,e){const n=dr();t.split(",").forEach((function(t){void 0!==e&&(Ya[t].tooltip=zt.sanitizeText(e,n))}))},lookUpDomId:Xa,setDiagramTitle:Ur,getDiagramTitle:Wr};let rs=0;const is=function(t){let e=t.match(/^([#+~-])?(\w+)(~\w+~|\[])?\s+(\w+) *([$*])?$/),n=t.match(/^([#+|~-])?(\w+) *\( *(.*)\) *([$*])? *(\w*[[\]|~]*\s*\w*~?)$/);return e&&!n?as(e):n?ss(n):os(t)},as=function(t){let e="",n="";try{let r=t[1]?t[1].trim():"",i=t[2]?t[2].trim():"",a=t[3]?Pt(t[3].trim()):"",s=t[4]?t[4].trim():"",o=t[5]?t[5].trim():"";n=r+i+a+" "+s,e=cs(o)}catch(r){n=t}return{displayText:n,cssStyle:e}},ss=function(t){let e="",n="";try{let r=t[1]?t[1].trim():"",i=t[2]?t[2].trim():"",a=t[3]?Pt(t[3].trim()):"",s=t[4]?t[4].trim():"";n=r+i+"("+a+")"+(t[5]?" : "+Pt(t[5]).trim():""),e=cs(s)}catch(r){n=t}return{displayText:n,cssStyle:e}},os=function(t){let e="",n="",r="",i=t.indexOf("("),a=t.indexOf(")");if(i>1&&a>i&&a<=t.length){let s="",o="",l=t.substring(0,1);l.match(/\w/)?o=t.substring(0,i).trim():(l.match(/[#+~-]/)&&(s=l),o=t.substring(1,i).trim());const c=t.substring(i+1,a);t.substring(a+1,1),n=cs(t.substring(a+1,a+2)),e=s+o+"("+Pt(c.trim())+")",a<t.length&&(r=t.substring(a+2).trim(),""!==r&&(r=" : "+Pt(r),e+=r))}else e=Pt(t);return{displayText:e,cssStyle:n}},ls=function(t,e,n,r){let i=is(e);const a=t.append("tspan").attr("x",r.padding).text(i.displayText);""!==i.cssStyle&&a.attr("style",i.cssStyle),n||a.attr("dy",r.textHeight)},cs=function(t){switch(t){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}},us=function(t,e,n,r){It.debug("Rendering class ",e,n);const i=e.id,a={id:i,label:e.id,width:0,height:0},s=t.append("g").attr("id",r.db.lookUpDomId(i)).attr("class","classGroup");let o;o=e.link?s.append("svg:a").attr("xlink:href",e.link).attr("target",e.linkTarget).append("text").attr("y",n.textHeight+n.padding).attr("x",0):s.append("text").attr("y",n.textHeight+n.padding).attr("x",0);let l=!0;e.annotations.forEach((function(t){const e=o.append("tspan").text("\xab"+t+"\xbb");l||e.attr("dy",n.textHeight),l=!1}));let c=e.id;void 0!==e.type&&""!==e.type&&(c+="<"+e.type+">");const u=o.append("tspan").text(c).attr("class","title");l||u.attr("dy",n.textHeight);const h=o.node().getBBox().height,d=s.append("line").attr("x1",0).attr("y1",n.padding+h+n.dividerMargin/2).attr("y2",n.padding+h+n.dividerMargin/2),p=s.append("text").attr("x",n.padding).attr("y",h+n.dividerMargin+n.textHeight).attr("fill","white").attr("class","classText");l=!0,e.members.forEach((function(t){ls(p,t,l,n),l=!1}));const f=p.node().getBBox(),m=s.append("line").attr("x1",0).attr("y1",n.padding+h+n.dividerMargin+f.height).attr("y2",n.padding+h+n.dividerMargin+f.height),g=s.append("text").attr("x",n.padding).attr("y",h+2*n.dividerMargin+f.height+n.textHeight).attr("fill","white").attr("class","classText");l=!0,e.methods.forEach((function(t){ls(g,t,l,n),l=!1}));const y=s.node().getBBox();var b=" ";e.cssClasses.length>0&&(b+=e.cssClasses.join(" "));const x=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",y.width+2*n.padding).attr("height",y.height+n.padding+.5*n.dividerMargin).attr("class",b).node().getBBox().width;return o.node().childNodes.forEach((function(t){t.setAttribute("x",(x-t.getBBox().width)/2)})),e.tooltip&&o.insert("title").text(e.tooltip),d.attr("x2",x),m.attr("x2",x),a.width=x,a.height=y.height+n.padding+.5*n.dividerMargin,a},hs=function(t,e,n,r,i){const a=function(t){switch(t){case i.db.relationType.AGGREGATION:return"aggregation";case i.db.relationType.EXTENSION:return"extension";case i.db.relationType.COMPOSITION:return"composition";case i.db.relationType.DEPENDENCY:return"dependency";case i.db.relationType.LOLLIPOP:return"lollipop"}};e.points=e.points.filter((t=>!Number.isNaN(t.y)));const s=e.points,l=(0,o.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(o.$0Z),c=t.append("path").attr("d",l(s)).attr("id","edge"+rs).attr("class","relation");let u,h,d="";r.arrowMarkerAbsolute&&(d=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,d=d.replace(/\(/g,"\\("),d=d.replace(/\)/g,"\\)")),1==n.relation.lineType&&c.attr("class","relation dashed-line"),10==n.relation.lineType&&c.attr("class","relation dotted-line"),"none"!==n.relation.type1&&c.attr("marker-start","url("+d+"#"+a(n.relation.type1)+"Start)"),"none"!==n.relation.type2&&c.attr("marker-end","url("+d+"#"+a(n.relation.type2)+"End)");const p=e.points.length;let f,m,g,y,b=nr.calcLabelPosition(e.points);if(u=b.x,h=b.y,p%2!=0&&p>1){let t=nr.calcCardinalityPosition("none"!==n.relation.type1,e.points,e.points[0]),r=nr.calcCardinalityPosition("none"!==n.relation.type2,e.points,e.points[p-1]);It.debug("cardinality_1_point "+JSON.stringify(t)),It.debug("cardinality_2_point "+JSON.stringify(r)),f=t.x,m=t.y,g=r.x,y=r.y}if(void 0!==n.title){const e=t.append("g").attr("class","classLabel"),i=e.append("text").attr("class","label").attr("x",u).attr("y",h).attr("fill","red").attr("text-anchor","middle").text(n.title);window.label=i;const a=i.node().getBBox();e.insert("rect",":first-child").attr("class","box").attr("x",a.x-r.padding/2).attr("y",a.y-r.padding/2).attr("width",a.width+r.padding).attr("height",a.height+r.padding)}if(It.info("Rendering relation "+JSON.stringify(n)),void 0!==n.relationTitle1&&"none"!==n.relationTitle1){t.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",f).attr("y",m).attr("fill","black").attr("font-size","6").text(n.relationTitle1)}if(void 0!==n.relationTitle2&&"none"!==n.relationTitle2){t.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",g).attr("y",y).attr("fill","black").attr("font-size","6").text(n.relationTitle2)}rs++},ds=function(t,e,n,r){It.debug("Rendering note ",e,n);const i=e.id,a={id:i,text:e.text,width:0,height:0},s=t.append("g").attr("id",i).attr("class","classGroup");let o=s.append("text").attr("y",n.textHeight+n.padding).attr("x",0);const l=JSON.parse(`"${e.text}"`).split("\n");l.forEach((function(t){It.debug(`Adding line: ${t}`),o.append("tspan").text(t).attr("class","title").attr("dy",n.textHeight)}));const c=s.node().getBBox(),u=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",c.width+2*n.padding).attr("height",c.height+l.length*n.textHeight+n.padding+.5*n.dividerMargin).node().getBBox().width;return o.node().childNodes.forEach((function(t){t.setAttribute("x",(u-t.getBBox().width)/2)})),a.width=u,a.height=c.height+l.length*n.textHeight+n.padding+.5*n.dividerMargin,a};let ps={};const fs=function(t){const e=Object.entries(ps).find((e=>e[1].label===t));if(e)return e[0]},ms={draw:function(t,e,n,r){const i=dr().class;ps={},It.info("Rendering diagram "+t);const a=dr().securityLevel;let s;"sandbox"===a&&(s=(0,o.Ys)("#i"+e));const l="sandbox"===a?(0,o.Ys)(s.nodes()[0].contentDocument.body):(0,o.Ys)("body"),c=l.select(`[id='${e}']`);var u;(u=c).append("defs").append("marker").attr("id","extensionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),u.append("defs").append("marker").attr("id","extensionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),u.append("defs").append("marker").attr("id","compositionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),u.append("defs").append("marker").attr("id","compositionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),u.append("defs").append("marker").attr("id","aggregationStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),u.append("defs").append("marker").attr("id","aggregationEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),u.append("defs").append("marker").attr("id","dependencyStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),u.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z");const h=new ut.k({multigraph:!0});h.setGraph({isMultiGraph:!0}),h.setDefaultEdgeLabel((function(){return{}}));const d=r.db.getClasses(),p=Object.keys(d);for(const o of p){const t=d[o],e=us(c,t,i,r);ps[e.id]=e,h.setNode(e.id,e),It.info("Org height: "+e.height)}r.db.getRelations().forEach((function(t){It.info("tjoho"+fs(t.id1)+fs(t.id2)+JSON.stringify(t)),h.setEdge(fs(t.id1),fs(t.id2),{relation:t},t.title||"DEFAULT")}));r.db.getNotes().forEach((function(t){It.debug(`Adding note: ${JSON.stringify(t)}`);const e=ds(c,t,i,r);ps[e.id]=e,h.setNode(e.id,e),t.class&&t.class in d&&h.setEdge(t.id,fs(t.class),{relation:{id1:t.id,id2:t.class,relation:{type1:"none",type2:"none",lineType:10}}},"DEFAULT")})),(0,ct.bK)(h),h.nodes().forEach((function(t){void 0!==t&&void 0!==h.node(t)&&(It.debug("Node "+t+": "+JSON.stringify(h.node(t))),l.select("#"+(r.db.lookUpDomId(t)||t)).attr("transform","translate("+(h.node(t).x-h.node(t).width/2)+","+(h.node(t).y-h.node(t).height/2)+" )"))})),h.edges().forEach((function(t){void 0!==t&&void 0!==h.edge(t)&&(It.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(h.edge(t))),hs(c,h.edge(t),h.edge(t).relation,i,r))}));const f=c.node().getBBox(),m=f.width+40,g=f.height+40;xr(c,g,m,i.useMaxWidth);const y=`${f.x-20} ${f.y-20} ${m} ${g}`;It.debug(`viewBox ${y}`),c.attr("viewBox",y)}},gs={extension:(t,e,n)=>{It.trace("Making markers for ",n),t.append("defs").append("marker").attr("id",e+"-extensionStart").attr("class","marker extension "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},composition:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-compositionStart").attr("class","marker composition "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},aggregation:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},dependency:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},lollipop:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","white").attr("cx",6).attr("cy",7).attr("r",6)},point:(t,e)=>{t.append("marker").attr("id",e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 12 20").attr("refX",10).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},circle:(t,e)=>{t.append("marker").attr("id",e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},cross:(t,e)=>{t.append("marker").attr("id",e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},barb:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")}},ys=(t,e,n,r)=>{e.forEach((e=>{gs[e](t,n,r)}))};const bs=(t,e,n,r)=>{let i=t||"";if("object"==typeof i&&(i=i[0]),jt(dr().flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"<br />"),It.info("vertexText"+i);let t=function(t){const e=(0,o.Ys)(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),n=e.append("xhtml:div"),r=t.label,i=t.isNode?"nodeLabel":"edgeLabel";var a,s;return n.html('<span class="'+i+'" '+(t.labelStyle?'style="'+t.labelStyle+'"':"")+">"+r+"</span>"),a=n,(s=t.labelStyle)&&a.attr("style",s),n.style("display","inline-block"),n.style("white-space","nowrap"),n.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}({isNode:r,label:lp(i).replace(/fa[blrs]?:fa-[\w-]+/g,(t=>`<i class='${t.replace(":"," ")}'></i>`)),labelStyle:e.replace("fill:","color:")});return t}{const t=document.createElementNS("http://www.w3.org/2000/svg","text");t.setAttribute("style",e.replace("color:","fill:"));let r=[];r="string"==typeof i?i.split(/\\n|\n|<br\s*\/?>/gi):Array.isArray(i)?i:[];for(const e of r){const r=document.createElementNS("http://www.w3.org/2000/svg","tspan");r.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),r.setAttribute("dy","1em"),r.setAttribute("x","0"),n?r.setAttribute("class","title-row"):r.setAttribute("class","row"),r.textContent=e.trim(),t.appendChild(r)}return t}},xs=(t,e,n,r)=>{let i;i=n||"node default";const a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),s=a.insert("g").attr("class","label").attr("style",e.labelStyle);let l;l=void 0===e.labelText?"":"string"==typeof e.labelText?e.labelText:e.labelText[0];const c=s.node().appendChild(bs(Bt(lp(l),dr()),e.labelStyle,!1,r));let u=c.getBBox();if(jt(dr().flowchart.htmlLabels)){const t=c.children[0],e=(0,o.Ys)(c);u=t.getBoundingClientRect(),e.attr("width",u.width),e.attr("height",u.height)}const h=e.padding/2;return s.attr("transform","translate("+-u.width/2+", "+-u.height/2+")"),{shapeSvg:a,bbox:u,halfPadding:h,label:s}},vs=(t,e)=>{const n=e.node().getBBox();t.width=n.width,t.height=n.height};function _s(t,e,n,r){return t.insert("polygon",":first-child").attr("points",r.map((function(t){return t.x+","+t.y})).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+n/2+")")}let ks={},Ts={},ws={};const Ss=(t,e)=>(It.trace("In isDecendant",e," ",t," = ",Ts[e].includes(t)),!!Ts[e].includes(t)),Es=(t,e,n,r)=>{It.warn("Copying children of ",t,"root",r,"data",e.node(t),r);const i=e.children(t)||[];t!==r&&i.push(t),It.warn("Copying (nodes) clusterId",t,"nodes",i),i.forEach((i=>{if(e.children(i).length>0)Es(i,e,n,r);else{const a=e.node(i);It.info("cp ",i," to ",r," with parent ",t),n.setNode(i,a),r!==e.parent(i)&&(It.warn("Setting parent",i,e.parent(i)),n.setParent(i,e.parent(i))),t!==r&&i!==t?(It.debug("Setting parent",i,t),n.setParent(i,t)):(It.info("In copy ",t,"root",r,"data",e.node(t),r),It.debug("Not Setting parent for node=",i,"cluster!==rootId",t!==r,"node!==clusterId",i!==t));const s=e.edges(i);It.debug("Copying Edges",s),s.forEach((i=>{It.info("Edge",i);const a=e.edge(i.v,i.w,i.name);It.info("Edge data",a,r);try{((t,e)=>(It.info("Decendants of ",e," is ",Ts[e]),It.info("Edge is ",t),t.v!==e&&t.w!==e&&(Ts[e]?Ts[e].includes(t.v)||Ss(t.v,e)||Ss(t.w,e)||Ts[e].includes(t.w):(It.debug("Tilt, ",e,",not in decendants"),!1))))(i,r)?(It.info("Copying as ",i.v,i.w,a,i.name),n.setEdge(i.v,i.w,a,i.name),It.info("newGraph edges ",n.edges(),n.edge(n.edges()[0]))):It.info("Skipping copy of edge ",i.v,"--\x3e",i.w," rootId: ",r," clusterId:",t)}catch(s){It.error(s)}}))}It.debug("Removing node",i),e.removeNode(i)}))},Cs=(t,e)=>{const n=e.children(t);let r=[...n];for(const i of n)ws[i]=t,r=[...r,...Cs(i,e)];return r},Ds=(t,e)=>{It.trace("Searching",t);const n=e.children(t);if(It.trace("Searching children of id ",t,n),n.length<1)return It.trace("This is a valid node",t),t;for(const r of n){const n=Ds(r,e);if(n)return It.trace("Found replacement for",t," => ",n),n}},As=t=>ks[t]&&ks[t].externalConnections&&ks[t]?ks[t].id:t,Os=(t,e)=>{if(It.warn("extractor - ",e,ht.c(t),t.children("D")),e>10)return void It.error("Bailing out");let n=t.nodes(),r=!1;for(const i of n){const e=t.children(i);r=r||e.length>0}if(r){It.debug("Nodes = ",n,e);for(const r of n)if(It.debug("Extracting node",r,ks,ks[r]&&!ks[r].externalConnections,!t.parent(r),t.node(r),t.children("D")," Depth ",e),ks[r])if(!ks[r].externalConnections&&t.children(r)&&t.children(r).length>0){It.warn("Cluster without external connections, without a parent and with children",r,e);let n="TB"===t.graph().rankdir?"LR":"TB";ks[r]&&ks[r].clusterData&&ks[r].clusterData.dir&&(n=ks[r].clusterData.dir,It.warn("Fixing dir",ks[r].clusterData.dir,n));const i=new ut.k({multigraph:!0,compound:!0}).setGraph({rankdir:n,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));It.warn("Old graph before copy",ht.c(t)),Es(r,t,i,r),t.setNode(r,{clusterNode:!0,id:r,clusterData:ks[r].clusterData,labelText:ks[r].labelText,graph:i}),It.warn("New graph after copy node: (",r,")",ht.c(i)),It.debug("Old graph after copy",ht.c(t))}else It.warn("Cluster ** ",r," **not meeting the criteria !externalConnections:",!ks[r].externalConnections," no parent: ",!t.parent(r)," children ",t.children(r)&&t.children(r).length>0,t.children("D"),e),It.debug(ks);else It.debug("Not a cluster",r,e);n=t.nodes(),It.warn("New list of nodes",n);for(const r of n){const n=t.node(r);It.warn(" Now next level",r,n),n.clusterNode&&Os(n.graph,e+1)}}else It.debug("Done, no node has children",t.nodes())},Is=(t,e)=>{if(0===e.length)return[];let n=Object.assign(e);return e.forEach((e=>{const r=t.children(e),i=Is(t,r);n=[...n,...i]})),n};function Ls(t,e,n,r){var i=t.x,a=t.y,s=i-r.x,o=a-r.y,l=Math.sqrt(e*e*o*o+n*n*s*s),c=Math.abs(e*n*s/l);r.x<i&&(c=-c);var u=Math.abs(e*n*o/l);return r.y<a&&(u=-u),{x:i+c,y:a+u}}function Ns(t,e,n,r){var i,a,s,o,l,c,u,h,d,p,f,m,g;if(i=e.y-t.y,s=t.x-e.x,l=e.x*t.y-t.x*e.y,d=i*n.x+s*n.y+l,p=i*r.x+s*r.y+l,!(0!==d&&0!==p&&Ms(d,p)||(a=r.y-n.y,o=n.x-r.x,c=r.x*n.y-n.x*r.y,u=a*t.x+o*t.y+c,h=a*e.x+o*e.y+c,0!==u&&0!==h&&Ms(u,h)||0==(f=i*o-a*s))))return m=Math.abs(f/2),{x:(g=s*c-o*l)<0?(g-m)/f:(g+m)/f,y:(g=a*l-i*c)<0?(g-m)/f:(g+m)/f}}function Ms(t,e){return t*e>0}const Fs=(t,e)=>{var n,r,i=t.x,a=t.y,s=e.x-i,o=e.y-a,l=t.width/2,c=t.height/2;return Math.abs(o)*l>Math.abs(s)*c?(o<0&&(c=-c),n=0===o?0:c*s/o,r=c):(s<0&&(l=-l),n=l,r=0===s?0:l*o/s),{x:i+n,y:a+r}},Bs={node:function(t,e){return t.intersect(e)},circle:function(t,e,n){return Ls(t,e,e,n)},ellipse:Ls,polygon:function(t,e,n){var r=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach((function(t){s=Math.min(s,t.x),o=Math.min(o,t.y)})):(s=Math.min(s,e.x),o=Math.min(o,e.y));for(var l=r-t.width/2-s,c=i-t.height/2-o,u=0;u<e.length;u++){var h=e[u],d=e[u<e.length-1?u+1:0],p=Ns(t,n,{x:l+h.x,y:c+h.y},{x:l+d.x,y:c+d.y});p&&a.push(p)}return a.length?(a.length>1&&a.sort((function(t,e){var r=t.x-n.x,i=t.y-n.y,a=Math.sqrt(r*r+i*i),s=e.x-n.x,o=e.y-n.y,l=Math.sqrt(s*s+o*o);return a<l?-1:a===l?0:1})),a[0]):t},rect:Fs},Rs=(t,e)=>{const{shapeSvg:n,bbox:r,halfPadding:i}=xs(t,e,"node "+e.classes,!0);It.info("Classes = ",e.classes);const a=n.insert("rect",":first-child");return a.attr("rx",e.rx).attr("ry",e.ry).attr("x",-r.width/2-i).attr("y",-r.height/2-i).attr("width",r.width+e.padding).attr("height",r.height+e.padding),vs(e,a),e.intersect=function(t){return Bs.rect(e,t)},n},$s=(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding+(r.height+e.padding),a=[{x:i/2,y:0},{x:i,y:-i/2},{x:i/2,y:-i},{x:0,y:-i/2}];It.info("Question main (Circle)");const s=_s(n,i,i,a);return s.attr("style",e.style),vs(e,s),e.intersect=function(t){return It.warn("Intersect called"),Bs.polygon(e,a,t)},n};function Zs(t,e,n,r){const i=[],a=t=>{i.push(t,0)},s=t=>{i.push(0,t)};e.includes("t")?(It.debug("add top border"),a(n)):s(n),e.includes("r")?(It.debug("add right border"),a(r)):s(r),e.includes("b")?(It.debug("add bottom border"),a(n)):s(n),e.includes("l")?(It.debug("add left border"),a(r)):s(r),t.attr("stroke-dasharray",i.join(" "))}const js=(t,e,n)=>{const r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id);let i=70,a=10;"LR"===n&&(i=10,a=70);const s=r.append("rect").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return vs(e,s),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(t){return Bs.rect(e,t)},r},Ps={rhombus:$s,question:$s,rect:(t,e)=>{const{shapeSvg:n,bbox:r,halfPadding:i}=xs(t,e,"node "+e.classes,!0);It.trace("Classes = ",e.classes);const a=n.insert("rect",":first-child"),s=r.width+e.padding,o=r.height+e.padding;if(a.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",-r.width/2-i).attr("y",-r.height/2-i).attr("width",s).attr("height",o),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(Zs(a,e.props.borders,s,o),t.delete("borders")),t.forEach((t=>{It.warn(`Unknown node property ${t}`)}))}return vs(e,a),e.intersect=function(t){return Bs.rect(e,t)},n},labelRect:(t,e)=>{const{shapeSvg:n}=xs(t,e,"label",!0);It.trace("Classes = ",e.classes);const r=n.insert("rect",":first-child");if(r.attr("width",0).attr("height",0),n.attr("class","label edgeLabel"),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(Zs(r,e.props.borders,0,0),t.delete("borders")),t.forEach((t=>{It.warn(`Unknown node property ${t}`)}))}return vs(e,r),e.intersect=function(t){return Bs.rect(e,t)},n},rectWithTitle:(t,e)=>{let n;n=e.classes?"node "+e.classes:"node default";const r=t.insert("g").attr("class",n).attr("id",e.domId||e.id),i=r.insert("rect",":first-child"),a=r.insert("line"),s=r.insert("g").attr("class","label"),l=e.labelText.flat?e.labelText.flat():e.labelText;let c="";c="object"==typeof l?l[0]:l,It.info("Label text abc79",c,l,"object"==typeof l);const u=s.node().appendChild(bs(c,e.labelStyle,!0,!0));let h={width:0,height:0};if(jt(dr().flowchart.htmlLabels)){const t=u.children[0],e=(0,o.Ys)(u);h=t.getBoundingClientRect(),e.attr("width",h.width),e.attr("height",h.height)}It.info("Text 2",l);const d=l.slice(1,l.length);let p=u.getBBox();const f=s.node().appendChild(bs(d.join?d.join("<br/>"):d,e.labelStyle,!0,!0));if(jt(dr().flowchart.htmlLabels)){const t=f.children[0],e=(0,o.Ys)(f);h=t.getBoundingClientRect(),e.attr("width",h.width),e.attr("height",h.height)}const m=e.padding/2;return(0,o.Ys)(f).attr("transform","translate( "+(h.width>p.width?0:(p.width-h.width)/2)+", "+(p.height+m+5)+")"),(0,o.Ys)(u).attr("transform","translate( "+(h.width<p.width?0:-(p.width-h.width)/2)+", 0)"),h=s.node().getBBox(),s.attr("transform","translate("+-h.width/2+", "+(-h.height/2-m+3)+")"),i.attr("class","outer title-state").attr("x",-h.width/2-m).attr("y",-h.height/2-m).attr("width",h.width+e.padding).attr("height",h.height+e.padding),a.attr("class","divider").attr("x1",-h.width/2-m).attr("x2",h.width/2+m).attr("y1",-h.height/2-m+p.height+m).attr("y2",-h.height/2-m+p.height+m),vs(e,i),e.intersect=function(t){return Bs.rect(e,t)},r},choice:(t,e)=>{const n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),r=[{x:0,y:14},{x:14,y:0},{x:0,y:-14},{x:-14,y:0}];return n.insert("polygon",":first-child").attr("points",r.map((function(t){return t.x+","+t.y})).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(t){return Bs.circle(e,14,t)},n},circle:(t,e)=>{const{shapeSvg:n,bbox:r,halfPadding:i}=xs(t,e,void 0,!0),a=n.insert("circle",":first-child");return a.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",r.width/2+i).attr("width",r.width+e.padding).attr("height",r.height+e.padding),It.info("Circle main"),vs(e,a),e.intersect=function(t){return It.info("Circle intersect",e,r.width/2+i,t),Bs.circle(e,r.width/2+i,t)},n},doublecircle:(t,e)=>{const{shapeSvg:n,bbox:r,halfPadding:i}=xs(t,e,void 0,!0),a=n.insert("g",":first-child"),s=a.insert("circle"),o=a.insert("circle");return s.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",r.width/2+i+5).attr("width",r.width+e.padding+10).attr("height",r.height+e.padding+10),o.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",r.width/2+i).attr("width",r.width+e.padding).attr("height",r.height+e.padding),It.info("DoubleCircle main"),vs(e,s),e.intersect=function(t){return It.info("DoubleCircle intersect",e,r.width/2+i+5,t),Bs.circle(e,r.width/2+i+5,t)},n},stadium:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.height+e.padding,a=r.width+i/4+e.padding,s=n.insert("rect",":first-child").attr("style",e.style).attr("rx",i/2).attr("ry",i/2).attr("x",-a/2).attr("y",-i/2).attr("width",a).attr("height",i);return vs(e,s),e.intersect=function(t){return Bs.rect(e,t)},n},hexagon:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.height+e.padding,a=i/4,s=r.width+2*a+e.padding,o=[{x:a,y:0},{x:s-a,y:0},{x:s,y:-i/2},{x:s-a,y:-i},{x:a,y:-i},{x:0,y:-i/2}],l=_s(n,s,i,o);return l.attr("style",e.style),vs(e,l),e.intersect=function(t){return Bs.polygon(e,o,t)},n},rect_left_inv_arrow:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding,a=r.height+e.padding,s=[{x:-a/2,y:0},{x:i,y:0},{x:i,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}];return _s(n,i,a,s).attr("style",e.style),e.width=i+a,e.height=a,e.intersect=function(t){return Bs.polygon(e,s,t)},n},lean_right:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding,a=r.height+e.padding,s=[{x:-2*a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:a/6,y:-a}],o=_s(n,i,a,s);return o.attr("style",e.style),vs(e,o),e.intersect=function(t){return Bs.polygon(e,s,t)},n},lean_left:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding,a=r.height+e.padding,s=[{x:2*a/6,y:0},{x:i+a/6,y:0},{x:i-2*a/6,y:-a},{x:-a/6,y:-a}],o=_s(n,i,a,s);return o.attr("style",e.style),vs(e,o),e.intersect=function(t){return Bs.polygon(e,s,t)},n},trapezoid:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding,a=r.height+e.padding,s=[{x:-2*a/6,y:0},{x:i+2*a/6,y:0},{x:i-a/6,y:-a},{x:a/6,y:-a}],o=_s(n,i,a,s);return o.attr("style",e.style),vs(e,o),e.intersect=function(t){return Bs.polygon(e,s,t)},n},inv_trapezoid:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding,a=r.height+e.padding,s=[{x:a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:-2*a/6,y:-a}],o=_s(n,i,a,s);return o.attr("style",e.style),vs(e,o),e.intersect=function(t){return Bs.polygon(e,s,t)},n},rect_right_inv_arrow:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding,a=r.height+e.padding,s=[{x:0,y:0},{x:i+a/2,y:0},{x:i,y:-a/2},{x:i+a/2,y:-a},{x:0,y:-a}],o=_s(n,i,a,s);return o.attr("style",e.style),vs(e,o),e.intersect=function(t){return Bs.polygon(e,s,t)},n},cylinder:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding,a=i/2,s=a/(2.5+i/50),o=r.height+s+e.padding,l="M 0,"+s+" a "+a+","+s+" 0,0,0 "+i+" 0 a "+a+","+s+" 0,0,0 "+-i+" 0 l 0,"+o+" a "+a+","+s+" 0,0,0 "+i+" 0 l 0,"+-o,c=n.attr("label-offset-y",s).insert("path",":first-child").attr("style",e.style).attr("d",l).attr("transform","translate("+-i/2+","+-(o/2+s)+")");return vs(e,c),e.intersect=function(t){const n=Bs.rect(e,t),r=n.x-e.x;if(0!=a&&(Math.abs(r)<e.width/2||Math.abs(r)==e.width/2&&Math.abs(n.y-e.y)>e.height/2-s)){let i=s*s*(1-r*r/(a*a));0!=i&&(i=Math.sqrt(i)),i=s-i,t.y-e.y>0&&(i=-i),n.y+=i}return n},n},start:(t,e)=>{const n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),r=n.insert("circle",":first-child");return r.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),vs(e,r),e.intersect=function(t){return Bs.circle(e,7,t)},n},end:(t,e)=>{const n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),r=n.insert("circle",":first-child"),i=n.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),r.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),vs(e,i),e.intersect=function(t){return Bs.circle(e,7,t)},n},note:Rs,subroutine:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding,a=r.height+e.padding,s=[{x:0,y:0},{x:i,y:0},{x:i,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:i+8,y:0},{x:i+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],o=_s(n,i,a,s);return o.attr("style",e.style),vs(e,o),e.intersect=function(t){return Bs.polygon(e,s,t)},n},fork:js,join:js,class_box:(t,e)=>{const n=e.padding/2;let r;r=e.classes?"node "+e.classes:"node default";const i=t.insert("g").attr("class",r).attr("id",e.domId||e.id),a=i.insert("rect",":first-child"),s=i.insert("line"),l=i.insert("line");let c=0,u=4;const h=i.insert("g").attr("class","label");let d=0;const p=e.classData.annotations&&e.classData.annotations[0],f=e.classData.annotations[0]?"\xab"+e.classData.annotations[0]+"\xbb":"",m=h.node().appendChild(bs(f,e.labelStyle,!0,!0));let g=m.getBBox();if(jt(dr().flowchart.htmlLabels)){const t=m.children[0],e=(0,o.Ys)(m);g=t.getBoundingClientRect(),e.attr("width",g.width),e.attr("height",g.height)}e.classData.annotations[0]&&(u+=g.height+4,c+=g.width);let y=e.classData.id;void 0!==e.classData.type&&""!==e.classData.type&&(dr().flowchart.htmlLabels?y+="<"+e.classData.type+">":y+="<"+e.classData.type+">");const b=h.node().appendChild(bs(y,e.labelStyle,!0,!0));(0,o.Ys)(b).attr("class","classTitle");let x=b.getBBox();if(jt(dr().flowchart.htmlLabels)){const t=b.children[0],e=(0,o.Ys)(b);x=t.getBoundingClientRect(),e.attr("width",x.width),e.attr("height",x.height)}u+=x.height+4,x.width>c&&(c=x.width);const v=[];e.classData.members.forEach((t=>{const n=is(t);let r=n.displayText;dr().flowchart.htmlLabels&&(r=r.replace(/</g,"<").replace(/>/g,">"));const i=h.node().appendChild(bs(r,n.cssStyle?n.cssStyle:e.labelStyle,!0,!0));let a=i.getBBox();if(jt(dr().flowchart.htmlLabels)){const t=i.children[0],e=(0,o.Ys)(i);a=t.getBoundingClientRect(),e.attr("width",a.width),e.attr("height",a.height)}a.width>c&&(c=a.width),u+=a.height+4,v.push(i)})),u+=8;const _=[];if(e.classData.methods.forEach((t=>{const n=is(t);let r=n.displayText;dr().flowchart.htmlLabels&&(r=r.replace(/</g,"<").replace(/>/g,">"));const i=h.node().appendChild(bs(r,n.cssStyle?n.cssStyle:e.labelStyle,!0,!0));let a=i.getBBox();if(jt(dr().flowchart.htmlLabels)){const t=i.children[0],e=(0,o.Ys)(i);a=t.getBoundingClientRect(),e.attr("width",a.width),e.attr("height",a.height)}a.width>c&&(c=a.width),u+=a.height+4,_.push(i)})),u+=8,p){let t=(c-g.width)/2;(0,o.Ys)(m).attr("transform","translate( "+(-1*c/2+t)+", "+-1*u/2+")"),d=g.height+4}let k=(c-x.width)/2;return(0,o.Ys)(b).attr("transform","translate( "+(-1*c/2+k)+", "+(-1*u/2+d)+")"),d+=x.height+4,s.attr("class","divider").attr("x1",-c/2-n).attr("x2",c/2+n).attr("y1",-u/2-n+8+d).attr("y2",-u/2-n+8+d),d+=8,v.forEach((t=>{(0,o.Ys)(t).attr("transform","translate( "+-c/2+", "+(-1*u/2+d+4)+")"),d+=x.height+4})),d+=8,l.attr("class","divider").attr("x1",-c/2-n).attr("x2",c/2+n).attr("y1",-u/2-n+8+d).attr("y2",-u/2-n+8+d),d+=8,_.forEach((t=>{(0,o.Ys)(t).attr("transform","translate( "+-c/2+", "+(-1*u/2+d)+")"),d+=x.height+4})),a.attr("class","outer title-state").attr("x",-c/2-n).attr("y",-u/2-n).attr("width",c+e.padding).attr("height",u+e.padding),vs(e,a),e.intersect=function(t){return Bs.rect(e,t)},i}};let zs={};const Ys=(t,e,n)=>{let r,i;if(e.link){let a;"sandbox"===dr().securityLevel?a="_top":e.linkTarget&&(a=e.linkTarget||"_blank"),r=t.insert("svg:a").attr("xlink:href",e.link).attr("target",a),i=Ps[e.shape](r,e,n)}else i=Ps[e.shape](t,e,n),r=i;return e.tooltip&&i.attr("title",e.tooltip),e.class&&i.attr("class","node default "+e.class),zs[e.id]=r,e.haveCallback&&zs[e.id].attr("class",zs[e.id].attr("class")+" clickable"),r},Us=t=>{const e=zs[t.id];It.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");const n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n},Ws={rect:(t,e)=>{It.trace("Creating subgraph rect for ",e.id,e);const n=t.insert("g").attr("class","cluster"+(e.class?" "+e.class:"")).attr("id",e.id),r=n.insert("rect",":first-child"),i=n.insert("g").attr("class","cluster-label"),a=i.node().appendChild(bs(e.labelText,e.labelStyle,void 0,!0));let s=a.getBBox();if(jt(dr().flowchart.htmlLabels)){const t=a.children[0],e=(0,o.Ys)(a);s=t.getBoundingClientRect(),e.attr("width",s.width),e.attr("height",s.height)}const l=0*e.padding,c=l/2,u=e.width<=s.width+l?s.width+l:e.width;e.width<=s.width+l?e.diff=(s.width-e.width)/2-e.padding/2:e.diff=-e.padding/2,It.trace("Data ",e,JSON.stringify(e)),r.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-u/2).attr("y",e.y-e.height/2-c).attr("width",u).attr("height",e.height+l),i.attr("transform","translate("+(e.x-s.width/2)+", "+(e.y-e.height/2)+")");const h=r.node().getBBox();return e.width=h.width,e.height=h.height,e.intersect=function(t){return Fs(e,t)},n},roundedWithTitle:(t,e)=>{const n=t.insert("g").attr("class",e.classes).attr("id",e.id),r=n.insert("rect",":first-child"),i=n.insert("g").attr("class","cluster-label"),a=n.append("rect"),s=i.node().appendChild(bs(e.labelText,e.labelStyle,void 0,!0));let l=s.getBBox();if(jt(dr().flowchart.htmlLabels)){const t=s.children[0],e=(0,o.Ys)(s);l=t.getBoundingClientRect(),e.attr("width",l.width),e.attr("height",l.height)}l=s.getBBox();const c=0*e.padding,u=c/2,h=e.width<=l.width+e.padding?l.width+e.padding:e.width;e.width<=l.width+e.padding?e.diff=(l.width+0*e.padding-e.width)/2:e.diff=-e.padding/2,r.attr("class","outer").attr("x",e.x-h/2-u).attr("y",e.y-e.height/2-u).attr("width",h+c).attr("height",e.height+c),a.attr("class","inner").attr("x",e.x-h/2-u).attr("y",e.y-e.height/2-u+l.height-1).attr("width",h+c).attr("height",e.height+c-l.height-3),i.attr("transform","translate("+(e.x-l.width/2)+", "+(e.y-e.height/2-e.padding/3+(jt(dr().flowchart.htmlLabels)?5:3))+")");const d=r.node().getBBox();return e.height=d.height,e.intersect=function(t){return Fs(e,t)},n},noteGroup:(t,e)=>{const n=t.insert("g").attr("class","note-cluster").attr("id",e.id),r=n.insert("rect",":first-child"),i=0*e.padding,a=i/2;r.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+i).attr("height",e.height+i).attr("fill","none");const s=r.node().getBBox();return e.width=s.width,e.height=s.height,e.intersect=function(t){return Fs(e,t)},n},divider:(t,e)=>{const n=t.insert("g").attr("class",e.classes).attr("id",e.id),r=n.insert("rect",":first-child"),i=0*e.padding,a=i/2;r.attr("class","divider").attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2).attr("width",e.width+i).attr("height",e.height+i);const s=r.node().getBBox();return e.width=s.width,e.height=s.height,e.diff=-e.padding/2,e.intersect=function(t){return Fs(e,t)},n}};let Hs={};let qs={},Vs={};const Gs=(t,e)=>{const n=bs(e.label,e.labelStyle),r=t.insert("g").attr("class","edgeLabel"),i=r.insert("g").attr("class","label");i.node().appendChild(n);let a,s=n.getBBox();if(jt(dr().flowchart.htmlLabels)){const t=n.children[0],e=(0,o.Ys)(n);s=t.getBoundingClientRect(),e.attr("width",s.width),e.attr("height",s.height)}if(i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),qs[e.id]=r,e.width=s.width,e.height=s.height,e.startLabelLeft){const n=bs(e.startLabelLeft,e.labelStyle),r=t.insert("g").attr("class","edgeTerminals"),i=r.insert("g").attr("class","inner");a=i.node().appendChild(n);const s=n.getBBox();i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),Vs[e.id]||(Vs[e.id]={}),Vs[e.id].startLeft=r,Xs(a,e.startLabelLeft)}if(e.startLabelRight){const n=bs(e.startLabelRight,e.labelStyle),r=t.insert("g").attr("class","edgeTerminals"),i=r.insert("g").attr("class","inner");a=r.node().appendChild(n),i.node().appendChild(n);const s=n.getBBox();i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),Vs[e.id]||(Vs[e.id]={}),Vs[e.id].startRight=r,Xs(a,e.startLabelRight)}if(e.endLabelLeft){const n=bs(e.endLabelLeft,e.labelStyle),r=t.insert("g").attr("class","edgeTerminals"),i=r.insert("g").attr("class","inner");a=i.node().appendChild(n);const s=n.getBBox();i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),r.node().appendChild(n),Vs[e.id]||(Vs[e.id]={}),Vs[e.id].endLeft=r,Xs(a,e.endLabelLeft)}if(e.endLabelRight){const n=bs(e.endLabelRight,e.labelStyle),r=t.insert("g").attr("class","edgeTerminals"),i=r.insert("g").attr("class","inner");a=i.node().appendChild(n);const s=n.getBBox();i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),r.node().appendChild(n),Vs[e.id]||(Vs[e.id]={}),Vs[e.id].endRight=r,Xs(a,e.endLabelRight)}return n};function Xs(t,e){dr().flowchart.htmlLabels&&t&&(t.style.width=9*e.length+"px",t.style.height="12px")}const Ks=(t,e)=>{It.warn("abc88 cutPathAtIntersect",t,e);let n=[],r=t[0],i=!1;return t.forEach((t=>{if(It.info("abc88 checking point",t,e),((t,e)=>{const n=t.x,r=t.y,i=Math.abs(e.x-n),a=Math.abs(e.y-r),s=t.width/2,o=t.height/2;return i>=s||a>=o})(e,t)||i)It.warn("abc88 outside",t,r),r=t,i||n.push(t);else{const a=((t,e,n)=>{It.warn(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(e)}\n insidePoint : ${JSON.stringify(n)}\n node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);const r=t.x,i=t.y,a=Math.abs(r-n.x),s=t.width/2;let o=n.x<e.x?s-a:s+a;const l=t.height/2,c=Math.abs(e.y-n.y),u=Math.abs(e.x-n.x);if(Math.abs(i-e.y)*s>Math.abs(r-e.x)*l){let t=n.y<e.y?e.y-l-i:i-l-e.y;o=u*t/c;const r={x:n.x<e.x?n.x+o:n.x-u+o,y:n.y<e.y?n.y+c-t:n.y-c+t};return 0===o&&(r.x=e.x,r.y=e.y),0===u&&(r.x=e.x),0===c&&(r.y=e.y),It.warn(`abc89 topp/bott calc, Q ${c}, q ${t}, R ${u}, r ${o}`,r),r}{o=n.x<e.x?e.x-s-r:r-s-e.x;let t=c*o/u,i=n.x<e.x?n.x+u-o:n.x-u+o,a=n.y<e.y?n.y+t:n.y-t;return It.warn(`sides calc abc89, Q ${c}, q ${t}, R ${u}, r ${o}`,{_x:i,_y:a}),0===o&&(i=e.x,a=e.y),0===u&&(i=e.x),0===c&&(a=e.y),{x:i,y:a}}})(e,r,t);It.warn("abc88 inside",t,r,a),It.warn("abc88 intersection",a);let s=!1;n.forEach((t=>{s=s||t.x===a.x&&t.y===a.y})),n.some((t=>t.x===a.x&&t.y===a.y))?It.warn("abc88 no intersect",a,n):n.push(a),i=!0}})),It.warn("abc88 returning points",n),n},Qs=(t,e,n,r)=>{It.info("Graph in recursive render: XXX",ht.c(e),r);const i=e.graph().rankdir;It.trace("Dir in recursive render - dir:",i);const a=t.insert("g").attr("class","root");e.nodes()?It.info("Recursive render XXX",e.nodes()):It.info("No nodes found for",e),e.edges().length>0&&It.trace("Recursive edges",e.edge(e.edges()[0]));const s=a.insert("g").attr("class","clusters"),l=a.insert("g").attr("class","edgePaths"),c=a.insert("g").attr("class","edgeLabels"),u=a.insert("g").attr("class","nodes");e.nodes().forEach((function(t){const a=e.node(t);if(void 0!==r){const n=JSON.parse(JSON.stringify(r.clusterData));It.info("Setting data for cluster XXX (",t,") ",n,r),e.setNode(r.id,n),e.parent(t)||(It.trace("Setting parent",t,r.id),e.setParent(t,r.id,n))}if(It.info("(Insert) Node XXX"+t+": "+JSON.stringify(e.node(t))),a&&a.clusterNode){It.info("Cluster identified",t,a.width,e.node(t));const r=Qs(u,a.graph,n,e.node(t)),i=r.elem;vs(a,i),a.diff=r.diff||0,It.info("Node bounds (abc123)",t,a,a.width,a.x,a.y),((t,e)=>{zs[e.id]=t})(i,a),It.warn("Recursive render complete ",i,a)}else e.children(t).length>0?(It.info("Cluster - the non recursive path XXX",t,a.id,a,e),It.info(Ds(a.id,e)),ks[a.id]={id:Ds(a.id,e),node:a}):(It.info("Node - the non recursive path",t,a.id,a),Ys(u,e.node(t),i))})),e.edges().forEach((function(t){const n=e.edge(t.v,t.w,t.name);It.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t)),It.info("Edge "+t.v+" -> "+t.w+": ",t," ",JSON.stringify(e.edge(t))),It.info("Fix",ks,"ids:",t.v,t.w,"Translateing: ",ks[t.v],ks[t.w]),Gs(c,n)})),e.edges().forEach((function(t){It.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t))})),It.info("#############################################"),It.info("### Layout ###"),It.info("#############################################"),It.info(e),(0,ct.bK)(e),It.info("Graph after layout:",ht.c(e));let h=0;return(t=>Is(t,t.children()))(e).forEach((function(t){const n=e.node(t);It.info("Position "+t+": "+JSON.stringify(e.node(t))),It.info("Position "+t+": ("+n.x,","+n.y,") width: ",n.width," height: ",n.height),n&&n.clusterNode?Us(n):e.children(t).length>0?(((t,e)=>{It.trace("Inserting cluster");const n=e.shape||"rect";Hs[e.id]=Ws[n](t,e)})(s,n),ks[n.id].node=n):Us(n)})),e.edges().forEach((function(t){const r=e.edge(t);It.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(r),r);const i=function(t,e,n,r,i,a){let s=n.points,l=!1;const c=a.node(e.v);var u=a.node(e.w);It.info("abc88 InsertEdge: ",n),u.intersect&&c.intersect&&(s=s.slice(1,n.points.length-1),s.unshift(c.intersect(s[0])),It.info("Last point",s[s.length-1],u,u.intersect(s[s.length-1])),s.push(u.intersect(s[s.length-1]))),n.toCluster&&(It.info("to cluster abc88",r[n.toCluster]),s=Ks(n.points,r[n.toCluster].node),l=!0),n.fromCluster&&(It.info("from cluster abc88",r[n.fromCluster]),s=Ks(s.reverse(),r[n.fromCluster].node).reverse(),l=!0);const h=s.filter((t=>!Number.isNaN(t.y)));let d;d=("graph"===i||"flowchart"===i)&&n.curve||o.$0Z;const p=(0,o.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(d);let f;switch(n.thickness){case"normal":f="edge-thickness-normal";break;case"thick":f="edge-thickness-thick";break;default:f=""}switch(n.pattern){case"solid":f+=" edge-pattern-solid";break;case"dotted":f+=" edge-pattern-dotted";break;case"dashed":f+=" edge-pattern-dashed"}const m=t.append("path").attr("d",p(h)).attr("id",n.id).attr("class"," "+f+(n.classes?" "+n.classes:"")).attr("style",n.style);let g="";switch((dr().flowchart.arrowMarkerAbsolute||dr().state.arrowMarkerAbsolute)&&(g=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,g=g.replace(/\(/g,"\\("),g=g.replace(/\)/g,"\\)")),It.info("arrowTypeStart",n.arrowTypeStart),It.info("arrowTypeEnd",n.arrowTypeEnd),n.arrowTypeStart){case"arrow_cross":m.attr("marker-start","url("+g+"#"+i+"-crossStart)");break;case"arrow_point":m.attr("marker-start","url("+g+"#"+i+"-pointStart)");break;case"arrow_barb":m.attr("marker-start","url("+g+"#"+i+"-barbStart)");break;case"arrow_circle":m.attr("marker-start","url("+g+"#"+i+"-circleStart)");break;case"aggregation":m.attr("marker-start","url("+g+"#"+i+"-aggregationStart)");break;case"extension":m.attr("marker-start","url("+g+"#"+i+"-extensionStart)");break;case"composition":m.attr("marker-start","url("+g+"#"+i+"-compositionStart)");break;case"dependency":m.attr("marker-start","url("+g+"#"+i+"-dependencyStart)");break;case"lollipop":m.attr("marker-start","url("+g+"#"+i+"-lollipopStart)")}switch(n.arrowTypeEnd){case"arrow_cross":m.attr("marker-end","url("+g+"#"+i+"-crossEnd)");break;case"arrow_point":m.attr("marker-end","url("+g+"#"+i+"-pointEnd)");break;case"arrow_barb":m.attr("marker-end","url("+g+"#"+i+"-barbEnd)");break;case"arrow_circle":m.attr("marker-end","url("+g+"#"+i+"-circleEnd)");break;case"aggregation":m.attr("marker-end","url("+g+"#"+i+"-aggregationEnd)");break;case"extension":m.attr("marker-end","url("+g+"#"+i+"-extensionEnd)");break;case"composition":m.attr("marker-end","url("+g+"#"+i+"-compositionEnd)");break;case"dependency":m.attr("marker-end","url("+g+"#"+i+"-dependencyEnd)");break;case"lollipop":m.attr("marker-end","url("+g+"#"+i+"-lollipopEnd)")}let y={};return l&&(y.updatedPath=s),y.originalPath=n.points,y}(l,t,r,ks,n,e);((t,e)=>{It.info("Moving label abc78 ",t.id,t.label,qs[t.id]);let n=e.updatedPath?e.updatedPath:e.originalPath;if(t.label){const r=qs[t.id];let i=t.x,a=t.y;if(n){const r=nr.calcLabelPosition(n);It.info("Moving label "+t.label+" from (",i,",",a,") to (",r.x,",",r.y,") abc78"),e.updatedPath&&(i=r.x,a=r.y)}r.attr("transform","translate("+i+", "+a+")")}if(t.startLabelLeft){const e=Vs[t.id].startLeft;let r=t.x,i=t.y;if(n){const e=nr.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",n);r=e.x,i=e.y}e.attr("transform","translate("+r+", "+i+")")}if(t.startLabelRight){const e=Vs[t.id].startRight;let r=t.x,i=t.y;if(n){const e=nr.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",n);r=e.x,i=e.y}e.attr("transform","translate("+r+", "+i+")")}if(t.endLabelLeft){const e=Vs[t.id].endLeft;let r=t.x,i=t.y;if(n){const e=nr.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",n);r=e.x,i=e.y}e.attr("transform","translate("+r+", "+i+")")}if(t.endLabelRight){const e=Vs[t.id].endRight;let r=t.x,i=t.y;if(n){const e=nr.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",n);r=e.x,i=e.y}e.attr("transform","translate("+r+", "+i+")")}})(r,i)})),e.nodes().forEach((function(t){const n=e.node(t);It.info(t,n.type,n.diff),"group"===n.type&&(h=n.diff)})),{elem:a,diff:h}},Js=(t,e,n,r,i)=>{ys(t,n,r,i),zs={},qs={},Vs={},Hs={},Ts={},ws={},ks={},It.warn("Graph at first:",ht.c(e)),((t,e)=>{!t||e>10?It.debug("Opting out, no graph "):(It.debug("Opting in, graph "),t.nodes().forEach((function(e){t.children(e).length>0&&(It.warn("Cluster identified",e," Replacement id in edges: ",Ds(e,t)),Ts[e]=Cs(e,t),ks[e]={id:Ds(e,t),clusterData:t.node(e)})})),t.nodes().forEach((function(e){const n=t.children(e),r=t.edges();n.length>0?(It.debug("Cluster identified",e,Ts),r.forEach((t=>{t.v!==e&&t.w!==e&&Ss(t.v,e)^Ss(t.w,e)&&(It.warn("Edge: ",t," leaves cluster ",e),It.warn("Decendants of XXX ",e,": ",Ts[e]),ks[e].externalConnections=!0)}))):It.debug("Not a cluster ",e,Ts)})),t.edges().forEach((function(e){const n=t.edge(e);It.warn("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),It.warn("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(t.edge(e)));let r=e.v,i=e.w;if(It.warn("Fix XXX",ks,"ids:",e.v,e.w,"Translating: ",ks[e.v]," --- ",ks[e.w]),ks[e.v]&&ks[e.w]&&ks[e.v]===ks[e.w]){It.warn("Fixing and trixing link to self - removing XXX",e.v,e.w,e.name),It.warn("Fixing and trixing - removing XXX",e.v,e.w,e.name),r=As(e.v),i=As(e.w),t.removeEdge(e.v,e.w,e.name);const a=e.w+"---"+e.v;t.setNode(a,{domId:a,id:a,labelStyle:"",labelText:n.label,padding:0,shape:"labelRect",style:""});const s=JSON.parse(JSON.stringify(n)),o=JSON.parse(JSON.stringify(n));s.label="",s.arrowTypeEnd="none",o.label="",s.fromCluster=e.v,o.toCluster=e.v,t.setEdge(r,a,s,e.name+"-cyclic-special"),t.setEdge(a,i,o,e.name+"-cyclic-special")}else(ks[e.v]||ks[e.w])&&(It.warn("Fixing and trixing - removing XXX",e.v,e.w,e.name),r=As(e.v),i=As(e.w),t.removeEdge(e.v,e.w,e.name),r!==e.v&&(n.fromCluster=e.v),i!==e.w&&(n.toCluster=e.w),It.warn("Fix Replacing with XXX",r,i,e.name),t.setEdge(r,i,n,e.name))})),It.warn("Adjusted Graph",ht.c(t)),Os(t,0),It.trace(ks))})(e),It.warn("Graph after:",ht.c(e)),Qs(t,e,r)},to=t=>zt.sanitizeText(t,dr());let eo={dividerMargin:10,padding:5,textHeight:10};function no(t){let e;switch(t){case 0:e="aggregation";break;case 1:e="extension";break;case 2:e="composition";break;case 3:e="dependency";break;case 4:e="lollipop";break;default:e="none"}return e}const ro={setConf:function(t){Object.keys(t).forEach((function(e){eo[e]=t[e]}))},draw:function(t,e,n,r){It.info("Drawing class - ",e);const i=dr().flowchart,a=dr().securityLevel;It.info("config:",i);const s=i.nodeSpacing||50,l=i.rankSpacing||50,c=new ut.k({multigraph:!0,compound:!0}).setGraph({rankdir:r.db.getDirection(),nodesep:s,ranksep:l,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}})),u=r.db.getClasses(),h=r.db.getRelations(),d=r.db.getNotes();let p;It.info(h),function(t,e,n,r){const i=Object.keys(t);It.info("keys:",i),It.info(t),i.forEach((function(n){const i=t[n];let a="";i.cssClasses.length>0&&(a=a+" "+i.cssClasses.join(" "));const s={labelStyle:""};let o=void 0!==i.text?i.text:i.id,l="";i.type,l="class_box",e.setNode(i.id,{labelStyle:s.labelStyle,shape:l,labelText:to(o),classData:i,rx:0,ry:0,class:a,style:s.style,id:i.id,domId:i.domId,tooltip:r.db.getTooltip(i.id)||"",haveCallback:i.haveCallback,link:i.link,width:"group"===i.type?500:void 0,type:i.type,padding:dr().flowchart.padding}),It.info("setNode",{labelStyle:s.labelStyle,shape:l,labelText:o,rx:0,ry:0,class:a,style:s.style,id:i.id,width:"group"===i.type?500:void 0,type:i.type,padding:dr().flowchart.padding})}))}(u,c,0,r),function(t,e){const n=dr().flowchart;let r=0;t.forEach((function(i){r++;const a={classes:"relation"};a.pattern=1==i.relation.lineType?"dashed":"solid",a.id="id"+r,"arrow_open"===i.type?a.arrowhead="none":a.arrowhead="normal",It.info(a,i),a.startLabelRight="none"===i.relationTitle1?"":i.relationTitle1,a.endLabelLeft="none"===i.relationTitle2?"":i.relationTitle2,a.arrowTypeStart=no(i.relation.type1),a.arrowTypeEnd=no(i.relation.type2);let s="",l="";if(void 0!==i.style){const t=Pn(i.style);s=t.style,l=t.labelStyle}else s="fill:none";a.style=s,a.labelStyle=l,void 0!==i.interpolate?a.curve=Zn(i.interpolate,o.c_6):void 0!==t.defaultInterpolate?a.curve=Zn(t.defaultInterpolate,o.c_6):a.curve=Zn(n.curve,o.c_6),i.text=i.title,void 0===i.text?void 0!==i.style&&(a.arrowheadStyle="fill: #333"):(a.arrowheadStyle="fill: #333",a.labelpos="c",dr().flowchart.htmlLabels?(a.labelType="html",a.label='<span class="edgeLabel">'+i.text+"</span>"):(a.labelType="text",a.label=i.text.replace(zt.lineBreakRegex,"\n"),void 0===i.style&&(a.style=a.style||"stroke: #333; stroke-width: 1.5px;fill:none"),a.labelStyle=a.labelStyle.replace("color:","fill:"))),e.setEdge(i.id1,i.id2,a,r)}))}(h,c),function(t,e,n,r){It.info(t),t.forEach((function(t,i){const a=t,s="",l="";let c=a.text,u="note";if(e.setNode(a.id,{labelStyle:s,shape:u,labelText:to(c),noteData:a,rx:0,ry:0,class:"",style:l,id:a.id,domId:a.id,tooltip:"",type:"note",padding:dr().flowchart.padding}),It.info("setNode",{labelStyle:s,shape:u,labelText:c,rx:0,ry:0,style:l,id:a.id,type:"note",padding:dr().flowchart.padding}),!a.class||!(a.class in r))return;const h=n+i,d={classes:"relation",pattern:"dotted"};d.id=`edgeNote${h}`,d.arrowhead="none",It.info(`Note edge: ${JSON.stringify(d)}, ${JSON.stringify(a)}`),d.startLabelRight="",d.endLabelLeft="",d.arrowTypeStart="none",d.arrowTypeEnd="none",d.style="fill:none",d.labelStyle="",d.curve=Zn(eo.curve,o.c_6),e.setEdge(a.id,a.class,d,h)}))}(d,c,h.length+1,u),"sandbox"===a&&(p=(0,o.Ys)("#i"+e));const f="sandbox"===a?(0,o.Ys)(p.nodes()[0].contentDocument.body):(0,o.Ys)("body"),m=f.select(`[id="${e}"]`),g=f.select("#"+e+" g");if(Js(g,c,["aggregation","extension","composition","dependency","lollipop"],"classDiagram",e),nr.insertTitle(m,"classTitleText",i.titleTopMargin,r.db.getDiagramTitle()),vr(c,m,i.diagramPadding,i.useMaxWidth),!i.htmlLabels){const t="sandbox"===a?p.nodes()[0].contentDocument:document,n=t.querySelectorAll('[id="'+e+'"] .edgeLabel .label');for(const e of n){const n=e.getBBox(),r=t.createElementNS("http://www.w3.org/2000/svg","rect");r.setAttribute("rx",0),r.setAttribute("ry",0),r.setAttribute("width",n.width),r.setAttribute("height",n.height),e.insertBefore(r,e.firstChild)}}}};var io=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,2],r=[1,5],i=[6,9,11,23,25,27,29,30,31,51],a=[1,17],s=[1,18],o=[1,19],l=[1,20],c=[1,21],u=[1,22],h=[1,25],d=[1,30],p=[1,31],f=[1,32],m=[1,33],g=[6,9,11,15,20,23,25,27,29,30,31,44,45,46,47,51],y=[1,45],b=[30,31,48,49],x=[4,6,9,11,23,25,27,29,30,31,51],v=[44,45,46,47],_=[22,37],k=[1,65],T=[1,64],w=[22,37,39,41],S={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,entityName:17,relSpec:18,role:19,BLOCK_START:20,attributes:21,BLOCK_STOP:22,title:23,title_value:24,acc_title:25,acc_title_value:26,acc_descr:27,acc_descr_value:28,acc_descr_multiline_value:29,ALPHANUM:30,ENTITY_NAME:31,attribute:32,attributeType:33,attributeName:34,attributeKeyTypeList:35,attributeComment:36,ATTRIBUTE_WORD:37,attributeKeyType:38,COMMA:39,ATTRIBUTE_KEY:40,COMMENT:41,cardinality:42,relType:43,ZERO_OR_ONE:44,ZERO_OR_MORE:45,ONE_OR_MORE:46,ONLY_ONE:47,NON_IDENTIFYING:48,IDENTIFYING:49,WORD:50,open_directive:51,type_directive:52,arg_directive:53,close_directive:54,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"BLOCK_START",22:"BLOCK_STOP",23:"title",24:"title_value",25:"acc_title",26:"acc_title_value",27:"acc_descr",28:"acc_descr_value",29:"acc_descr_multiline_value",30:"ALPHANUM",31:"ENTITY_NAME",37:"ATTRIBUTE_WORD",39:"COMMA",40:"ATTRIBUTE_KEY",41:"COMMENT",44:"ZERO_OR_ONE",45:"ZERO_OR_MORE",46:"ONE_OR_MORE",47:"ONLY_ONE",48:"NON_IDENTIFYING",49:"IDENTIFYING",50:"WORD",51:"open_directive",52:"type_directive",53:"arg_directive",54:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[10,2],[10,2],[10,2],[10,1],[17,1],[17,1],[21,1],[21,2],[32,2],[32,3],[32,3],[32,4],[33,1],[34,1],[35,1],[35,3],[38,1],[36,1],[18,3],[42,1],[42,1],[42,1],[42,1],[43,1],[43,1],[19,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 1:break;case 3:case 7:case 8:this.$=[];break;case 4:a[o-1].push(a[o]),this.$=a[o-1];break;case 5:case 6:case 20:case 43:case 28:case 29:case 32:this.$=a[o];break;case 12:r.addEntity(a[o-4]),r.addEntity(a[o-2]),r.addRelationship(a[o-4],a[o],a[o-2],a[o-3]);break;case 13:r.addEntity(a[o-3]),r.addAttributes(a[o-3],a[o-1]);break;case 14:r.addEntity(a[o-2]);break;case 15:r.addEntity(a[o]);break;case 16:case 17:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 18:case 19:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 21:case 41:case 42:case 33:this.$=a[o].replace(/"/g,"");break;case 22:case 30:this.$=[a[o]];break;case 23:a[o].push(a[o-1]),this.$=a[o];break;case 24:this.$={attributeType:a[o-1],attributeName:a[o]};break;case 25:this.$={attributeType:a[o-2],attributeName:a[o-1],attributeKeyTypeList:a[o]};break;case 26:this.$={attributeType:a[o-2],attributeName:a[o-1],attributeComment:a[o]};break;case 27:this.$={attributeType:a[o-3],attributeName:a[o-2],attributeKeyTypeList:a[o-1],attributeComment:a[o]};break;case 31:a[o-2].push(a[o]),this.$=a[o-2];break;case 34:this.$={cardA:a[o],relType:a[o-1],cardB:a[o-2]};break;case 35:this.$=r.Cardinality.ZERO_OR_ONE;break;case 36:this.$=r.Cardinality.ZERO_OR_MORE;break;case 37:this.$=r.Cardinality.ONE_OR_MORE;break;case 38:this.$=r.Cardinality.ONLY_ONE;break;case 39:this.$=r.Identification.NON_IDENTIFYING;break;case 40:this.$=r.Identification.IDENTIFYING;break;case 44:r.parseDirective("%%{","open_directive");break;case 45:r.parseDirective(a[o],"type_directive");break;case 46:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 47:r.parseDirective("}%%","close_directive","er")}},table:[{3:1,4:n,7:3,12:4,51:r},{1:[3]},e(i,[2,3],{5:6}),{3:7,4:n,7:3,12:4,51:r},{13:8,52:[1,9]},{52:[2,44]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:a,25:s,27:o,29:l,30:c,31:u,51:r},{1:[2,2]},{14:23,15:[1,24],54:h},e([15,54],[2,45]),e(i,[2,8],{1:[2,1]}),e(i,[2,4]),{7:15,10:26,12:4,17:16,23:a,25:s,27:o,29:l,30:c,31:u,51:r},e(i,[2,6]),e(i,[2,7]),e(i,[2,11]),e(i,[2,15],{18:27,42:29,20:[1,28],44:d,45:p,46:f,47:m}),{24:[1,34]},{26:[1,35]},{28:[1,36]},e(i,[2,19]),e(g,[2,20]),e(g,[2,21]),{11:[1,37]},{16:38,53:[1,39]},{11:[2,47]},e(i,[2,5]),{17:40,30:c,31:u},{21:41,22:[1,42],32:43,33:44,37:y},{43:46,48:[1,47],49:[1,48]},e(b,[2,35]),e(b,[2,36]),e(b,[2,37]),e(b,[2,38]),e(i,[2,16]),e(i,[2,17]),e(i,[2,18]),e(x,[2,9]),{14:49,54:h},{54:[2,46]},{15:[1,50]},{22:[1,51]},e(i,[2,14]),{21:52,22:[2,22],32:43,33:44,37:y},{34:53,37:[1,54]},{37:[2,28]},{42:55,44:d,45:p,46:f,47:m},e(v,[2,39]),e(v,[2,40]),{11:[1,56]},{19:57,30:[1,60],31:[1,59],50:[1,58]},e(i,[2,13]),{22:[2,23]},e(_,[2,24],{35:61,36:62,38:63,40:k,41:T}),e([22,37,40,41],[2,29]),e([30,31],[2,34]),e(x,[2,10]),e(i,[2,12]),e(i,[2,41]),e(i,[2,42]),e(i,[2,43]),e(_,[2,25],{36:66,39:[1,67],41:T}),e(_,[2,26]),e(w,[2,30]),e(_,[2,33]),e(w,[2,32]),e(_,[2,27]),{38:68,40:k},e(w,[2,31])],defaultActions:{5:[2,44],7:[2,2],25:[2,47],39:[2,46],45:[2,28],52:[2,23]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},E=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("acc_title"),25;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),27;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.begin("open_directive"),51;case 8:return this.begin("type_directive"),52;case 9:return this.popState(),this.begin("arg_directive"),15;case 10:return this.popState(),this.popState(),54;case 11:return 53;case 12:case 13:case 15:case 22:case 27:break;case 14:return 11;case 16:return 9;case 17:return 31;case 18:return 50;case 19:return 4;case 20:return this.begin("block"),20;case 21:return 39;case 23:return 40;case 24:case 25:return 37;case 26:return 41;case 28:return this.popState(),22;case 29:case 58:return e.yytext[0];case 30:case 34:case 35:case 48:return 44;case 31:case 32:case 33:case 41:case 43:case 50:return 46;case 36:case 37:case 38:case 39:case 40:case 42:case 49:return 45;case 44:case 45:case 46:case 47:return 47;case 51:case 54:case 55:case 56:return 48;case 52:case 53:return 49;case 57:return 30;case 59:return 6}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:,)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:(.*?)[~](.*?)*[~])/i,/^(?:[A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},open_directive:{rules:[8],inclusive:!1},type_directive:{rules:[9,10],inclusive:!1},arg_directive:{rules:[10,11],inclusive:!1},block:{rules:[21,22,23,24,25,26,27,28,29],inclusive:!1},INITIAL:{rules:[0,2,4,7,12,13,14,15,16,17,18,19,20,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59],inclusive:!0}}},t);function C(){this.yy={}}return S.lexer=E,C.prototype=S,S.Parser=C,new C}();io.parser=io;const ao=io,so=t=>null!==t.match(/^\s*erDiagram/);let oo={},lo=[];const co=function(t){return void 0===oo[t]&&(oo[t]={attributes:[]},It.info("Added new entity :",t)),oo[t]},uo={Cardinality:{ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE"},Identification:{NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().er,addEntity:co,addAttributes:function(t,e){let n,r=co(t);for(n=e.length-1;n>=0;n--)r.attributes.push(e[n]),It.debug("Added attribute ",e[n].attributeName)},getEntities:()=>oo,addRelationship:function(t,e,n,r){let i={entityA:t,roleA:e,entityB:n,relSpec:r};lo.push(i),It.debug("Added new relationship :",i)},getRelationships:()=>lo,clear:function(){oo={},lo=[],Zr()},setAccTitle:jr,getAccTitle:Pr,setAccDescription:zr,getAccDescription:Yr,setDiagramTitle:Ur,getDiagramTitle:Wr},ho={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END"},po=ho,fo=function(t,e){let n;t.append("defs").append("marker").attr("id",ho.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",ho.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),n=t.append("defs").append("marker").attr("id",ho.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),n.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18"),n=t.append("defs").append("marker").attr("id",ho.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),n.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,0 L21,18"),t.append("defs").append("marker").attr("id",ho.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",ho.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),n=t.append("defs").append("marker").attr("id",ho.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),n.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),n=t.append("defs").append("marker").attr("id",ho.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),n.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},mo=/[^\dA-Za-z](\W)*/g;let go={},yo=new Map;const bo=function(t,e,n){let r;return Object.keys(e).forEach((function(i){const a=function(t="",e=""){const n=t.replace(mo,"");return`${ko(e)}${ko(n)}${_t(t,_o)}`}(i,"entity");yo.set(i,a);const s=t.append("g").attr("id",a);r=void 0===r?a:r;const o="text-"+a,l=s.append("text").classed("er entityLabel",!0).attr("id",o).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","middle").style("font-family",dr().fontFamily).style("font-size",go.fontSize+"px").text(i),{width:c,height:u}=((t,e,n)=>{const r=go.entityPadding/3,i=go.entityPadding/3,a=.85*go.fontSize,s=e.node().getBBox(),o=[];let l=!1,c=!1,u=0,h=0,d=0,p=0,f=s.height+2*r,m=1;n.forEach((t=>{void 0!==t.attributeKeyTypeList&&t.attributeKeyTypeList.length>0&&(l=!0),void 0!==t.attributeComment&&(c=!0)})),n.forEach((n=>{const i=`${e.node().id}-attr-${m}`;let s=0;const g=Pt(n.attributeType),y=t.append("text").classed("er entityLabel",!0).attr("id",`${i}-type`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",dr().fontFamily).style("font-size",a+"px").text(g),b=t.append("text").classed("er entityLabel",!0).attr("id",`${i}-name`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",dr().fontFamily).style("font-size",a+"px").text(n.attributeName),x={};x.tn=y,x.nn=b;const v=y.node().getBBox(),_=b.node().getBBox();if(u=Math.max(u,v.width),h=Math.max(h,_.width),s=Math.max(v.height,_.height),l){const e=void 0!==n.attributeKeyTypeList?n.attributeKeyTypeList.join(","):"",r=t.append("text").classed("er entityLabel",!0).attr("id",`${i}-key`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",dr().fontFamily).style("font-size",a+"px").text(e);x.kn=r;const o=r.node().getBBox();d=Math.max(d,o.width),s=Math.max(s,o.height)}if(c){const e=t.append("text").classed("er entityLabel",!0).attr("id",`${i}-comment`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",dr().fontFamily).style("font-size",a+"px").text(n.attributeComment||"");x.cn=e;const r=e.node().getBBox();p=Math.max(p,r.width),s=Math.max(s,r.height)}x.height=s,o.push(x),f+=s+2*r,m+=1}));let g=4;l&&(g+=2),c&&(g+=2);const y=u+h+d+p,b={width:Math.max(go.minEntityWidth,Math.max(s.width+2*go.entityPadding,y+i*g)),height:n.length>0?f:Math.max(go.minEntityHeight,s.height+2*go.entityPadding)};if(n.length>0){const n=Math.max(0,(b.width-y-i*g)/(g/2));e.attr("transform","translate("+b.width/2+","+(r+s.height/2)+")");let a=s.height+2*r,f="attributeBoxOdd";o.forEach((e=>{const s=a+r+e.height/2;e.tn.attr("transform","translate("+i+","+s+")");const o=t.insert("rect","#"+e.tn.node().id).classed(`er ${f}`,!0).attr("x",0).attr("y",a).attr("width",u+2*i+n).attr("height",e.height+2*r),m=parseFloat(o.attr("x"))+parseFloat(o.attr("width"));e.nn.attr("transform","translate("+(m+i)+","+s+")");const g=t.insert("rect","#"+e.nn.node().id).classed(`er ${f}`,!0).attr("x",m).attr("y",a).attr("width",h+2*i+n).attr("height",e.height+2*r);let y=parseFloat(g.attr("x"))+parseFloat(g.attr("width"));if(l){e.kn.attr("transform","translate("+(y+i)+","+s+")");const o=t.insert("rect","#"+e.kn.node().id).classed(`er ${f}`,!0).attr("x",y).attr("y",a).attr("width",d+2*i+n).attr("height",e.height+2*r);y=parseFloat(o.attr("x"))+parseFloat(o.attr("width"))}c&&(e.cn.attr("transform","translate("+(y+i)+","+s+")"),t.insert("rect","#"+e.cn.node().id).classed(`er ${f}`,"true").attr("x",y).attr("y",a).attr("width",p+2*i+n).attr("height",e.height+2*r)),a+=e.height+2*r,f="attributeBoxOdd"===f?"attributeBoxEven":"attributeBoxOdd"}))}else b.height=Math.max(go.minEntityHeight,f),e.attr("transform","translate("+b.width/2+","+b.height/2+")");return b})(s,l,e[i].attributes),h=s.insert("rect","#"+o).classed("er entityBox",!0).attr("x",0).attr("y",0).attr("width",c).attr("height",u).node().getBBox();n.setNode(a,{width:h.width,height:h.height,shape:"rect",id:a})})),r},xo=function(t){return(t.entityA+t.roleA+t.entityB).replace(/\s/g,"")};let vo=0;const _o="28e9f9db-3c8d-5aa5-9faf-44286ae5937c";function ko(t=""){return t.length>0?`${t}-`:""}const To={setConf:function(t){const e=Object.keys(t);for(const n of e)go[n]=t[n]},draw:function(t,e,n,r){go=dr().er,It.info("Drawing ER diagram");const i=dr().securityLevel;let a;"sandbox"===i&&(a=(0,o.Ys)("#i"+e));const s=("sandbox"===i?(0,o.Ys)(a.nodes()[0].contentDocument.body):(0,o.Ys)("body")).select(`[id='${e}']`);let l;fo(s,go),l=new ut.k({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:go.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel((function(){return{}}));const c=bo(s,r.db.getEntities(),l),u=function(t,e){return t.forEach((function(t){e.setEdge(yo.get(t.entityA),yo.get(t.entityB),{relationship:t},xo(t))})),t}(r.db.getRelationships(),l);var h,d;(0,ct.bK)(l),h=s,(d=l).nodes().forEach((function(t){void 0!==t&&void 0!==d.node(t)&&h.select("#"+t).attr("transform","translate("+(d.node(t).x-d.node(t).width/2)+","+(d.node(t).y-d.node(t).height/2)+" )")})),u.forEach((function(t){!function(t,e,n,r,i){vo++;const a=n.edge(yo.get(e.entityA),yo.get(e.entityB),xo(e)),s=(0,o.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(o.$0Z),l=t.insert("path","#"+r).classed("er relationshipLine",!0).attr("d",s(a.points)).style("stroke",go.stroke).style("fill","none");e.relSpec.relType===i.db.Identification.NON_IDENTIFYING&&l.attr("stroke-dasharray","8,8");let c="";switch(go.arrowMarkerAbsolute&&(c=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,c=c.replace(/\(/g,"\\("),c=c.replace(/\)/g,"\\)")),e.relSpec.cardA){case i.db.Cardinality.ZERO_OR_ONE:l.attr("marker-end","url("+c+"#"+po.ZERO_OR_ONE_END+")");break;case i.db.Cardinality.ZERO_OR_MORE:l.attr("marker-end","url("+c+"#"+po.ZERO_OR_MORE_END+")");break;case i.db.Cardinality.ONE_OR_MORE:l.attr("marker-end","url("+c+"#"+po.ONE_OR_MORE_END+")");break;case i.db.Cardinality.ONLY_ONE:l.attr("marker-end","url("+c+"#"+po.ONLY_ONE_END+")")}switch(e.relSpec.cardB){case i.db.Cardinality.ZERO_OR_ONE:l.attr("marker-start","url("+c+"#"+po.ZERO_OR_ONE_START+")");break;case i.db.Cardinality.ZERO_OR_MORE:l.attr("marker-start","url("+c+"#"+po.ZERO_OR_MORE_START+")");break;case i.db.Cardinality.ONE_OR_MORE:l.attr("marker-start","url("+c+"#"+po.ONE_OR_MORE_START+")");break;case i.db.Cardinality.ONLY_ONE:l.attr("marker-start","url("+c+"#"+po.ONLY_ONE_START+")")}const u=l.node().getTotalLength(),h=l.node().getPointAtLength(.5*u),d="rel"+vo,p=t.append("text").classed("er relationshipLabel",!0).attr("id",d).attr("x",h.x).attr("y",h.y).style("text-anchor","middle").style("dominant-baseline","middle").style("font-family",dr().fontFamily).style("font-size",go.fontSize+"px").text(e.roleA).node().getBBox();t.insert("rect","#"+d).classed("er relationshipLabelBox",!0).attr("x",h.x-p.width/2).attr("y",h.y-p.height/2).attr("width",p.width).attr("height",p.height)}(s,t,l,c,r)}));const p=go.diagramPadding;nr.insertTitle(s,"entityTitleText",go.titleTopMargin,r.db.getDiagramTitle());const f=s.node().getBBox(),m=f.width+2*p,g=f.height+2*p;xr(s,g,m,go.useMaxWidth),s.attr("viewBox",`${f.x-p} ${f.y-p} ${m} ${g}`)}};var wo=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,9],r=[1,7],i=[1,6],a=[1,8],s=[1,20,21,22,23,38,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],o=[2,10],l=[1,20],c=[1,21],u=[1,22],h=[1,23],d=[1,30],p=[1,32],f=[1,33],m=[1,34],g=[1,62],y=[1,48],b=[1,52],x=[1,36],v=[1,37],_=[1,38],k=[1,39],T=[1,40],w=[1,56],S=[1,63],E=[1,51],C=[1,53],D=[1,55],A=[1,59],O=[1,60],I=[1,41],L=[1,42],N=[1,43],M=[1,44],F=[1,61],B=[1,50],R=[1,54],$=[1,57],Z=[1,58],j=[1,49],P=[1,66],z=[1,71],Y=[1,20,21,22,23,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],U=[1,75],W=[1,74],H=[1,76],q=[20,21,23,81,82],V=[1,99],G=[1,104],X=[1,107],K=[1,108],Q=[1,101],J=[1,106],tt=[1,109],et=[1,102],nt=[1,114],rt=[1,113],it=[1,103],at=[1,105],st=[1,110],ot=[1,111],lt=[1,112],ct=[1,115],ut=[20,21,22,23,81,82],ht=[20,21,22,23,53,81,82],dt=[20,21,22,23,40,52,53,55,57,59,61,63,65,66,67,69,71,73,74,76,81,82,91,95,105,106,109,111,112,122,123,124,125,126,127],pt=[20,21,23],ft=[20,21,23,52,66,67,81,82,91,95,105,106,109,111,112,122,123,124,125,126,127],mt=[1,12,20,21,22,23,24,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],gt=[52,66,67,91,95,105,106,109,111,112,122,123,124,125,126,127],yt=[1,149],bt=[1,157],xt=[1,158],vt=[1,159],_t=[1,160],kt=[1,144],Tt=[1,145],wt=[1,141],St=[1,152],Et=[1,153],Ct=[1,154],Dt=[1,155],At=[1,156],Ot=[1,161],It=[1,162],Lt=[1,147],Nt=[1,150],Mt=[1,146],Ft=[1,143],Bt=[20,21,22,23,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],Rt=[1,165],$t=[20,21,22,23,26,52,66,67,91,105,106,109,111,112,122,123,124,125,126,127],Zt=[20,21,22,23,24,26,38,40,41,42,52,56,58,60,62,64,66,67,68,70,72,73,75,77,81,82,86,87,88,89,90,91,92,95,105,106,109,111,112,113,114,122,123,124,125,126,127],jt=[12,21,22,24],Pt=[22,106],zt=[1,250],Yt=[1,245],Ut=[1,246],Wt=[1,254],Ht=[1,251],qt=[1,248],Vt=[1,247],Gt=[1,249],Xt=[1,252],Kt=[1,253],Qt=[1,255],Jt=[1,273],te=[20,21,23,106],ee=[20,21,22,23,66,67,86,102,105,106,109,110,111,112,113],ne={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,openDirective:6,typeDirective:7,closeDirective:8,separator:9,":":10,argDirective:11,open_directive:12,type_directive:13,arg_directive:14,close_directive:15,graphConfig:16,document:17,line:18,statement:19,SEMI:20,NEWLINE:21,SPACE:22,EOF:23,GRAPH:24,NODIR:25,DIR:26,FirstStmtSeperator:27,ending:28,endToken:29,spaceList:30,spaceListNewline:31,verticeStatement:32,styleStatement:33,linkStyleStatement:34,classDefStatement:35,classStatement:36,clickStatement:37,subgraph:38,text:39,SQS:40,SQE:41,end:42,direction:43,acc_title:44,acc_title_value:45,acc_descr:46,acc_descr_value:47,acc_descr_multiline_value:48,link:49,node:50,vertex:51,AMP:52,STYLE_SEPARATOR:53,idString:54,DOUBLECIRCLESTART:55,DOUBLECIRCLEEND:56,PS:57,PE:58,"(-":59,"-)":60,STADIUMSTART:61,STADIUMEND:62,SUBROUTINESTART:63,SUBROUTINEEND:64,VERTEX_WITH_PROPS_START:65,ALPHA:66,COLON:67,PIPE:68,CYLINDERSTART:69,CYLINDEREND:70,DIAMOND_START:71,DIAMOND_STOP:72,TAGEND:73,TRAPSTART:74,TRAPEND:75,INVTRAPSTART:76,INVTRAPEND:77,linkStatement:78,arrowText:79,TESTSTR:80,START_LINK:81,LINK:82,textToken:83,STR:84,keywords:85,STYLE:86,LINKSTYLE:87,CLASSDEF:88,CLASS:89,CLICK:90,DOWN:91,UP:92,textNoTags:93,textNoTagsToken:94,DEFAULT:95,stylesOpt:96,alphaNum:97,CALLBACKNAME:98,CALLBACKARGS:99,HREF:100,LINK_TARGET:101,HEX:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,MINUS:109,UNIT:110,BRKT:111,DOT:112,PCT:113,TAGSTART:114,alphaNumToken:115,idStringToken:116,alphaNumStatement:117,direction_tb:118,direction_bt:119,direction_rl:120,direction_lr:121,PUNCTUATION:122,UNICODE_TEXT:123,PLUS:124,EQUALS:125,MULT:126,UNDERSCORE:127,graphCodeTokens:128,ARROW_CROSS:129,ARROW_POINT:130,ARROW_CIRCLE:131,ARROW_OPEN:132,QUOTE:133,$accept:0,$end:1},terminals_:{2:"error",10:":",12:"open_directive",13:"type_directive",14:"arg_directive",15:"close_directive",20:"SEMI",21:"NEWLINE",22:"SPACE",23:"EOF",24:"GRAPH",25:"NODIR",26:"DIR",38:"subgraph",40:"SQS",41:"SQE",42:"end",44:"acc_title",45:"acc_title_value",46:"acc_descr",47:"acc_descr_value",48:"acc_descr_multiline_value",52:"AMP",53:"STYLE_SEPARATOR",55:"DOUBLECIRCLESTART",56:"DOUBLECIRCLEEND",57:"PS",58:"PE",59:"(-",60:"-)",61:"STADIUMSTART",62:"STADIUMEND",63:"SUBROUTINESTART",64:"SUBROUTINEEND",65:"VERTEX_WITH_PROPS_START",66:"ALPHA",67:"COLON",68:"PIPE",69:"CYLINDERSTART",70:"CYLINDEREND",71:"DIAMOND_START",72:"DIAMOND_STOP",73:"TAGEND",74:"TRAPSTART",75:"TRAPEND",76:"INVTRAPSTART",77:"INVTRAPEND",80:"TESTSTR",81:"START_LINK",82:"LINK",84:"STR",86:"STYLE",87:"LINKSTYLE",88:"CLASSDEF",89:"CLASS",90:"CLICK",91:"DOWN",92:"UP",95:"DEFAULT",98:"CALLBACKNAME",99:"CALLBACKARGS",100:"HREF",101:"LINK_TARGET",102:"HEX",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"MINUS",110:"UNIT",111:"BRKT",112:"DOT",113:"PCT",114:"TAGSTART",118:"direction_tb",119:"direction_bt",120:"direction_rl",121:"direction_lr",122:"PUNCTUATION",123:"UNICODE_TEXT",124:"PLUS",125:"EQUALS",126:"MULT",127:"UNDERSCORE",129:"ARROW_CROSS",130:"ARROW_POINT",131:"ARROW_CIRCLE",132:"ARROW_OPEN",133:"QUOTE"},productions_:[0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[19,2],[19,2],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[50,1],[50,5],[50,3],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,8],[51,4],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,4],[51,4],[51,1],[49,2],[49,3],[49,3],[49,1],[49,3],[78,1],[79,3],[39,1],[39,2],[39,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[93,1],[93,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[103,1],[103,3],[96,1],[96,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[94,1],[94,1],[94,1],[94,1],[54,1],[54,2],[97,1],[97,2],[117,1],[117,1],[117,1],[117,1],[43,1],[43,1],[43,1],[43,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 5:r.parseDirective("%%{","open_directive");break;case 6:r.parseDirective(a[o],"type_directive");break;case 7:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 8:r.parseDirective("}%%","close_directive","flowchart");break;case 10:case 36:case 37:case 38:case 39:case 40:this.$=[];break;case 11:(!Array.isArray(a[o])||a[o].length>0)&&a[o-1].push(a[o]),this.$=a[o-1];break;case 12:case 82:case 84:case 96:case 152:case 154:case 155:case 78:case 150:this.$=a[o];break;case 19:r.setDirection("TB"),this.$="TB";break;case 20:r.setDirection(a[o-1]),this.$=a[o-1];break;case 35:this.$=a[o-1].nodes;break;case 41:this.$=r.addSubGraph(a[o-6],a[o-1],a[o-4]);break;case 42:this.$=r.addSubGraph(a[o-3],a[o-1],a[o-3]);break;case 43:this.$=r.addSubGraph(void 0,a[o-1],void 0);break;case 45:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 46:case 47:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 51:r.addLink(a[o-2].stmt,a[o],a[o-1]),this.$={stmt:a[o],nodes:a[o].concat(a[o-2].nodes)};break;case 52:r.addLink(a[o-3].stmt,a[o-1],a[o-2]),this.$={stmt:a[o-1],nodes:a[o-1].concat(a[o-3].nodes)};break;case 53:this.$={stmt:a[o-1],nodes:a[o-1]};break;case 54:this.$={stmt:a[o],nodes:a[o]};break;case 55:case 123:case 125:this.$=[a[o]];break;case 56:this.$=a[o-4].concat(a[o]);break;case 57:this.$=[a[o-2]],r.setClass(a[o-2],a[o]);break;case 58:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"square");break;case 59:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"doublecircle");break;case 60:this.$=a[o-5],r.addVertex(a[o-5],a[o-2],"circle");break;case 61:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"ellipse");break;case 62:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"stadium");break;case 63:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"subroutine");break;case 64:this.$=a[o-7],r.addVertex(a[o-7],a[o-1],"rect",void 0,void 0,void 0,Object.fromEntries([[a[o-5],a[o-3]]]));break;case 65:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"cylinder");break;case 66:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"round");break;case 67:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"diamond");break;case 68:this.$=a[o-5],r.addVertex(a[o-5],a[o-2],"hexagon");break;case 69:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"odd");break;case 70:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"trapezoid");break;case 71:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"inv_trapezoid");break;case 72:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"lean_right");break;case 73:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"lean_left");break;case 74:this.$=a[o],r.addVertex(a[o]);break;case 75:a[o-1].text=a[o],this.$=a[o-1];break;case 76:case 77:a[o-2].text=a[o-1],this.$=a[o-2];break;case 79:var l=r.destructLink(a[o],a[o-2]);this.$={type:l.type,stroke:l.stroke,length:l.length,text:a[o-1]};break;case 80:l=r.destructLink(a[o]);this.$={type:l.type,stroke:l.stroke,length:l.length};break;case 81:this.$=a[o-1];break;case 83:case 97:case 153:case 151:this.$=a[o-1]+""+a[o];break;case 98:case 99:this.$=a[o-4],r.addClass(a[o-2],a[o]);break;case 100:this.$=a[o-4],r.setClass(a[o-2],a[o]);break;case 101:case 109:this.$=a[o-1],r.setClickEvent(a[o-1],a[o]);break;case 102:case 110:this.$=a[o-3],r.setClickEvent(a[o-3],a[o-2]),r.setTooltip(a[o-3],a[o]);break;case 103:this.$=a[o-2],r.setClickEvent(a[o-2],a[o-1],a[o]);break;case 104:this.$=a[o-4],r.setClickEvent(a[o-4],a[o-3],a[o-2]),r.setTooltip(a[o-4],a[o]);break;case 105:case 111:this.$=a[o-1],r.setLink(a[o-1],a[o]);break;case 106:case 112:this.$=a[o-3],r.setLink(a[o-3],a[o-2]),r.setTooltip(a[o-3],a[o]);break;case 107:case 113:this.$=a[o-3],r.setLink(a[o-3],a[o-2],a[o]);break;case 108:case 114:this.$=a[o-5],r.setLink(a[o-5],a[o-4],a[o]),r.setTooltip(a[o-5],a[o-2]);break;case 115:this.$=a[o-4],r.addVertex(a[o-2],void 0,void 0,a[o]);break;case 116:case 118:this.$=a[o-4],r.updateLink(a[o-2],a[o]);break;case 117:this.$=a[o-4],r.updateLink([a[o-2]],a[o]);break;case 119:this.$=a[o-8],r.updateLinkInterpolate([a[o-6]],a[o-2]),r.updateLink([a[o-6]],a[o]);break;case 120:this.$=a[o-8],r.updateLinkInterpolate(a[o-6],a[o-2]),r.updateLink(a[o-6],a[o]);break;case 121:this.$=a[o-6],r.updateLinkInterpolate([a[o-4]],a[o]);break;case 122:this.$=a[o-6],r.updateLinkInterpolate(a[o-4],a[o]);break;case 124:case 126:a[o-2].push(a[o]),this.$=a[o-2];break;case 128:this.$=a[o-1]+a[o];break;case 156:this.$="v";break;case 157:this.$="-";break;case 158:this.$={stmt:"dir",value:"TB"};break;case 159:this.$={stmt:"dir",value:"BT"};break;case 160:this.$={stmt:"dir",value:"RL"};break;case 161:this.$={stmt:"dir",value:"LR"}}},table:[{3:1,4:2,5:3,6:5,12:n,16:4,21:r,22:i,24:a},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:n,16:4,21:r,22:i,24:a},e(s,o,{17:11}),{7:12,13:[1,13]},{16:14,21:r,22:i,24:a},{16:15,21:r,22:i,24:a},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:l,21:c,22:u,23:h,32:24,33:25,34:26,35:27,36:28,37:29,38:d,43:31,44:p,46:f,48:m,50:35,51:45,52:g,54:46,66:y,67:b,86:x,87:v,88:_,89:k,90:T,91:w,95:S,105:E,106:C,109:D,111:A,112:O,116:47,118:I,119:L,120:N,121:M,122:F,123:B,124:R,125:$,126:Z,127:j},{8:64,10:[1,65],15:P},e([10,15],[2,6]),e(s,[2,17]),e(s,[2,18]),e(s,[2,19]),{20:[1,68],21:[1,69],22:z,27:67,30:70},e(Y,[2,11]),e(Y,[2,12]),e(Y,[2,13]),e(Y,[2,14]),e(Y,[2,15]),e(Y,[2,16]),{9:72,20:U,21:W,23:H,49:73,78:77,81:[1,78],82:[1,79]},{9:80,20:U,21:W,23:H},{9:81,20:U,21:W,23:H},{9:82,20:U,21:W,23:H},{9:83,20:U,21:W,23:H},{9:84,20:U,21:W,23:H},{9:86,20:U,21:W,22:[1,85],23:H},e(Y,[2,44]),{45:[1,87]},{47:[1,88]},e(Y,[2,47]),e(q,[2,54],{30:89,22:z}),{22:[1,90]},{22:[1,91]},{22:[1,92]},{22:[1,93]},{26:V,52:G,66:X,67:K,84:[1,97],91:Q,97:96,98:[1,94],100:[1,95],105:J,106:tt,109:et,111:nt,112:rt,115:100,117:98,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(Y,[2,158]),e(Y,[2,159]),e(Y,[2,160]),e(Y,[2,161]),e(ut,[2,55],{53:[1,116]}),e(ht,[2,74],{116:129,40:[1,117],52:g,55:[1,118],57:[1,119],59:[1,120],61:[1,121],63:[1,122],65:[1,123],66:y,67:b,69:[1,124],71:[1,125],73:[1,126],74:[1,127],76:[1,128],91:w,95:S,105:E,106:C,109:D,111:A,112:O,122:F,123:B,124:R,125:$,126:Z,127:j}),e(dt,[2,150]),e(dt,[2,175]),e(dt,[2,176]),e(dt,[2,177]),e(dt,[2,178]),e(dt,[2,179]),e(dt,[2,180]),e(dt,[2,181]),e(dt,[2,182]),e(dt,[2,183]),e(dt,[2,184]),e(dt,[2,185]),e(dt,[2,186]),e(dt,[2,187]),e(dt,[2,188]),e(dt,[2,189]),e(dt,[2,190]),{9:130,20:U,21:W,23:H},{11:131,14:[1,132]},e(pt,[2,8]),e(s,[2,20]),e(s,[2,26]),e(s,[2,27]),{21:[1,133]},e(ft,[2,34],{30:134,22:z}),e(Y,[2,35]),{50:135,51:45,52:g,54:46,66:y,67:b,91:w,95:S,105:E,106:C,109:D,111:A,112:O,116:47,122:F,123:B,124:R,125:$,126:Z,127:j},e(mt,[2,48]),e(mt,[2,49]),e(mt,[2,50]),e(gt,[2,78],{79:136,68:[1,138],80:[1,137]}),{22:yt,24:bt,26:xt,38:vt,39:139,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e([52,66,67,68,80,91,95,105,106,109,111,112,122,123,124,125,126,127],[2,80]),e(Y,[2,36]),e(Y,[2,37]),e(Y,[2,38]),e(Y,[2,39]),e(Y,[2,40]),{22:yt,24:bt,26:xt,38:vt,39:163,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(Bt,o,{17:164}),e(Y,[2,45]),e(Y,[2,46]),e(q,[2,53],{52:Rt}),{26:V,52:G,66:X,67:K,91:Q,97:166,102:[1,167],105:J,106:tt,109:et,111:nt,112:rt,115:100,117:98,122:it,123:at,124:st,125:ot,126:lt,127:ct},{95:[1,168],103:169,105:[1,170]},{26:V,52:G,66:X,67:K,91:Q,95:[1,171],97:172,105:J,106:tt,109:et,111:nt,112:rt,115:100,117:98,122:it,123:at,124:st,125:ot,126:lt,127:ct},{26:V,52:G,66:X,67:K,91:Q,97:173,105:J,106:tt,109:et,111:nt,112:rt,115:100,117:98,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(pt,[2,101],{22:[1,174],99:[1,175]}),e(pt,[2,105],{22:[1,176]}),e(pt,[2,109],{115:100,117:178,22:[1,177],26:V,52:G,66:X,67:K,91:Q,105:J,106:tt,109:et,111:nt,112:rt,122:it,123:at,124:st,125:ot,126:lt,127:ct}),e(pt,[2,111],{22:[1,179]}),e($t,[2,152]),e($t,[2,154]),e($t,[2,155]),e($t,[2,156]),e($t,[2,157]),e(Zt,[2,162]),e(Zt,[2,163]),e(Zt,[2,164]),e(Zt,[2,165]),e(Zt,[2,166]),e(Zt,[2,167]),e(Zt,[2,168]),e(Zt,[2,169]),e(Zt,[2,170]),e(Zt,[2,171]),e(Zt,[2,172]),e(Zt,[2,173]),e(Zt,[2,174]),{52:g,54:180,66:y,67:b,91:w,95:S,105:E,106:C,109:D,111:A,112:O,116:47,122:F,123:B,124:R,125:$,126:Z,127:j},{22:yt,24:bt,26:xt,38:vt,39:181,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:182,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:184,42:_t,52:G,57:[1,183],66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:185,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:186,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:187,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{66:[1,188]},{22:yt,24:bt,26:xt,38:vt,39:189,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:190,42:_t,52:G,66:X,67:K,71:[1,191],73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:192,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:193,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:194,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(dt,[2,151]),e(jt,[2,3]),{8:195,15:P},{15:[2,7]},e(s,[2,28]),e(ft,[2,33]),e(q,[2,51],{30:196,22:z}),e(gt,[2,75],{22:[1,197]}),{22:[1,198]},{22:yt,24:bt,26:xt,38:vt,39:199,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,66:X,67:K,73:kt,81:Tt,82:[1,200],83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(Zt,[2,82]),e(Zt,[2,84]),e(Zt,[2,140]),e(Zt,[2,141]),e(Zt,[2,142]),e(Zt,[2,143]),e(Zt,[2,144]),e(Zt,[2,145]),e(Zt,[2,146]),e(Zt,[2,147]),e(Zt,[2,148]),e(Zt,[2,149]),e(Zt,[2,85]),e(Zt,[2,86]),e(Zt,[2,87]),e(Zt,[2,88]),e(Zt,[2,89]),e(Zt,[2,90]),e(Zt,[2,91]),e(Zt,[2,92]),e(Zt,[2,93]),e(Zt,[2,94]),e(Zt,[2,95]),{9:203,20:U,21:W,22:yt,23:H,24:bt,26:xt,38:vt,40:[1,202],42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{18:18,19:19,20:l,21:c,22:u,23:h,32:24,33:25,34:26,35:27,36:28,37:29,38:d,42:[1,204],43:31,44:p,46:f,48:m,50:35,51:45,52:g,54:46,66:y,67:b,86:x,87:v,88:_,89:k,90:T,91:w,95:S,105:E,106:C,109:D,111:A,112:O,116:47,118:I,119:L,120:N,121:M,122:F,123:B,124:R,125:$,126:Z,127:j},{22:z,30:205},{22:[1,206],26:V,52:G,66:X,67:K,91:Q,105:J,106:tt,109:et,111:nt,112:rt,115:100,117:178,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:[1,207]},{22:[1,208]},{22:[1,209],106:[1,210]},e(Pt,[2,123]),{22:[1,211]},{22:[1,212],26:V,52:G,66:X,67:K,91:Q,105:J,106:tt,109:et,111:nt,112:rt,115:100,117:178,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:[1,213],26:V,52:G,66:X,67:K,91:Q,105:J,106:tt,109:et,111:nt,112:rt,115:100,117:178,122:it,123:at,124:st,125:ot,126:lt,127:ct},{84:[1,214]},e(pt,[2,103],{22:[1,215]}),{84:[1,216],101:[1,217]},{84:[1,218]},e($t,[2,153]),{84:[1,219],101:[1,220]},e(ut,[2,57],{116:129,52:g,66:y,67:b,91:w,95:S,105:E,106:C,109:D,111:A,112:O,122:F,123:B,124:R,125:$,126:Z,127:j}),{22:yt,24:bt,26:xt,38:vt,41:[1,221],42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,56:[1,222],66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:223,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,58:[1,224],66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,60:[1,225],66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,62:[1,226],66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,64:[1,227],66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{67:[1,228]},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,66:X,67:K,70:[1,229],73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,66:X,67:K,72:[1,230],73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:231,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,41:[1,232],42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,66:X,67:K,73:kt,75:[1,233],77:[1,234],81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,66:X,67:K,73:kt,75:[1,236],77:[1,235],81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{9:237,20:U,21:W,23:H},e(q,[2,52],{52:Rt}),e(gt,[2,77]),e(gt,[2,76]),{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,66:X,67:K,68:[1,238],73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(gt,[2,79]),e(Zt,[2,83]),{22:yt,24:bt,26:xt,38:vt,39:239,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(Bt,o,{17:240}),e(Y,[2,43]),{51:241,52:g,54:46,66:y,67:b,91:w,95:S,105:E,106:C,109:D,111:A,112:O,116:47,122:F,123:B,124:R,125:$,126:Z,127:j},{22:zt,66:Yt,67:Ut,86:Wt,96:242,102:Ht,105:qt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},{22:zt,66:Yt,67:Ut,86:Wt,96:256,102:Ht,105:qt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},{22:zt,66:Yt,67:Ut,86:Wt,96:257,102:Ht,104:[1,258],105:qt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},{22:zt,66:Yt,67:Ut,86:Wt,96:259,102:Ht,104:[1,260],105:qt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},{105:[1,261]},{22:zt,66:Yt,67:Ut,86:Wt,96:262,102:Ht,105:qt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},{22:zt,66:Yt,67:Ut,86:Wt,96:263,102:Ht,105:qt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},{26:V,52:G,66:X,67:K,91:Q,97:264,105:J,106:tt,109:et,111:nt,112:rt,115:100,117:98,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(pt,[2,102]),{84:[1,265]},e(pt,[2,106],{22:[1,266]}),e(pt,[2,107]),e(pt,[2,110]),e(pt,[2,112],{22:[1,267]}),e(pt,[2,113]),e(ht,[2,58]),e(ht,[2,59]),{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,58:[1,268],66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(ht,[2,66]),e(ht,[2,61]),e(ht,[2,62]),e(ht,[2,63]),{66:[1,269]},e(ht,[2,65]),e(ht,[2,67]),{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,66:X,67:K,72:[1,270],73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(ht,[2,69]),e(ht,[2,70]),e(ht,[2,72]),e(ht,[2,71]),e(ht,[2,73]),e(jt,[2,4]),e([22,52,66,67,91,95,105,106,109,111,112,122,123,124,125,126,127],[2,81]),{22:yt,24:bt,26:xt,38:vt,41:[1,271],42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{18:18,19:19,20:l,21:c,22:u,23:h,32:24,33:25,34:26,35:27,36:28,37:29,38:d,42:[1,272],43:31,44:p,46:f,48:m,50:35,51:45,52:g,54:46,66:y,67:b,86:x,87:v,88:_,89:k,90:T,91:w,95:S,105:E,106:C,109:D,111:A,112:O,116:47,118:I,119:L,120:N,121:M,122:F,123:B,124:R,125:$,126:Z,127:j},e(ut,[2,56]),e(pt,[2,115],{106:Jt}),e(te,[2,125],{108:274,22:zt,66:Yt,67:Ut,86:Wt,102:Ht,105:qt,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt}),e(ee,[2,127]),e(ee,[2,129]),e(ee,[2,130]),e(ee,[2,131]),e(ee,[2,132]),e(ee,[2,133]),e(ee,[2,134]),e(ee,[2,135]),e(ee,[2,136]),e(ee,[2,137]),e(ee,[2,138]),e(ee,[2,139]),e(pt,[2,116],{106:Jt}),e(pt,[2,117],{106:Jt}),{22:[1,275]},e(pt,[2,118],{106:Jt}),{22:[1,276]},e(Pt,[2,124]),e(pt,[2,98],{106:Jt}),e(pt,[2,99],{106:Jt}),e(pt,[2,100],{115:100,117:178,26:V,52:G,66:X,67:K,91:Q,105:J,106:tt,109:et,111:nt,112:rt,122:it,123:at,124:st,125:ot,126:lt,127:ct}),e(pt,[2,104]),{101:[1,277]},{101:[1,278]},{58:[1,279]},{68:[1,280]},{72:[1,281]},{9:282,20:U,21:W,23:H},e(Y,[2,42]),{22:zt,66:Yt,67:Ut,86:Wt,102:Ht,105:qt,107:283,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},e(ee,[2,128]),{26:V,52:G,66:X,67:K,91:Q,97:284,105:J,106:tt,109:et,111:nt,112:rt,115:100,117:98,122:it,123:at,124:st,125:ot,126:lt,127:ct},{26:V,52:G,66:X,67:K,91:Q,97:285,105:J,106:tt,109:et,111:nt,112:rt,115:100,117:98,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(pt,[2,108]),e(pt,[2,114]),e(ht,[2,60]),{22:yt,24:bt,26:xt,38:vt,39:286,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(ht,[2,68]),e(Bt,o,{17:287}),e(te,[2,126],{108:274,22:zt,66:Yt,67:Ut,86:Wt,102:Ht,105:qt,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt}),e(pt,[2,121],{115:100,117:178,22:[1,288],26:V,52:G,66:X,67:K,91:Q,105:J,106:tt,109:et,111:nt,112:rt,122:it,123:at,124:st,125:ot,126:lt,127:ct}),e(pt,[2,122],{115:100,117:178,22:[1,289],26:V,52:G,66:X,67:K,91:Q,105:J,106:tt,109:et,111:nt,112:rt,122:it,123:at,124:st,125:ot,126:lt,127:ct}),{22:yt,24:bt,26:xt,38:vt,41:[1,290],42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{18:18,19:19,20:l,21:c,22:u,23:h,32:24,33:25,34:26,35:27,36:28,37:29,38:d,42:[1,291],43:31,44:p,46:f,48:m,50:35,51:45,52:g,54:46,66:y,67:b,86:x,87:v,88:_,89:k,90:T,91:w,95:S,105:E,106:C,109:D,111:A,112:O,116:47,118:I,119:L,120:N,121:M,122:F,123:B,124:R,125:$,126:Z,127:j},{22:zt,66:Yt,67:Ut,86:Wt,96:292,102:Ht,105:qt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},{22:zt,66:Yt,67:Ut,86:Wt,96:293,102:Ht,105:qt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},e(ht,[2,64]),e(Y,[2,41]),e(pt,[2,119],{106:Jt}),e(pt,[2,120],{106:Jt})],defaultActions:{2:[2,1],9:[2,5],10:[2,2],132:[2,7]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},re=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),12;case 1:return this.begin("type_directive"),13;case 2:return this.popState(),this.begin("arg_directive"),10;case 3:return this.popState(),this.popState(),15;case 4:return 14;case 5:case 6:break;case 7:return this.begin("acc_title"),44;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),46;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:case 15:case 24:case 27:case 30:case 33:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:this.begin("string");break;case 16:return"STR";case 17:return 86;case 18:return 95;case 19:return 87;case 20:return 104;case 21:return 88;case 22:return 89;case 23:this.begin("href");break;case 25:return 100;case 26:this.begin("callbackname");break;case 28:this.popState(),this.begin("callbackargs");break;case 29:return 98;case 31:return 99;case 32:this.begin("click");break;case 34:return 90;case 35:case 36:case 37:return t.lex.firstGraph()&&this.begin("dir"),24;case 38:return 38;case 39:return 42;case 40:case 41:case 42:case 43:return 101;case 44:return this.popState(),25;case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:return this.popState(),26;case 55:return 118;case 56:return 119;case 57:return 120;case 58:return 121;case 59:return 105;case 60:return 111;case 61:return 53;case 62:return 67;case 63:return 52;case 64:return 20;case 65:return 106;case 66:return 126;case 67:case 68:case 69:return 82;case 70:case 71:case 72:return 81;case 73:return 59;case 74:return 60;case 75:return 61;case 76:return 62;case 77:return 63;case 78:return 64;case 79:return 65;case 80:return 69;case 81:return 70;case 82:return 55;case 83:return 56;case 84:return 109;case 85:return 112;case 86:return 127;case 87:return 124;case 88:return 113;case 89:case 90:return 125;case 91:return 114;case 92:return 73;case 93:return 92;case 94:return"SEP";case 95:return 91;case 96:return 66;case 97:return 75;case 98:return 74;case 99:return 77;case 100:return 76;case 101:return 122;case 102:return 123;case 103:return 68;case 104:return 57;case 105:return 58;case 106:return 40;case 107:return 41;case 108:return 71;case 109:return 72;case 110:return 133;case 111:return 21;case 112:return 22;case 113:return 23}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)[^\n]*)/,/^(?:[^\}]%%[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\])/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[30,31],inclusive:!1},callbackname:{rules:[27,28,29],inclusive:!1},href:{rules:[24,25],inclusive:!1},click:{rules:[33,34],inclusive:!1},vertex:{rules:[],inclusive:!1},dir:{rules:[44,45,46,47,48,49,50,51,52,53,54],inclusive:!1},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},string:{rules:[15,16],inclusive:!1},INITIAL:{rules:[0,5,6,7,9,11,14,17,18,19,20,21,22,23,26,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113],inclusive:!0}}},t);function ie(){this.yy={}}return ne.lexer=re,ie.prototype=ne,ne.Parser=ie,new ie}();wo.parser=wo;const So=wo,Eo=(t,e)=>{var n,r;return"dagre-wrapper"!==(null==(n=null==e?void 0:e.flowchart)?void 0:n.defaultRenderer)&&("elk"!==(null==(r=null==e?void 0:e.flowchart)?void 0:r.defaultRenderer)&&null!==t.match(/^\s*graph/))},Co=(t,e)=>{var n,r;return"dagre-d3"!==(null==(n=null==e?void 0:e.flowchart)?void 0:n.defaultRenderer)&&("elk"!==(null==(r=null==e?void 0:e.flowchart)?void 0:r.defaultRenderer)&&(null!==t.match(/^\s*graph/)||null!==t.match(/^\s*flowchart/)))};let Do,Ao,Oo=0,Io=dr(),Lo={},No=[],Mo={},Fo=[],Bo={},Ro={},$o=0,Zo=!0,jo=[];const Po=t=>zt.sanitizeText(t,Io),zo=function(t,e,n){yp.parseDirective(this,t,e,n)},Yo=function(t){const e=Object.keys(Lo);for(const n of e)if(Lo[n].id===t)return Lo[n].domId;return t},Uo=function(t,e,n,r,i,a,s={}){let o,l=t;void 0!==l&&0!==l.trim().length&&(void 0===Lo[l]&&(Lo[l]={id:l,domId:"flowchart-"+l+"-"+Oo,styles:[],classes:[]}),Oo++,void 0!==e?(Io=dr(),o=Po(e.trim()),'"'===o[0]&&'"'===o[o.length-1]&&(o=o.substring(1,o.length-1)),Lo[l].text=o):void 0===Lo[l].text&&(Lo[l].text=t),void 0!==n&&(Lo[l].type=n),null!=r&&r.forEach((function(t){Lo[l].styles.push(t)})),null!=i&&i.forEach((function(t){Lo[l].classes.push(t)})),void 0!==a&&(Lo[l].dir=a),void 0===Lo[l].props?Lo[l].props=s:void 0!==s&&Object.assign(Lo[l].props,s))},Wo=function(t,e,n,r){const i={start:t,end:e,type:void 0,text:""};void 0!==(r=n.text)&&(i.text=Po(r.trim()),'"'===i.text[0]&&'"'===i.text[i.text.length-1]&&(i.text=i.text.substring(1,i.text.length-1))),void 0!==n&&(i.type=n.type,i.stroke=n.stroke,i.length=n.length),No.push(i)},Ho=function(t,e,n,r){let i,a;for(i=0;i<t.length;i++)for(a=0;a<e.length;a++)Wo(t[i],e[a],n,r)},qo=function(t,e){t.forEach((function(t){"default"===t?No.defaultInterpolate=e:No[t].interpolate=e}))},Vo=function(t,e){t.forEach((function(t){"default"===t?No.defaultStyle=e:(-1===nr.isSubstringInArray("fill",e)&&e.push("fill:none"),No[t].style=e)}))},Go=function(t,e){void 0===Mo[t]&&(Mo[t]={id:t,styles:[],textStyles:[]}),null!=e&&e.forEach((function(e){if(e.match("color")){const n=e.replace("fill","bgFill").replace("color","fill");Mo[t].textStyles.push(n)}Mo[t].styles.push(e)}))},Xo=function(t){Do=t,Do.match(/.*</)&&(Do="RL"),Do.match(/.*\^/)&&(Do="BT"),Do.match(/.*>/)&&(Do="LR"),Do.match(/.*v/)&&(Do="TB"),"TD"===Do&&(Do="TB")},Ko=function(t,e){t.split(",").forEach((function(t){let n=t;void 0!==Lo[n]&&Lo[n].classes.push(e),void 0!==Bo[n]&&Bo[n].classes.push(e)}))},Qo=function(t,e,n){t.split(",").forEach((function(t){void 0!==Lo[t]&&(Lo[t].link=nr.formatUrl(e,Io),Lo[t].linkTarget=n)})),Ko(t,"clickable")},Jo=function(t){return Ro[t]},tl=function(t,e,n){t.split(",").forEach((function(t){!function(t,e,n){let r=Yo(t);if("loose"!==dr().securityLevel)return;if(void 0===e)return;let i=[];if("string"==typeof n){i=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t<i.length;t++){let e=i[t].trim();'"'===e.charAt(0)&&'"'===e.charAt(e.length-1)&&(e=e.substr(1,e.length-2)),i[t]=e}}0===i.length&&i.push(t),void 0!==Lo[t]&&(Lo[t].haveCallback=!0,jo.push((function(){const t=document.querySelector(`[id="${r}"]`);null!==t&&t.addEventListener("click",(function(){nr.runFunc(e,...i)}),!1)})))}(t,e,n)})),Ko(t,"clickable")},el=function(t){jo.forEach((function(e){e(t)}))},nl=function(){return Do.trim()},rl=function(){return Lo},il=function(){return No},al=function(){return Mo},sl=function(t){let e=(0,o.Ys)(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=(0,o.Ys)("body").append("div").attr("class","mermaidTooltip").style("opacity",0));(0,o.Ys)(t).select("svg").selectAll("g.node").on("mouseover",(function(){const t=(0,o.Ys)(this);if(null===t.attr("title"))return;const n=this.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.text(t.attr("title")).style("left",window.scrollX+n.left+(n.right-n.left)/2+"px").style("top",window.scrollY+n.top-14+document.body.scrollTop+"px"),e.html(e.html().replace(/<br\/>/g,"<br/>")),t.classed("hover",!0)})).on("mouseout",(function(){e.transition().duration(500).style("opacity",0);(0,o.Ys)(this).classed("hover",!1)}))};jo.push(sl);const ol=function(t="gen-1"){Lo={},Mo={},No=[],jo=[sl],Fo=[],Bo={},$o=0,Ro=[],Zo=!0,Ao=t,Zr()},ll=t=>{Ao=t||"gen-2"},cl=function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},ul=function(t,e,n){let r=t.trim(),i=n;t===n&&n.match(/\s/)&&(r=void 0);let a=[];const{nodeList:s,dir:o}=function(t){const e={boolean:{},number:{},string:{}},n=[];let r;return{nodeList:t.filter((function(t){const i=typeof t;return t.stmt&&"dir"===t.stmt?(r=t.value,!1):""!==t.trim()&&(i in e?!e[i].hasOwnProperty(t)&&(e[i][t]=!0):!n.includes(t)&&n.push(t))})),dir:r}}(a.concat.apply(a,e));if(a=s,"gen-1"===Ao)for(let c=0;c<a.length;c++)a[c]=Yo(a[c]);r=r||"subGraph"+$o,i=i||"",i=Po(i),$o+=1;const l={id:r,nodes:a,title:i.trim(),classes:[],dir:o};return It.info("Adding",l.id,l.nodes,l.dir),l.nodes=_l(l,Fo).nodes,Fo.push(l),Bo[r]=l,r},hl=function(t){for(const[e,n]of Fo.entries())if(n.id===t)return e;return-1};let dl=-1;const pl=[],fl=function(t,e){const n=Fo[e].nodes;if(dl+=1,dl>2e3)return;if(pl[dl]=e,Fo[e].id===t)return{result:!0,count:0};let r=0,i=1;for(;r<n.length;){const e=hl(n[r]);if(e>=0){const n=fl(t,e);if(n.result)return{result:!0,count:i+n.count};i+=n.count}r+=1}return{result:!1,count:i}},ml=function(t){return pl[t]},gl=function(){dl=-1,Fo.length>0&&fl("none",Fo.length-1)},yl=function(){return Fo},bl=()=>!!Zo&&(Zo=!1,!0),xl=(t,e)=>{const n=(t=>{const e=t.trim();let n=e.slice(0,-1),r="arrow_open";switch(e.slice(-1)){case"x":r="arrow_cross","x"===e[0]&&(r="double_"+r,n=n.slice(1));break;case">":r="arrow_point","<"===e[0]&&(r="double_"+r,n=n.slice(1));break;case"o":r="arrow_circle","o"===e[0]&&(r="double_"+r,n=n.slice(1))}let i="normal",a=n.length-1;"="===n[0]&&(i="thick");let s=((t,e)=>{const n=e.length;let r=0;for(let i=0;i<n;++i)e[i]===t&&++r;return r})(".",n);return s&&(i="dotted",a=s),{type:r,stroke:i,length:a}})(t);let r;if(e){if(r=(t=>{let e=t.trim(),n="arrow_open";switch(e[0]){case"<":n="arrow_point",e=e.slice(1);break;case"x":n="arrow_cross",e=e.slice(1);break;case"o":n="arrow_circle",e=e.slice(1)}let r="normal";return e.includes("=")&&(r="thick"),e.includes(".")&&(r="dotted"),{type:n,stroke:r}})(e),r.stroke!==n.stroke)return{type:"INVALID",stroke:"INVALID"};if("arrow_open"===r.type)r.type=n.type;else{if(r.type!==n.type)return{type:"INVALID",stroke:"INVALID"};r.type="double_"+r.type}return"double_arrow"===r.type&&(r.type="double_arrow_point"),r.length=n.length,r}return n},vl=(t,e)=>{let n=!1;return t.forEach((t=>{t.nodes.indexOf(e)>=0&&(n=!0)})),n},_l=(t,e)=>{const n=[];return t.nodes.forEach(((r,i)=>{vl(e,r)||n.push(t.nodes[i])})),{nodes:n}},kl={firstGraph:bl},Tl={parseDirective:zo,defaultConfig:()=>ir.flowchart,setAccTitle:jr,getAccTitle:Pr,getAccDescription:Yr,setAccDescription:zr,addVertex:Uo,lookUpDomId:Yo,addLink:Ho,updateLinkInterpolate:qo,updateLink:Vo,addClass:Go,setDirection:Xo,setClass:Ko,setTooltip:function(t,e){t.split(",").forEach((function(t){void 0!==e&&(Ro["gen-1"===Ao?Yo(t):t]=Po(e))}))},getTooltip:Jo,setClickEvent:tl,setLink:Qo,bindFunctions:el,getDirection:nl,getVertices:rl,getEdges:il,getClasses:al,clear:ol,setGen:ll,defaultStyle:cl,addSubGraph:ul,getDepthFirstPos:ml,indexNodes:gl,getSubGraphs:yl,destructLink:xl,lex:kl,exists:vl,makeUniq:_l,setDiagramTitle:Ur,getDiagramTitle:Wr},wl=Object.freeze(Object.defineProperty({__proto__:null,addClass:Go,addLink:Ho,addSingleLink:Wo,addSubGraph:ul,addVertex:Uo,bindFunctions:el,clear:ol,default:Tl,defaultStyle:cl,destructLink:xl,firstGraph:bl,getClasses:al,getDepthFirstPos:ml,getDirection:nl,getEdges:il,getSubGraphs:yl,getTooltip:Jo,getVertices:rl,indexNodes:gl,lex:kl,lookUpDomId:Yo,parseDirective:zo,setClass:Ko,setClickEvent:tl,setDirection:Xo,setGen:ll,setLink:Qo,updateLink:Vo,updateLinkInterpolate:qo},Symbol.toStringTag,{value:"Module"}));const Sl={},El=function(t){const e=Object.keys(t);for(const n of e)Sl[n]=t[n]},Cl={},Dl=function(t,e,n,r,i,a){const s=r.select(`[id="${n}"]`);Object.keys(t).forEach((function(n){const r=t[n];let o="default";r.classes.length>0&&(o=r.classes.join(" "));const l=Pn(r.styles);let c,u=void 0!==r.text?r.text:r.id;if(jt(dr().flowchart.htmlLabels)){const t={label:u.replace(/fa[blrs]?:fa-[\w-]+/g,(t=>`<i class='${t.replace(":"," ")}'></i>`))};c=(0,kt.a)(s,t).node(),c.parentNode.removeChild(c)}else{const t=i.createElementNS("http://www.w3.org/2000/svg","text");t.setAttribute("style",l.labelStyle.replace("color:","fill:"));const e=u.split(zt.lineBreakRegex);for(const n of e){const e=i.createElementNS("http://www.w3.org/2000/svg","tspan");e.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),e.setAttribute("dy","1em"),e.setAttribute("x","1"),e.textContent=n,t.appendChild(e)}c=t}let h=0,d="";switch(r.type){case"round":h=5,d="rect";break;case"square":case"group":default:d="rect";break;case"diamond":d="question";break;case"hexagon":d="hexagon";break;case"odd":case"odd_right":d="rect_left_inv_arrow";break;case"lean_right":d="lean_right";break;case"lean_left":d="lean_left";break;case"trapezoid":d="trapezoid";break;case"inv_trapezoid":d="inv_trapezoid";break;case"circle":d="circle";break;case"ellipse":d="ellipse";break;case"stadium":d="stadium";break;case"subroutine":d="subroutine";break;case"cylinder":d="cylinder";break;case"doublecircle":d="doublecircle"}e.setNode(r.id,{labelStyle:l.labelStyle,shape:d,labelText:u,rx:h,ry:h,class:o,style:l.style,id:r.id,link:r.link,linkTarget:r.linkTarget,tooltip:a.db.getTooltip(r.id)||"",domId:a.db.lookUpDomId(r.id),haveCallback:r.haveCallback,width:"group"===r.type?500:void 0,dir:r.dir,type:r.type,props:r.props,padding:dr().flowchart.padding}),It.info("setNode",{labelStyle:l.labelStyle,shape:d,labelText:u,rx:h,ry:h,class:o,style:l.style,id:r.id,domId:a.db.lookUpDomId(r.id),width:"group"===r.type?500:void 0,type:r.type,dir:r.dir,props:r.props,padding:dr().flowchart.padding})}))},Al=function(t,e,n){It.info("abc78 edges = ",t);let r,i,a=0,s={};if(void 0!==t.defaultStyle){const e=Pn(t.defaultStyle);r=e.style,i=e.labelStyle}t.forEach((function(n){a++;var l="L-"+n.start+"-"+n.end;void 0===s[l]?(s[l]=0,It.info("abc78 new entry",l,s[l])):(s[l]++,It.info("abc78 new entry",l,s[l]));let c=l+"-"+s[l];It.info("abc78 new link id to be used is",l,c,s[l]);var u="LS-"+n.start,h="LE-"+n.end;const d={style:"",labelStyle:""};switch(d.minlen=n.length||1,"arrow_open"===n.type?d.arrowhead="none":d.arrowhead="normal",d.arrowTypeStart="arrow_open",d.arrowTypeEnd="arrow_open",n.type){case"double_arrow_cross":d.arrowTypeStart="arrow_cross";case"arrow_cross":d.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":d.arrowTypeStart="arrow_point";case"arrow_point":d.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":d.arrowTypeStart="arrow_circle";case"arrow_circle":d.arrowTypeEnd="arrow_circle"}let p="",f="";switch(n.stroke){case"normal":p="fill:none;",void 0!==r&&(p=r),void 0!==i&&(f=i),d.thickness="normal",d.pattern="solid";break;case"dotted":d.thickness="normal",d.pattern="dotted",d.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":d.thickness="thick",d.pattern="solid",d.style="stroke-width: 3.5px;fill:none;"}if(void 0!==n.style){const t=Pn(n.style);p=t.style,f=t.labelStyle}d.style=d.style+=p,d.labelStyle=d.labelStyle+=f,void 0!==n.interpolate?d.curve=Zn(n.interpolate,o.c_6):void 0!==t.defaultInterpolate?d.curve=Zn(t.defaultInterpolate,o.c_6):d.curve=Zn(Cl.curve,o.c_6),void 0===n.text?void 0!==n.style&&(d.arrowheadStyle="fill: #333"):(d.arrowheadStyle="fill: #333",d.labelpos="c"),d.labelType="text",d.label=n.text.replace(zt.lineBreakRegex,"\n"),void 0===n.style&&(d.style=d.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),d.labelStyle=d.labelStyle.replace("color:","fill:"),d.id=c,d.classes="flowchart-link "+u+" "+h,e.setEdge(n.start,n.end,d,a)}))},Ol={setConf:function(t){const e=Object.keys(t);for(const n of e)Cl[n]=t[n]},addVertices:Dl,addEdges:Al,getClasses:function(t,e){It.info("Extracting classes"),e.db.clear();try{return e.parse(t),e.db.getClasses()}catch(n){return}},draw:function(t,e,n,r){It.info("Drawing flowchart"),r.db.clear(),Tl.setGen("gen-2"),r.parser.parse(t);let i=r.db.getDirection();void 0===i&&(i="TD");const{securityLevel:a,flowchart:s}=dr(),l=s.nodeSpacing||50,c=s.rankSpacing||50;let u;"sandbox"===a&&(u=(0,o.Ys)("#i"+e));const h="sandbox"===a?(0,o.Ys)(u.nodes()[0].contentDocument.body):(0,o.Ys)("body"),d="sandbox"===a?u.nodes()[0].contentDocument:document,p=new ut.k({multigraph:!0,compound:!0}).setGraph({rankdir:i,nodesep:l,ranksep:c,marginx:0,marginy:0}).setDefaultEdgeLabel((function(){return{}}));let f;const m=r.db.getSubGraphs();It.info("Subgraphs - ",m);for(let o=m.length-1;o>=0;o--)f=m[o],It.info("Subgraph - ",f),r.db.addVertex(f.id,f.title,"group",void 0,f.classes,f.dir);const g=r.db.getVertices(),y=r.db.getEdges();It.info("Edges",y);let b=0;for(b=m.length-1;b>=0;b--){f=m[b],(0,o.td_)("cluster").append("text");for(let t=0;t<f.nodes.length;t++)It.info("Setting up subgraphs",f.nodes[t],f.id),p.setParent(f.nodes[t],f.id)}Dl(g,p,e,h,d,r),Al(y,p);const x=h.select(`[id="${e}"]`),v=h.select("#"+e+" g");if(Js(v,p,["point","circle","cross"],"flowchart",e),nr.insertTitle(x,"flowchartTitleText",s.titleTopMargin,r.db.getDiagramTitle()),vr(p,x,s.diagramPadding,s.useMaxWidth),r.db.indexNodes("subGraph"+b),!s.htmlLabels){const t=d.querySelectorAll('[id="'+e+'"] .edgeLabel .label');for(const e of t){const t=e.getBBox(),n=d.createElementNS("http://www.w3.org/2000/svg","rect");n.setAttribute("rx",0),n.setAttribute("ry",0),n.setAttribute("width",t.width),n.setAttribute("height",t.height),e.insertBefore(n,e.firstChild)}}Object.keys(g).forEach((function(t){const n=g[t];if(n.link){const r=(0,o.Ys)("#"+e+' [id="'+t+'"]');if(r){const t=d.createElementNS("http://www.w3.org/2000/svg","a");t.setAttributeNS("http://www.w3.org/2000/svg","class",n.classes.join(" ")),t.setAttributeNS("http://www.w3.org/2000/svg","href",n.link),t.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),"sandbox"===a?t.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):n.linkTarget&&t.setAttributeNS("http://www.w3.org/2000/svg","target",n.linkTarget);const e=r.insert((function(){return t}),":first-child"),i=r.select(".label-container");i&&e.append((function(){return i.node()}));const s=r.select(".label");s&&e.append((function(){return s.node()}))}}}))}};var Il=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,3],r=[1,5],i=[7,9,11,12,13,14,15,16,17,18,19,20,21,23,25,26,28,35,40],a=[1,15],s=[1,16],o=[1,17],l=[1,18],c=[1,19],u=[1,20],h=[1,21],d=[1,22],p=[1,23],f=[1,24],m=[1,25],g=[1,26],y=[1,27],b=[1,29],x=[1,31],v=[1,34],_=[5,7,9,11,12,13,14,15,16,17,18,19,20,21,23,25,26,28,35,40],k={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,gantt:5,document:6,EOF:7,line:8,SPACE:9,statement:10,NL:11,dateFormat:12,inclusiveEndDates:13,topAxis:14,axisFormat:15,tickInterval:16,excludes:17,includes:18,todayMarker:19,title:20,acc_title:21,acc_title_value:22,acc_descr:23,acc_descr_value:24,acc_descr_multiline_value:25,section:26,clickStatement:27,taskTxt:28,taskData:29,openDirective:30,typeDirective:31,closeDirective:32,":":33,argDirective:34,click:35,callbackname:36,callbackargs:37,href:38,clickStatementDebug:39,open_directive:40,type_directive:41,arg_directive:42,close_directive:43,$accept:0,$end:1},terminals_:{2:"error",5:"gantt",7:"EOF",9:"SPACE",11:"NL",12:"dateFormat",13:"inclusiveEndDates",14:"topAxis",15:"axisFormat",16:"tickInterval",17:"excludes",18:"includes",19:"todayMarker",20:"title",21:"acc_title",22:"acc_title_value",23:"acc_descr",24:"acc_descr_value",25:"acc_descr_multiline_value",26:"section",28:"taskTxt",29:"taskData",33:":",35:"click",36:"callbackname",37:"callbackargs",38:"href",40:"open_directive",41:"type_directive",42:"arg_directive",43:"close_directive"},productions_:[0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[27,2],[27,3],[27,3],[27,4],[27,3],[27,4],[27,2],[39,2],[39,3],[39,3],[39,4],[39,3],[39,4],[39,2],[30,1],[31,1],[34,1],[32,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 2:return a[o-1];case 3:case 7:case 8:this.$=[];break;case 4:a[o-1].push(a[o]),this.$=a[o-1];break;case 5:case 6:this.$=a[o];break;case 9:r.setDateFormat(a[o].substr(11)),this.$=a[o].substr(11);break;case 10:r.enableInclusiveEndDates(),this.$=a[o].substr(18);break;case 11:r.TopAxis(),this.$=a[o].substr(8);break;case 12:r.setAxisFormat(a[o].substr(11)),this.$=a[o].substr(11);break;case 13:r.setTickInterval(a[o].substr(13)),this.$=a[o].substr(13);break;case 14:r.setExcludes(a[o].substr(9)),this.$=a[o].substr(9);break;case 15:r.setIncludes(a[o].substr(9)),this.$=a[o].substr(9);break;case 16:r.setTodayMarker(a[o].substr(12)),this.$=a[o].substr(12);break;case 17:r.setDiagramTitle(a[o].substr(6)),this.$=a[o].substr(6);break;case 18:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 19:case 20:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 21:r.addSection(a[o].substr(8)),this.$=a[o].substr(8);break;case 23:r.addTask(a[o-1],a[o]),this.$="task";break;case 27:this.$=a[o-1],r.setClickEvent(a[o-1],a[o],null);break;case 28:this.$=a[o-2],r.setClickEvent(a[o-2],a[o-1],a[o]);break;case 29:this.$=a[o-2],r.setClickEvent(a[o-2],a[o-1],null),r.setLink(a[o-2],a[o]);break;case 30:this.$=a[o-3],r.setClickEvent(a[o-3],a[o-2],a[o-1]),r.setLink(a[o-3],a[o]);break;case 31:this.$=a[o-2],r.setClickEvent(a[o-2],a[o],null),r.setLink(a[o-2],a[o-1]);break;case 32:this.$=a[o-3],r.setClickEvent(a[o-3],a[o-1],a[o]),r.setLink(a[o-3],a[o-2]);break;case 33:this.$=a[o-1],r.setLink(a[o-1],a[o]);break;case 34:case 40:this.$=a[o-1]+" "+a[o];break;case 35:case 36:case 38:this.$=a[o-2]+" "+a[o-1]+" "+a[o];break;case 37:case 39:this.$=a[o-3]+" "+a[o-2]+" "+a[o-1]+" "+a[o];break;case 41:r.parseDirective("%%{","open_directive");break;case 42:r.parseDirective(a[o],"type_directive");break;case 43:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 44:r.parseDirective("}%%","close_directive","gantt")}},table:[{3:1,4:2,5:n,30:4,40:r},{1:[3]},{3:6,4:2,5:n,30:4,40:r},e(i,[2,3],{6:7}),{31:8,41:[1,9]},{41:[2,41]},{1:[2,1]},{4:30,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:a,13:s,14:o,15:l,16:c,17:u,18:h,19:d,20:p,21:f,23:m,25:g,26:y,27:28,28:b,30:4,35:x,40:r},{32:32,33:[1,33],43:v},e([33,43],[2,42]),e(i,[2,8],{1:[2,2]}),e(i,[2,4]),{4:30,10:35,12:a,13:s,14:o,15:l,16:c,17:u,18:h,19:d,20:p,21:f,23:m,25:g,26:y,27:28,28:b,30:4,35:x,40:r},e(i,[2,6]),e(i,[2,7]),e(i,[2,9]),e(i,[2,10]),e(i,[2,11]),e(i,[2,12]),e(i,[2,13]),e(i,[2,14]),e(i,[2,15]),e(i,[2,16]),e(i,[2,17]),{22:[1,36]},{24:[1,37]},e(i,[2,20]),e(i,[2,21]),e(i,[2,22]),{29:[1,38]},e(i,[2,24]),{36:[1,39],38:[1,40]},{11:[1,41]},{34:42,42:[1,43]},{11:[2,44]},e(i,[2,5]),e(i,[2,18]),e(i,[2,19]),e(i,[2,23]),e(i,[2,27],{37:[1,44],38:[1,45]}),e(i,[2,33],{36:[1,46]}),e(_,[2,25]),{32:47,43:v},{43:[2,43]},e(i,[2,28],{38:[1,48]}),e(i,[2,29]),e(i,[2,31],{37:[1,49]}),{11:[1,50]},e(i,[2,30]),e(i,[2,32]),e(_,[2,26])],defaultActions:{5:[2,41],6:[2,1],34:[2,44],43:[2,43]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},T=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),40;case 1:return this.begin("type_directive"),41;case 2:return this.popState(),this.begin("arg_directive"),33;case 3:return this.popState(),this.popState(),43;case 4:return 42;case 5:return this.begin("acc_title"),21;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),23;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:case 20:case 23:case 26:case 29:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:case 13:case 14:case 16:case 17:case 18:break;case 15:return 11;case 19:this.begin("href");break;case 21:return 38;case 22:this.begin("callbackname");break;case 24:this.popState(),this.begin("callbackargs");break;case 25:return 36;case 27:return 37;case 28:this.begin("click");break;case 30:return 35;case 31:return 5;case 32:return 12;case 33:return 13;case 34:return 14;case 35:return 15;case 36:return 16;case 37:return 18;case 38:return 17;case 39:return 19;case 40:return"date";case 41:return 20;case 42:return"accDescription";case 43:return 26;case 44:return 28;case 45:return 29;case 46:return 33;case 47:return 7;case 48:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[26,27],inclusive:!1},callbackname:{rules:[23,24,25],inclusive:!1},href:{rules:[20,21],inclusive:!1},click:{rules:[29,30],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,13,14,15,16,17,18,19,22,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],inclusive:!0}}},t);function w(){this.yy={}}return k.lexer=T,w.prototype=k,k.Parser=w,new w}();Il.parser=Il;const Ll=Il,Nl=t=>null!==t.match(/^\s*gantt/);a().extend(wt()),a().extend(Et()),a().extend(Dt());let Ml,Fl="",Bl="",Rl="",$l=[],Zl=[],jl={},Pl=[],zl=[],Yl="";const Ul=["active","done","crit","milestone"];let Wl=[],Hl=!1,ql=!1,Vl=0;const Gl=function(t,e,n,r){return!r.includes(t.format(e.trim()))&&(!!(t.isoWeekday()>=6&&n.includes("weekends"))||(!!n.includes(t.format("dddd").toLowerCase())||n.includes(t.format(e.trim()))))},Xl=function(t,e,n,r){if(!n.length||t.manualEndTime)return;let i,s;i=t.startTime instanceof Date?a()(t.startTime):a()(t.startTime,e,!0),i=i.add(1,"d"),s=t.endTime instanceof Date?a()(t.endTime):a()(t.endTime,e,!0);const[o,l]=Kl(i,s,e,n,r);t.endTime=o.toDate(),t.renderEndTime=l},Kl=function(t,e,n,r,i){let a=!1,s=null;for(;t<=e;)a||(s=e.toDate()),a=Gl(t,n,r,i),a&&(e=e.add(1,"d")),t=t.add(1,"d");return[e,s]},Ql=function(t,e,n){n=n.trim();const r=/^after\s+([\d\w- ]+)/.exec(n.trim());if(null!==r){let t=null;if(r[1].split(" ").forEach((function(e){let n=oc(e);void 0!==n&&(t?n.endTime>t.endTime&&(t=n):t=n)})),t)return t.endTime;{const t=new Date;return t.setHours(0,0,0,0),t}}let i=a()(n,e.trim(),!0);if(i.isValid())return i.toDate();{It.debug("Invalid date:"+n),It.debug("With date format:"+e.trim());const t=new Date(n);if(void 0===t||isNaN(t.getTime()))throw new Error("Invalid date:"+n);return t}},Jl=function(t){const e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return null!==e?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]},tc=function(t,e,n,r=!1){n=n.trim();let i=a()(n,e.trim(),!0);if(i.isValid())return r&&(i=i.add(1,"d")),i.toDate();let s=a()(t);const[o,l]=Jl(n);if(!Number.isNaN(o)){const t=s.add(o,l);t.isValid()&&(s=t)}return s.toDate()};let ec=0;const nc=function(t){return void 0===t?(ec+=1,"task"+ec):t};let rc,ic,ac=[];const sc={},oc=function(t){const e=sc[t];return ac[e]},lc=function(){const t=function(t){const e=ac[t];let n="";switch(ac[t].raw.startTime.type){case"prevTaskEnd":{const t=oc(e.prevTaskId);e.startTime=t.endTime;break}case"getStartDate":n=Ql(0,Fl,ac[t].raw.startTime.startData),n&&(ac[t].startTime=n)}return ac[t].startTime&&(ac[t].endTime=tc(ac[t].startTime,Fl,ac[t].raw.endTime.data,Hl),ac[t].endTime&&(ac[t].processed=!0,ac[t].manualEndTime=a()(ac[t].raw.endTime.data,"YYYY-MM-DD",!0).isValid(),Xl(ac[t],Fl,Zl,$l))),ac[t].processed};let e=!0;for(const[n,r]of ac.entries())t(n),e=e&&r.processed;return e},cc=function(t,e){t.split(",").forEach((function(t){let n=oc(t);void 0!==n&&n.classes.push(e)}))},uc=function(t,e){Wl.push((function(){const n=document.querySelector(`[id="${t}"]`);null!==n&&n.addEventListener("click",(function(){e()}))}),(function(){const n=document.querySelector(`[id="${t}-text"]`);null!==n&&n.addEventListener("click",(function(){e()}))}))},hc={parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().gantt,clear:function(){Pl=[],zl=[],Yl="",Wl=[],ec=0,rc=void 0,ic=void 0,ac=[],Fl="",Bl="",Ml=void 0,Rl="",$l=[],Zl=[],Hl=!1,ql=!1,Vl=0,jl={},Zr()},setDateFormat:function(t){Fl=t},getDateFormat:function(){return Fl},enableInclusiveEndDates:function(){Hl=!0},endDatesAreInclusive:function(){return Hl},enableTopAxis:function(){ql=!0},topAxisEnabled:function(){return ql},setAxisFormat:function(t){Bl=t},getAxisFormat:function(){return Bl},setTickInterval:function(t){Ml=t},getTickInterval:function(){return Ml},setTodayMarker:function(t){Rl=t},getTodayMarker:function(){return Rl},setAccTitle:jr,getAccTitle:Pr,setDiagramTitle:Ur,getDiagramTitle:Wr,setAccDescription:zr,getAccDescription:Yr,addSection:function(t){Yl=t,Pl.push(t)},getSections:function(){return Pl},getTasks:function(){let t=lc();let e=0;for(;!t&&e<10;)t=lc(),e++;return zl=ac,zl},addTask:function(t,e){const n={section:Yl,type:Yl,processed:!1,manualEndTime:!1,renderEndTime:null,raw:{data:e},task:t,classes:[]},r=function(t,e){let n;n=":"===e.substr(0,1)?e.substr(1,e.length):e;const r=n.split(","),i={};dc(r,i,Ul);for(let a=0;a<r.length;a++)r[a]=r[a].trim();switch(r.length){case 1:i.id=nc(),i.startTime={type:"prevTaskEnd",id:t},i.endTime={data:r[0]};break;case 2:i.id=nc(),i.startTime={type:"getStartDate",startData:r[0]},i.endTime={data:r[1]};break;case 3:i.id=nc(r[0]),i.startTime={type:"getStartDate",startData:r[1]},i.endTime={data:r[2]}}return i}(ic,e);n.raw.startTime=r.startTime,n.raw.endTime=r.endTime,n.id=r.id,n.prevTaskId=ic,n.active=r.active,n.done=r.done,n.crit=r.crit,n.milestone=r.milestone,n.order=Vl,Vl++;const i=ac.push(n);ic=n.id,sc[n.id]=i-1},findTaskById:oc,addTaskOrg:function(t,e){const n={section:Yl,type:Yl,description:t,task:t,classes:[]},r=function(t,e){let n;n=":"===e.substr(0,1)?e.substr(1,e.length):e;const r=n.split(","),i={};dc(r,i,Ul);for(let a=0;a<r.length;a++)r[a]=r[a].trim();let s="";switch(r.length){case 1:i.id=nc(),i.startTime=t.endTime,s=r[0];break;case 2:i.id=nc(),i.startTime=Ql(0,Fl,r[0]),s=r[1];break;case 3:i.id=nc(r[0]),i.startTime=Ql(0,Fl,r[1]),s=r[2]}return s&&(i.endTime=tc(i.startTime,Fl,s,Hl),i.manualEndTime=a()(s,"YYYY-MM-DD",!0).isValid(),Xl(i,Fl,Zl,$l)),i}(rc,e);n.startTime=r.startTime,n.endTime=r.endTime,n.id=r.id,n.active=r.active,n.done=r.done,n.crit=r.crit,n.milestone=r.milestone,rc=n,zl.push(n)},setIncludes:function(t){$l=t.toLowerCase().split(/[\s,]+/)},getIncludes:function(){return $l},setExcludes:function(t){Zl=t.toLowerCase().split(/[\s,]+/)},getExcludes:function(){return Zl},setClickEvent:function(t,e,n){t.split(",").forEach((function(t){!function(t,e,n){if("loose"!==dr().securityLevel)return;if(void 0===e)return;let r=[];if("string"==typeof n){r=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t<r.length;t++){let e=r[t].trim();'"'===e.charAt(0)&&'"'===e.charAt(e.length-1)&&(e=e.substr(1,e.length-2)),r[t]=e}}0===r.length&&r.push(t),void 0!==oc(t)&&uc(t,(()=>{nr.runFunc(e,...r)}))}(t,e,n)})),cc(t,"clickable")},setLink:function(t,e){let n=e;"loose"!==dr().securityLevel&&(n=(0,s.N)(e)),t.split(",").forEach((function(t){void 0!==oc(t)&&(uc(t,(()=>{window.open(n,"_self")})),jl[t]=n)})),cc(t,"clickable")},getLinks:function(){return jl},bindFunctions:function(t){Wl.forEach((function(e){e(t)}))},parseDuration:Jl,isInvalidDate:Gl};function dc(t,e,n){let r=!0;for(;r;)r=!1,n.forEach((function(n){const i=new RegExp("^\\s*"+n+"\\s*$");t[0].match(i)&&(e[n]=!0,t.shift(1),r=!0)}))}let pc;const fc={setConf:function(){It.debug("Something is calling, setConf, remove the call")},draw:function(t,e,n,r){const i=dr().gantt,s=dr().securityLevel;let l;"sandbox"===s&&(l=(0,o.Ys)("#i"+e));const c="sandbox"===s?(0,o.Ys)(l.nodes()[0].contentDocument.body):(0,o.Ys)("body"),u="sandbox"===s?l.nodes()[0].contentDocument:document,h=u.getElementById(e);pc=h.parentElement.offsetWidth,void 0===pc&&(pc=1200),void 0!==i.useWidth&&(pc=i.useWidth);const d=r.db.getTasks(),p=d.length*(i.barHeight+i.barGap)+2*i.topPadding;h.setAttribute("viewBox","0 0 "+pc+" "+p);const f=c.select(`[id="${e}"]`),m=(0,o.Xf)().domain([(0,o.VV$)(d,(function(t){return t.startTime})),(0,o.Fp7)(d,(function(t){return t.endTime}))]).rangeRound([0,pc-i.leftPadding-i.rightPadding]);let g=[];for(const a of d)g.push(a.type);const y=g;function b(t,e){return function(t){let e=t.length;const n={};for(;e;)n[t[--e]]=(n[t[e]]||0)+1;return n}(e)[t]||0}g=function(t){const e={},n=[];for(let r=0,i=t.length;r<i;++r)Object.prototype.hasOwnProperty.call(e,t[r])||(e[t[r]]=!0,n.push(t[r]));return n}(g),d.sort((function(t,e){const n=t.startTime,r=e.startTime;let i=0;return n>r?i=1:n<r&&(i=-1),i})),function(t,n,s){const l=i.barHeight,c=l+i.barGap,h=i.topPadding,d=i.leftPadding;(0,o.BYU)().domain([0,g.length]).range(["#00B9FA","#F95002"]).interpolate(o.JHv);(function(t,e,n,s,o,l,c,u){const h=l.reduce(((t,{startTime:e})=>t?Math.min(t,e):e),0),d=l.reduce(((t,{endTime:e})=>t?Math.max(t,e):e),0),p=r.db.getDateFormat();if(!h||!d)return;const g=[];let y=null,b=a()(h);for(;b.valueOf()<=d;)r.db.isInvalidDate(b,p,c,u)?y?y.end=b:y={start:b,end:b}:y&&(g.push(y),y=null),b=b.add(1,"d");f.append("g").selectAll("rect").data(g).enter().append("rect").attr("id",(function(t){return"exclude-"+t.start.format("YYYY-MM-DD")})).attr("x",(function(t){return m(t.start)+n})).attr("y",i.gridLineStartPadding).attr("width",(function(t){const e=t.end.add(1,"day");return m(e)-m(t.start)})).attr("height",o-e-i.gridLineStartPadding).attr("transform-origin",(function(e,r){return(m(e.start)+n+.5*(m(e.end)-m(e.start))).toString()+"px "+(r*t+.5*o).toString()+"px"})).attr("class","exclude-range")})(c,h,d,0,s,t,r.db.getExcludes(),r.db.getIncludes()),function(t,e,n,a){let s=(0,o.LLu)(m).tickSize(-a+e+i.gridLineStartPadding).tickFormat((0,o.i$Z)(r.db.getAxisFormat()||i.axisFormat||"%Y-%m-%d"));const l=/^([1-9]\d*)(minute|hour|day|week|month)$/.exec(r.db.getTickInterval()||i.tickInterval);if(null!==l){const t=l[1];switch(l[2]){case"minute":s.ticks(o.Z_i.every(t));break;case"hour":s.ticks(o.WQD.every(t));break;case"day":s.ticks(o.rr1.every(t));break;case"week":s.ticks(o.NGh.every(t));break;case"month":s.ticks(o.F0B.every(t))}}if(f.append("g").attr("class","grid").attr("transform","translate("+t+", "+(a-50)+")").call(s).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),r.db.topAxisEnabled()||i.topAxis){let n=(0,o.F5q)(m).tickSize(-a+e+i.gridLineStartPadding).tickFormat((0,o.i$Z)(r.db.getAxisFormat()||i.axisFormat||"%Y-%m-%d"));if(null!==l){const t=l[1];switch(l[2]){case"minute":n.ticks(o.Z_i.every(t));break;case"hour":n.ticks(o.WQD.every(t));break;case"day":n.ticks(o.rr1.every(t));break;case"week":n.ticks(o.NGh.every(t));break;case"month":n.ticks(o.F0B.every(t))}}f.append("g").attr("class","grid").attr("transform","translate("+t+", "+e+")").call(n).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}(d,h,0,s),function(t,n,a,s,l,c,u){f.append("g").selectAll("rect").data(t).enter().append("rect").attr("x",0).attr("y",(function(t,e){return t.order*n+a-2})).attr("width",(function(){return u-i.rightPadding/2})).attr("height",n).attr("class",(function(t){for(const[e,n]of g.entries())if(t.type===n)return"section section"+e%i.numberSectionStyles;return"section section0"}));const h=f.append("g").selectAll("rect").data(t).enter(),d=r.db.getLinks();h.append("rect").attr("id",(function(t){return t.id})).attr("rx",3).attr("ry",3).attr("x",(function(t){return t.milestone?m(t.startTime)+s+.5*(m(t.endTime)-m(t.startTime))-.5*l:m(t.startTime)+s})).attr("y",(function(t,e){return t.order*n+a})).attr("width",(function(t){return t.milestone?l:m(t.renderEndTime||t.endTime)-m(t.startTime)})).attr("height",l).attr("transform-origin",(function(t,e){return e=t.order,(m(t.startTime)+s+.5*(m(t.endTime)-m(t.startTime))).toString()+"px "+(e*n+a+.5*l).toString()+"px"})).attr("class",(function(t){const e="task";let n="";t.classes.length>0&&(n=t.classes.join(" "));let r=0;for(const[s,o]of g.entries())t.type===o&&(r=s%i.numberSectionStyles);let a="";return t.active?t.crit?a+=" activeCrit":a=" active":t.done?a=t.crit?" doneCrit":" done":t.crit&&(a+=" crit"),0===a.length&&(a=" task"),t.milestone&&(a=" milestone "+a),a+=r,a+=" "+n,e+a})),h.append("text").attr("id",(function(t){return t.id+"-text"})).text((function(t){return t.task})).attr("font-size",i.fontSize).attr("x",(function(t){let e=m(t.startTime),n=m(t.renderEndTime||t.endTime);t.milestone&&(e+=.5*(m(t.endTime)-m(t.startTime))-.5*l),t.milestone&&(n=e+l);const r=this.getBBox().width;return r>n-e?n+r+1.5*i.leftPadding>u?e+s-5:n+s+5:(n-e)/2+e+s})).attr("y",(function(t,e){return t.order*n+i.barHeight/2+(i.fontSize/2-2)+a})).attr("text-height",l).attr("class",(function(t){const e=m(t.startTime);let n=m(t.endTime);t.milestone&&(n=e+l);const r=this.getBBox().width;let a="";t.classes.length>0&&(a=t.classes.join(" "));let s=0;for(const[l,c]of g.entries())t.type===c&&(s=l%i.numberSectionStyles);let o="";return t.active&&(o=t.crit?"activeCritText"+s:"activeText"+s),t.done?o=t.crit?o+" doneCritText"+s:o+" doneText"+s:t.crit&&(o=o+" critText"+s),t.milestone&&(o+=" milestoneText"),r>n-e?n+r+1.5*i.leftPadding>u?a+" taskTextOutsideLeft taskTextOutside"+s+" "+o:a+" taskTextOutsideRight taskTextOutside"+s+" "+o+" width-"+r:a+" taskText taskText"+s+" "+o+" width-"+r}));if("sandbox"===dr().securityLevel){let t;t=(0,o.Ys)("#i"+e);const n=t.nodes()[0].contentDocument;h.filter((function(t){return void 0!==d[t.id]})).each((function(t){var e=n.querySelector("#"+t.id),r=n.querySelector("#"+t.id+"-text");const i=e.parentNode;var a=n.createElement("a");a.setAttribute("xlink:href",d[t.id]),a.setAttribute("target","_top"),i.appendChild(a),a.appendChild(e),a.appendChild(r)}))}}(t,c,h,d,l,0,n),function(t,e){const n=[];let r=0;for(const[i,a]of g.entries())n[i]=[a,b(a,y)];f.append("g").selectAll("text").data(n).enter().append((function(t){const e=t[0].split(zt.lineBreakRegex),n=-(e.length-1)/2,r=u.createElementNS("http://www.w3.org/2000/svg","text");r.setAttribute("dy",n+"em");for(const[i,a]of e.entries()){const t=u.createElementNS("http://www.w3.org/2000/svg","tspan");t.setAttribute("alignment-baseline","central"),t.setAttribute("x","10"),i>0&&t.setAttribute("dy","1em"),t.textContent=a,r.appendChild(t)}return r})).attr("x",10).attr("y",(function(i,a){if(!(a>0))return i[1]*t/2+e;for(let s=0;s<a;s++)return r+=n[a-1][1],i[1]*t/2+r*t+e})).attr("font-size",i.sectionFontSize).attr("font-size",i.sectionFontSize).attr("class",(function(t){for(const[e,n]of g.entries())if(t[0]===n)return"sectionTitle sectionTitle"+e%i.numberSectionStyles;return"sectionTitle"}))}(c,h),function(t,e,n,a){const s=r.db.getTodayMarker();if("off"===s)return;const o=f.append("g").attr("class","today"),l=new Date,c=o.append("line");c.attr("x1",m(l)+t).attr("x2",m(l)+t).attr("y1",i.titleTopMargin).attr("y2",a-i.titleTopMargin).attr("class","today"),""!==s&&c.attr("style",s.replace(/,/g,";"))}(d,0,0,s)}(d,pc,p),xr(f,p,pc,i.useMaxWidth),f.append("text").text(r.db.getDiagramTitle()).attr("x",pc/2).attr("y",i.titleTopMargin).attr("class","titleText")}};var mc=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[6,9,10],r={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,r,i,a,s){switch(a.length,i){case 1:return r;case 4:break;case 6:r.setInfo(!0)}},table:[{3:1,4:[1,2]},{1:[3]},e(n,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},e(n,[2,3]),e(n,[2,4]),e(n,[2,5]),e(n,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},i=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}},t);function a(){this.yy={}}return r.lexer=i,a.prototype=r,r.Parser=a,new a}();mc.parser=mc;const gc=mc;var yc="",bc=!1;const xc={setMessage:t=>{It.debug("Setting message to: "+t),yc=t},getMessage:()=>yc,setInfo:t=>{bc=t},getInfo:()=>bc,clear:Zr},vc={draw:(t,e,n)=>{try{It.debug("Rendering info diagram\n"+t);const r=dr().securityLevel;let i;"sandbox"===r&&(i=(0,o.Ys)("#i"+e));const a=("sandbox"===r?(0,o.Ys)(i.nodes()[0].contentDocument.body):(0,o.Ys)("body")).select("#"+e);a.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size","32px").style("text-anchor","middle").text("v "+n),a.attr("height",100),a.attr("width",400)}catch(r){It.error("Error while rendering info diagram"),It.error(r.message)}}},_c=t=>null!==t.match(/^\s*info/);var kc=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,4],r=[1,5],i=[1,6],a=[1,7],s=[1,9],o=[1,11,13,15,17,19,20,26,27,28,29],l=[2,5],c=[1,6,11,13,15,17,19,20,26,27,28,29],u=[26,27,28],h=[2,8],d=[1,18],p=[1,19],f=[1,20],m=[1,21],g=[1,22],y=[1,23],b=[1,28],x=[6,26,27,28,29],v={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,PIE:6,document:7,showData:8,line:9,statement:10,txt:11,value:12,title:13,title_value:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,openDirective:21,typeDirective:22,closeDirective:23,":":24,argDirective:25,NEWLINE:26,";":27,EOF:28,open_directive:29,type_directive:30,arg_directive:31,close_directive:32,$accept:0,$end:1},terminals_:{2:"error",6:"PIE",8:"showData",11:"txt",12:"value",13:"title",14:"title_value",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",24:":",26:"NEWLINE",27:";",28:"EOF",29:"open_directive",30:"type_directive",31:"arg_directive",32:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,3],[7,0],[7,2],[9,2],[10,0],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[21,1],[22,1],[25,1],[23,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 4:r.setShowData(!0);break;case 7:this.$=a[o-1];break;case 9:r.addSection(a[o-1],r.cleanupValue(a[o]));break;case 10:this.$=a[o].trim(),r.setDiagramTitle(this.$);break;case 11:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 12:case 13:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 14:r.addSection(a[o].substr(8)),this.$=a[o].substr(8);break;case 21:r.parseDirective("%%{","open_directive");break;case 22:r.parseDirective(a[o],"type_directive");break;case 23:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 24:r.parseDirective("}%%","close_directive","pie")}},table:[{3:1,4:2,5:3,6:n,21:8,26:r,27:i,28:a,29:s},{1:[3]},{3:10,4:2,5:3,6:n,21:8,26:r,27:i,28:a,29:s},{3:11,4:2,5:3,6:n,21:8,26:r,27:i,28:a,29:s},e(o,l,{7:12,8:[1,13]}),e(c,[2,18]),e(c,[2,19]),e(c,[2,20]),{22:14,30:[1,15]},{30:[2,21]},{1:[2,1]},{1:[2,2]},e(u,h,{21:8,9:16,10:17,5:24,1:[2,3],11:d,13:p,15:f,17:m,19:g,20:y,29:s}),e(o,l,{7:25}),{23:26,24:[1,27],32:b},e([24,32],[2,22]),e(o,[2,6]),{4:29,26:r,27:i,28:a},{12:[1,30]},{14:[1,31]},{16:[1,32]},{18:[1,33]},e(u,[2,13]),e(u,[2,14]),e(u,[2,15]),e(u,h,{21:8,9:16,10:17,5:24,1:[2,4],11:d,13:p,15:f,17:m,19:g,20:y,29:s}),e(x,[2,16]),{25:34,31:[1,35]},e(x,[2,24]),e(o,[2,7]),e(u,[2,9]),e(u,[2,10]),e(u,[2,11]),e(u,[2,12]),{23:36,32:b},{32:[2,23]},e(x,[2,17])],defaultActions:{9:[2,21],10:[2,1],11:[2,2],35:[2,23]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},_=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),29;case 1:return this.begin("type_directive"),30;case 2:return this.popState(),this.begin("arg_directive"),24;case 3:return this.popState(),this.popState(),32;case 4:return 31;case 5:case 6:case 8:case 9:break;case 7:return 26;case 10:return this.begin("title"),13;case 11:return this.popState(),"title_value";case 12:return this.begin("acc_title"),15;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),17;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:case 20:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:this.begin("string");break;case 21:return"txt";case 22:return 6;case 23:return 8;case 24:return"value";case 25:return 28}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?:showData\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[11],inclusive:!1},string:{rules:[20,21],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,12,14,16,19,22,23,24,25],inclusive:!0}}},t);function k(){this.yy={}}return v.lexer=_,k.prototype=v,v.Parser=k,new k}();kc.parser=kc;const Tc=kc,wc=t=>null!==t.match(/^\s*pie/)||null!==t.match(/^\s*bar/);let Sc={},Ec=!1;const Cc={parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().pie,addSection:function(t,e){t=zt.sanitizeText(t,dr()),void 0===Sc[t]&&(Sc[t]=e,It.debug("Added new section :",t))},getSections:()=>Sc,cleanupValue:function(t){return":"===t.substring(0,1)?(t=t.substring(1).trim(),Number(t.trim())):Number(t.trim())},clear:function(){Sc={},Ec=!1,Zr()},setAccTitle:jr,getAccTitle:Pr,setDiagramTitle:Ur,getDiagramTitle:Wr,setShowData:function(t){Ec=t},getShowData:function(){return Ec},getAccDescription:Yr,setAccDescription:zr};let Dc,Ac=dr();const Oc=450,Ic={draw:(t,e,n,r)=>{try{Ac=dr(),It.debug("Rendering info diagram\n"+t);const n=dr().securityLevel;let g;"sandbox"===n&&(g=(0,o.Ys)("#i"+e));const y="sandbox"===n?(0,o.Ys)(g.nodes()[0].contentDocument.body):(0,o.Ys)("body"),b="sandbox"===n?g.nodes()[0].contentDocument:document;r.db.clear(),r.parser.parse(t),It.debug("Parsed info diagram");const x=b.getElementById(e);Dc=x.parentElement.offsetWidth,void 0===Dc&&(Dc=1200),void 0!==Ac.useWidth&&(Dc=Ac.useWidth),void 0!==Ac.pie.useWidth&&(Dc=Ac.pie.useWidth);const v=y.select("#"+e);xr(v,Oc,Dc,Ac.pie.useMaxWidth),x.setAttribute("viewBox","0 0 "+Dc+" "+Oc);var i=18,a=Math.min(Dc,Oc)/2-40,s=v.append("g").attr("transform","translate("+Dc/2+",225)"),l=r.db.getSections(),c=0;Object.keys(l).forEach((function(t){c+=l[t]}));const _=Ac.themeVariables;var u=[_.pie1,_.pie2,_.pie3,_.pie4,_.pie5,_.pie6,_.pie7,_.pie8,_.pie9,_.pie10,_.pie11,_.pie12],h=(0,o.PKp)().range(u),d=Object.entries(l).map((function(t,e){return{order:e,name:t[0],value:t[1]}})),p=(0,o.ve8)().value((function(t){return t.value})).sort((function(t,e){return t.order-e.order}))(d),f=(0,o.Nb1)().innerRadius(0).outerRadius(a);s.selectAll("mySlices").data(p).enter().append("path").attr("d",f).attr("fill",(function(t){return h(t.data.name)})).attr("class","pieCircle"),s.selectAll("mySlices").data(p).enter().append("text").text((function(t){return(t.data.value/c*100).toFixed(0)+"%"})).attr("transform",(function(t){return"translate("+f.centroid(t)+")"})).style("text-anchor","middle").attr("class","slice"),s.append("text").text(r.db.getDiagramTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText");var m=s.selectAll(".legend").data(h.domain()).enter().append("g").attr("class","legend").attr("transform",(function(t,e){return"translate(216,"+(22*e-22*h.domain().length/2)+")"}));m.append("rect").attr("width",i).attr("height",i).style("fill",h).style("stroke",h),m.data(p).append("text").attr("x",22).attr("y",14).text((function(t){return r.db.getShowData()||Ac.showData||Ac.pie.showData?t.data.name+" ["+t.data.value+"]":t.data.name}))}catch(g){It.error("Error while rendering info diagram"),It.error(g)}}};var Lc=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,3],r=[1,5],i=[1,6],a=[1,7],s=[1,8],o=[5,6,8,14,16,18,19,40,41,42,43,44,45,53,71,72],l=[1,22],c=[2,13],u=[1,26],h=[1,27],d=[1,28],p=[1,29],f=[1,30],m=[1,31],g=[1,24],y=[1,32],b=[1,33],x=[1,36],v=[71,72],_=[5,8,14,16,18,19,40,41,42,43,44,45,53,60,62,71,72],k=[1,56],T=[1,57],w=[1,58],S=[1,59],E=[1,60],C=[1,61],D=[1,62],A=[62,63],O=[1,74],I=[1,70],L=[1,71],N=[1,72],M=[1,73],F=[1,75],B=[1,79],R=[1,80],$=[1,77],Z=[1,78],j=[5,8,14,16,18,19,40,41,42,43,44,45,53,71,72],P={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,openDirective:9,typeDirective:10,closeDirective:11,":":12,argDirective:13,acc_title:14,acc_title_value:15,acc_descr:16,acc_descr_value:17,acc_descr_multiline_value:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,requirementDef:23,elementDef:24,relationshipDef:25,requirementType:26,requirementName:27,STRUCT_START:28,requirementBody:29,ID:30,COLONSEP:31,id:32,TEXT:33,text:34,RISK:35,riskLevel:36,VERIFYMTHD:37,verifyType:38,STRUCT_STOP:39,REQUIREMENT:40,FUNCTIONAL_REQUIREMENT:41,INTERFACE_REQUIREMENT:42,PERFORMANCE_REQUIREMENT:43,PHYSICAL_REQUIREMENT:44,DESIGN_CONSTRAINT:45,LOW_RISK:46,MED_RISK:47,HIGH_RISK:48,VERIFY_ANALYSIS:49,VERIFY_DEMONSTRATION:50,VERIFY_INSPECTION:51,VERIFY_TEST:52,ELEMENT:53,elementName:54,elementBody:55,TYPE:56,type:57,DOCREF:58,ref:59,END_ARROW_L:60,relationship:61,LINE:62,END_ARROW_R:63,CONTAINS:64,COPIES:65,DERIVES:66,SATISFIES:67,VERIFIES:68,REFINES:69,TRACES:70,unqString:71,qString:72,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",12:":",14:"acc_title",15:"acc_title_value",16:"acc_descr",17:"acc_descr_value",18:"acc_descr_multiline_value",19:"open_directive",20:"type_directive",21:"arg_directive",22:"close_directive",28:"STRUCT_START",30:"ID",31:"COLONSEP",33:"TEXT",35:"RISK",37:"VERIFYMTHD",39:"STRUCT_STOP",40:"REQUIREMENT",41:"FUNCTIONAL_REQUIREMENT",42:"INTERFACE_REQUIREMENT",43:"PERFORMANCE_REQUIREMENT",44:"PHYSICAL_REQUIREMENT",45:"DESIGN_CONSTRAINT",46:"LOW_RISK",47:"MED_RISK",48:"HIGH_RISK",49:"VERIFY_ANALYSIS",50:"VERIFY_DEMONSTRATION",51:"VERIFY_INSPECTION",52:"VERIFY_TEST",53:"ELEMENT",56:"TYPE",58:"DOCREF",60:"END_ARROW_L",62:"LINE",63:"END_ARROW_R",64:"CONTAINS",65:"COPIES",66:"DERIVES",67:"SATISFIES",68:"VERIFIES",69:"REFINES",70:"TRACES",71:"unqString",72:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,3],[4,5],[4,2],[4,2],[4,1],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[23,5],[29,5],[29,5],[29,5],[29,5],[29,2],[29,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[36,1],[36,1],[36,1],[38,1],[38,1],[38,1],[38,1],[24,5],[55,5],[55,5],[55,2],[55,1],[25,5],[25,5],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[27,1],[27,1],[32,1],[32,1],[34,1],[34,1],[54,1],[54,1],[57,1],[57,1],[59,1],[59,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 6:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 7:case 8:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 9:r.parseDirective("%%{","open_directive");break;case 10:r.parseDirective(a[o],"type_directive");break;case 11:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 12:r.parseDirective("}%%","close_directive","pie");break;case 13:this.$=[];break;case 19:r.addRequirement(a[o-3],a[o-4]);break;case 20:r.setNewReqId(a[o-2]);break;case 21:r.setNewReqText(a[o-2]);break;case 22:r.setNewReqRisk(a[o-2]);break;case 23:r.setNewReqVerifyMethod(a[o-2]);break;case 26:this.$=r.RequirementType.REQUIREMENT;break;case 27:this.$=r.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 28:this.$=r.RequirementType.INTERFACE_REQUIREMENT;break;case 29:this.$=r.RequirementType.PERFORMANCE_REQUIREMENT;break;case 30:this.$=r.RequirementType.PHYSICAL_REQUIREMENT;break;case 31:this.$=r.RequirementType.DESIGN_CONSTRAINT;break;case 32:this.$=r.RiskLevel.LOW_RISK;break;case 33:this.$=r.RiskLevel.MED_RISK;break;case 34:this.$=r.RiskLevel.HIGH_RISK;break;case 35:this.$=r.VerifyType.VERIFY_ANALYSIS;break;case 36:this.$=r.VerifyType.VERIFY_DEMONSTRATION;break;case 37:this.$=r.VerifyType.VERIFY_INSPECTION;break;case 38:this.$=r.VerifyType.VERIFY_TEST;break;case 39:r.addElement(a[o-3]);break;case 40:r.setNewElementType(a[o-2]);break;case 41:r.setNewElementDocRef(a[o-2]);break;case 44:r.addRelationship(a[o-2],a[o],a[o-4]);break;case 45:r.addRelationship(a[o-2],a[o-4],a[o]);break;case 46:this.$=r.Relationships.CONTAINS;break;case 47:this.$=r.Relationships.COPIES;break;case 48:this.$=r.Relationships.DERIVES;break;case 49:this.$=r.Relationships.SATISFIES;break;case 50:this.$=r.Relationships.VERIFIES;break;case 51:this.$=r.Relationships.REFINES;break;case 52:this.$=r.Relationships.TRACES}},table:[{3:1,4:2,6:n,9:4,14:r,16:i,18:a,19:s},{1:[3]},{3:10,4:2,5:[1,9],6:n,9:4,14:r,16:i,18:a,19:s},{5:[1,11]},{10:12,20:[1,13]},{15:[1,14]},{17:[1,15]},e(o,[2,8]),{20:[2,9]},{3:16,4:2,6:n,9:4,14:r,16:i,18:a,19:s},{1:[2,2]},{4:21,5:l,7:17,8:c,9:4,14:r,16:i,18:a,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:h,42:d,43:p,44:f,45:m,53:g,71:y,72:b},{11:34,12:[1,35],22:x},e([12,22],[2,10]),e(o,[2,6]),e(o,[2,7]),{1:[2,1]},{8:[1,37]},{4:21,5:l,7:38,8:c,9:4,14:r,16:i,18:a,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:h,42:d,43:p,44:f,45:m,53:g,71:y,72:b},{4:21,5:l,7:39,8:c,9:4,14:r,16:i,18:a,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:h,42:d,43:p,44:f,45:m,53:g,71:y,72:b},{4:21,5:l,7:40,8:c,9:4,14:r,16:i,18:a,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:h,42:d,43:p,44:f,45:m,53:g,71:y,72:b},{4:21,5:l,7:41,8:c,9:4,14:r,16:i,18:a,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:h,42:d,43:p,44:f,45:m,53:g,71:y,72:b},{4:21,5:l,7:42,8:c,9:4,14:r,16:i,18:a,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:h,42:d,43:p,44:f,45:m,53:g,71:y,72:b},{27:43,71:[1,44],72:[1,45]},{54:46,71:[1,47],72:[1,48]},{60:[1,49],62:[1,50]},e(v,[2,26]),e(v,[2,27]),e(v,[2,28]),e(v,[2,29]),e(v,[2,30]),e(v,[2,31]),e(_,[2,55]),e(_,[2,56]),e(o,[2,4]),{13:51,21:[1,52]},e(o,[2,12]),{1:[2,3]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{8:[2,17]},{8:[2,18]},{28:[1,53]},{28:[2,53]},{28:[2,54]},{28:[1,54]},{28:[2,59]},{28:[2,60]},{61:55,64:k,65:T,66:w,67:S,68:E,69:C,70:D},{61:63,64:k,65:T,66:w,67:S,68:E,69:C,70:D},{11:64,22:x},{22:[2,11]},{5:[1,65]},{5:[1,66]},{62:[1,67]},e(A,[2,46]),e(A,[2,47]),e(A,[2,48]),e(A,[2,49]),e(A,[2,50]),e(A,[2,51]),e(A,[2,52]),{63:[1,68]},e(o,[2,5]),{5:O,29:69,30:I,33:L,35:N,37:M,39:F},{5:B,39:R,55:76,56:$,58:Z},{32:81,71:y,72:b},{32:82,71:y,72:b},e(j,[2,19]),{31:[1,83]},{31:[1,84]},{31:[1,85]},{31:[1,86]},{5:O,29:87,30:I,33:L,35:N,37:M,39:F},e(j,[2,25]),e(j,[2,39]),{31:[1,88]},{31:[1,89]},{5:B,39:R,55:90,56:$,58:Z},e(j,[2,43]),e(j,[2,44]),e(j,[2,45]),{32:91,71:y,72:b},{34:92,71:[1,93],72:[1,94]},{36:95,46:[1,96],47:[1,97],48:[1,98]},{38:99,49:[1,100],50:[1,101],51:[1,102],52:[1,103]},e(j,[2,24]),{57:104,71:[1,105],72:[1,106]},{59:107,71:[1,108],72:[1,109]},e(j,[2,42]),{5:[1,110]},{5:[1,111]},{5:[2,57]},{5:[2,58]},{5:[1,112]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[1,113]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[2,38]},{5:[1,114]},{5:[2,61]},{5:[2,62]},{5:[1,115]},{5:[2,63]},{5:[2,64]},{5:O,29:116,30:I,33:L,35:N,37:M,39:F},{5:O,29:117,30:I,33:L,35:N,37:M,39:F},{5:O,29:118,30:I,33:L,35:N,37:M,39:F},{5:O,29:119,30:I,33:L,35:N,37:M,39:F},{5:B,39:R,55:120,56:$,58:Z},{5:B,39:R,55:121,56:$,58:Z},e(j,[2,20]),e(j,[2,21]),e(j,[2,22]),e(j,[2,23]),e(j,[2,40]),e(j,[2,41])],defaultActions:{8:[2,9],10:[2,2],16:[2,1],37:[2,3],38:[2,14],39:[2,15],40:[2,16],41:[2,17],42:[2,18],44:[2,53],45:[2,54],47:[2,59],48:[2,60],52:[2,11],93:[2,57],94:[2,58],96:[2,32],97:[2,33],98:[2,34],100:[2,35],101:[2,36],102:[2,37],103:[2,38],105:[2,61],106:[2,62],108:[2,63],109:[2,64]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},z=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),19;case 1:return this.begin("type_directive"),20;case 2:return this.popState(),this.begin("arg_directive"),12;case 3:return this.popState(),this.popState(),22;case 4:return 21;case 5:return"title";case 6:return this.begin("acc_title"),14;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),16;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 53:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 5;case 14:case 15:case 16:break;case 17:return 8;case 18:return 6;case 19:return 28;case 20:return 39;case 21:return 31;case 22:return 30;case 23:return 33;case 24:return 35;case 25:return 37;case 26:return 40;case 27:return 41;case 28:return 42;case 29:return 43;case 30:return 44;case 31:return 45;case 32:return 46;case 33:return 47;case 34:return 48;case 35:return 49;case 36:return 50;case 37:return 51;case 38:return 52;case 39:return 53;case 40:return 64;case 41:return 65;case 42:return 66;case 43:return 67;case 44:return 68;case 45:return 69;case 46:return 70;case 47:return 56;case 48:return 58;case 49:return 60;case 50:return 63;case 51:return 62;case 52:this.begin("string");break;case 54:return"qString";case 55:return e.yytext=e.yytext.trim(),71}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[53,54],inclusive:!1},INITIAL:{rules:[0,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,55],inclusive:!0}}},t);function Y(){this.yy={}}return P.lexer=z,Y.prototype=P,P.Parser=Y,new Y}();Lc.parser=Lc;const Nc=Lc,Mc=t=>null!==t.match(/^\s*requirement(Diagram)?/);let Fc=[],Bc={},Rc={},$c={},Zc={};const jc={RequirementType:{REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},RiskLevel:{LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},VerifyType:{VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},Relationships:{CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().req,addRequirement:(t,e)=>(void 0===Rc[t]&&(Rc[t]={name:t,type:e,id:Bc.id,text:Bc.text,risk:Bc.risk,verifyMethod:Bc.verifyMethod}),Bc={},Rc[t]),getRequirements:()=>Rc,setNewReqId:t=>{void 0!==Bc&&(Bc.id=t)},setNewReqText:t=>{void 0!==Bc&&(Bc.text=t)},setNewReqRisk:t=>{void 0!==Bc&&(Bc.risk=t)},setNewReqVerifyMethod:t=>{void 0!==Bc&&(Bc.verifyMethod=t)},setAccTitle:jr,getAccTitle:Pr,setAccDescription:zr,getAccDescription:Yr,addElement:t=>(void 0===Zc[t]&&(Zc[t]={name:t,type:$c.type,docRef:$c.docRef},It.info("Added new requirement: ",t)),$c={},Zc[t]),getElements:()=>Zc,setNewElementType:t=>{void 0!==$c&&($c.type=t)},setNewElementDocRef:t=>{void 0!==$c&&($c.docRef=t)},addRelationship:(t,e,n)=>{Fc.push({type:t,src:e,dst:n})},getRelationships:()=>Fc,clear:()=>{Fc=[],Bc={},Rc={},$c={},Zc={},Zr()}},Pc={CONTAINS:"contains",ARROW:"arrow"},zc=Pc,Yc=(t,e)=>{let n=t.append("defs").append("marker").attr("id",Pc.CONTAINS+"_line_ending").attr("refX",0).attr("refY",e.line_height/2).attr("markerWidth",e.line_height).attr("markerHeight",e.line_height).attr("orient","auto").append("g");n.append("circle").attr("cx",e.line_height/2).attr("cy",e.line_height/2).attr("r",e.line_height/2).attr("fill","none"),n.append("line").attr("x1",0).attr("x2",e.line_height).attr("y1",e.line_height/2).attr("y2",e.line_height/2).attr("stroke-width",1),n.append("line").attr("y1",0).attr("y2",e.line_height).attr("x1",e.line_height/2).attr("x2",e.line_height/2).attr("stroke-width",1),t.append("defs").append("marker").attr("id",Pc.ARROW+"_line_ending").attr("refX",e.line_height).attr("refY",.5*e.line_height).attr("markerWidth",e.line_height).attr("markerHeight",e.line_height).attr("orient","auto").append("path").attr("d",`M0,0\n L${e.line_height},${e.line_height/2}\n M${e.line_height},${e.line_height/2}\n L0,${e.line_height}`).attr("stroke-width",1)};let Uc={},Wc=0;const Hc=(t,e)=>t.insert("rect","#"+e).attr("class","req reqBox").attr("x",0).attr("y",0).attr("width",Uc.rect_min_width+"px").attr("height",Uc.rect_min_height+"px"),qc=(t,e,n)=>{let r=Uc.rect_min_width/2,i=t.append("text").attr("class","req reqLabel reqTitle").attr("id",e).attr("x",r).attr("y",Uc.rect_padding).attr("dominant-baseline","hanging"),a=0;n.forEach((t=>{0==a?i.append("tspan").attr("text-anchor","middle").attr("x",Uc.rect_min_width/2).attr("dy",0).text(t):i.append("tspan").attr("text-anchor","middle").attr("x",Uc.rect_min_width/2).attr("dy",.75*Uc.line_height).text(t),a++}));let s=1.5*Uc.rect_padding+a*Uc.line_height*.75;return t.append("line").attr("class","req-title-line").attr("x1","0").attr("x2",Uc.rect_min_width).attr("y1",s).attr("y2",s),{titleNode:i,y:s}},Vc=(t,e,n,r)=>{let i=t.append("text").attr("class","req reqLabel").attr("id",e).attr("x",Uc.rect_padding).attr("y",r).attr("dominant-baseline","hanging"),a=0;let s=[];return n.forEach((t=>{let e=t.length;for(;e>30&&a<3;){let n=t.substring(0,30);e=(t=t.substring(30,t.length)).length,s[s.length]=n,a++}if(3==a){let t=s[s.length-1];s[s.length-1]=t.substring(0,t.length-4)+"..."}else s[s.length]=t;a=0})),s.forEach((t=>{i.append("tspan").attr("x",Uc.rect_padding).attr("dy",Uc.line_height).text(t)})),i},Gc=function(t,e,n,r,i){const a=n.edge(Xc(e.src),Xc(e.dst)),s=(0,o.jvg)().x((function(t){return t.x})).y((function(t){return t.y})),l=t.insert("path","#"+r).attr("class","er relationshipLine").attr("d",s(a.points)).attr("fill","none");e.type==i.db.Relationships.CONTAINS?l.attr("marker-start","url("+zt.getUrl(Uc.arrowMarkerAbsolute)+"#"+e.type+"_line_ending)"):(l.attr("stroke-dasharray","10,7"),l.attr("marker-end","url("+zt.getUrl(Uc.arrowMarkerAbsolute)+"#"+zc.ARROW+"_line_ending)")),((t,e,n,r)=>{const i=e.node().getTotalLength(),a=e.node().getPointAtLength(.5*i),s="rel"+Wc;Wc++;const o=t.append("text").attr("class","req relationshipLabel").attr("id",s).attr("x",a.x).attr("y",a.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(r).node().getBBox();t.insert("rect","#"+s).attr("class","req reqLabelBox").attr("x",a.x-o.width/2).attr("y",a.y-o.height/2).attr("width",o.width).attr("height",o.height).attr("fill","white").attr("fill-opacity","85%")})(t,l,0,`<<${e.type}>>`)},Xc=t=>t.replace(/\s/g,"").replace(/\./g,"_"),Kc={draw:(t,e,n,r)=>{Uc=dr().requirement,r.db.clear(),r.parser.parse(t);const i=Uc.securityLevel;let a;"sandbox"===i&&(a=(0,o.Ys)("#i"+e));const s=("sandbox"===i?(0,o.Ys)(a.nodes()[0].contentDocument.body):(0,o.Ys)("body")).select(`[id='${e}']`);Yc(s,Uc);const l=new ut.k({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:Uc.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel((function(){return{}}));let c=r.db.getRequirements(),u=r.db.getElements(),h=r.db.getRelationships();var d,p,f;d=c,p=l,f=s,Object.keys(d).forEach((t=>{let e=d[t];t=Xc(t),It.info("Added new requirement: ",t);const n=f.append("g").attr("id",t),r=Hc(n,"req-"+t);let i=qc(n,t+"_title",[`<<${e.type}>>`,`${e.name}`]);Vc(n,t+"_body",[`Id: ${e.id}`,`Text: ${e.text}`,`Risk: ${e.risk}`,`Verification: ${e.verifyMethod}`],i.y);const a=r.node().getBBox();p.setNode(t,{width:a.width,height:a.height,shape:"rect",id:t})})),((t,e,n)=>{Object.keys(t).forEach((r=>{let i=t[r];const a=Xc(r),s=n.append("g").attr("id",a),o="element-"+a,l=Hc(s,o);let c=qc(s,o+"_title",["<<Element>>",`${r}`]);Vc(s,o+"_body",[`Type: ${i.type||"Not Specified"}`,`Doc Ref: ${i.docRef||"None"}`],c.y);const u=l.node().getBBox();e.setNode(a,{width:u.width,height:u.height,shape:"rect",id:a})}))})(u,l,s),((t,e)=>{t.forEach((function(t){let n=Xc(t.src),r=Xc(t.dst);e.setEdge(n,r,{relationship:t})}))})(h,l),(0,ct.bK)(l),function(t,e){e.nodes().forEach((function(n){void 0!==n&&void 0!==e.node(n)&&(t.select("#"+n),t.select("#"+n).attr("transform","translate("+(e.node(n).x-e.node(n).width/2)+","+(e.node(n).y-e.node(n).height/2)+" )"))}))}(s,l),h.forEach((function(t){Gc(s,t,l,e,r)}));const m=Uc.rect_padding,g=s.node().getBBox(),y=g.width+2*m,b=g.height+2*m;xr(s,b,y,Uc.useMaxWidth),s.attr("viewBox",`${g.x-m} ${g.y-m} ${y} ${b}`)}};var Qc=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,2],r=[1,3],i=[1,5],a=[1,7],s=[2,5],o=[1,15],l=[1,17],c=[1,19],u=[1,21],h=[1,22],d=[1,23],p=[1,29],f=[1,30],m=[1,31],g=[1,32],y=[1,33],b=[1,34],x=[1,35],v=[1,36],_=[1,37],k=[1,38],T=[1,39],w=[1,40],S=[1,42],E=[1,43],C=[1,45],D=[1,46],A=[1,47],O=[1,48],I=[1,49],L=[1,50],N=[1,53],M=[1,4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,51,52,53,54,56,57,62,63,64,65,73,83],F=[4,5,21,54,56],B=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,54,56,57,62,63,64,65,73,83],R=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,53,54,56,57,62,63,64,65,73,83],$=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,52,54,56,57,62,63,64,65,73,83],Z=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,51,54,56,57,62,63,64,65,73,83],j=[71,72,73],P=[1,125],z=[1,4,5,7,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,51,52,53,54,56,57,62,63,64,65,73,83],Y={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,directive:6,SD:7,document:8,line:9,statement:10,box_section:11,box_line:12,participant_statement:13,openDirective:14,typeDirective:15,closeDirective:16,":":17,argDirective:18,box:19,restOfLine:20,end:21,signal:22,autonumber:23,NUM:24,off:25,activate:26,actor:27,deactivate:28,note_statement:29,links_statement:30,link_statement:31,properties_statement:32,details_statement:33,title:34,legacy_title:35,acc_title:36,acc_title_value:37,acc_descr:38,acc_descr_value:39,acc_descr_multiline_value:40,loop:41,rect:42,opt:43,alt:44,else_sections:45,par:46,par_sections:47,critical:48,option_sections:49,break:50,option:51,and:52,else:53,participant:54,AS:55,participant_actor:56,note:57,placement:58,text2:59,over:60,actor_pair:61,links:62,link:63,properties:64,details:65,spaceList:66,",":67,left_of:68,right_of:69,signaltype:70,"+":71,"-":72,ACTOR:73,SOLID_OPEN_ARROW:74,DOTTED_OPEN_ARROW:75,SOLID_ARROW:76,DOTTED_ARROW:77,SOLID_CROSS:78,DOTTED_CROSS:79,SOLID_POINT:80,DOTTED_POINT:81,TXT:82,open_directive:83,type_directive:84,arg_directive:85,close_directive:86,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",7:"SD",17:":",19:"box",20:"restOfLine",21:"end",23:"autonumber",24:"NUM",25:"off",26:"activate",28:"deactivate",34:"title",35:"legacy_title",36:"acc_title",37:"acc_title_value",38:"acc_descr",39:"acc_descr_value",40:"acc_descr_multiline_value",41:"loop",42:"rect",43:"opt",44:"alt",46:"par",48:"critical",50:"break",51:"option",52:"and",53:"else",54:"participant",55:"AS",56:"participant_actor",57:"note",60:"over",62:"links",63:"link",64:"properties",65:"details",67:",",68:"left_of",69:"right_of",71:"+",72:"-",73:"ACTOR",74:"SOLID_OPEN_ARROW",75:"DOTTED_OPEN_ARROW",76:"SOLID_ARROW",77:"DOTTED_ARROW",78:"SOLID_CROSS",79:"DOTTED_CROSS",80:"SOLID_POINT",81:"DOTTED_POINT",82:"TXT",83:"open_directive",84:"type_directive",85:"arg_directive",86:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[11,0],[11,2],[12,2],[12,1],[12,1],[6,4],[6,6],[10,1],[10,4],[10,2],[10,4],[10,3],[10,3],[10,2],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,2],[10,2],[10,1],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[49,1],[49,4],[47,1],[47,4],[45,1],[45,4],[13,5],[13,3],[13,5],[13,3],[29,4],[29,4],[30,3],[31,3],[32,3],[33,3],[66,2],[66,1],[61,3],[61,1],[58,1],[58,1],[22,5],[22,5],[22,4],[27,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[59,1],[14,1],[15,1],[18,1],[16,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 4:return r.apply(a[o]),a[o];case 5:case 10:case 9:case 14:this.$=[];break;case 6:case 11:a[o-1].push(a[o]),this.$=a[o-1];break;case 7:case 8:case 12:case 13:case 63:this.$=a[o];break;case 18:a[o-1].unshift({type:"boxStart",boxData:r.parseBoxData(a[o-2])}),a[o-1].push({type:"boxEnd",boxText:a[o-2]}),this.$=a[o-1];break;case 20:this.$={type:"sequenceIndex",sequenceIndex:Number(a[o-2]),sequenceIndexStep:Number(a[o-1]),sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceIndex:Number(a[o-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:r.LINETYPE.AUTONUMBER};break;case 23:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 24:this.$={type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:a[o-1]};break;case 25:this.$={type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:a[o-1]};break;case 31:r.setDiagramTitle(a[o].substring(6)),this.$=a[o].substring(6);break;case 32:r.setDiagramTitle(a[o].substring(7)),this.$=a[o].substring(7);break;case 33:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 34:case 35:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 36:a[o-1].unshift({type:"loopStart",loopText:r.parseMessage(a[o-2]),signalType:r.LINETYPE.LOOP_START}),a[o-1].push({type:"loopEnd",loopText:a[o-2],signalType:r.LINETYPE.LOOP_END}),this.$=a[o-1];break;case 37:a[o-1].unshift({type:"rectStart",color:r.parseMessage(a[o-2]),signalType:r.LINETYPE.RECT_START}),a[o-1].push({type:"rectEnd",color:r.parseMessage(a[o-2]),signalType:r.LINETYPE.RECT_END}),this.$=a[o-1];break;case 38:a[o-1].unshift({type:"optStart",optText:r.parseMessage(a[o-2]),signalType:r.LINETYPE.OPT_START}),a[o-1].push({type:"optEnd",optText:r.parseMessage(a[o-2]),signalType:r.LINETYPE.OPT_END}),this.$=a[o-1];break;case 39:a[o-1].unshift({type:"altStart",altText:r.parseMessage(a[o-2]),signalType:r.LINETYPE.ALT_START}),a[o-1].push({type:"altEnd",signalType:r.LINETYPE.ALT_END}),this.$=a[o-1];break;case 40:a[o-1].unshift({type:"parStart",parText:r.parseMessage(a[o-2]),signalType:r.LINETYPE.PAR_START}),a[o-1].push({type:"parEnd",signalType:r.LINETYPE.PAR_END}),this.$=a[o-1];break;case 41:a[o-1].unshift({type:"criticalStart",criticalText:r.parseMessage(a[o-2]),signalType:r.LINETYPE.CRITICAL_START}),a[o-1].push({type:"criticalEnd",signalType:r.LINETYPE.CRITICAL_END}),this.$=a[o-1];break;case 42:a[o-1].unshift({type:"breakStart",breakText:r.parseMessage(a[o-2]),signalType:r.LINETYPE.BREAK_START}),a[o-1].push({type:"breakEnd",optText:r.parseMessage(a[o-2]),signalType:r.LINETYPE.BREAK_END}),this.$=a[o-1];break;case 45:this.$=a[o-3].concat([{type:"option",optionText:r.parseMessage(a[o-1]),signalType:r.LINETYPE.CRITICAL_OPTION},a[o]]);break;case 47:this.$=a[o-3].concat([{type:"and",parText:r.parseMessage(a[o-1]),signalType:r.LINETYPE.PAR_AND},a[o]]);break;case 49:this.$=a[o-3].concat([{type:"else",altText:r.parseMessage(a[o-1]),signalType:r.LINETYPE.ALT_ELSE},a[o]]);break;case 50:a[o-3].type="addParticipant",a[o-3].description=r.parseMessage(a[o-1]),this.$=a[o-3];break;case 51:a[o-1].type="addParticipant",this.$=a[o-1];break;case 52:a[o-3].type="addActor",a[o-3].description=r.parseMessage(a[o-1]),this.$=a[o-3];break;case 53:a[o-1].type="addActor",this.$=a[o-1];break;case 54:this.$=[a[o-1],{type:"addNote",placement:a[o-2],actor:a[o-1].actor,text:a[o]}];break;case 55:a[o-2]=[].concat(a[o-1],a[o-1]).slice(0,2),a[o-2][0]=a[o-2][0].actor,a[o-2][1]=a[o-2][1].actor,this.$=[a[o-1],{type:"addNote",placement:r.PLACEMENT.OVER,actor:a[o-2].slice(0,2),text:a[o]}];break;case 56:this.$=[a[o-1],{type:"addLinks",actor:a[o-1].actor,text:a[o]}];break;case 57:this.$=[a[o-1],{type:"addALink",actor:a[o-1].actor,text:a[o]}];break;case 58:this.$=[a[o-1],{type:"addProperties",actor:a[o-1].actor,text:a[o]}];break;case 59:this.$=[a[o-1],{type:"addDetails",actor:a[o-1].actor,text:a[o]}];break;case 62:this.$=[a[o-2],a[o]];break;case 64:this.$=r.PLACEMENT.LEFTOF;break;case 65:this.$=r.PLACEMENT.RIGHTOF;break;case 66:this.$=[a[o-4],a[o-1],{type:"addMessage",from:a[o-4].actor,to:a[o-1].actor,signalType:a[o-3],msg:a[o]},{type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:a[o-1]}];break;case 67:this.$=[a[o-4],a[o-1],{type:"addMessage",from:a[o-4].actor,to:a[o-1].actor,signalType:a[o-3],msg:a[o]},{type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:a[o-4]}];break;case 68:this.$=[a[o-3],a[o-1],{type:"addMessage",from:a[o-3].actor,to:a[o-1].actor,signalType:a[o-2],msg:a[o]}];break;case 69:this.$={type:"addParticipant",actor:a[o]};break;case 70:this.$=r.LINETYPE.SOLID_OPEN;break;case 71:this.$=r.LINETYPE.DOTTED_OPEN;break;case 72:this.$=r.LINETYPE.SOLID;break;case 73:this.$=r.LINETYPE.DOTTED;break;case 74:this.$=r.LINETYPE.SOLID_CROSS;break;case 75:this.$=r.LINETYPE.DOTTED_CROSS;break;case 76:this.$=r.LINETYPE.SOLID_POINT;break;case 77:this.$=r.LINETYPE.DOTTED_POINT;break;case 78:this.$=r.parseMessage(a[o].trim().substring(1));break;case 79:r.parseDirective("%%{","open_directive");break;case 80:r.parseDirective(a[o],"type_directive");break;case 81:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 82:r.parseDirective("}%%","close_directive","sequence")}},table:[{3:1,4:n,5:r,6:4,7:i,14:6,83:a},{1:[3]},{3:8,4:n,5:r,6:4,7:i,14:6,83:a},{3:9,4:n,5:r,6:4,7:i,14:6,83:a},{3:10,4:n,5:r,6:4,7:i,14:6,83:a},e([1,4,5,19,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,54,56,57,62,63,64,65,73,83],s,{8:11}),{15:12,84:[1,13]},{84:[2,79]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:l,6:41,9:14,10:16,13:18,14:6,19:c,22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},{16:51,17:[1,52],86:N},e([17,86],[2,80]),e(M,[2,6]),{6:41,10:54,13:18,14:6,19:c,22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},e(M,[2,8]),e(M,[2,9]),e(M,[2,17]),{20:[1,55]},{5:[1,56]},{5:[1,59],24:[1,57],25:[1,58]},{27:60,73:L},{27:61,73:L},{5:[1,62]},{5:[1,63]},{5:[1,64]},{5:[1,65]},{5:[1,66]},e(M,[2,31]),e(M,[2,32]),{37:[1,67]},{39:[1,68]},e(M,[2,35]),{20:[1,69]},{20:[1,70]},{20:[1,71]},{20:[1,72]},{20:[1,73]},{20:[1,74]},{20:[1,75]},e(M,[2,43]),{27:76,73:L},{27:77,73:L},{70:78,74:[1,79],75:[1,80],76:[1,81],77:[1,82],78:[1,83],79:[1,84],80:[1,85],81:[1,86]},{58:87,60:[1,88],68:[1,89],69:[1,90]},{27:91,73:L},{27:92,73:L},{27:93,73:L},{27:94,73:L},e([5,55,67,74,75,76,77,78,79,80,81,82],[2,69]),{5:[1,95]},{18:96,85:[1,97]},{5:[2,82]},e(M,[2,7]),e(F,[2,10],{11:98}),e(M,[2,19]),{5:[1,100],24:[1,99]},{5:[1,101]},e(M,[2,23]),{5:[1,102]},{5:[1,103]},e(M,[2,26]),e(M,[2,27]),e(M,[2,28]),e(M,[2,29]),e(M,[2,30]),e(M,[2,33]),e(M,[2,34]),e(B,s,{8:104}),e(B,s,{8:105}),e(B,s,{8:106}),e(R,s,{45:107,8:108}),e($,s,{47:109,8:110}),e(Z,s,{49:111,8:112}),e(B,s,{8:113}),{5:[1,115],55:[1,114]},{5:[1,117],55:[1,116]},{27:120,71:[1,118],72:[1,119],73:L},e(j,[2,70]),e(j,[2,71]),e(j,[2,72]),e(j,[2,73]),e(j,[2,74]),e(j,[2,75]),e(j,[2,76]),e(j,[2,77]),{27:121,73:L},{27:123,61:122,73:L},{73:[2,64]},{73:[2,65]},{59:124,82:P},{59:126,82:P},{59:127,82:P},{59:128,82:P},e(z,[2,15]),{16:129,86:N},{86:[2,81]},{4:[1,132],5:[1,134],12:131,13:133,21:[1,130],54:S,56:E},{5:[1,135]},e(M,[2,21]),e(M,[2,22]),e(M,[2,24]),e(M,[2,25]),{4:o,5:l,6:41,9:14,10:16,13:18,14:6,19:c,21:[1,136],22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},{4:o,5:l,6:41,9:14,10:16,13:18,14:6,19:c,21:[1,137],22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},{4:o,5:l,6:41,9:14,10:16,13:18,14:6,19:c,21:[1,138],22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},{21:[1,139]},{4:o,5:l,6:41,9:14,10:16,13:18,14:6,19:c,21:[2,48],22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,53:[1,140],54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},{21:[1,141]},{4:o,5:l,6:41,9:14,10:16,13:18,14:6,19:c,21:[2,46],22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,52:[1,142],54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},{21:[1,143]},{4:o,5:l,6:41,9:14,10:16,13:18,14:6,19:c,21:[2,44],22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,51:[1,144],54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},{4:o,5:l,6:41,9:14,10:16,13:18,14:6,19:c,21:[1,145],22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},{20:[1,146]},e(M,[2,51]),{20:[1,147]},e(M,[2,53]),{27:148,73:L},{27:149,73:L},{59:150,82:P},{59:151,82:P},{59:152,82:P},{67:[1,153],82:[2,63]},{5:[2,56]},{5:[2,78]},{5:[2,57]},{5:[2,58]},{5:[2,59]},{5:[1,154]},e(M,[2,18]),e(F,[2,11]),{13:155,54:S,56:E},e(F,[2,13]),e(F,[2,14]),e(M,[2,20]),e(M,[2,36]),e(M,[2,37]),e(M,[2,38]),e(M,[2,39]),{20:[1,156]},e(M,[2,40]),{20:[1,157]},e(M,[2,41]),{20:[1,158]},e(M,[2,42]),{5:[1,159]},{5:[1,160]},{59:161,82:P},{59:162,82:P},{5:[2,68]},{5:[2,54]},{5:[2,55]},{27:163,73:L},e(z,[2,16]),e(F,[2,12]),e(R,s,{8:108,45:164}),e($,s,{8:110,47:165}),e(Z,s,{8:112,49:166}),e(M,[2,50]),e(M,[2,52]),{5:[2,66]},{5:[2,67]},{82:[2,62]},{21:[2,49]},{21:[2,47]},{21:[2,45]}],defaultActions:{7:[2,79],8:[2,1],9:[2,2],10:[2,3],53:[2,82],89:[2,64],90:[2,65],97:[2,81],124:[2,56],125:[2,78],126:[2,57],127:[2,58],128:[2,59],150:[2,68],151:[2,54],152:[2,55],161:[2,66],162:[2,67],163:[2,62],164:[2,49],165:[2,47],166:[2,45]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},U=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),83;case 1:return this.begin("type_directive"),84;case 2:return this.popState(),this.begin("arg_directive"),17;case 3:return this.popState(),this.popState(),86;case 4:return 85;case 5:case 53:case 66:return 5;case 6:case 7:case 8:case 9:case 10:break;case 11:return 24;case 12:return this.begin("LINE"),19;case 13:return this.begin("ID"),54;case 14:return this.begin("ID"),56;case 15:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),73;case 16:return this.popState(),this.popState(),this.begin("LINE"),55;case 17:return this.popState(),this.popState(),5;case 18:return this.begin("LINE"),41;case 19:return this.begin("LINE"),42;case 20:return this.begin("LINE"),43;case 21:return this.begin("LINE"),44;case 22:return this.begin("LINE"),53;case 23:return this.begin("LINE"),46;case 24:return this.begin("LINE"),52;case 25:return this.begin("LINE"),48;case 26:return this.begin("LINE"),51;case 27:return this.begin("LINE"),50;case 28:return this.popState(),20;case 29:return 21;case 30:return 68;case 31:return 69;case 32:return 62;case 33:return 63;case 34:return 64;case 35:return 65;case 36:return 60;case 37:return 57;case 38:return this.begin("ID"),26;case 39:return this.begin("ID"),28;case 40:return 34;case 41:return 35;case 42:return this.begin("acc_title"),36;case 43:return this.popState(),"acc_title_value";case 44:return this.begin("acc_descr"),38;case 45:return this.popState(),"acc_descr_value";case 46:this.begin("acc_descr_multiline");break;case 47:this.popState();break;case 48:return"acc_descr_multiline_value";case 49:return 7;case 50:return 23;case 51:return 25;case 52:return 67;case 54:return e.yytext=e.yytext.trim(),73;case 55:return 76;case 56:return 77;case 57:return 74;case 58:return 75;case 59:return 78;case 60:return 79;case 61:return 80;case 62:return 81;case 63:return 82;case 64:return 71;case 65:return 72;case 67:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:[^\->:\n,;]+?([\-]*[^\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[47,48],inclusive:!1},acc_descr:{rules:[45],inclusive:!1},acc_title:{rules:[43],inclusive:!1},open_directive:{rules:[1,8],inclusive:!1},type_directive:{rules:[2,3,8],inclusive:!1},arg_directive:{rules:[3,4,8],inclusive:!1},ID:{rules:[7,8,15],inclusive:!1},ALIAS:{rules:[7,8,16,17],inclusive:!1},LINE:{rules:[7,8,28],inclusive:!1},INITIAL:{rules:[0,5,6,8,9,10,11,12,13,14,18,19,20,21,22,23,24,25,26,27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,44,46,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67],inclusive:!0}}},t);function W(){this.yy={}}return Y.lexer=U,W.prototype=Y,Y.Parser=W,new W}();Qc.parser=Qc;const Jc=Qc,tu=t=>null!==t.match(/^\s*sequenceDiagram/);let eu,nu,ru,iu={},au=[],su=[],ou=!1;const lu=function(t,e,n,r){let i=ru;const a=iu[t];if(a){if(ru&&a.box&&ru!==a.box)throw new Error("A same participant should only be defined in one Box: "+a.name+" can't be in '"+a.box.name+"' and in '"+ru.name+"' at the same time.");if(i=a.box?a.box:ru,a.box=i,a&&e===a.name&&null==n)return}null!=n&&null!=n.text||(n={text:e,wrap:null,type:r}),null!=r&&null!=n.text||(n={text:e,wrap:null,type:r}),iu[t]={box:i,name:e,description:n.text,wrap:void 0===n.wrap&&hu()||!!n.wrap,prevActor:eu,links:{},properties:{},actorCnt:null,rectData:null,type:r||"participant"},eu&&iu[eu]&&(iu[eu].nextActor=t),ru&&ru.actorKeys.push(t),eu=t},cu=function(t,e,n={text:void 0,wrap:void 0},r){if(r===du.ACTIVE_END){const e=(t=>{let e,n=0;for(e=0;e<su.length;e++)su[e].type===du.ACTIVE_START&&su[e].from.actor===t&&n++,su[e].type===du.ACTIVE_END&&su[e].from.actor===t&&n--;return n})(t.actor);if(e<1){let e=new Error("Trying to inactivate an inactive participant ("+t.actor+")");throw e.hash={text:"->>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},e}}return su.push({from:t,to:e,message:n.text,wrap:void 0===n.wrap&&hu()||!!n.wrap,type:r}),!0},uu=function(t){return iu[t]},hu=()=>void 0!==nu?nu:dr().sequence.wrap,du={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31},pu=function(t,e,n){n.text,void 0===n.wrap&&hu()||n.wrap;const r=[].concat(t,t);su.push({from:r[0],to:r[1],message:n.text,wrap:void 0===n.wrap&&hu()||!!n.wrap,type:du.NOTE,placement:e})},fu=function(t,e){const n=uu(t);try{let t=Bt(e.text,dr());t=t.replace(/&/g,"&"),t=t.replace(/=/g,"=");mu(n,JSON.parse(t))}catch(r){It.error("error while parsing actor link text",r)}};function mu(t,e){if(null==t.links)t.links=e;else for(let n in e)t.links[n]=e[n]}const gu=function(t,e){const n=uu(t);try{let t=Bt(e.text,dr());yu(n,JSON.parse(t))}catch(r){It.error("error while parsing actor properties text",r)}};function yu(t,e){if(null==t.properties)t.properties=e;else for(let n in e)t.properties[n]=e[n]}const bu=function(t,e){const n=uu(t),r=document.getElementById(e.text);try{const t=r.innerHTML,e=JSON.parse(t);e.properties&&yu(n,e.properties),e.links&&mu(n,e.links)}catch(i){It.error("error while parsing actor details text",i)}},xu=function(t){if(Array.isArray(t))t.forEach((function(t){xu(t)}));else switch(t.type){case"sequenceIndex":su.push({from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":lu(t.actor,t.actor,t.description,"participant");break;case"addActor":lu(t.actor,t.actor,t.description,"actor");break;case"activeStart":case"activeEnd":cu(t.actor,void 0,void 0,t.signalType);break;case"addNote":pu(t.actor,t.placement,t.text);break;case"addLinks":fu(t.actor,t.text);break;case"addALink":!function(t,e){const n=uu(t);try{const t={};let s=Bt(e.text,dr());var r=s.indexOf("@");s=s.replace(/&/g,"&"),s=s.replace(/=/g,"=");var i=s.slice(0,r-1).trim(),a=s.slice(r+1).trim();t[i]=a,mu(n,t)}catch(s){It.error("error while parsing actor link text",s)}}(t.actor,t.text);break;case"addProperties":gu(t.actor,t.text);break;case"addDetails":bu(t.actor,t.text);break;case"addMessage":cu(t.from,t.to,t.msg,t.signalType);break;case"boxStart":e=t.boxData,au.push({name:e.text,wrap:void 0===e.wrap&&hu()||!!e.wrap,fill:e.color,actorKeys:[]}),ru=au.slice(-1)[0];break;case"boxEnd":ru=void 0;break;case"loopStart":cu(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":case"rectEnd":case"optEnd":case"altEnd":case"parEnd":case"criticalEnd":case"breakEnd":cu(void 0,void 0,void 0,t.signalType);break;case"rectStart":cu(void 0,void 0,t.color,t.signalType);break;case"optStart":cu(void 0,void 0,t.optText,t.signalType);break;case"altStart":case"else":cu(void 0,void 0,t.altText,t.signalType);break;case"setAccTitle":jr(t.text);break;case"parStart":case"and":cu(void 0,void 0,t.parText,t.signalType);break;case"criticalStart":cu(void 0,void 0,t.criticalText,t.signalType);break;case"option":cu(void 0,void 0,t.optionText,t.signalType);break;case"breakStart":cu(void 0,void 0,t.breakText,t.signalType)}var e},vu={addActor:lu,addMessage:function(t,e,n,r){su.push({from:t,to:e,message:n.text,wrap:void 0===n.wrap&&hu()||!!n.wrap,answer:r})},addSignal:cu,addLinks:fu,addDetails:bu,addProperties:gu,autoWrap:hu,setWrap:function(t){nu=t},enableSequenceNumbers:function(){ou=!0},disableSequenceNumbers:function(){ou=!1},showSequenceNumbers:()=>ou,getMessages:function(){return su},getActors:function(){return iu},getActor:uu,getActorKeys:function(){return Object.keys(iu)},getActorProperty:function(t,e){if(void 0!==t&&void 0!==t.properties)return t.properties[e]},getAccTitle:Pr,getBoxes:function(){return au},getDiagramTitle:Wr,setDiagramTitle:Ur,parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().sequence,clear:function(){iu={},au=[],su=[],ou=!1,Zr()},parseMessage:function(t){const e=t.trim(),n={text:e.replace(/^:?(?:no)?wrap:/,"").trim(),wrap:null!==e.match(/^:?wrap:/)||null===e.match(/^:?nowrap:/)&&void 0};return It.debug("parseMessage:",n),n},parseBoxData:function(t){const e=t.match(/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/);let n=null!=e&&e[1]?e[1].trim():"transparent",r=null!=e&&e[2]?e[2].trim():void 0;if(window&&window.CSS)window.CSS.supports("color",n)||(n="transparent",r=t.trim());else{const e=(new Option).style;e.color=n,e.color!==n&&(n="transparent",r=t.trim())}return{color:n,text:void 0!==r?Bt(r.replace(/^:?(?:no)?wrap:/,""),dr()):void 0,wrap:void 0!==r?null!==r.match(/^:?wrap:/)||null===r.match(/^:?nowrap:/)&&void 0:void 0}},LINETYPE:du,ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},addNote:pu,setAccTitle:jr,apply:xu,setAccDescription:zr,getAccDescription:Yr,hasAtLeastOneBox:function(){return au.length>0},hasAtLeastOneBoxWithTitle:function(){return au.some((t=>t.name))}};let _u=[];const ku=()=>{_u.forEach((t=>{t()})),_u=[]},Tu=function(t,e){const n=t.append("rect");return n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),void 0!==e.class&&n.attr("class",e.class),n},wu=(t,e)=>{var n;n=()=>{const n=document.querySelectorAll(t);0!==n.length&&(n[0].addEventListener("mouseover",(function(){Cu("actor"+e+"_popup")})),n[0].addEventListener("mouseout",(function(){Du("actor"+e+"_popup")})))},_u.push(n)},Su=function(t,e,n,r){const i=t.append("image");i.attr("x",e),i.attr("y",n);var a=(0,s.N)(r);i.attr("xlink:href",a)},Eu=function(t,e,n,r){const i=t.append("use");i.attr("x",e),i.attr("y",n);var a=(0,s.N)(r);i.attr("xlink:href","#"+a)},Cu=function(t){var e=document.getElementById(t);null!=e&&(e.style.display="block")},Du=function(t){var e=document.getElementById(t);null!=e&&(e.style.display="none")},Au=function(t,e){let n=0,r=0;const i=e.text.split(zt.lineBreakRegex),[a,s]=er(e.fontSize);let o=[],l=0,c=()=>e.y;if(void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0)switch(e.valign){case"top":case"start":c=()=>Math.round(e.y+e.textMargin);break;case"middle":case"center":c=()=>Math.round(e.y+(n+r+e.textMargin)/2);break;case"bottom":case"end":c=()=>Math.round(e.y+(n+r+2*e.textMargin)-e.textMargin)}if(void 0!==e.anchor&&void 0!==e.textMargin&&void 0!==e.width)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="middle",e.alignmentBaseline="middle"}for(let[u,h]of i.entries()){void 0!==e.textMargin&&0===e.textMargin&&void 0!==a&&(l=u*a);const i=t.append("text");if(i.attr("x",e.x),i.attr("y",c()),void 0!==e.anchor&&i.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),void 0!==e.fontFamily&&i.style("font-family",e.fontFamily),void 0!==s&&i.style("font-size",s),void 0!==e.fontWeight&&i.style("font-weight",e.fontWeight),void 0!==e.fill&&i.attr("fill",e.fill),void 0!==e.class&&i.attr("class",e.class),void 0!==e.dy?i.attr("dy",e.dy):0!==l&&i.attr("dy",l),e.tspan){const t=i.append("tspan");t.attr("x",e.x),void 0!==e.fill&&t.attr("fill",e.fill),t.text(h)}else i.text(h);void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0&&(r+=(i._groups||i)[0][0].getBBox().height,n=r),o.push(i)}return o},Ou=function(t,e){const n=t.append("polygon");var r,i,a,s,o;return n.attr("points",(r=e.x,i=e.y,a=e.width,s=e.height,r+","+i+" "+(r+a)+","+i+" "+(r+a)+","+(i+s-(o=7))+" "+(r+a-1.2*o)+","+(i+s)+" "+r+","+(i+s))),n.attr("class","labelBox"),e.y=e.y+e.height/2,Au(t,e),n};let Iu=-1;const Lu=(t,e)=>{t.selectAll&&t.selectAll(".actor-line").attr("class","200").attr("y2",e-55)},Nu=function(t,e){Tu(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"}).lower()},Mu=function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},Fu=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},Bu=function(){function t(t,e,n,i,a,s,o){r(e.append("text").attr("x",n+a/2).attr("y",i+s/2+5).style("text-anchor","middle").text(t),o)}function e(t,e,n,i,a,s,o,l){const{actorFontSize:c,actorFontFamily:u,actorFontWeight:h}=l,[d,p]=er(c),f=t.split(zt.lineBreakRegex);for(let m=0;m<f.length;m++){const t=m*d-d*(f.length-1)/2,l=e.append("text").attr("x",n+a/2).attr("y",i).style("text-anchor","middle").style("font-size",p).style("font-weight",h).style("font-family",u);l.append("tspan").attr("x",n+a/2).attr("dy",t).text(f[m]),l.attr("y",i+s/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),r(l,o)}}function n(t,n,i,a,s,o,l,c){const u=n.append("switch"),h=u.append("foreignObject").attr("x",i).attr("y",a).attr("width",s).attr("height",o).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");h.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,u,i,a,s,o,l,c),r(h,l)}function r(t,e){for(const n in e)e.hasOwnProperty(n)&&t.attr(n,e[n])}return function(r){return"fo"===r.textPlacement?n:"old"===r.textPlacement?t:e}}(),Ru=function(){function t(t,e,n,i,a,s,o){r(e.append("text").attr("x",n).attr("y",i).style("text-anchor","start").text(t),o)}function e(t,e,n,i,a,s,o,l){const{actorFontSize:c,actorFontFamily:u,actorFontWeight:h}=l,d=t.split(zt.lineBreakRegex);for(let p=0;p<d.length;p++){const t=p*c-c*(d.length-1)/2,a=e.append("text").attr("x",n).attr("y",i).style("text-anchor","start").style("font-size",c).style("font-weight",h).style("font-family",u);a.append("tspan").attr("x",n).attr("dy",t).text(d[p]),a.attr("y",i+s/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),r(a,o)}}function n(t,n,i,a,s,o,l,c){const u=n.append("switch"),h=u.append("foreignObject").attr("x",i).attr("y",a).attr("width",s).attr("height",o).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");h.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,u,i,a,0,o,l,c),r(h,l)}function r(t,e){for(const n in e)e.hasOwnProperty(n)&&t.attr(n,e[n])}return function(r){return"fo"===r.textPlacement?n:"old"===r.textPlacement?t:e}}(),$u={drawRect:Tu,drawText:Au,drawLabel:Ou,drawActor:function(t,e,n,r){switch(e.type){case"actor":return function(t,e,n,r){const i=e.x+e.width/2,a=e.y+80;r||(Iu++,t.append("line").attr("id","actor"+Iu).attr("x1",i).attr("y1",a).attr("x2",i).attr("y2",2e3).attr("class","actor-line").attr("stroke-width","0.5px").attr("stroke","#999"));const s=t.append("g");s.attr("class","actor-man");const o=Fu();o.x=e.x,o.y=e.y,o.fill="#eaeaea",o.width=e.width,o.height=e.height,o.class="actor",o.rx=3,o.ry=3,s.append("line").attr("id","actor-man-torso"+Iu).attr("x1",i).attr("y1",e.y+25).attr("x2",i).attr("y2",e.y+45),s.append("line").attr("id","actor-man-arms"+Iu).attr("x1",i-18).attr("y1",e.y+33).attr("x2",i+18).attr("y2",e.y+33),s.append("line").attr("x1",i-18).attr("y1",e.y+60).attr("x2",i).attr("y2",e.y+45),s.append("line").attr("x1",i).attr("y1",e.y+45).attr("x2",i+16).attr("y2",e.y+60);const l=s.append("circle");l.attr("cx",e.x+e.width/2),l.attr("cy",e.y+10),l.attr("r",15),l.attr("width",e.width),l.attr("height",e.height);const c=s.node().getBBox();return e.height=c.height,Bu(n)(e.description,s,o.x,o.y+35,o.width,o.height,{class:"actor"},n),e.height}(t,e,n,r);case"participant":return function(t,e,n,r){const i=e.x+e.width/2,a=e.y+5,s=t.append("g");var o=s;r||(Iu++,o.append("line").attr("id","actor"+Iu).attr("x1",i).attr("y1",a).attr("x2",i).attr("y2",2e3).attr("class","actor-line").attr("stroke-width","0.5px").attr("stroke","#999"),o=s.append("g"),e.actorCnt=Iu,null!=e.links&&(o.attr("id","root-"+Iu),wu("#root-"+Iu,Iu)));const l=Fu();var c="actor";null!=e.properties&&e.properties.class?c=e.properties.class:l.fill="#eaeaea",l.x=e.x,l.y=e.y,l.width=e.width,l.height=e.height,l.class=c,l.rx=3,l.ry=3;const u=Tu(o,l);if(e.rectData=l,null!=e.properties&&e.properties.icon){const t=e.properties.icon.trim();"@"===t.charAt(0)?Eu(o,l.x+l.width-20,l.y+10,t.substr(1)):Su(o,l.x+l.width-20,l.y+10,t)}Bu(n)(e.description,o,l.x,l.y,l.width,l.height,{class:"actor"},n);let h=e.height;if(u.node){const t=u.node().getBBox();e.height=t.height,h=t.height}return h}(t,e,n,r)}},drawBox:function(t,e,n){const r=t.append("g");Nu(r,e),e.name&&Bu(n)(e.name,r,e.x,e.y+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},n),r.lower()},drawPopup:function(t,e,n,r,i){if(void 0===e.links||null===e.links||0===Object.keys(e.links).length)return{height:0,width:0};const a=e.links,o=e.actorCnt,l=e.rectData;var c="none";i&&(c="block !important");const u=t.append("g");u.attr("id","actor"+o+"_popup"),u.attr("class","actorPopupMenu"),u.attr("display",c),wu("#actor"+o+"_popup",o);var h="";void 0!==l.class&&(h=" "+l.class);let d=l.width>n?l.width:n;const p=u.append("rect");if(p.attr("class","actorPopupMenuPanel"+h),p.attr("x",l.x),p.attr("y",l.height),p.attr("fill",l.fill),p.attr("stroke",l.stroke),p.attr("width",d),p.attr("height",l.height),p.attr("rx",l.rx),p.attr("ry",l.ry),null!=a){var f=20;for(let t in a){var m=u.append("a"),g=(0,s.N)(a[t]);m.attr("xlink:href",g),m.attr("target","_blank"),Ru(r)(t,m,l.x+10,l.height+f,d,20,{class:"actor"},r),f+=30}}return p.attr("height",f),{height:l.height+f,width:d}},drawImage:Su,drawEmbeddedImage:Eu,anchorElement:function(t){return t.append("g")},drawActivation:function(t,e,n,r,i){const a=Fu(),s=e.anchored;a.x=e.startx,a.y=e.starty,a.class="activation"+i%3,a.width=e.stopx-e.startx,a.height=n-e.starty,Tu(s,a)},drawLoop:function(t,e,n,r){const{boxMargin:i,boxTextMargin:a,labelBoxHeight:s,labelBoxWidth:o,messageFontFamily:l,messageFontSize:c,messageFontWeight:u}=r,h=t.append("g"),d=function(t,e,n,r){return h.append("line").attr("x1",t).attr("y1",e).attr("x2",n).attr("y2",r).attr("class","loopLine")};d(e.startx,e.starty,e.stopx,e.starty),d(e.stopx,e.starty,e.stopx,e.stopy),d(e.startx,e.stopy,e.stopx,e.stopy),d(e.startx,e.starty,e.startx,e.stopy),void 0!==e.sections&&e.sections.forEach((function(t){d(e.startx,t.y,e.stopx,t.y).style("stroke-dasharray","3, 3")}));let p=Mu();p.text=n,p.x=e.startx,p.y=e.starty,p.fontFamily=l,p.fontSize=c,p.fontWeight=u,p.anchor="middle",p.valign="middle",p.tspan=!1,p.width=o||50,p.height=s||20,p.textMargin=a,p.class="labelText",Ou(h,p),p=Mu(),p.text=e.title,p.x=e.startx+o/2+(e.stopx-e.startx)/2,p.y=e.starty+i+a,p.anchor="middle",p.valign="middle",p.textMargin=a,p.class="loopText",p.fontFamily=l,p.fontSize=c,p.fontWeight=u,p.wrap=!0;let f=Au(h,p);return void 0!==e.sectionTitles&&e.sectionTitles.forEach((function(t,n){if(t.message){p.text=t.message,p.x=e.startx+(e.stopx-e.startx)/2,p.y=e.sections[n].y+i+a,p.class="loopText",p.anchor="middle",p.valign="middle",p.tspan=!1,p.fontFamily=l,p.fontSize=c,p.fontWeight=u,p.wrap=e.wrap,f=Au(h,p);let r=Math.round(f.map((t=>(t._groups||t)[0][0].getBBox().height)).reduce(((t,e)=>t+e)));e.sections[n].height+=r-(i+a)}})),e.height=Math.round(e.stopy-e.starty),h},drawBackgroundRect:Nu,insertArrowHead:function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},insertArrowFilledHead:function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},insertSequenceNumber:function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},insertArrowCrossHead:function(t){t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},insertDatabaseIcon:function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},insertComputerIcon:function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},insertClockIcon:function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},getTextObj:Mu,getNoteRect:Fu,popupMenu:function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = 'block'; }"},popdownMenu:function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = 'none'; }"},fixLifeLineHeights:Lu,sanitizeUrl:s.N};let Zu={};const ju={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:function(){return Math.max.apply(null,0===this.actors.length?[0]:this.actors.map((t=>t.height||0)))+(0===this.loops.length?0:this.loops.map((t=>t.height||0)).reduce(((t,e)=>t+e)))+(0===this.messages.length?0:this.messages.map((t=>t.height||0)).reduce(((t,e)=>t+e)))+(0===this.notes.length?0:this.notes.map((t=>t.height||0)).reduce(((t,e)=>t+e)))},clear:function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},addBox:function(t){this.boxes.push(t)},addActor:function(t){this.actors.push(t)},addLoop:function(t){this.loops.push(t)},addMessage:function(t){this.messages.push(t)},addNote:function(t){this.notes.push(t)},lastActor:function(){return this.actors[this.actors.length-1]},lastLoop:function(){return this.loops[this.loops.length-1]},lastMessage:function(){return this.messages[this.messages.length-1]},lastNote:function(){return this.notes[this.notes.length-1]},actors:[],boxes:[],loops:[],messages:[],notes:[]},init:function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,Hu(dr())},updateVal:function(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])},updateBounds:function(t,e,n,r){const i=this;let a=0;function s(s){return function(o){a++;const l=i.sequenceItems.length-a+1;i.updateVal(o,"starty",e-l*Zu.boxMargin,Math.min),i.updateVal(o,"stopy",r+l*Zu.boxMargin,Math.max),i.updateVal(ju.data,"startx",t-l*Zu.boxMargin,Math.min),i.updateVal(ju.data,"stopx",n+l*Zu.boxMargin,Math.max),"activation"!==s&&(i.updateVal(o,"startx",t-l*Zu.boxMargin,Math.min),i.updateVal(o,"stopx",n+l*Zu.boxMargin,Math.max),i.updateVal(ju.data,"starty",e-l*Zu.boxMargin,Math.min),i.updateVal(ju.data,"stopy",r+l*Zu.boxMargin,Math.max))}}this.sequenceItems.forEach(s()),this.activations.forEach(s("activation"))},insert:function(t,e,n,r){const i=Math.min(t,n),a=Math.max(t,n),s=Math.min(e,r),o=Math.max(e,r);this.updateVal(ju.data,"startx",i,Math.min),this.updateVal(ju.data,"starty",s,Math.min),this.updateVal(ju.data,"stopx",a,Math.max),this.updateVal(ju.data,"stopy",o,Math.max),this.updateBounds(i,s,a,o)},newActivation:function(t,e,n){const r=n[t.from.actor],i=qu(t.from.actor).length||0,a=r.x+r.width/2+(i-1)*Zu.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+Zu.activationWidth,stopy:void 0,actor:t.from.actor,anchored:$u.anchorElement(e)})},endActivation:function(t){const e=this.activations.map((function(t){return t.actor})).lastIndexOf(t.from.actor);return this.activations.splice(e,1)[0]},createLoop:function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},newLoop:function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},endLoop:function(){return this.sequenceItems.pop()},addSectionToLoop:function(t){const e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:ju.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return{bounds:this.data,models:this.models}}},Pu=t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),zu=t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),Yu=t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight});const Uu=function(t,e,n,r,i,a,s){if(!0===i.hideUnusedParticipants){const t=new Set;a.forEach((e=>{t.add(e.from),t.add(e.to)})),n=n.filter((e=>t.has(e)))}let o,l=0,c=0,u=0;for(const h of n){const n=e[h],i=n.box;o&&o!=i&&(s||ju.models.addBox(o),c+=Zu.boxMargin+o.margin),i&&i!=o&&(s||(i.x=l+c,i.y=r),c+=i.margin),n.width=n.width||Zu.width,n.height=Math.max(n.height||Zu.height,Zu.height),n.margin=n.margin||Zu.actorMargin,n.x=l+c,n.y=ju.getVerticalPos();const a=$u.drawActor(t,n,Zu,s);u=Math.max(u,a),ju.insert(n.x,r,n.x+n.width,n.height),l+=n.width+c,n.box&&(n.box.width=l+i.margin-n.box.x),c=n.margin,o=n.box,ju.models.addActor(n)}o&&!s&&ju.models.addBox(o),ju.bumpVerticalPos(u)},Wu=function(t,e,n,r){let i=0,a=0;for(const s of n){const n=e[s],o=Xu(n),l=$u.drawPopup(t,n,o,Zu,Zu.forceMenus,r);l.height>i&&(i=l.height),l.width+n.x>a&&(a=l.width+n.x)}return{maxHeight:i,maxWidth:a}},Hu=function(t){Mn(Zu,t),t.fontFamily&&(Zu.actorFontFamily=Zu.noteFontFamily=Zu.messageFontFamily=t.fontFamily),t.fontSize&&(Zu.actorFontSize=Zu.noteFontSize=Zu.messageFontSize=t.fontSize),t.fontWeight&&(Zu.actorFontWeight=Zu.noteFontWeight=Zu.messageFontWeight=t.fontWeight)},qu=function(t){return ju.activations.filter((function(e){return e.actor===t}))},Vu=function(t,e){const n=e[t],r=qu(t);return[r.reduce((function(t,e){return Math.min(t,e.startx)}),n.x+n.width/2),r.reduce((function(t,e){return Math.max(t,e.stopx)}),n.x+n.width/2)]};function Gu(t,e,n,r,i){ju.bumpVerticalPos(n);let a=r;if(e.id&&e.message&&t[e.id]){const n=t[e.id].width,i=Pu(Zu);e.message=nr.wrapLabel(`[${e.message}]`,n-2*Zu.wrapPadding,i),e.width=n,e.wrap=!0;const s=nr.calculateTextDimensions(e.message,i),o=Math.max(s.height,Zu.labelBoxHeight);a=r+o,It.debug(`${o} - ${e.message}`)}i(e),ju.bumpVerticalPos(a)}const Xu=function(t){let e=0;const n=Yu(Zu);for(const r in t.links){const t=nr.calculateTextDimensions(r,n).width+2*Zu.wrapPadding+2*Zu.boxMargin;e<t&&(e=t)}return e};const Ku=function(t,e,n,r){const i={},a=[];let s,o,l;return t.forEach((function(t){switch(t.id=nr.random({length:10}),t.type){case r.db.LINETYPE.LOOP_START:case r.db.LINETYPE.ALT_START:case r.db.LINETYPE.OPT_START:case r.db.LINETYPE.PAR_START:case r.db.LINETYPE.CRITICAL_START:case r.db.LINETYPE.BREAK_START:a.push({id:t.id,msg:t.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case r.db.LINETYPE.ALT_ELSE:case r.db.LINETYPE.PAR_AND:case r.db.LINETYPE.CRITICAL_OPTION:t.message&&(s=a.pop(),i[s.id]=s,i[t.id]=s,a.push(s));break;case r.db.LINETYPE.LOOP_END:case r.db.LINETYPE.ALT_END:case r.db.LINETYPE.OPT_END:case r.db.LINETYPE.PAR_END:case r.db.LINETYPE.CRITICAL_END:case r.db.LINETYPE.BREAK_END:s=a.pop(),i[s.id]=s;break;case r.db.LINETYPE.ACTIVE_START:{const n=e[t.from?t.from.actor:t.to.actor],r=qu(t.from?t.from.actor:t.to.actor).length,i=n.x+n.width/2+(r-1)*Zu.activationWidth/2,a={startx:i,stopx:i+Zu.activationWidth,actor:t.from.actor,enabled:!0};ju.activations.push(a)}break;case r.db.LINETYPE.ACTIVE_END:{const e=ju.activations.map((t=>t.actor)).lastIndexOf(t.from.actor);delete ju.activations.splice(e,1)[0]}}void 0!==t.placement?(o=function(t,e,n){const r=e[t.from].x,i=e[t.to].x,a=t.wrap&&t.message;let s=nr.calculateTextDimensions(a?nr.wrapLabel(t.message,Zu.width,zu(Zu)):t.message,zu(Zu));const o={width:a?Zu.width:Math.max(Zu.width,s.width+2*Zu.noteMargin),height:0,startx:e[t.from].x,stopx:0,starty:0,stopy:0,message:t.message};return t.placement===n.db.PLACEMENT.RIGHTOF?(o.width=a?Math.max(Zu.width,s.width):Math.max(e[t.from].width/2+e[t.to].width/2,s.width+2*Zu.noteMargin),o.startx=r+(e[t.from].width+Zu.actorMargin)/2):t.placement===n.db.PLACEMENT.LEFTOF?(o.width=a?Math.max(Zu.width,s.width+2*Zu.noteMargin):Math.max(e[t.from].width/2+e[t.to].width/2,s.width+2*Zu.noteMargin),o.startx=r-o.width+(e[t.from].width-Zu.actorMargin)/2):t.to===t.from?(s=nr.calculateTextDimensions(a?nr.wrapLabel(t.message,Math.max(Zu.width,e[t.from].width),zu(Zu)):t.message,zu(Zu)),o.width=a?Math.max(Zu.width,e[t.from].width):Math.max(e[t.from].width,Zu.width,s.width+2*Zu.noteMargin),o.startx=r+(e[t.from].width-o.width)/2):(o.width=Math.abs(r+e[t.from].width/2-(i+e[t.to].width/2))+Zu.actorMargin,o.startx=r<i?r+e[t.from].width/2-Zu.actorMargin/2:i+e[t.to].width/2-Zu.actorMargin/2),a&&(o.message=nr.wrapLabel(t.message,o.width-2*Zu.wrapPadding,zu(Zu))),It.debug(`NM:[${o.startx},${o.stopx},${o.starty},${o.stopy}:${o.width},${o.height}=${t.message}]`),o}(t,e,r),t.noteModel=o,a.forEach((t=>{s=t,s.from=Math.min(s.from,o.startx),s.to=Math.max(s.to,o.startx+o.width),s.width=Math.max(s.width,Math.abs(s.from-s.to))-Zu.labelBoxWidth}))):(l=function(t,e,n){let r=!1;if([n.db.LINETYPE.SOLID_OPEN,n.db.LINETYPE.DOTTED_OPEN,n.db.LINETYPE.SOLID,n.db.LINETYPE.DOTTED,n.db.LINETYPE.SOLID_CROSS,n.db.LINETYPE.DOTTED_CROSS,n.db.LINETYPE.SOLID_POINT,n.db.LINETYPE.DOTTED_POINT].includes(t.type)&&(r=!0),!r)return{};const i=Vu(t.from,e),a=Vu(t.to,e),s=i[0]<=a[0]?1:0,o=i[0]<a[0]?0:1,l=[...i,...a],c=Math.abs(a[o]-i[s]);t.wrap&&t.message&&(t.message=nr.wrapLabel(t.message,Math.max(c+2*Zu.wrapPadding,Zu.width),Pu(Zu)));const u=nr.calculateTextDimensions(t.message,Pu(Zu));return{width:Math.max(t.wrap?0:u.width+2*Zu.wrapPadding,c+2*Zu.wrapPadding,Zu.width),height:0,startx:i[s],stopx:a[o],starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,l),toBounds:Math.max.apply(null,l)}}(t,e,r),t.msgModel=l,l.startx&&l.stopx&&a.length>0&&a.forEach((n=>{if(s=n,l.startx===l.stopx){const n=e[t.from],r=e[t.to];s.from=Math.min(n.x-l.width/2,n.x-n.width/2,s.from),s.to=Math.max(r.x+l.width/2,r.x+n.width/2,s.to),s.width=Math.max(s.width,Math.abs(s.to-s.from))-Zu.labelBoxWidth}else s.from=Math.min(l.startx,s.from),s.to=Math.max(l.stopx,s.to),s.width=Math.max(s.width,l.width)-Zu.labelBoxWidth})))})),ju.activations=[],It.debug("Loop type widths:",i),i},Qu={bounds:ju,drawActors:Uu,drawActorsPopup:Wu,setConf:Hu,draw:function(t,e,n,r){const{securityLevel:i,sequence:a}=dr();let s;Zu=a,r.db.clear(),r.parser.parse(t),"sandbox"===i&&(s=(0,o.Ys)("#i"+e));const l="sandbox"===i?(0,o.Ys)(s.nodes()[0].contentDocument.body):(0,o.Ys)("body"),c="sandbox"===i?s.nodes()[0].contentDocument:document;ju.init(),It.debug(r.db);const u="sandbox"===i?l.select(`[id="${e}"]`):(0,o.Ys)(`[id="${e}"]`),h=r.db.getActors(),d=r.db.getBoxes(),p=r.db.getActorKeys(),f=r.db.getMessages(),m=r.db.getDiagramTitle(),g=r.db.hasAtLeastOneBox(),y=r.db.hasAtLeastOneBoxWithTitle(),b=function(t,e,n){const r={};return e.forEach((function(e){if(t[e.to]&&t[e.from]){const i=t[e.to];if(e.placement===n.db.PLACEMENT.LEFTOF&&!i.prevActor)return;if(e.placement===n.db.PLACEMENT.RIGHTOF&&!i.nextActor)return;const a=void 0!==e.placement,s=!a,o=a?zu(Zu):Pu(Zu),l=e.wrap?nr.wrapLabel(e.message,Zu.width-2*Zu.wrapPadding,o):e.message,c=nr.calculateTextDimensions(l,o).width+2*Zu.wrapPadding;s&&e.from===i.nextActor?r[e.to]=Math.max(r[e.to]||0,c):s&&e.from===i.prevActor?r[e.from]=Math.max(r[e.from]||0,c):s&&e.from===e.to?(r[e.from]=Math.max(r[e.from]||0,c/2),r[e.to]=Math.max(r[e.to]||0,c/2)):e.placement===n.db.PLACEMENT.RIGHTOF?r[e.from]=Math.max(r[e.from]||0,c):e.placement===n.db.PLACEMENT.LEFTOF?r[i.prevActor]=Math.max(r[i.prevActor]||0,c):e.placement===n.db.PLACEMENT.OVER&&(i.prevActor&&(r[i.prevActor]=Math.max(r[i.prevActor]||0,c/2)),i.nextActor&&(r[e.from]=Math.max(r[e.from]||0,c/2)))}})),It.debug("maxMessageWidthPerActor:",r),r}(h,f,r);Zu.height=function(t,e,n){let r=0;Object.keys(t).forEach((e=>{const n=t[e];n.wrap&&(n.description=nr.wrapLabel(n.description,Zu.width-2*Zu.wrapPadding,Yu(Zu)));const i=nr.calculateTextDimensions(n.description,Yu(Zu));n.width=n.wrap?Zu.width:Math.max(Zu.width,i.width+2*Zu.wrapPadding),n.height=n.wrap?Math.max(i.height,Zu.height):Zu.height,r=Math.max(r,n.height)}));for(const a in e){const n=t[a];if(!n)continue;const r=t[n.nextActor];if(!r){const t=e[a]+Zu.actorMargin-n.width/2;n.margin=Math.max(t,Zu.actorMargin);continue}const i=e[a]+Zu.actorMargin-n.width/2-r.width/2;n.margin=Math.max(i,Zu.actorMargin)}let i=0;return n.forEach((e=>{const n=Pu(Zu);let r=e.actorKeys.reduce(((e,n)=>e+(t[n].width+(t[n].margin||0))),0);r-=2*Zu.boxTextMargin,e.wrap&&(e.name=nr.wrapLabel(e.name,r-2*Zu.wrapPadding,n));const a=nr.calculateTextDimensions(e.name,n);i=Math.max(a.height,i);const s=Math.max(r,a.width+2*Zu.wrapPadding);if(e.margin=Zu.boxTextMargin,r<s){const t=(s-r)/2;e.margin+=t}})),n.forEach((t=>t.textMaxHeight=i)),Math.max(r,Zu.height)}(h,b,d),$u.insertComputerIcon(u),$u.insertDatabaseIcon(u),$u.insertClockIcon(u),g&&(ju.bumpVerticalPos(Zu.boxMargin),y&&ju.bumpVerticalPos(d[0].textMaxHeight)),Uu(u,h,p,0,Zu,f,!1);const x=Ku(f,h,b,r);$u.insertArrowHead(u),$u.insertArrowCrossHead(u),$u.insertArrowFilledHead(u),$u.insertSequenceNumber(u);let v=1,_=1;const k=[];f.forEach((function(t){let e,n,i;switch(t.type){case r.db.LINETYPE.NOTE:n=t.noteModel,function(t,e){ju.bumpVerticalPos(Zu.boxMargin),e.height=Zu.boxMargin,e.starty=ju.getVerticalPos();const n=$u.getNoteRect();n.x=e.startx,n.y=e.starty,n.width=e.width||Zu.width,n.class="note";const r=t.append("g"),i=$u.drawRect(r,n),a=$u.getTextObj();a.x=e.startx,a.y=e.starty,a.width=n.width,a.dy="1em",a.text=e.message,a.class="noteText",a.fontFamily=Zu.noteFontFamily,a.fontSize=Zu.noteFontSize,a.fontWeight=Zu.noteFontWeight,a.anchor=Zu.noteAlign,a.textMargin=Zu.noteMargin,a.valign="center";const s=Au(r,a),o=Math.round(s.map((t=>(t._groups||t)[0][0].getBBox().height)).reduce(((t,e)=>t+e)));i.attr("height",o+2*Zu.noteMargin),e.height+=o+2*Zu.noteMargin,ju.bumpVerticalPos(o+2*Zu.noteMargin),e.stopy=e.starty+o+2*Zu.noteMargin,e.stopx=e.startx+n.width,ju.insert(e.startx,e.starty,e.stopx,e.stopy),ju.models.addNote(e)}(u,n);break;case r.db.LINETYPE.ACTIVE_START:ju.newActivation(t,u,h);break;case r.db.LINETYPE.ACTIVE_END:!function(t,e){const n=ju.endActivation(t);n.starty+18>e&&(n.starty=e-6,e+=12),$u.drawActivation(u,n,e,Zu,qu(t.from.actor).length),ju.insert(n.startx,e-10,n.stopx,e)}(t,ju.getVerticalPos());break;case r.db.LINETYPE.LOOP_START:Gu(x,t,Zu.boxMargin,Zu.boxMargin+Zu.boxTextMargin,(t=>ju.newLoop(t)));break;case r.db.LINETYPE.LOOP_END:e=ju.endLoop(),$u.drawLoop(u,e,"loop",Zu),ju.bumpVerticalPos(e.stopy-ju.getVerticalPos()),ju.models.addLoop(e);break;case r.db.LINETYPE.RECT_START:Gu(x,t,Zu.boxMargin,Zu.boxMargin,(t=>ju.newLoop(void 0,t.message)));break;case r.db.LINETYPE.RECT_END:e=ju.endLoop(),$u.drawBackgroundRect(u,e),ju.models.addLoop(e),ju.bumpVerticalPos(e.stopy-ju.getVerticalPos());break;case r.db.LINETYPE.OPT_START:Gu(x,t,Zu.boxMargin,Zu.boxMargin+Zu.boxTextMargin,(t=>ju.newLoop(t)));break;case r.db.LINETYPE.OPT_END:e=ju.endLoop(),$u.drawLoop(u,e,"opt",Zu),ju.bumpVerticalPos(e.stopy-ju.getVerticalPos()),ju.models.addLoop(e);break;case r.db.LINETYPE.ALT_START:Gu(x,t,Zu.boxMargin,Zu.boxMargin+Zu.boxTextMargin,(t=>ju.newLoop(t)));break;case r.db.LINETYPE.ALT_ELSE:Gu(x,t,Zu.boxMargin+Zu.boxTextMargin,Zu.boxMargin,(t=>ju.addSectionToLoop(t)));break;case r.db.LINETYPE.ALT_END:e=ju.endLoop(),$u.drawLoop(u,e,"alt",Zu),ju.bumpVerticalPos(e.stopy-ju.getVerticalPos()),ju.models.addLoop(e);break;case r.db.LINETYPE.PAR_START:Gu(x,t,Zu.boxMargin,Zu.boxMargin+Zu.boxTextMargin,(t=>ju.newLoop(t)));break;case r.db.LINETYPE.PAR_AND:Gu(x,t,Zu.boxMargin+Zu.boxTextMargin,Zu.boxMargin,(t=>ju.addSectionToLoop(t)));break;case r.db.LINETYPE.PAR_END:e=ju.endLoop(),$u.drawLoop(u,e,"par",Zu),ju.bumpVerticalPos(e.stopy-ju.getVerticalPos()),ju.models.addLoop(e);break;case r.db.LINETYPE.AUTONUMBER:v=t.message.start||v,_=t.message.step||_,t.message.visible?r.db.enableSequenceNumbers():r.db.disableSequenceNumbers();break;case r.db.LINETYPE.CRITICAL_START:Gu(x,t,Zu.boxMargin,Zu.boxMargin+Zu.boxTextMargin,(t=>ju.newLoop(t)));break;case r.db.LINETYPE.CRITICAL_OPTION:Gu(x,t,Zu.boxMargin+Zu.boxTextMargin,Zu.boxMargin,(t=>ju.addSectionToLoop(t)));break;case r.db.LINETYPE.CRITICAL_END:e=ju.endLoop(),$u.drawLoop(u,e,"critical",Zu),ju.bumpVerticalPos(e.stopy-ju.getVerticalPos()),ju.models.addLoop(e);break;case r.db.LINETYPE.BREAK_START:Gu(x,t,Zu.boxMargin,Zu.boxMargin+Zu.boxTextMargin,(t=>ju.newLoop(t)));break;case r.db.LINETYPE.BREAK_END:e=ju.endLoop(),$u.drawLoop(u,e,"break",Zu),ju.bumpVerticalPos(e.stopy-ju.getVerticalPos()),ju.models.addLoop(e);break;default:try{i=t.msgModel,i.starty=ju.getVerticalPos(),i.sequenceIndex=v,i.sequenceVisible=r.db.showSequenceNumbers();const e=function(t,e){ju.bumpVerticalPos(10);const{startx:n,stopx:r,message:i}=e,a=zt.splitBreaks(i).length,s=nr.calculateTextDimensions(i,Pu(Zu)),o=s.height/a;let l;e.height+=o,ju.bumpVerticalPos(o);let c=s.height-10;const u=s.width;if(n===r){l=ju.getVerticalPos()+c,Zu.rightAngles||(c+=Zu.boxMargin,l=ju.getVerticalPos()+c),c+=30;const t=Math.max(u/2,Zu.width/2);ju.insert(n-t,ju.getVerticalPos()-10+c,r+t,ju.getVerticalPos()+30+c)}else c+=Zu.boxMargin,l=ju.getVerticalPos()+c,ju.insert(n,l-10,r,l);return ju.bumpVerticalPos(c),e.height+=c,e.stopy=e.starty+e.height,ju.insert(e.fromBounds,e.starty,e.toBounds,e.stopy),l}(0,i);k.push({messageModel:i,lineStartY:e}),ju.models.addMessage(i)}catch(a){It.error("error while drawing message",a)}}[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN,r.db.LINETYPE.SOLID,r.db.LINETYPE.DOTTED,r.db.LINETYPE.SOLID_CROSS,r.db.LINETYPE.DOTTED_CROSS,r.db.LINETYPE.SOLID_POINT,r.db.LINETYPE.DOTTED_POINT].includes(t.type)&&(v+=_)})),k.forEach((t=>function(t,e,n,r){const{startx:i,stopx:a,starty:s,message:o,type:l,sequenceIndex:c,sequenceVisible:u}=e,h=nr.calculateTextDimensions(o,Pu(Zu)),d=$u.getTextObj();d.x=i,d.y=s+10,d.width=a-i,d.class="messageText",d.dy="1em",d.text=o,d.fontFamily=Zu.messageFontFamily,d.fontSize=Zu.messageFontSize,d.fontWeight=Zu.messageFontWeight,d.anchor=Zu.messageAlign,d.valign="center",d.textMargin=Zu.wrapPadding,d.tspan=!1,Au(t,d);const p=h.width;let f;i===a?f=Zu.rightAngles?t.append("path").attr("d",`M ${i},${n} H ${i+Math.max(Zu.width/2,p/2)} V ${n+25} H ${i}`):t.append("path").attr("d","M "+i+","+n+" C "+(i+60)+","+(n-10)+" "+(i+60)+","+(n+30)+" "+i+","+(n+20)):(f=t.append("line"),f.attr("x1",i),f.attr("y1",n),f.attr("x2",a),f.attr("y2",n)),l===r.db.LINETYPE.DOTTED||l===r.db.LINETYPE.DOTTED_CROSS||l===r.db.LINETYPE.DOTTED_POINT||l===r.db.LINETYPE.DOTTED_OPEN?(f.style("stroke-dasharray","3, 3"),f.attr("class","messageLine1")):f.attr("class","messageLine0");let m="";Zu.arrowMarkerAbsolute&&(m=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,m=m.replace(/\(/g,"\\("),m=m.replace(/\)/g,"\\)")),f.attr("stroke-width",2),f.attr("stroke","none"),f.style("fill","none"),l!==r.db.LINETYPE.SOLID&&l!==r.db.LINETYPE.DOTTED||f.attr("marker-end","url("+m+"#arrowhead)"),l!==r.db.LINETYPE.SOLID_POINT&&l!==r.db.LINETYPE.DOTTED_POINT||f.attr("marker-end","url("+m+"#filled-head)"),l!==r.db.LINETYPE.SOLID_CROSS&&l!==r.db.LINETYPE.DOTTED_CROSS||f.attr("marker-end","url("+m+"#crosshead)"),(u||Zu.showSequenceNumbers)&&(f.attr("marker-start","url("+m+"#sequencenumber)"),t.append("text").attr("x",i).attr("y",n+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(c))}(u,t.messageModel,t.lineStartY,r))),Zu.mirrorActors&&(ju.bumpVerticalPos(2*Zu.boxMargin),Uu(u,h,p,ju.getVerticalPos(),Zu,f,!0),ju.bumpVerticalPos(Zu.boxMargin),Lu(u,ju.getVerticalPos())),ju.models.boxes.forEach((function(t){t.height=ju.getVerticalPos()-t.y,ju.insert(t.x,t.y,t.x+t.width,t.height),t.startx=t.x,t.starty=t.y,t.stopx=t.startx+t.width,t.stopy=t.starty+t.height,t.stroke="rgb(0,0,0, 0.5)",$u.drawBox(u,t,Zu)})),g&&ju.bumpVerticalPos(Zu.boxMargin);const T=Wu(u,h,p,c),{bounds:w}=ju.getBounds();It.debug("For line height fix Querying: #"+e+" .actor-line");(0,o.td_)("#"+e+" .actor-line").attr("y2",w.stopy);let S=w.stopy-w.starty;S<T.maxHeight&&(S=T.maxHeight);let E=S+2*Zu.diagramMarginY;Zu.mirrorActors&&(E=E-Zu.boxMargin+Zu.bottomMarginAdj);let C=w.stopx-w.startx;C<T.maxWidth&&(C=T.maxWidth);const D=C+2*Zu.diagramMarginX;m&&u.append("text").text(m).attr("x",(w.stopx-w.startx)/2-2*Zu.diagramMarginX).attr("y",-25),xr(u,E,D,Zu.useMaxWidth);const A=m?40:0;u.attr("viewBox",w.startx-Zu.diagramMarginX+" -"+(Zu.diagramMarginY+A)+" "+D+" "+(E+A)),It.debug("models:",ju.models)}};var Ju=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,2],r=[1,3],i=[1,5],a=[1,7],s=[2,5],o=[1,15],l=[1,17],c=[1,21],u=[1,22],h=[1,23],d=[1,24],p=[1,37],f=[1,25],m=[1,26],g=[1,27],y=[1,28],b=[1,29],x=[1,32],v=[1,33],_=[1,34],k=[1,35],T=[1,36],w=[1,39],S=[1,40],E=[1,41],C=[1,42],D=[1,38],A=[1,45],O=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],I=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],L=[1,4,5,7,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],N=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],M={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,directive:6,SD:7,document:8,line:9,statement:10,classDefStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"--\x3e":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,classDef:38,CLASSDEF_ID:39,CLASSDEF_STYLEOPTS:40,DEFAULT:41,class:42,CLASSENTITY_IDS:43,STYLECLASS:44,openDirective:45,typeDirective:46,closeDirective:47,":":48,argDirective:49,direction_tb:50,direction_bt:51,direction_rl:52,direction_lr:53,eol:54,";":55,EDGE_STATE:56,STYLE_SEPARATOR:57,left_of:58,right_of:59,open_directive:60,type_directive:61,arg_directive:62,close_directive:63,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",7:"SD",14:"DESCR",15:"--\x3e",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"classDef",39:"CLASSDEF_ID",40:"CLASSDEF_STYLEOPTS",41:"DEFAULT",42:"class",43:"CLASSENTITY_IDS",44:"STYLECLASS",48:":",50:"direction_tb",51:"direction_bt",52:"direction_rl",53:"direction_lr",55:";",56:"EDGE_STATE",57:"STYLE_SEPARATOR",58:"left_of",59:"right_of",60:"open_directive",61:"type_directive",62:"arg_directive",63:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[10,2],[10,2],[10,1],[11,3],[11,3],[12,3],[6,3],[6,5],[32,1],[32,1],[32,1],[32,1],[54,1],[54,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1],[45,1],[46,1],[49,1],[47,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 4:return r.setRootDoc(a[o]),a[o];case 5:this.$=[];break;case 6:"nl"!=a[o]&&(a[o-1].push(a[o]),this.$=a[o-1]);break;case 7:case 8:case 12:this.$=a[o];break;case 9:this.$="nl";break;case 13:const t=a[o-1];t.description=r.trimColon(a[o]),this.$=t;break;case 14:this.$={stmt:"relation",state1:a[o-2],state2:a[o]};break;case 15:const e=r.trimColon(a[o]);this.$={stmt:"relation",state1:a[o-3],state2:a[o-1],description:e};break;case 19:this.$={stmt:"state",id:a[o-3],type:"default",description:"",doc:a[o-1]};break;case 20:var l=a[o],c=a[o-2].trim();if(a[o].match(":")){var u=a[o].split(":");l=u[0],c=[c,u[1]]}this.$={stmt:"state",id:l,type:"default",description:c};break;case 21:this.$={stmt:"state",id:a[o-3],type:"default",description:a[o-5],doc:a[o-1]};break;case 22:this.$={stmt:"state",id:a[o],type:"fork"};break;case 23:this.$={stmt:"state",id:a[o],type:"join"};break;case 24:this.$={stmt:"state",id:a[o],type:"choice"};break;case 25:this.$={stmt:"state",id:r.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:a[o-1].trim(),note:{position:a[o-2].trim(),text:a[o].trim()}};break;case 30:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 31:case 32:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 33:case 34:this.$={stmt:"classDef",id:a[o-1].trim(),classes:a[o].trim()};break;case 35:this.$={stmt:"applyClass",id:a[o-1].trim(),styleClass:a[o].trim()};break;case 38:r.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:r.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:r.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:r.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:a[o].trim(),type:"default",description:""};break;case 46:case 47:this.$={stmt:"state",id:a[o-2].trim(),classes:[a[o].trim()],type:"default",description:""};break;case 50:r.parseDirective("%%{","open_directive");break;case 51:r.parseDirective(a[o],"type_directive");break;case 52:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 53:r.parseDirective("}%%","close_directive","state")}},table:[{3:1,4:n,5:r,6:4,7:i,45:6,60:a},{1:[3]},{3:8,4:n,5:r,6:4,7:i,45:6,60:a},{3:9,4:n,5:r,6:4,7:i,45:6,60:a},{3:10,4:n,5:r,6:4,7:i,45:6,60:a},e([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],s,{8:11}),{46:12,61:[1,13]},{61:[2,50]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:l,6:30,9:14,10:16,11:18,12:19,13:20,16:c,17:u,19:h,22:d,24:p,25:f,26:m,27:g,28:y,29:b,32:31,33:x,35:v,37:_,38:k,42:T,45:6,50:w,51:S,52:E,53:C,56:D,60:a},{47:43,48:[1,44],63:A},e([48,63],[2,51]),e(O,[2,6]),{6:30,10:46,11:18,12:19,13:20,16:c,17:u,19:h,22:d,24:p,25:f,26:m,27:g,28:y,29:b,32:31,33:x,35:v,37:_,38:k,42:T,45:6,50:w,51:S,52:E,53:C,56:D,60:a},e(O,[2,8]),e(O,[2,9]),e(O,[2,10]),e(O,[2,11]),e(O,[2,12],{14:[1,47],15:[1,48]}),e(O,[2,16]),{18:[1,49]},e(O,[2,18],{20:[1,50]}),{23:[1,51]},e(O,[2,22]),e(O,[2,23]),e(O,[2,24]),e(O,[2,25]),{30:52,31:[1,53],58:[1,54],59:[1,55]},e(O,[2,28]),e(O,[2,29]),{34:[1,56]},{36:[1,57]},e(O,[2,32]),{39:[1,58],41:[1,59]},{43:[1,60]},e(I,[2,44],{57:[1,61]}),e(I,[2,45],{57:[1,62]}),e(O,[2,38]),e(O,[2,39]),e(O,[2,40]),e(O,[2,41]),e(L,[2,36]),{49:63,62:[1,64]},e(L,[2,53]),e(O,[2,7]),e(O,[2,13]),{13:65,24:p,56:D},e(O,[2,17]),e(N,s,{8:66}),{24:[1,67]},{24:[1,68]},{23:[1,69]},{24:[2,48]},{24:[2,49]},e(O,[2,30]),e(O,[2,31]),{40:[1,70]},{40:[1,71]},{44:[1,72]},{24:[1,73]},{24:[1,74]},{47:75,63:A},{63:[2,52]},e(O,[2,14],{14:[1,76]}),{4:o,5:l,6:30,9:14,10:16,11:18,12:19,13:20,16:c,17:u,19:h,21:[1,77],22:d,24:p,25:f,26:m,27:g,28:y,29:b,32:31,33:x,35:v,37:_,38:k,42:T,45:6,50:w,51:S,52:E,53:C,56:D,60:a},e(O,[2,20],{20:[1,78]}),{31:[1,79]},{24:[1,80]},e(O,[2,33]),e(O,[2,34]),e(O,[2,35]),e(I,[2,46]),e(I,[2,47]),e(L,[2,37]),e(O,[2,15]),e(O,[2,19]),e(N,s,{8:81}),e(O,[2,26]),e(O,[2,27]),{4:o,5:l,6:30,9:14,10:16,11:18,12:19,13:20,16:c,17:u,19:h,21:[1,82],22:d,24:p,25:f,26:m,27:g,28:y,29:b,32:31,33:x,35:v,37:_,38:k,42:T,45:6,50:w,51:S,52:E,53:C,56:D,60:a},e(O,[2,21])],defaultActions:{7:[2,50],8:[2,1],9:[2,2],10:[2,3],54:[2,48],55:[2,49],64:[2,52]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},F=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 41;case 1:case 44:return 50;case 2:case 45:return 51;case 3:case 46:return 52;case 4:case 47:return 53;case 5:return this.begin("open_directive"),60;case 6:return this.begin("type_directive"),61;case 7:return this.popState(),this.begin("arg_directive"),48;case 8:return this.popState(),this.popState(),63;case 9:return 62;case 10:case 11:case 13:case 14:case 15:case 16:case 56:case 58:case 64:break;case 12:case 79:return 5;case 17:case 34:return this.pushState("SCALE"),17;case 18:case 35:return 18;case 19:case 25:case 36:case 51:case 54:this.popState();break;case 20:return this.begin("acc_title"),33;case 21:return this.popState(),"acc_title_value";case 22:return this.begin("acc_descr"),35;case 23:return this.popState(),"acc_descr_value";case 24:this.begin("acc_descr_multiline");break;case 26:return"acc_descr_multiline_value";case 27:return this.pushState("CLASSDEF"),38;case 28:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 29:return this.popState(),this.pushState("CLASSDEFID"),39;case 30:return this.popState(),40;case 31:return this.pushState("CLASS"),42;case 32:return this.popState(),this.pushState("CLASS_STYLE"),43;case 33:return this.popState(),44;case 37:this.pushState("STATE");break;case 38:case 41:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),25;case 39:case 42:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),26;case 40:case 43:return this.popState(),e.yytext=e.yytext.slice(0,-10).trim(),27;case 48:this.pushState("STATE_STRING");break;case 49:return this.pushState("STATE_ID"),"AS";case 50:case 66:return this.popState(),"ID";case 52:return"STATE_DESCR";case 53:return 19;case 55:return this.popState(),this.pushState("struct"),20;case 57:return this.popState(),21;case 59:return this.begin("NOTE"),29;case 60:return this.popState(),this.pushState("NOTE_ID"),58;case 61:return this.popState(),this.pushState("NOTE_ID"),59;case 62:this.popState(),this.pushState("FLOATING_NOTE");break;case 63:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 65:return"NOTE_TEXT";case 67:return this.popState(),this.pushState("NOTE_TEXT"),24;case 68:return this.popState(),e.yytext=e.yytext.substr(2).trim(),31;case 69:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),31;case 70:case 71:return 7;case 72:return 16;case 73:return 56;case 74:return 24;case 75:return e.yytext=e.yytext.trim(),14;case 76:return 15;case 77:return 28;case 78:return 57;case 80:return"INVALID"}},rules:[/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<<fork>>)/i,/^(?:.*<<join>>)/i,/^(?:.*<<choice>>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[14,15],inclusive:!1},close_directive:{rules:[14,15],inclusive:!1},arg_directive:{rules:[8,9,14,15],inclusive:!1},type_directive:{rules:[7,8,14,15],inclusive:!1},open_directive:{rules:[6,14,15],inclusive:!1},struct:{rules:[14,15,27,31,37,44,45,46,47,56,57,58,59,73,74,75,76,77],inclusive:!1},FLOATING_NOTE_ID:{rules:[66],inclusive:!1},FLOATING_NOTE:{rules:[63,64,65],inclusive:!1},NOTE_TEXT:{rules:[68,69],inclusive:!1},NOTE_ID:{rules:[67],inclusive:!1},NOTE:{rules:[60,61,62],inclusive:!1},CLASS_STYLE:{rules:[33],inclusive:!1},CLASS:{rules:[32],inclusive:!1},CLASSDEFID:{rules:[30],inclusive:!1},CLASSDEF:{rules:[28,29],inclusive:!1},acc_descr_multiline:{rules:[25,26],inclusive:!1},acc_descr:{rules:[23],inclusive:!1},acc_title:{rules:[21],inclusive:!1},SCALE:{rules:[18,19,35,36],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[50],inclusive:!1},STATE_STRING:{rules:[51,52],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[14,15,38,39,40,41,42,43,48,49,53,54,55],inclusive:!1},ID:{rules:[14,15],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,10,11,12,13,15,16,17,20,22,24,27,31,34,37,55,59,70,71,72,73,74,75,76,78,79,80],inclusive:!0}}},t);function B(){this.yy={}}return M.lexer=F,B.prototype=M,M.Parser=B,new B}();Ju.parser=Ju;const th=Ju,eh=(t,e)=>{var n;return"dagre-wrapper"!==(null==(n=null==e?void 0:e.state)?void 0:n.defaultRenderer)&&null!==t.match(/^\s*stateDiagram/)},nh=(t,e)=>{var n;return null!==t.match(/^\s*stateDiagram-v2/)||!(!t.match(/^\s*stateDiagram/)||"dagre-wrapper"!==(null==(n=null==e?void 0:e.state)?void 0:n.defaultRenderer))},rh="state",ih="relation",ah="default",sh="divider",oh="[*]",lh="start",ch=oh,uh="color",hh="fill";let dh="LR",ph=[],fh={};let mh={root:{relations:[],states:{},documents:{}}},gh=mh.root,yh=0,bh=0;const xh=t=>JSON.parse(JSON.stringify(t)),vh=(t,e,n)=>{if(e.stmt===ih)vh(t,e.state1,!0),vh(t,e.state2,!1);else if(e.stmt===rh&&("[*]"===e.id?(e.id=n?t.id+"_start":t.id+"_end",e.start=n):e.id=e.id.trim()),e.doc){const t=[];let n,r=[];for(n=0;n<e.doc.length;n++)if(e.doc[n].type===sh){const i=xh(e.doc[n]);i.doc=xh(r),t.push(i),r=[]}else r.push(e.doc[n]);if(t.length>0&&r.length>0){const n={stmt:rh,id:Yn(),type:"divider",doc:xh(r)};t.push(xh(n)),e.doc=t}e.doc.forEach((t=>vh(e,t,!0)))}},_h=function(t,e=ah,n=null,r=null,i=null,a=null,s=null,o=null){const l=null==t?void 0:t.trim();if(void 0===gh.states[l]?(It.info("Adding state ",l,r),gh.states[l]={id:l,descriptions:[],type:e,doc:n,note:i,classes:[],styles:[],textStyles:[]}):(gh.states[l].doc||(gh.states[l].doc=n),gh.states[l].type||(gh.states[l].type=e)),r&&(It.info("Setting state description",l,r),"string"==typeof r&&Ch(l,r.trim()),"object"==typeof r&&r.forEach((t=>Ch(l,t.trim())))),i&&(gh.states[l].note=i,gh.states[l].note.text=zt.sanitizeText(gh.states[l].note.text,dr())),a){It.info("Setting state classes",l,a);("string"==typeof a?[a]:a).forEach((t=>Ah(l,t.trim())))}if(s){It.info("Setting state styles",l,s);("string"==typeof s?[s]:s).forEach((t=>Oh(l,t.trim())))}if(o){It.info("Setting state styles",l,s);("string"==typeof o?[o]:o).forEach((t=>Ih(l,t.trim())))}},kh=function(t){mh={root:{relations:[],states:{},documents:{}}},gh=mh.root,yh=0,fh={},t||Zr()},Th=function(t){return gh.states[t]};function wh(t=""){let e=t;return t===oh&&(yh++,e=`${lh}${yh}`),e}function Sh(t="",e=ah){return t===oh?lh:e}const Eh=function(t,e,n){if("object"==typeof t)!function(t,e,n){let r=wh(t.id.trim()),i=Sh(t.id.trim(),t.type),a=wh(e.id.trim()),s=Sh(e.id.trim(),e.type);_h(r,i,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),_h(a,s,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),gh.relations.push({id1:r,id2:a,relationTitle:zt.sanitizeText(n,dr())})}(t,e,n);else{const r=wh(t.trim()),i=Sh(t),a=function(t=""){let e=t;return t===ch&&(yh++,e=`end${yh}`),e}(e.trim()),s=function(t="",e=ah){return t===ch?"end":e}(e);_h(r,i),_h(a,s),gh.relations.push({id1:r,id2:a,title:zt.sanitizeText(n,dr())})}},Ch=function(t,e){const n=gh.states[t],r=e.startsWith(":")?e.replace(":","").trim():e;n.descriptions.push(zt.sanitizeText(r,dr()))},Dh=function(t,e=""){void 0===fh[t]&&(fh[t]={id:t,styles:[],textStyles:[]});const n=fh[t];null!=e&&e.split(",").forEach((t=>{const e=t.replace(/([^;]*);/,"$1").trim();if(t.match(uh)){const t=e.replace(hh,"bgFill").replace(uh,hh);n.textStyles.push(t)}n.styles.push(e)}))},Ah=function(t,e){t.split(",").forEach((function(t){let n=Th(t);if(void 0===n){const e=t.trim();_h(e),n=Th(e)}n.classes.push(e)}))},Oh=function(t,e){const n=Th(t);void 0!==n&&n.textStyles.push(e)},Ih=function(t,e){const n=Th(t);void 0!==n&&n.textStyles.push(e)},Lh={parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().state,addState:_h,clear:kh,getState:Th,getStates:function(){return gh.states},getRelations:function(){return gh.relations},getClasses:function(){return fh},getDirection:()=>dh,addRelation:Eh,getDividerId:()=>(bh++,"divider-id-"+bh),setDirection:t=>{dh=t},cleanupLabel:function(t){return":"===t.substring(0,1)?t.substr(2).trim():t.trim()},lineType:{LINE:0,DOTTED_LINE:1},relationType:{AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},logDocuments:function(){It.info("Documents = ",mh)},getRootDoc:()=>ph,setRootDoc:t=>{It.info("Setting root doc",t),ph=t},getRootDocV2:()=>(vh({id:"root"},{id:"root",doc:ph},!0),{id:"root",doc:ph}),extract:t=>{let e;e=t.doc?t.doc:t,It.info(e),kh(!0),It.info("Extract",e),e.forEach((t=>{switch(t.stmt){case rh:_h(t.id.trim(),t.type,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles);break;case ih:Eh(t.state1,t.state2,t.description);break;case"classDef":Dh(t.id.trim(),t.classes);break;case"applyClass":Ah(t.id.trim(),t.styleClass)}}))},trimColon:t=>t&&":"===t[0]?t.substr(1).trim():t.trim(),getAccTitle:Pr,setAccTitle:jr,getAccDescription:Yr,setAccDescription:zr,addStyleClass:Dh,setCssClass:Ah,addDescription:Ch,setDiagramTitle:Ur,getDiagramTitle:Wr},Nh={},Mh=(t,e)=>{Nh[t]=e},Fh=(t,e)=>{const n=t.append("text").attr("x",2*dr().state.padding).attr("y",dr().state.textHeight+1.3*dr().state.padding).attr("font-size",dr().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),r=n.height,i=t.append("text").attr("x",dr().state.padding).attr("y",r+.4*dr().state.padding+dr().state.dividerMargin+dr().state.textHeight).attr("class","state-description");let a=!0,s=!0;e.descriptions.forEach((function(t){a||(!function(t,e,n){const r=t.append("tspan").attr("x",2*dr().state.padding).text(e);n||r.attr("dy",dr().state.textHeight)}(i,t,s),s=!1),a=!1}));const o=t.append("line").attr("x1",dr().state.padding).attr("y1",dr().state.padding+r+dr().state.dividerMargin/2).attr("y2",dr().state.padding+r+dr().state.dividerMargin/2).attr("class","descr-divider"),l=i.node().getBBox(),c=Math.max(l.width,n.width);return o.attr("x2",c+3*dr().state.padding),t.insert("rect",":first-child").attr("x",dr().state.padding).attr("y",dr().state.padding).attr("width",c+2*dr().state.padding).attr("height",l.height+r+2*dr().state.padding).attr("rx",dr().state.radius),t},Bh=(t,e,n)=>{const r=dr().state.padding,i=2*dr().state.padding,a=t.node().getBBox(),s=a.width,o=a.x,l=t.append("text").attr("x",0).attr("y",dr().state.titleShift).attr("font-size",dr().state.fontSize).attr("class","state-title").text(e.id),c=l.node().getBBox().width+i;let u,h=Math.max(c,s);h===s&&(h+=i);const d=t.node().getBBox();e.doc,u=o-r,c>s&&(u=(s-h)/2+r),Math.abs(o-d.x)<r&&c>s&&(u=o-(c-s)/2);const p=1-dr().state.textHeight;return t.insert("rect",":first-child").attr("x",u).attr("y",p).attr("class",n?"alt-composit":"composit").attr("width",h).attr("height",d.height+dr().state.textHeight+dr().state.titleShift+1).attr("rx","0"),l.attr("x",u+r),c<=s&&l.attr("x",o+(h-i)/2-c/2+r),t.insert("rect",":first-child").attr("x",u).attr("y",dr().state.titleShift-dr().state.textHeight-dr().state.padding).attr("width",h).attr("height",3*dr().state.textHeight).attr("rx",dr().state.radius),t.insert("rect",":first-child").attr("x",u).attr("y",dr().state.titleShift-dr().state.textHeight-dr().state.padding).attr("width",h).attr("height",d.height+3+2*dr().state.textHeight).attr("rx",dr().state.radius),t},Rh=(t,e)=>{e.attr("class","state-note");const n=e.append("rect").attr("x",0).attr("y",dr().state.padding),r=e.append("g"),{textWidth:i,textHeight:a}=((t,e,n,r)=>{let i=0;const a=r.append("text");a.style("text-anchor","start"),a.attr("class","noteText");let s=t.replace(/\r\n/g,"<br/>");s=s.replace(/\n/g,"<br/>");const o=s.split(zt.lineBreakRegex);let l=1.25*dr().state.noteMargin;for(const c of o){const t=c.trim();if(t.length>0){const r=a.append("tspan");r.text(t),0===l&&(l+=r.node().getBBox().height),i+=l,r.attr("x",e+dr().state.noteMargin),r.attr("y",n+i+1.25*dr().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:i}})(t,0,0,r);return n.attr("height",a+2*dr().state.noteMargin),n.attr("width",i+2*dr().state.noteMargin),n},$h=function(t,e){const n=e.id,r={id:n,label:e.id,width:0,height:0},i=t.append("g").attr("id",n).attr("class","stateGroup");"start"===e.type&&(t=>{t.append("circle").attr("class","start-state").attr("r",dr().state.sizeUnit).attr("cx",dr().state.padding+dr().state.sizeUnit).attr("cy",dr().state.padding+dr().state.sizeUnit)})(i),"end"===e.type&&(t=>{t.append("circle").attr("class","end-state-outer").attr("r",dr().state.sizeUnit+dr().state.miniPadding).attr("cx",dr().state.padding+dr().state.sizeUnit+dr().state.miniPadding).attr("cy",dr().state.padding+dr().state.sizeUnit+dr().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",dr().state.sizeUnit).attr("cx",dr().state.padding+dr().state.sizeUnit+2).attr("cy",dr().state.padding+dr().state.sizeUnit+2)})(i),"fork"!==e.type&&"join"!==e.type||((t,e)=>{let n=dr().state.forkWidth,r=dr().state.forkHeight;if(e.parentId){let t=n;n=r,r=t}t.append("rect").style("stroke","black").style("fill","black").attr("width",n).attr("height",r).attr("x",dr().state.padding).attr("y",dr().state.padding)})(i,e),"note"===e.type&&Rh(e.note.text,i),"divider"===e.type&&(t=>{t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",dr().state.textHeight).attr("class","divider").attr("x2",2*dr().state.textHeight).attr("y1",0).attr("y2",0)})(i),"default"===e.type&&0===e.descriptions.length&&((t,e)=>{const n=t.append("text").attr("x",2*dr().state.padding).attr("y",dr().state.textHeight+2*dr().state.padding).attr("font-size",dr().state.fontSize).attr("class","state-title").text(e.id),r=n.node().getBBox();t.insert("rect",":first-child").attr("x",dr().state.padding).attr("y",dr().state.padding).attr("width",r.width+2*dr().state.padding).attr("height",r.height+2*dr().state.padding).attr("rx",dr().state.radius)})(i,e),"default"===e.type&&e.descriptions.length>0&&Fh(i,e);const a=i.node().getBBox();return r.width=a.width+2*dr().state.padding,r.height=a.height+2*dr().state.padding,Mh(n,r),r};let Zh=0;let jh;const Ph={},zh=(t,e,n,r,i,a,s)=>{const l=new ut.k({compound:!0,multigraph:!0});let c,u=!0;for(c=0;c<t.length;c++)if("relation"===t[c].stmt){u=!1;break}n?l.setGraph({rankdir:"LR",multigraph:!0,compound:!0,ranker:"tight-tree",ranksep:u?1:jh.edgeLengthFactor,nodeSep:u?1:50,isMultiGraph:!0}):l.setGraph({rankdir:"TB",multigraph:!0,compound:!0,ranksep:u?1:jh.edgeLengthFactor,nodeSep:u?1:50,ranker:"tight-tree",isMultiGraph:!0}),l.setDefaultEdgeLabel((function(){return{}})),s.db.extract(t);const h=s.db.getStates(),d=s.db.getRelations(),p=Object.keys(h);for(const o of p){const t=h[o];let c;if(n&&(t.parentId=n),t.doc){let n=e.append("g").attr("id",t.id).attr("class","stateGroup");c=zh(t.doc,n,t.id,!r,i,a,s);{n=Bh(n,t,r);let e=n.node().getBBox();c.width=e.width,c.height=e.height+jh.padding/2,Ph[t.id]={y:jh.compositTitleSize}}}else c=$h(e,t);if(t.note){const n={descriptions:[],id:t.id+"-note",note:t.note,type:"note"},r=$h(e,n);"left of"===t.note.position?(l.setNode(c.id+"-note",r),l.setNode(c.id,c)):(l.setNode(c.id,c),l.setNode(c.id+"-note",r)),l.setParent(c.id,c.id+"-group"),l.setParent(c.id+"-note",c.id+"-group")}else l.setNode(c.id,c)}It.debug("Count=",l.nodeCount(),l);let f=0;d.forEach((function(t){var e;f++,It.debug("Setting edge",t),l.setEdge(t.id1,t.id2,{relation:t,width:(e=t.title,e?e.length*jh.fontSizeFactor:1),height:jh.labelHeight*zt.getRows(t.title).length,labelpos:"c"},"id"+f)})),(0,ct.bK)(l),It.debug("Graph after layout",l.nodes());const m=e.node();l.nodes().forEach((function(t){if(void 0!==t&&void 0!==l.node(t)){It.warn("Node "+t+": "+JSON.stringify(l.node(t))),i.select("#"+m.id+" #"+t).attr("transform","translate("+(l.node(t).x-l.node(t).width/2)+","+(l.node(t).y+(Ph[t]?Ph[t].y:0)-l.node(t).height/2)+" )"),i.select("#"+m.id+" #"+t).attr("data-x-shift",l.node(t).x-l.node(t).width/2);a.querySelectorAll("#"+m.id+" #"+t+" .divider").forEach((t=>{const e=t.parentElement;let n=0,r=0;e&&(e.parentElement&&(n=e.parentElement.getBBox().width),r=parseInt(e.getAttribute("data-x-shift"),10),Number.isNaN(r)&&(r=0)),t.setAttribute("x1",0-r+8),t.setAttribute("x2",n-r-8)}))}else It.debug("No Node "+t+": "+JSON.stringify(l.node(t)))}));let g=m.getBBox();l.edges().forEach((function(t){void 0!==t&&void 0!==l.edge(t)&&(It.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(l.edge(t))),function(t,e,n){e.points=e.points.filter((t=>!Number.isNaN(t.y)));const r=e.points,i=(0,o.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(o.$0Z),a=t.append("path").attr("d",i(r)).attr("id","edge"+Zh).attr("class","transition");let s="";if(dr().state.arrowMarkerAbsolute&&(s=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,s=s.replace(/\(/g,"\\("),s=s.replace(/\)/g,"\\)")),a.attr("marker-end","url("+s+"#"+function(t){switch(t){case Lh.relationType.AGGREGATION:return"aggregation";case Lh.relationType.EXTENSION:return"extension";case Lh.relationType.COMPOSITION:return"composition";case Lh.relationType.DEPENDENCY:return"dependency"}}(Lh.relationType.DEPENDENCY)+"End)"),void 0!==n.title){const r=t.append("g").attr("class","stateLabel"),{x:i,y:a}=nr.calcLabelPosition(e.points),s=zt.getRows(n.title);let o=0;const l=[];let c=0,u=0;for(let t=0;t<=s.length;t++){const e=r.append("text").attr("text-anchor","middle").text(s[t]).attr("x",i).attr("y",a+o),n=e.node().getBBox();if(c=Math.max(c,n.width),u=Math.min(u,n.x),It.info(n.x,i,a+o),0===o){const t=e.node().getBBox();o=t.height,It.info("Title height",o,a)}l.push(e)}let h=o*s.length;if(s.length>1){const t=(s.length-1)*o*.5;l.forEach(((e,n)=>e.attr("y",a+n*o-t))),h=o*s.length}const d=r.node().getBBox();r.insert("rect",":first-child").attr("class","box").attr("x",i-c/2-dr().state.padding/2).attr("y",a-h/2-dr().state.padding/2-3.5).attr("width",c+dr().state.padding).attr("height",h+dr().state.padding),It.info(d)}Zh++}(e,l.edge(t),l.edge(t).relation))})),g=m.getBBox();const y={id:n||"root",label:n||"root",width:0,height:0};return y.width=g.width+2*jh.padding,y.height=g.height+2*jh.padding,It.debug("Doc rendered",y,l),y},Yh={setConf:function(){},draw:function(t,e,n,r){jh=dr().state;const i=dr().securityLevel;let a;"sandbox"===i&&(a=(0,o.Ys)("#i"+e));const s="sandbox"===i?(0,o.Ys)(a.nodes()[0].contentDocument.body):(0,o.Ys)("body"),l="sandbox"===i?a.nodes()[0].contentDocument:document;It.debug("Rendering diagram "+t);const c=s.select(`[id='${e}']`);c.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z");new ut.k({multigraph:!0,compound:!0,rankdir:"RL"}).setDefaultEdgeLabel((function(){return{}}));const u=r.db.getRootDoc();zh(u,c,void 0,!1,s,l,r);const h=jh.padding,d=c.node().getBBox(),p=d.width+2*h,f=d.height+2*h;xr(c,f,1.75*p,jh.useMaxWidth),c.attr("viewBox",`${d.x-jh.padding} ${d.y-jh.padding} `+p+" "+f)}},Uh="rect",Wh="rectWithTitle",Hh="statediagram",qh=`${Hh}-state`,Vh="transition",Gh=`${Vh} note-edge`,Xh=`${Hh}-note`,Kh=`${Hh}-cluster`,Qh=`${Hh}-cluster-alt`,Jh="parent",td="note",ed="----",nd=`${ed}${td}`,rd=`${ed}${Jh}`,id="fill:none",ad="fill: #333",sd="text",od="normal";let ld={},cd=0;function ud(t="",e=0,n="",r=ed){return`state-${t}${null!==n&&n.length>0?`${r}${n}`:""}-${e}`}const hd=(t,e,n,r,i,a)=>{const s=n.id,o=null==(l=r[s])?"":l.classes?l.classes.join(" "):"";var l;if("root"!==s){let e=Uh;!0===n.start&&(e="start"),!1===n.start&&(e="end"),n.type!==ah&&(e=n.type),ld[s]||(ld[s]={id:s,shape:e,description:zt.sanitizeText(s,dr()),classes:`${o} ${qh}`});const r=ld[s];n.description&&(Array.isArray(r.description)?(r.shape=Wh,r.description.push(n.description)):r.description.length>0?(r.shape=Wh,r.description===s?r.description=[n.description]:r.description=[r.description,n.description]):(r.shape=Uh,r.description=n.description),r.description=zt.sanitizeTextOrArray(r.description,dr())),1===r.description.length&&r.shape===Wh&&(r.shape=Uh),!r.type&&n.doc&&(It.info("Setting cluster for ",s,pd(n)),r.type="group",r.dir=pd(n),r.shape=n.type===sh?"divider":"roundedWithTitle",r.classes=r.classes+" "+Kh+" "+(a?Qh:""));const i={labelStyle:"",shape:r.shape,labelText:r.description,classes:r.classes,style:"",id:s,dir:r.dir,domId:ud(s,cd),type:r.type,padding:15};if(n.note){const e={labelStyle:"",shape:"note",labelText:n.note.text,classes:Xh,style:"",id:s+nd+"-"+cd,domId:ud(s,cd,td),type:r.type,padding:15},a={labelStyle:"",shape:"noteGroup",labelText:n.note.text,classes:r.classes,style:"",id:s+rd,domId:ud(s,cd,Jh),type:"group",padding:0};cd++;const o=s+rd;t.setNode(o,a),t.setNode(e.id,e),t.setNode(s,i),t.setParent(s,o),t.setParent(e.id,o);let l=s,c=e.id;"left of"===n.note.position&&(l=e.id,c=s),t.setEdge(l,c,{arrowhead:"none",arrowType:"",style:id,labelStyle:"",classes:Gh,arrowheadStyle:ad,labelpos:"c",labelType:sd,thickness:od})}else t.setNode(s,i)}e&&"root"!==e.id&&(It.trace("Setting node ",s," to be child of its parent ",e.id),t.setParent(s,e.id)),n.doc&&(It.trace("Adding nodes children "),dd(t,n,n.doc,r,i,!a))},dd=(t,e,n,r,i,a)=>{It.trace("items",n),n.forEach((n=>{switch(n.stmt){case rh:case ah:hd(t,e,n,r,i,a);break;case ih:{hd(t,e,n.state1,r,i,a),hd(t,e,n.state2,r,i,a);const s={id:"edge"+cd,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:id,labelStyle:"",label:zt.sanitizeText(n.description,dr()),arrowheadStyle:ad,labelpos:"c",labelType:sd,thickness:od,classes:Vh};t.setEdge(n.state1.id,n.state2.id,s,cd),cd++}}}))},pd=(t,e="TB")=>{let n=e;if(t.doc)for(let r=0;r<t.doc.length;r++){const e=t.doc[r];"dir"===e.stmt&&(n=e.value)}return n},fd={setConf:function(t){const e=Object.keys(t);for(const n of e)t[n]},getClasses:function(t,e){It.trace("Extracting classes"),e.db.clear();try{return e.parser.parse(t),e.db.extract(e.db.getRootDocV2()),e.db.getClasses()}catch(n){return n}},draw:function(t,e,n,r){It.info("Drawing state diagram (v2)",e),ld={};let i=r.db.getDirection();void 0===i&&(i="LR");const{securityLevel:a,state:s}=dr(),l=s.nodeSpacing||50,c=s.rankSpacing||50;It.info(r.db.getRootDocV2()),r.db.extract(r.db.getRootDocV2()),It.info(r.db.getRootDocV2());const u=r.db.getStates(),h=new ut.k({multigraph:!0,compound:!0}).setGraph({rankdir:pd(r.db.getRootDocV2()),nodesep:l,ranksep:c,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));let d;hd(h,void 0,r.db.getRootDocV2(),u,r.db,!0),"sandbox"===a&&(d=(0,o.Ys)("#i"+e));const p="sandbox"===a?(0,o.Ys)(d.nodes()[0].contentDocument.body):(0,o.Ys)("body"),f=p.select(`[id="${e}"]`),m=p.select("#"+e+" g");Js(m,h,["barb"],Hh,e);nr.insertTitle(f,"statediagramTitleText",s.titleTopMargin,r.db.getDiagramTitle());const g=f.node().getBBox(),y=g.width+16,b=g.height+16;f.attr("class",Hh);const x=f.node().getBBox();xr(f,b,y,s.useMaxWidth);const v=`${x.x-8} ${x.y-8} ${y} ${b}`;It.debug(`viewBox ${v}`),f.attr("viewBox",v);const _=document.querySelectorAll('[id="'+e+'"] .edgeLabel .label');for(const o of _){const t=o.getBBox(),e=document.createElementNS("http://www.w3.org/2000/svg",Uh);e.setAttribute("rx",0),e.setAttribute("ry",0),e.setAttribute("width",t.width),e.setAttribute("height",t.height),o.insertBefore(e,o.firstChild)}}};var md=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,2],r=[1,5],i=[6,9,11,17,18,20,22,23,24,26],a=[1,15],s=[1,16],o=[1,17],l=[1,18],c=[1,19],u=[1,20],h=[1,24],d=[4,6,9,11,17,18,20,22,23,24,26],p={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,acc_title:18,acc_title_value:19,acc_descr:20,acc_descr_value:21,acc_descr_multiline_value:22,section:23,taskName:24,taskData:25,open_directive:26,type_directive:27,arg_directive:28,close_directive:29,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"acc_title",19:"acc_title_value",20:"acc_descr",21:"acc_descr_value",22:"acc_descr_multiline_value",23:"section",24:"taskName",25:"taskData",26:"open_directive",27:"type_directive",28:"arg_directive",29:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,2],[10,2],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 1:return a[o-1];case 3:case 7:case 8:this.$=[];break;case 4:a[o-1].push(a[o]),this.$=a[o-1];break;case 5:case 6:this.$=a[o];break;case 11:r.setDiagramTitle(a[o].substr(6)),this.$=a[o].substr(6);break;case 12:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 13:case 14:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 15:r.addSection(a[o].substr(8)),this.$=a[o].substr(8);break;case 16:r.addTask(a[o-1],a[o]),this.$="task";break;case 18:r.parseDirective("%%{","open_directive");break;case 19:r.parseDirective(a[o],"type_directive");break;case 20:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 21:r.parseDirective("}%%","close_directive","journey")}},table:[{3:1,4:n,7:3,12:4,26:r},{1:[3]},e(i,[2,3],{5:6}),{3:7,4:n,7:3,12:4,26:r},{13:8,27:[1,9]},{27:[2,18]},{6:[1,10],7:21,8:11,9:[1,12],10:13,11:[1,14],12:4,17:a,18:s,20:o,22:l,23:c,24:u,26:r},{1:[2,2]},{14:22,15:[1,23],29:h},e([15,29],[2,19]),e(i,[2,8],{1:[2,1]}),e(i,[2,4]),{7:21,10:25,12:4,17:a,18:s,20:o,22:l,23:c,24:u,26:r},e(i,[2,6]),e(i,[2,7]),e(i,[2,11]),{19:[1,26]},{21:[1,27]},e(i,[2,14]),e(i,[2,15]),{25:[1,28]},e(i,[2,17]),{11:[1,29]},{16:30,28:[1,31]},{11:[2,21]},e(i,[2,5]),e(i,[2,12]),e(i,[2,13]),e(i,[2,16]),e(d,[2,9]),{14:32,29:h},{29:[2,20]},{11:[1,33]},e(d,[2,10])],defaultActions:{5:[2,18],7:[2,2],24:[2,21],31:[2,20]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},f=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),26;case 1:return this.begin("type_directive"),27;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),29;case 4:return 28;case 5:case 6:case 8:case 9:break;case 7:return 11;case 10:return 4;case 11:return 17;case 12:return this.begin("acc_title"),18;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),20;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:return 23;case 20:return 24;case 21:return 25;case 22:return 15;case 23:return 6;case 24:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,14,16,19,20,21,22,23,24],inclusive:!0}}},t);function m(){this.yy={}}return p.lexer=f,m.prototype=p,p.Parser=m,new m}();md.parser=md;const gd=md,yd=t=>null!==t.match(/^\s*journey/);let bd="";const xd=[],vd=[],_d=[],kd=function(){let t=!0;for(const[e,n]of _d.entries())_d[e].processed,t=t&&n.processed;return t},Td={parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().journey,clear:function(){xd.length=0,vd.length=0,bd="",_d.length=0,Zr()},setDiagramTitle:Ur,getDiagramTitle:Wr,setAccTitle:jr,getAccTitle:Pr,setAccDescription:zr,getAccDescription:Yr,addSection:function(t){bd=t,xd.push(t)},getSections:function(){return xd},getTasks:function(){let t=kd();let e=0;for(;!t&&e<100;)t=kd(),e++;return vd.push(..._d),vd},addTask:function(t,e){const n=e.substr(1).split(":");let r=0,i=[];1===n.length?(r=Number(n[0]),i=[]):(r=Number(n[0]),i=n[1].split(","));const a=i.map((t=>t.trim())),s={section:bd,type:bd,people:a,task:t,score:r};_d.push(s)},addTaskOrg:function(t){const e={section:bd,type:bd,description:t,task:t,classes:[]};vd.push(e)},getActors:function(){return function(){const t=[];return vd.forEach((e=>{e.people&&t.push(...e.people)})),[...new Set(t)].sort()}()}},wd=function(t,e){const n=t.append("rect");return n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),void 0!==e.class&&n.attr("class",e.class),n},Sd=function(t,e){const n=t.append("circle");return n.attr("cx",e.cx),n.attr("cy",e.cy),n.attr("class","actor-"+e.pos),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("r",e.r),void 0!==n.class&&n.attr("class",n.class),void 0!==e.title&&n.append("title").text(e.title),n},Ed=function(t,e){const n=e.text.replace(/<br\s*\/?>/gi," "),r=t.append("text");r.attr("x",e.x),r.attr("y",e.y),r.attr("class","legend"),r.style("text-anchor",e.anchor),void 0!==e.class&&r.attr("class",e.class);const i=r.append("tspan");return i.attr("x",e.x+2*e.textMargin),i.text(n),r};let Cd=-1;const Dd=function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},Ad=function(){function t(t,e,n,i,a,s,o,l){r(e.append("text").attr("x",n+a/2).attr("y",i+s/2+5).style("font-color",l).style("text-anchor","middle").text(t),o)}function e(t,e,n,i,a,s,o,l,c){const{taskFontSize:u,taskFontFamily:h}=l,d=t.split(/<br\s*\/?>/gi);for(let p=0;p<d.length;p++){const t=p*u-u*(d.length-1)/2,l=e.append("text").attr("x",n+a/2).attr("y",i).attr("fill",c).style("text-anchor","middle").style("font-size",u).style("font-family",h);l.append("tspan").attr("x",n+a/2).attr("dy",t).text(d[p]),l.attr("y",i+s/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),r(l,o)}}function n(t,n,i,a,s,o,l,c){const u=n.append("switch"),h=u.append("foreignObject").attr("x",i).attr("y",a).attr("width",s).attr("height",o).attr("position","fixed").append("xhtml:div").style("display","table").style("height","100%").style("width","100%");h.append("div").attr("class","label").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,u,i,a,s,o,l,c),r(h,l)}function r(t,e){for(const n in e)n in e&&t.attr(n,e[n])}return function(r){return"fo"===r.textPlacement?n:"old"===r.textPlacement?t:e}}(),Od={drawRect:wd,drawCircle:Sd,drawSection:function(t,e,n){const r=t.append("g"),i=Dd();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=n.width,i.height=n.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,wd(r,i),Ad(n)(e.text,r,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},n,e.colour)},drawText:Ed,drawLabel:function(t,e){const n=t.append("polygon");var r,i,a,s,o;n.attr("points",(r=e.x,i=e.y,r+","+i+" "+(r+(a=50))+","+i+" "+(r+a)+","+(i+(s=20)-(o=7))+" "+(r+a-1.2*o)+","+(i+s)+" "+r+","+(i+s))),n.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,Ed(t,e)},drawTask:function(t,e,n){const r=e.x+n.width/2,i=t.append("g");Cd++;i.append("line").attr("id","task"+Cd).attr("x1",r).attr("y1",e.y).attr("x2",r).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),function(t,e){const n=15,r=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",n).attr("stroke-width",2).attr("overflow","visible"),i=t.append("g");i.append("circle").attr("cx",e.cx-5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",e.cx+5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),e.score>3?function(t){const r=(0,o.Nb1)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",r).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}(i):e.score<3?function(t){const r=(0,o.Nb1)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",r).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}(i):i.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}(i,{cx:r,cy:300+30*(5-e.score),score:e.score});const a=Dd();a.x=e.x,a.y=e.y,a.fill=e.fill,a.width=n.width,a.height=n.height,a.class="task task-type-"+e.num,a.rx=3,a.ry=3,wd(i,a);let s=e.x+14;e.people.forEach((t=>{const n=e.actors[t].color,r={cx:s,cy:e.y,r:7,fill:n,stroke:"#000",title:t,pos:e.actors[t].position};Sd(i,r),s+=10})),Ad(n)(e.task,i,a.x,a.y,a.width,a.height,{class:"task"},n,e.colour)},drawBackgroundRect:function(t,e){wd(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},getTextObj:function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},getNoteRect:Dd,initGraphics:function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")}},Id={};const Ld=dr().journey,Nd=Ld.leftMargin,Md={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])},updateBounds:function(t,e,n,r){const i=dr().journey,a=this;let s=0;var o;this.sequenceItems.forEach((function(l){s++;const c=a.sequenceItems.length-s+1;a.updateVal(l,"starty",e-c*i.boxMargin,Math.min),a.updateVal(l,"stopy",r+c*i.boxMargin,Math.max),a.updateVal(Md.data,"startx",t-c*i.boxMargin,Math.min),a.updateVal(Md.data,"stopx",n+c*i.boxMargin,Math.max),"activation"!==o&&(a.updateVal(l,"startx",t-c*i.boxMargin,Math.min),a.updateVal(l,"stopx",n+c*i.boxMargin,Math.max),a.updateVal(Md.data,"starty",e-c*i.boxMargin,Math.min),a.updateVal(Md.data,"stopy",r+c*i.boxMargin,Math.max))}))},insert:function(t,e,n,r){const i=Math.min(t,n),a=Math.max(t,n),s=Math.min(e,r),o=Math.max(e,r);this.updateVal(Md.data,"startx",i,Math.min),this.updateVal(Md.data,"starty",s,Math.min),this.updateVal(Md.data,"stopx",a,Math.max),this.updateVal(Md.data,"stopy",o,Math.max),this.updateBounds(i,s,a,o)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},Fd=Ld.sectionFills,Bd=Ld.sectionColours,Rd=function(t,e,n){const r=dr().journey;let i="";const a=n+(2*r.height+r.diagramMarginY);let s=0,o="#CCC",l="black",c=0;for(const[u,h]of e.entries()){if(i!==h.section){o=Fd[s%Fd.length],c=s%Fd.length,l=Bd[s%Bd.length];const e={x:u*r.taskMargin+u*r.width+Nd,y:50,text:h.section,fill:o,num:c,colour:l};Od.drawSection(t,e,r),i=h.section,s++}const e=h.people.reduce(((t,e)=>(Id[e]&&(t[e]=Id[e]),t)),{});h.x=u*r.taskMargin+u*r.width+Nd,h.y=a,h.width=r.diagramMarginX,h.height=r.diagramMarginY,h.colour=l,h.fill=o,h.num=c,h.actors=e,Od.drawTask(t,h,r),Md.insert(h.x,h.y,h.x+h.width+r.taskMargin,450)}},$d={setConf:function(t){Object.keys(t).forEach((function(e){Ld[e]=t[e]}))},draw:function(t,e,n,r){const i=dr().journey;r.db.clear(),r.parser.parse(t+"\n");const a=dr().securityLevel;let s;"sandbox"===a&&(s=(0,o.Ys)("#i"+e));const l="sandbox"===a?(0,o.Ys)(s.nodes()[0].contentDocument.body):(0,o.Ys)("body");Md.init();const c=l.select("#"+e);Od.initGraphics(c);const u=r.db.getTasks(),h=r.db.getDiagramTitle(),d=r.db.getActors();for(const o in Id)delete Id[o];let p=0;d.forEach((t=>{Id[t]={color:i.actorColours[p%i.actorColours.length],position:p},p++})),function(t){const e=dr().journey;let n=60;Object.keys(Id).forEach((r=>{const i=Id[r].color,a={cx:20,cy:n,r:7,fill:i,stroke:"#000",pos:Id[r].position};Od.drawCircle(t,a);const s={x:40,y:n+7,fill:"#666",text:r,textMargin:5|e.boxTextMargin};Od.drawText(t,s),n+=20}))}(c),Md.insert(0,0,Nd,50*Object.keys(Id).length),Rd(c,u,0);const f=Md.getBounds();h&&c.append("text").text(h).attr("x",Nd).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);const m=f.stopy-f.starty+2*i.diagramMarginY,g=Nd+f.stopx+2*i.diagramMarginX;xr(c,m,g,i.useMaxWidth),c.append("line").attr("x1",Nd).attr("y1",4*i.height).attr("x2",g-Nd-4).attr("y2",4*i.height).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");const y=h?70:0;c.attr("viewBox",`${f.startx} -25 ${g} ${m+y}`),c.attr("preserveAspectRatio","xMinYMin meet"),c.attr("height",m+y+25)}};let Zd={};const jd={setConf:function(t){Zd={...Zd,...t}},draw:(t,e,n)=>{try{It.debug("Renering svg for syntax error\n");const t=(0,o.Ys)("#"+e),r=t.append("g");r.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),r.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),r.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),r.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),r.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),r.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),r.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in graph"),r.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text("mermaid version "+n),t.attr("height",100),t.attr("width",500),t.attr("viewBox","768 0 912 512")}catch(i){It.error("Error while rendering info diagram"),It.error((r=i)instanceof Error?r.message:String(r))}var r}},Pd="flowchart-elk",zd={id:Pd,detector:(t,e)=>{var n;return!!(t.match(/^\s*flowchart-elk/)||t.match(/^\s*flowchart|graph/)&&"elk"===(null==(n=null==e?void 0:e.flowchart)?void 0:n.defaultRenderer))},loader:async()=>{const{diagram:t}=await n.e(9487).then(n.bind(n,9487));return{id:Pd,diagram:t}}},Yd="timeline",Ud={id:Yd,detector:t=>null!==t.match(/^\s*timeline/),loader:async()=>{const{diagram:t}=await n.e(6316).then(n.bind(n,6316));return{id:Yd,diagram:t}}},Wd="mindmap",Hd={id:Wd,detector:t=>null!==t.match(/^\s*mindmap/),loader:async()=>{const{diagram:t}=await n.e(7724).then(n.bind(n,7724));return{id:Wd,diagram:t}}};let qd=!1;const Vd=()=>{qd||(qd=!0,In(zd,Ud,Hd),ii("error",{db:{clear:()=>{}},styles:Tr,renderer:jd,parser:{parser:{yy:{}},parse:()=>{}},init:()=>{}},(t=>"error"===t.toLowerCase().trim())),ii("---",{db:{clear:()=>{}},styles:Tr,renderer:jd,parser:{parser:{yy:{}},parse:()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with unindented `---` blocks")}},init:()=>null},(t=>t.toLowerCase().trimStart().startsWith("---"))),ii("c4",{parser:Yi,db:ia,renderer:Ba,styles:Lr,init:t=>{Ba.setConf(t.c4)}},Ui),ii("class",{parser:$a,db:ns,renderer:ms,styles:_r,init:t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute,ns.clear()}},Za),ii("classDiagram",{parser:$a,db:ns,renderer:ro,styles:_r,init:t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute,ns.clear()}},ja),ii("er",{parser:ao,db:uo,renderer:To,styles:kr},so),ii("gantt",{parser:Ll,db:hc,renderer:fc,styles:Sr},Nl),ii("info",{parser:gc,db:xc,renderer:vc,styles:Er},_c),ii("pie",{parser:Tc,db:Cc,renderer:Ic,styles:Cr},wc),ii("requirement",{parser:Nc,db:jc,renderer:Kc,styles:Dr},Mc),ii("sequence",{parser:Jc,db:vu,renderer:Qu,styles:Ar,init:t=>{if(t.sequence||(t.sequence={}),t.sequence.arrowMarkerAbsolute=t.arrowMarkerAbsolute,"sequenceDiagram"in t)throw new Error("`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.");vu.setWrap(t.wrap),Qu.setConf(t.sequence)}},tu),ii("state",{parser:th,db:Lh,renderer:Yh,styles:Or,init:t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,Lh.clear()}},eh),ii("stateDiagram",{parser:th,db:Lh,renderer:fd,styles:Or,init:t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,Lh.clear()}},nh),ii("journey",{parser:gd,db:Td,renderer:$d,styles:Ir,init:t=>{$d.setConf(t.journey),Td.clear()}},yd),ii("flowchart",{parser:So,db:Tl,renderer:Ol,styles:wr,init:t=>{t.flowchart||(t.flowchart={}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,El(t.flowchart),Tl.clear(),Tl.setGen("gen-1")}},Eo),ii("flowchart-v2",{parser:So,db:Tl,renderer:Ol,styles:wr,init:t=>{t.flowchart||(t.flowchart={}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,hr({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}}),Ol.setConf(t.flowchart),Tl.clear(),Tl.setGen("gen-2")}},Co),ii("gitGraph",{parser:oi,db:Si,renderer:ji,styles:Pi},li))};class Gd{constructor(t,e){var n,r;this.txt=t,this.type="graph",this.detectTypeFailed=!1;const i=dr();this.txt=t;try{this.type=On(t,i)}catch(o){this.handleError(o,e),this.type="error",this.detectTypeFailed=!0}const a=ai(this.type);It.debug("Type "+this.type),this.db=a.db,null==(r=(n=this.db).clear)||r.call(n),this.renderer=a.renderer,this.parser=a.parser;const s=this.parser.parse.bind(this.parser);this.parser.parse=t=>s(function(t,e){var n;const r=t.match(En);if(r){const i=Sn(r[1],{schema:wn});return(null==i?void 0:i.title)&&(null==(n=e.setDiagramTitle)||n.call(e,i.title)),t.slice(r[0].length)}return t}(t,this.db)),this.parser.parser.yy=this.db,a.init&&(a.init(i),It.info("Initialized diagram "+this.type,i)),this.txt+="\n",this.parse(this.txt,e)}parse(t,e){var n,r;if(this.detectTypeFailed)return!1;try{return t+="\n",null==(r=(n=this.db).clear)||r.call(n),this.parser.parse(t),!0}catch(i){this.handleError(i,e)}return!1}handleError(t,e){if(void 0===e)throw t;tr(t)?e(t.str,t.hash):e(t)}getParser(){return this.parser}getType(){return this.type}}const Xd=(t,e)=>{const n=On(t,dr());try{ai(n)}catch(r){const i=An[n].loader;if(!i)throw new Error(`Diagram ${n} not found.`);return i().then((({diagram:r})=>(ii(n,r,void 0),new Gd(t,e))))}return new Gd(t,e)},Kd=Gd,Qd="graphics-document document";const Jd=["graph","flowchart","flowchart-v2","stateDiagram","stateDiagram-v2"],tp="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",ep="sandbox",np="loose",rp="http://www.w3.org/1999/xlink",ip="http://www.w3.org/1999/xhtml",ap=["foreignobject"],sp=["dominant-baseline"];const op=function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)})),e=e.replace(/classDef.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)})),e=e.replace(/#\w+;/g,(function(t){const e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?"\ufb02\xb0\xb0"+e+"\xb6\xdf":"\ufb02\xb0"+e+"\xb6\xdf"})),e},lp=function(t){let e=t;return e=e.replace(/\ufb02\xb0\xb0/g,"&#"),e=e.replace(/\ufb02\xb0/g,"&"),e=e.replace(/\xb6\xdf/g,";"),e},cp=(t,e,n=[])=>`\n.${t} ${e} { ${n.join(" !important; ")} !important; }`,up=(t,e,n,r)=>{const i=((t,e,n={})=>{var r;let i="";if(void 0!==t.themeCSS&&(i+=`\n${t.themeCSS}`),void 0!==t.fontFamily&&(i+=`\n:root { --mermaid-font-family: ${t.fontFamily}}`),void 0!==t.altFontFamily&&(i+=`\n:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),!(0,At.Z)(n)&&Jd.includes(e)){const e=t.htmlLabels||(null==(r=t.flowchart)?void 0:r.htmlLabels)?["> *","span"]:["rect","polygon","ellipse","circle","path"];for(const t in n){const r=n[t];(0,At.Z)(r.styles)||e.forEach((t=>{i+=cp(r.id,t,r.styles)})),(0,At.Z)(r.textStyles)||(i+=cp(r.id,"tspan",r.textStyles))}}return i})(t,e,n);return F(it(`${r}{${Mr(e,i,t.themeVariables)}}`),B)},hp=(t="",e,n)=>{let r=t;return n||e||(r=r.replace(/marker-end="url\(.*?#/g,'marker-end="url(#')),r=lp(r),r=r.replace(/<br>/g,"<br/>"),r},dp=(t="",e)=>`<iframe style="width:100%;height:${e?e.viewBox.baseVal.height+"px":"100%"};border:0;margin:0;" src="data:text/html;base64,${btoa('<body style="margin:0">'+t+"</body>")}" sandbox="allow-top-navigation-by-user-activation allow-popups">\n The "iframe" tag is not supported by your browser.\n</iframe>`,pp=(t,e,n,r,i)=>{const a=t.append("div");a.attr("id",n),r&&a.attr("style",r);const s=a.append("svg").attr("id",e).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg");return i&&s.attr("xmlns:xlink",i),s.append("g"),t};function fp(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}const mp=(t,e,n,r)=>{var i,a,s;null==(i=t.getElementById(e))||i.remove(),null==(a=t.getElementById(n))||a.remove(),null==(s=t.getElementById(r))||s.remove()};function gp(t,e,n,r){var i,a;a=t,(i=e).attr("role",Qd),(0,At.Z)(a)||i.attr("aria-roledescription",a),function(t,e,n,r){if(void 0!==t.insert&&(e||n)){if(n){const e="chart-desc-"+r;t.attr("aria-describedby",e),t.insert("desc",":first-child").attr("id",e).text(n)}if(e){const n="chart-title-"+r;t.attr("aria-labelledby",n),t.insert("title",":first-child").attr("id",n).text(e)}}}(e,n,r,e.attr("id"))}const yp=Object.freeze({render:function(t,e,n,r){var i,a,s,l;Vd(),mr();const c=nr.detectInit(e);c&&(Qn(c),fr(c));const h=dr();It.debug(h),e.length>((null==h?void 0:h.maxTextSize)??5e4)&&(e=tp),e=e.replace(/\r\n?/g,"\n");const d="#"+t,p="i"+t,f="#"+p,m="d"+t,g="#"+m;let y=(0,o.Ys)("body");const b=h.securityLevel===ep,x=h.securityLevel===np,v=h.fontFamily;if(void 0!==r){if(r&&(r.innerHTML=""),b){const t=fp((0,o.Ys)(r),p);y=(0,o.Ys)(t.nodes()[0].contentDocument.body),y.node().style.margin=0}else y=(0,o.Ys)(r);pp(y,t,m,`font-family: ${v}`,rp)}else{if(mp(document,t,m,p),b){const t=fp((0,o.Ys)("body"),p);y=(0,o.Ys)(t.nodes()[0].contentDocument.body),y.node().style.margin=0}else y=(0,o.Ys)("body");pp(y,t,m)}let _,k;e=op(e);try{if(_=Xd(e),"then"in _)throw new Error("Diagram is a promise. Use renderAsync.")}catch(N){_=new Kd("error"),k=N}const T=y.select(g).node(),w=_.type,S=T.firstChild,E=S.firstChild,C=Jd.includes(w)?_.renderer.getClasses(e,_):{},D=up(h,w,C,d),A=document.createElement("style");A.innerHTML=D,S.insertBefore(A,E);try{_.renderer.draw(e,t,rr,_)}catch(M){throw jd.draw(e,t,rr),M}gp(w,y.select(`${g} svg`),null==(a=(i=_.db).getAccTitle)?void 0:a.call(i),null==(l=(s=_.db).getAccDescription)?void 0:l.call(s)),y.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",ip);let O=y.select(g).node().innerHTML;if(It.debug("config.arrowMarkerAbsolute",h.arrowMarkerAbsolute),O=hp(O,b,jt(h.arrowMarkerAbsolute)),b){const t=y.select(g+" svg").node();O=dp(O,t)}else x||(O=u().sanitize(O,{ADD_TAGS:ap,ADD_ATTR:sp}));if(void 0!==n)switch(w){case"flowchart":case"flowchart-v2":n(O,Tl.bindFunctions);break;case"gantt":n(O,hc.bindFunctions);break;case"class":case"classDiagram":n(O,ns.bindFunctions);break;default:n(O)}else It.debug("CB = undefined!");ku();const I=b?f:g,L=(0,o.Ys)(I).node();if(L&&"remove"in L&&L.remove(),k)throw k;return O},renderAsync:async function(t,e,n,r){var i,a,s,l;Vd(),mr();const c=nr.detectInit(e);c&&(Qn(c),fr(c));const h=dr();It.debug(h),e.length>((null==h?void 0:h.maxTextSize)??5e4)&&(e=tp),e=e.replace(/\r\n?/g,"\n");const d="#"+t,p="i"+t,f="#"+p,m="d"+t,g="#"+m;let y=(0,o.Ys)("body");const b=h.securityLevel===ep,x=h.securityLevel===np,v=h.fontFamily;if(void 0!==r){if(r&&(r.innerHTML=""),b){const t=fp((0,o.Ys)(r),p);y=(0,o.Ys)(t.nodes()[0].contentDocument.body),y.node().style.margin=0}else y=(0,o.Ys)(r);pp(y,t,m,`font-family: ${v}`,rp)}else{if(mp(document,t,m,p),b){const t=fp((0,o.Ys)("body"),p);y=(0,o.Ys)(t.nodes()[0].contentDocument.body),y.node().style.margin=0}else y=(0,o.Ys)("body");pp(y,t,m)}let _,k;e=op(e);try{_=await Xd(e)}catch(N){_=new Kd("error"),k=N}const T=y.select(g).node(),w=_.type,S=T.firstChild,E=S.firstChild,C=Jd.includes(w)?_.renderer.getClasses(e,_):{},D=up(h,w,C,d),A=document.createElement("style");A.innerHTML=D,S.insertBefore(A,E);try{await _.renderer.draw(e,t,rr,_)}catch(M){throw jd.draw(e,t,rr),M}gp(w,y.select(`${g} svg`),null==(a=(i=_.db).getAccTitle)?void 0:a.call(i),null==(l=(s=_.db).getAccDescription)?void 0:l.call(s)),y.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",ip);let O=y.select(g).node().innerHTML;if(It.debug("config.arrowMarkerAbsolute",h.arrowMarkerAbsolute),O=hp(O,b,jt(h.arrowMarkerAbsolute)),b){const t=y.select(g+" svg").node();O=dp(O,t)}else x||(O=u().sanitize(O,{ADD_TAGS:ap,ADD_ATTR:sp}));if(void 0!==n)switch(w){case"flowchart":case"flowchart-v2":n(O,Tl.bindFunctions);break;case"gantt":n(O,hc.bindFunctions);break;case"class":case"classDiagram":n(O,ns.bindFunctions);break;default:n(O)}else It.debug("CB = undefined!");ku();const I=b?f:g,L=(0,o.Ys)(I).node();if(L&&"remove"in L&&L.remove(),k)throw k;return O},parse:function(t,e){return Vd(),new Kd(t,e).parse(t,e)},parseAsync:async function(t,e){return Vd(),(await Xd(t,e)).parse(t,e)},parseDirective:Gr,initialize:function(t={}){var e;(null==t?void 0:t.fontFamily)&&!(null==(e=t.themeVariables)?void 0:e.fontFamily)&&(t.themeVariables={fontFamily:t.fontFamily}),ar=Mn({},t),(null==t?void 0:t.theme)&&t.theme in qt?t.themeVariables=qt[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=qt.default.getThemeVariables(t.themeVariables));const n="object"==typeof t?(t=>(sr=Mn({},ir),sr=Mn(sr,t),t.theme&&qt[t.theme]&&(sr.themeVariables=qt[t.theme].getThemeVariables(t.themeVariables)),cr(sr,or),sr))(t):ur();Lt(n.logLevel),Vd()},getConfig:dr,setConfig:hr,getSiteConfig:ur,updateSiteConfig:t=>(sr=Mn(sr,t),cr(sr,or),sr),reset:()=>{mr()},globalReset:()=>{mr(ir)},defaultConfig:ir});Lt(dr().logLevel),mr(dr());const bp=(t,e,n)=>{It.warn(t),tr(t)?(n&&n(t.str,t.hash),e.push({...t,message:t.str,error:t})):(n&&n(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},xp=async function(t,e,n){const i=yp.getConfig();let a;if(t&&(wp.sequenceConfig=t),It.debug((n?"":"No ")+"Callback function found"),void 0===e)a=document.querySelectorAll(".mermaid");else if("string"==typeof e)a=document.querySelectorAll(e);else if(e instanceof HTMLElement)a=[e];else{if(!(e instanceof NodeList))throw new Error("Invalid argument nodes for mermaid.init");a=e}It.debug(`Found ${a.length} diagrams`),void 0!==(null==t?void 0:t.startOnLoad)&&(It.debug("Start On Load: "+(null==t?void 0:t.startOnLoad)),yp.updateSiteConfig({startOnLoad:null==t?void 0:t.startOnLoad}));const s=new nr.initIdGenerator(i.deterministicIds,i.deterministicIDSeed);let o;const l=[];for(const u of Array.from(a)){if(It.info("Rendering diagram: "+u.id),u.getAttribute("data-processed"))continue;u.setAttribute("data-processed","true");const t=`mermaid-${s.next()}`;o=u.innerHTML,o=r(nr.entityDecode(o)).trim().replace(/<br\s*\/?>/gi,"<br/>");const e=nr.detectInit(o);e&&It.debug("Detected early reinit: ",e);try{await yp.renderAsync(t,o,((e,r)=>{u.innerHTML=e,void 0!==n&&n(t),r&&r(u)}),u)}catch(c){bp(c,l,wp.parseError)}}if(l.length>0)throw l[0]},vp=function(){if(wp.startOnLoad){const{startOnLoad:t}=yp.getConfig();t&&wp.init().catch((t=>It.error("Mermaid failed to initialize",t)))}};"undefined"!=typeof document&&window.addEventListener("load",vp,!1);const _p=[];let kp=!1;const Tp=async()=>{if(!kp){for(kp=!0;_p.length>0;){const e=_p.shift();if(e)try{await e()}catch(t){It.error("Error executing queue",t)}}kp=!1}},wp={startOnLoad:!0,diagrams:{},mermaidAPI:yp,parse:t=>yp.parse(t,wp.parseError),parseAsync:t=>new Promise(((e,n)=>{_p.push((()=>new Promise(((r,i)=>{yp.parseAsync(t,wp.parseError).then((t=>{r(t),e(t)}),(t=>{It.error("Error parsing",t),i(t),n(t)}))})))),Tp().catch(n)})),render:yp.render,renderAsync:(t,e,n,r)=>new Promise(((i,a)=>{_p.push((()=>new Promise(((s,o)=>{yp.renderAsync(t,e,n,r).then((t=>{s(t),i(t)}),(t=>{It.error("Error parsing",t),o(t),a(t)}))})))),Tp().catch(a)})),init:async function(t,e,n){try{await xp(t,e,n)}catch(r){It.warn("Syntax Error rendering"),tr(r)&&It.warn(r.str),wp.parseError&&wp.parseError(r)}},initThrowsErrors:function(t,e,n){const i=yp.getConfig();let a;if(t&&(wp.sequenceConfig=t),It.debug((n?"":"No ")+"Callback function found"),void 0===e)a=document.querySelectorAll(".mermaid");else if("string"==typeof e)a=document.querySelectorAll(e);else if(e instanceof HTMLElement)a=[e];else{if(!(e instanceof NodeList))throw new Error("Invalid argument nodes for mermaid.init");a=e}It.debug(`Found ${a.length} diagrams`),void 0!==(null==t?void 0:t.startOnLoad)&&(It.debug("Start On Load: "+(null==t?void 0:t.startOnLoad)),yp.updateSiteConfig({startOnLoad:null==t?void 0:t.startOnLoad}));const s=new nr.initIdGenerator(i.deterministicIds,i.deterministicIDSeed);let o;const l=[];for(const u of Array.from(a)){if(It.info("Rendering diagram: "+u.id),u.getAttribute("data-processed"))continue;u.setAttribute("data-processed","true");const t=`mermaid-${s.next()}`;o=u.innerHTML,o=r(nr.entityDecode(o)).trim().replace(/<br\s*\/?>/gi,"<br/>");const e=nr.detectInit(o);e&&It.debug("Detected early reinit: ",e);try{yp.render(t,o,((e,r)=>{u.innerHTML=e,void 0!==n&&n(t),r&&r(u)}),u)}catch(c){bp(c,l,wp.parseError)}}if(l.length>0)throw l[0]},initThrowsErrorsAsync:xp,registerExternalDiagrams:async(t,{lazyLoad:e=!0}={})=>{e?In(...t):await(async(...t)=>{It.debug(`Loading ${t.length} external diagrams`);const e=(await Promise.allSettled(t.map((async({id:t,detector:e,loader:n})=>{const{diagram:r}=await n();ii(t,r,e)})))).filter((t=>"rejected"===t.status));if(e.length>0){It.error(`Failed to load ${e.length} external diagrams`);for(const t of e)It.error(t);throw new Error(`Failed to load ${e.length} external diagrams`)}})(...t)},initialize:function(t){yp.initialize(t)},parseError:void 0,contentLoaded:vp,setParseErrorHandler:function(t){wp.parseError=t}}},2944:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"}},7594:(t,e)=>{function n(t){let e,n=[];for(let r of t.split(",").map((t=>t.trim())))if(/^-?\d+$/.test(r))n.push(parseInt(r,10));else if(e=r.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[t,r,i,a]=e;if(r&&a){r=parseInt(r),a=parseInt(a);const t=r<a?1:-1;"-"!==i&&".."!==i&&"\u2025"!==i||(a+=t);for(let e=r;e!==a;e+=t)n.push(e)}}return n}e.default=n,t.exports=n},349:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="// Copyright 2018 ConsenSys AG\n\n// Licensed under the Apache License, Version 2.0(the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n\n// http://www.apache.org/licenses/LICENSE-2.0\n\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Resolver, parse } from '../resolver'\n\ndescribe('resolver', () => {\n describe('parse()', () => {\n it('returns parts', () => {\n expect(parse('did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX')).toEqual({\n method: 'uport',\n id: '2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n did: 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n didUrl: 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n })\n expect(parse('did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX/some/path')).toEqual({\n method: 'uport',\n id: '2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n did: 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n didUrl: 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX/some/path',\n path: '/some/path',\n })\n expect(parse('did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX#fragment=123')).toEqual({\n method: 'uport',\n id: '2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n did: 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n didUrl: 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX#fragment=123',\n fragment: 'fragment=123',\n })\n expect(parse('did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX/some/path#fragment=123')).toEqual({\n method: 'uport',\n id: '2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n did: 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n didUrl: 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX/some/path#fragment=123',\n path: '/some/path',\n fragment: 'fragment=123',\n })\n expect(parse('did:nacl:Md8JiMIwsapml_FtQ2ngnGftNP5UmVCAUuhnLyAsPxI')).toEqual({\n method: 'nacl',\n id: 'Md8JiMIwsapml_FtQ2ngnGftNP5UmVCAUuhnLyAsPxI',\n did: 'did:nacl:Md8JiMIwsapml_FtQ2ngnGftNP5UmVCAUuhnLyAsPxI',\n didUrl: 'did:nacl:Md8JiMIwsapml_FtQ2ngnGftNP5UmVCAUuhnLyAsPxI',\n })\n expect(parse('did:example:21tDAKCERh95uGgKbJNHYp;service=agent;foo:bar=high')).toEqual({\n method: 'example',\n id: '21tDAKCERh95uGgKbJNHYp',\n did: 'did:example:21tDAKCERh95uGgKbJNHYp',\n didUrl: 'did:example:21tDAKCERh95uGgKbJNHYp;service=agent;foo:bar=high',\n params: {\n service: 'agent',\n 'foo:bar': 'high',\n },\n })\n expect(parse('did:example:21tDAKCERh95uGgKbJNHYp;service=agent;foo:bar=high?foo=bar')).toEqual({\n method: 'example',\n id: '21tDAKCERh95uGgKbJNHYp',\n didUrl: 'did:example:21tDAKCERh95uGgKbJNHYp;service=agent;foo:bar=high?foo=bar',\n did: 'did:example:21tDAKCERh95uGgKbJNHYp',\n query: 'foo=bar',\n params: {\n service: 'agent',\n 'foo:bar': 'high',\n },\n })\n expect(parse('did:example:21tDAKCERh95uGgKbJNHYp;service=agent;foo:bar=high/some/path?foo=bar#key1')).toEqual({\n method: 'example',\n id: '21tDAKCERh95uGgKbJNHYp',\n didUrl: 'did:example:21tDAKCERh95uGgKbJNHYp;service=agent;foo:bar=high/some/path?foo=bar#key1',\n did: 'did:example:21tDAKCERh95uGgKbJNHYp',\n query: 'foo=bar',\n path: '/some/path',\n fragment: 'key1',\n params: {\n service: 'agent',\n 'foo:bar': 'high',\n },\n })\n expect(parse('did:web:example.com%3A8443')).toEqual({\n method: 'web',\n id: 'example.com%3A8443',\n didUrl: 'did:web:example.com%3A8443',\n did: 'did:web:example.com%3A8443',\n })\n expect(parse('did:web:example.com:path:some%2Bsubpath')).toEqual({\n method: 'web',\n id: 'example.com:path:some%2Bsubpath',\n didUrl: 'did:web:example.com:path:some%2Bsubpath',\n did: 'did:web:example.com:path:some%2Bsubpath',\n })\n expect(\n parse('did:example:test:21tDAKCERh95uGgKbJNHYp;service=agent;foo:bar=high/some/path?foo=bar#key1')\n ).toEqual({\n method: 'example',\n id: 'test:21tDAKCERh95uGgKbJNHYp',\n didUrl: 'did:example:test:21tDAKCERh95uGgKbJNHYp;service=agent;foo:bar=high/some/path?foo=bar#key1',\n did: 'did:example:test:21tDAKCERh95uGgKbJNHYp',\n query: 'foo=bar',\n path: '/some/path',\n fragment: 'key1',\n params: {\n service: 'agent',\n 'foo:bar': 'high',\n },\n })\n expect(parse('did:123:test::test2')).toEqual({\n method: '123',\n id: 'test::test2',\n didUrl: 'did:123:test::test2',\n did: 'did:123:test::test2',\n })\n expect(parse('did:method:%12%AF')).toEqual({\n method: 'method',\n id: '%12%AF',\n didUrl: 'did:method:%12%AF',\n did: 'did:method:%12%AF',\n })\n })\n\n it('returns null if non compliant', () => {\n expect(parse('')).toEqual(null)\n expect(parse('did:')).toEqual(null)\n expect(parse('did:uport')).toEqual(null)\n expect(parse('did:uport:')).toEqual(null)\n expect(parse('did:uport:1234_12313***')).toEqual(null)\n expect(parse('2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX')).toEqual(null)\n expect(parse('did:method:%12%1')).toEqual(null)\n expect(parse('did:method:%1233%Ay')).toEqual(null)\n expect(parse('did:CAP:id')).toEqual(null)\n expect(parse('did:method:id::anotherid%r9')).toEqual(null)\n })\n })\n\n describe('resolve', () => {\n let resolver: Resolver\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let mockmethod: any\n const mockReturn = Promise.resolve({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n beforeAll(() => {\n mockmethod = jest.fn().mockReturnValue(mockReturn)\n resolver = new Resolver({\n example: async (did: string) => ({\n didResolutionMetadata: { contentType: 'application/did+ld+json' },\n didDocument: {\n '@context': 'https://w3id.org/did/v1',\n id: did,\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n }),\n mock: mockmethod,\n })\n })\n\n it('fails on unhandled methods', async () => {\n await expect(resolver.resolve('did:borg:2nQtiQG6Cgm1GY')).resolves.toEqual({\n didResolutionMetadata: { error: 'unsupportedDidMethod' },\n didDocument: null,\n didDocumentMetadata: {},\n })\n })\n\n it('fails on parse error', async () => {\n await expect(resolver.resolve('did:borg:')).resolves.toEqual({\n didResolutionMetadata: { error: 'invalidDid' },\n didDocument: null,\n didDocumentMetadata: {},\n })\n })\n\n it('resolves did document', async () => {\n await expect(resolver.resolve('did:example:123456789')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+ld+json' },\n didDocument: {\n '@context': 'https://w3id.org/did/v1',\n id: 'did:example:123456789',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n })\n\n it('resolves did document with legacy resolver', async () => {\n const resolverWithLegacy = new Resolver(\n {},\n {\n legacyResolvers: {\n legacy: async (did: string) => ({\n '@context': 'https://w3id.org/did/v1',\n id: did,\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n }),\n },\n }\n )\n\n await expect(resolverWithLegacy.resolve('did:legacy:123456789')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+ld+json' },\n didDocument: {\n '@context': 'https://w3id.org/did/v1',\n id: 'did:legacy:123456789',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n })\n\n it('throws on null document', async () => {\n mockmethod = jest.fn().mockReturnValue(\n Promise.resolve({\n didResolutionMetadata: { error: 'notFound' },\n didDocument: null,\n didDocumentMetadata: {},\n })\n )\n const nullRes = new Resolver({\n nuller: mockmethod,\n })\n\n await expect(nullRes.resolve('did:nuller:asdfghjk')).resolves.toEqual({\n didResolutionMetadata: { error: 'notFound' },\n didDocument: null,\n didDocumentMetadata: {},\n })\n })\n\n describe('caching', () => {\n describe('default', () => {\n it('should not cache', async () => {\n mockmethod = jest.fn().mockReturnValue(mockReturn)\n resolver = new Resolver({\n mock: mockmethod,\n })\n\n await expect(resolver.resolve('did:mock:abcdef')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n await expect(resolver.resolve('did:mock:abcdef')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n return expect(mockmethod).toBeCalledTimes(2)\n })\n })\n })\n\n describe('cache=true', () => {\n it('should cache', async () => {\n mockmethod = jest.fn().mockReturnValue(mockReturn)\n resolver = new Resolver(\n {\n mock: mockmethod,\n },\n { cache: true }\n )\n\n await expect(resolver.resolve('did:mock:abcdef')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n await expect(resolver.resolve('did:mock:abcdef')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n return expect(mockmethod).toBeCalledTimes(1)\n })\n\n it('should respect no-cache', async () => {\n mockmethod = jest.fn().mockReturnValue(mockReturn)\n resolver = new Resolver(\n {\n mock: mockmethod,\n },\n { cache: true }\n )\n\n await expect(resolver.resolve('did:mock:abcdef')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n await expect(resolver.resolve('did:mock:abcdef;no-cache=true')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n return expect(mockmethod).toBeCalledTimes(2)\n })\n\n it('should not cache with different params', async () => {\n mockmethod = jest.fn().mockReturnValue(mockReturn)\n resolver = new Resolver(\n {\n mock: mockmethod,\n },\n { cache: true }\n )\n\n await expect(resolver.resolve('did:mock:abcdef')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n await expect(resolver.resolve('did:mock:abcdef?versionId=2')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n return expect(mockmethod).toBeCalledTimes(2)\n })\n\n it('should not cache null docs', async () => {\n mockmethod = jest.fn().mockReturnValue(\n Promise.resolve({\n didResolutionMetadata: { error: 'notFound' },\n didDocument: null,\n didDocumentMetadata: {},\n })\n )\n resolver = new Resolver(\n {\n mock: mockmethod,\n },\n { cache: true }\n )\n\n await expect(resolver.resolve('did:mock:abcdef')).resolves.toEqual({\n didResolutionMetadata: { error: 'notFound' },\n didDocument: null,\n didDocumentMetadata: {},\n })\n await expect(resolver.resolve('did:mock:abcdef')).resolves.toEqual({\n didResolutionMetadata: { error: 'notFound' },\n didDocument: null,\n didDocumentMetadata: {},\n })\n return expect(mockmethod).toBeCalledTimes(2)\n })\n })\n })\n})\n"},5883:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="// Copyright 2018 Consensys AG\n\n// Licensed under the Apache License, Version 2.0(the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n\n// http://www.apache.org/licenses/LICENSE-2.0\n\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Extensible = Record<string, any>\n\nexport interface DIDResolutionResult {\n '@context'?: 'https://w3id.org/did-resolution/v1' | string | string[]\n didResolutionMetadata: DIDResolutionMetadata\n didDocument: DIDDocument | null\n didDocumentMetadata: DIDDocumentMetadata\n}\n\nexport interface DIDResolutionOptions extends Extensible {\n accept?: string\n}\n\nexport interface DIDResolutionMetadata extends Extensible {\n contentType?: string\n error?: 'invalidDid' | 'notFound' | 'representationNotSupported' | 'unsupportedDidMethod' | string\n}\n\nexport interface DIDDocumentMetadata extends Extensible {\n created?: string\n updated?: string\n deactivated?: boolean\n versionId?: string\n nextUpdate?: string\n nextVersionId?: string\n equivalentId?: string\n canonicalId?: string\n}\n\nexport type KeyCapabilitySection =\n | 'authentication'\n | 'assertionMethod'\n | 'keyAgreement'\n | 'capabilityInvocation'\n | 'capabilityDelegation'\n\nexport type DIDDocument = {\n '@context'?: 'https://www.w3.org/ns/did/v1' | string | string[]\n id: string\n alsoKnownAs?: string[]\n controller?: string | string[]\n verificationMethod?: VerificationMethod[]\n service?: ServiceEndpoint[]\n /**\n * @deprecated\n */\n publicKey?: VerificationMethod[]\n} & {\n [x in KeyCapabilitySection]?: (string | VerificationMethod)[]\n}\n\nexport interface ServiceEndpoint {\n id: string\n type: string\n serviceEndpoint: string\n description?: string\n}\n\n/**\n * Encapsulates a JSON web key type that includes only the public properties that\n * can be used in DID documents.\n *\n * The private properties are intentionally omitted to discourage the use\n * (and accidental disclosure) of private keys in DID documents.\n */\nexport interface JsonWebKey extends Extensible {\n alg?: string\n crv?: string\n e?: string\n ext?: boolean\n key_ops?: string[]\n kid?: string\n kty: string\n n?: string\n use?: string\n x?: string\n y?: string\n}\n\nexport interface VerificationMethod {\n id: string\n type: string\n controller: string\n publicKeyBase58?: string\n publicKeyBase64?: string\n publicKeyJwk?: JsonWebKey\n publicKeyHex?: string\n publicKeyMultibase?: string\n blockchainAccountId?: string\n ethereumAddress?: string\n}\n\nexport interface Params {\n [index: string]: string\n}\n\nexport interface ParsedDID {\n did: string\n didUrl: string\n method: string\n id: string\n path?: string\n fragment?: string\n query?: string\n params?: Params\n}\n\nexport type DIDResolver = (\n did: string,\n parsed: ParsedDID,\n resolver: Resolvable,\n options: DIDResolutionOptions\n) => Promise<DIDResolutionResult>\nexport type WrappedResolver = () => Promise<DIDResolutionResult>\nexport type DIDCache = (parsed: ParsedDID, resolve: WrappedResolver) => Promise<DIDResolutionResult>\nexport type LegacyDIDResolver = (did: string, parsed: ParsedDID, resolver: Resolvable) => Promise<DIDDocument>\n\nexport type ResolverRegistry = Record<string, DIDResolver>\n\nexport interface LegacyResolverRegistry {\n [index: string]: LegacyDIDResolver\n}\n\nexport interface ResolverOptions {\n cache?: DIDCache | boolean | undefined\n legacyResolvers?: LegacyResolverRegistry\n}\n\nexport function inMemoryCache(): DIDCache {\n const cache: Map<string, DIDResolutionResult> = new Map()\n return async (parsed: ParsedDID, resolve) => {\n if (parsed.params && parsed.params['no-cache'] === 'true') return await resolve()\n\n const cached = cache.get(parsed.didUrl)\n if (cached !== undefined) return cached\n const result = await resolve()\n if (result.didResolutionMetadata?.error !== 'notFound') {\n cache.set(parsed.didUrl, result)\n }\n return result\n }\n}\n\nexport function noCache(parsed: ParsedDID, resolve: WrappedResolver): Promise<DIDResolutionResult> {\n return resolve()\n}\n\nconst PCT_ENCODED = '(?:%[0-9a-fA-F]{2})'\nconst ID_CHAR = `(?:[a-zA-Z0-9._-]|${PCT_ENCODED})`\nconst METHOD = '([a-z0-9]+)'\nconst METHOD_ID = `((?:${ID_CHAR}*:)*(${ID_CHAR}+))`\nconst PARAM_CHAR = '[a-zA-Z0-9_.:%-]'\nconst PARAM = `;${PARAM_CHAR}+=${PARAM_CHAR}*`\nconst PARAMS = `((${PARAM})*)`\nconst PATH = `(/[^#?]*)?`\nconst QUERY = `([?][^#]*)?`\nconst FRAGMENT = `(#.*)?`\nconst DID_MATCHER = new RegExp(`^did:${METHOD}:${METHOD_ID}${PARAMS}${PATH}${QUERY}${FRAGMENT}$`)\n\nexport function parse(didUrl: string): ParsedDID | null {\n if (didUrl === '' || !didUrl) return null\n const sections = didUrl.match(DID_MATCHER)\n if (sections) {\n const parts: ParsedDID = {\n did: `did:${sections[1]}:${sections[2]}`,\n method: sections[1],\n id: sections[2],\n didUrl,\n }\n if (sections[4]) {\n const params = sections[4].slice(1).split(';')\n parts.params = {}\n for (const p of params) {\n const kv = p.split('=')\n parts.params[kv[0]] = kv[1]\n }\n }\n if (sections[6]) parts.path = sections[6]\n if (sections[7]) parts.query = sections[7].slice(1)\n if (sections[8]) parts.fragment = sections[8].slice(1)\n return parts\n }\n return null\n}\n\nconst EMPTY_RESULT: DIDResolutionResult = {\n didResolutionMetadata: {},\n didDocument: null,\n didDocumentMetadata: {},\n}\n\nexport function wrapLegacyResolver(resolve: LegacyDIDResolver): DIDResolver {\n return async (did, parsed, resolver) => {\n try {\n const doc = await resolve(did, parsed, resolver)\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: { contentType: 'application/did+ld+json' },\n didDocument: doc,\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: {\n error: 'notFound',\n message: e.toString(), // This is not in spec, but may be helpful\n },\n }\n }\n }\n}\n\nexport interface Resolvable {\n resolve: (didUrl: string, options?: DIDResolutionOptions) => Promise<DIDResolutionResult>\n}\n\nexport class Resolver implements Resolvable {\n private registry: ResolverRegistry\n private cache: DIDCache\n\n constructor(registry: ResolverRegistry = {}, options: ResolverOptions = {}) {\n this.registry = registry\n this.cache = options.cache === true ? inMemoryCache() : options.cache || noCache\n if (options.legacyResolvers) {\n Object.keys(options.legacyResolvers).map((methodName) => {\n if (!this.registry[methodName]) {\n this.registry[methodName] = wrapLegacyResolver(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n options.legacyResolvers![methodName]\n )\n }\n })\n }\n }\n\n async resolve(didUrl: string, options: DIDResolutionOptions = {}): Promise<DIDResolutionResult> {\n const parsed = parse(didUrl)\n if (parsed === null) {\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: { error: 'invalidDid' },\n }\n }\n const resolver = this.registry[parsed.method]\n if (!resolver) {\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: { error: 'unsupportedDidMethod' },\n }\n }\n return this.cache(parsed, () => resolver(parsed.did, parsed, this, options))\n }\n}\n"},8105:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="import Duration, { friendlyDuration } from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Settings from \"./settings.js\";\nimport Info from \"./info.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport {\n isUndefined,\n maybeArray,\n isDate,\n isNumber,\n bestBy,\n daysInMonth,\n daysInYear,\n isLeapYear,\n weeksInWeekYear,\n normalizeObject,\n roundTo,\n objToLocalTS\n} from \"./impl/util.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport diff from \"./impl/diff.js\";\nimport { parseRFC2822Date, parseISODate, parseHTTPDate, parseSQL } from \"./impl/regexParser.js\";\nimport { parseFromTokens, explainFromTokens } from \"./impl/tokenParser.js\";\nimport {\n gregorianToWeek,\n weekToGregorian,\n gregorianToOrdinal,\n ordinalToGregorian,\n hasInvalidGregorianData,\n hasInvalidWeekData,\n hasInvalidOrdinalData,\n hasInvalidTimeData\n} from \"./impl/conversions.js\";\nimport * as Formats from \"./impl/formats.js\";\nimport {\n InvalidArgumentError,\n ConflictingSpecificationError,\n InvalidUnitError,\n InvalidDateTimeError\n} from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid DateTime\";\nconst MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", `the zone \"${zone.name}\" is not supported`);\n}\n\n// we cache week data on the DT object and this intermediates the cache\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n return dt.weekData;\n}\n\n// clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\nfunction clone(inst, alts) {\n const current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid\n };\n return new DateTime(Object.assign({}, current, alts, { old: current }));\n}\n\n// find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - o * 60 * 1000;\n\n // Test whether the zone matches the offset for this ts\n const o2 = tz.offset(utcGuess);\n\n // If so, offset didn't change and we're done\n if (o === o2) {\n return [utcGuess, o];\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= (o2 - o) * 60 * 1000;\n\n // If that gives us the local time we want, we're done\n const o3 = tz.offset(utcGuess);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\n// convert an epoch timestamp into a calendar object with the given offset\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n\n const d = new Date(ts);\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds()\n };\n}\n\n// convert a calendar object to a epoch timestamp\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\n// create a new DT instance by adding a duration, adjusting for DSTs\nfunction adjustTime(inst, dur) {\n const oPre = inst.o,\n year = inst.c.year + Math.trunc(dur.years),\n month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n c = Object.assign({}, inst.c, {\n year,\n month,\n day:\n Math.min(inst.c.day, daysInMonth(year, month)) +\n Math.trunc(dur.days) +\n Math.trunc(dur.weeks) * 7\n }),\n millisToAdd = Duration.fromObject({\n years: dur.years - Math.trunc(dur.years),\n quarters: dur.quarters - Math.trunc(dur.quarters),\n months: dur.months - Math.trunc(dur.months),\n weeks: dur.weeks - Math.trunc(dur.weeks),\n days: dur.days - Math.trunc(dur.days),\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n if (millisToAdd !== 0) {\n ts += millisToAdd;\n // that could have changed the offset by going over a DST, but we want to keep the ts the same\n o = inst.zone.offset(ts);\n }\n\n return { ts, o };\n}\n\n// helper useful in turning the results of parsing into real dates\n// by handling the zone options\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text) {\n const { setZone, zone } = opts;\n if (parsed && Object.keys(parsed).length !== 0) {\n const interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(\n Object.assign(parsed, opts, {\n zone: interpretationZone,\n // setZone is a valid option in the calling methods, but not in fromObject\n setZone: undefined\n })\n );\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(\n new Invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ${format}`)\n );\n }\n}\n\n// if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\nfunction toTechFormat(dt, format, allowZ = true) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ,\n forceSimple: true\n }).formatDateTimeFromString(dt, format)\n : null;\n}\n\n// technical time formats (e.g. the time part of ISO 8601), take some options\n// and this commonizes their handling\nfunction toTechTimeFormat(\n dt,\n {\n suppressSeconds = false,\n suppressMilliseconds = false,\n includeOffset,\n includePrefix = false,\n includeZone = false,\n spaceZone = false,\n format = \"extended\"\n }\n) {\n let fmt = format === \"basic\" ? \"HHmm\" : \"HH:mm\";\n\n if (!suppressSeconds || dt.second !== 0 || dt.millisecond !== 0) {\n fmt += format === \"basic\" ? \"ss\" : \":ss\";\n if (!suppressMilliseconds || dt.millisecond !== 0) {\n fmt += \".SSS\";\n }\n }\n\n if ((includeZone || includeOffset) && spaceZone) {\n fmt += \" \";\n }\n\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += format === \"basic\" ? \"ZZZ\" : \"ZZ\";\n }\n\n let str = toTechFormat(dt, fmt);\n\n if (includePrefix) {\n str = \"T\" + str;\n }\n\n return str;\n}\n\n// defaults for unspecified units in the supported calendars\nconst defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n },\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n },\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n };\n\n// Units in the supported calendars, sorted by bigness\nconst orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\n \"weekYear\",\n \"weekNumber\",\n \"weekday\",\n \"hour\",\n \"minute\",\n \"second\",\n \"millisecond\"\n ],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n// standardize case and plurality in units\nfunction normalizeUnit(unit) {\n const normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\"\n }[unit.toLowerCase()];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n}\n\n// this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\nfunction quickDT(obj, zone) {\n // assume we have the higher-order units\n for (const u of orderedUnits) {\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n const tsNow = Settings.now(),\n offsetProvis = zone.offset(tsNow),\n [ts, o] = objToTS(obj, offsetProvis, zone);\n\n return new DateTime({\n ts,\n zone,\n o\n });\n}\n\nfunction diffRelative(start, end, opts) {\n const round = isUndefined(opts.round) ? true : opts.round,\n format = (c, unit) => {\n c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n const formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = unit => {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end\n .startOf(unit)\n .diff(start.startOf(unit), unit)\n .get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (const unit of opts.units) {\n const count = differ(unit);\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\n}\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link local}, {@link utc}, and (most flexibly) {@link fromObject}. To create one from a standard string format, use {@link fromISO}, {@link fromHTTP}, and {@link fromRFC2822}. To create one from a custom string format, use {@link fromFormat}. To create one from a native JS date, use {@link fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link toObject}), use the {@link year}, {@link month},\n * {@link day}, {@link hour}, {@link minute}, {@link second}, {@link millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link weekYear}, {@link weekNumber}, and {@link weekday} accessors.\n * * **Configuration** See the {@link locale} and {@link numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link set}, {@link reconfigure}, {@link setZone}, {@link setLocale}, {@link plus}, {@link minus}, {@link endOf}, {@link startOf}, {@link toUTC}, and {@link toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link toRelative}, {@link toRelativeCalendar}, {@link toJSON}, {@link toISO}, {@link toHTTP}, {@link toObject}, {@link toRFC2822}, {@link toString}, {@link toLocaleString}, {@link toFormat}, {@link toMillis} and {@link toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport default class DateTime {\n /**\n * @access private\n */\n constructor(config) {\n const zone = config.zone || Settings.defaultZone;\n\n let invalid =\n config.invalid ||\n (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) ||\n (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n\n let c = null,\n o = null;\n if (!invalid) {\n const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n [c, o] = [config.old.c, config.old.o];\n } else {\n const ot = zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n\n /**\n * @access private\n */\n this._zone = zone;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.invalid = invalid;\n /**\n * @access private\n */\n this.weekData = null;\n /**\n * @access private\n */\n this.c = c;\n /**\n * @access private\n */\n this.o = o;\n /**\n * @access private\n */\n this.isLuxonDateTime = true;\n }\n\n // CONSTRUCT\n\n /**\n * Create a DateTime for the current instant, in the system's time zone.\n *\n * Use Settings to override these default values if needed.\n * @example DateTime.now().toISO() //~> now in the ISO format\n * @return {DateTime}\n */\n static now() {\n return new DateTime({});\n }\n\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month, 1-indexed\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12) //~> 2017-03-12T00:00:00\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n static local(year, month, day, hour, minute, second, millisecond) {\n if (isUndefined(year)) {\n return DateTime.now();\n } else {\n return quickDT(\n {\n year,\n month,\n day,\n hour,\n minute,\n second,\n millisecond\n },\n Settings.defaultZone\n );\n }\n }\n\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765Z\n * @return {DateTime}\n */\n static utc(year, month, day, hour, minute, second, millisecond) {\n if (isUndefined(year)) {\n return new DateTime({\n ts: Settings.now(),\n zone: FixedOffsetZone.utcInstance\n });\n } else {\n return quickDT(\n {\n year,\n month,\n day,\n hour,\n minute,\n second,\n millisecond\n },\n FixedOffsetZone.utcInstance\n );\n }\n }\n\n /**\n * Create a DateTime from a JavaScript Date object. Uses the default zone.\n * @param {Date} date - a JavaScript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n static fromJSDate(date, options = {}) {\n const ts = isDate(date) ? date.valueOf() : NaN;\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n const zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options)\n });\n }\n\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromMillis(milliseconds, options = {}) {\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\n `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`\n );\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options)\n });\n }\n }\n\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromSeconds(seconds, options = {}) {\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options)\n });\n }\n }\n\n /**\n * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {string|Zone} [obj.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [obj.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} obj.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} obj.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @return {DateTime}\n */\n static fromObject(obj) {\n const zoneToUse = normalizeZone(obj.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n const tsNow = Settings.now(),\n offsetProvis = zoneToUse.offset(tsNow),\n normalized = normalizeObject(obj, normalizeUnit, [\n \"zone\",\n \"locale\",\n \"outputCalendar\",\n \"numberingSystem\"\n ]),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber,\n loc = Locale.fromObject(obj);\n\n // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n // configure ourselves to deal with gregorian dates or week stuff\n let units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits;\n defaultValues = defaultUnitValues;\n }\n\n // set default values for missing stuff\n let foundFirst = false;\n for (const u of units) {\n const v = normalized[u];\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n }\n\n // make sure the values we have are in range\n const higherOrderInvalid = useWeekData\n ? hasInvalidWeekData(normalized)\n : containsOrdinal\n ? hasInvalidOrdinalData(normalized)\n : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n // compute the actual time\n const gregorian = useWeekData\n ? weekToGregorian(normalized)\n : containsOrdinal\n ? ordinalToGregorian(normalized)\n : normalized,\n [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc\n });\n\n // gregorian data + weekday serves only to validate\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\n \"mismatched weekday\",\n `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`\n );\n }\n\n return inst;\n }\n\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n static fromISO(text, opts = {}) {\n const [vals, parsedZone] = parseISODate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n static fromRFC2822(text, opts = {}) {\n const [vals, parsedZone] = parseRFC2822Date(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n static fromHTTP(text, opts = {}) {\n const [vals, parsedZone] = parseHTTPDate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @see https://moment.github.io/luxon/docs/manual/parsing.html#table-of-tokens\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromFormat(text, fmt, opts = {}) {\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true\n }),\n [vals, parsedZone, invalid] = parseFromTokens(localeToUse, text, fmt);\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text);\n }\n }\n\n /**\n * @deprecated use fromFormat instead\n */\n static fromString(text, fmt, opts = {}) {\n return DateTime.fromFormat(text, fmt, opts);\n }\n\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n static fromSQL(text, opts = {}) {\n const [vals, parsedZone] = parseSQL(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n\n /**\n * Create an invalid DateTime.\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({ invalid });\n }\n }\n\n /**\n * Check if an object is a DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDateTime(o) {\n return (o && o.isLuxonDateTime) || false;\n }\n\n // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n get(unit) {\n return this[unit];\n }\n\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n get outputCalendar() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n get zone() {\n return this._zone;\n }\n\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n get zoneName() {\n return this.isValid ? this.zone.name : null;\n }\n\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n get year() {\n return this.isValid ? this.c.year : NaN;\n }\n\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n get quarter() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n get month() {\n return this.isValid ? this.c.month : NaN;\n }\n\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n get day() {\n return this.isValid ? this.c.day : NaN;\n }\n\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n get hour() {\n return this.isValid ? this.c.hour : NaN;\n }\n\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n get minute() {\n return this.isValid ? this.c.minute : NaN;\n }\n\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n get second() {\n return this.isValid ? this.c.second : NaN;\n }\n\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n get millisecond() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\n * @type {number}\n */\n get weekYear() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n get weekNumber() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n get weekday() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n get ordinal() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n get monthShort() {\n return this.isValid ? Info.months(\"short\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n get monthLong() {\n return this.isValid ? Info.months(\"long\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n get weekdayShort() {\n return this.isValid ? Info.weekdays(\"short\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n get weekdayLong() {\n return this.isValid ? Info.weekdays(\"long\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.now().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n get offset() {\n return this.isValid ? +this.o : NaN;\n }\n\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameShort() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameLong() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n get isOffsetFixed() {\n return this.isValid ? this.zone.universal : null;\n }\n\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n get isInDST() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return (\n this.offset > this.set({ month: 1 }).offset || this.offset > this.set({ month: 5 }).offset\n );\n }\n }\n\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n get isInLeapYear() {\n return isLeapYear(this.year);\n }\n\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n get daysInMonth() {\n return daysInMonth(this.year, this.month);\n }\n\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n get daysInYear() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n get weeksInWeekYear() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n resolvedLocaleOpts(opts = {}) {\n const { locale, numberingSystem, calendar } = Formatter.create(\n this.loc.clone(opts),\n opts\n ).resolvedOptions(this);\n return { locale, numberingSystem, outputCalendar: calendar };\n }\n\n // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n toUTC(offset = 0, opts = {}) {\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link plus}. You may wish to use {@link toLocal} and {@link toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {\n zone = normalizeZone(zone, Settings.defaultZone);\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n let newTS = this.ts;\n if (keepLocalTime || keepCalendarTime) {\n const offsetGuess = zone.offset(this.ts);\n const asObj = this.toObject();\n [newTS] = objToTS(asObj, offsetGuess, zone);\n }\n return clone(this, { ts: newTS, zone });\n }\n }\n\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n return clone(this, { loc });\n }\n\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n setLocale(locale) {\n return this.reconfigure({ locale });\n }\n\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link reconfigure} and {@link setZone}.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const normalized = normalizeObject(values, normalizeUnit, []),\n settingWeekStuff =\n !isUndefined(normalized.weekYear) ||\n !isUndefined(normalized.weekNumber) ||\n !isUndefined(normalized.weekday),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n let mixed;\n if (settingWeekStuff) {\n mixed = weekToGregorian(Object.assign(gregorianToWeek(this.c), normalized));\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian(Object.assign(gregorianToOrdinal(this.c), normalized));\n } else {\n mixed = Object.assign(this.toObject(), normalized);\n\n // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n const [ts, o] = objToTS(mixed, this.o, this.zone);\n return clone(this, { ts, o });\n }\n\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.now().plus(123) //~> in 123 milliseconds\n * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = friendlyDuration(duration);\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = friendlyDuration(duration).negate();\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n startOf(unit) {\n if (!this.isValid) return this;\n const o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n case \"hours\":\n o.minute = 0;\n // falls through\n case \"minutes\":\n o.second = 0;\n // falls through\n case \"seconds\":\n o.millisecond = 0;\n break;\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n o.weekday = 1;\n }\n\n if (normalizedUnit === \"quarters\") {\n const q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n endOf(unit) {\n return this.isValid\n ? this.plus({ [unit]: 1 })\n .startOf(unit)\n .minus(1)\n : this;\n }\n\n // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/docs/manual/formatting.html#table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @see https://moment.github.io/luxon/docs/manual/formatting.html#table-of-tokens\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options\n * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param opts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @example DateTime.now().toLocaleString(); //=> 4/20/2017\n * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString({ locale: 'en-gb' }); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hour12: false }); //=> '11:32'\n * @return {string}\n */\n toLocaleString(opts = Formats.DATE_SHORT) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTime(this)\n : INVALID;\n }\n\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.now().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n toLocaleParts(opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this)\n : [];\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @return {string}\n */\n toISO(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toISODate(opts)}T${this.toISOTime(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @return {string}\n */\n toISODate({ format = \"extended\" } = {}) {\n let fmt = format === \"basic\" ? \"yyyyMMdd\" : \"yyyy-MM-dd\";\n if (this.year > 9999) {\n fmt = \"+\" + fmt;\n }\n\n return toTechFormat(this, fmt);\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\n * @return {string}\n */\n toISOTime({\n suppressMilliseconds = false,\n suppressSeconds = false,\n includeOffset = true,\n includePrefix = false,\n format = \"extended\"\n } = {}) {\n return toTechTimeFormat(this, {\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n includePrefix,\n format\n });\n }\n\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime, always in UTC\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string}\n */\n toSQLDate() {\n return toTechFormat(this, \"yyyy-MM-dd\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n toSQLTime({ includeOffset = true, includeZone = false } = {}) {\n return toTechTimeFormat(this, {\n includeOffset,\n includeZone,\n spaceZone: true\n });\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n toSQL(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n toString() {\n return this.isValid ? this.toISO() : INVALID;\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n\n /**\n * Returns the epoch seconds of this DateTime.\n * @return {number}\n */\n toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n toBSON() {\n return this.toJSDate();\n }\n\n /**\n * Returns a JavaScript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = Object.assign({}, this.c);\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns a JavaScript Date equivalent to this DateTime.\n * @return {Date}\n */\n toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n }\n\n // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n diff(otherDateTime, unit = \"milliseconds\", opts = {}) {\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(\n this.invalid || otherDateTime.invalid,\n \"created by diffing an invalid DateTime\"\n );\n }\n\n const durOpts = Object.assign(\n { locale: this.locale, numberingSystem: this.numberingSystem },\n opts\n );\n\n const units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n\n /**\n * Return the difference between this DateTime and right now.\n * See {@link diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n diffNow(unit = \"milliseconds\", opts = {}) {\n return this.diff(DateTime.now(), unit, opts);\n }\n\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval}\n */\n until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime.\n * Higher-order units must also be identical for this function to return `true`.\n * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link setZone} to convert one of the dates if needed.\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\n * @return {boolean}\n */\n hasSame(otherDateTime, unit) {\n if (!this.isValid) return false;\n\n const inputMs = otherDateTime.valueOf();\n const otherZoneDateTime = this.setZone(otherDateTime.zone, { keepLocalTime: true });\n return otherZoneDateTime.startOf(unit) <= inputMs && inputMs <= otherZoneDateTime.endOf(unit);\n }\n\n /**\n * Equality check\n * Two DateTimes are equal iff they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n equals(other) {\n return (\n this.isValid &&\n other.isValid &&\n this.valueOf() === other.valueOf() &&\n this.zone.equals(other.zone) &&\n this.loc.equals(other.loc)\n );\n }\n\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds down by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 d\xeda\"\n * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n toRelative(options = {}) {\n if (!this.isValid) return null;\n const base = options.base || DateTime.fromObject({ zone: this.zone }),\n padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;\n let units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\n let unit = options.unit;\n if (Array.isArray(options.unit)) {\n units = options.unit;\n unit = undefined;\n }\n return diffRelative(\n base,\n this.plus(padding),\n Object.assign(options, {\n numeric: \"always\",\n units,\n unit\n })\n );\n }\n\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"ma\xf1ana\"\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n toRelativeCalendar(options = {}) {\n if (!this.isValid) return null;\n\n return diffRelative(\n options.base || DateTime.fromObject({ zone: this.zone }),\n this,\n Object.assign(options, {\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true\n })\n );\n }\n\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n static min(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, i => i.valueOf(), Math.min);\n }\n\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n static max(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, i => i.valueOf(), Math.max);\n }\n\n // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n static fromFormatExplain(text, fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n\n /**\n * @deprecated use fromFormatExplain instead\n */\n static fromStringExplain(text, fmt, options = {}) {\n return DateTime.fromFormatExplain(text, fmt, options);\n }\n\n // FORMAT PRESETS\n\n /**\n * {@link toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n static get DATE_SHORT() {\n return Formats.DATE_SHORT;\n }\n\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED() {\n return Formats.DATE_MED;\n }\n\n /**\n * {@link toLocaleString} format like 'Fri, Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED_WITH_WEEKDAY() {\n return Formats.DATE_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n static get DATE_FULL() {\n return Formats.DATE_FULL;\n }\n\n /**\n * {@link toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n static get DATE_HUGE() {\n return Formats.DATE_HUGE;\n }\n\n /**\n * {@link toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_SIMPLE() {\n return Formats.TIME_SIMPLE;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SECONDS() {\n return Formats.TIME_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SHORT_OFFSET() {\n return Formats.TIME_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_LONG_OFFSET() {\n return Formats.TIME_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_SIMPLE() {\n return Formats.TIME_24_SIMPLE;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SECONDS() {\n return Formats.TIME_24_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SHORT_OFFSET() {\n return Formats.TIME_24_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_LONG_OFFSET() {\n return Formats.TIME_24_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT() {\n return Formats.DATETIME_SHORT;\n }\n\n /**\n * {@link toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT_WITH_SECONDS() {\n return Formats.DATETIME_SHORT_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED() {\n return Formats.DATETIME_MED;\n }\n\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_SECONDS() {\n return Formats.DATETIME_MED_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_WEEKDAY() {\n return Formats.DATETIME_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL() {\n return Formats.DATETIME_FULL;\n }\n\n /**\n * {@link toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL_WITH_SECONDS() {\n return Formats.DATETIME_FULL_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE() {\n return Formats.DATETIME_HUGE;\n }\n\n /**\n * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE_WITH_SECONDS() {\n return Formats.DATETIME_HUGE_WITH_SECONDS;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\n `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`\n );\n }\n}\n"},6721:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from "./errors.js";\nimport Formatter from "./impl/formatter.js";\nimport Invalid from "./impl/invalid.js";\nimport Locale from "./impl/locale.js";\nimport { parseISODuration, parseISOTimeOnly } from "./impl/regexParser.js";\nimport {\n asNumber,\n hasOwnProperty,\n isNumber,\n isUndefined,\n normalizeObject,\n roundTo\n} from "./impl/util.js";\nimport Settings from "./settings.js";\n\nconst INVALID = "Invalid Duration";\n\n// unit conversion constants\nconst lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000\n },\n hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n minutes: { seconds: 60, milliseconds: 60 * 1000 },\n seconds: { milliseconds: 1000 }\n },\n casualMatrix = Object.assign(\n {\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000\n }\n },\n lowOrderMatrix\n ),\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = Object.assign(\n {\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: (daysInYearAccurate * 24) / 4,\n minutes: (daysInYearAccurate * 24 * 60) / 4,\n seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,\n milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000\n }\n },\n lowOrderMatrix\n );\n\n// units ordered by size\nconst orderedUnits = [\n "years",\n "quarters",\n "months",\n "weeks",\n "days",\n "hours",\n "minutes",\n "seconds",\n "milliseconds"\n];\n\nconst reverseUnits = orderedUnits.slice(0).reverse();\n\n// clone really means "create another instance just like this one, but with these changes"\nfunction clone(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : Object.assign({}, dur.values, alts.values || {}),\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy\n };\n return new Duration(conf);\n}\n\nfunction antiTrunc(n) {\n return n < 0 ? Math.floor(n) : Math.ceil(n);\n}\n\n// NB: mutates parameters\nfunction convert(matrix, fromMap, fromUnit, toMap, toUnit) {\n const conv = matrix[toUnit][fromUnit],\n raw = fromMap[fromUnit] / conv,\n sameSign = Math.sign(raw) === Math.sign(toMap[toUnit]),\n // ok, so this is wild, but see the matrix in the tests\n added =\n !sameSign && toMap[toUnit] !== 0 && Math.abs(raw) <= 1 ? antiTrunc(raw) : Math.trunc(raw);\n toMap[toUnit] += added;\n fromMap[fromUnit] -= added * conv;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n reverseUnits.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n convert(matrix, vals, previous, vals, current);\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n/**\n * A Duration object represents a period of time, like "2 months" or "1 day, 1 hour". Conceptually, it\'s just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime.plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\n * * **Unit values** See the {@link Duration.years}, {@link Duration.months}, {@link Duration.weeks}, {@link Duration.days}, {@link Duration.hours}, {@link Duration.minutes}, {@link Duration.seconds}, {@link Duration.milliseconds} accessors.\n * * **Configuration** See {@link Duration.locale} and {@link Duration.numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration.plus}, {@link Duration.minus}, {@link Duration.normalize}, {@link Duration.set}, {@link Duration.reconfigure}, {@link Duration.shiftTo}, and {@link Duration.negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration.as}, {@link Duration.toISO}, {@link Duration.toFormat}, and {@link Duration.toJSON}\n *\n * There\'s are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport default class Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === "longterm" || false;\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? "longterm" : "casual";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = accurate ? accurateMatrix : casualMatrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale=\'en-US\'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy=\'casual\'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject(Object.assign({ milliseconds: count }, opts));\n }\n\n /**\n * Create a Duration from a JavaScript object with keys like \'years\' and \'hours\'.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {string} [obj.locale=\'en-US\'] - the locale to use\n * @param {string} obj.numberingSystem - the numbering system to use\n * @param {string} [obj.conversionAccuracy=\'casual\'] - the conversion system to use\n * @return {Duration}\n */\n static fromObject(obj) {\n if (obj == null || typeof obj !== "object") {\n throw new InvalidArgumentError(\n `Duration.fromObject: argument expected to be an object, got ${\n obj === null ? "null" : typeof obj\n }`\n );\n }\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit, [\n "locale",\n "numberingSystem",\n "conversionAccuracy",\n "zone" // a bit of debt; it\'s super inconvenient internally not to be able to blindly pass this\n ]),\n loc: Locale.fromObject(obj),\n conversionAccuracy: obj.conversionAccuracy\n });\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale=\'en-US\'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy=\'casual\'] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO(\'P3Y6M1W4DT12H30M5S\').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO(\'PT23H\').toObject() //=> { hours: 23 }\n * @example Duration.fromISO(\'P5Y3M\').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n const obj = Object.assign(parsed, opts);\n return Duration.fromObject(obj);\n } else {\n return Duration.invalid("unparsable", `the input "${text}" can\'t be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 time string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale=\'en-US\'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy=\'casual\'] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @example Duration.fromISOTime(\'11:22:33.444\').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n * @example Duration.fromISOTime(\'11:00\').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime(\'T11:00\').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime(\'1100\').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime(\'T1100\').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @return {Duration}\n */\n static fromISOTime(text, opts) {\n const [parsed] = parseISOTimeOnly(text);\n if (parsed) {\n const obj = Object.assign(parsed, opts);\n return Duration.fromObject(obj);\n } else {\n return Duration.invalid("unparsable", `the input "${text}" can\'t be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError("need to specify a reason the Duration is invalid");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({ invalid });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: "years",\n years: "years",\n quarter: "quarters",\n quarters: "quarters",\n month: "months",\n months: "months",\n week: "weeks",\n weeks: "weeks",\n day: "days",\n days: "days",\n hour: "hours",\n hours: "hours",\n minute: "minutes",\n minutes: "minutes",\n second: "seconds",\n seconds: "seconds",\n millisecond: "milliseconds",\n milliseconds: "milliseconds"\n }[unit ? unit.toLowerCase() : unit];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return (o && o.isLuxonDuration) || false;\n }\n\n /**\n * Get the locale of a Duration, such \'en-GB\'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such \'beng\'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. "yy" pads the years to two digits, "hhhh" pads the hours out to four digits\n * * The duration will be converted to the set of units in the format string using {@link Duration.shiftTo} and the Durations\'s conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("y d s") //=> "1 6 2"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("yy dd sss") //=> "01 06 002"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("M S") //=> "12 518402000"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = Object.assign({}, opts, {\n floor: opts.round !== false && opts.floor !== false\n });\n return this.isValid\n ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a JavaScript object with this Duration\'s values.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = Object.assign({}, this.values);\n\n if (opts.includeConfig) {\n base.conversionAccuracy = this.conversionAccuracy;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> \'P3YT45S\'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> \'P4MT45S\'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> \'P5M\'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> \'PT5M\'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> \'PT0.006S\'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n\n let s = "P";\n if (this.years !== 0) s += this.years + "Y";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + "M";\n if (this.weeks !== 0) s += this.weeks + "W";\n if (this.days !== 0) s += this.days + "D";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)\n s += "T";\n if (this.hours !== 0) s += this.hours + "H";\n if (this.minutes !== 0) s += this.minutes + "M";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle "floating point madness" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + "S";\n if (s === "P") s += "T0S";\n return s;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they\'re 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they\'re 0\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format=\'extended\'] - choose between the basic and extended format\n * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> \'11:00:00.000\'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> \'11:00:00\'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> \'11:00\'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> \'T11:00:00.000\'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: \'basic\' }) //=> \'110000.000\'\n * @return {string}\n */\n toISOTime(opts = {}) {\n if (!this.isValid) return null;\n\n const millis = this.toMillis();\n if (millis < 0 || millis >= 86400000) return null;\n\n opts = Object.assign(\n {\n suppressMilliseconds: false,\n suppressSeconds: false,\n includePrefix: false,\n format: "extended"\n },\n opts\n );\n\n const value = this.shiftTo("hours", "minutes", "seconds", "milliseconds");\n\n let fmt = opts.format === "basic" ? "hhmm" : "hh:mm";\n\n if (!opts.suppressSeconds || value.seconds !== 0 || value.milliseconds !== 0) {\n fmt += opts.format === "basic" ? "ss" : ":ss";\n if (!opts.suppressMilliseconds || value.milliseconds !== 0) {\n fmt += ".SSS";\n }\n }\n\n let str = value.toFormat(fmt);\n\n if (opts.includePrefix) {\n str = "T" + str;\n }\n\n return str;\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n toMillis() {\n return this.as("milliseconds");\n }\n\n /**\n * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n\n const dur = friendlyDuration(duration),\n result = {};\n\n for (const k of orderedUnits) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, { values: result }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n\n const dur = friendlyDuration(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnit(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnit((x, u) => u === "hour" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone(this, { values: result }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as \'minute\' or \'day\'\n * @example Duration.fromObject({years: 2, days: 3}).get(\'years\') //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).get(\'months\') //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).get(\'days\') //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * "Set" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const mixed = Object.assign(this.values, normalizeObject(values, Duration.normalizeUnit, []));\n return clone(this, { values: mixed });\n }\n\n /**\n * "Set" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: \'en-GB\' })\n * @return {Duration}\n */\n reconfigure({ locale, numberingSystem, conversionAccuracy } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem }),\n opts = { loc };\n\n if (conversionAccuracy) {\n opts.conversionAccuracy = conversionAccuracy;\n }\n\n return clone(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as \'minutes\' or \'days\'\n * @example Duration.fromObject({years: 1}).as(\'days\') //=> 365\n * @example Duration.fromObject({years: 1}).as(\'months\') //=> 12\n * @example Duration.fromObject({hours: 60}).as(\'days\') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo(\'minutes\', \'milliseconds\').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map(u => Duration.normalizeUnit(u));\n\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n\n for (const k of orderedUnits) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n\n let own = 0;\n\n // anything we haven\'t boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that\'s already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = own - i; // we\'d like to absorb these fractions in another unit\n\n // plus anything further down the chain that should be rolled up in to this\n for (const down in vals) {\n if (orderedUnits.indexOf(down) > orderedUnits.indexOf(k)) {\n convert(this.matrix, vals, down, built, k);\n }\n }\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] +=\n key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n return clone(this, { values: built }, true).normalize();\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = -this.values[k];\n }\n return clone(this, { values: negated }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n function eq(v1, v2) {\n // Consider 0 and undefined as equal\n if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n return v1 === v2;\n }\n\n for (const u of orderedUnits) {\n if (!eq(this.values[u], other.values[u])) {\n return false;\n }\n }\n return true;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDuration(durationish) {\n if (isNumber(durationish)) {\n return Duration.fromMillis(durationish);\n } else if (Duration.isDuration(durationish)) {\n return durationish;\n } else if (typeof durationish === "object") {\n return Duration.fromObject(durationish);\n } else {\n throw new InvalidArgumentError(\n `Unknown duration argument ${durationish} of type ${typeof durationish}`\n );\n }\n}\n'},4015:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='// these aren\'t really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n constructor() {\n super("Zone is an abstract class");\n }\n}\n'},8498:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import {\n integerBetween,\n isLeapYear,\n timeObject,\n daysInYear,\n daysInMonth,\n weeksInWeekYear,\n isInteger\n} from "./util.js";\nimport Invalid from "./invalid.js";\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\n "unit out of range",\n `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`\n );\n}\n\nfunction dayOfWeek(year, month, day) {\n const js = new Date(Date.UTC(year, month - 1, day)).getUTCDay();\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n const table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex(i => i < ordinal),\n day = ordinal - table[month0];\n return { month: month0 + 1, day };\n}\n\n/**\n * @private\n */\n\nexport function gregorianToWeek(gregObj) {\n const { year, month, day } = gregObj,\n ordinal = computeOrdinal(year, month, day),\n weekday = dayOfWeek(year, month, day);\n\n let weekNumber = Math.floor((ordinal - weekday + 10) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear);\n } else if (weekNumber > weeksInWeekYear(year)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return Object.assign({ weekYear, weekNumber, weekday }, timeObject(gregObj));\n}\n\nexport function weekToGregorian(weekData) {\n const { weekYear, weekNumber, weekday } = weekData,\n weekdayOfJan4 = dayOfWeek(weekYear, 1, 4),\n yearInDays = daysInYear(weekYear);\n\n let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n const { month, day } = uncomputeOrdinal(year, ordinal);\n\n return Object.assign({ year, month, day }, timeObject(weekData));\n}\n\nexport function gregorianToOrdinal(gregData) {\n const { year, month, day } = gregData,\n ordinal = computeOrdinal(year, month, day);\n\n return Object.assign({ year, ordinal }, timeObject(gregData));\n}\n\nexport function ordinalToGregorian(ordinalData) {\n const { year, ordinal } = ordinalData,\n { month, day } = uncomputeOrdinal(year, ordinal);\n\n return Object.assign({ year, month, day }, timeObject(ordinalData));\n}\n\nexport function hasInvalidWeekData(obj) {\n const validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear)),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange("weekYear", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange("week", obj.week);\n } else if (!validWeekday) {\n return unitOutOfRange("weekday", obj.weekday);\n } else return false;\n}\n\nexport function hasInvalidOrdinalData(obj) {\n const validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange("year", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange("ordinal", obj.ordinal);\n } else return false;\n}\n\nexport function hasInvalidGregorianData(obj) {\n const validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange("year", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange("month", obj.month);\n } else if (!validDay) {\n return unitOutOfRange("day", obj.day);\n } else return false;\n}\n\nexport function hasInvalidTimeData(obj) {\n const { hour, minute, second, millisecond } = obj;\n const validHour =\n integerBetween(hour, 0, 23) ||\n (hour === 24 && minute === 0 && second === 0 && millisecond === 0),\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange("hour", hour);\n } else if (!validMinute) {\n return unitOutOfRange("minute", minute);\n } else if (!validSecond) {\n return unitOutOfRange("second", second);\n } else if (!validMillisecond) {\n return unitOutOfRange("millisecond", millisecond);\n } else return false;\n}\n'},8998:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import Duration from "../duration.js";\n\nfunction dayDiff(earlier, later) {\n const utcDayStart = dt =>\n dt\n .toUTC(0, { keepLocalTime: true })\n .startOf("day")\n .valueOf(),\n ms = utcDayStart(later) - utcDayStart(earlier);\n return Math.floor(Duration.fromMillis(ms).as("days"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n const differs = [\n ["years", (a, b) => b.year - a.year],\n ["quarters", (a, b) => b.quarter - a.quarter],\n ["months", (a, b) => b.month - a.month + (b.year - a.year) * 12],\n [\n "weeks",\n (a, b) => {\n const days = dayDiff(a, b);\n return (days - (days % 7)) / 7;\n }\n ],\n ["days", dayDiff]\n ];\n\n const results = {};\n let lowestOrder, highWater;\n\n for (const [unit, differ] of differs) {\n if (units.indexOf(unit) >= 0) {\n lowestOrder = unit;\n\n let delta = differ(cursor, later);\n highWater = cursor.plus({ [unit]: delta });\n\n if (highWater > later) {\n cursor = cursor.plus({ [unit]: delta - 1 });\n delta -= 1;\n } else {\n cursor = highWater;\n }\n\n results[unit] = delta;\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nexport default function(earlier, later, units, opts) {\n let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);\n\n const remainingMillis = later - cursor;\n\n const lowerOrderUnits = units.filter(\n u => ["hours", "minutes", "seconds", "milliseconds"].indexOf(u) >= 0\n );\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n highWater = cursor.plus({ [lowestOrder]: 1 });\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n const duration = Duration.fromObject(Object.assign(results, opts));\n\n if (lowerOrderUnits.length > 0) {\n return Duration.fromMillis(remainingMillis, opts)\n .shiftTo(...lowerOrderUnits)\n .plus(duration);\n } else {\n return duration;\n }\n}\n'},9310:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='const numberingSystems = {\n arab: "[\\u0660-\\u0669]",\n arabext: "[\\u06F0-\\u06F9]",\n bali: "[\\u1B50-\\u1B59]",\n beng: "[\\u09E6-\\u09EF]",\n deva: "[\\u0966-\\u096F]",\n fullwide: "[\\uFF10-\\uFF19]",\n gujr: "[\\u0AE6-\\u0AEF]",\n hanidec: "[\u3007|\u4e00|\u4e8c|\u4e09|\u56db|\u4e94|\u516d|\u4e03|\u516b|\u4e5d]",\n khmr: "[\\u17E0-\\u17E9]",\n knda: "[\\u0CE6-\\u0CEF]",\n laoo: "[\\u0ED0-\\u0ED9]",\n limb: "[\\u1946-\\u194F]",\n mlym: "[\\u0D66-\\u0D6F]",\n mong: "[\\u1810-\\u1819]",\n mymr: "[\\u1040-\\u1049]",\n orya: "[\\u0B66-\\u0B6F]",\n tamldec: "[\\u0BE6-\\u0BEF]",\n telu: "[\\u0C66-\\u0C6F]",\n thai: "[\\u0E50-\\u0E59]",\n tibt: "[\\u0F20-\\u0F29]",\n latn: "\\\\d"\n};\n\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881]\n};\n\n// eslint-disable-next-line\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, "").split("");\n\nexport function parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = "";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\nexport function digitRegex({ numberingSystem }, append = "") {\n return new RegExp(`${numberingSystems[numberingSystem || "latn"]}${append}`);\n}\n'},4039:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import * as Formats from "./formats.js";\nimport { pick } from "./util.js";\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n/**\n * @private\n */\n\nexport const monthsLong = [\n "January",\n "February",\n "March",\n "April",\n "May",\n "June",\n "July",\n "August",\n "September",\n "October",\n "November",\n "December"\n];\n\nexport const monthsShort = [\n "Jan",\n "Feb",\n "Mar",\n "Apr",\n "May",\n "Jun",\n "Jul",\n "Aug",\n "Sep",\n "Oct",\n "Nov",\n "Dec"\n];\n\nexport const monthsNarrow = ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"];\n\nexport function months(length) {\n switch (length) {\n case "narrow":\n return [...monthsNarrow];\n case "short":\n return [...monthsShort];\n case "long":\n return [...monthsLong];\n case "numeric":\n return ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"];\n case "2-digit":\n return ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"];\n default:\n return null;\n }\n}\n\nexport const weekdaysLong = [\n "Monday",\n "Tuesday",\n "Wednesday",\n "Thursday",\n "Friday",\n "Saturday",\n "Sunday"\n];\n\nexport const weekdaysShort = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];\n\nexport const weekdaysNarrow = ["M", "T", "W", "T", "F", "S", "S"];\n\nexport function weekdays(length) {\n switch (length) {\n case "narrow":\n return [...weekdaysNarrow];\n case "short":\n return [...weekdaysShort];\n case "long":\n return [...weekdaysLong];\n case "numeric":\n return ["1", "2", "3", "4", "5", "6", "7"];\n default:\n return null;\n }\n}\n\nexport const meridiems = ["AM", "PM"];\n\nexport const erasLong = ["Before Christ", "Anno Domini"];\n\nexport const erasShort = ["BC", "AD"];\n\nexport const erasNarrow = ["B", "A"];\n\nexport function eras(length) {\n switch (length) {\n case "narrow":\n return [...erasNarrow];\n case "short":\n return [...erasShort];\n case "long":\n return [...erasLong];\n default:\n return null;\n }\n}\n\nexport function meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\n\nexport function weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\n\nexport function monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\n\nexport function eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\n\nexport function formatRelativeTime(unit, count, numeric = "always", narrow = false) {\n const units = {\n years: ["year", "yr."],\n quarters: ["quarter", "qtr."],\n months: ["month", "mo."],\n weeks: ["week", "wk."],\n days: ["day", "day", "days"],\n hours: ["hour", "hr."],\n minutes: ["minute", "min."],\n seconds: ["second", "sec."]\n };\n\n const lastable = ["hours", "minutes", "seconds"].indexOf(unit) === -1;\n\n if (numeric === "auto" && lastable) {\n const isDay = unit === "days";\n switch (count) {\n case 1:\n return isDay ? "tomorrow" : `next ${units[unit][0]}`;\n case -1:\n return isDay ? "yesterday" : `last ${units[unit][0]}`;\n case 0:\n return isDay ? "today" : `this ${units[unit][0]}`;\n default: // fall through\n }\n }\n\n const isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow\n ? singular\n ? lilUnits[1]\n : lilUnits[2] || lilUnits[1]\n : singular\n ? units[unit][0]\n : unit;\n return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;\n}\n\nexport function formatString(knownFormat) {\n // these all have the offsets removed because we don\'t have access to them\n // without all the intl stuff this is backfilling\n const filtered = pick(knownFormat, [\n "weekday",\n "era",\n "year",\n "month",\n "day",\n "hour",\n "minute",\n "second",\n "timeZoneName",\n "hour12"\n ]),\n key = stringify(filtered),\n dateTimeHuge = "EEEE, LLLL d, yyyy, h:mm a";\n switch (key) {\n case stringify(Formats.DATE_SHORT):\n return "M/d/yyyy";\n case stringify(Formats.DATE_MED):\n return "LLL d, yyyy";\n case stringify(Formats.DATE_MED_WITH_WEEKDAY):\n return "EEE, LLL d, yyyy";\n case stringify(Formats.DATE_FULL):\n return "LLLL d, yyyy";\n case stringify(Formats.DATE_HUGE):\n return "EEEE, LLLL d, yyyy";\n case stringify(Formats.TIME_SIMPLE):\n return "h:mm a";\n case stringify(Formats.TIME_WITH_SECONDS):\n return "h:mm:ss a";\n case stringify(Formats.TIME_WITH_SHORT_OFFSET):\n return "h:mm a";\n case stringify(Formats.TIME_WITH_LONG_OFFSET):\n return "h:mm a";\n case stringify(Formats.TIME_24_SIMPLE):\n return "HH:mm";\n case stringify(Formats.TIME_24_WITH_SECONDS):\n return "HH:mm:ss";\n case stringify(Formats.TIME_24_WITH_SHORT_OFFSET):\n return "HH:mm";\n case stringify(Formats.TIME_24_WITH_LONG_OFFSET):\n return "HH:mm";\n case stringify(Formats.DATETIME_SHORT):\n return "M/d/yyyy, h:mm a";\n case stringify(Formats.DATETIME_MED):\n return "LLL d, yyyy, h:mm a";\n case stringify(Formats.DATETIME_FULL):\n return "LLLL d, yyyy, h:mm a";\n case stringify(Formats.DATETIME_HUGE):\n return dateTimeHuge;\n case stringify(Formats.DATETIME_SHORT_WITH_SECONDS):\n return "M/d/yyyy, h:mm:ss a";\n case stringify(Formats.DATETIME_MED_WITH_SECONDS):\n return "LLL d, yyyy, h:mm:ss a";\n case stringify(Formats.DATETIME_MED_WITH_WEEKDAY):\n return "EEE, d LLL yyyy, h:mm a";\n case stringify(Formats.DATETIME_FULL_WITH_SECONDS):\n return "LLLL d, yyyy, h:mm:ss a";\n case stringify(Formats.DATETIME_HUGE_WITH_SECONDS):\n return "EEEE, LLLL d, yyyy, h:mm:ss a";\n default:\n return dateTimeHuge;\n }\n}\n'},5303:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\";\n\nexport const DATE_SHORT = {\n year: n,\n month: n,\n day: n\n};\n\nexport const DATE_MED = {\n year: n,\n month: s,\n day: n\n};\n\nexport const DATE_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s\n};\n\nexport const DATE_FULL = {\n year: n,\n month: l,\n day: n\n};\n\nexport const DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l\n};\n\nexport const TIME_SIMPLE = {\n hour: n,\n minute: n\n};\n\nexport const TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n\n};\n\nexport const TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s\n};\n\nexport const TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l\n};\n\nexport const TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hour12: false\n};\n\n/**\n * {@link toLocaleString}; format like '09:30:23', always 24-hour.\n */\nexport const TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hour12: false\n};\n\n/**\n * {@link toLocaleString}; format like '09:30:23 EDT', always 24-hour.\n */\nexport const TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hour12: false,\n timeZoneName: s\n};\n\n/**\n * {@link toLocaleString}; format like '09:30:23 Eastern Daylight Time', always 24-hour.\n */\nexport const TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hour12: false,\n timeZoneName: l\n};\n\n/**\n * {@link toLocaleString}; format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n */\nexport const DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n\n};\n\n/**\n * {@link toLocaleString}; format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n */\nexport const DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n\n};\n\nexport const DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n\n};\n\nexport const DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n\n};\n\nexport const DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n\n};\n\nexport const DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s\n};\n\nexport const DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s\n};\n\nexport const DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l\n};\n\nexport const DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l\n};\n"},4756:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import * as English from "./english.js";\nimport * as Formats from "./formats.js";\nimport { hasFormatToParts, padStart } from "./util.js";\n\nfunction stringifyTokens(splits, tokenToString) {\n let s = "";\n for (const token of splits) {\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n return s;\n}\n\nconst macroTokenToFormatOpts = {\n D: Formats.DATE_SHORT,\n DD: Formats.DATE_MED,\n DDD: Formats.DATE_FULL,\n DDDD: Formats.DATE_HUGE,\n t: Formats.TIME_SIMPLE,\n tt: Formats.TIME_WITH_SECONDS,\n ttt: Formats.TIME_WITH_SHORT_OFFSET,\n tttt: Formats.TIME_WITH_LONG_OFFSET,\n T: Formats.TIME_24_SIMPLE,\n TT: Formats.TIME_24_WITH_SECONDS,\n TTT: Formats.TIME_24_WITH_SHORT_OFFSET,\n TTTT: Formats.TIME_24_WITH_LONG_OFFSET,\n f: Formats.DATETIME_SHORT,\n ff: Formats.DATETIME_MED,\n fff: Formats.DATETIME_FULL,\n ffff: Formats.DATETIME_HUGE,\n F: Formats.DATETIME_SHORT_WITH_SECONDS,\n FF: Formats.DATETIME_MED_WITH_SECONDS,\n FFF: Formats.DATETIME_FULL_WITH_SECONDS,\n FFFF: Formats.DATETIME_HUGE_WITH_SECONDS\n};\n\n/**\n * @private\n */\n\nexport default class Formatter {\n static create(locale, opts = {}) {\n return new Formatter(locale, opts);\n }\n\n static parseFormat(fmt) {\n let current = null,\n currentFull = "",\n bracketed = false;\n const splits = [];\n for (let i = 0; i < fmt.length; i++) {\n const c = fmt.charAt(i);\n if (c === "\'") {\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed, val: currentFull });\n }\n current = null;\n currentFull = "";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({ literal: false, val: currentFull });\n }\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed, val: currentFull });\n }\n\n return splits;\n }\n\n static macroTokenToFormatOpts(token) {\n return macroTokenToFormatOpts[token];\n }\n\n constructor(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n const df = this.systemLoc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.format();\n }\n\n formatDateTime(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.format();\n }\n\n formatDateTimeParts(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.formatToParts();\n }\n\n resolvedOptions(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.resolvedOptions();\n }\n\n num(n, p = 0) {\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n const opts = Object.assign({}, this.opts);\n\n if (p > 0) {\n opts.padTo = p;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n }\n\n formatDateTimeFromString(dt, fmt) {\n const knownEnglish = this.loc.listingMode() === "en",\n useDateTimeFormatter =\n this.loc.outputCalendar && this.loc.outputCalendar !== "gregory" && hasFormatToParts(),\n string = (opts, extract) => this.loc.extract(dt, opts, extract),\n formatOffset = opts => {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return "Z";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : "";\n },\n meridiem = () =>\n knownEnglish\n ? English.meridiemForDateTime(dt)\n : string({ hour: "numeric", hour12: true }, "dayperiod"),\n month = (length, standalone) =>\n knownEnglish\n ? English.monthForDateTime(dt, length)\n : string(standalone ? { month: length } : { month: length, day: "numeric" }, "month"),\n weekday = (length, standalone) =>\n knownEnglish\n ? English.weekdayForDateTime(dt, length)\n : string(\n standalone ? { weekday: length } : { weekday: length, month: "long", day: "numeric" },\n "weekday"\n ),\n maybeMacro = token => {\n const formatOpts = Formatter.macroTokenToFormatOpts(token);\n if (formatOpts) {\n return this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = length =>\n knownEnglish ? English.eraForDateTime(dt, length) : string({ era: length }, "era"),\n tokenToString = token => {\n // Where possible: http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles\n switch (token) {\n // ms\n case "S":\n return this.num(dt.millisecond);\n case "u":\n // falls through\n case "SSS":\n return this.num(dt.millisecond, 3);\n // seconds\n case "s":\n return this.num(dt.second);\n case "ss":\n return this.num(dt.second, 2);\n // minutes\n case "m":\n return this.num(dt.minute);\n case "mm":\n return this.num(dt.minute, 2);\n // hours\n case "h":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n case "hh":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n case "H":\n return this.num(dt.hour);\n case "HH":\n return this.num(dt.hour, 2);\n // offset\n case "Z":\n // like +6\n return formatOffset({ format: "narrow", allowZ: this.opts.allowZ });\n case "ZZ":\n // like +06:00\n return formatOffset({ format: "short", allowZ: this.opts.allowZ });\n case "ZZZ":\n // like +0600\n return formatOffset({ format: "techie", allowZ: this.opts.allowZ });\n case "ZZZZ":\n // like EST\n return dt.zone.offsetName(dt.ts, { format: "short", locale: this.loc.locale });\n case "ZZZZZ":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, { format: "long", locale: this.loc.locale });\n // zone\n case "z":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n case "a":\n return meridiem();\n // dates\n case "d":\n return useDateTimeFormatter ? string({ day: "numeric" }, "day") : this.num(dt.day);\n case "dd":\n return useDateTimeFormatter ? string({ day: "2-digit" }, "day") : this.num(dt.day, 2);\n // weekdays - standalone\n case "c":\n // like 1\n return this.num(dt.weekday);\n case "ccc":\n // like \'Tues\'\n return weekday("short", true);\n case "cccc":\n // like \'Tuesday\'\n return weekday("long", true);\n case "ccccc":\n // like \'T\'\n return weekday("narrow", true);\n // weekdays - format\n case "E":\n // like 1\n return this.num(dt.weekday);\n case "EEE":\n // like \'Tues\'\n return weekday("short", false);\n case "EEEE":\n // like \'Tuesday\'\n return weekday("long", false);\n case "EEEEE":\n // like \'T\'\n return weekday("narrow", false);\n // months - standalone\n case "L":\n // like 1\n return useDateTimeFormatter\n ? string({ month: "numeric", day: "numeric" }, "month")\n : this.num(dt.month);\n case "LL":\n // like 01, doesn\'t seem to work\n return useDateTimeFormatter\n ? string({ month: "2-digit", day: "numeric" }, "month")\n : this.num(dt.month, 2);\n case "LLL":\n // like Jan\n return month("short", true);\n case "LLLL":\n // like January\n return month("long", true);\n case "LLLLL":\n // like J\n return month("narrow", true);\n // months - format\n case "M":\n // like 1\n return useDateTimeFormatter\n ? string({ month: "numeric" }, "month")\n : this.num(dt.month);\n case "MM":\n // like 01\n return useDateTimeFormatter\n ? string({ month: "2-digit" }, "month")\n : this.num(dt.month, 2);\n case "MMM":\n // like Jan\n return month("short", false);\n case "MMMM":\n // like January\n return month("long", false);\n case "MMMMM":\n // like J\n return month("narrow", false);\n // years\n case "y":\n // like 2014\n return useDateTimeFormatter ? string({ year: "numeric" }, "year") : this.num(dt.year);\n case "yy":\n // like 14\n return useDateTimeFormatter\n ? string({ year: "2-digit" }, "year")\n : this.num(dt.year.toString().slice(-2), 2);\n case "yyyy":\n // like 0012\n return useDateTimeFormatter\n ? string({ year: "numeric" }, "year")\n : this.num(dt.year, 4);\n case "yyyyyy":\n // like 000012\n return useDateTimeFormatter\n ? string({ year: "numeric" }, "year")\n : this.num(dt.year, 6);\n // eras\n case "G":\n // like AD\n return era("short");\n case "GG":\n // like Anno Domini\n return era("long");\n case "GGGGG":\n return era("narrow");\n case "kk":\n return this.num(dt.weekYear.toString().slice(-2), 2);\n case "kkkk":\n return this.num(dt.weekYear, 4);\n case "W":\n return this.num(dt.weekNumber);\n case "WW":\n return this.num(dt.weekNumber, 2);\n case "o":\n return this.num(dt.ordinal);\n case "ooo":\n return this.num(dt.ordinal, 3);\n case "q":\n // like 1\n return this.num(dt.quarter);\n case "qq":\n // like 01\n return this.num(dt.quarter, 2);\n case "X":\n return this.num(Math.floor(dt.ts / 1000));\n case "x":\n return this.num(dt.ts);\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n }\n\n formatDurationFromString(dur, fmt) {\n const tokenToField = token => {\n switch (token[0]) {\n case "S":\n return "millisecond";\n case "s":\n return "second";\n case "m":\n return "minute";\n case "h":\n return "hour";\n case "d":\n return "day";\n case "M":\n return "month";\n case "y":\n return "year";\n default:\n return null;\n }\n },\n tokenToString = lildur => token => {\n const mapped = tokenToField(token);\n if (mapped) {\n return this.num(lildur.get(mapped), token.length);\n } else {\n return token;\n }\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(\n (found, { literal, val }) => (literal ? found : found.concat(val)),\n []\n ),\n collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter(t => t));\n return stringifyTokens(tokens, tokenToString(collapsed));\n }\n}\n'},760:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="export default class Invalid {\n constructor(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n toMessage() {\n if (this.explanation) {\n return `${this.reason}: ${this.explanation}`;\n } else {\n return this.reason;\n }\n }\n}\n"},114:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import { hasFormatToParts, hasIntl, padStart, roundTo, hasRelative } from "./util.js";\nimport * as English from "./english.js";\nimport Settings from "../settings.js";\nimport DateTime from "../datetime.js";\nimport Formatter from "./formatter.js";\nimport IANAZone from "../zones/IANAZone.js";\n\nlet intlDTCache = {};\nfunction getCachedDTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache[key];\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlNumCache = {};\nfunction getCachedINF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let inf = intlNumCache[key];\n if (!inf) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache[key] = inf;\n }\n return inf;\n}\n\nlet intlRelCache = {};\nfunction getCachedRTF(locString, opts = {}) {\n const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options\n const key = JSON.stringify([locString, cacheKeyOpts]);\n let inf = intlRelCache[key];\n if (!inf) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache[key] = inf;\n }\n return inf;\n}\n\nlet sysLocaleCache = null;\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else if (hasIntl()) {\n const computedSys = new Intl.DateTimeFormat().resolvedOptions().locale;\n // node sometimes defaults to "und". Override that because that is dumb\n sysLocaleCache = !computedSys || computedSys === "und" ? "en-US" : computedSys;\n return sysLocaleCache;\n } else {\n sysLocaleCache = "en-US";\n return sysLocaleCache;\n }\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we\'ll do this:\n\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n\n const uIndex = localeStr.indexOf("-u-");\n if (uIndex === -1) {\n return [localeStr];\n } else {\n let options;\n const smaller = localeStr.substring(0, uIndex);\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n } catch (e) {\n options = getCachedDTF(smaller).resolvedOptions();\n }\n\n const { numberingSystem, calendar } = options;\n // return the smaller one so that we can append the calendar and numbering overrides to it\n return [smaller, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (hasIntl()) {\n if (outputCalendar || numberingSystem) {\n localeStr += "-u";\n\n if (outputCalendar) {\n localeStr += `-ca-${outputCalendar}`;\n }\n\n if (numberingSystem) {\n localeStr += `-nu-${numberingSystem}`;\n }\n return localeStr;\n } else {\n return localeStr;\n }\n } else {\n return [];\n }\n}\n\nfunction mapMonths(f) {\n const ms = [];\n for (let i = 1; i <= 12; i++) {\n const dt = DateTime.utc(2016, i, 1);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction mapWeekdays(f) {\n const ms = [];\n for (let i = 1; i <= 7; i++) {\n const dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction listStuff(loc, length, defaultOK, englishFn, intlFn) {\n const mode = loc.listingMode(defaultOK);\n\n if (mode === "error") {\n return null;\n } else if (mode === "en") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== "latn") {\n return false;\n } else {\n return (\n loc.numberingSystem === "latn" ||\n !loc.locale ||\n loc.locale.startsWith("en") ||\n (hasIntl() && new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === "latn")\n );\n }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n constructor(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n if (!forceSimple && hasIntl()) {\n const intlOpts = { useGrouping: false };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n\n format(i) {\n if (this.inf) {\n const fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser\'s numberformatter defaults\n const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n return padStart(fixed, this.padTo);\n }\n }\n}\n\n/**\n * @private\n */\n\nclass PolyDateFormatter {\n constructor(dt, intl, opts) {\n this.opts = opts;\n this.hasIntl = hasIntl();\n\n let z;\n if (dt.zone.universal && this.hasIntl) {\n // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\n // That is why fixed-offset TZ is set to that unless it is:\n // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\n // 2. Unsupported by the browser:\n // - some do not support Etc/\n // - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\n const gmtOffset = -1 * (dt.offset / 60);\n const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`;\n const isOffsetZoneSupported = IANAZone.isValidZone(offsetZ);\n if (dt.offset !== 0 && isOffsetZoneSupported) {\n z = offsetZ;\n this.dt = dt;\n } else {\n // Not all fixed-offset zones like Etc/+4:30 are present in tzdata.\n // So we have to make do. Two cases:\n // 1. The format options tell us to show the zone. We can\'t do that, so the best\n // we can do is format the date in UTC.\n // 2. The format options don\'t tell us to show the zone. Then we can adjust them\n // the time and tell the formatter to show it to us in UTC, so that the time is right\n // and the bad zone doesn\'t show up.\n z = "UTC";\n if (opts.timeZoneName) {\n this.dt = dt;\n } else {\n this.dt = dt.offset === 0 ? dt : DateTime.fromMillis(dt.ts + dt.offset * 60 * 1000);\n }\n }\n } else if (dt.zone.type === "local") {\n this.dt = dt;\n } else {\n this.dt = dt;\n z = dt.zone.name;\n }\n\n if (this.hasIntl) {\n const intlOpts = Object.assign({}, this.opts);\n if (z) {\n intlOpts.timeZone = z;\n }\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n }\n\n format() {\n if (this.hasIntl) {\n return this.dtf.format(this.dt.toJSDate());\n } else {\n const tokenFormat = English.formatString(this.opts),\n loc = Locale.create("en-US");\n return Formatter.create(loc).formatDateTimeFromString(this.dt, tokenFormat);\n }\n }\n\n formatToParts() {\n if (this.hasIntl && hasFormatToParts()) {\n return this.dtf.formatToParts(this.dt.toJSDate());\n } else {\n // This is kind of a cop out. We actually could do this for English. However, we couldn\'t do it for intl strings\n // and IMO it\'s too weird to have an uncanny valley like that\n return [];\n }\n }\n\n resolvedOptions() {\n if (this.hasIntl) {\n return this.dtf.resolvedOptions();\n } else {\n return {\n locale: "en-US",\n numberingSystem: "latn",\n outputCalendar: "gregory"\n };\n }\n }\n}\n\n/**\n * @private\n */\nclass PolyRelFormatter {\n constructor(intl, isEnglish, opts) {\n this.opts = Object.assign({ style: "long" }, opts);\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n\n format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return English.formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== "long");\n }\n }\n\n formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n }\n}\n\n/**\n * @private\n */\n\nexport default class Locale {\n static fromOpts(opts) {\n return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN);\n }\n\n static create(locale, numberingSystem, outputCalendar, defaultToEN = false) {\n const specifiedLocale = locale || Settings.defaultLocale,\n // the system locale is useful for human readable strings but annoying for parsing/formatting known formats\n localeR = specifiedLocale || (defaultToEN ? "en-US" : systemLocale()),\n numberingSystemR = numberingSystem || Settings.defaultNumberingSystem,\n outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n return new Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale);\n }\n\n static resetCache() {\n sysLocaleCache = null;\n intlDTCache = {};\n intlNumCache = {};\n intlRelCache = {};\n }\n\n static fromObject({ locale, numberingSystem, outputCalendar } = {}) {\n return Locale.create(locale, numberingSystem, outputCalendar);\n }\n\n constructor(locale, numbering, outputCalendar, specifiedLocale) {\n const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n\n this.weekdaysCache = { format: {}, standalone: {} };\n this.monthsCache = { format: {}, standalone: {} };\n this.meridiemCache = null;\n this.eraCache = {};\n\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n get fastNumbers() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n\n listingMode(defaultOK = true) {\n const intl = hasIntl(),\n hasFTP = intl && hasFormatToParts(),\n isActuallyEn = this.isEnglish(),\n hasNoWeirdness =\n (this.numberingSystem === null || this.numberingSystem === "latn") &&\n (this.outputCalendar === null || this.outputCalendar === "gregory");\n\n if (!hasFTP && !(isActuallyEn && hasNoWeirdness) && !defaultOK) {\n return "error";\n } else if (!hasFTP || (isActuallyEn && hasNoWeirdness)) {\n return "en";\n } else {\n return "intl";\n }\n }\n\n clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(\n alts.locale || this.specifiedLocale,\n alts.numberingSystem || this.numberingSystem,\n alts.outputCalendar || this.outputCalendar,\n alts.defaultToEN || false\n );\n }\n }\n\n redefaultToEN(alts = {}) {\n return this.clone(Object.assign({}, alts, { defaultToEN: true }));\n }\n\n redefaultToSystem(alts = {}) {\n return this.clone(Object.assign({}, alts, { defaultToEN: false }));\n }\n\n months(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.months, () => {\n const intl = format ? { month: length, day: "numeric" } : { month: length },\n formatStr = format ? "format" : "standalone";\n if (!this.monthsCache[formatStr][length]) {\n this.monthsCache[formatStr][length] = mapMonths(dt => this.extract(dt, intl, "month"));\n }\n return this.monthsCache[formatStr][length];\n });\n }\n\n weekdays(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.weekdays, () => {\n const intl = format\n ? { weekday: length, year: "numeric", month: "long", day: "numeric" }\n : { weekday: length },\n formatStr = format ? "format" : "standalone";\n if (!this.weekdaysCache[formatStr][length]) {\n this.weekdaysCache[formatStr][length] = mapWeekdays(dt =>\n this.extract(dt, intl, "weekday")\n );\n }\n return this.weekdaysCache[formatStr][length];\n });\n }\n\n meridiems(defaultOK = true) {\n return listStuff(\n this,\n undefined,\n defaultOK,\n () => English.meridiems,\n () => {\n // In theory there could be aribitrary day periods. We\'re gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it\'s makes parsing way easier.\n if (!this.meridiemCache) {\n const intl = { hour: "numeric", hour12: true };\n this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(\n dt => this.extract(dt, intl, "dayperiod")\n );\n }\n\n return this.meridiemCache;\n }\n );\n }\n\n eras(length, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.eras, () => {\n const intl = { era: length };\n\n // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n if (!this.eraCache[length]) {\n this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map(dt =>\n this.extract(dt, intl, "era")\n );\n }\n\n return this.eraCache[length];\n });\n }\n\n extract(dt, intlOpts, field) {\n const df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find(m => m.type.toLowerCase() === field);\n return matching ? matching.value : null;\n }\n\n numberFormatter(opts = {}) {\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n }\n\n dtFormatter(dt, intlOpts = {}) {\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n }\n\n relFormatter(opts = {}) {\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n }\n\n isEnglish() {\n return (\n this.locale === "en" ||\n this.locale.toLowerCase() === "en-us" ||\n (hasIntl() && new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us"))\n );\n }\n\n equals(other) {\n return (\n this.locale === other.locale &&\n this.numberingSystem === other.numberingSystem &&\n this.outputCalendar === other.outputCalendar\n );\n }\n}\n'},1990:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import {\n untruncateYear,\n signedOffset,\n parseInteger,\n parseMillis,\n ianaRegex,\n isUndefined\n} from "./util.js";\nimport * as English from "./english.js";\nimport FixedOffsetZone from "../zones/fixedOffsetZone.js";\nimport IANAZone from "../zones/IANAZone.js";\n\n/*\n * This file handles parsing for well-specified formats. Here\'s how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a "cursor" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, "");\n return RegExp(`^${full}$`);\n}\n\nfunction combineExtractors(...extractors) {\n return m =>\n extractors\n .reduce(\n ([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [Object.assign(mergedVals, val), mergedZone || zone, next];\n },\n [{}, null, 1]\n )\n .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\n\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/,\n isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/,\n isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${offsetRegex.source}?`),\n isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`),\n isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/,\n isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/,\n isoOrdinalRegex = /(\\d{4})-?(\\d{3})/,\n extractISOWeekData = simpleParse("weekYear", "weekNumber", "weekDay"),\n extractISOOrdinalData = simpleParse("year", "ordinal"),\n sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/, // dumbed-down version of the ISO one\n sqlTimeRegex = RegExp(\n `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`\n ),\n sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\n\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1)\n };\n\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n const item = {\n hours: int(match, cursor, 0),\n minutes: int(match, cursor + 1, 0),\n seconds: int(match, cursor + 2, 0),\n milliseconds: parseMillis(match[cursor + 3])\n };\n\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO time parsing\n\nconst isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);\n\n// ISO duration parsing\n\nconst isoDuration = /^-?P(?:(?:(-?\\d{1,9})Y)?(?:(-?\\d{1,9})M)?(?:(-?\\d{1,9})W)?(?:(-?\\d{1,9})D)?(?:T(?:(-?\\d{1,9})H)?(?:(-?\\d{1,9})M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,9}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n const [\n s,\n yearStr,\n monthStr,\n weekStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr,\n millisecondsStr\n ] = match;\n\n const hasNegativePrefix = s[0] === "-";\n const negativeSeconds = secondStr && secondStr[0] === "-";\n\n const maybeNegate = (num, force = false) =>\n num !== undefined && (force || (num && hasNegativePrefix)) ? -num : num;\n\n return [\n {\n years: maybeNegate(parseInteger(yearStr)),\n months: maybeNegate(parseInteger(monthStr)),\n weeks: maybeNegate(parseInteger(weekStr)),\n days: maybeNegate(parseInteger(dayStr)),\n hours: maybeNegate(parseInteger(hourStr)),\n minutes: maybeNegate(parseInteger(minuteStr)),\n seconds: maybeNegate(parseInteger(secondStr), secondStr === "-0"),\n milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds)\n }\n ];\n}\n\n// These are a little braindead. EDT *should* tell us that we\'re in, say, America/New_York\n// and not just that we\'re in -240 *right now*. But since I don\'t think these are used that often\n// I\'m just going to ignore that\nconst obsOffsets = {\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n};\n\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: English.monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr)\n };\n\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday =\n weekdayStr.length > 3\n ? English.weekdaysLong.indexOf(weekdayStr) + 1\n : English.weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n}\n\n// RFC 2822/5322\nconst rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n const [\n ,\n weekdayStr,\n dayStr,\n monthStr,\n yearStr,\n hourStr,\n minuteStr,\n secondStr,\n obsOffset,\n milOffset,\n offHourStr,\n offMinuteStr\n ] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, " ")\n .replace(/(\\s\\s+)/g, " ")\n .trim();\n}\n\n// http date\n\nconst rfc1123 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 = /^(Monday|Tuesday|Wedsday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n\nconst extractISOYmdTimeAndOffset = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset\n);\nconst extractISOWeekTimeAndOffset = combineExtractors(\n extractISOWeekData,\n extractISOTime,\n extractISOOffset\n);\nconst extractISOOrdinalDateAndTime = combineExtractors(\n extractISOOrdinalData,\n extractISOTime,\n extractISOOffset\n);\nconst extractISOTimeAndOffset = combineExtractors(extractISOTime, extractISOOffset);\n\n/**\n * @private\n */\n\nexport function parseISODate(s) {\n return parse(\n s,\n [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],\n [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],\n [isoTimeCombinedRegex, extractISOTimeAndOffset]\n );\n}\n\nexport function parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\n\nexport function parseHTTPDate(s) {\n return parse(\n s,\n [rfc1123, extractRFC1123Or850],\n [rfc850, extractRFC1123Or850],\n [ascii, extractASCII]\n );\n}\n\nexport function parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\n\nconst extractISOTimeOnly = combineExtractors(extractISOTime);\n\nexport function parseISOTimeOnly(s) {\n return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n}\n\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n\nconst extractISOYmdTimeOffsetAndIANAZone = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\nexport function parseSQL(s) {\n return parse(\n s,\n [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeOffsetAndIANAZone],\n [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]\n );\n}\n'},4546:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import { parseMillis, isUndefined, untruncateYear, signedOffset, hasOwnProperty } from "./util.js";\nimport Formatter from "./formatter.js";\nimport FixedOffsetZone from "../zones/fixedOffsetZone.js";\nimport IANAZone from "../zones/IANAZone.js";\nimport DateTime from "../datetime.js";\nimport { digitRegex, parseDigits } from "./digits.js";\nimport { ConflictingSpecificationError } from "../errors.js";\n\nconst MISSING_FTP = "missing Intl.DateTimeFormat.formatToParts support";\n\nfunction intUnit(regex, post = i => i) {\n return { regex, deser: ([s]) => post(parseDigits(s)) };\n}\n\nconst NBSP = String.fromCharCode(160);\nconst spaceOrNBSP = `( |${NBSP})`;\nconst spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, "g");\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n // make space and non breakable space characters interchangeable\n return s.replace(/\\./g, "\\\\.?").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n}\n\nfunction stripInsensitivities(s) {\n return s\n .replace(/\\./g, "") // ignore dots that were made optional\n .replace(spaceOrNBSPRegExp, " ") // interchange space and nbsp\n .toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join("|")),\n deser: ([s]) =>\n strings.findIndex(i => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex\n };\n }\n}\n\nfunction offset(regex, groups) {\n return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n return { regex, deser: ([s]) => s };\n}\n\nfunction escapeToken(value) {\n // eslint-disable-next-line no-useless-escape\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, "\\\\$&");\n}\n\nfunction unitForToken(token, loc) {\n const one = digitRegex(loc),\n two = digitRegex(loc, "{2}"),\n three = digitRegex(loc, "{3}"),\n four = digitRegex(loc, "{4}"),\n six = digitRegex(loc, "{6}"),\n oneOrTwo = digitRegex(loc, "{1,2}"),\n oneToThree = digitRegex(loc, "{1,3}"),\n oneToSix = digitRegex(loc, "{1,6}"),\n oneToNine = digitRegex(loc, "{1,9}"),\n twoToFour = digitRegex(loc, "{2,4}"),\n fourToSix = digitRegex(loc, "{4,6}"),\n literal = t => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),\n unitate = t => {\n if (token.literal) {\n return literal(t);\n }\n switch (t.val) {\n // era\n case "G":\n return oneOf(loc.eras("short", false), 0);\n case "GG":\n return oneOf(loc.eras("long", false), 0);\n // years\n case "y":\n return intUnit(oneToSix);\n case "yy":\n return intUnit(twoToFour, untruncateYear);\n case "yyyy":\n return intUnit(four);\n case "yyyyy":\n return intUnit(fourToSix);\n case "yyyyyy":\n return intUnit(six);\n // months\n case "M":\n return intUnit(oneOrTwo);\n case "MM":\n return intUnit(two);\n case "MMM":\n return oneOf(loc.months("short", true, false), 1);\n case "MMMM":\n return oneOf(loc.months("long", true, false), 1);\n case "L":\n return intUnit(oneOrTwo);\n case "LL":\n return intUnit(two);\n case "LLL":\n return oneOf(loc.months("short", false, false), 1);\n case "LLLL":\n return oneOf(loc.months("long", false, false), 1);\n // dates\n case "d":\n return intUnit(oneOrTwo);\n case "dd":\n return intUnit(two);\n // ordinals\n case "o":\n return intUnit(oneToThree);\n case "ooo":\n return intUnit(three);\n // time\n case "HH":\n return intUnit(two);\n case "H":\n return intUnit(oneOrTwo);\n case "hh":\n return intUnit(two);\n case "h":\n return intUnit(oneOrTwo);\n case "mm":\n return intUnit(two);\n case "m":\n return intUnit(oneOrTwo);\n case "q":\n return intUnit(oneOrTwo);\n case "qq":\n return intUnit(two);\n case "s":\n return intUnit(oneOrTwo);\n case "ss":\n return intUnit(two);\n case "S":\n return intUnit(oneToThree);\n case "SSS":\n return intUnit(three);\n case "u":\n return simple(oneToNine);\n // meridiem\n case "a":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n case "kkkk":\n return intUnit(four);\n case "kk":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n case "W":\n return intUnit(oneOrTwo);\n case "WW":\n return intUnit(two);\n // weekdays\n case "E":\n case "c":\n return intUnit(one);\n case "EEE":\n return oneOf(loc.weekdays("short", false, false), 1);\n case "EEEE":\n return oneOf(loc.weekdays("long", false, false), 1);\n case "ccc":\n return oneOf(loc.weekdays("short", true, false), 1);\n case "cccc":\n return oneOf(loc.weekdays("long", true, false), 1);\n // offset/zone\n case "Z":\n case "ZZ":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);\n case "ZZZ":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);\n // we don\'t support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don\'t have any way to figure out what they are\n case "z":\n return simple(/[a-z_+-/]{1,256}?/i);\n default:\n return literal(t);\n }\n };\n\n const unit = unitate(token) || {\n invalidReason: MISSING_FTP\n };\n\n unit.token = token;\n\n return unit;\n}\n\nconst partTypeStyleToTokenVal = {\n year: {\n "2-digit": "yy",\n numeric: "yyyyy"\n },\n month: {\n numeric: "M",\n "2-digit": "MM",\n short: "MMM",\n long: "MMMM"\n },\n day: {\n numeric: "d",\n "2-digit": "dd"\n },\n weekday: {\n short: "EEE",\n long: "EEEE"\n },\n dayperiod: "a",\n dayPeriod: "a",\n hour: {\n numeric: "h",\n "2-digit": "hh"\n },\n minute: {\n numeric: "m",\n "2-digit": "mm"\n },\n second: {\n numeric: "s",\n "2-digit": "ss"\n }\n};\n\nfunction tokenForPart(part, locale, formatOpts) {\n const { type, value } = part;\n\n if (type === "literal") {\n return {\n literal: true,\n val: value\n };\n }\n\n const style = formatOpts[type];\n\n let val = partTypeStyleToTokenVal[type];\n if (typeof val === "object") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n const re = units.map(u => u.regex).reduce((f, r) => `${f}(${r.source})`, "");\n return [`^${re}$`, units];\n}\n\nfunction match(input, regex, handlers) {\n const matches = input.match(regex);\n\n if (matches) {\n const all = {};\n let matchIndex = 1;\n for (const i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n const h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n matchIndex += groups;\n }\n }\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n const toField = token => {\n switch (token) {\n case "S":\n return "millisecond";\n case "s":\n return "second";\n case "m":\n return "minute";\n case "h":\n case "H":\n return "hour";\n case "d":\n return "day";\n case "o":\n return "ordinal";\n case "L":\n case "M":\n return "month";\n case "y":\n return "year";\n case "E":\n case "c":\n return "weekday";\n case "W":\n return "weekNumber";\n case "k":\n return "weekYear";\n case "q":\n return "quarter";\n default:\n return null;\n }\n };\n\n let zone;\n if (!isUndefined(matches.Z)) {\n zone = new FixedOffsetZone(matches.Z);\n } else if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n } else {\n zone = null;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n const vals = Object.keys(matches).reduce((r, k) => {\n const f = toField(k);\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n\n return [vals, zone];\n}\n\nlet dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n const formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n\n if (!formatOpts) {\n return token;\n }\n\n const formatter = Formatter.create(locale, formatOpts);\n const parts = formatter.formatDateTimeParts(getDummyDateTime());\n\n const tokens = parts.map(p => tokenForPart(p, locale, formatOpts));\n\n if (tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nfunction expandMacroTokens(tokens, locale) {\n return Array.prototype.concat(...tokens.map(t => maybeExpandMacroToken(t, locale)));\n}\n\n/**\n * @private\n */\n\nexport function explainFromTokens(locale, input, format) {\n const tokens = expandMacroTokens(Formatter.parseFormat(format), locale),\n units = tokens.map(t => unitForToken(t, locale)),\n disqualifyingUnit = units.find(t => t.invalidReason);\n\n if (disqualifyingUnit) {\n return { input, tokens, invalidReason: disqualifyingUnit.invalidReason };\n } else {\n const [regexString, handlers] = buildRegex(units),\n regex = RegExp(regexString, "i"),\n [rawMatches, matches] = match(input, regex, handlers),\n [result, zone] = matches ? dateTimeFromMatches(matches) : [null, null];\n if (hasOwnProperty(matches, "a") && hasOwnProperty(matches, "H")) {\n throw new ConflictingSpecificationError(\n "Can\'t include meridiem when specifying 24-hour format"\n );\n }\n return { input, tokens, regex, rawMatches, matches, result, zone };\n }\n}\n\nexport function parseFromTokens(locale, input, format) {\n const { result, zone, invalidReason } = explainFromTokens(locale, input, format);\n return [result, zone, invalidReason];\n}\n'},7866:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won\'t worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\nimport { InvalidArgumentError } from "../errors.js";\n\n/**\n * @private\n */\n\n// TYPES\n\nexport function isUndefined(o) {\n return typeof o === "undefined";\n}\n\nexport function isNumber(o) {\n return typeof o === "number";\n}\n\nexport function isInteger(o) {\n return typeof o === "number" && o % 1 === 0;\n}\n\nexport function isString(o) {\n return typeof o === "string";\n}\n\nexport function isDate(o) {\n return Object.prototype.toString.call(o) === "[object Date]";\n}\n\n// CAPABILITIES\n\nexport function hasIntl() {\n try {\n return typeof Intl !== "undefined" && Intl.DateTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\nexport function hasFormatToParts() {\n return !isUndefined(Intl.DateTimeFormat.prototype.formatToParts);\n}\n\nexport function hasRelative() {\n try {\n return typeof Intl !== "undefined" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nexport function maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\n\nexport function bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\n\nexport function pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\n\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n// NUMBERS AND STRINGS\n\nexport function integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nexport function floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\n\nexport function padStart(input, n = 2) {\n const minus = input < 0 ? "-" : "";\n const target = minus ? input * -1 : input;\n let result;\n\n if (target.toString().length < n) {\n result = ("0".repeat(n) + target).slice(-n);\n } else {\n result = target.toString();\n }\n\n return `${minus}${result}`;\n}\n\nexport function parseInteger(string) {\n if (isUndefined(string) || string === null || string === "") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\n\nexport function parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === "") {\n return undefined;\n } else {\n const f = parseFloat("0." + fraction) * 1000;\n return Math.floor(f);\n }\n}\n\nexport function roundTo(number, digits, towardZero = false) {\n const factor = 10 ** digits,\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n}\n\n// DATE BASICS\n\nexport function isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// covert a calendar object to a local timestamp (epoch, but with the offset baked in)\nexport function objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n return +d;\n}\n\nexport function weeksInWeekYear(weekYear) {\n const p1 =\n (weekYear +\n Math.floor(weekYear / 4) -\n Math.floor(weekYear / 100) +\n Math.floor(weekYear / 400)) %\n 7,\n last = weekYear - 1,\n p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7;\n return p1 === 4 || p2 === 3 ? 53 : 52;\n}\n\nexport function untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > 60 ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nexport function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hour12: false,\n year: "numeric",\n month: "2-digit",\n day: "2-digit",\n hour: "2-digit",\n minute: "2-digit"\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n const modified = Object.assign({ timeZoneName: offsetFormat }, intlOpts),\n intl = hasIntl();\n\n if (intl && hasFormatToParts()) {\n const parsed = new Intl.DateTimeFormat(locale, modified)\n .formatToParts(date)\n .find(m => m.type.toLowerCase() === "timezonename");\n return parsed ? parsed.value : null;\n } else if (intl) {\n // this probably doesn\'t work for all locales\n const without = new Intl.DateTimeFormat(locale, intlOpts).format(date),\n included = new Intl.DateTimeFormat(locale, modified).format(date),\n diffed = included.substring(without.length),\n trimmed = diffed.replace(/^[, \\u200e]+/, "");\n return trimmed;\n } else {\n return null;\n }\n}\n\n// signedOffset(\'-5\', \'30\') -> -330\nexport function signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don\'t || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nexport function asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === "boolean" || value === "" || Number.isNaN(numericValue))\n throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\n\nexport function normalizeObject(obj, normalizer, nonUnitKeys) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n if (nonUnitKeys.indexOf(u) >= 0) continue;\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\nexport function formatOffset(offset, format) {\n const hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? "+" : "-";\n\n switch (format) {\n case "short":\n return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;\n case "narrow":\n return `${sign}${hours}${minutes > 0 ? `:${minutes}` : ""}`;\n case "techie":\n return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\n\nexport function timeObject(obj) {\n return pick(obj, ["hour", "minute", "second", "millisecond"]);\n}\n\nexport const ianaRegex = /[A-Za-z_+-]{1,256}(:?\\/[A-Za-z_+-]{1,256}(\\/[A-Za-z_+-]{1,256})?)?/;\n'},9776:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='/**\n * @private\n */\n\nimport Zone from "../zone.js";\nimport IANAZone from "../zones/IANAZone.js";\nimport FixedOffsetZone from "../zones/fixedOffsetZone.js";\nimport InvalidZone from "../zones/invalidZone.js";\n\nimport { isUndefined, isString, isNumber } from "./util.js";\n\nexport function normalizeZone(input, defaultZone) {\n let offset;\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n const lowered = input.toLowerCase();\n if (lowered === "local") return defaultZone;\n else if (lowered === "utc" || lowered === "gmt") return FixedOffsetZone.utcInstance;\n else if ((offset = IANAZone.parseGMTOffset(input)) != null) {\n // handle Etc/GMT-4, which V8 chokes on\n return FixedOffsetZone.instance(offset);\n } else if (IANAZone.isValidSpecifier(lowered)) return IANAZone.create(input);\n else return FixedOffsetZone.parseSpecifier(lowered) || new InvalidZone(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === "object" && input.offset && typeof input.offset === "number") {\n // This is dumb, but the instanceof check above doesn\'t seem to really work\n // so we\'re duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n'},6965:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="import DateTime from \"./datetime.js\";\nimport Settings from \"./settings.js\";\nimport Locale from \"./impl/locale.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nimport { hasFormatToParts, hasIntl, hasRelative } from \"./impl/util.js\";\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\nexport default class Info {\n /**\n * Return whether the specified zone contains a DST.\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n * @return {boolean}\n */\n static hasDST(zone = Settings.defaultZone) {\n const proto = DateTime.now()\n .setZone(zone)\n .set({ month: 12 });\n\n return !zone.universal && proto.offset !== proto.set({ month: 6 }).offset;\n }\n\n /**\n * Return whether the specified zone is a valid IANA specifier.\n * @param {string} zone - Zone to check\n * @return {boolean}\n */\n static isValidIANAZone(zone) {\n return IANAZone.isValidSpecifier(zone) && IANAZone.isValidZone(zone);\n }\n\n /**\n * Converts the input into a {@link Zone} instance.\n *\n * * If `input` is already a Zone instance, it is returned unchanged.\n * * If `input` is a string containing a valid time zone name, a Zone instance\n * with that name is returned.\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\n * instance with {@link Zone.isValid} == false is returned.\n * * If `input is a number, a Zone instance with the specified fixed offset\n * in minutes is returned.\n * * If `input` is `null` or `undefined`, the default zone is returned.\n * @param {string|Zone|number} [input] - the value to be converted\n * @return {Zone}\n */\n static normalizeZone(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n\n /**\n * Return an array of standalone month names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @example Info.months()[0] //=> 'January'\n * @example Info.months('short')[0] //=> 'Jan'\n * @example Info.months('numeric')[0] //=> '1'\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> '\u0661'\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabi\u02bb I'\n * @return {[string]}\n */\n static months(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);\n }\n\n /**\n * Return an array of format month names.\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n * changes the string.\n * See {@link months}\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @return {[string]}\n */\n static monthsFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);\n }\n\n /**\n * Return an array of standalone week names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @example Info.weekdays()[0] //=> 'Monday'\n * @example Info.weekdays('short')[0] //=> 'Mon'\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> '\u0627\u0644\u0627\u062b\u0646\u064a\u0646'\n * @return {[string]}\n */\n static weekdays(length = \"long\", { locale = null, numberingSystem = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);\n }\n\n /**\n * Return an array of format week names.\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n * changes the string.\n * See {@link weekdays}\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale=null] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @return {[string]}\n */\n static weekdaysFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);\n }\n\n /**\n * Return an array of meridiems.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n * @example Info.meridiems({ locale: 'my' }) //=> [ '\u1014\u1036\u1014\u1000\u103a', '\u100a\u1014\u1031' ]\n * @return {[string]}\n */\n static meridiems({ locale = null } = {}) {\n return Locale.create(locale).meridiems();\n }\n\n /**\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.eras() //=> [ 'BC', 'AD' ]\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant J\xe9sus-Christ', 'apr\xe8s J\xe9sus-Christ' ]\n * @return {[string]}\n */\n static eras(length = \"short\", { locale = null } = {}) {\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n\n /**\n * Return the set of available features in this environment.\n * Some features of Luxon are not available in all environments. For example, on older browsers, timezone support is not available. Use this function to figure out if that's the case.\n * Keys:\n * * `zones`: whether this environment supports IANA timezones\n * * `intlTokens`: whether this environment supports internationalized token-based formatting/parsing\n * * `intl`: whether this environment supports general internationalization\n * * `relative`: whether this environment supports relative time formatting\n * @example Info.features() //=> { intl: true, intlTokens: false, zones: true, relative: false }\n * @return {Object}\n */\n static features() {\n let intl = false,\n intlTokens = false,\n zones = false,\n relative = false;\n\n if (hasIntl()) {\n intl = true;\n intlTokens = hasFormatToParts();\n relative = hasRelative();\n\n try {\n zones =\n new Intl.DateTimeFormat(\"en\", { timeZone: \"America/New_York\" }).resolvedOptions()\n .timeZone === \"America/New_York\";\n } catch (e) {\n zones = false;\n }\n }\n\n return { intl, intlTokens, zones, relative };\n }\n}\n"},1591:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="import DateTime, { friendlyDateTime } from \"./datetime.js\";\nimport Duration, { friendlyDuration } from \"./duration.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidIntervalError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\n \"end before start\",\n `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`\n );\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link fromDateTimes}, {@link after}, {@link before}, or {@link fromISO}.\n * * **Accessors** Use {@link start} and {@link end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link count}, {@link length}, {@link hasSame}, {@link contains}, {@link isAfter}, or {@link isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link set}, {@link splitAt}, {@link splitBy}, {@link divideEqually}, {@link merge}, {@link xor}, {@link union}, {@link intersection}, or {@link difference}.\n * * **Comparison** To compare this Interval to another one, use {@link equals}, {@link overlaps}, {@link abutsStart}, {@link abutsEnd}, {@link engulfs}.\n * * **Output** To convert the Interval into other representations, see {@link toString}, {@link toISO}, {@link toISODate}, {@link toISOTime}, {@link toFormat}, and {@link toDuration}.\n */\nexport default class Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({ invalid });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n\n const validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = friendlyDuration(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = friendlyDuration(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `<start>/<end>`, `<start>/<duration>`, and `<duration>/<end>` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime.fromISO} and optionally {@link Duration.fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n static fromISO(text, opts) {\n const [s, e] = (text || \"\").split(\"/\", 2);\n if (s && e) {\n let start, startIsValid;\n try {\n start = DateTime.fromISO(s, opts);\n startIsValid = start.isValid;\n } catch (e) {\n startIsValid = false;\n }\n\n let end, endIsValid;\n try {\n end = DateTime.fromISO(e, opts);\n endIsValid = end.isValid;\n } catch (e) {\n endIsValid = false;\n }\n\n if (startIsValid && endIsValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (startIsValid) {\n const dur = Duration.fromISO(e, opts);\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (endIsValid) {\n const dur = Duration.fromISO(s, opts);\n if (dur.isValid) {\n return Interval.before(end, dur);\n }\n }\n }\n return Interval.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isInterval(o) {\n return (o && o.isLuxonInterval) || false;\n }\n\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n get start() {\n return this.isValid ? this.s : null;\n }\n\n /**\n * Returns the end of the Interval\n * @type {DateTime}\n */\n get end() {\n return this.isValid ? this.e : null;\n }\n\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n get isValid() {\n return this.invalidReason === null;\n }\n\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n length(unit = \"milliseconds\") {\n return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n }\n\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @return {number}\n */\n count(unit = \"milliseconds\") {\n if (!this.isValid) return NaN;\n const start = this.start.startOf(unit),\n end = this.end.startOf(unit);\n return Math.floor(end.diff(start, unit).get(unit)) + 1;\n }\n\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n hasSame(unit) {\n return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n }\n\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n set({ start, end } = {}) {\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...[DateTime]} dateTimes - the unit of time to count.\n * @return {[Interval]}\n */\n splitAt(...dateTimes) {\n if (!this.isValid) return [];\n const sorted = dateTimes\n .map(friendlyDateTime)\n .filter(d => this.contains(d))\n .sort(),\n results = [];\n let { s } = this,\n i = 0;\n\n while (s < this.e) {\n const added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {[Interval]}\n */\n splitBy(duration) {\n const dur = friendlyDuration(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n let { s } = this,\n idx = 1,\n next;\n\n const results = [];\n while (s < this.e) {\n const added = this.start.plus(dur.mapUnits(x => x * idx));\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n idx += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {[Interval]}\n */\n divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n\n /**\n * Return whether this Interval engulfs the start and end of the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n intersection(other) {\n if (!this.isValid) return this;\n const s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s >= e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n union(other) {\n if (!this.isValid) return this;\n const s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n\n /**\n * Merge an array of Intervals into a equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * @param {[Interval]} intervals\n * @return {[Interval]}\n */\n static merge(intervals) {\n const [found, final] = intervals.sort((a, b) => a.s - b.s).reduce(\n ([sofar, current], item) => {\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n },\n [[], null]\n );\n if (final) {\n found.push(final);\n }\n return found;\n }\n\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {[Interval]} intervals\n * @return {[Interval]}\n */\n static xor(intervals) {\n let start = null,\n currentCount = 0;\n const results = [],\n ends = intervals.map(i => [{ time: i.s, type: \"s\" }, { time: i.e, type: \"e\" }]),\n flattened = Array.prototype.concat(...ends),\n arr = flattened.sort((a, b) => a.time - b.time);\n\n for (const i of arr) {\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {[Interval]}\n */\n difference(...intervals) {\n return Interval.xor([this].concat(intervals))\n .map(i => this.intersection(i))\n .filter(i => i && !i.isEmpty());\n }\n\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n toString() {\n if (!this.isValid) return INVALID;\n return `[${this.s.toISO()} \u2013 ${this.e.toISO()})`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime.toISO}\n * @return {string}\n */\n toISO(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n toISODate() {\n if (!this.isValid) return INVALID;\n return `${this.s.toISODate()}/${this.e.toISODate()}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime.toISO}\n * @return {string}\n */\n toISOTime(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this Interval formatted according to the specified format string.\n * @param {string} dateFormat - the format string. This string formats the start and end time. See {@link DateTime.toFormat} for details.\n * @param {Object} opts - options\n * @param {string} [opts.separator = ' \u2013 '] - a separator to place between the start and end representations\n * @return {string}\n */\n toFormat(dateFormat, { separator = \" \u2013 \" } = {}) {\n if (!this.isValid) return INVALID;\n return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n }\n\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n return this.e.diff(this.s, unit, opts);\n }\n\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n }\n}\n"},8004:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import DateTime from "./datetime.js";\nimport Duration from "./duration.js";\nimport Interval from "./interval.js";\nimport Info from "./info.js";\nimport Zone from "./zone.js";\nimport FixedOffsetZone from "./zones/fixedOffsetZone.js";\nimport IANAZone from "./zones/IANAZone.js";\nimport InvalidZone from "./zones/invalidZone.js";\nimport LocalZone from "./zones/localZone.js";\nimport Settings from "./settings.js";\n\nconst VERSION = "1.28.1";\n\nexport {\n VERSION,\n DateTime,\n Duration,\n Interval,\n Info,\n Zone,\n FixedOffsetZone,\n IANAZone,\n InvalidZone,\n LocalZone,\n Settings\n};\n'},9972:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='/* eslint import/no-extraneous-dependencies: off */\n\nimport "core-js/features/symbol";\nimport "core-js/features/symbol/iterator";\nimport "core-js/features/object";\nimport "core-js/features/number/is-nan";\nimport "core-js/features/array";\nimport "core-js/features/string/virtual/starts-with";\nimport "core-js/features/string/virtual/repeat";\nimport "core-js/features/math/trunc";\nimport "core-js/features/math/sign";\n\nexport * from "./luxon.js";\n'},2636:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import LocalZone from "./zones/localZone.js";\nimport IANAZone from "./zones/IANAZone.js";\nimport Locale from "./impl/locale.js";\n\nimport { normalizeZone } from "./impl/zoneUtil.js";\n\nlet now = () => Date.now(),\n defaultZone = null, // not setting this directly to LocalZone.instance bc loading order issues\n defaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n throwOnInvalid = false;\n\n/**\n * Settings contains static getters and setters that control Luxon\'s overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nexport default class Settings {\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n static get now() {\n return now;\n }\n\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it\'s Jan 1, 1970 at midnight in UTC time\n */\n static set now(n) {\n now = n;\n }\n\n /**\n * Get the default time zone to create DateTimes in.\n * @type {string}\n */\n static get defaultZoneName() {\n return Settings.defaultZone.name;\n }\n\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * @type {string}\n */\n static set defaultZoneName(z) {\n if (!z) {\n defaultZone = null;\n } else {\n defaultZone = normalizeZone(z);\n }\n }\n\n /**\n * Get the default time zone object to create DateTimes in. Does not affect existing instances.\n * @type {Zone}\n */\n static get defaultZone() {\n return defaultZone || LocalZone.instance;\n }\n\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultLocale() {\n return defaultLocale;\n }\n\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultLocale(locale) {\n defaultLocale = locale;\n }\n\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultNumberingSystem() {\n return defaultNumberingSystem;\n }\n\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultNumberingSystem(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultOutputCalendar() {\n return defaultOutputCalendar;\n }\n\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultOutputCalendar(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static get throwOnInvalid() {\n return throwOnInvalid;\n }\n\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static set throwOnInvalid(t) {\n throwOnInvalid = t;\n }\n\n /**\n * Reset Luxon\'s global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n }\n}\n'},6476:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="/* eslint no-unused-vars: \"off\" */\nimport { ZoneIsAbstractError } from \"./errors.js\";\n\n/**\n * @interface\n */\nexport default class Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get universal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n"},3176:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import { formatOffset, parseZoneInfo, isUndefined, ianaRegex, objToLocalTS } from "../impl/util.js";\nimport Zone from "../zone.js";\n\nconst matchingRegex = RegExp(`^${ianaRegex.source}$`);\n\nlet dtfCache = {};\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat("en-US", {\n hour12: false,\n timeZone: zone,\n year: "numeric",\n month: "2-digit",\n day: "2-digit",\n hour: "2-digit",\n minute: "2-digit",\n second: "2-digit"\n });\n }\n return dtfCache[zone];\n}\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5\n};\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, ""),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date),\n filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i],\n pos = typeToPos[type];\n\n if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nlet ianaZoneCache = {};\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nexport default class IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n return ianaZoneCache[name];\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string\'s format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier("America/New_York") //=> true\n * @example IANAZone.isValidSpecifier("Fantasia/Castle") //=> true\n * @example IANAZone.isValidSpecifier("Sport~~blorp") //=> false\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return !!(s && s.match(matchingRegex));\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone("America/New_York") //=> true\n * @example IANAZone.isValidZone("Fantasia/Castle") //=> false\n * @example IANAZone.isValidZone("Sport~~blorp") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n try {\n new Intl.DateTimeFormat("en-US", { timeZone: zone }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n // Etc/GMT+8 -> -480\n /** @ignore */\n static parseGMTOffset(specifier) {\n if (specifier) {\n const match = specifier.match(/^Etc\\/GMT(0|[+-]\\d{1,2})$/i);\n if (match) {\n return -60 * parseInt(match[1]);\n }\n }\n return null;\n }\n\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /** @override **/\n get type() {\n return "iana";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get universal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n const date = new Date(ts);\n\n if (isNaN(date)) return NaN;\n\n const dtf = makeDTF(this.name),\n [year, month, day, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date),\n // work around https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n adjustedHour = hour === 24 ? 0 : hour;\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === "iana" && otherZone.name === this.name;\n }\n\n /** @override **/\n get isValid() {\n return this.valid;\n }\n}\n'},1840:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import { formatOffset, signedOffset } from "../impl/util.js";\nimport Zone from "../zone.js";\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nexport default class FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like "UTC+6"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier("UTC+6")\n * @example FixedOffsetZone.parseSpecifier("UTC+06")\n * @example FixedOffsetZone.parseSpecifier("UTC-6:00")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /** @override **/\n get type() {\n return "fixed";\n }\n\n /** @override **/\n get name() {\n return this.fixed === 0 ? "UTC" : `UTC${formatOffset(this.fixed, "narrow")}`;\n }\n\n /** @override **/\n offsetName() {\n return this.name;\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /** @override **/\n get universal() {\n return true;\n }\n\n /** @override **/\n offset() {\n return this.fixed;\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === "fixed" && otherZone.fixed === this.fixed;\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n'},5092:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import Zone from "../zone.js";\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\nexport default class InvalidZone extends Zone {\n constructor(zoneName) {\n super();\n /** @private */\n this.zoneName = zoneName;\n }\n\n /** @override **/\n get type() {\n return "invalid";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get universal() {\n return false;\n }\n\n /** @override **/\n offsetName() {\n return null;\n }\n\n /** @override **/\n formatOffset() {\n return "";\n }\n\n /** @override **/\n offset() {\n return NaN;\n }\n\n /** @override **/\n equals() {\n return false;\n }\n\n /** @override **/\n get isValid() {\n return false;\n }\n}\n'},5617:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import { formatOffset, parseZoneInfo, hasIntl } from "../impl/util.js";\nimport Zone from "../zone.js";\n\nlet singleton = null;\n\n/**\n * Represents the local zone for this JavaScript environment.\n * @implements {Zone}\n */\nexport default class LocalZone extends Zone {\n /**\n * Get a singleton instance of the local zone\n * @return {LocalZone}\n */\n static get instance() {\n if (singleton === null) {\n singleton = new LocalZone();\n }\n return singleton;\n }\n\n /** @override **/\n get type() {\n return "local";\n }\n\n /** @override **/\n get name() {\n if (hasIntl()) {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n } else return "local";\n }\n\n /** @override **/\n get universal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === "local";\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n'},9373:(t,e,n)=>{"use strict";function r(t,e){let n;if(void 0===e)for(const r of t)null!=r&&(n<r||void 0===n&&r>=r)&&(n=r);else{let r=-1;for(let i of t)null!=(i=e(i,++r,t))&&(n<i||void 0===n&&i>=i)&&(n=i)}return n}function i(t,e){let n;if(void 0===e)for(const r of t)null!=r&&(n>r||void 0===n&&r>=r)&&(n=r);else{let r=-1;for(let i of t)null!=(i=e(i,++r,t))&&(n>i||void 0===n&&i>=i)&&(n=i)}return n}function a(t){return t}n.d(e,{Nb1:()=>oo,LLu:()=>b,F5q:()=>y,$0Z:()=>_o,Dts:()=>To,WQY:()=>So,qpX:()=>Co,u93:()=>Do,tFB:()=>Oo,YY7:()=>No,OvA:()=>Fo,dCK:()=>Ro,zgE:()=>jo,fGX:()=>zo,$m7:()=>Uo,c_6:()=>uo,fxm:()=>Ho,FdL:()=>tl,ak_:()=>el,SxZ:()=>il,eA_:()=>sl,jsv:()=>ll,iJ:()=>ol,JHv:()=>mr,jvg:()=>fo,Fp7:()=>r,VV$:()=>i,ve8:()=>yo,BYU:()=>li,PKp:()=>gi,Xf:()=>Ls,Ys:()=>Ns,td_:()=>Ms,YPS:()=>Vn,rr1:()=>Ni,i$Z:()=>ha,WQD:()=>Ii,Z_i:()=>Ai,F0B:()=>Qi,NGh:()=>Ri});var s=1,o=2,l=3,c=4,u=1e-6;function h(t){return"translate("+t+",0)"}function d(t){return"translate(0,"+t+")"}function p(t){return e=>+t(e)}function f(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function m(){return!this.__axis}function g(t,e){var n=[],r=null,i=null,g=6,y=6,b=3,x="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,v=t===s||t===c?-1:1,_=t===c||t===o?"x":"y",k=t===s||t===l?h:d;function T(h){var d=null==r?e.ticks?e.ticks.apply(e,n):e.domain():r,T=null==i?e.tickFormat?e.tickFormat.apply(e,n):a:i,w=Math.max(g,0)+b,S=e.range(),E=+S[0]+x,C=+S[S.length-1]+x,D=(e.bandwidth?f:p)(e.copy(),x),A=h.selection?h.selection():h,O=A.selectAll(".domain").data([null]),I=A.selectAll(".tick").data(d,e).order(),L=I.exit(),N=I.enter().append("g").attr("class","tick"),M=I.select("line"),F=I.select("text");O=O.merge(O.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),I=I.merge(N),M=M.merge(N.append("line").attr("stroke","currentColor").attr(_+"2",v*g)),F=F.merge(N.append("text").attr("fill","currentColor").attr(_,v*w).attr("dy",t===s?"0em":t===l?"0.71em":"0.32em")),h!==A&&(O=O.transition(h),I=I.transition(h),M=M.transition(h),F=F.transition(h),L=L.transition(h).attr("opacity",u).attr("transform",(function(t){return isFinite(t=D(t))?k(t+x):this.getAttribute("transform")})),N.attr("opacity",u).attr("transform",(function(t){var e=this.parentNode.__axis;return k((e&&isFinite(e=e(t))?e:D(t))+x)}))),L.remove(),O.attr("d",t===c||t===o?y?"M"+v*y+","+E+"H"+x+"V"+C+"H"+v*y:"M"+x+","+E+"V"+C:y?"M"+E+","+v*y+"V"+x+"H"+C+"V"+v*y:"M"+E+","+x+"H"+C),I.attr("opacity",1).attr("transform",(function(t){return k(D(t)+x)})),M.attr(_+"2",v*g),F.attr(_,v*w).text(T),A.filter(m).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===o?"start":t===c?"end":"middle"),A.each((function(){this.__axis=D}))}return T.scale=function(t){return arguments.length?(e=t,T):e},T.ticks=function(){return n=Array.from(arguments),T},T.tickArguments=function(t){return arguments.length?(n=null==t?[]:Array.from(t),T):n.slice()},T.tickValues=function(t){return arguments.length?(r=null==t?null:Array.from(t),T):r&&r.slice()},T.tickFormat=function(t){return arguments.length?(i=t,T):i},T.tickSize=function(t){return arguments.length?(g=y=+t,T):g},T.tickSizeInner=function(t){return arguments.length?(g=+t,T):g},T.tickSizeOuter=function(t){return arguments.length?(y=+t,T):y},T.tickPadding=function(t){return arguments.length?(b=+t,T):b},T.offset=function(t){return arguments.length?(x=+t,T):x},T}function y(t){return g(s,t)}function b(t){return g(l,t)}function x(){}function v(t){return null==t?x:function(){return this.querySelector(t)}}function _(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function k(){return[]}function T(t){return null==t?k:function(){return this.querySelectorAll(t)}}function w(t){return function(){return this.matches(t)}}function S(t){return function(e){return e.matches(t)}}var E=Array.prototype.find;function C(){return this.firstElementChild}var D=Array.prototype.filter;function A(){return Array.from(this.children)}function O(t){return new Array(t.length)}function I(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function L(t,e,n,r,i,a){for(var s,o=0,l=e.length,c=a.length;o<c;++o)(s=e[o])?(s.__data__=a[o],r[o]=s):n[o]=new I(t,a[o]);for(;o<l;++o)(s=e[o])&&(i[o]=s)}function N(t,e,n,r,i,a,s){var o,l,c,u=new Map,h=e.length,d=a.length,p=new Array(h);for(o=0;o<h;++o)(l=e[o])&&(p[o]=c=s.call(l,l.__data__,o,e)+"",u.has(c)?i[o]=l:u.set(c,l));for(o=0;o<d;++o)c=s.call(t,a[o],o,a)+"",(l=u.get(c))?(r[o]=l,l.__data__=a[o],u.delete(c)):n[o]=new I(t,a[o]);for(o=0;o<h;++o)(l=e[o])&&u.get(p[o])===l&&(i[o]=l)}function M(t){return t.__data__}function F(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function B(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}I.prototype={constructor:I,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var R="http://www.w3.org/1999/xhtml";const $={svg:"http://www.w3.org/2000/svg",xhtml:R,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Z(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),$.hasOwnProperty(e)?{space:$[e],local:t}:t}function j(t){return function(){this.removeAttribute(t)}}function P(t){return function(){this.removeAttributeNS(t.space,t.local)}}function z(t,e){return function(){this.setAttribute(t,e)}}function Y(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function U(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function W(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function H(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function q(t){return function(){this.style.removeProperty(t)}}function V(t,e,n){return function(){this.style.setProperty(t,e,n)}}function G(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function X(t,e){return t.style.getPropertyValue(e)||H(t).getComputedStyle(t,null).getPropertyValue(e)}function K(t){return function(){delete this[t]}}function Q(t,e){return function(){this[t]=e}}function J(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function tt(t){return t.trim().split(/^|\s+/)}function et(t){return t.classList||new nt(t)}function nt(t){this._node=t,this._names=tt(t.getAttribute("class")||"")}function rt(t,e){for(var n=et(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function it(t,e){for(var n=et(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function at(t){return function(){rt(this,t)}}function st(t){return function(){it(this,t)}}function ot(t,e){return function(){(e.apply(this,arguments)?rt:it)(this,t)}}function lt(){this.textContent=""}function ct(t){return function(){this.textContent=t}}function ut(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function ht(){this.innerHTML=""}function dt(t){return function(){this.innerHTML=t}}function pt(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function ft(){this.nextSibling&&this.parentNode.appendChild(this)}function mt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function gt(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===R&&e.documentElement.namespaceURI===R?e.createElement(t):e.createElementNS(n,t)}}function yt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function bt(t){var e=Z(t);return(e.local?yt:gt)(e)}function xt(){return null}function vt(){var t=this.parentNode;t&&t.removeChild(this)}function _t(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function kt(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Tt(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,a=e.length;r<a;++r)n=e[r],t.type&&n.type!==t.type||n.name!==t.name?e[++i]=n:this.removeEventListener(n.type,n.listener,n.options);++i?e.length=i:delete this.__on}}}function wt(t,e,n){return function(){var r,i=this.__on,a=function(t){return function(e){t.call(this,e,this.__data__)}}(e);if(i)for(var s=0,o=i.length;s<o;++s)if((r=i[s]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=a,r.options=n),void(r.value=e);this.addEventListener(t.type,a,n),r={type:t.type,name:t.name,value:e,listener:a,options:n},i?i.push(r):this.__on=[r]}}function St(t,e,n){var r=H(t),i=r.CustomEvent;"function"==typeof i?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function Et(t,e){return function(){return St(this,t,e)}}function Ct(t,e){return function(){return St(this,t,e.apply(this,arguments))}}nt.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Dt=[null];function At(t,e){this._groups=t,this._parents=e}function Ot(){return new At([[document.documentElement]],Dt)}At.prototype=Ot.prototype={constructor:At,select:function(t){"function"!=typeof t&&(t=v(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,s,o=e[i],l=o.length,c=r[i]=new Array(l),u=0;u<l;++u)(a=o[u])&&(s=t.call(a,a.__data__,u,o))&&("__data__"in a&&(s.__data__=a.__data__),c[u]=s);return new At(r,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return _(t.apply(this,arguments))}}(t):T(t);for(var e=this._groups,n=e.length,r=[],i=[],a=0;a<n;++a)for(var s,o=e[a],l=o.length,c=0;c<l;++c)(s=o[c])&&(r.push(t.call(s,s.__data__,c,o)),i.push(s));return new At(r,i)},selectChild:function(t){return this.select(null==t?C:function(t){return function(){return E.call(this.children,t)}}("function"==typeof t?t:S(t)))},selectChildren:function(t){return this.selectAll(null==t?A:function(t){return function(){return D.call(this.children,t)}}("function"==typeof t?t:S(t)))},filter:function(t){"function"!=typeof t&&(t=w(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,s=e[i],o=s.length,l=r[i]=[],c=0;c<o;++c)(a=s[c])&&t.call(a,a.__data__,c,s)&&l.push(a);return new At(r,this._parents)},data:function(t,e){if(!arguments.length)return Array.from(this,M);var n,r=e?N:L,i=this._parents,a=this._groups;"function"!=typeof t&&(n=t,t=function(){return n});for(var s=a.length,o=new Array(s),l=new Array(s),c=new Array(s),u=0;u<s;++u){var h=i[u],d=a[u],p=d.length,f=F(t.call(h,h&&h.__data__,u,i)),m=f.length,g=l[u]=new Array(m),y=o[u]=new Array(m);r(h,d,g,y,c[u]=new Array(p),f,e);for(var b,x,v=0,_=0;v<m;++v)if(b=g[v]){for(v>=_&&(_=v+1);!(x=y[_])&&++_<m;);b._next=x||null}}return(o=new At(o,i))._enter=l,o._exit=c,o},enter:function(){return new At(this._enter||this._groups.map(O),this._parents)},exit:function(){return new At(this._exit||this._groups.map(O),this._parents)},join:function(t,e,n){var r=this.enter(),i=this,a=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=e&&(i=e(i))&&(i=i.selection()),null==n?a.remove():n(a),r&&i?r.merge(i).order():i},merge:function(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,a=r.length,s=Math.min(i,a),o=new Array(i),l=0;l<s;++l)for(var c,u=n[l],h=r[l],d=u.length,p=o[l]=new Array(d),f=0;f<d;++f)(c=u[f]||h[f])&&(p[f]=c);for(;l<i;++l)o[l]=n[l];return new At(o,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r,i=t[e],a=i.length-1,s=i[a];--a>=0;)(r=i[a])&&(s&&4^r.compareDocumentPosition(s)&&s.parentNode.insertBefore(r,s),s=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=B);for(var n=this._groups,r=n.length,i=new Array(r),a=0;a<r;++a){for(var s,o=n[a],l=o.length,c=i[a]=new Array(l),u=0;u<l;++u)(s=o[u])&&(c[u]=s);c.sort(e)}return new At(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,a=r.length;i<a;++i){var s=r[i];if(s)return s}return null},size:function(){let t=0;for(const e of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i,a=e[n],s=0,o=a.length;s<o;++s)(i=a[s])&&t.call(i,i.__data__,s,a);return this},attr:function(t,e){var n=Z(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((null==e?n.local?P:j:"function"==typeof e?n.local?W:U:n.local?Y:z)(n,e))},style:function(t,e,n){return arguments.length>1?this.each((null==e?q:"function"==typeof e?G:V)(t,e,null==n?"":n)):X(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?K:"function"==typeof e?J:Q)(t,e)):this.node()[t]},classed:function(t,e){var n=tt(t+"");if(arguments.length<2){for(var r=et(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each(("function"==typeof e?ot:e?at:st)(n,e))},text:function(t){return arguments.length?this.each(null==t?lt:("function"==typeof t?ut:ct)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?ht:("function"==typeof t?pt:dt)(t)):this.node().innerHTML},raise:function(){return this.each(ft)},lower:function(){return this.each(mt)},append:function(t){var e="function"==typeof t?t:bt(t);return this.select((function(){return this.appendChild(e.apply(this,arguments))}))},insert:function(t,e){var n="function"==typeof t?t:bt(t),r=null==e?xt:"function"==typeof e?e:v(e);return this.select((function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)}))},remove:function(){return this.each(vt)},clone:function(t){return this.select(t?kt:_t)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,e,n){var r,i,a=function(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}(t+""),s=a.length;if(!(arguments.length<2)){for(o=e?wt:Tt,r=0;r<s;++r)this.each(o(a[r],e,n));return this}var o=this.node().__on;if(o)for(var l,c=0,u=o.length;c<u;++c)for(r=0,l=o[c];r<s;++r)if((i=a[r]).type===l.type&&i.name===l.name)return l.value},dispatch:function(t,e){return this.each(("function"==typeof e?Ct:Et)(t,e))},[Symbol.iterator]:function*(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r,i=t[e],a=0,s=i.length;a<s;++a)(r=i[a])&&(yield r)}};const It=Ot;var Lt={value:()=>{}};function Nt(){for(var t,e=0,n=arguments.length,r={};e<n;++e){if(!(t=arguments[e]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new Mt(r)}function Mt(t){this._=t}function Ft(t,e){for(var n,r=0,i=t.length;r<i;++r)if((n=t[r]).name===e)return n.value}function Bt(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=Lt,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=n&&t.push({name:e,value:n}),t}Mt.prototype=Nt.prototype={constructor:Mt,on:function(t,e){var n,r,i=this._,a=(r=i,(t+"").trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");if(n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}}))),s=-1,o=a.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++s<o;)if(n=(t=a[s]).type)i[n]=Bt(i[n],t.name,e);else if(null==e)for(n in i)i[n]=Bt(i[n],t.name,null);return this}for(;++s<o;)if((n=(t=a[s]).type)&&(n=Ft(i[n],t.name)))return n},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new Mt(t)},call:function(t,e){if((n=arguments.length-2)>0)for(var n,r,i=new Array(n),a=0;a<n;++a)i[a]=arguments[a+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(a=0,n=(r=this._[t]).length;a<n;++a)r[a].value.apply(e,i)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,a=r.length;i<a;++i)r[i].value.apply(e,n)}};const Rt=Nt;var $t,Zt,jt=0,Pt=0,zt=0,Yt=1e3,Ut=0,Wt=0,Ht=0,qt="object"==typeof performance&&performance.now?performance:Date,Vt="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Gt(){return Wt||(Vt(Xt),Wt=qt.now()+Ht)}function Xt(){Wt=0}function Kt(){this._call=this._time=this._next=null}function Qt(t,e,n){var r=new Kt;return r.restart(t,e,n),r}function Jt(){Wt=(Ut=qt.now())+Ht,jt=Pt=0;try{!function(){Gt(),++jt;for(var t,e=$t;e;)(t=Wt-e._time)>=0&&e._call.call(void 0,t),e=e._next;--jt}()}finally{jt=0,function(){var t,e,n=$t,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:$t=e);Zt=t,ee(r)}(),Wt=0}}function te(){var t=qt.now(),e=t-Ut;e>Yt&&(Ht-=e,Ut=t)}function ee(t){jt||(Pt&&(Pt=clearTimeout(Pt)),t-Wt>24?(t<1/0&&(Pt=setTimeout(Jt,t-qt.now()-Ht)),zt&&(zt=clearInterval(zt))):(zt||(Ut=qt.now(),zt=setInterval(te,Yt)),jt=1,Vt(Jt)))}function ne(t,e,n){var r=new Kt;return e=null==e?0:+e,r.restart((n=>{r.stop(),t(n+e)}),e,n),r}Kt.prototype=Qt.prototype={constructor:Kt,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?Gt():+n)+(null==e?0:+e),this._next||Zt===this||(Zt?Zt._next=this:$t=this,Zt=this),this._call=t,this._time=n,ee()},stop:function(){this._call&&(this._call=null,this._time=1/0,ee())}};var re=Rt("start","end","cancel","interrupt"),ie=[],ae=0,se=1,oe=2,le=3,ce=4,ue=5,he=6;function de(t,e,n,r,i,a){var s=t.__transition;if(s){if(n in s)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function a(t){n.state=se,n.timer.restart(s,n.delay,n.time),n.delay<=t&&s(t-n.delay)}function s(a){var c,u,h,d;if(n.state!==se)return l();for(c in i)if((d=i[c]).name===n.name){if(d.state===le)return ne(s);d.state===ce?(d.state=he,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete i[c]):+c<e&&(d.state=he,d.timer.stop(),d.on.call("cancel",t,t.__data__,d.index,d.group),delete i[c])}if(ne((function(){n.state===le&&(n.state=ce,n.timer.restart(o,n.delay,n.time),o(a))})),n.state=oe,n.on.call("start",t,t.__data__,n.index,n.group),n.state===oe){for(n.state=le,r=new Array(h=n.tween.length),c=0,u=-1;c<h;++c)(d=n.tween[c].value.call(t,t.__data__,n.index,n.group))&&(r[++u]=d);r.length=u+1}}function o(e){for(var i=e<n.duration?n.ease.call(null,e/n.duration):(n.timer.restart(l),n.state=ue,1),a=-1,s=r.length;++a<s;)r[a].call(t,i);n.state===ue&&(n.on.call("end",t,t.__data__,n.index,n.group),l())}function l(){for(var r in n.state=he,n.timer.stop(),delete i[e],i)return;delete t.__transition}i[e]=n,n.timer=Qt(a,0,n.time)}(t,n,{name:e,index:r,group:i,on:re,tween:ie,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:ae})}function pe(t,e){var n=me(t,e);if(n.state>ae)throw new Error("too late; already scheduled");return n}function fe(t,e){var n=me(t,e);if(n.state>le)throw new Error("too late; already running");return n}function me(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function ge(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var ye,be=180/Math.PI,xe={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ve(t,e,n,r,i,a){var s,o,l;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(l=t*n+e*r)&&(n-=t*l,r-=e*l),(o=Math.sqrt(n*n+r*r))&&(n/=o,r/=o,l/=o),t*r<e*n&&(t=-t,e=-e,l=-l,s=-s),{translateX:i,translateY:a,rotate:Math.atan2(e,t)*be,skewX:Math.atan(l)*be,scaleX:s,scaleY:o}}function _e(t,e,n,r){function i(t){return t.length?t.pop()+" ":""}return function(a,s){var o=[],l=[];return a=t(a),s=t(s),function(t,r,i,a,s,o){if(t!==i||r!==a){var l=s.push("translate(",null,e,null,n);o.push({i:l-4,x:ge(t,i)},{i:l-2,x:ge(r,a)})}else(i||a)&&s.push("translate("+i+e+a+n)}(a.translateX,a.translateY,s.translateX,s.translateY,o,l),function(t,e,n,a){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,r)-2,x:ge(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(a.rotate,s.rotate,o,l),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,r)-2,x:ge(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(a.skewX,s.skewX,o,l),function(t,e,n,r,a,s){if(t!==n||e!==r){var o=a.push(i(a)+"scale(",null,",",null,")");s.push({i:o-4,x:ge(t,n)},{i:o-2,x:ge(e,r)})}else 1===n&&1===r||a.push(i(a)+"scale("+n+","+r+")")}(a.scaleX,a.scaleY,s.scaleX,s.scaleY,o,l),a=s=null,function(t){for(var e,n=-1,r=l.length;++n<r;)o[(e=l[n]).i]=e.x(t);return o.join("")}}}var ke=_e((function(t){const e=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?xe:ve(e.a,e.b,e.c,e.d,e.e,e.f)}),"px, ","px)","deg)"),Te=_e((function(t){return null==t?xe:(ye||(ye=document.createElementNS("http://www.w3.org/2000/svg","g")),ye.setAttribute("transform",t),(t=ye.transform.baseVal.consolidate())?ve((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):xe)}),", ",")",")");function we(t,e){var n,r;return function(){var i=fe(this,t),a=i.tween;if(a!==n)for(var s=0,o=(r=n=a).length;s<o;++s)if(r[s].name===e){(r=r.slice()).splice(s,1);break}i.tween=r}}function Se(t,e,n){var r,i;if("function"!=typeof n)throw new Error;return function(){var a=fe(this,t),s=a.tween;if(s!==r){i=(r=s).slice();for(var o={name:e,value:n},l=0,c=i.length;l<c;++l)if(i[l].name===e){i[l]=o;break}l===c&&i.push(o)}a.tween=i}}function Ee(t,e,n){var r=t._id;return t.each((function(){var t=fe(this,r);(t.value||(t.value={}))[e]=n.apply(this,arguments)})),function(t){return me(t,r).value[e]}}function Ce(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function De(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Ae(){}var Oe=.7,Ie=1/Oe,Le="\\s*([+-]?\\d+)\\s*",Ne="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Me="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Fe=/^#([0-9a-f]{3,8})$/,Be=new RegExp(`^rgb\\(${Le},${Le},${Le}\\)$`),Re=new RegExp(`^rgb\\(${Me},${Me},${Me}\\)$`),$e=new RegExp(`^rgba\\(${Le},${Le},${Le},${Ne}\\)$`),Ze=new RegExp(`^rgba\\(${Me},${Me},${Me},${Ne}\\)$`),je=new RegExp(`^hsl\\(${Ne},${Me},${Me}\\)$`),Pe=new RegExp(`^hsla\\(${Ne},${Me},${Me},${Ne}\\)$`),ze={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Ye(){return this.rgb().formatHex()}function Ue(){return this.rgb().formatRgb()}function We(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Fe.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?He(e):3===n?new Xe(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?qe(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?qe(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Be.exec(t))?new Xe(e[1],e[2],e[3],1):(e=Re.exec(t))?new Xe(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=$e.exec(t))?qe(e[1],e[2],e[3],e[4]):(e=Ze.exec(t))?qe(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=je.exec(t))?nn(e[1],e[2]/100,e[3]/100,1):(e=Pe.exec(t))?nn(e[1],e[2]/100,e[3]/100,e[4]):ze.hasOwnProperty(t)?He(ze[t]):"transparent"===t?new Xe(NaN,NaN,NaN,0):null}function He(t){return new Xe(t>>16&255,t>>8&255,255&t,1)}function qe(t,e,n,r){return r<=0&&(t=e=n=NaN),new Xe(t,e,n,r)}function Ve(t){return t instanceof Ae||(t=We(t)),t?new Xe((t=t.rgb()).r,t.g,t.b,t.opacity):new Xe}function Ge(t,e,n,r){return 1===arguments.length?Ve(t):new Xe(t,e,n,null==r?1:r)}function Xe(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function Ke(){return`#${en(this.r)}${en(this.g)}${en(this.b)}`}function Qe(){const t=Je(this.opacity);return`${1===t?"rgb(":"rgba("}${tn(this.r)}, ${tn(this.g)}, ${tn(this.b)}${1===t?")":`, ${t})`}`}function Je(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function tn(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function en(t){return((t=tn(t))<16?"0":"")+t.toString(16)}function nn(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new an(t,e,n,r)}function rn(t){if(t instanceof an)return new an(t.h,t.s,t.l,t.opacity);if(t instanceof Ae||(t=We(t)),!t)return new an;if(t instanceof an)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),s=NaN,o=a-i,l=(a+i)/2;return o?(s=e===a?(n-r)/o+6*(n<r):n===a?(r-e)/o+2:(e-n)/o+4,o/=l<.5?a+i:2-a-i,s*=60):o=l>0&&l<1?0:s,new an(s,o,l,t.opacity)}function an(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function sn(t){return(t=(t||0)%360)<0?t+360:t}function on(t){return Math.max(0,Math.min(1,t||0))}function ln(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function cn(t,e,n,r,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*n+(1+3*t+3*a-3*s)*r+s*i)/6}Ce(Ae,We,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Ye,formatHex:Ye,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return rn(this).formatHsl()},formatRgb:Ue,toString:Ue}),Ce(Xe,Ge,De(Ae,{brighter(t){return t=null==t?Ie:Math.pow(Ie,t),new Xe(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?Oe:Math.pow(Oe,t),new Xe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Xe(tn(this.r),tn(this.g),tn(this.b),Je(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ke,formatHex:Ke,formatHex8:function(){return`#${en(this.r)}${en(this.g)}${en(this.b)}${en(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Qe,toString:Qe})),Ce(an,(function(t,e,n,r){return 1===arguments.length?rn(t):new an(t,e,n,null==r?1:r)}),De(Ae,{brighter(t){return t=null==t?Ie:Math.pow(Ie,t),new an(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?Oe:Math.pow(Oe,t),new an(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new Xe(ln(t>=240?t-240:t+120,i,r),ln(t,i,r),ln(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new an(sn(this.h),on(this.s),on(this.l),Je(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Je(this.opacity);return`${1===t?"hsl(":"hsla("}${sn(this.h)}, ${100*on(this.s)}%, ${100*on(this.l)}%${1===t?")":`, ${t})`}`}}));const un=t=>()=>t;function hn(t,e){return function(n){return t+n*e}}function dn(t){return 1==(t=+t)?pn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):un(isNaN(e)?n:e)}}function pn(t,e){var n=e-t;return n?hn(t,n):un(isNaN(t)?e:t)}const fn=function t(e){var n=dn(e);function r(t,e){var r=n((t=Ge(t)).r,(e=Ge(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),s=pn(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=s(e),t+""}}return r.gamma=t,r}(1);function mn(t){return function(e){var n,r,i=e.length,a=new Array(i),s=new Array(i),o=new Array(i);for(n=0;n<i;++n)r=Ge(e[n]),a[n]=r.r||0,s[n]=r.g||0,o[n]=r.b||0;return a=t(a),s=t(s),o=t(o),r.opacity=1,function(t){return r.r=a(t),r.g=s(t),r.b=o(t),r+""}}}mn((function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],s=r>0?t[r-1]:2*i-a,o=r<e-1?t[r+2]:2*a-i;return cn((n-r/e)*e,s,i,a,o)}})),mn((function(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],a=t[r%e],s=t[(r+1)%e],o=t[(r+2)%e];return cn((n-r/e)*e,i,a,s,o)}}));var gn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,yn=new RegExp(gn.source,"g");function bn(t,e){var n,r,i,a=gn.lastIndex=yn.lastIndex=0,s=-1,o=[],l=[];for(t+="",e+="";(n=gn.exec(t))&&(r=yn.exec(e));)(i=r.index)>a&&(i=e.slice(a,i),o[s]?o[s]+=i:o[++s]=i),(n=n[0])===(r=r[0])?o[s]?o[s]+=r:o[++s]=r:(o[++s]=null,l.push({i:s,x:ge(n,r)})),a=yn.lastIndex;return a<e.length&&(i=e.slice(a),o[s]?o[s]+=i:o[++s]=i),o.length<2?l[0]?function(t){return function(e){return t(e)+""}}(l[0].x):function(t){return function(){return t}}(e):(e=l.length,function(t){for(var n,r=0;r<e;++r)o[(n=l[r]).i]=n.x(t);return o.join("")})}function xn(t,e){var n;return("number"==typeof e?ge:e instanceof We?fn:(n=We(e))?(e=n,fn):bn)(t,e)}function vn(t){return function(){this.removeAttribute(t)}}function _n(t){return function(){this.removeAttributeNS(t.space,t.local)}}function kn(t,e,n){var r,i,a=n+"";return function(){var s=this.getAttribute(t);return s===a?null:s===r?i:i=e(r=s,n)}}function Tn(t,e,n){var r,i,a=n+"";return function(){var s=this.getAttributeNS(t.space,t.local);return s===a?null:s===r?i:i=e(r=s,n)}}function wn(t,e,n){var r,i,a;return function(){var s,o,l=n(this);if(null!=l)return(s=this.getAttribute(t))===(o=l+"")?null:s===r&&o===i?a:(i=o,a=e(r=s,l));this.removeAttribute(t)}}function Sn(t,e,n){var r,i,a;return function(){var s,o,l=n(this);if(null!=l)return(s=this.getAttributeNS(t.space,t.local))===(o=l+"")?null:s===r&&o===i?a:(i=o,a=e(r=s,l));this.removeAttributeNS(t.space,t.local)}}function En(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&function(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}(t,i)),n}return i._value=e,i}function Cn(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&function(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}(t,i)),n}return i._value=e,i}function Dn(t,e){return function(){pe(this,t).delay=+e.apply(this,arguments)}}function An(t,e){return e=+e,function(){pe(this,t).delay=e}}function On(t,e){return function(){fe(this,t).duration=+e.apply(this,arguments)}}function In(t,e){return e=+e,function(){fe(this,t).duration=e}}var Ln=It.prototype.constructor;function Nn(t){return function(){this.style.removeProperty(t)}}var Mn=0;function Fn(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function Bn(){return++Mn}var Rn=It.prototype;Fn.prototype=function(t){return It().transition(t)}.prototype={constructor:Fn,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=v(t));for(var r=this._groups,i=r.length,a=new Array(i),s=0;s<i;++s)for(var o,l,c=r[s],u=c.length,h=a[s]=new Array(u),d=0;d<u;++d)(o=c[d])&&(l=t.call(o,o.__data__,d,c))&&("__data__"in o&&(l.__data__=o.__data__),h[d]=l,de(h[d],e,n,d,h,me(o,n)));return new Fn(a,this._parents,e,n)},selectAll:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=T(t));for(var r=this._groups,i=r.length,a=[],s=[],o=0;o<i;++o)for(var l,c=r[o],u=c.length,h=0;h<u;++h)if(l=c[h]){for(var d,p=t.call(l,l.__data__,h,c),f=me(l,n),m=0,g=p.length;m<g;++m)(d=p[m])&&de(d,e,n,m,p,f);a.push(p),s.push(l)}return new Fn(a,s,e,n)},selectChild:Rn.selectChild,selectChildren:Rn.selectChildren,filter:function(t){"function"!=typeof t&&(t=w(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,s=e[i],o=s.length,l=r[i]=[],c=0;c<o;++c)(a=s[c])&&t.call(a,a.__data__,c,s)&&l.push(a);return new Fn(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,a=Math.min(r,i),s=new Array(r),o=0;o<a;++o)for(var l,c=e[o],u=n[o],h=c.length,d=s[o]=new Array(h),p=0;p<h;++p)(l=c[p]||u[p])&&(d[p]=l);for(;o<r;++o)s[o]=e[o];return new Fn(s,this._parents,this._name,this._id)},selection:function(){return new Ln(this._groups,this._parents)},transition:function(){for(var t=this._name,e=this._id,n=Bn(),r=this._groups,i=r.length,a=0;a<i;++a)for(var s,o=r[a],l=o.length,c=0;c<l;++c)if(s=o[c]){var u=me(s,e);de(s,t,n,c,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new Fn(r,this._parents,t,n)},call:Rn.call,nodes:Rn.nodes,node:Rn.node,size:Rn.size,empty:Rn.empty,each:Rn.each,on:function(t,e){var n=this._id;return arguments.length<2?me(this.node(),n).on.on(t):this.each(function(t,e,n){var r,i,a=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?pe:fe;return function(){var s=a(this,t),o=s.on;o!==r&&(i=(r=o).copy()).on(e,n),s.on=i}}(n,t,e))},attr:function(t,e){var n=Z(t),r="transform"===n?Te:xn;return this.attrTween(t,"function"==typeof e?(n.local?Sn:wn)(n,r,Ee(this,"attr."+t,e)):null==e?(n.local?_n:vn)(n):(n.local?Tn:kn)(n,r,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var r=Z(t);return this.tween(n,(r.local?En:Cn)(r,e))},style:function(t,e,n){var r="transform"==(t+="")?ke:xn;return null==e?this.styleTween(t,function(t,e){var n,r,i;return function(){var a=X(this,t),s=(this.style.removeProperty(t),X(this,t));return a===s?null:a===n&&s===r?i:i=e(n=a,r=s)}}(t,r)).on("end.style."+t,Nn(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var r,i,a;return function(){var s=X(this,t),o=n(this),l=o+"";return null==o&&(this.style.removeProperty(t),l=o=X(this,t)),s===l?null:s===r&&l===i?a:(i=l,a=e(r=s,o))}}(t,r,Ee(this,"style."+t,e))).each(function(t,e){var n,r,i,a,s="style."+e,o="end."+s;return function(){var l=fe(this,t),c=l.on,u=null==l.value[s]?a||(a=Nn(e)):void 0;c===n&&i===u||(r=(n=c).copy()).on(o,i=u),l.on=r}}(this._id,t)):this.styleTween(t,function(t,e,n){var r,i,a=n+"";return function(){var s=X(this,t);return s===a?null:s===r?i:i=e(r=s,n)}}(t,r,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;return this.tween(r,function(t,e,n){var r,i;function a(){var a=e.apply(this,arguments);return a!==i&&(r=(i=a)&&function(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}(t,a,n)),r}return a._value=e,a}(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(Ee(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,function(t){var e,n;function r(){var r=t.apply(this,arguments);return r!==n&&(e=(n=r)&&function(t){return function(e){this.textContent=t.call(this,e)}}(r)),e}return r._value=t,r}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r,i=me(this.node(),n).tween,a=0,s=i.length;a<s;++a)if((r=i[a]).name===t)return r.value;return null}return this.each((null==e?we:Se)(n,t,e))},delay:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?Dn:An)(e,t)):me(this.node(),e).delay},duration:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?On:In)(e,t)):me(this.node(),e).duration},ease:function(t){var e=this._id;return arguments.length?this.each(function(t,e){if("function"!=typeof e)throw new Error;return function(){fe(this,t).ease=e}}(e,t)):me(this.node(),e).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,e){return function(){var n=e.apply(this,arguments);if("function"!=typeof n)throw new Error;fe(this,t).ease=n}}(this._id,t))},end:function(){var t,e,n=this,r=n._id,i=n.size();return new Promise((function(a,s){var o={value:s},l={value:function(){0==--i&&a()}};n.each((function(){var n=fe(this,r),i=n.on;i!==t&&((e=(t=i).copy())._.cancel.push(o),e._.interrupt.push(o),e._.end.push(l)),n.on=e})),0===i&&a()}))},[Symbol.iterator]:Rn[Symbol.iterator]};var $n={time:null,delay:0,duration:250,ease:function(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}};function Zn(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}It.prototype.interrupt=function(t){return this.each((function(){!function(t,e){var n,r,i,a=t.__transition,s=!0;if(a){for(i in e=null==e?null:e+"",a)(n=a[i]).name===e?(r=n.state>oe&&n.state<ue,n.state=he,n.timer.stop(),n.on.call(r?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):s=!1;s&&delete t.__transition}}(this,t)}))},It.prototype.transition=function(t){var e,n;t instanceof Fn?(e=t._id,t=t._name):(e=Bn(),(n=$n).time=Gt(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var s,o=r[a],l=o.length,c=0;c<l;++c)(s=o[c])&&de(s,t,e,c,o,n||Zn(s,e));return new Fn(r,this._parents,t,e)};const{abs:jn,max:Pn,min:zn}=Math;function Yn(t){return[+t[0],+t[1]]}function Un(t){return[Yn(t[0]),Yn(t[1])]}["w","e"].map(Wn),["n","s"].map(Wn),["n","w","e","s","nw","ne","sw","se"].map(Wn);function Wn(t){return{type:t}}function Hn(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.text()}function qn(t){return(e,n)=>function(t,e){return fetch(t,e).then(Hn)}(e,n).then((e=>(new DOMParser).parseFromString(e,t)))}qn("application/xml");qn("text/html");var Vn=qn("image/svg+xml");const Gn=Math.PI/180,Xn=180/Math.PI,Kn=.96422,Qn=1,Jn=.82521,tr=4/29,er=6/29,nr=3*er*er,rr=er*er*er;function ir(t){if(t instanceof ar)return new ar(t.l,t.a,t.b,t.opacity);if(t instanceof dr)return pr(t);t instanceof Xe||(t=Ve(t));var e,n,r=cr(t.r),i=cr(t.g),a=cr(t.b),s=sr((.2225045*r+.7168786*i+.0606169*a)/Qn);return r===i&&i===a?e=n=s:(e=sr((.4360747*r+.3850649*i+.1430804*a)/Kn),n=sr((.0139322*r+.0971045*i+.7141733*a)/Jn)),new ar(116*s-16,500*(e-s),200*(s-n),t.opacity)}function ar(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}function sr(t){return t>rr?Math.pow(t,1/3):t/nr+tr}function or(t){return t>er?t*t*t:nr*(t-tr)}function lr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function cr(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function ur(t){if(t instanceof dr)return new dr(t.h,t.c,t.l,t.opacity);if(t instanceof ar||(t=ir(t)),0===t.a&&0===t.b)return new dr(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Xn;return new dr(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function hr(t,e,n,r){return 1===arguments.length?ur(t):new dr(t,e,n,null==r?1:r)}function dr(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function pr(t){if(isNaN(t.h))return new ar(t.l,0,0,t.opacity);var e=t.h*Gn;return new ar(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}function fr(t){return function(e,n){var r=t((e=hr(e)).h,(n=hr(n)).h),i=pn(e.c,n.c),a=pn(e.l,n.l),s=pn(e.opacity,n.opacity);return function(t){return e.h=r(t),e.c=i(t),e.l=a(t),e.opacity=s(t),e+""}}}Ce(ar,(function(t,e,n,r){return 1===arguments.length?ir(t):new ar(t,e,n,null==r?1:r)}),De(Ae,{brighter(t){return new ar(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker(t){return new ar(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return new Xe(lr(3.1338561*(e=Kn*or(e))-1.6168667*(t=Qn*or(t))-.4906146*(n=Jn*or(n))),lr(-.9787684*e+1.9161415*t+.033454*n),lr(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}})),Ce(dr,hr,De(Ae,{brighter(t){return new dr(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker(t){return new dr(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb(){return pr(this).rgb()}}));const mr=fr((function(t,e){var n=e-t;return n?hn(t,n>180||n<-180?n-360*Math.round(n/360):n):un(isNaN(t)?e:t)}));fr(pn);const gr=Math.sqrt(50),yr=Math.sqrt(10),br=Math.sqrt(2);function xr(t,e,n){const r=(e-t)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/Math.pow(10,i),s=a>=gr?10:a>=yr?5:a>=br?2:1;let o,l,c;return i<0?(c=Math.pow(10,-i)/s,o=Math.round(t*c),l=Math.round(e*c),o/c<t&&++o,l/c>e&&--l,c=-c):(c=Math.pow(10,i)*s,o=Math.round(t/c),l=Math.round(e/c),o*c<t&&++o,l*c>e&&--l),l<o&&.5<=n&&n<2?xr(t,e,2*n):[o,l,c]}function vr(t,e,n){return xr(t=+t,e=+e,n=+n)[2]}function _r(t,e,n){n=+n;const r=(e=+e)<(t=+t),i=r?vr(e,t,n):vr(t,e,n);return(r?-1:1)*(i<0?1/-i:i)}function kr(t,e){return null==t||null==e?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Tr(t,e){return null==t||null==e?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function wr(t){let e,n,r;function i(t,r,i=0,a=t.length){if(i<a){if(0!==e(r,r))return a;do{const e=i+a>>>1;n(t[e],r)<0?i=e+1:a=e}while(i<a)}return i}return 2!==t.length?(e=kr,n=(e,n)=>kr(t(e),n),r=(e,n)=>t(e)-n):(e=t===kr||t===Tr?t:Sr,n=t,r=t),{left:i,center:function(t,e,n=0,a=t.length){const s=i(t,e,n,a-1);return s>n&&r(t[s-1],e)>-r(t[s],e)?s-1:s},right:function(t,r,i=0,a=t.length){if(i<a){if(0!==e(r,r))return a;do{const e=i+a>>>1;n(t[e],r)<=0?i=e+1:a=e}while(i<a)}return i}}}function Sr(){return 0}const Er=wr(kr),Cr=Er.right,Dr=(Er.left,wr((function(t){return null===t?NaN:+t})).center,Cr);function Ar(t,e){var n,r=e?e.length:0,i=t?Math.min(r,t.length):0,a=new Array(i),s=new Array(r);for(n=0;n<i;++n)a[n]=Nr(t[n],e[n]);for(;n<r;++n)s[n]=e[n];return function(t){for(n=0;n<i;++n)s[n]=a[n](t);return s}}function Or(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function Ir(t,e){var n,r={},i={};for(n in null!==t&&"object"==typeof t||(t={}),null!==e&&"object"==typeof e||(e={}),e)n in t?r[n]=Nr(t[n],e[n]):i[n]=e[n];return function(t){for(n in r)i[n]=r[n](t);return i}}function Lr(t,e){e||(e=[]);var n,r=t?Math.min(e.length,t.length):0,i=e.slice();return function(a){for(n=0;n<r;++n)i[n]=t[n]*(1-a)+e[n]*a;return i}}function Nr(t,e){var n,r,i=typeof e;return null==e||"boolean"===i?un(e):("number"===i?ge:"string"===i?(n=We(e))?(e=n,fn):bn:e instanceof We?fn:e instanceof Date?Or:(r=e,!ArrayBuffer.isView(r)||r instanceof DataView?Array.isArray(e)?Ar:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?Ir:ge:Lr))(t,e)}function Mr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}function Fr(t){return+t}var Br=[0,1];function Rr(t){return t}function $r(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:(n=isNaN(e)?NaN:.5,function(){return n});var n}function Zr(t,e,n){var r=t[0],i=t[1],a=e[0],s=e[1];return i<r?(r=$r(i,r),a=n(s,a)):(r=$r(r,i),a=n(a,s)),function(t){return a(r(t))}}function jr(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),a=new Array(r),s=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++s<r;)i[s]=$r(t[s],t[s+1]),a[s]=n(e[s],e[s+1]);return function(e){var n=Dr(t,e,1,r)-1;return a[n](i[n](e))}}function Pr(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function zr(){var t,e,n,r,i,a,s=Br,o=Br,l=Nr,c=Rr;function u(){var t,e,n,l=Math.min(s.length,o.length);return c!==Rr&&(t=s[0],e=s[l-1],t>e&&(n=t,t=e,e=n),c=function(n){return Math.max(t,Math.min(e,n))}),r=l>2?jr:Zr,i=a=null,h}function h(e){return null==e||isNaN(e=+e)?n:(i||(i=r(s.map(t),o,l)))(t(c(e)))}return h.invert=function(n){return c(e((a||(a=r(o,s.map(t),ge)))(n)))},h.domain=function(t){return arguments.length?(s=Array.from(t,Fr),u()):s.slice()},h.range=function(t){return arguments.length?(o=Array.from(t),u()):o.slice()},h.rangeRound=function(t){return o=Array.from(t),l=Mr,u()},h.clamp=function(t){return arguments.length?(c=!!t||Rr,u()):c!==Rr},h.interpolate=function(t){return arguments.length?(l=t,u()):l},h.unknown=function(t){return arguments.length?(n=t,h):n},function(n,r){return t=n,e=r,u()}}function Yr(){return zr()(Rr,Rr)}function Ur(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}var Wr,Hr=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function qr(t){if(!(e=Hr.exec(t)))throw new Error("invalid format: "+t);var e;return new Vr({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function Vr(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function Gr(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function Xr(t){return(t=Gr(Math.abs(t)))?t[1]:NaN}function Kr(t,e){var n=Gr(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}qr.prototype=Vr.prototype,Vr.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const Qr={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Kr(100*t,e),r:Kr,s:function(t,e){var n=Gr(t,e);if(!n)return t+"";var r=n[0],i=n[1],a=i-(Wr=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,s=r.length;return a===s?r:a>s?r+new Array(a-s+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+Gr(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Jr(t){return t}var ti,ei,ni,ri=Array.prototype.map,ii=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"];function ai(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?Jr:(e=ri.call(t.grouping,Number),n=t.thousands+"",function(t,r){for(var i=t.length,a=[],s=0,o=e[0],l=0;i>0&&o>0&&(l+o+1>r&&(o=Math.max(1,r-l)),a.push(t.substring(i-=o,i+o)),!((l+=o+1)>r));)o=e[s=(s+1)%e.length];return a.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",s=void 0===t.decimal?".":t.decimal+"",o=void 0===t.numerals?Jr:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(ri.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"\u2212":t.minus+"",u=void 0===t.nan?"NaN":t.nan+"";function h(t){var e=(t=qr(t)).fill,n=t.align,h=t.sign,d=t.symbol,p=t.zero,f=t.width,m=t.comma,g=t.precision,y=t.trim,b=t.type;"n"===b?(m=!0,b="g"):Qr[b]||(void 0===g&&(g=12),y=!0,b="g"),(p||"0"===e&&"="===n)&&(p=!0,e="0",n="=");var x="$"===d?i:"#"===d&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",v="$"===d?a:/[%p]/.test(b)?l:"",_=Qr[b],k=/[defgprs%]/.test(b);function T(t){var i,a,l,d=x,T=v;if("c"===b)T=_(t)+T,t="";else{var w=(t=+t)<0||1/t<0;if(t=isNaN(t)?u:_(Math.abs(t),g),y&&(t=function(t){t:for(var e,n=t.length,r=1,i=-1;r<n;++r)switch(t[r]){case".":i=e=r;break;case"0":0===i&&(i=r),e=r;break;default:if(!+t[r])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),w&&0==+t&&"+"!==h&&(w=!1),d=(w?"("===h?h:c:"-"===h||"("===h?"":h)+d,T=("s"===b?ii[8+Wr/3]:"")+T+(w&&"("===h?")":""),k)for(i=-1,a=t.length;++i<a;)if(48>(l=t.charCodeAt(i))||l>57){T=(46===l?s+t.slice(i+1):t.slice(i))+T,t=t.slice(0,i);break}}m&&!p&&(t=r(t,1/0));var S=d.length+t.length+T.length,E=S<f?new Array(f-S+1).join(e):"";switch(m&&p&&(t=r(E+t,E.length?f-T.length:1/0),E=""),n){case"<":t=d+t+T+E;break;case"=":t=d+E+t+T;break;case"^":t=E.slice(0,S=E.length>>1)+d+t+T+E.slice(S);break;default:t=E+d+t+T}return o(t)}return g=void 0===g?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),T.toString=function(){return t+""},T}return{format:h,formatPrefix:function(t,e){var n=h(((t=qr(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(Xr(e)/3))),i=Math.pow(10,-r),a=ii[8+r/3];return function(t){return n(i*t)+a}}}}function si(t,e,n,r){var i,a=_r(t,e,n);switch((r=qr(null==r?",f":r)).type){case"s":var s=Math.max(Math.abs(t),Math.abs(e));return null!=r.precision||isNaN(i=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Xr(e)/3)))-Xr(Math.abs(t)))}(a,s))||(r.precision=i),ni(r,s);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Xr(e)-Xr(t))+1}(a,Math.max(Math.abs(t),Math.abs(e))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=function(t){return Math.max(0,-Xr(Math.abs(t)))}(a))||(r.precision=i-2*("%"===r.type))}return ei(r)}function oi(t){var e=t.domain;return t.ticks=function(t){var n=e();return function(t,e,n){if(!((n=+n)>0))return[];if((t=+t)==(e=+e))return[t];const r=e<t,[i,a,s]=r?xr(e,t,n):xr(t,e,n);if(!(a>=i))return[];const o=a-i+1,l=new Array(o);if(r)if(s<0)for(let c=0;c<o;++c)l[c]=(a-c)/-s;else for(let c=0;c<o;++c)l[c]=(a-c)*s;else if(s<0)for(let c=0;c<o;++c)l[c]=(i+c)/-s;else for(let c=0;c<o;++c)l[c]=(i+c)*s;return l}(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return si(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var r,i,a=e(),s=0,o=a.length-1,l=a[s],c=a[o],u=10;for(c<l&&(i=l,l=c,c=i,i=s,s=o,o=i);u-- >0;){if((i=vr(l,c,n))===r)return a[s]=l,a[o]=c,e(a);if(i>0)l=Math.floor(l/i)*i,c=Math.ceil(c/i)*i;else{if(!(i<0))break;l=Math.ceil(l*i)/i,c=Math.floor(c*i)/i}r=i}return t},t}function li(){var t=Yr();return t.copy=function(){return Pr(t,li())},Ur.apply(t,arguments),oi(t)}ti=ai({thousands:",",grouping:[3],currency:["$",""]}),ei=ti.format,ni=ti.formatPrefix;class ci extends Map{constructor(t,e=fi){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[n,r]of t)this.set(n,r)}get(t){return super.get(hi(this,t))}has(t){return super.has(hi(this,t))}set(t,e){return super.set(di(this,t),e)}delete(t){return super.delete(pi(this,t))}}class ui extends Set{constructor(t,e=fi){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const n of t)this.add(n)}has(t){return super.has(hi(this,t))}add(t){return super.add(di(this,t))}delete(t){return super.delete(pi(this,t))}}function hi({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function di({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function pi({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function fi(t){return null!==t&&"object"==typeof t?t.valueOf():t}const mi=Symbol("implicit");function gi(){var t=new ci,e=[],n=[],r=mi;function i(i){let a=t.get(i);if(void 0===a){if(r!==mi)return r;t.set(i,a=e.push(i)-1)}return n[a%n.length]}return i.domain=function(n){if(!arguments.length)return e.slice();e=[],t=new ci;for(const r of n)t.has(r)||t.set(r,e.push(r)-1);return i},i.range=function(t){return arguments.length?(n=Array.from(t),i):n.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return gi(e,n).unknown(r)},Ur.apply(i,arguments),i}const yi=1e3,bi=6e4,xi=60*bi,vi=24*xi,_i=7*vi,ki=30*vi,Ti=365*vi,wi=new Date,Si=new Date;function Ei(t,e,n,r){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=e=>(t(e=new Date(+e)),e),i.ceil=n=>(t(n=new Date(n-1)),e(n,1),t(n),n),i.round=t=>{const e=i(t),n=i.ceil(t);return t-e<n-t?e:n},i.offset=(t,n)=>(e(t=new Date(+t),null==n?1:Math.floor(n)),t),i.range=(n,r,a)=>{const s=[];if(n=i.ceil(n),a=null==a?1:Math.floor(a),!(n<r&&a>0))return s;let o;do{s.push(o=new Date(+n)),e(n,a),t(n)}while(o<n&&n<r);return s},i.filter=n=>Ei((e=>{if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)}),((t,r)=>{if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););})),n&&(i.count=(e,r)=>(wi.setTime(+e),Si.setTime(+r),t(wi),t(Si),Math.floor(n(wi,Si))),i.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?e=>r(e)%t==0:e=>i.count(0,e)%t==0):i:null)),i}const Ci=Ei((()=>{}),((t,e)=>{t.setTime(+t+e)}),((t,e)=>e-t));Ci.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?Ei((e=>{e.setTime(Math.floor(e/t)*t)}),((e,n)=>{e.setTime(+e+n*t)}),((e,n)=>(n-e)/t)):Ci:null);Ci.range;const Di=Ei((t=>{t.setTime(t-t.getMilliseconds())}),((t,e)=>{t.setTime(+t+e*yi)}),((t,e)=>(e-t)/yi),(t=>t.getUTCSeconds())),Ai=(Di.range,Ei((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*yi)}),((t,e)=>{t.setTime(+t+e*bi)}),((t,e)=>(e-t)/bi),(t=>t.getMinutes()))),Oi=(Ai.range,Ei((t=>{t.setUTCSeconds(0,0)}),((t,e)=>{t.setTime(+t+e*bi)}),((t,e)=>(e-t)/bi),(t=>t.getUTCMinutes()))),Ii=(Oi.range,Ei((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*yi-t.getMinutes()*bi)}),((t,e)=>{t.setTime(+t+e*xi)}),((t,e)=>(e-t)/xi),(t=>t.getHours()))),Li=(Ii.range,Ei((t=>{t.setUTCMinutes(0,0,0)}),((t,e)=>{t.setTime(+t+e*xi)}),((t,e)=>(e-t)/xi),(t=>t.getUTCHours()))),Ni=(Li.range,Ei((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*bi)/vi),(t=>t.getDate()-1))),Mi=(Ni.range,Ei((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/vi),(t=>t.getUTCDate()-1))),Fi=(Mi.range,Ei((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/vi),(t=>Math.floor(t/vi))));Fi.range;function Bi(t){return Ei((e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),((t,e)=>{t.setDate(t.getDate()+7*e)}),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*bi)/_i))}const Ri=Bi(0),$i=Bi(1),Zi=Bi(2),ji=Bi(3),Pi=Bi(4),zi=Bi(5),Yi=Bi(6);Ri.range,$i.range,Zi.range,ji.range,Pi.range,zi.range,Yi.range;function Ui(t){return Ei((e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)}),((t,e)=>(e-t)/_i))}const Wi=Ui(0),Hi=Ui(1),qi=Ui(2),Vi=Ui(3),Gi=Ui(4),Xi=Ui(5),Ki=Ui(6),Qi=(Wi.range,Hi.range,qi.range,Vi.range,Gi.range,Xi.range,Ki.range,Ei((t=>{t.setDate(1),t.setHours(0,0,0,0)}),((t,e)=>{t.setMonth(t.getMonth()+e)}),((t,e)=>e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())),(t=>t.getMonth()))),Ji=(Qi.range,Ei((t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)}),((t,e)=>e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())),(t=>t.getUTCMonth()))),ta=(Ji.range,Ei((t=>{t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,e)=>{t.setFullYear(t.getFullYear()+e)}),((t,e)=>e.getFullYear()-t.getFullYear()),(t=>t.getFullYear())));ta.every=t=>isFinite(t=Math.floor(t))&&t>0?Ei((e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),((e,n)=>{e.setFullYear(e.getFullYear()+n*t)})):null;ta.range;const ea=Ei((t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)}),((t,e)=>e.getUTCFullYear()-t.getUTCFullYear()),(t=>t.getUTCFullYear()));ea.every=t=>isFinite(t=Math.floor(t))&&t>0?Ei((e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),((e,n)=>{e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null;ea.range;function na(t,e,n,r,i,a){const s=[[Di,1,yi],[Di,5,5e3],[Di,15,15e3],[Di,30,3e4],[a,1,bi],[a,5,5*bi],[a,15,15*bi],[a,30,30*bi],[i,1,xi],[i,3,3*xi],[i,6,6*xi],[i,12,12*xi],[r,1,vi],[r,2,2*vi],[n,1,_i],[e,1,ki],[e,3,3*ki],[t,1,Ti]];function o(e,n,r){const i=Math.abs(n-e)/r,a=wr((([,,t])=>t)).right(s,i);if(a===s.length)return t.every(_r(e/Ti,n/Ti,r));if(0===a)return Ci.every(Math.max(_r(e,n,r),1));const[o,l]=s[i/s[a-1][2]<s[a][2]/i?a-1:a];return o.every(l)}return[function(t,e,n){const r=e<t;r&&([t,e]=[e,t]);const i=n&&"function"==typeof n.range?n:o(t,e,n),a=i?i.range(t,+e+1):[];return r?a.reverse():a},o]}const[ra,ia]=na(ea,Ji,Wi,Fi,Li,Oi),[aa,sa]=na(ta,Qi,Ri,Ni,Ii,Ai);function oa(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function la(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function ca(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}var ua,ha,da={"-":"",_:" ",0:"0"},pa=/^\s*\d+/,fa=/^%/,ma=/[\\^$*+?|[\]().{}]/g;function ga(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",a=i.length;return r+(a<n?new Array(n-a+1).join(e)+i:i)}function ya(t){return t.replace(ma,"\\$&")}function ba(t){return new RegExp("^(?:"+t.map(ya).join("|")+")","i")}function xa(t){return new Map(t.map(((t,e)=>[t.toLowerCase(),e])))}function va(t,e,n){var r=pa.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function _a(t,e,n){var r=pa.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function ka(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Ta(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function wa(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Sa(t,e,n){var r=pa.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Ea(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Ca(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Da(t,e,n){var r=pa.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,n+r[0].length):-1}function Aa(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Oa(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Ia(t,e,n){var r=pa.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function La(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Na(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Ma(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Fa(t,e,n){var r=pa.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Ba(t,e,n){var r=pa.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Ra(t,e,n){var r=fa.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function $a(t,e,n){var r=pa.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Za(t,e,n){var r=pa.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function ja(t,e){return ga(t.getDate(),e,2)}function Pa(t,e){return ga(t.getHours(),e,2)}function za(t,e){return ga(t.getHours()%12||12,e,2)}function Ya(t,e){return ga(1+Ni.count(ta(t),t),e,3)}function Ua(t,e){return ga(t.getMilliseconds(),e,3)}function Wa(t,e){return Ua(t,e)+"000"}function Ha(t,e){return ga(t.getMonth()+1,e,2)}function qa(t,e){return ga(t.getMinutes(),e,2)}function Va(t,e){return ga(t.getSeconds(),e,2)}function Ga(t){var e=t.getDay();return 0===e?7:e}function Xa(t,e){return ga(Ri.count(ta(t)-1,t),e,2)}function Ka(t){var e=t.getDay();return e>=4||0===e?Pi(t):Pi.ceil(t)}function Qa(t,e){return t=Ka(t),ga(Pi.count(ta(t),t)+(4===ta(t).getDay()),e,2)}function Ja(t){return t.getDay()}function ts(t,e){return ga($i.count(ta(t)-1,t),e,2)}function es(t,e){return ga(t.getFullYear()%100,e,2)}function ns(t,e){return ga((t=Ka(t)).getFullYear()%100,e,2)}function rs(t,e){return ga(t.getFullYear()%1e4,e,4)}function is(t,e){var n=t.getDay();return ga((t=n>=4||0===n?Pi(t):Pi.ceil(t)).getFullYear()%1e4,e,4)}function as(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+ga(e/60|0,"0",2)+ga(e%60,"0",2)}function ss(t,e){return ga(t.getUTCDate(),e,2)}function os(t,e){return ga(t.getUTCHours(),e,2)}function ls(t,e){return ga(t.getUTCHours()%12||12,e,2)}function cs(t,e){return ga(1+Mi.count(ea(t),t),e,3)}function us(t,e){return ga(t.getUTCMilliseconds(),e,3)}function hs(t,e){return us(t,e)+"000"}function ds(t,e){return ga(t.getUTCMonth()+1,e,2)}function ps(t,e){return ga(t.getUTCMinutes(),e,2)}function fs(t,e){return ga(t.getUTCSeconds(),e,2)}function ms(t){var e=t.getUTCDay();return 0===e?7:e}function gs(t,e){return ga(Wi.count(ea(t)-1,t),e,2)}function ys(t){var e=t.getUTCDay();return e>=4||0===e?Gi(t):Gi.ceil(t)}function bs(t,e){return t=ys(t),ga(Gi.count(ea(t),t)+(4===ea(t).getUTCDay()),e,2)}function xs(t){return t.getUTCDay()}function vs(t,e){return ga(Hi.count(ea(t)-1,t),e,2)}function _s(t,e){return ga(t.getUTCFullYear()%100,e,2)}function ks(t,e){return ga((t=ys(t)).getUTCFullYear()%100,e,2)}function Ts(t,e){return ga(t.getUTCFullYear()%1e4,e,4)}function ws(t,e){var n=t.getUTCDay();return ga((t=n>=4||0===n?Gi(t):Gi.ceil(t)).getUTCFullYear()%1e4,e,4)}function Ss(){return"+0000"}function Es(){return"%"}function Cs(t){return+t}function Ds(t){return Math.floor(+t/1e3)}function As(t){return new Date(t)}function Os(t){return t instanceof Date?+t:+new Date(+t)}function Is(t,e,n,r,i,a,s,o,l,c){var u=Yr(),h=u.invert,d=u.domain,p=c(".%L"),f=c(":%S"),m=c("%I:%M"),g=c("%I %p"),y=c("%a %d"),b=c("%b %d"),x=c("%B"),v=c("%Y");function _(t){return(l(t)<t?p:o(t)<t?f:s(t)<t?m:a(t)<t?g:r(t)<t?i(t)<t?y:b:n(t)<t?x:v)(t)}return u.invert=function(t){return new Date(h(t))},u.domain=function(t){return arguments.length?d(Array.from(t,Os)):d().map(As)},u.ticks=function(e){var n=d();return t(n[0],n[n.length-1],null==e?10:e)},u.tickFormat=function(t,e){return null==e?_:c(e)},u.nice=function(t){var n=d();return t&&"function"==typeof t.range||(t=e(n[0],n[n.length-1],null==t?10:t)),t?d(function(t,e){var n,r=0,i=(t=t.slice()).length-1,a=t[r],s=t[i];return s<a&&(n=r,r=i,i=n,n=a,a=s,s=n),t[r]=e.floor(a),t[i]=e.ceil(s),t}(n,t)):u},u.copy=function(){return Pr(u,Is(t,e,n,r,i,a,s,o,l,c))},u}function Ls(){return Ur.apply(Is(aa,sa,ta,Qi,Ri,Ni,Ii,Ai,Di,ha).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Ns(t){return"string"==typeof t?new At([[document.querySelector(t)]],[document.documentElement]):new At([[t]],Dt)}function Ms(t){return"string"==typeof t?new At([document.querySelectorAll(t)],[document.documentElement]):new At([_(t)],Dt)}function Fs(t){return function(){return t}}!function(t){ua=function(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,a=t.days,s=t.shortDays,o=t.months,l=t.shortMonths,c=ba(i),u=xa(i),h=ba(a),d=xa(a),p=ba(s),f=xa(s),m=ba(o),g=xa(o),y=ba(l),b=xa(l),x={a:function(t){return s[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return l[t.getMonth()]},B:function(t){return o[t.getMonth()]},c:null,d:ja,e:ja,f:Wa,g:ns,G:is,H:Pa,I:za,j:Ya,L:Ua,m:Ha,M:qa,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Cs,s:Ds,S:Va,u:Ga,U:Xa,V:Qa,w:Ja,W:ts,x:null,X:null,y:es,Y:rs,Z:as,"%":Es},v={a:function(t){return s[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return o[t.getUTCMonth()]},c:null,d:ss,e:ss,f:hs,g:ks,G:ws,H:os,I:ls,j:cs,L:us,m:ds,M:ps,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Cs,s:Ds,S:fs,u:ms,U:gs,V:bs,w:xs,W:vs,x:null,X:null,y:_s,Y:Ts,Z:Ss,"%":Es},_={a:function(t,e,n){var r=p.exec(e.slice(n));return r?(t.w=f.get(r[0].toLowerCase()),n+r[0].length):-1},A:function(t,e,n){var r=h.exec(e.slice(n));return r?(t.w=d.get(r[0].toLowerCase()),n+r[0].length):-1},b:function(t,e,n){var r=y.exec(e.slice(n));return r?(t.m=b.get(r[0].toLowerCase()),n+r[0].length):-1},B:function(t,e,n){var r=m.exec(e.slice(n));return r?(t.m=g.get(r[0].toLowerCase()),n+r[0].length):-1},c:function(t,n,r){return w(t,e,n,r)},d:Oa,e:Oa,f:Ba,g:Ea,G:Sa,H:La,I:La,j:Ia,L:Fa,m:Aa,M:Na,p:function(t,e,n){var r=c.exec(e.slice(n));return r?(t.p=u.get(r[0].toLowerCase()),n+r[0].length):-1},q:Da,Q:$a,s:Za,S:Ma,u:_a,U:ka,V:Ta,w:va,W:wa,x:function(t,e,r){return w(t,n,e,r)},X:function(t,e,n){return w(t,r,e,n)},y:Ea,Y:Sa,Z:Ca,"%":Ra};function k(t,e){return function(n){var r,i,a,s=[],o=-1,l=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++o<c;)37===t.charCodeAt(o)&&(s.push(t.slice(l,o)),null!=(i=da[r=t.charAt(++o)])?r=t.charAt(++o):i="e"===r?" ":"0",(a=e[r])&&(r=a(n,i)),s.push(r),l=o+1);return s.push(t.slice(l,o)),s.join("")}}function T(t,e){return function(n){var r,i,a=ca(1900,void 0,1);if(w(a,t,n+="",0)!=n.length)return null;if("Q"in a)return new Date(a.Q);if("s"in a)return new Date(1e3*a.s+("L"in a?a.L:0));if(e&&!("Z"in a)&&(a.Z=0),"p"in a&&(a.H=a.H%12+12*a.p),void 0===a.m&&(a.m="q"in a?a.q:0),"V"in a){if(a.V<1||a.V>53)return null;"w"in a||(a.w=1),"Z"in a?(i=(r=la(ca(a.y,0,1))).getUTCDay(),r=i>4||0===i?Hi.ceil(r):Hi(r),r=Mi.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(i=(r=oa(ca(a.y,0,1))).getDay(),r=i>4||0===i?$i.ceil(r):$i(r),r=Ni.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?la(ca(a.y,0,1)).getUTCDay():oa(ca(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,la(a)):oa(a)}}function w(t,e,n,r){for(var i,a,s=0,o=e.length,l=n.length;s<o;){if(r>=l)return-1;if(37===(i=e.charCodeAt(s++))){if(i=e.charAt(s++),!(a=_[i in da?e.charAt(s++):i])||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return x.x=k(n,x),x.X=k(r,x),x.c=k(e,x),v.x=k(n,v),v.X=k(r,v),v.c=k(e,v),{format:function(t){var e=k(t+="",x);return e.toString=function(){return t},e},parse:function(t){var e=T(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=k(t+="",v);return e.toString=function(){return t},e},utcParse:function(t){var e=T(t+="",!0);return e.toString=function(){return t},e}}}(t),ha=ua.format,ua.parse,ua.utcFormat,ua.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});const Bs=Math.abs,Rs=Math.atan2,$s=Math.cos,Zs=Math.max,js=Math.min,Ps=Math.sin,zs=Math.sqrt,Ys=1e-12,Us=Math.PI,Ws=Us/2,Hs=2*Us;function qs(t){return t>=1?Ws:t<=-1?-Ws:Math.asin(t)}const Vs=Math.PI,Gs=2*Vs,Xs=1e-6,Ks=Gs-Xs;function Qs(t){this._+=t[0];for(let e=1,n=t.length;e<n;++e)this._+=arguments[e]+t[e]}class Js{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=null==t?Qs:function(t){let e=Math.floor(t);if(!(e>=0))throw new Error(`invalid digits: ${t}`);if(e>15)return Qs;const n=10**e;return function(t){this._+=t[0];for(let e=1,r=t.length;e<r;++e)this._+=Math.round(arguments[e]*n)/n+t[e]}}(t)}moveTo(t,e){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,e){this._append`L${this._x1=+t},${this._y1=+e}`}quadraticCurveTo(t,e,n,r){this._append`Q${+t},${+e},${this._x1=+n},${this._y1=+r}`}bezierCurveTo(t,e,n,r,i,a){this._append`C${+t},${+e},${+n},${+r},${this._x1=+i},${this._y1=+a}`}arcTo(t,e,n,r,i){if(t=+t,e=+e,n=+n,r=+r,(i=+i)<0)throw new Error(`negative radius: ${i}`);let a=this._x1,s=this._y1,o=n-t,l=r-e,c=a-t,u=s-e,h=c*c+u*u;if(null===this._x1)this._append`M${this._x1=t},${this._y1=e}`;else if(h>Xs)if(Math.abs(u*o-l*c)>Xs&&i){let d=n-a,p=r-s,f=o*o+l*l,m=d*d+p*p,g=Math.sqrt(f),y=Math.sqrt(h),b=i*Math.tan((Vs-Math.acos((f+h-m)/(2*g*y)))/2),x=b/y,v=b/g;Math.abs(x-1)>Xs&&this._append`L${t+x*c},${e+x*u}`,this._append`A${i},${i},0,0,${+(u*d>c*p)},${this._x1=t+v*o},${this._y1=e+v*l}`}else this._append`L${this._x1=t},${this._y1=e}`;else;}arc(t,e,n,r,i,a){if(t=+t,e=+e,a=!!a,(n=+n)<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(r),o=n*Math.sin(r),l=t+s,c=e+o,u=1^a,h=a?r-i:i-r;null===this._x1?this._append`M${l},${c}`:(Math.abs(this._x1-l)>Xs||Math.abs(this._y1-c)>Xs)&&this._append`L${l},${c}`,n&&(h<0&&(h=h%Gs+Gs),h>Ks?this._append`A${n},${n},0,1,${u},${t-s},${e-o}A${n},${n},0,1,${u},${this._x1=l},${this._y1=c}`:h>Xs&&this._append`A${n},${n},0,${+(h>=Vs)},${u},${this._x1=t+n*Math.cos(i)},${this._y1=e+n*Math.sin(i)}`)}rect(t,e,n,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${n=+n}v${+r}h${-n}Z`}toString(){return this._}}function to(t){let e=3;return t.digits=function(n){if(!arguments.length)return e;if(null==n)e=null;else{const t=Math.floor(n);if(!(t>=0))throw new RangeError(`invalid digits: ${n}`);e=t}return t},()=>new Js(e)}function eo(t){return t.innerRadius}function no(t){return t.outerRadius}function ro(t){return t.startAngle}function io(t){return t.endAngle}function ao(t){return t&&t.padAngle}function so(t,e,n,r,i,a,s){var o=t-n,l=e-r,c=(s?a:-a)/zs(o*o+l*l),u=c*l,h=-c*o,d=t+u,p=e+h,f=n+u,m=r+h,g=(d+f)/2,y=(p+m)/2,b=f-d,x=m-p,v=b*b+x*x,_=i-a,k=d*m-f*p,T=(x<0?-1:1)*zs(Zs(0,_*_*v-k*k)),w=(k*x-b*T)/v,S=(-k*b-x*T)/v,E=(k*x+b*T)/v,C=(-k*b+x*T)/v,D=w-g,A=S-y,O=E-g,I=C-y;return D*D+A*A>O*O+I*I&&(w=E,S=C),{cx:w,cy:S,x01:-u,y01:-h,x11:w*(i/_-1),y11:S*(i/_-1)}}function oo(){var t=eo,e=no,n=Fs(0),r=null,i=ro,a=io,s=ao,o=null,l=to(c);function c(){var c,u,h,d=+t.apply(this,arguments),p=+e.apply(this,arguments),f=i.apply(this,arguments)-Ws,m=a.apply(this,arguments)-Ws,g=Bs(m-f),y=m>f;if(o||(o=c=l()),p<d&&(u=p,p=d,d=u),p>Ys)if(g>Hs-Ys)o.moveTo(p*$s(f),p*Ps(f)),o.arc(0,0,p,f,m,!y),d>Ys&&(o.moveTo(d*$s(m),d*Ps(m)),o.arc(0,0,d,m,f,y));else{var b,x,v=f,_=m,k=f,T=m,w=g,S=g,E=s.apply(this,arguments)/2,C=E>Ys&&(r?+r.apply(this,arguments):zs(d*d+p*p)),D=js(Bs(p-d)/2,+n.apply(this,arguments)),A=D,O=D;if(C>Ys){var I=qs(C/d*Ps(E)),L=qs(C/p*Ps(E));(w-=2*I)>Ys?(k+=I*=y?1:-1,T-=I):(w=0,k=T=(f+m)/2),(S-=2*L)>Ys?(v+=L*=y?1:-1,_-=L):(S=0,v=_=(f+m)/2)}var N=p*$s(v),M=p*Ps(v),F=d*$s(T),B=d*Ps(T);if(D>Ys){var R,$=p*$s(_),Z=p*Ps(_),j=d*$s(k),P=d*Ps(k);if(g<Us)if(R=function(t,e,n,r,i,a,s,o){var l=n-t,c=r-e,u=s-i,h=o-a,d=h*l-u*c;if(!(d*d<Ys))return[t+(d=(u*(e-a)-h*(t-i))/d)*l,e+d*c]}(N,M,j,P,$,Z,F,B)){var z=N-R[0],Y=M-R[1],U=$-R[0],W=Z-R[1],H=1/Ps(((h=(z*U+Y*W)/(zs(z*z+Y*Y)*zs(U*U+W*W)))>1?0:h<-1?Us:Math.acos(h))/2),q=zs(R[0]*R[0]+R[1]*R[1]);A=js(D,(d-q)/(H-1)),O=js(D,(p-q)/(H+1))}else A=O=0}S>Ys?O>Ys?(b=so(j,P,N,M,p,O,y),x=so($,Z,F,B,p,O,y),o.moveTo(b.cx+b.x01,b.cy+b.y01),O<D?o.arc(b.cx,b.cy,O,Rs(b.y01,b.x01),Rs(x.y01,x.x01),!y):(o.arc(b.cx,b.cy,O,Rs(b.y01,b.x01),Rs(b.y11,b.x11),!y),o.arc(0,0,p,Rs(b.cy+b.y11,b.cx+b.x11),Rs(x.cy+x.y11,x.cx+x.x11),!y),o.arc(x.cx,x.cy,O,Rs(x.y11,x.x11),Rs(x.y01,x.x01),!y))):(o.moveTo(N,M),o.arc(0,0,p,v,_,!y)):o.moveTo(N,M),d>Ys&&w>Ys?A>Ys?(b=so(F,B,$,Z,d,-A,y),x=so(N,M,j,P,d,-A,y),o.lineTo(b.cx+b.x01,b.cy+b.y01),A<D?o.arc(b.cx,b.cy,A,Rs(b.y01,b.x01),Rs(x.y01,x.x01),!y):(o.arc(b.cx,b.cy,A,Rs(b.y01,b.x01),Rs(b.y11,b.x11),!y),o.arc(0,0,d,Rs(b.cy+b.y11,b.cx+b.x11),Rs(x.cy+x.y11,x.cx+x.x11),y),o.arc(x.cx,x.cy,A,Rs(x.y11,x.x11),Rs(x.y01,x.x01),!y))):o.arc(0,0,d,T,k,y):o.lineTo(F,B)}else o.moveTo(0,0);if(o.closePath(),c)return o=null,c+""||null}return c.centroid=function(){var n=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +a.apply(this,arguments))/2-Us/2;return[$s(r)*n,Ps(r)*n]},c.innerRadius=function(e){return arguments.length?(t="function"==typeof e?e:Fs(+e),c):t},c.outerRadius=function(t){return arguments.length?(e="function"==typeof t?t:Fs(+t),c):e},c.cornerRadius=function(t){return arguments.length?(n="function"==typeof t?t:Fs(+t),c):n},c.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:Fs(+t),c):r},c.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:Fs(+t),c):i},c.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:Fs(+t),c):a},c.padAngle=function(t){return arguments.length?(s="function"==typeof t?t:Fs(+t),c):s},c.context=function(t){return arguments.length?(o=null==t?null:t,c):o},c}Js.prototype;Array.prototype.slice;function lo(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function co(t){this._context=t}function uo(t){return new co(t)}function ho(t){return t[0]}function po(t){return t[1]}function fo(t,e){var n=Fs(!0),r=null,i=uo,a=null,s=to(o);function o(o){var l,c,u,h=(o=lo(o)).length,d=!1;for(null==r&&(a=i(u=s())),l=0;l<=h;++l)!(l<h&&n(c=o[l],l,o))===d&&((d=!d)?a.lineStart():a.lineEnd()),d&&a.point(+t(c,l,o),+e(c,l,o));if(u)return a=null,u+""||null}return t="function"==typeof t?t:void 0===t?ho:Fs(t),e="function"==typeof e?e:void 0===e?po:Fs(e),o.x=function(e){return arguments.length?(t="function"==typeof e?e:Fs(+e),o):t},o.y=function(t){return arguments.length?(e="function"==typeof t?t:Fs(+t),o):e},o.defined=function(t){return arguments.length?(n="function"==typeof t?t:Fs(!!t),o):n},o.curve=function(t){return arguments.length?(i=t,null!=r&&(a=i(r)),o):i},o.context=function(t){return arguments.length?(null==t?r=a=null:a=i(r=t),o):r},o}function mo(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}function go(t){return t}function yo(){var t=go,e=mo,n=null,r=Fs(0),i=Fs(Hs),a=Fs(0);function s(s){var o,l,c,u,h,d=(s=lo(s)).length,p=0,f=new Array(d),m=new Array(d),g=+r.apply(this,arguments),y=Math.min(Hs,Math.max(-Hs,i.apply(this,arguments)-g)),b=Math.min(Math.abs(y)/d,a.apply(this,arguments)),x=b*(y<0?-1:1);for(o=0;o<d;++o)(h=m[f[o]=o]=+t(s[o],o,s))>0&&(p+=h);for(null!=e?f.sort((function(t,n){return e(m[t],m[n])})):null!=n&&f.sort((function(t,e){return n(s[t],s[e])})),o=0,c=p?(y-d*x)/p:0;o<d;++o,g=u)l=f[o],u=g+((h=m[l])>0?h*c:0)+x,m[l]={data:s[l],index:o,value:h,startAngle:g,endAngle:u,padAngle:b};return m}return s.value=function(e){return arguments.length?(t="function"==typeof e?e:Fs(+e),s):t},s.sortValues=function(t){return arguments.length?(e=t,n=null,s):e},s.sort=function(t){return arguments.length?(n=t,e=null,s):n},s.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:Fs(+t),s):r},s.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:Fs(+t),s):i},s.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:Fs(+t),s):a},s}function bo(){}function xo(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function vo(t){this._context=t}function _o(t){return new vo(t)}function ko(t){this._context=t}function To(t){return new ko(t)}function wo(t){this._context=t}function So(t){return new wo(t)}co.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}},vo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:xo(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:xo(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ko.prototype={areaStart:bo,areaEnd:bo,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:xo(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},wo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:xo(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};class Eo{constructor(t,e){this._context=t,this._x=e}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,e,t,e):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+e)/2,t,this._y0,t,e)}this._x0=t,this._y0=e}}function Co(t){return new Eo(t,!0)}function Do(t){return new Eo(t,!1)}function Ao(t,e){this._basis=new vo(t),this._beta=e}Ao.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var r,i=t[0],a=e[0],s=t[n]-i,o=e[n]-a,l=-1;++l<=n;)r=l/n,this._basis.point(this._beta*t[l]+(1-this._beta)*(i+r*s),this._beta*e[l]+(1-this._beta)*(a+r*o));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};const Oo=function t(e){function n(t){return 1===e?new vo(t):new Ao(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function Io(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function Lo(t,e){this._context=t,this._k=(1-e)/6}Lo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Io(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Io(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const No=function t(e){function n(t){return new Lo(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Mo(t,e){this._context=t,this._k=(1-e)/6}Mo.prototype={areaStart:bo,areaEnd:bo,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Io(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Fo=function t(e){function n(t){return new Mo(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Bo(t,e){this._context=t,this._k=(1-e)/6}Bo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Io(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Ro=function t(e){function n(t){return new Bo(t,e)}return n.tension=function(e){return t(+e)},n}(0);function $o(t,e,n){var r=t._x1,i=t._y1,a=t._x2,s=t._y2;if(t._l01_a>Ys){var o=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*o-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,i=(i*o-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>Ys){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,u=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/u,s=(s*c+t._y1*t._l23_2a-n*t._l12_2a)/u}t._context.bezierCurveTo(r,i,a,s,t._x2,t._y2)}function Zo(t,e){this._context=t,this._alpha=e}Zo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:$o(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const jo=function t(e){function n(t){return e?new Zo(t,e):new Lo(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Po(t,e){this._context=t,this._alpha=e}Po.prototype={areaStart:bo,areaEnd:bo,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:$o(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const zo=function t(e){function n(t){return e?new Po(t,e):new Mo(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Yo(t,e){this._context=t,this._alpha=e}Yo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:$o(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Uo=function t(e){function n(t){return e?new Yo(t,e):new Bo(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Wo(t){this._context=t}function Ho(t){return new Wo(t)}function qo(t){return t<0?-1:1}function Vo(t,e,n){var r=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(r||i<0&&-0),s=(n-t._y1)/(i||r<0&&-0),o=(a*i+s*r)/(r+i);return(qo(a)+qo(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(o))||0}function Go(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function Xo(t,e,n){var r=t._x0,i=t._y0,a=t._x1,s=t._y1,o=(a-r)/3;t._context.bezierCurveTo(r+o,i+o*e,a-o,s-o*n,a,s)}function Ko(t){this._context=t}function Qo(t){this._context=new Jo(t)}function Jo(t){this._context=t}function tl(t){return new Ko(t)}function el(t){return new Qo(t)}function nl(t){this._context=t}function rl(t){var e,n,r=t.length-1,i=new Array(r),a=new Array(r),s=new Array(r);for(i[0]=0,a[0]=2,s[0]=t[0]+2*t[1],e=1;e<r-1;++e)i[e]=1,a[e]=4,s[e]=4*t[e]+2*t[e+1];for(i[r-1]=2,a[r-1]=7,s[r-1]=8*t[r-1]+t[r],e=1;e<r;++e)n=i[e]/a[e-1],a[e]-=n,s[e]-=n*s[e-1];for(i[r-1]=s[r-1]/a[r-1],e=r-2;e>=0;--e)i[e]=(s[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e<r-1;++e)a[e]=2*t[e+1]-i[e+1];return[i,a]}function il(t){return new nl(t)}function al(t,e){this._context=t,this._t=e}function sl(t){return new al(t,.5)}function ol(t){return new al(t,0)}function ll(t){return new al(t,1)}function cl(t,e,n){this.k=t,this.x=e,this.y=n}Wo.prototype={areaStart:bo,areaEnd:bo,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}},Ko.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Xo(this,this._t0,Go(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(e=+e,(t=+t)!==this._x1||e!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,Xo(this,Go(this,n=Vo(this,t,e)),n);break;default:Xo(this,this._t0,n=Vo(this,t,e))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}},(Qo.prototype=Object.create(Ko.prototype)).point=function(t,e){Ko.prototype.point.call(this,e,t)},Jo.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,r,i,a){this._context.bezierCurveTo(e,t,r,n,a,i)}},nl.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,n=t.length;if(n)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),2===n)this._context.lineTo(t[1],e[1]);else for(var r=rl(t),i=rl(e),a=0,s=1;s<n;++a,++s)this._context.bezierCurveTo(r[0][a],i[0][a],r[1][a],i[1][a],t[s],e[s]);(this._line||0!==this._line&&1===n)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,e){this._x.push(+t),this._y.push(+e)}},al.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}},cl.prototype={constructor:cl,scale:function(t){return 1===t?this:new cl(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new cl(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};new cl(1,0,0);cl.prototype},3352:(t,e,n)=>{"use strict";function r(t,e,n,r){var a,s,o,l,c,u,h,d,p,f,m,g,y;if(a=e.y-t.y,o=t.x-e.x,c=e.x*t.y-t.x*e.y,p=a*n.x+o*n.y+c,f=a*r.x+o*r.y+c,!(0!==p&&0!==f&&i(p,f)||(s=r.y-n.y,l=n.x-r.x,u=r.x*n.y-n.x*r.y,h=s*t.x+l*t.y+u,d=s*e.x+l*e.y+u,0!==h&&0!==d&&i(h,d)||0==(m=a*l-s*o))))return g=Math.abs(m/2),{x:(y=o*u-l*c)<0?(y-g)/m:(y+g)/m,y:(y=s*c-a*u)<0?(y-g)/m:(y+g)/m}}function i(t,e){return t*e>0}function a(t,e,n){var i=t.x,a=t.y,s=[],o=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;e.forEach((function(t){o=Math.min(o,t.x),l=Math.min(l,t.y)}));for(var c=i-t.width/2-o,u=a-t.height/2-l,h=0;h<e.length;h++){var d=e[h],p=e[h<e.length-1?h+1:0],f=r(t,n,{x:c+d.x,y:u+d.y},{x:c+p.x,y:u+p.y});f&&s.push(f)}return s.length?(s.length>1&&s.sort((function(t,e){var r=t.x-n.x,i=t.y-n.y,a=Math.sqrt(r*r+i*i),s=e.x-n.x,o=e.y-n.y,l=Math.sqrt(s*s+o*o);return a<l?-1:a===l?0:1})),s[0]):(console.log("NO INTERSECTION FOUND, RETURN NODE CENTER",t),t)}n.d(e,{A:()=>a})},2930:(t,e,n)=>{"use strict";function r(t,e){var n,r,i=t.x,a=t.y,s=e.x-i,o=e.y-a,l=t.width/2,c=t.height/2;return Math.abs(o)*l>Math.abs(s)*c?(o<0&&(c=-c),n=0===o?0:c*s/o,r=c):(s<0&&(l=-l),n=l,r=0===s?0:l*o/s),{x:i+n,y:a+r}}n.d(e,{q:()=>r})},3349:(t,e,n)=>{"use strict";n.d(e,{a:()=>i});var r=n(6225);function i(t,e){var n=t.append("foreignObject").attr("width","100000"),i=n.append("xhtml:div");i.attr("xmlns","http://www.w3.org/1999/xhtml");var a=e.label;switch(typeof a){case"function":i.insert(a);break;case"object":i.insert((function(){return a}));break;default:i.html(a)}r.bg(i,e.labelStyle),i.style("display","inline-block"),i.style("white-space","nowrap");var s=i.node().getBoundingClientRect();return n.attr("width",s.width).attr("height",s.height),n}},6225:(t,e,n)=>{"use strict";n.d(e,{$p:()=>u,O1:()=>s,WR:()=>h,bF:()=>a,bg:()=>c});var r=n(7514),i=n(3234);function a(t,e){return!!t.children(e).length}function s(t){return l(t.v)+":"+l(t.w)+":"+l(t.name)}var o=/:/g;function l(t){return t?String(t).replace(o,"\\:"):""}function c(t,e){e&&t.attr("style",e)}function u(t,e,n){e&&t.attr("class",e).attr("class",n+" "+t.attr("class"))}function h(t,e){var n=e.graph();if(r.Z(n)){var a=n.transition;if(i.Z(a))return a(t)}return t}},277:(t,e,n)=>{"use strict";n.d(e,{bK:()=>Ge});var r=n(870),i=n(6749),a=n(7452),s=n(2002),o=n(7961),l=n(3836),c=n(4379),u=n(5625);class h{constructor(){var t={};t._next=t._prev=t,this._sentinel=t}dequeue(){var t=this._sentinel,e=t._prev;if(e!==t)return d(e),e}enqueue(t){var e=this._sentinel;t._prev&&t._next&&d(t),t._next=e._next,e._next._prev=t,e._next=t,t._prev=e}toString(){for(var t=[],e=this._sentinel,n=e._prev;n!==e;)t.push(JSON.stringify(n,p)),n=n._prev;return"["+t.join(", ")+"]"}}function d(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function p(t,e){if("_next"!==t&&"_prev"!==t)return e}var f=s.Z(1);function m(t,e){if(t.nodeCount()<=1)return[];var n=function(t,e){var n=new u.k,i=0,a=0;r.Z(t.nodes(),(function(t){n.setNode(t,{v:t,in:0,out:0})})),r.Z(t.edges(),(function(t){var r=n.edge(t.v,t.w)||0,s=e(t),o=r+s;n.setEdge(t.v,t.w,o),a=Math.max(a,n.node(t.v).out+=s),i=Math.max(i,n.node(t.w).in+=s)}));var s=c.Z(a+i+3).map((function(){return new h})),o=i+1;return r.Z(n.nodes(),(function(t){y(s,o,n.node(t))})),{graph:n,buckets:s,zeroIdx:o}}(t,e||f),i=function(t,e,n){var r,i=[],a=e[e.length-1],s=e[0];for(;t.nodeCount();){for(;r=s.dequeue();)g(t,e,n,r);for(;r=a.dequeue();)g(t,e,n,r);if(t.nodeCount())for(var o=e.length-2;o>0;--o)if(r=e[o].dequeue()){i=i.concat(g(t,e,n,r,!0));break}}return i}(n.graph,n.buckets,n.zeroIdx);return o.Z(l.Z(i,(function(e){return t.outEdges(e.v,e.w)})))}function g(t,e,n,i,a){var s=a?[]:void 0;return r.Z(t.inEdges(i.v),(function(r){var i=t.edge(r),o=t.node(r.v);a&&s.push({v:r.v,w:r.w}),o.out-=i,y(e,n,o)})),r.Z(t.outEdges(i.v),(function(r){var i=t.edge(r),a=r.w,s=t.node(a);s.in-=i,y(e,n,s)})),t.removeNode(i.v),s}function y(t,e,n){n.out?n.in?t[n.out-n.in+e].enqueue(n):t[t.length-1].enqueue(n):t[0].enqueue(n)}function b(t){var e="greedy"===t.graph().acyclicer?m(t,function(t){return function(e){return t.edge(e).weight}}(t)):function(t){var e=[],n={},i={};function s(o){a.Z(i,o)||(i[o]=!0,n[o]=!0,r.Z(t.outEdges(o),(function(t){a.Z(n,t.w)?e.push(t):s(t.w)})),delete n[o])}return r.Z(t.nodes(),s),e}(t);r.Z(e,(function(e){var n=t.edge(e);t.removeEdge(e),n.forwardName=e.name,n.reversed=!0,t.setEdge(e.w,e.v,n,i.Z("rev"))}))}var x=n(1667),v=n(4752),_=n(9651);const k=function(t,e,n){(void 0!==n&&!(0,_.Z)(t[e],n)||void 0===n&&!(e in t))&&(0,v.Z)(t,e,n)};var T=n(1395),w=n(1050),S=n(2701),E=n(7215),C=n(3658),D=n(9169),A=n(7771),O=n(836),I=n(7008),L=n(3234),N=n(7226),M=n(7514),F=n(8843);const B=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]};var R=n(1899),$=n(2957);const Z=function(t){return(0,R.Z)(t,(0,$.Z)(t))};const j=function(t,e,n,r,i,a,s){var o=B(t,n),l=B(e,n),c=s.get(l);if(c)k(t,n,c);else{var u=a?a(o,l,n+"",t,e,s):void 0,h=void 0===u;if(h){var d=(0,A.Z)(l),p=!d&&(0,I.Z)(l),f=!d&&!p&&(0,F.Z)(l);u=l,d||p||f?(0,A.Z)(o)?u=o:(0,O.Z)(o)?u=(0,E.Z)(o):p?(h=!1,u=(0,w.Z)(l,!0)):f?(h=!1,u=(0,S.Z)(l,!0)):u=[]:(0,M.Z)(l)||(0,D.Z)(l)?(u=o,(0,D.Z)(o)?u=Z(o):(0,N.Z)(o)&&!(0,L.Z)(o)||(u=(0,C.Z)(l))):h=!1}h&&(s.set(l,u),i(u,l,r,a,s),s.delete(l)),k(t,n,u)}};const P=function t(e,n,r,i,a){e!==n&&(0,T.Z)(n,(function(s,o){if(a||(a=new x.Z),(0,N.Z)(s))j(e,n,o,r,t,i,a);else{var l=i?i(B(e,o),s,o+"",e,n,a):void 0;void 0===l&&(l=s),k(e,o,l)}}),$.Z)};var z=n(9581),Y=n(439);const U=function(t){return(0,z.Z)((function(e,n){var r=-1,i=n.length,a=i>1?n[i-1]:void 0,s=i>2?n[2]:void 0;for(a=t.length>3&&"function"==typeof a?(i--,a):void 0,s&&(0,Y.Z)(n[0],n[1],s)&&(a=i<3?void 0:a,i=1),e=Object(e);++r<i;){var o=n[r];o&&t(e,o,r,a)}return e}))}((function(t,e,n){P(t,e,n)}));var W=n(1666),H=n(3688),q=n(2714);const V=function(t,e,n){for(var r=-1,i=t.length;++r<i;){var a=t[r],s=e(a);if(null!=s&&(void 0===o?s==s&&!(0,q.Z)(s):n(s,o)))var o=s,l=a}return l};const G=function(t,e){return t>e};var X=n(9203);const K=function(t){return t&&t.length?V(t,X.Z,G):void 0};const Q=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0};var J=n(2693),tt=n(4765);const et=function(t,e){var n={};return e=(0,tt.Z)(e,3),(0,J.Z)(t,(function(t,r,i){(0,v.Z)(n,r,e(t,r,i))})),n};var nt=n(9360);const rt=function(t,e){return t<e};const it=function(t){return t&&t.length?V(t,X.Z,rt):void 0};var at=n(6092);const st=function(){return at.Z.Date.now()};function ot(t,e,n,r){var a;do{a=i.Z(r)}while(t.hasNode(a));return n.dummy=e,t.setNode(a,n),a}function lt(t){var e=new u.k({multigraph:t.isMultigraph()}).setGraph(t.graph());return r.Z(t.nodes(),(function(n){t.children(n).length||e.setNode(n,t.node(n))})),r.Z(t.edges(),(function(n){e.setEdge(n,t.edge(n))})),e}function ct(t,e){var n,r,i=t.x,a=t.y,s=e.x-i,o=e.y-a,l=t.width/2,c=t.height/2;if(!s&&!o)throw new Error("Not possible to find intersection inside of the rectangle");return Math.abs(o)*l>Math.abs(s)*c?(o<0&&(c=-c),n=c*s/o,r=c):(s<0&&(l=-l),n=l,r=l*o/s),{x:i+n,y:a+r}}function ut(t){var e=l.Z(c.Z(dt(t)+1),(function(){return[]}));return r.Z(t.nodes(),(function(n){var r=t.node(n),i=r.rank;nt.Z(i)||(e[i][r.order]=n)})),e}function ht(t,e,n,r){var i={width:0,height:0};return arguments.length>=4&&(i.rank=n,i.order=r),ot(t,"border",i,e)}function dt(t){return K(l.Z(t.nodes(),(function(e){var n=t.node(e).rank;if(!nt.Z(n))return n})))}function pt(t,e){var n=st();try{return e()}finally{console.log(t+" time: "+(st()-n)+"ms")}}function ft(t,e){return e()}function mt(t,e,n,r,i,a){var s={width:0,height:0,rank:a,borderType:e},o=i[e][a-1],l=ot(t,"border",s,n);i[e][a]=l,t.setParent(l,r),o&&t.setEdge(o,l,{weight:1})}function gt(t){var e=t.graph().rankdir.toLowerCase();"bt"!==e&&"rl"!==e||function(t){r.Z(t.nodes(),(function(e){xt(t.node(e))})),r.Z(t.edges(),(function(e){var n=t.edge(e);r.Z(n.points,xt),a.Z(n,"y")&&xt(n)}))}(t),"lr"!==e&&"rl"!==e||(!function(t){r.Z(t.nodes(),(function(e){vt(t.node(e))})),r.Z(t.edges(),(function(e){var n=t.edge(e);r.Z(n.points,vt),a.Z(n,"x")&&vt(n)}))}(t),yt(t))}function yt(t){r.Z(t.nodes(),(function(e){bt(t.node(e))})),r.Z(t.edges(),(function(e){bt(t.edge(e))}))}function bt(t){var e=t.width;t.width=t.height,t.height=e}function xt(t){t.y=-t.y}function vt(t){var e=t.x;t.x=t.y,t.y=e}function _t(t){t.graph().dummyChains=[],r.Z(t.edges(),(function(e){!function(t,e){var n,r,i,a=e.v,s=t.node(a).rank,o=e.w,l=t.node(o).rank,c=e.name,u=t.edge(e),h=u.labelRank;if(l===s+1)return;for(t.removeEdge(e),i=0,++s;s<l;++i,++s)u.points=[],n=ot(t,"edge",r={width:0,height:0,edgeLabel:u,edgeObj:e,rank:s},"_d"),s===h&&(r.width=u.width,r.height=u.height,r.dummy="edge-label",r.labelpos=u.labelpos),t.setEdge(a,n,{weight:u.weight},c),0===i&&t.graph().dummyChains.push(n),a=n;t.setEdge(a,o,{weight:u.weight},c)}(t,e)}))}const kt=function(t,e){return t&&t.length?V(t,(0,tt.Z)(e,2),rt):void 0};function Tt(t){var e={};r.Z(t.sources(),(function n(r){var i=t.node(r);if(a.Z(e,r))return i.rank;e[r]=!0;var s=it(l.Z(t.outEdges(r),(function(e){return n(e.w)-t.edge(e).minlen})));return s!==Number.POSITIVE_INFINITY&&null!=s||(s=0),i.rank=s}))}function wt(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}function St(t){var e,n,r=new u.k({directed:!1}),i=t.nodes()[0],a=t.nodeCount();for(r.setNode(i,{});Et(r,t)<a;)e=Ct(r,t),n=r.hasNode(e.v)?wt(t,e):-wt(t,e),Dt(r,t,n);return r}function Et(t,e){return r.Z(t.nodes(),(function n(i){r.Z(e.nodeEdges(i),(function(r){var a=r.v,s=i===a?r.w:a;t.hasNode(s)||wt(e,r)||(t.setNode(s,{}),t.setEdge(i,s,{}),n(s))}))})),t.nodeCount()}function Ct(t,e){return kt(e.edges(),(function(n){if(t.hasNode(n.v)!==t.hasNode(n.w))return wt(e,n)}))}function Dt(t,e,n){r.Z(t.nodes(),(function(t){e.node(t).rank+=n}))}var At=n(585),Ot=n(7179);const It=function(t){return function(e,n,r){var i=Object(e);if(!(0,At.Z)(e)){var a=(0,tt.Z)(n,3);e=(0,Ot.Z)(e),n=function(t){return a(i[t],t,i)}}var s=t(e,n,r);return s>-1?i[a?e[s]:s]:void 0}};var Lt=n(1692),Nt=n(4099);const Mt=function(t){var e=(0,Nt.Z)(t),n=e%1;return e==e?n?e-n:e:0};var Ft=Math.max;const Bt=It((function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:Mt(n);return i<0&&(i=Ft(r+i,0)),(0,Lt.Z)(t,(0,tt.Z)(e,3),i)}));var Rt=n(3445);s.Z(1);s.Z(1);n(9473),n(3970),n(3589),n(8533);(0,n(4193).Z)("length");RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var $t="\\ud800-\\udfff",Zt="["+$t+"]",jt="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Pt="\\ud83c[\\udffb-\\udfff]",zt="[^"+$t+"]",Yt="(?:\\ud83c[\\udde6-\\uddff]){2}",Ut="[\\ud800-\\udbff][\\udc00-\\udfff]",Wt="(?:"+jt+"|"+Pt+")"+"?",Ht="[\\ufe0e\\ufe0f]?",qt=Ht+Wt+("(?:\\u200d(?:"+[zt,Yt,Ut].join("|")+")"+Ht+Wt+")*"),Vt="(?:"+[zt+jt+"?",jt,Yt,Ut,Zt].join("|")+")";RegExp(Pt+"(?="+Pt+")|"+Vt+qt,"g");function Gt(){}function Xt(t,e,n){A.Z(e)||(e=[e]);var i=(t.isDirected()?t.successors:t.neighbors).bind(t),a=[],s={};return r.Z(e,(function(e){if(!t.hasNode(e))throw new Error("Graph does not have node: "+e);Kt(t,e,"post"===n,s,i,a)})),a}function Kt(t,e,n,i,s,o){a.Z(i,e)||(i[e]=!0,n||o.push(e),r.Z(s(e),(function(e){Kt(t,e,n,i,s,o)})),n&&o.push(e))}Gt.prototype=new Error;n(2544);function Qt(t){t=function(t){var e=(new u.k).setGraph(t.graph());return r.Z(t.nodes(),(function(n){e.setNode(n,t.node(n))})),r.Z(t.edges(),(function(n){var r=e.edge(n.v,n.w)||{weight:0,minlen:1},i=t.edge(n);e.setEdge(n.v,n.w,{weight:r.weight+i.weight,minlen:Math.max(r.minlen,i.minlen)})})),e}(t),Tt(t);var e,n=St(t);for(ee(n),Jt(n,t);e=re(n);)ae(n,t,e,ie(n,t,e))}function Jt(t,e){var n=function(t,e){return Xt(t,e,"post")}(t,t.nodes());n=n.slice(0,n.length-1),r.Z(n,(function(n){!function(t,e,n){var r=t.node(n),i=r.parent;t.edge(n,i).cutvalue=te(t,e,n)}(t,e,n)}))}function te(t,e,n){var i=t.node(n).parent,a=!0,s=e.edge(n,i),o=0;return s||(a=!1,s=e.edge(i,n)),o=s.weight,r.Z(e.nodeEdges(n),(function(r){var s,l,c=r.v===n,u=c?r.w:r.v;if(u!==i){var h=c===a,d=e.edge(r).weight;if(o+=h?d:-d,s=n,l=u,t.hasEdge(s,l)){var p=t.edge(n,u).cutvalue;o+=h?-p:p}}})),o}function ee(t,e){arguments.length<2&&(e=t.nodes()[0]),ne(t,{},1,e)}function ne(t,e,n,i,s){var o=n,l=t.node(i);return e[i]=!0,r.Z(t.neighbors(i),(function(r){a.Z(e,r)||(n=ne(t,e,n,r,i))})),l.low=o,l.lim=n++,s?l.parent=s:delete l.parent,n}function re(t){return Bt(t.edges(),(function(e){return t.edge(e).cutvalue<0}))}function ie(t,e,n){var r=n.v,i=n.w;e.hasEdge(r,i)||(r=n.w,i=n.v);var a=t.node(r),s=t.node(i),o=a,l=!1;a.lim>s.lim&&(o=s,l=!0);var c=Rt.Z(e.edges(),(function(e){return l===se(t,t.node(e.v),o)&&l!==se(t,t.node(e.w),o)}));return kt(c,(function(t){return wt(e,t)}))}function ae(t,e,n,i){var a=n.v,s=n.w;t.removeEdge(a,s),t.setEdge(i.v,i.w,{}),ee(t),Jt(t,e),function(t,e){var n=Bt(t.nodes(),(function(t){return!e.node(t).parent})),i=function(t,e){return Xt(t,e,"pre")}(t,n);i=i.slice(1),r.Z(i,(function(n){var r=t.node(n).parent,i=e.edge(n,r),a=!1;i||(i=e.edge(r,n),a=!0),e.node(n).rank=e.node(r).rank+(a?i.minlen:-i.minlen)}))}(t,e)}function se(t,e,n){return n.low<=e.lim&&e.lim<=n.lim}function oe(t){switch(t.graph().ranker){case"network-simplex":default:ce(t);break;case"tight-tree":!function(t){Tt(t),St(t)}(t);break;case"longest-path":le(t)}}Qt.initLowLimValues=ee,Qt.initCutValues=Jt,Qt.calcCutValue=te,Qt.leaveEdge=re,Qt.enterEdge=ie,Qt.exchangeEdges=ae;var le=Tt;function ce(t){Qt(t)}var ue=n(4148),he=n(2344);function de(t){var e=ot(t,"root",{},"_root"),n=function(t){var e={};function n(i,a){var s=t.children(i);s&&s.length&&r.Z(s,(function(t){n(t,a+1)})),e[i]=a}return r.Z(t.children(),(function(t){n(t,1)})),e}(t),i=K(ue.Z(n))-1,a=2*i+1;t.graph().nestingRoot=e,r.Z(t.edges(),(function(e){t.edge(e).minlen*=a}));var s=function(t){return he.Z(t.edges(),(function(e,n){return e+t.edge(n).weight}),0)}(t)+1;r.Z(t.children(),(function(r){pe(t,e,a,s,i,n,r)})),t.graph().nodeRankFactor=a}function pe(t,e,n,i,a,s,o){var l=t.children(o);if(l.length){var c=ht(t,"_bt"),u=ht(t,"_bb"),h=t.node(o);t.setParent(c,o),h.borderTop=c,t.setParent(u,o),h.borderBottom=u,r.Z(l,(function(r){pe(t,e,n,i,a,s,r);var l=t.node(r),h=l.borderTop?l.borderTop:r,d=l.borderBottom?l.borderBottom:r,p=l.borderTop?i:2*i,f=h!==d?1:a-s[o]+1;t.setEdge(c,h,{weight:p,minlen:f,nestingEdge:!0}),t.setEdge(d,u,{weight:p,minlen:f,nestingEdge:!0})})),t.parent(o)||t.setEdge(e,c,{weight:0,minlen:a+s[o]})}else o!==e&&t.setEdge(e,o,{weight:0,minlen:n})}var fe=n(8451);const me=function(t){return(0,fe.Z)(t,5)};function ge(t,e,n){var s=function(t){var e;for(;t.hasNode(e=i.Z("_root")););return e}(t),o=new u.k({compound:!0}).setGraph({root:s}).setDefaultNodeLabel((function(e){return t.node(e)}));return r.Z(t.nodes(),(function(i){var l=t.node(i),c=t.parent(i);(l.rank===e||l.minRank<=e&&e<=l.maxRank)&&(o.setNode(i),o.setParent(i,c||s),r.Z(t[n](i),(function(e){var n=e.v===i?e.w:e.v,r=o.edge(n,i),a=nt.Z(r)?0:r.weight;o.setEdge(n,i,{weight:t.edge(e).weight+a})})),a.Z(l,"minRank")&&o.setNode(i,{borderLeft:l.borderLeft[e],borderRight:l.borderRight[e]}))})),o}var ye=n(2954);const be=function(t,e,n){for(var r=-1,i=t.length,a=e.length,s={};++r<i;){var o=r<a?e[r]:void 0;n(s,t[r],o)}return s};const xe=function(t,e){return be(t||[],e||[],ye.Z)};var ve=n(626),_e=n(4073),ke=n(3317),Te=n(1018);const we=function(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t};var Se=n(1162);const Ee=function(t,e){if(t!==e){var n=void 0!==t,r=null===t,i=t==t,a=(0,q.Z)(t),s=void 0!==e,o=null===e,l=e==e,c=(0,q.Z)(e);if(!o&&!c&&!a&&t>e||a&&s&&l&&!o&&!c||r&&s&&l||!n&&l||!i)return 1;if(!r&&!a&&!c&&t<e||c&&n&&i&&!r&&!a||o&&n&&i||!s&&i||!l)return-1}return 0};const Ce=function(t,e,n){for(var r=-1,i=t.criteria,a=e.criteria,s=i.length,o=n.length;++r<s;){var l=Ee(i[r],a[r]);if(l)return r>=o?l:l*("desc"==n[r]?-1:1)}return t.index-e.index};const De=function(t,e,n){e=e.length?(0,_e.Z)(e,(function(t){return(0,A.Z)(t)?function(e){return(0,ke.Z)(e,1===t.length?t[0]:t)}:t})):[X.Z];var r=-1;e=(0,_e.Z)(e,(0,Se.Z)(tt.Z));var i=(0,Te.Z)(t,(function(t,n,i){return{criteria:(0,_e.Z)(e,(function(e){return e(t)})),index:++r,value:t}}));return we(i,(function(t,e){return Ce(t,e,n)}))};const Ae=(0,z.Z)((function(t,e){if(null==t)return[];var n=e.length;return n>1&&(0,Y.Z)(t,e[0],e[1])?e=[]:n>2&&(0,Y.Z)(e[0],e[1],e[2])&&(e=[e[0]]),De(t,(0,ve.Z)(e,1),[])}));function Oe(t,e){for(var n=0,r=1;r<e.length;++r)n+=Ie(t,e[r-1],e[r]);return n}function Ie(t,e,n){for(var i=xe(n,l.Z(n,(function(t,e){return e}))),a=o.Z(l.Z(e,(function(e){return Ae(l.Z(t.outEdges(e),(function(e){return{pos:i[e.w],weight:t.edge(e).weight}})),"pos")}))),s=1;s<n.length;)s<<=1;var c=2*s-1;s-=1;var u=l.Z(new Array(c),(function(){return 0})),h=0;return r.Z(a.forEach((function(t){var e=t.pos+s;u[e]+=t.weight;for(var n=0;e>0;)e%2&&(n+=u[e+1]),u[e=e-1>>1]+=t.weight;h+=t.weight*n}))),h}function Le(t,e){var n={};return r.Z(t,(function(t,e){var r=n[t.v]={indegree:0,in:[],out:[],vs:[t.v],i:e};nt.Z(t.barycenter)||(r.barycenter=t.barycenter,r.weight=t.weight)})),r.Z(e.edges(),(function(t){var e=n[t.v],r=n[t.w];nt.Z(e)||nt.Z(r)||(r.indegree++,e.out.push(n[t.w]))})),function(t){var e=[];function n(t){return function(e){e.merged||(nt.Z(e.barycenter)||nt.Z(t.barycenter)||e.barycenter>=t.barycenter)&&function(t,e){var n=0,r=0;t.weight&&(n+=t.barycenter*t.weight,r+=t.weight);e.weight&&(n+=e.barycenter*e.weight,r+=e.weight);t.vs=e.vs.concat(t.vs),t.barycenter=n/r,t.weight=r,t.i=Math.min(e.i,t.i),e.merged=!0}(t,e)}}function i(e){return function(n){n.in.push(e),0==--n.indegree&&t.push(n)}}for(;t.length;){var a=t.pop();e.push(a),r.Z(a.in.reverse(),n(a)),r.Z(a.out,i(a))}return l.Z(Rt.Z(e,(function(t){return!t.merged})),(function(t){return W.Z(t,["vs","i","barycenter","weight"])}))}(Rt.Z(n,(function(t){return!t.indegree})))}function Ne(t,e){var n,i=function(t,e){var n={lhs:[],rhs:[]};return r.Z(t,(function(t){e(t)?n.lhs.push(t):n.rhs.push(t)})),n}(t,(function(t){return a.Z(t,"barycenter")})),s=i.lhs,l=Ae(i.rhs,(function(t){return-t.i})),c=[],u=0,h=0,d=0;s.sort((n=!!e,function(t,e){return t.barycenter<e.barycenter?-1:t.barycenter>e.barycenter?1:n?e.i-t.i:t.i-e.i})),d=Me(c,l,d),r.Z(s,(function(t){d+=t.vs.length,c.push(t.vs),u+=t.barycenter*t.weight,h+=t.weight,d=Me(c,l,d)}));var p={vs:o.Z(c)};return h&&(p.barycenter=u/h,p.weight=h),p}function Me(t,e,n){for(var r;e.length&&(r=Q(e)).i<=n;)e.pop(),t.push(r.vs),n++;return n}function Fe(t,e,n,i){var s=t.children(e),c=t.node(e),u=c?c.borderLeft:void 0,h=c?c.borderRight:void 0,d={};u&&(s=Rt.Z(s,(function(t){return t!==u&&t!==h})));var p=function(t,e){return l.Z(e,(function(e){var n=t.inEdges(e);if(n.length){var r=he.Z(n,(function(e,n){var r=t.edge(n),i=t.node(n.v);return{sum:e.sum+r.weight*i.order,weight:e.weight+r.weight}}),{sum:0,weight:0});return{v:e,barycenter:r.sum/r.weight,weight:r.weight}}return{v:e}}))}(t,s);r.Z(p,(function(e){if(t.children(e.v).length){var r=Fe(t,e.v,n,i);d[e.v]=r,a.Z(r,"barycenter")&&(s=e,o=r,nt.Z(s.barycenter)?(s.barycenter=o.barycenter,s.weight=o.weight):(s.barycenter=(s.barycenter*s.weight+o.barycenter*o.weight)/(s.weight+o.weight),s.weight+=o.weight))}var s,o}));var f=Le(p,n);!function(t,e){r.Z(t,(function(t){t.vs=o.Z(t.vs.map((function(t){return e[t]?e[t].vs:t})))}))}(f,d);var m=Ne(f,i);if(u&&(m.vs=o.Z([u,m.vs,h]),t.predecessors(u).length)){var g=t.node(t.predecessors(u)[0]),y=t.node(t.predecessors(h)[0]);a.Z(m,"barycenter")||(m.barycenter=0,m.weight=0),m.barycenter=(m.barycenter*m.weight+g.order+y.order)/(m.weight+2),m.weight+=2}return m}function Be(t){var e=dt(t),n=Re(t,c.Z(1,e+1),"inEdges"),i=Re(t,c.Z(e-1,-1,-1),"outEdges"),s=function(t){var e={},n=Rt.Z(t.nodes(),(function(e){return!t.children(e).length})),i=K(l.Z(n,(function(e){return t.node(e).rank}))),s=l.Z(c.Z(i+1),(function(){return[]})),o=Ae(n,(function(e){return t.node(e).rank}));return r.Z(o,(function n(i){if(!a.Z(e,i)){e[i]=!0;var o=t.node(i);s[o.rank].push(i),r.Z(t.successors(i),n)}})),s}(t);Ze(t,s);for(var o,u=Number.POSITIVE_INFINITY,h=0,d=0;d<4;++h,++d){$e(h%2?n:i,h%4>=2);var p=Oe(t,s=ut(t));p<u&&(d=0,o=me(s),u=p)}Ze(t,o)}function Re(t,e,n){return l.Z(e,(function(e){return ge(t,e,n)}))}function $e(t,e){var n=new u.k;r.Z(t,(function(t){var i=t.graph().root,a=Fe(t,i,n,e);r.Z(a.vs,(function(e,n){t.node(e).order=n})),function(t,e,n){var i,a={};r.Z(n,(function(n){for(var r,s,o=t.parent(n);o;){if((r=t.parent(o))?(s=a[r],a[r]=o):(s=i,i=o),s&&s!==o)return void e.setEdge(s,o);o=r}}))}(t,n,a.vs)}))}function Ze(t,e){r.Z(e,(function(e){r.Z(e,(function(e,n){t.node(e).order=n}))}))}function je(t){var e=function(t){var e={},n=0;function i(a){var s=n;r.Z(t.children(a),i),e[a]={low:s,lim:n++}}return r.Z(t.children(),i),e}(t);r.Z(t.graph().dummyChains,(function(n){for(var r=t.node(n),i=r.edgeObj,a=function(t,e,n,r){var i,a,s=[],o=[],l=Math.min(e[n].low,e[r].low),c=Math.max(e[n].lim,e[r].lim);i=n;do{i=t.parent(i),s.push(i)}while(i&&(e[i].low>l||c>e[i].lim));a=i,i=r;for(;(i=t.parent(i))!==a;)o.push(i);return{path:s.concat(o.reverse()),lca:a}}(t,e,i.v,i.w),s=a.path,o=a.lca,l=0,c=s[l],u=!0;n!==i.w;){if(r=t.node(n),u){for(;(c=s[l])!==o&&t.node(c).maxRank<r.rank;)l++;c===o&&(u=!1)}if(!u){for(;l<s.length-1&&t.node(c=s[l+1]).minRank<=r.rank;)l++;c=s[l]}t.setParent(n,c),n=t.successors(n)[0]}}))}var Pe=n(8882);const ze=function(t,e){return null==t?t:(0,T.Z)(t,(0,Pe.Z)(e),$.Z)};function Ye(t,e){var n={};return he.Z(e,(function(e,i){var a=0,s=0,o=e.length,l=Q(i);return r.Z(i,(function(e,c){var u=function(t,e){if(t.node(e).dummy)return Bt(t.predecessors(e),(function(e){return t.node(e).dummy}))}(t,e),h=u?t.node(u).order:o;(u||e===l)&&(r.Z(i.slice(s,c+1),(function(e){r.Z(t.predecessors(e),(function(r){var i=t.node(r),s=i.order;!(s<a||h<s)||i.dummy&&t.node(e).dummy||Ue(n,r,e)}))})),s=c+1,a=h)})),i})),n}function Ue(t,e,n){if(e>n){var r=e;e=n,n=r}var i=t[e];i||(t[e]=i={}),i[n]=!0}function We(t,e,n){if(e>n){var r=e;e=n,n=r}return a.Z(t[e],n)}function He(t,e,n,i,s){var o={},l=function(t,e,n,i){var s=new u.k,o=t.graph(),l=function(t,e,n){return function(r,i,s){var o,l=r.node(i),c=r.node(s),u=0;if(u+=l.width/2,a.Z(l,"labelpos"))switch(l.labelpos.toLowerCase()){case"l":o=-l.width/2;break;case"r":o=l.width/2}if(o&&(u+=n?o:-o),o=0,u+=(l.dummy?e:t)/2,u+=(c.dummy?e:t)/2,u+=c.width/2,a.Z(c,"labelpos"))switch(c.labelpos.toLowerCase()){case"l":o=c.width/2;break;case"r":o=-c.width/2}return o&&(u+=n?o:-o),o=0,u}}(o.nodesep,o.edgesep,i);return r.Z(e,(function(e){var i;r.Z(e,(function(e){var r=n[e];if(s.setNode(r),i){var a=n[i],o=s.edge(a,r);s.setEdge(a,r,Math.max(l(t,e,i),o||0))}i=e}))})),s}(t,e,n,s),c=s?"borderLeft":"borderRight";function h(t,e){for(var n=l.nodes(),r=n.pop(),i={};r;)i[r]?t(r):(i[r]=!0,n.push(r),n=n.concat(e(r))),r=n.pop()}return h((function(t){o[t]=l.inEdges(t).reduce((function(t,e){return Math.max(t,o[e.v]+l.edge(e))}),0)}),l.predecessors.bind(l)),h((function(e){var n=l.outEdges(e).reduce((function(t,e){return Math.min(t,o[e.w]-l.edge(e))}),Number.POSITIVE_INFINITY),r=t.node(e);n!==Number.POSITIVE_INFINITY&&r.borderType!==c&&(o[e]=Math.max(o[e],n))}),l.successors.bind(l)),r.Z(i,(function(t){o[t]=o[n[t]]})),o}function qe(t){var e,n=ut(t),i=U(Ye(t,n),function(t,e){var n={};function i(e,i,a,s,o){var l;r.Z(c.Z(i,a),(function(i){l=e[i],t.node(l).dummy&&r.Z(t.predecessors(l),(function(e){var r=t.node(e);r.dummy&&(r.order<s||r.order>o)&&Ue(n,e,l)}))}))}return he.Z(e,(function(e,n){var a,s=-1,o=0;return r.Z(n,(function(r,l){if("border"===t.node(r).dummy){var c=t.predecessors(r);c.length&&(a=t.node(c[0]).order,i(n,o,l,s,a),o=l,s=a)}i(n,o,n.length,a,e.length)})),n})),n}(t,n)),a={};r.Z(["u","d"],(function(s){e="u"===s?n:ue.Z(n).reverse(),r.Z(["l","r"],(function(n){"r"===n&&(e=l.Z(e,(function(t){return ue.Z(t).reverse()})));var o=("u"===s?t.predecessors:t.successors).bind(t),c=function(t,e,n,i){var a={},s={},o={};return r.Z(e,(function(t){r.Z(t,(function(t,e){a[t]=t,s[t]=t,o[t]=e}))})),r.Z(e,(function(t){var e=-1;r.Z(t,(function(t){var r=i(t);if(r.length){r=Ae(r,(function(t){return o[t]}));for(var l=(r.length-1)/2,c=Math.floor(l),u=Math.ceil(l);c<=u;++c){var h=r[c];s[t]===t&&e<o[h]&&!We(n,t,h)&&(s[h]=t,s[t]=a[t]=a[h],e=o[h])}}}))})),{root:a,align:s}}(0,e,i,o),u=He(t,e,c.root,c.align,"r"===n);"r"===n&&(u=et(u,(function(t){return-t}))),a[s+n]=u}))}));var s=function(t,e){return kt(ue.Z(e),(function(e){var n=Number.NEGATIVE_INFINITY,r=Number.POSITIVE_INFINITY;return ze(e,(function(e,i){var a=function(t,e){return t.node(e).width}(t,i)/2;n=Math.max(e+a,n),r=Math.min(e-a,r)})),n-r}))}(t,a);return function(t,e){var n=ue.Z(e),i=it(n),a=K(n);r.Z(["u","d"],(function(n){r.Z(["l","r"],(function(r){var s,o=n+r,l=t[o];if(l!==e){var c=ue.Z(l);(s="l"===r?i-it(c):a-K(c))&&(t[o]=et(l,(function(t){return t+s})))}}))}))}(a,s),function(t,e){return et(t.ul,(function(n,r){if(e)return t[e.toLowerCase()][r];var i=Ae(l.Z(t,r));return(i[1]+i[2])/2}))}(a,t.graph().align)}function Ve(t){(function(t){var e=ut(t),n=t.graph().ranksep,i=0;r.Z(e,(function(e){var a=K(l.Z(e,(function(e){return t.node(e).height})));r.Z(e,(function(e){t.node(e).y=i+a/2})),i+=a+n}))})(t=lt(t)),r.Z(qe(t),(function(e,n){t.node(n).x=e}))}function Ge(t,e){var n=e&&e.debugTiming?pt:ft;n("layout",(function(){var e=n(" buildLayoutGraph",(function(){return function(t){var e=new u.k({multigraph:!0,compound:!0}),n=sn(t.graph());return e.setGraph(U({},Ke,an(n,Xe),W.Z(n,Qe))),r.Z(t.nodes(),(function(n){var r=sn(t.node(n));e.setNode(n,H.Z(an(r,Je),tn)),e.setParent(n,t.parent(n))})),r.Z(t.edges(),(function(n){var r=sn(t.edge(n));e.setEdge(n,U({},nn,an(r,en),W.Z(r,rn)))})),e}(t)}));n(" runLayout",(function(){!function(t,e){e(" makeSpaceForEdgeLabels",(function(){!function(t){var e=t.graph();e.ranksep/=2,r.Z(t.edges(),(function(n){var r=t.edge(n);r.minlen*=2,"c"!==r.labelpos.toLowerCase()&&("TB"===e.rankdir||"BT"===e.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)}))}(t)})),e(" removeSelfEdges",(function(){!function(t){r.Z(t.edges(),(function(e){if(e.v===e.w){var n=t.node(e.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e:e,label:t.edge(e)}),t.removeEdge(e)}}))}(t)})),e(" acyclic",(function(){b(t)})),e(" nestingGraph.run",(function(){de(t)})),e(" rank",(function(){oe(lt(t))})),e(" injectEdgeLabelProxies",(function(){!function(t){r.Z(t.edges(),(function(e){var n=t.edge(e);if(n.width&&n.height){var r=t.node(e.v),i={rank:(t.node(e.w).rank-r.rank)/2+r.rank,e:e};ot(t,"edge-proxy",i,"_ep")}}))}(t)})),e(" removeEmptyRanks",(function(){!function(t){var e=it(l.Z(t.nodes(),(function(e){return t.node(e).rank}))),n=[];r.Z(t.nodes(),(function(r){var i=t.node(r).rank-e;n[i]||(n[i]=[]),n[i].push(r)}));var i=0,a=t.graph().nodeRankFactor;r.Z(n,(function(e,n){nt.Z(e)&&n%a!=0?--i:i&&r.Z(e,(function(e){t.node(e).rank+=i}))}))}(t)})),e(" nestingGraph.cleanup",(function(){!function(t){var e=t.graph();t.removeNode(e.nestingRoot),delete e.nestingRoot,r.Z(t.edges(),(function(e){t.edge(e).nestingEdge&&t.removeEdge(e)}))}(t)})),e(" normalizeRanks",(function(){!function(t){var e=it(l.Z(t.nodes(),(function(e){return t.node(e).rank})));r.Z(t.nodes(),(function(n){var r=t.node(n);a.Z(r,"rank")&&(r.rank-=e)}))}(t)})),e(" assignRankMinMax",(function(){!function(t){var e=0;r.Z(t.nodes(),(function(n){var r=t.node(n);r.borderTop&&(r.minRank=t.node(r.borderTop).rank,r.maxRank=t.node(r.borderBottom).rank,e=K(e,r.maxRank))})),t.graph().maxRank=e}(t)})),e(" removeEdgeLabelProxies",(function(){!function(t){r.Z(t.nodes(),(function(e){var n=t.node(e);"edge-proxy"===n.dummy&&(t.edge(n.e).labelRank=n.rank,t.removeNode(e))}))}(t)})),e(" normalize.run",(function(){_t(t)})),e(" parentDummyChains",(function(){je(t)})),e(" addBorderSegments",(function(){!function(t){r.Z(t.children(),(function e(n){var i=t.children(n),s=t.node(n);if(i.length&&r.Z(i,e),a.Z(s,"minRank")){s.borderLeft=[],s.borderRight=[];for(var o=s.minRank,l=s.maxRank+1;o<l;++o)mt(t,"borderLeft","_bl",n,s,o),mt(t,"borderRight","_br",n,s,o)}}))}(t)})),e(" order",(function(){Be(t)})),e(" insertSelfEdges",(function(){!function(t){var e=ut(t);r.Z(e,(function(e){var n=0;r.Z(e,(function(e,i){var a=t.node(e);a.order=i+n,r.Z(a.selfEdges,(function(e){ot(t,"selfedge",{width:e.label.width,height:e.label.height,rank:a.rank,order:i+ ++n,e:e.e,label:e.label},"_se")})),delete a.selfEdges}))}))}(t)})),e(" adjustCoordinateSystem",(function(){!function(t){var e=t.graph().rankdir.toLowerCase();"lr"!==e&&"rl"!==e||yt(t)}(t)})),e(" position",(function(){Ve(t)})),e(" positionSelfEdges",(function(){!function(t){r.Z(t.nodes(),(function(e){var n=t.node(e);if("selfedge"===n.dummy){var r=t.node(n.e.v),i=r.x+r.width/2,a=r.y,s=n.x-i,o=r.height/2;t.setEdge(n.e,n.label),t.removeNode(e),n.label.points=[{x:i+2*s/3,y:a-o},{x:i+5*s/6,y:a-o},{x:i+s,y:a},{x:i+5*s/6,y:a+o},{x:i+2*s/3,y:a+o}],n.label.x=n.x,n.label.y=n.y}}))}(t)})),e(" removeBorderNodes",(function(){!function(t){r.Z(t.nodes(),(function(e){if(t.children(e).length){var n=t.node(e),r=t.node(n.borderTop),i=t.node(n.borderBottom),a=t.node(Q(n.borderLeft)),s=t.node(Q(n.borderRight));n.width=Math.abs(s.x-a.x),n.height=Math.abs(i.y-r.y),n.x=a.x+n.width/2,n.y=r.y+n.height/2}})),r.Z(t.nodes(),(function(e){"border"===t.node(e).dummy&&t.removeNode(e)}))}(t)})),e(" normalize.undo",(function(){!function(t){r.Z(t.graph().dummyChains,(function(e){var n,r=t.node(e),i=r.edgeLabel;for(t.setEdge(r.edgeObj,i);r.dummy;)n=t.successors(e)[0],t.removeNode(e),i.points.push({x:r.x,y:r.y}),"edge-label"===r.dummy&&(i.x=r.x,i.y=r.y,i.width=r.width,i.height=r.height),e=n,r=t.node(e)}))}(t)})),e(" fixupEdgeLabelCoords",(function(){!function(t){r.Z(t.edges(),(function(e){var n=t.edge(e);if(a.Z(n,"x"))switch("l"!==n.labelpos&&"r"!==n.labelpos||(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset}}))}(t)})),e(" undoCoordinateSystem",(function(){gt(t)})),e(" translateGraph",(function(){!function(t){var e=Number.POSITIVE_INFINITY,n=0,i=Number.POSITIVE_INFINITY,s=0,o=t.graph(),l=o.marginx||0,c=o.marginy||0;function u(t){var r=t.x,a=t.y,o=t.width,l=t.height;e=Math.min(e,r-o/2),n=Math.max(n,r+o/2),i=Math.min(i,a-l/2),s=Math.max(s,a+l/2)}r.Z(t.nodes(),(function(e){u(t.node(e))})),r.Z(t.edges(),(function(e){var n=t.edge(e);a.Z(n,"x")&&u(n)})),e-=l,i-=c,r.Z(t.nodes(),(function(n){var r=t.node(n);r.x-=e,r.y-=i})),r.Z(t.edges(),(function(n){var s=t.edge(n);r.Z(s.points,(function(t){t.x-=e,t.y-=i})),a.Z(s,"x")&&(s.x-=e),a.Z(s,"y")&&(s.y-=i)})),o.width=n-e+l,o.height=s-i+c}(t)})),e(" assignNodeIntersects",(function(){!function(t){r.Z(t.edges(),(function(e){var n,r,i=t.edge(e),a=t.node(e.v),s=t.node(e.w);i.points?(n=i.points[0],r=i.points[i.points.length-1]):(i.points=[],n=s,r=a),i.points.unshift(ct(a,n)),i.points.push(ct(s,r))}))}(t)})),e(" reversePoints",(function(){!function(t){r.Z(t.edges(),(function(e){var n=t.edge(e);n.reversed&&n.points.reverse()}))}(t)})),e(" acyclic.undo",(function(){!function(t){r.Z(t.edges(),(function(e){var n=t.edge(e);if(n.reversed){t.removeEdge(e);var r=n.forwardName;delete n.reversed,delete n.forwardName,t.setEdge(e.w,e.v,n,r)}}))}(t)}))}(e,n)})),n(" updateInputGraph",(function(){!function(t,e){r.Z(t.nodes(),(function(n){var r=t.node(n),i=e.node(n);r&&(r.x=i.x,r.y=i.y,e.children(n).length&&(r.width=i.width,r.height=i.height))})),r.Z(t.edges(),(function(n){var r=t.edge(n),i=e.edge(n);r.points=i.points,a.Z(i,"x")&&(r.x=i.x,r.y=i.y)})),t.graph().width=e.graph().width,t.graph().height=e.graph().height}(t,e)}))}))}var Xe=["nodesep","edgesep","ranksep","marginx","marginy"],Ke={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},Qe=["acyclicer","ranker","rankdir","align"],Je=["width","height"],tn={width:0,height:0},en=["minlen","weight","width","height","labeloffset"],nn={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},rn=["labelpos"];function an(t,e){return et(W.Z(t,e),Number)}function sn(t){var e={};return r.Z(t,(function(t,n){e[n.toLowerCase()]=t})),e}},2544:(t,e,n)=>{"use strict";n.d(e,{k:()=>M});var r=n(7452),i=n(2002),a=n(3234),s=n(7179),o=n(3445),l=n(9697),c=n(870),u=n(9360),h=n(626),d=n(9581),p=n(3001),f=n(1692);const m=function(t){return t!=t};const g=function(t,e,n){for(var r=n-1,i=t.length;++r<i;)if(t[r]===e)return r;return-1};const y=function(t,e,n){return e==e?g(t,e,n):(0,f.Z)(t,m,n)};const b=function(t,e){return!!(null==t?0:t.length)&&y(t,e,0)>-1};const x=function(t,e,n){for(var r=-1,i=null==t?0:t.length;++r<i;)if(n(e,t[r]))return!0;return!1};var v=n(9548),_=n(3203);const k=function(){};var T=n(6545),w=_.Z&&1/(0,T.Z)(new _.Z([,-0]))[1]==1/0?function(t){return new _.Z(t)}:k;const S=w;const E=function(t,e,n){var r=-1,i=b,a=t.length,s=!0,o=[],l=o;if(n)s=!1,i=x;else if(a>=200){var c=e?null:S(t);if(c)return(0,T.Z)(c);s=!1,i=v.Z,l=new p.Z}else l=e?[]:o;t:for(;++r<a;){var u=t[r],h=e?e(u):u;if(u=n||0!==u?u:0,s&&h==h){for(var d=l.length;d--;)if(l[d]===h)continue t;e&&l.push(h),o.push(u)}else i(l,h,n)||(l!==o&&l.push(h),o.push(u))}return o};var C=n(836);const D=(0,d.Z)((function(t){return E((0,h.Z)(t,1,C.Z,!0))}));var A=n(4148),O=n(2344),I="\0",L="\0",N="\x01";class M{constructor(t={}){this._isDirected=!r.Z(t,"directed")||t.directed,this._isMultigraph=!!r.Z(t,"multigraph")&&t.multigraph,this._isCompound=!!r.Z(t,"compound")&&t.compound,this._label=void 0,this._defaultNodeLabelFn=i.Z(void 0),this._defaultEdgeLabelFn=i.Z(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[L]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(t){return this._label=t,this}graph(){return this._label}setDefaultNodeLabel(t){return a.Z(t)||(t=i.Z(t)),this._defaultNodeLabelFn=t,this}nodeCount(){return this._nodeCount}nodes(){return s.Z(this._nodes)}sources(){var t=this;return o.Z(this.nodes(),(function(e){return l.Z(t._in[e])}))}sinks(){var t=this;return o.Z(this.nodes(),(function(e){return l.Z(t._out[e])}))}setNodes(t,e){var n=arguments,r=this;return c.Z(t,(function(t){n.length>1?r.setNode(t,e):r.setNode(t)})),this}setNode(t,e){return r.Z(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=L,this._children[t]={},this._children[L][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)}node(t){return this._nodes[t]}hasNode(t){return r.Z(this._nodes,t)}removeNode(t){var e=this;if(r.Z(this._nodes,t)){var n=function(t){e.removeEdge(e._edgeObjs[t])};delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],c.Z(this.children(t),(function(t){e.setParent(t)})),delete this._children[t]),c.Z(s.Z(this._in[t]),n),delete this._in[t],delete this._preds[t],c.Z(s.Z(this._out[t]),n),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(u.Z(e))e=L;else{for(var n=e+="";!u.Z(n);n=this.parent(n))if(n===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}parent(t){if(this._isCompound){var e=this._parent[t];if(e!==L)return e}}children(t){if(u.Z(t)&&(t=L),this._isCompound){var e=this._children[t];if(e)return s.Z(e)}else{if(t===L)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var e=this._preds[t];if(e)return s.Z(e)}successors(t){var e=this._sucs[t];if(e)return s.Z(e)}neighbors(t){var e=this.predecessors(t);if(e)return D(e,this.successors(t))}isLeaf(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length}filterNodes(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var n=this;c.Z(this._nodes,(function(n,r){t(r)&&e.setNode(r,n)})),c.Z(this._edgeObjs,(function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,n.edge(t))}));var r={};function i(t){var a=n.parent(t);return void 0===a||e.hasNode(a)?(r[t]=a,a):a in r?r[a]:i(a)}return this._isCompound&&c.Z(e.nodes(),(function(t){e.setParent(t,i(t))})),e}setDefaultEdgeLabel(t){return a.Z(t)||(t=i.Z(t)),this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return A.Z(this._edgeObjs)}setPath(t,e){var n=this,r=arguments;return O.Z(t,(function(t,i){return r.length>1?n.setEdge(t,i,e):n.setEdge(t,i),i})),this}setEdge(){var t,e,n,i,a=!1,s=arguments[0];"object"==typeof s&&null!==s&&"v"in s?(t=s.v,e=s.w,n=s.name,2===arguments.length&&(i=arguments[1],a=!0)):(t=s,e=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),t=""+t,e=""+e,u.Z(n)||(n=""+n);var o=R(this._isDirected,t,e,n);if(r.Z(this._edgeLabels,o))return a&&(this._edgeLabels[o]=i),this;if(!u.Z(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[o]=a?i:this._defaultEdgeLabelFn(t,e,n);var l=function(t,e,n,r){var i=""+e,a=""+n;if(!t&&i>a){var s=i;i=a,a=s}var o={v:i,w:a};r&&(o.name=r);return o}(this._isDirected,t,e,n);return t=l.v,e=l.w,Object.freeze(l),this._edgeObjs[o]=l,F(this._preds[e],t),F(this._sucs[t],e),this._in[e][o]=l,this._out[t][o]=l,this._edgeCount++,this}edge(t,e,n){var r=1===arguments.length?$(this._isDirected,arguments[0]):R(this._isDirected,t,e,n);return this._edgeLabels[r]}hasEdge(t,e,n){var i=1===arguments.length?$(this._isDirected,arguments[0]):R(this._isDirected,t,e,n);return r.Z(this._edgeLabels,i)}removeEdge(t,e,n){var r=1===arguments.length?$(this._isDirected,arguments[0]):R(this._isDirected,t,e,n),i=this._edgeObjs[r];return i&&(t=i.v,e=i.w,delete this._edgeLabels[r],delete this._edgeObjs[r],B(this._preds[e],t),B(this._sucs[t],e),delete this._in[e][r],delete this._out[t][r],this._edgeCount--),this}inEdges(t,e){var n=this._in[t];if(n){var r=A.Z(n);return e?o.Z(r,(function(t){return t.v===e})):r}}outEdges(t,e){var n=this._out[t];if(n){var r=A.Z(n);return e?o.Z(r,(function(t){return t.w===e})):r}}nodeEdges(t,e){var n=this.inEdges(t,e);if(n)return n.concat(this.outEdges(t,e))}}function F(t,e){t[e]?t[e]++:t[e]=1}function B(t,e){--t[e]||delete t[e]}function R(t,e,n,r){var i=""+e,a=""+n;if(!t&&i>a){var s=i;i=a,a=s}return i+N+a+N+(u.Z(r)?I:r)}function $(t,e){return R(t,e.v,e.w,e.name)}M.prototype._nodeCount=0,M.prototype._edgeCount=0},5625:(t,e,n)=>{"use strict";n.d(e,{k:()=>r.k});var r=n(2544)},9354:(t,e,n)=>{"use strict";n.d(e,{c:()=>o});var r=n(9360),i=n(8451);const a=function(t){return(0,i.Z)(t,4)};var s=n(3836);n(2544);function o(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:l(t),edges:c(t)};return r.Z(t.graph())||(e.value=a(t.graph())),e}function l(t){return s.Z(t.nodes(),(function(e){var n=t.node(e),i=t.parent(e),a={v:e};return r.Z(n)||(a.value=n),r.Z(i)||(a.parent=i),a}))}function c(t){return s.Z(t.edges(),(function(e){var n=t.edge(e),i={v:e.v,w:e.w};return r.Z(e.name)||(i.name=e.name),r.Z(n)||(i.value=n),i}))}},1518:(t,e,n)=>{"use strict";n.d(e,{sY:()=>S});var r=n(9373),i=n(7452),a=n(3688),s=n(870),o=n(277),l=n(6225),c={normal:function(t,e,n,r){var i=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").style("stroke-width",1).style("stroke-dasharray","1,0");l.bg(i,n[r+"Style"]),n[r+"Class"]&&i.attr("class",n[r+"Class"])},vee:function(t,e,n,r){var i=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 L 4 5 z").style("stroke-width",1).style("stroke-dasharray","1,0");l.bg(i,n[r+"Style"]),n[r+"Class"]&&i.attr("class",n[r+"Class"])},undirected:function(t,e,n,r){var i=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 5 L 10 5").style("stroke-width",1).style("stroke-dasharray","1,0");l.bg(i,n[r+"Style"]),n[r+"Class"]&&i.attr("class",n[r+"Class"])}};var u=n(3349);function h(t,e,n){var r=e.label,i=t.append("g");"svg"===e.labelType?function(t,e){var n=t;n.node().appendChild(e.label),l.bg(n,e.labelStyle)}(i,e):"string"!=typeof r||"html"===e.labelType?(0,u.a)(i,e):function(t,e){for(var n=t.append("text"),r=function(t){for(var e,n="",r=!1,i=0;i<t.length;++i)e=t[i],r?(n+="n"===e?"\n":e,r=!1):"\\"===e?r=!0:n+=e;return n}(e.label).split("\n"),i=0;i<r.length;i++)n.append("tspan").attr("xml:space","preserve").attr("dy","1em").attr("x","1").text(r[i]);l.bg(n,e.labelStyle)}(i,e);var a,s=i.node().getBBox();switch(n){case"top":a=-e.height/2;break;case"bottom":a=e.height/2-s.height;break;default:a=-s.height/2}return i.attr("transform","translate("+-s.width/2+","+a+")"),i}var d=function(t,e){var n=e.nodes().filter((function(t){return l.bF(e,t)})),i=t.selectAll("g.cluster").data(n,(function(t){return t}));l.WR(i.exit(),e).style("opacity",0).remove();var a=i.enter().append("g").attr("class","cluster").attr("id",(function(t){return e.node(t).id})).style("opacity",0).each((function(t){var n=e.node(t),i=r.Ys(this);r.Ys(this).append("rect"),h(i.append("g").attr("class","label"),n,n.clusterLabelPos)}));return i=i.merge(a),(i=l.WR(i,e).style("opacity",1)).selectAll("rect").each((function(t){var n=e.node(t),i=r.Ys(this);l.bg(i,n.style)})),i};let p=function(t,e){var n,a=t.selectAll("g.edgeLabel").data(e.edges(),(function(t){return l.O1(t)})).classed("update",!0);return a.exit().remove(),a.enter().append("g").classed("edgeLabel",!0).style("opacity",0),(a=t.selectAll("g.edgeLabel")).each((function(t){var n=r.Ys(this);n.select(".label").remove();var a=e.edge(t),s=h(n,e.edge(t),0).classed("label",!0),o=s.node().getBBox();a.labelId&&s.attr("id",a.labelId),i.Z(a,"width")||(a.width=o.width),i.Z(a,"height")||(a.height=o.height)})),n=a.exit?a.exit():a.selectAll(null),l.WR(n,e).style("opacity",0).remove(),a};var f=n(6749),m=n(4379);function g(t,e){return t.intersect(e)}var y=function(t,e,n){var i=t.selectAll("g.edgePath").data(e.edges(),(function(t){return l.O1(t)})).classed("update",!0),a=function(t,e){var n=t.enter().append("g").attr("class","edgePath").style("opacity",0);return n.append("path").attr("class","path").attr("d",(function(t){var n=e.edge(t),r=e.node(t.v).elem;return b(n,m.Z(n.points.length).map((function(){return e=(t=r).getBBox(),{x:(n=t.ownerSVGElement.getScreenCTM().inverse().multiply(t.getScreenCTM()).translate(e.width/2,e.height/2)).e,y:n.f};var t,e,n})))})),n.append("defs"),n}(i,e);!function(t,e){var n=t.exit();l.WR(n,e).style("opacity",0).remove()}(i,e);var s=void 0!==i.merge?i.merge(a):i;return l.WR(s,e).style("opacity",1),s.each((function(t){var n=r.Ys(this),i=e.edge(t);i.elem=this,i.id&&n.attr("id",i.id),l.$p(n,i.class,(n.classed("update")?"update ":"")+"edgePath")})),s.selectAll("path.path").each((function(t){var n=e.edge(t);n.arrowheadId=f.Z("arrowhead");var i=r.Ys(this).attr("marker-end",(function(){return"url("+(t=location.href,e=n.arrowheadId,t.split("#")[0]+"#"+e+")");var t,e})).style("fill","none");l.WR(i,e).attr("d",(function(t){return function(t,e){var n=t.edge(e),r=t.node(e.v),i=t.node(e.w),a=n.points.slice(1,n.points.length-1);return a.unshift(g(r,a[0])),a.push(g(i,a[a.length-1])),b(n,a)}(e,t)})),l.bg(i,n.style)})),s.selectAll("defs *").remove(),s.selectAll("defs").each((function(t){var i=e.edge(t);(0,n[i.arrowhead])(r.Ys(this),i.arrowheadId,i,"arrowhead")})),s};function b(t,e){var n=(r.jvg||r.YPS.line)().x((function(t){return t.x})).y((function(t){return t.y}));return(n.curve||n.interpolate)(t.curve),n(e)}var x=n(1666),v=function(t,e,n){var a,s=e.nodes().filter((function(t){return!l.bF(e,t)})),o=t.selectAll("g.node").data(s,(function(t){return t})).classed("update",!0);return o.exit().remove(),o.enter().append("g").attr("class","node").style("opacity",0),(o=t.selectAll("g.node")).each((function(t){var a=e.node(t),s=r.Ys(this);l.$p(s,a.class,(s.classed("update")?"update ":"")+"node"),s.select("g.label").remove();var o=s.append("g").attr("class","label"),c=h(o,a),u=n[a.shape],d=x.Z(c.node().getBBox(),"width","height");a.elem=this,a.id&&s.attr("id",a.id),a.labelId&&o.attr("id",a.labelId),i.Z(a,"width")&&(d.width=a.width),i.Z(a,"height")&&(d.height=a.height),d.width+=a.paddingLeft+a.paddingRight,d.height+=a.paddingTop+a.paddingBottom,o.attr("transform","translate("+(a.paddingLeft-a.paddingRight)/2+","+(a.paddingTop-a.paddingBottom)/2+")");var p=r.Ys(this);p.select(".label-container").remove();var f=u(p,d,a).classed("label-container",!0);l.bg(f,a.style);var m=f.node().getBBox();a.width=m.width,a.height=m.height})),a=o.exit?o.exit():o.selectAll(null),l.WR(a,e).style("opacity",0).remove(),o};function _(t,e,n,r){var i=t.x,a=t.y,s=i-r.x,o=a-r.y,l=Math.sqrt(e*e*o*o+n*n*s*s),c=Math.abs(e*n*s/l);r.x<i&&(c=-c);var u=Math.abs(e*n*o/l);return r.y<a&&(u=-u),{x:i+c,y:a+u}}var k=n(3352),T=n(2930),w={rect:function(t,e,n){var r=t.insert("rect",":first-child").attr("rx",n.rx).attr("ry",n.ry).attr("x",-e.width/2).attr("y",-e.height/2).attr("width",e.width).attr("height",e.height);return n.intersect=function(t){return(0,T.q)(n,t)},r},ellipse:function(t,e,n){var r=e.width/2,i=e.height/2,a=t.insert("ellipse",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("rx",r).attr("ry",i);return n.intersect=function(t){return _(n,r,i,t)},a},circle:function(t,e,n){var r=Math.max(e.width,e.height)/2,i=t.insert("circle",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("r",r);return n.intersect=function(t){return function(t,e,n){return _(t,e,e,n)}(n,r,t)},i},diamond:function(t,e,n){var r=e.width*Math.SQRT2/2,i=e.height*Math.SQRT2/2,a=[{x:0,y:-i},{x:-r,y:0},{x:0,y:i},{x:r,y:0}],s=t.insert("polygon",":first-child").attr("points",a.map((function(t){return t.x+","+t.y})).join(" "));return n.intersect=function(t){return(0,k.A)(n,a,t)},s}};function S(){var t=function(t,e){!function(t){t.nodes().forEach((function(e){var n=t.node(e);i.Z(n,"label")||t.children(e).length||(n.label=e),i.Z(n,"paddingX")&&a.Z(n,{paddingLeft:n.paddingX,paddingRight:n.paddingX}),i.Z(n,"paddingY")&&a.Z(n,{paddingTop:n.paddingY,paddingBottom:n.paddingY}),i.Z(n,"padding")&&a.Z(n,{paddingLeft:n.padding,paddingRight:n.padding,paddingTop:n.padding,paddingBottom:n.padding}),a.Z(n,E),s.Z(["paddingLeft","paddingRight","paddingTop","paddingBottom"],(function(t){n[t]=Number(n[t])})),i.Z(n,"width")&&(n._prevWidth=n.width),i.Z(n,"height")&&(n._prevHeight=n.height)})),t.edges().forEach((function(e){var n=t.edge(e);i.Z(n,"label")||(n.label=""),a.Z(n,C)}))}(e);var n=D(t,"output"),u=D(n,"clusters"),h=D(n,"edgePaths"),f=p(D(n,"edgeLabels"),e),m=v(D(n,"nodes"),e,w);(0,o.bK)(e),function(t,e){function n(t){var n=e.node(t);return"translate("+n.x+","+n.y+")"}t.filter((function(){return!r.Ys(this).classed("update")})).attr("transform",n),l.WR(t,e).style("opacity",1).attr("transform",n)}(m,e),function(t,e){function n(t){var n=e.edge(t);return i.Z(n,"x")?"translate("+n.x+","+n.y+")":""}t.filter((function(){return!r.Ys(this).classed("update")})).attr("transform",n),l.WR(t,e).style("opacity",1).attr("transform",n)}(f,e),y(h,e,c),function(t,e){var n=t.filter((function(){return!r.Ys(this).classed("update")}));function i(t){var n=e.node(t);return"translate("+n.x+","+n.y+")"}n.attr("transform",i),l.WR(t,e).style("opacity",1).attr("transform",i),l.WR(n.selectAll("rect"),e).attr("width",(function(t){return e.node(t).width})).attr("height",(function(t){return e.node(t).height})).attr("x",(function(t){return-e.node(t).width/2})).attr("y",(function(t){return-e.node(t).height/2}))}(d(u,e),e),function(t){s.Z(t.nodes(),(function(e){var n=t.node(e);i.Z(n,"_prevWidth")?n.width=n._prevWidth:delete n.width,i.Z(n,"_prevHeight")?n.height=n._prevHeight:delete n.height,delete n._prevWidth,delete n._prevHeight}))}(e)};return t.createNodes=function(e){return arguments.length?(function(t){v=t}(e),t):v},t.createClusters=function(e){return arguments.length?(function(t){d=t}(e),t):d},t.createEdgeLabels=function(e){return arguments.length?(function(t){p=t}(e),t):p},t.createEdgePaths=function(e){return arguments.length?(function(t){y=t}(e),t):y},t.shapes=function(e){return arguments.length?(function(t){w=t}(e),t):w},t.arrows=function(e){return arguments.length?(function(t){c=t}(e),t):c},t}var E={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},C={arrowhead:"normal",curve:r.c_6};function D(t,e){var n=t.select("g."+e);return n.empty()&&(n=t.append("g").attr("class",e)),n}n(5625)},1883:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r=n(1691),i=n(2142);const a=class{constructor(){this.type=i.w.ALL}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=i.w.ALL}is(t){return this.type===t}};const s=new class{constructor(t,e){this.color=e,this.changed=!1,this.data=t,this.type=new a}set(t,e){return this.color=e,this.changed=!1,this.data=t,this.type.type=i.w.ALL,this}_ensureHSL(){const t=this.data,{h:e,s:n,l:i}=t;void 0===e&&(t.h=r.Z.channel.rgb2hsl(t,"h")),void 0===n&&(t.s=r.Z.channel.rgb2hsl(t,"s")),void 0===i&&(t.l=r.Z.channel.rgb2hsl(t,"l"))}_ensureRGB(){const t=this.data,{r:e,g:n,b:i}=t;void 0===e&&(t.r=r.Z.channel.hsl2rgb(t,"r")),void 0===n&&(t.g=r.Z.channel.hsl2rgb(t,"g")),void 0===i&&(t.b=r.Z.channel.hsl2rgb(t,"b"))}get r(){const t=this.data,e=t.r;return this.type.is(i.w.HSL)||void 0===e?(this._ensureHSL(),r.Z.channel.hsl2rgb(t,"r")):e}get g(){const t=this.data,e=t.g;return this.type.is(i.w.HSL)||void 0===e?(this._ensureHSL(),r.Z.channel.hsl2rgb(t,"g")):e}get b(){const t=this.data,e=t.b;return this.type.is(i.w.HSL)||void 0===e?(this._ensureHSL(),r.Z.channel.hsl2rgb(t,"b")):e}get h(){const t=this.data,e=t.h;return this.type.is(i.w.RGB)||void 0===e?(this._ensureRGB(),r.Z.channel.rgb2hsl(t,"h")):e}get s(){const t=this.data,e=t.s;return this.type.is(i.w.RGB)||void 0===e?(this._ensureRGB(),r.Z.channel.rgb2hsl(t,"s")):e}get l(){const t=this.data,e=t.l;return this.type.is(i.w.RGB)||void 0===e?(this._ensureRGB(),r.Z.channel.rgb2hsl(t,"l")):e}get a(){return this.data.a}set r(t){this.type.set(i.w.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(i.w.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(i.w.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(i.w.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(i.w.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(i.w.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}}({r:0,g:0,b:0,a:0},"transparent")},1610:(t,e,n)=>{"use strict";n.d(e,{Z:()=>m});var r=n(1883),i=n(2142);const a={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:t=>{if(35!==t.charCodeAt(0))return;const e=t.match(a.re);if(!e)return;const n=e[1],i=parseInt(n,16),s=n.length,o=s%4==0,l=s>4,c=l?1:17,u=l?8:4,h=o?0:-1,d=l?255:15;return r.Z.set({r:(i>>u*(h+3)&d)*c,g:(i>>u*(h+2)&d)*c,b:(i>>u*(h+1)&d)*c,a:o?(i&d)*c/255:1},t)},stringify:t=>{const{r:e,g:n,b:r,a:a}=t;return a<1?`#${i.Q[Math.round(e)]}${i.Q[Math.round(n)]}${i.Q[Math.round(r)]}${i.Q[Math.round(255*a)]}`:`#${i.Q[Math.round(e)]}${i.Q[Math.round(n)]}${i.Q[Math.round(r)]}`}},s=a;var o=n(1691);const l={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:t=>{const e=t.match(l.hueRe);if(e){const[,t,n]=e;switch(n){case"grad":return o.Z.channel.clamp.h(.9*parseFloat(t));case"rad":return o.Z.channel.clamp.h(180*parseFloat(t)/Math.PI);case"turn":return o.Z.channel.clamp.h(360*parseFloat(t))}}return o.Z.channel.clamp.h(parseFloat(t))},parse:t=>{const e=t.charCodeAt(0);if(104!==e&&72!==e)return;const n=t.match(l.re);if(!n)return;const[,i,a,s,c,u]=n;return r.Z.set({h:l._hue2deg(i),s:o.Z.channel.clamp.s(parseFloat(a)),l:o.Z.channel.clamp.l(parseFloat(s)),a:c?o.Z.channel.clamp.a(u?parseFloat(c)/100:parseFloat(c)):1},t)},stringify:t=>{const{h:e,s:n,l:r,a:i}=t;return i<1?`hsla(${o.Z.lang.round(e)}, ${o.Z.lang.round(n)}%, ${o.Z.lang.round(r)}%, ${i})`:`hsl(${o.Z.lang.round(e)}, ${o.Z.lang.round(n)}%, ${o.Z.lang.round(r)}%)`}},c=l,u={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:t=>{t=t.toLowerCase();const e=u.colors[t];if(e)return s.parse(e)},stringify:t=>{const e=s.stringify(t);for(const n in u.colors)if(u.colors[n]===e)return n}},h=u,d={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:t=>{const e=t.charCodeAt(0);if(114!==e&&82!==e)return;const n=t.match(d.re);if(!n)return;const[,i,a,s,l,c,u,h,p]=n;return r.Z.set({r:o.Z.channel.clamp.r(a?2.55*parseFloat(i):parseFloat(i)),g:o.Z.channel.clamp.g(l?2.55*parseFloat(s):parseFloat(s)),b:o.Z.channel.clamp.b(u?2.55*parseFloat(c):parseFloat(c)),a:h?o.Z.channel.clamp.a(p?parseFloat(h)/100:parseFloat(h)):1},t)},stringify:t=>{const{r:e,g:n,b:r,a:i}=t;return i<1?`rgba(${o.Z.lang.round(e)}, ${o.Z.lang.round(n)}, ${o.Z.lang.round(r)}, ${o.Z.lang.round(i)})`:`rgb(${o.Z.lang.round(e)}, ${o.Z.lang.round(n)}, ${o.Z.lang.round(r)})`}},p=d,f={format:{keyword:u,hex:s,rgb:d,rgba:d,hsl:l,hsla:l},parse:t=>{if("string"!=typeof t)return t;const e=s.parse(t)||p.parse(t)||c.parse(t)||h.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},stringify:t=>!t.changed&&t.color?t.color:t.type.is(i.w.HSL)||void 0===t.data.r?c.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?p.stringify(t):s.stringify(t)},m=f},2142:(t,e,n)=>{"use strict";n.d(e,{Q:()=>i,w:()=>a});var r=n(1691);const i={};for(let s=0;s<=255;s++)i[s]=r.Z.unit.dec2hex(s);const a={ALL:0,RGB:1,HSL:2}},1506:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(1691),i=n(1610);const a=(t,e,n)=>{const a=i.Z.parse(t),s=a[e],o=r.Z.channel.clamp[e](s+n);return s!==o&&(a[e]=o),i.Z.stringify(a)}},7201:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(1506);const i=(t,e)=>(0,r.Z)(t,"l",-e)},5920:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(1506);const i=(t,e)=>(0,r.Z)(t,"l",e)},1691:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});const r={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:t=>t>=255?255:t<0?0:t,g:t=>t>=255?255:t<0?0:t,b:t=>t>=255?255:t<0?0:t,h:t=>t%360,s:t=>t>=100?100:t<0?0:t,l:t=>t>=100?100:t<0?0:t,a:t=>t>=1?1:t<0?0:t},toLinear:t=>{const e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:(t,e,n)=>(n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t),hsl2rgb:({h:t,s:e,l:n},i)=>{if(!e)return 2.55*n;t/=360,e/=100;const a=(n/=100)<.5?n*(1+e):n+e-n*e,s=2*n-a;switch(i){case"r":return 255*r.hue2rgb(s,a,t+1/3);case"g":return 255*r.hue2rgb(s,a,t);case"b":return 255*r.hue2rgb(s,a,t-1/3)}},rgb2hsl:({r:t,g:e,b:n},r)=>{t/=255,e/=255,n/=255;const i=Math.max(t,e,n),a=Math.min(t,e,n),s=(i+a)/2;if("l"===r)return 100*s;if(i===a)return 0;const o=i-a;if("s"===r)return 100*(s>.5?o/(2-i-a):o/(i+a));switch(i){case t:return 60*((e-n)/o+(e<n?6:0));case e:return 60*((n-t)/o+2);case n:return 60*((t-e)/o+4);default:return-1}}},i={channel:r,lang:{clamp:(t,e,n)=>e>n?Math.min(e,Math.max(n,t)):Math.min(n,Math.max(e,t)),round:t=>Math.round(1e10*t)/1e10},unit:{dec2hex:t=>{const e=Math.round(t).toString(16);return e.length>1?e:`0${e}`}}}},7308:(t,e,n)=>{"use strict";n.d(e,{Z:()=>d});const r=function(){this.__data__=[],this.size=0};var i=n(9651);const a=function(t,e){for(var n=t.length;n--;)if((0,i.Z)(t[n][0],e))return n;return-1};var s=Array.prototype.splice;const o=function(t){var e=this.__data__,n=a(e,t);return!(n<0)&&(n==e.length-1?e.pop():s.call(e,n,1),--this.size,!0)};const l=function(t){var e=this.__data__,n=a(e,t);return n<0?void 0:e[n][1]};const c=function(t){return a(this.__data__,t)>-1};const u=function(t,e){var n=this.__data__,r=a(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this};function h(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}h.prototype.clear=r,h.prototype.delete=o,h.prototype.get=l,h.prototype.has=c,h.prototype.set=u;const d=h},6183:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(2508),i=n(6092);const a=(0,r.Z)(i.Z,"Map")},7834:(t,e,n)=>{"use strict";n.d(e,{Z:()=>T});const r=(0,n(2508).Z)(Object,"create");const i=function(){this.__data__=r?r(null):{},this.size=0};const a=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e};var s=Object.prototype.hasOwnProperty;const o=function(t){var e=this.__data__;if(r){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return s.call(e,t)?e[t]:void 0};var l=Object.prototype.hasOwnProperty;const c=function(t){var e=this.__data__;return r?void 0!==e[t]:l.call(e,t)};const u=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=r&&void 0===e?"__lodash_hash_undefined__":e,this};function h(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}h.prototype.clear=i,h.prototype.delete=a,h.prototype.get=o,h.prototype.has=c,h.prototype.set=u;const d=h;var p=n(7308),f=n(6183);const m=function(){this.size=0,this.__data__={hash:new d,map:new(f.Z||p.Z),string:new d}};const g=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t};const y=function(t,e){var n=t.__data__;return g(e)?n["string"==typeof e?"string":"hash"]:n.map};const b=function(t){var e=y(this,t).delete(t);return this.size-=e?1:0,e};const x=function(t){return y(this,t).get(t)};const v=function(t){return y(this,t).has(t)};const _=function(t,e){var n=y(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this};function k(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}k.prototype.clear=m,k.prototype.delete=b,k.prototype.get=x,k.prototype.has=v,k.prototype.set=_;const T=k},3203:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(2508),i=n(6092);const a=(0,r.Z)(i.Z,"Set")},3001:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(7834);const i=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this};const a=function(t){return this.__data__.has(t)};function s(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new r.Z;++e<n;)this.add(t[e])}s.prototype.add=s.prototype.push=i,s.prototype.has=a;const o=s},1667:(t,e,n)=>{"use strict";n.d(e,{Z:()=>d});var r=n(7308);const i=function(){this.__data__=new r.Z,this.size=0};const a=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n};const s=function(t){return this.__data__.get(t)};const o=function(t){return this.__data__.has(t)};var l=n(6183),c=n(7834);const u=function(t,e){var n=this.__data__;if(n instanceof r.Z){var i=n.__data__;if(!l.Z||i.length<199)return i.push([t,e]),this.size=++n.size,this;n=this.__data__=new c.Z(i)}return n.set(t,e),this.size=n.size,this};function h(t){var e=this.__data__=new r.Z(t);this.size=e.size}h.prototype.clear=i,h.prototype.delete=a,h.prototype.get=s,h.prototype.has=o,h.prototype.set=u;const d=h},7685:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=n(6092).Z.Symbol},7623:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=n(6092).Z.Uint8Array},6579:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}},8774:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e){for(var n=-1,r=null==t?0:t.length,i=0,a=[];++n<r;){var s=t[n];e(s,n,t)&&(a[i++]=s)}return a}},7668:(t,e,n)=>{"use strict";n.d(e,{Z:()=>u});const r=function(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r};var i=n(9169),a=n(7771),s=n(7008),o=n(6009),l=n(8843),c=Object.prototype.hasOwnProperty;const u=function(t,e){var n=(0,a.Z)(t),u=!n&&(0,i.Z)(t),h=!n&&!u&&(0,s.Z)(t),d=!n&&!u&&!h&&(0,l.Z)(t),p=n||u||h||d,f=p?r(t.length,String):[],m=f.length;for(var g in t)!e&&!c.call(t,g)||p&&("length"==g||h&&("offset"==g||"parent"==g)||d&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||(0,o.Z)(g,m))||f.push(g);return f}},4073:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}},8694:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}},2954:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r=n(4752),i=n(9651),a=Object.prototype.hasOwnProperty;const s=function(t,e,n){var s=t[e];a.call(t,e)&&(0,i.Z)(s,n)&&(void 0!==n||e in t)||(0,r.Z)(t,e,n)}},4752:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(7904);const i=function(t,e,n){"__proto__"==e&&r.Z?(0,r.Z)(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}},8451:(t,e,n)=>{"use strict";n.d(e,{Z:()=>J});var r=n(1667),i=n(6579),a=n(2954),s=n(1899),o=n(7179);const l=function(t,e){return t&&(0,s.Z)(e,(0,o.Z)(e),t)};var c=n(2957);const u=function(t,e){return t&&(0,s.Z)(e,(0,c.Z)(e),t)};var h=n(1050),d=n(7215),p=n(5695);const f=function(t,e){return(0,s.Z)(t,(0,p.Z)(t),e)};var m=n(8694),g=n(2513),y=n(532);const b=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)(0,m.Z)(e,(0,p.Z)(t)),t=(0,g.Z)(t);return e}:y.Z;const x=function(t,e){return(0,s.Z)(t,b(t),e)};var v=n(1808),_=n(3327);const k=function(t){return(0,_.Z)(t,c.Z,b)};var T=n(3970),w=Object.prototype.hasOwnProperty;const S=function(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&w.call(t,"index")&&(n.index=t.index,n.input=t.input),n};var E=n(1884);const C=function(t,e){var n=e?(0,E.Z)(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)};var D=/\w*$/;const A=function(t){var e=new t.constructor(t.source,D.exec(t));return e.lastIndex=t.lastIndex,e};var O=n(7685),I=O.Z?O.Z.prototype:void 0,L=I?I.valueOf:void 0;const N=function(t){return L?Object(L.call(t)):{}};var M=n(2701);const F=function(t,e,n){var r=t.constructor;switch(e){case"[object ArrayBuffer]":return(0,E.Z)(t);case"[object Boolean]":case"[object Date]":return new r(+t);case"[object DataView]":return C(t,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return(0,M.Z)(t,n);case"[object Map]":case"[object Set]":return new r;case"[object Number]":case"[object String]":return new r(t);case"[object RegExp]":return A(t);case"[object Symbol]":return N(t)}};var B=n(3658),R=n(7771),$=n(7008),Z=n(8533);const j=function(t){return(0,Z.Z)(t)&&"[object Map]"==(0,T.Z)(t)};var P=n(1162),z=n(8351),Y=z.Z&&z.Z.isMap;const U=Y?(0,P.Z)(Y):j;var W=n(7226);const H=function(t){return(0,Z.Z)(t)&&"[object Set]"==(0,T.Z)(t)};var q=z.Z&&z.Z.isSet;const V=q?(0,P.Z)(q):H;var G="[object Arguments]",X="[object Function]",K="[object Object]",Q={};Q[G]=Q["[object Array]"]=Q["[object ArrayBuffer]"]=Q["[object DataView]"]=Q["[object Boolean]"]=Q["[object Date]"]=Q["[object Float32Array]"]=Q["[object Float64Array]"]=Q["[object Int8Array]"]=Q["[object Int16Array]"]=Q["[object Int32Array]"]=Q["[object Map]"]=Q["[object Number]"]=Q[K]=Q["[object RegExp]"]=Q["[object Set]"]=Q["[object String]"]=Q["[object Symbol]"]=Q["[object Uint8Array]"]=Q["[object Uint8ClampedArray]"]=Q["[object Uint16Array]"]=Q["[object Uint32Array]"]=!0,Q["[object Error]"]=Q[X]=Q["[object WeakMap]"]=!1;const J=function t(e,n,s,p,m,g){var y,b=1&n,_=2&n,w=4&n;if(s&&(y=m?s(e,p,m,g):s(e)),void 0!==y)return y;if(!(0,W.Z)(e))return e;var E=(0,R.Z)(e);if(E){if(y=S(e),!b)return(0,d.Z)(e,y)}else{var C=(0,T.Z)(e),D=C==X||"[object GeneratorFunction]"==C;if((0,$.Z)(e))return(0,h.Z)(e,b);if(C==K||C==G||D&&!m){if(y=_||D?{}:(0,B.Z)(e),!b)return _?x(e,u(y,e)):f(e,l(y,e))}else{if(!Q[C])return m?e:{};y=F(e,C,b)}}g||(g=new r.Z);var A=g.get(e);if(A)return A;g.set(e,y),V(e)?e.forEach((function(r){y.add(t(r,n,s,r,e,g))})):U(e)&&e.forEach((function(r,i){y.set(i,t(r,n,s,i,e,g))}));var O=w?_?k:v.Z:_?c.Z:o.Z,I=E?void 0:O(e);return(0,i.Z)(I||e,(function(r,i){I&&(r=e[i=r]),(0,a.Z)(y,i,t(r,n,s,i,e,g))})),y}},9811:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(2693),i=n(585);const a=function(t,e){return function(n,r){if(null==n)return n;if(!(0,i.Z)(n))return t(n,r);for(var a=n.length,s=e?a:-1,o=Object(n);(e?s--:++s<a)&&!1!==r(o[s],s,o););return n}}(r.Z)},1692:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e,n,r){for(var i=t.length,a=n+(r?1:-1);r?a--:++a<i;)if(e(t[a],a,t))return a;return-1}},626:(t,e,n)=>{"use strict";n.d(e,{Z:()=>c});var r=n(8694),i=n(7685),a=n(9169),s=n(7771),o=i.Z?i.Z.isConcatSpreadable:void 0;const l=function(t){return(0,s.Z)(t)||(0,a.Z)(t)||!!(o&&t&&t[o])};const c=function t(e,n,i,a,s){var o=-1,c=e.length;for(i||(i=l),s||(s=[]);++o<c;){var u=e[o];n>0&&i(u)?n>1?t(u,n-1,i,a,s):(0,r.Z)(s,u):a||(s[s.length]=u)}return s}},1395:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){return function(e,n,r){for(var i=-1,a=Object(e),s=r(e),o=s.length;o--;){var l=s[t?o:++i];if(!1===n(a[l],l,a))break}return e}}()},2693:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(1395),i=n(7179);const a=function(t,e){return t&&(0,r.Z)(t,e,i.Z)}},3317:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(2823),i=n(2281);const a=function(t,e){for(var n=0,a=(e=(0,r.Z)(e,t)).length;null!=t&&n<a;)t=t[(0,i.Z)(e[n++])];return n&&n==a?t:void 0}},3327:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(8694),i=n(7771);const a=function(t,e,n){var a=e(t);return(0,i.Z)(t)?a:(0,r.Z)(a,n(t))}},3589:(t,e,n)=>{"use strict";n.d(e,{Z:()=>d});var r=n(7685),i=Object.prototype,a=i.hasOwnProperty,s=i.toString,o=r.Z?r.Z.toStringTag:void 0;const l=function(t){var e=a.call(t,o),n=t[o];try{t[o]=void 0;var r=!0}catch(l){}var i=s.call(t);return r&&(e?t[o]=n:delete t[o]),i};var c=Object.prototype.toString;const u=function(t){return c.call(t)};var h=r.Z?r.Z.toStringTag:void 0;const d=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":h&&h in Object(t)?l(t):u(t)}},4765:(t,e,n)=>{"use strict";n.d(e,{Z:()=>q});var r=n(1667),i=n(3001);const a=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1};var s=n(9548);const o=function(t,e,n,r,o,l){var c=1&n,u=t.length,h=e.length;if(u!=h&&!(c&&h>u))return!1;var d=l.get(t),p=l.get(e);if(d&&p)return d==e&&p==t;var f=-1,m=!0,g=2&n?new i.Z:void 0;for(l.set(t,e),l.set(e,t);++f<u;){var y=t[f],b=e[f];if(r)var x=c?r(b,y,f,e,t,l):r(y,b,f,t,e,l);if(void 0!==x){if(x)continue;m=!1;break}if(g){if(!a(e,(function(t,e){if(!(0,s.Z)(g,e)&&(y===t||o(y,t,n,r,l)))return g.push(e)}))){m=!1;break}}else if(y!==b&&!o(y,b,n,r,l)){m=!1;break}}return l.delete(t),l.delete(e),m};var l=n(7685),c=n(7623),u=n(9651);const h=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n};var d=n(6545),p=l.Z?l.Z.prototype:void 0,f=p?p.valueOf:void 0;const m=function(t,e,n,r,i,a,s){switch(n){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!a(new c.Z(t),new c.Z(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return(0,u.Z)(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var l=h;case"[object Set]":var p=1&r;if(l||(l=d.Z),t.size!=e.size&&!p)return!1;var m=s.get(t);if(m)return m==e;r|=2,s.set(t,e);var g=o(l(t),l(e),r,i,a,s);return s.delete(t),g;case"[object Symbol]":if(f)return f.call(t)==f.call(e)}return!1};var g=n(1808),y=Object.prototype.hasOwnProperty;const b=function(t,e,n,r,i,a){var s=1&n,o=(0,g.Z)(t),l=o.length;if(l!=(0,g.Z)(e).length&&!s)return!1;for(var c=l;c--;){var u=o[c];if(!(s?u in e:y.call(e,u)))return!1}var h=a.get(t),d=a.get(e);if(h&&d)return h==e&&d==t;var p=!0;a.set(t,e),a.set(e,t);for(var f=s;++c<l;){var m=t[u=o[c]],b=e[u];if(r)var x=s?r(b,m,u,e,t,a):r(m,b,u,t,e,a);if(!(void 0===x?m===b||i(m,b,n,r,a):x)){p=!1;break}f||(f="constructor"==u)}if(p&&!f){var v=t.constructor,_=e.constructor;v==_||!("constructor"in t)||!("constructor"in e)||"function"==typeof v&&v instanceof v&&"function"==typeof _&&_ instanceof _||(p=!1)}return a.delete(t),a.delete(e),p};var x=n(3970),v=n(7771),_=n(7008),k=n(8843),T="[object Arguments]",w="[object Array]",S="[object Object]",E=Object.prototype.hasOwnProperty;const C=function(t,e,n,i,a,s){var l=(0,v.Z)(t),c=(0,v.Z)(e),u=l?w:(0,x.Z)(t),h=c?w:(0,x.Z)(e),d=(u=u==T?S:u)==S,p=(h=h==T?S:h)==S,f=u==h;if(f&&(0,_.Z)(t)){if(!(0,_.Z)(e))return!1;l=!0,d=!1}if(f&&!d)return s||(s=new r.Z),l||(0,k.Z)(t)?o(t,e,n,i,a,s):m(t,e,u,n,i,a,s);if(!(1&n)){var g=d&&E.call(t,"__wrapped__"),y=p&&E.call(e,"__wrapped__");if(g||y){var C=g?t.value():t,D=y?e.value():e;return s||(s=new r.Z),a(C,D,n,i,s)}}return!!f&&(s||(s=new r.Z),b(t,e,n,i,a,s))};var D=n(8533);const A=function t(e,n,r,i,a){return e===n||(null==e||null==n||!(0,D.Z)(e)&&!(0,D.Z)(n)?e!=e&&n!=n:C(e,n,r,i,t,a))};const O=function(t,e,n,i){var a=n.length,s=a,o=!i;if(null==t)return!s;for(t=Object(t);a--;){var l=n[a];if(o&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++a<s;){var c=(l=n[a])[0],u=t[c],h=l[1];if(o&&l[2]){if(void 0===u&&!(c in t))return!1}else{var d=new r.Z;if(i)var p=i(u,h,c,t,e,d);if(!(void 0===p?A(h,u,3,i,d):p))return!1}}return!0};var I=n(7226);const L=function(t){return t==t&&!(0,I.Z)(t)};var N=n(7179);const M=function(t){for(var e=(0,N.Z)(t),n=e.length;n--;){var r=e[n],i=t[r];e[n]=[r,i,L(i)]}return e};const F=function(t,e){return function(n){return null!=n&&(n[t]===e&&(void 0!==e||t in Object(n)))}};const B=function(t){var e=M(t);return 1==e.length&&e[0][2]?F(e[0][0],e[0][1]):function(n){return n===t||O(n,t,e)}};var R=n(3317);const $=function(t,e,n){var r=null==t?void 0:(0,R.Z)(t,e);return void 0===r?n:r};var Z=n(5487),j=n(9365),P=n(2281);const z=function(t,e){return(0,j.Z)(t)&&L(e)?F((0,P.Z)(t),e):function(n){var r=$(n,t);return void 0===r&&r===e?(0,Z.Z)(n,t):A(e,r,3)}};var Y=n(9203),U=n(4193);const W=function(t){return function(e){return(0,R.Z)(e,t)}};const H=function(t){return(0,j.Z)(t)?(0,U.Z)((0,P.Z)(t)):W(t)};const q=function(t){return"function"==typeof t?t:null==t?Y.Z:"object"==typeof t?(0,v.Z)(t)?z(t[0],t[1]):B(t):H(t)}},9473:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r=n(2764);const i=(0,n(1851).Z)(Object.keys,Object);var a=Object.prototype.hasOwnProperty;const s=function(t){if(!(0,r.Z)(t))return i(t);var e=[];for(var n in Object(t))a.call(t,n)&&"constructor"!=n&&e.push(n);return e}},1018:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(9811),i=n(585);const a=function(t,e){var n=-1,a=(0,i.Z)(t)?Array(t.length):[];return(0,r.Z)(t,(function(t,r,i){a[++n]=e(t,r,i)})),a}},4193:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){return function(e){return null==e?void 0:e[t]}}},9581:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r=n(9203),i=n(1211),a=n(7227);const s=function(t,e){return(0,a.Z)((0,i.Z)(t,e,r.Z),t+"")}},1162:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){return function(e){return t(e)}}},9548:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e){return t.has(e)}},8882:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(9203);const i=function(t){return"function"==typeof t?t:r.Z}},2823:(t,e,n)=>{"use strict";n.d(e,{Z:()=>u});var r=n(7771),i=n(9365),a=n(2454);var s=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g;const l=function(t){var e=(0,a.Z)(t,(function(t){return 500===n.size&&n.clear(),t})),n=e.cache;return e}((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(s,(function(t,n,r,i){e.push(r?i.replace(o,"$1"):n||t)})),e}));var c=n(751);const u=function(t,e){return(0,r.Z)(t)?t:(0,i.Z)(t,e)?[t]:l((0,c.Z)(t))}},1884:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(7623);const i=function(t){var e=new t.constructor(t.byteLength);return new r.Z(e).set(new r.Z(t)),e}},1050:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(6092),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,a=i&&"object"==typeof module&&module&&!module.nodeType&&module,s=a&&a.exports===i?r.Z.Buffer:void 0,o=s?s.allocUnsafe:void 0;const l=function(t,e){if(e)return t.slice();var n=t.length,r=o?o(n):new t.constructor(n);return t.copy(r),r}},2701:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(1884);const i=function(t,e){var n=e?(0,r.Z)(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}},7215:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e){var n=-1,r=t.length;for(e||(e=Array(r));++n<r;)e[n]=t[n];return e}},1899:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(2954),i=n(4752);const a=function(t,e,n,a){var s=!n;n||(n={});for(var o=-1,l=e.length;++o<l;){var c=e[o],u=a?a(n[c],t[c],c,n,t):void 0;void 0===u&&(u=t[c]),s?(0,i.Z)(n,c,u):(0,r.Z)(n,c,u)}return n}},7904:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(2508);const i=function(){try{var t=(0,r.Z)(Object,"defineProperty");return t({},"",{}),t}catch(e){}}()},3413:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r="object"==typeof global&&global&&global.Object===Object&&global},1808:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r=n(3327),i=n(5695),a=n(7179);const s=function(t){return(0,r.Z)(t,a.Z,i.Z)}},2508:(t,e,n)=>{"use strict";n.d(e,{Z:()=>b});var r=n(3234);const i=n(6092).Z["__core-js_shared__"];var a,s=(a=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+a:"";const o=function(t){return!!s&&s in t};var l=n(7226),c=n(19),u=/^\[object .+?Constructor\]$/,h=Function.prototype,d=Object.prototype,p=h.toString,f=d.hasOwnProperty,m=RegExp("^"+p.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const g=function(t){return!(!(0,l.Z)(t)||o(t))&&((0,r.Z)(t)?m:u).test((0,c.Z)(t))};const y=function(t,e){return null==t?void 0:t[e]};const b=function(t,e){var n=y(t,e);return g(n)?n:void 0}},2513:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=(0,n(1851).Z)(Object.getPrototypeOf,Object)},5695:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(8774),i=n(532),a=Object.prototype.propertyIsEnumerable,s=Object.getOwnPropertySymbols;const o=s?function(t){return null==t?[]:(t=Object(t),(0,r.Z)(s(t),(function(e){return a.call(t,e)})))}:i.Z},3970:(t,e,n)=>{"use strict";n.d(e,{Z:()=>T});var r=n(2508),i=n(6092);const a=(0,r.Z)(i.Z,"DataView");var s=n(6183);const o=(0,r.Z)(i.Z,"Promise");var l=n(3203);const c=(0,r.Z)(i.Z,"WeakMap");var u=n(3589),h=n(19),d="[object Map]",p="[object Promise]",f="[object Set]",m="[object WeakMap]",g="[object DataView]",y=(0,h.Z)(a),b=(0,h.Z)(s.Z),x=(0,h.Z)(o),v=(0,h.Z)(l.Z),_=(0,h.Z)(c),k=u.Z;(a&&k(new a(new ArrayBuffer(1)))!=g||s.Z&&k(new s.Z)!=d||o&&k(o.resolve())!=p||l.Z&&k(new l.Z)!=f||c&&k(new c)!=m)&&(k=function(t){var e=(0,u.Z)(t),n="[object Object]"==e?t.constructor:void 0,r=n?(0,h.Z)(n):"";if(r)switch(r){case y:return g;case b:return d;case x:return p;case v:return f;case _:return m}return e});const T=k},6174:(t,e,n)=>{"use strict";n.d(e,{Z:()=>c});var r=n(2823),i=n(9169),a=n(7771),s=n(6009),o=n(1656),l=n(2281);const c=function(t,e,n){for(var c=-1,u=(e=(0,r.Z)(e,t)).length,h=!1;++c<u;){var d=(0,l.Z)(e[c]);if(!(h=null!=t&&n(t,d)))break;t=t[d]}return h||++c!=u?h:!!(u=null==t?0:t.length)&&(0,o.Z)(u)&&(0,s.Z)(d,u)&&((0,a.Z)(t)||(0,i.Z)(t))}},3658:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(7226),i=Object.create;const a=function(){function t(){}return function(e){if(!(0,r.Z)(e))return{};if(i)return i(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();var s=n(2513),o=n(2764);const l=function(t){return"function"!=typeof t.constructor||(0,o.Z)(t)?{}:a((0,s.Z)(t))}},6009:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=/^(?:0|[1-9]\d*)$/;const i=function(t,e){var n=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==n||"symbol"!=n&&r.test(t))&&t>-1&&t%1==0&&t<e}},439:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(9651),i=n(585),a=n(6009),s=n(7226);const o=function(t,e,n){if(!(0,s.Z)(n))return!1;var o=typeof e;return!!("number"==o?(0,i.Z)(n)&&(0,a.Z)(e,n.length):"string"==o&&e in n)&&(0,r.Z)(n[e],t)}},9365:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(7771),i=n(2714),a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,s=/^\w*$/;const o=function(t,e){if((0,r.Z)(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!(0,i.Z)(t))||(s.test(t)||!a.test(t)||null!=e&&t in Object(e))}},2764:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=Object.prototype;const i=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||r)}},8351:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(3413),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,a=i&&"object"==typeof module&&module&&!module.nodeType&&module,s=a&&a.exports===i&&r.Z.process;const o=function(){try{var t=a&&a.require&&a.require("util").types;return t||s&&s.binding&&s.binding("util")}catch(e){}}()},1851:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e){return function(n){return t(e(n))}}},1211:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});const r=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)};var i=Math.max;const a=function(t,e,n){return e=i(void 0===e?t.length-1:e,0),function(){for(var a=arguments,s=-1,o=i(a.length-e,0),l=Array(o);++s<o;)l[s]=a[e+s];s=-1;for(var c=Array(e+1);++s<e;)c[s]=a[s];return c[e]=n(l),r(t,this,c)}}},6092:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(3413),i="object"==typeof self&&self&&self.Object===Object&&self;const a=r.Z||i||Function("return this")()},6545:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}},7227:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(2002),i=n(7904),a=n(9203);const s=i.Z?function(t,e){return(0,i.Z)(t,"toString",{configurable:!0,enumerable:!1,value:(0,r.Z)(e),writable:!0})}:a.Z;var o=Date.now;const l=function(t){var e=0,n=0;return function(){var r=o(),i=16-(r-n);if(n=r,i>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(s)},2281:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(2714);const i=function(t){if("string"==typeof t||(0,r.Z)(t))return t;var e=t+"";return"0"==e&&1/t==-Infinity?"-0":e}},19:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=Function.prototype.toString;const i=function(t){if(null!=t){try{return r.call(t)}catch(e){}try{return t+""}catch(e){}}return""}},2002:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){return function(){return t}}},3688:(t,e,n)=>{"use strict";n.d(e,{Z:()=>c});var r=n(9581),i=n(9651),a=n(439),s=n(2957),o=Object.prototype,l=o.hasOwnProperty;const c=(0,r.Z)((function(t,e){t=Object(t);var n=-1,r=e.length,c=r>2?e[2]:void 0;for(c&&(0,a.Z)(e[0],e[1],c)&&(r=1);++n<r;)for(var u=e[n],h=(0,s.Z)(u),d=-1,p=h.length;++d<p;){var f=h[d],m=t[f];(void 0===m||(0,i.Z)(m,o[f])&&!l.call(t,f))&&(t[f]=u[f])}return t}))},9651:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e){return t===e||t!=t&&e!=e}},3445:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(8774),i=n(9811);const a=function(t,e){var n=[];return(0,i.Z)(t,(function(t,r,i){e(t,r,i)&&n.push(t)})),n};var s=n(4765),o=n(7771);const l=function(t,e){return((0,o.Z)(t)?r.Z:a)(t,(0,s.Z)(e,3))}},7961:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(626);const i=function(t){return(null==t?0:t.length)?(0,r.Z)(t,1):[]}},870:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(6579),i=n(9811),a=n(8882),s=n(7771);const o=function(t,e){return((0,s.Z)(t)?r.Z:i.Z)(t,(0,a.Z)(e))}},7452:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r=Object.prototype.hasOwnProperty;const i=function(t,e){return null!=t&&r.call(t,e)};var a=n(6174);const s=function(t,e){return null!=t&&(0,a.Z)(t,e,i)}},5487:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});const r=function(t,e){return null!=t&&e in Object(t)};var i=n(6174);const a=function(t,e){return null!=t&&(0,i.Z)(t,e,r)}},9203:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){return t}},9169:(t,e,n)=>{"use strict";n.d(e,{Z:()=>c});var r=n(3589),i=n(8533);const a=function(t){return(0,i.Z)(t)&&"[object Arguments]"==(0,r.Z)(t)};var s=Object.prototype,o=s.hasOwnProperty,l=s.propertyIsEnumerable;const c=a(function(){return arguments}())?a:function(t){return(0,i.Z)(t)&&o.call(t,"callee")&&!l.call(t,"callee")}},7771:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=Array.isArray},585:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(3234),i=n(1656);const a=function(t){return null!=t&&(0,i.Z)(t.length)&&!(0,r.Z)(t)}},836:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(585),i=n(8533);const a=function(t){return(0,i.Z)(t)&&(0,r.Z)(t)}},7008:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(6092);const i=function(){return!1};var a="object"==typeof exports&&exports&&!exports.nodeType&&exports,s=a&&"object"==typeof module&&module&&!module.nodeType&&module,o=s&&s.exports===a?r.Z.Buffer:void 0;const l=(o?o.isBuffer:void 0)||i},9697:(t,e,n)=>{"use strict";n.d(e,{Z:()=>d});var r=n(9473),i=n(3970),a=n(9169),s=n(7771),o=n(585),l=n(7008),c=n(2764),u=n(8843),h=Object.prototype.hasOwnProperty;const d=function(t){if(null==t)return!0;if((0,o.Z)(t)&&((0,s.Z)(t)||"string"==typeof t||"function"==typeof t.splice||(0,l.Z)(t)||(0,u.Z)(t)||(0,a.Z)(t)))return!t.length;var e=(0,i.Z)(t);if("[object Map]"==e||"[object Set]"==e)return!t.size;if((0,c.Z)(t))return!(0,r.Z)(t).length;for(var n in t)if(h.call(t,n))return!1;return!0}},3234:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(3589),i=n(7226);const a=function(t){if(!(0,i.Z)(t))return!1;var e=(0,r.Z)(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},1656:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},7226:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},8533:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){return null!=t&&"object"==typeof t}},7514:(t,e,n)=>{"use strict";n.d(e,{Z:()=>h});var r=n(3589),i=n(2513),a=n(8533),s=Function.prototype,o=Object.prototype,l=s.toString,c=o.hasOwnProperty,u=l.call(Object);const h=function(t){if(!(0,a.Z)(t)||"[object Object]"!=(0,r.Z)(t))return!1;var e=(0,i.Z)(t);if(null===e)return!0;var n=c.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&l.call(n)==u}},2714:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(3589),i=n(8533);const a=function(t){return"symbol"==typeof t||(0,i.Z)(t)&&"[object Symbol]"==(0,r.Z)(t)}},8843:(t,e,n)=>{"use strict";n.d(e,{Z:()=>h});var r=n(3589),i=n(1656),a=n(8533),s={};s["[object Float32Array]"]=s["[object Float64Array]"]=s["[object Int8Array]"]=s["[object Int16Array]"]=s["[object Int32Array]"]=s["[object Uint8Array]"]=s["[object Uint8ClampedArray]"]=s["[object Uint16Array]"]=s["[object Uint32Array]"]=!0,s["[object Arguments]"]=s["[object Array]"]=s["[object ArrayBuffer]"]=s["[object Boolean]"]=s["[object DataView]"]=s["[object Date]"]=s["[object Error]"]=s["[object Function]"]=s["[object Map]"]=s["[object Number]"]=s["[object Object]"]=s["[object RegExp]"]=s["[object Set]"]=s["[object String]"]=s["[object WeakMap]"]=!1;const o=function(t){return(0,a.Z)(t)&&(0,i.Z)(t.length)&&!!s[(0,r.Z)(t)]};var l=n(1162),c=n(8351),u=c.Z&&c.Z.isTypedArray;const h=u?(0,l.Z)(u):o},9360:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){return void 0===t}},7179:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r=n(7668),i=n(9473),a=n(585);const s=function(t){return(0,a.Z)(t)?(0,r.Z)(t):(0,i.Z)(t)}},2957:(t,e,n)=>{"use strict";n.d(e,{Z:()=>u});var r=n(7668),i=n(7226),a=n(2764);const s=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e};var o=Object.prototype.hasOwnProperty;const l=function(t){if(!(0,i.Z)(t))return s(t);var e=(0,a.Z)(t),n=[];for(var r in t)("constructor"!=r||!e&&o.call(t,r))&&n.push(r);return n};var c=n(585);const u=function(t){return(0,c.Z)(t)?(0,r.Z)(t,!0):l(t)}},3836:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(4073),i=n(4765),a=n(1018),s=n(7771);const o=function(t,e){return((0,s.Z)(t)?r.Z:a.Z)(t,(0,i.Z)(e,3))}},2454:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(7834);function i(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var s=t.apply(this,r);return n.cache=a.set(i,s)||a,s};return n.cache=new(i.Cache||r.Z),n}i.Cache=r.Z;const a=i},1666:(t,e,n)=>{"use strict";n.d(e,{Z:()=>g});var r=n(3317),i=n(2954),a=n(2823),s=n(6009),o=n(7226),l=n(2281);const c=function(t,e,n,r){if(!(0,o.Z)(t))return t;for(var c=-1,u=(e=(0,a.Z)(e,t)).length,h=u-1,d=t;null!=d&&++c<u;){var p=(0,l.Z)(e[c]),f=n;if("__proto__"===p||"constructor"===p||"prototype"===p)return t;if(c!=h){var m=d[p];void 0===(f=r?r(m,p,d):void 0)&&(f=(0,o.Z)(m)?m:(0,s.Z)(e[c+1])?[]:{})}(0,i.Z)(d,p,f),d=d[p]}return t};const u=function(t,e,n){for(var i=-1,s=e.length,o={};++i<s;){var l=e[i],u=(0,r.Z)(t,l);n(u,l)&&c(o,(0,a.Z)(l,t),u)}return o};var h=n(5487);const d=function(t,e){return u(t,e,(function(e,n){return(0,h.Z)(t,n)}))};var p=n(7961),f=n(1211),m=n(7227);const g=function(t){return(0,m.Z)((0,f.Z)(t,void 0,p.Z),t+"")}((function(t,e){return null==t?{}:d(t,e)}))},4379:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=Math.ceil,i=Math.max;const a=function(t,e,n,a){for(var s=-1,o=i(r((e-t)/(n||1)),0),l=Array(o);o--;)l[a?o:++s]=t,t+=n;return l};var s=n(439),o=n(4099);const l=function(t){return function(e,n,r){return r&&"number"!=typeof r&&(0,s.Z)(e,n,r)&&(n=r=void 0),e=(0,o.Z)(e),void 0===n?(n=e,e=0):n=(0,o.Z)(n),r=void 0===r?e<n?1:-1:(0,o.Z)(r),a(e,n,r,t)}}()},2344:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});const r=function(t,e,n,r){var i=-1,a=null==t?0:t.length;for(r&&a&&(n=t[++i]);++i<a;)n=e(n,t[i],i,t);return n};var i=n(9811),a=n(4765);const s=function(t,e,n,r,i){return i(t,(function(t,i,a){n=r?(r=!1,t):e(n,t,i,a)})),n};var o=n(7771);const l=function(t,e,n){var l=(0,o.Z)(t)?r:s,c=arguments.length<3;return l(t,(0,a.Z)(e,4),n,c,i.Z)}},532:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(){return[]}},4099:(t,e,n)=>{"use strict";n.d(e,{Z:()=>m});var r=/\s/;const i=function(t){for(var e=t.length;e--&&r.test(t.charAt(e)););return e};var a=/^\s+/;const s=function(t){return t?t.slice(0,i(t)+1).replace(a,""):t};var o=n(7226),l=n(2714),c=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,h=/^0o[0-7]+$/i,d=parseInt;const p=function(t){if("number"==typeof t)return t;if((0,l.Z)(t))return NaN;if((0,o.Z)(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=(0,o.Z)(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=s(t);var n=u.test(t);return n||h.test(t)?d(t.slice(2),n?2:8):c.test(t)?NaN:+t};var f=1/0;const m=function(t){return t?(t=p(t))===f||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},751:(t,e,n)=>{"use strict";n.d(e,{Z:()=>u});var r=n(7685),i=n(4073),a=n(7771),s=n(2714),o=r.Z?r.Z.prototype:void 0,l=o?o.toString:void 0;const c=function t(e){if("string"==typeof e)return e;if((0,a.Z)(e))return(0,i.Z)(e,t)+"";if((0,s.Z)(e))return l?l.call(e):"";var n=e+"";return"0"==n&&1/e==-Infinity?"-0":n};const u=function(t){return null==t?"":c(t)}},6749:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(751),i=0;const a=function(t){var e=++i;return(0,r.Z)(t)+e}},4148:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r=n(4073);const i=function(t,e){return(0,r.Z)(e,(function(e){return t[e]}))};var a=n(7179);const s=function(t){return null==t?[]:i(t,(0,a.Z)(t))}}}]); \ No newline at end of file +/*! For license information please see 8929.afff4b8b.js.LICENSE.txt */ +(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[8929],{7967:(t,e)=>{"use strict";e.N=void 0;var n=/^([^\w]*)(javascript|data|vbscript)/im,r=/&#(\w+)(^\w|;)?/g,i=/&(newline|tab);/gi,a=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,s=/^.+(:|:)/gim,o=[".","/"];e.N=function(t){var e,l=(e=t||"",e.replace(r,(function(t,e){return String.fromCharCode(e)}))).replace(i,"").replace(a,"").trim();if(!l)return"about:blank";if(function(t){return o.indexOf(t[0])>-1}(l))return l;var c=l.match(s);if(!c)return l;var u=c[0];return n.test(u)?"about:blank":l}},3905:(t,e,n)=>{"use strict";n.d(e,{Zo:()=>u,kt:()=>f});var r=n(7294);function i(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function a(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function s(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?a(Object(n),!0).forEach((function(e){i(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function o(t,e){if(null==t)return{};var n,r,i=function(t,e){if(null==t)return{};var n,r,i={},a=Object.keys(t);for(r=0;r<a.length;r++)n=a[r],e.indexOf(n)>=0||(i[n]=t[n]);return i}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r<a.length;r++)n=a[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(i[n]=t[n])}return i}var l=r.createContext({}),c=function(t){var e=r.useContext(l),n=e;return t&&(n="function"==typeof t?t(e):s(s({},e),t)),n},u=function(t){var e=c(t.components);return r.createElement(l.Provider,{value:e},t.children)},h="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},p=r.forwardRef((function(t,e){var n=t.components,i=t.mdxType,a=t.originalType,l=t.parentName,u=o(t,["components","mdxType","originalType","parentName"]),h=c(n),p=i,f=h["".concat(l,".").concat(p)]||h[p]||d[p]||a;return n?r.createElement(f,s(s({ref:e},u),{},{components:n})):r.createElement(f,s({ref:e},u))}));function f(t,e){var n=arguments,i=e&&e.mdxType;if("string"==typeof t||i){var a=n.length,s=new Array(a);s[0]=p;var o={};for(var l in e)hasOwnProperty.call(e,l)&&(o[l]=e[l]);o.originalType=t,o[h]="string"==typeof t?t:i,s[1]=o;for(var c=2;c<a;c++)s[c]=n[c];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}p.displayName="MDXCreateElement"},6505:(t,e,n)=>{"use strict";n.d(e,{Z:()=>u});var r=n(7462),i=n(7294),a=n(6010),s=n(6412),o=n(5281),l=n(7016);const c={codeBlockContainer:"codeBlockContainer_Ckt0"};function u(t){let{as:e,...n}=t;const u=(0,s.p)(),h=(0,l.QC)(u);return i.createElement(e,(0,r.Z)({},n,{style:h,className:(0,a.Z)(n.className,c.codeBlockContainer,o.k.common.codeBlock)}))}},1170:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(7294),i=n(6010),a=n(6505),s=n(2944);function o(t){let{children:e,className:n}=t;return r.createElement(a.Z,{as:"pre",tabIndex:0,className:(0,i.Z)(s.Z.codeBlockStandalone,"thin-scrollbar",n)},r.createElement("code",{className:s.Z.codeBlockLines},e))}},2138:(t,e,n)=>{"use strict";n.d(e,{Z:()=>O});var r=n(7462),i=n(7294),a=n(6010),s=n(6668),o=n(6412),l=n(7016),c=n(902);const u={attributes:!0,characterData:!0,childList:!0,subtree:!0};function h(t,e){const[n,r]=(0,i.useState)(),a=(0,i.useCallback)((()=>{r(t.current?.closest("[role=tabpanel][hidden]"))}),[t,r]);(0,i.useEffect)((()=>{a()}),[a]),function(t,e,n){void 0===n&&(n=u);const r=(0,c.zX)(e),a=(0,c.Ql)(n);(0,i.useEffect)((()=>{const e=new MutationObserver(r);return t&&e.observe(t,a),()=>e.disconnect()}),[t,r,a])}(n,(t=>{t.forEach((t=>{"attributes"===t.type&&"hidden"===t.attributeName&&(e(),a())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}const d={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]};var p={Prism:n(7410).Z,theme:d};function f(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function m(){return m=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},m.apply(this,arguments)}var g=/\r\n|\r|\n/,y=function(t){0===t.length?t.push({types:["plain"],content:"\n",empty:!0}):1===t.length&&""===t[0].content&&(t[0].content="\n",t[0].empty=!0)},b=function(t,e){var n=t.length;return n>0&&t[n-1]===e?t:t.concat(e)};function x(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&-1===e.indexOf(r)&&(n[r]=t[r]);return n}var v=function(t){function e(){for(var e=this,n=[],r=arguments.length;r--;)n[r]=arguments[r];t.apply(this,n),f(this,"getThemeDict",(function(t){if(void 0!==e.themeDict&&t.theme===e.prevTheme&&t.language===e.prevLanguage)return e.themeDict;e.prevTheme=t.theme,e.prevLanguage=t.language;var n=t.theme?function(t,e){var n=t.plain,r=Object.create(null),i=t.styles.reduce((function(t,n){var r=n.languages,i=n.style;return r&&!r.includes(e)||n.types.forEach((function(e){var n=m({},t[e],i);t[e]=n})),t}),r);return i.root=n,i.plain=m({},n,{backgroundColor:null}),i}(t.theme,t.language):void 0;return e.themeDict=n})),f(this,"getLineProps",(function(t){var n=t.key,r=t.className,i=t.style,a=m({},x(t,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),s=e.getThemeDict(e.props);return void 0!==s&&(a.style=s.plain),void 0!==i&&(a.style=void 0!==a.style?m({},a.style,i):i),void 0!==n&&(a.key=n),r&&(a.className+=" "+r),a})),f(this,"getStyleForToken",(function(t){var n=t.types,r=t.empty,i=n.length,a=e.getThemeDict(e.props);if(void 0!==a){if(1===i&&"plain"===n[0])return r?{display:"inline-block"}:void 0;if(1===i&&!r)return a[n[0]];var s=r?{display:"inline-block"}:{},o=n.map((function(t){return a[t]}));return Object.assign.apply(Object,[s].concat(o))}})),f(this,"getTokenProps",(function(t){var n=t.key,r=t.className,i=t.style,a=t.token,s=m({},x(t,["key","className","style","token"]),{className:"token "+a.types.join(" "),children:a.content,style:e.getStyleForToken(a),key:void 0});return void 0!==i&&(s.style=void 0!==s.style?m({},s.style,i):i),void 0!==n&&(s.key=n),r&&(s.className+=" "+r),s})),f(this,"tokenize",(function(t,e,n,r){var i={code:e,grammar:n,language:r,tokens:[]};t.hooks.run("before-tokenize",i);var a=i.tokens=t.tokenize(i.code,i.grammar,i.language);return t.hooks.run("after-tokenize",i),a}))}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.render=function(){var t=this.props,e=t.Prism,n=t.language,r=t.code,i=t.children,a=this.getThemeDict(this.props),s=e.languages[n];return i({tokens:function(t){for(var e=[[]],n=[t],r=[0],i=[t.length],a=0,s=0,o=[],l=[o];s>-1;){for(;(a=r[s]++)<i[s];){var c=void 0,u=e[s],h=n[s][a];if("string"==typeof h?(u=s>0?u:["plain"],c=h):(u=b(u,h.type),h.alias&&(u=b(u,h.alias)),c=h.content),"string"==typeof c){var d=c.split(g),p=d.length;o.push({types:u,content:d[0]});for(var f=1;f<p;f++)y(o),l.push(o=[]),o.push({types:u,content:d[f]})}else s++,e.push(u),n.push(c),r.push(0),i.push(c.length)}s--,e.pop(),n.pop(),r.pop(),i.pop()}return y(o),l}(void 0!==s?this.tokenize(e,r,s,n):[r]),className:"prism-code language-"+n,style:void 0!==a?a.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},e}(i.Component);const _=v;var k=n(1415);var T=n(5999);const w={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function S(t){let{code:e,className:n}=t;const[r,s]=(0,i.useState)(!1),o=(0,i.useRef)(void 0),l=(0,i.useCallback)((()=>{!function(t,e){let{target:n=document.body}=void 0===e?{}:e;if("string"!=typeof t)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof t}\`.`);const r=document.createElement("textarea"),i=document.activeElement;r.value=t,r.setAttribute("readonly",""),r.style.contain="strict",r.style.position="absolute",r.style.left="-9999px",r.style.fontSize="12pt";const a=document.getSelection(),s=a.rangeCount>0&&a.getRangeAt(0);n.append(r),r.select(),r.selectionStart=0,r.selectionEnd=t.length;let o=!1;try{o=document.execCommand("copy")}catch{}r.remove(),s&&(a.removeAllRanges(),a.addRange(s)),i&&i.focus()}(e),s(!0),o.current=window.setTimeout((()=>{s(!1)}),1e3)}),[e]);return(0,i.useEffect)((()=>()=>window.clearTimeout(o.current)),[]),i.createElement("button",{type:"button","aria-label":r?(0,T.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,T.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,T.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,a.Z)("clean-btn",n,w.copyButton,r&&w.copyButtonCopied),onClick:l},i.createElement("span",{className:w.copyButtonIcons,"aria-hidden":"true"},i.createElement("svg",{className:w.copyButtonIcon,viewBox:"0 0 24 24"},i.createElement("path",{d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})),i.createElement("svg",{className:w.copyButtonSuccessIcon,viewBox:"0 0 24 24"},i.createElement("path",{d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))))}const E={wordWrapButtonIcon:"wordWrapButtonIcon_Bwma",wordWrapButtonEnabled:"wordWrapButtonEnabled_EoeP"};function C(t){let{className:e,onClick:n,isEnabled:r}=t;const s=(0,T.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return i.createElement("button",{type:"button",onClick:n,className:(0,a.Z)("clean-btn",e,r&&E.wordWrapButtonEnabled),"aria-label":s,title:s},i.createElement("svg",{className:E.wordWrapButtonIcon,viewBox:"0 0 24 24","aria-hidden":"true"},i.createElement("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})))}var D=n(6505),A=n(2944);function O(t){let{children:e,className:n="",metastring:c,title:u,showLineNumbers:d,language:f}=t;const{prism:{defaultLanguage:m,magicComments:g}}=(0,s.L)(),y=f??(0,l.Vo)(n)??m,b=(0,o.p)(),x=function(){const[t,e]=(0,i.useState)(!1),[n,r]=(0,i.useState)(!1),a=(0,i.useRef)(null),s=(0,i.useCallback)((()=>{const n=a.current.querySelector("code");t?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),e((t=>!t))}),[a,t]),o=(0,i.useCallback)((()=>{const{scrollWidth:t,clientWidth:e}=a.current,n=t>e||a.current.querySelector("code").hasAttribute("style");r(n)}),[a]);return h(a,o),(0,i.useEffect)((()=>{o()}),[t,o]),(0,i.useEffect)((()=>(window.addEventListener("resize",o,{passive:!0}),()=>{window.removeEventListener("resize",o)})),[o]),{codeBlockRef:a,isEnabled:t,isCodeScrollable:n,toggle:s}}(),v=(0,l.bc)(c)||u,{lineClassNames:T,code:w}=(0,l.nZ)(e,{metastring:c,language:y,magicComments:g}),E=d??(0,l.nt)(c);return i.createElement(D.Z,{as:"div",className:(0,a.Z)(n,y&&!n.includes(`language-${y}`)&&`language-${y}`)},v&&i.createElement("div",{className:A.Z.codeBlockTitle},v),i.createElement("div",{className:A.Z.codeBlockContent},i.createElement(_,(0,r.Z)({},p,{theme:b,code:w,language:y??"text"}),(t=>{let{className:e,tokens:n,getLineProps:r,getTokenProps:s}=t;return i.createElement("pre",{tabIndex:0,ref:x.codeBlockRef,className:(0,a.Z)(e,A.Z.codeBlock,"thin-scrollbar")},i.createElement("code",{className:(0,a.Z)(A.Z.codeBlockLines,E&&A.Z.codeBlockLinesWithNumbering)},n.map(((t,e)=>i.createElement(k.Z,{key:e,line:t,getLineProps:r,getTokenProps:s,classNames:T[e],showLineNumbers:E})))))})),i.createElement("div",{className:A.Z.buttonGroup},(x.isEnabled||x.isCodeScrollable)&&i.createElement(C,{className:A.Z.codeButton,onClick:()=>x.toggle(),isEnabled:x.isEnabled}),i.createElement(S,{className:A.Z.codeButton,code:w}))))}},8397:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(7462),i=n(7294),a=n(6010);const s={codeLine:"codeLine_lJS_",codeLineNumber:"codeLineNumber_Tfdd",codeLineContent:"codeLineContent_feaV"};function o(t){let{line:e,classNames:n,showLineNumbers:o,getLineProps:l,getTokenProps:c}=t;1===e.length&&"\n"===e[0].content&&(e[0].content="");const u=l({line:e,className:(0,a.Z)(n,o&&s.codeLine)}),h=e.map(((t,e)=>i.createElement("span",(0,r.Z)({key:e},c({token:t,key:e})))));return i.createElement("span",u,o?i.createElement(i.Fragment,null,i.createElement("span",{className:s.codeLineNumber}),i.createElement("span",{className:s.codeLineContent},h)):h,i.createElement("br",null))}},2503:(t,e,n)=>{"use strict";n.d(e,{Z:()=>u});var r=n(7462),i=n(7294),a=n(6010),s=n(5999),o=n(6668),l=n(9960);const c={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function u(t){let{as:e,id:n,...u}=t;const{navbar:{hideOnScroll:h}}=(0,o.L)();if("h1"===e||!n)return i.createElement(e,(0,r.Z)({},u,{id:void 0}));const d=(0,s.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return i.createElement(e,(0,r.Z)({},u,{className:(0,a.Z)("anchor",h?c.anchorWithHideOnScrollNavbar:c.anchorWithStickyNavbar,u.className),id:n}),u.children,i.createElement(l.Z,{className:"hash-link",to:`#${n}`,"aria-label":d,title:d},"\u200b"))}},5881:(t,e,n)=>{"use strict";n.d(e,{Z:()=>N});var r=n(7294),i=n(3905),a=n(7462),s=n(5742);var o=n(8573);var l=n(9960);var c=n(6010),u=n(2389),h=n(6043);const d={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function p(t){return!!t&&("SUMMARY"===t.tagName||p(t.parentElement))}function f(t,e){return!!t&&(t===e||f(t.parentElement,e))}function m(t){let{summary:e,children:n,...i}=t;const s=(0,u.Z)(),o=(0,r.useRef)(null),{collapsed:l,setCollapsed:m}=(0,h.u)({initialState:!i.open}),[g,y]=(0,r.useState)(i.open);return r.createElement("details",(0,a.Z)({},i,{ref:o,open:g,"data-collapsed":l,className:(0,c.Z)(d.details,s&&d.isBrowser,i.className),onMouseDown:t=>{p(t.target)&&t.detail>1&&t.preventDefault()},onClick:t=>{t.stopPropagation();const e=t.target;p(e)&&f(e,o.current)&&(t.preventDefault(),l?(m(!1),y(!0)):m(!0))}}),e??r.createElement("summary",null,"Details"),r.createElement(h.z,{lazy:!1,collapsed:l,disableSSRStyle:!0,onCollapseTransitionEnd:t=>{m(t),y(!t)}},r.createElement("div",{className:d.collapsibleContent},n)))}const g={details:"details_b_Ee"},y="alert alert--info";function b(t){let{...e}=t;return r.createElement(m,(0,a.Z)({},e,{className:(0,c.Z)(y,g.details,e.className)}))}var x=n(2503);function v(t){return r.createElement(x.Z,t)}const _={containsTaskList:"containsTaskList_mC6p"};const k={img:"img_ev3q"};var T=n(7083);function w(t){let{children:e,fallback:n}=t;return(0,u.Z)()?r.createElement(r.Fragment,null,e?.()):n??null}var S=n(6668),E=n(2949),C=n(6432);const D="docusaurus-mermaid-container";function A(){const{colorMode:t}=(0,E.I)(),e=(0,S.L)().mermaid,n=e.theme[t],{options:i}=e;return(0,r.useMemo)((()=>({startOnLoad:!1,...i,theme:n})),[n,i])}const O={container:"container_lyt7"};function I(t){let{value:e}=t;const n=function(t,e){const n=A(),i=e??n;return(0,r.useMemo)((()=>{C.o.mermaidAPI.initialize(i);const e=`mermaid-svg-${Math.round(1e7*Math.random())}`;return C.o.render(e,t)}),[t,i])}(e);return r.createElement("div",{className:`${D} ${O.container}`,dangerouslySetInnerHTML:{__html:n}})}const L={head:function(t){const e=r.Children.map(t.children,(t=>r.isValidElement(t)?function(t){if(t.props?.mdxType&&t.props.originalType){const{mdxType:e,originalType:n,...i}=t.props;return r.createElement(t.props.originalType,i)}return t}(t):t));return r.createElement(s.Z,t,e)},code:function(t){const e=["a","abbr","b","br","button","cite","code","del","dfn","em","i","img","input","ins","kbd","label","object","output","q","ruby","s","small","span","strong","sub","sup","time","u","var","wbr"];return r.Children.toArray(t.children).every((t=>"string"==typeof t&&!t.includes("\n")||(0,r.isValidElement)(t)&&e.includes(t.props?.mdxType)))?r.createElement("code",t):r.createElement(o.Z,t)},a:function(t){return r.createElement(l.Z,t)},pre:function(t){return r.createElement(o.Z,(0,r.isValidElement)(t.children)&&"code"===t.children.props?.originalType?t.children.props:{...t})},details:function(t){const e=r.Children.toArray(t.children),n=e.find((t=>r.isValidElement(t)&&"summary"===t.props?.mdxType)),i=r.createElement(r.Fragment,null,e.filter((t=>t!==n)));return r.createElement(b,(0,a.Z)({},t,{summary:n}),i)},ul:function(t){return r.createElement("ul",(0,a.Z)({},t,{className:(e=t.className,(0,c.Z)(e,e?.includes("contains-task-list")&&_.containsTaskList))}));var e},img:function(t){return r.createElement("img",(0,a.Z)({loading:"lazy"},t,{className:(e=t.className,(0,c.Z)(e,k.img))}));var e},h1:t=>r.createElement(v,(0,a.Z)({as:"h1"},t)),h2:t=>r.createElement(v,(0,a.Z)({as:"h2"},t)),h3:t=>r.createElement(v,(0,a.Z)({as:"h3"},t)),h4:t=>r.createElement(v,(0,a.Z)({as:"h4"},t)),h5:t=>r.createElement(v,(0,a.Z)({as:"h5"},t)),h6:t=>r.createElement(v,(0,a.Z)({as:"h6"},t)),admonition:T.Z,mermaid:function(t){return r.createElement(w,null,(()=>r.createElement(I,t)))}};function N(t){let{children:e}=t;return r.createElement(i.Zo,{components:L},e)}},9407:(t,e,n)=>{"use strict";n.d(e,{Z:()=>u});var r=n(7462),i=n(7294),a=n(6010),s=n(3743);const o={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},l="table-of-contents__link toc-highlight",c="table-of-contents__link--active";function u(t){let{className:e,...n}=t;return i.createElement("div",{className:(0,a.Z)(o.tableOfContents,"thin-scrollbar",e)},i.createElement(s.Z,(0,r.Z)({},n,{linkClassName:l,linkActiveClassName:c})))}},3743:(t,e,n)=>{"use strict";n.d(e,{Z:()=>f});var r=n(7462),i=n(7294),a=n(6668);function s(t){const e=t.map((t=>({...t,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);e.forEach(((t,e)=>{const r=n.slice(2,t.level);t.parentIndex=Math.max(...r),n[t.level]=e}));const r=[];return e.forEach((t=>{const{parentIndex:n,...i}=t;n>=0?e[n].children.push(i):r.push(i)})),r}function o(t){let{toc:e,minHeadingLevel:n,maxHeadingLevel:r}=t;return e.flatMap((t=>{const e=o({toc:t.children,minHeadingLevel:n,maxHeadingLevel:r});return function(t){return t.level>=n&&t.level<=r}(t)?[{...t,children:e}]:e}))}function l(t){const e=t.getBoundingClientRect();return e.top===e.bottom?l(t.parentNode):e}function c(t,e){let{anchorTopOffset:n}=e;const r=t.find((t=>l(t).top>=n));if(r){return function(t){return t.top>0&&t.bottom<window.innerHeight/2}(l(r))?r:t[t.indexOf(r)-1]??null}return t[t.length-1]??null}function u(){const t=(0,i.useRef)(0),{navbar:{hideOnScroll:e}}=(0,a.L)();return(0,i.useEffect)((()=>{t.current=e?0:document.querySelector(".navbar").clientHeight}),[e]),t}function h(t){const e=(0,i.useRef)(void 0),n=u();(0,i.useEffect)((()=>{if(!t)return()=>{};const{linkClassName:r,linkActiveClassName:i,minHeadingLevel:a,maxHeadingLevel:s}=t;function o(){const t=function(t){return Array.from(document.getElementsByClassName(t))}(r),o=function(t){let{minHeadingLevel:e,maxHeadingLevel:n}=t;const r=[];for(let i=e;i<=n;i+=1)r.push(`h${i}.anchor`);return Array.from(document.querySelectorAll(r.join()))}({minHeadingLevel:a,maxHeadingLevel:s}),l=c(o,{anchorTopOffset:n.current}),u=t.find((t=>l&&l.id===function(t){return decodeURIComponent(t.href.substring(t.href.indexOf("#")+1))}(t)));t.forEach((t=>{!function(t,n){n?(e.current&&e.current!==t&&e.current.classList.remove(i),t.classList.add(i),e.current=t):t.classList.remove(i)}(t,t===u)}))}return document.addEventListener("scroll",o),document.addEventListener("resize",o),o(),()=>{document.removeEventListener("scroll",o),document.removeEventListener("resize",o)}}),[t,n])}function d(t){let{toc:e,className:n,linkClassName:r,isChild:a}=t;return e.length?i.createElement("ul",{className:a?void 0:n},e.map((t=>i.createElement("li",{key:t.id},i.createElement("a",{href:`#${t.id}`,className:r??void 0,dangerouslySetInnerHTML:{__html:t.value}}),i.createElement(d,{isChild:!0,toc:t.children,className:n,linkClassName:r}))))):null}const p=i.memo(d);function f(t){let{toc:e,className:n="table-of-contents table-of-contents__left-border",linkClassName:l="table-of-contents__link",linkActiveClassName:c,minHeadingLevel:u,maxHeadingLevel:d,...f}=t;const m=(0,a.L)(),g=u??m.tableOfContents.minHeadingLevel,y=d??m.tableOfContents.maxHeadingLevel,b=function(t){let{toc:e,minHeadingLevel:n,maxHeadingLevel:r}=t;return(0,i.useMemo)((()=>o({toc:s(e),minHeadingLevel:n,maxHeadingLevel:r})),[e,n,r])}({toc:e,minHeadingLevel:g,maxHeadingLevel:y});return h((0,i.useMemo)((()=>{if(l&&c)return{linkClassName:l,linkActiveClassName:c,minHeadingLevel:g,maxHeadingLevel:y}}),[l,c,g,y])),i.createElement(p,(0,r.Z)({toc:b,className:n,linkClassName:l},f))}},6412:(t,e,n)=>{"use strict";n.d(e,{p:()=>a});var r=n(2949),i=n(6668);function a(){const{prism:t}=(0,i.L)(),{colorMode:e}=(0,r.I)(),n=t.theme,a=t.darkTheme||n;return"dark"===e?a:n}},7016:(t,e,n)=>{"use strict";n.d(e,{QC:()=>p,Vo:()=>h,bc:()=>c,nZ:()=>d,nt:()=>u});var r=n(7594),i=n.n(r);const a=/title=(?<quote>["'])(?<title>.*?)\1/,s=/\{(?<range>[\d,-]+)\}/,o={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function l(t,e){const n=t.map((t=>{const{start:n,end:r}=o[t];return`(?:${n}\\s*(${e.flatMap((t=>[t.line,t.block?.start,t.block?.end].filter(Boolean))).join("|")})\\s*${r})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function c(t){return t?.match(a)?.groups.title??""}function u(t){return Boolean(t?.includes("showLineNumbers"))}function h(t){const e=t.split(" ").find((t=>t.startsWith("language-")));return e?.replace(/language-/,"")}function d(t,e){let n=t.replace(/\n$/,"");const{language:r,magicComments:a,metastring:c}=e;if(c&&s.test(c)){const t=c.match(s).groups.range;if(0===a.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${c}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const e=a[0].className,r=i()(t).filter((t=>t>0)).map((t=>[t-1,[e]]));return{lineClassNames:Object.fromEntries(r),code:n}}if(void 0===r)return{lineClassNames:{},code:n};const u=function(t,e){switch(t){case"js":case"javascript":case"ts":case"typescript":return l(["js","jsBlock"],e);case"jsx":case"tsx":return l(["js","jsBlock","jsx"],e);case"html":return l(["js","jsBlock","html"],e);case"python":case"py":case"bash":return l(["bash"],e);case"markdown":case"md":return l(["html","jsx","bash"],e);default:return l(Object.keys(o),e)}}(r,a),h=n.split("\n"),d=Object.fromEntries(a.map((t=>[t.className,{start:0,range:""}]))),p=Object.fromEntries(a.filter((t=>t.line)).map((t=>{let{className:e,line:n}=t;return[n,e]}))),f=Object.fromEntries(a.filter((t=>t.block)).map((t=>{let{className:e,block:n}=t;return[n.start,e]}))),m=Object.fromEntries(a.filter((t=>t.block)).map((t=>{let{className:e,block:n}=t;return[n.end,e]})));for(let i=0;i<h.length;){const t=h[i].match(u);if(!t){i+=1;continue}const e=t.slice(1).find((t=>void 0!==t));p[e]?d[p[e]].range+=`${i},`:f[e]?d[f[e]].start=i:m[e]&&(d[m[e]].range+=`${d[m[e]].start}-${i-1},`),h.splice(i,1)}n=h.join("\n");const g={};return Object.entries(d).forEach((t=>{let[e,{range:n}]=t;i()(n).forEach((t=>{g[t]??=[],g[t].push(e)}))})),{lineClassNames:g,code:n}}function p(t){const e={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(t.plain).forEach((t=>{let[r,i]=t;const a=e[r];a&&"string"==typeof i&&(n[a]=i)})),n}},7484:function(t){t.exports=function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",a="minute",s="hour",o="day",l="week",c="month",u="quarter",h="year",d="date",p="Invalid Date",f=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,m=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},y=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},b={s:y,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+y(r,2,"0")+":"+y(i,2,"0")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),a=n-i<0,s=e.clone().add(r+(a?-1:1),c);return+(-(r+(n-i)/(a?i-s:s-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:l,d:o,D:d,h:s,m:a,s:i,ms:r,Q:u}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},x="en",v={};v[x]=g;var _=function(t){return t instanceof S},k=function t(e,n,r){var i;if(!e)return x;if("string"==typeof e){var a=e.toLowerCase();v[a]&&(i=a),n&&(v[a]=n,i=a);var s=e.split("-");if(!i&&s.length>1)return t(s[0])}else{var o=e.name;v[o]=e,i=o}return!r&&i&&(x=i),i||!r&&x},T=function(t,e){if(_(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new S(n)},w=b;w.l=k,w.i=_,w.w=function(t,e){return T(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var S=function(){function g(t){this.$L=k(t.locale,null,!0),this.parse(t)}var y=g.prototype;return y.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(w.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match(f);if(r){var i=r[2]-1||0,a=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},y.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},y.$utils=function(){return w},y.isValid=function(){return!(this.$d.toString()===p)},y.isSame=function(t,e){var n=T(t);return this.startOf(e)<=n&&n<=this.endOf(e)},y.isAfter=function(t,e){return T(t)<this.startOf(e)},y.isBefore=function(t,e){return this.endOf(e)<T(t)},y.$g=function(t,e,n){return w.u(t)?this[e]:this.set(n,t)},y.unix=function(){return Math.floor(this.valueOf()/1e3)},y.valueOf=function(){return this.$d.getTime()},y.startOf=function(t,e){var n=this,r=!!w.u(e)||e,u=w.p(t),p=function(t,e){var i=w.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(o)},f=function(t,e){return w.w(n.toDate()[t].apply(n.toDate("s"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},m=this.$W,g=this.$M,y=this.$D,b="set"+(this.$u?"UTC":"");switch(u){case h:return r?p(1,0):p(31,11);case c:return r?p(1,g):p(0,g+1);case l:var x=this.$locale().weekStart||0,v=(m<x?m+7:m)-x;return p(r?y-v:y+(6-v),g);case o:case d:return f(b+"Hours",0);case s:return f(b+"Minutes",1);case a:return f(b+"Seconds",2);case i:return f(b+"Milliseconds",3);default:return this.clone()}},y.endOf=function(t){return this.startOf(t,!1)},y.$set=function(t,e){var n,l=w.p(t),u="set"+(this.$u?"UTC":""),p=(n={},n[o]=u+"Date",n[d]=u+"Date",n[c]=u+"Month",n[h]=u+"FullYear",n[s]=u+"Hours",n[a]=u+"Minutes",n[i]=u+"Seconds",n[r]=u+"Milliseconds",n)[l],f=l===o?this.$D+(e-this.$W):e;if(l===c||l===h){var m=this.clone().set(d,1);m.$d[p](f),m.init(),this.$d=m.set(d,Math.min(this.$D,m.daysInMonth())).$d}else p&&this.$d[p](f);return this.init(),this},y.set=function(t,e){return this.clone().$set(t,e)},y.get=function(t){return this[w.p(t)]()},y.add=function(r,u){var d,p=this;r=Number(r);var f=w.p(u),m=function(t){var e=T(p);return w.w(e.date(e.date()+Math.round(t*r)),p)};if(f===c)return this.set(c,this.$M+r);if(f===h)return this.set(h,this.$y+r);if(f===o)return m(1);if(f===l)return m(7);var g=(d={},d[a]=e,d[s]=n,d[i]=t,d)[f]||1,y=this.$d.getTime()+r*g;return w.w(y,this)},y.subtract=function(t,e){return this.add(-1*t,e)},y.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||p;var r=t||"YYYY-MM-DDTHH:mm:ssZ",i=w.z(this),a=this.$H,s=this.$m,o=this.$M,l=n.weekdays,c=n.months,u=function(t,n,i,a){return t&&(t[n]||t(e,r))||i[n].slice(0,a)},h=function(t){return w.s(a%12||12,t,"0")},d=n.meridiem||function(t,e,n){var r=t<12?"AM":"PM";return n?r.toLowerCase():r},f={YY:String(this.$y).slice(-2),YYYY:this.$y,M:o+1,MM:w.s(o+1,2,"0"),MMM:u(n.monthsShort,o,c,3),MMMM:u(c,o),D:this.$D,DD:w.s(this.$D,2,"0"),d:String(this.$W),dd:u(n.weekdaysMin,this.$W,l,2),ddd:u(n.weekdaysShort,this.$W,l,3),dddd:l[this.$W],H:String(a),HH:w.s(a,2,"0"),h:h(1),hh:h(2),a:d(a,s,!0),A:d(a,s,!1),m:String(s),mm:w.s(s,2,"0"),s:String(this.$s),ss:w.s(this.$s,2,"0"),SSS:w.s(this.$ms,3,"0"),Z:i};return r.replace(m,(function(t,e){return e||f[t]||i.replace(":","")}))},y.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},y.diff=function(r,d,p){var f,m=w.p(d),g=T(r),y=(g.utcOffset()-this.utcOffset())*e,b=this-g,x=w.m(this,g);return x=(f={},f[h]=x/12,f[c]=x,f[u]=x/3,f[l]=(b-y)/6048e5,f[o]=(b-y)/864e5,f[s]=b/n,f[a]=b/e,f[i]=b/t,f)[m]||b,p?x:w.a(x)},y.daysInMonth=function(){return this.endOf(c).$D},y.$locale=function(){return v[this.$L]},y.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=k(t,e,!0);return r&&(n.$L=r),n},y.clone=function(){return w.w(this.$d,this)},y.toDate=function(){return new Date(this.valueOf())},y.toJSON=function(){return this.isValid()?this.toISOString():null},y.toISOString=function(){return this.$d.toISOString()},y.toString=function(){return this.$d.toUTCString()},g}(),E=S.prototype;return T.prototype=E,[["$ms",r],["$s",i],["$m",a],["$H",s],["$W",o],["$M",c],["$y",h],["$D",d]].forEach((function(t){E[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),T.extend=function(t,e){return t.$i||(t(e,S,T),t.$i=!0),T},T.locale=k,T.isDayjs=_,T.unix=function(t){return T(1e3*t)},T.en=v[x],T.Ls=v,T.p={},T}()},8734:function(t){t.exports=function(){"use strict";return function(t,e){var n=e.prototype,r=n.format;n.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return r.bind(this)(t);var i=this.$utils(),a=(t||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(t){switch(t){case"Q":return Math.ceil((e.$M+1)/3);case"Do":return n.ordinal(e.$D);case"gggg":return e.weekYear();case"GGGG":return e.isoWeekYear();case"wo":return n.ordinal(e.week(),"W");case"w":case"ww":return i.s(e.week(),"w"===t?1:2,"0");case"W":case"WW":return i.s(e.isoWeek(),"W"===t?1:2,"0");case"k":case"kk":return i.s(String(0===e.$H?24:e.$H),"k"===t?1:2,"0");case"X":return Math.floor(e.$d.getTime()/1e3);case"x":return e.$d.getTime();case"z":return"["+e.offsetName()+"]";case"zzz":return"["+e.offsetName("long")+"]";default:return t}}));return r.bind(this)(a)}}}()},285:function(t){t.exports=function(){"use strict";var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},e=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d\d/,r=/\d\d?/,i=/\d*[^-_:/,()\s\d]+/,a={},s=function(t){return(t=+t)+(t>68?1900:2e3)},o=function(t){return function(e){this[t]=+e}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(t){(this.zone||(this.zone={})).offset=function(t){if(!t)return 0;if("Z"===t)return 0;var e=t.match(/([+-]|\d\d)/g),n=60*e[1]+(+e[2]||0);return 0===n?0:"+"===e[0]?-n:n}(t)}],c=function(t){var e=a[t];return e&&(e.indexOf?e:e.s.concat(e.f))},u=function(t,e){var n,r=a.meridiem;if(r){for(var i=1;i<=24;i+=1)if(t.indexOf(r(i,0,e))>-1){n=i>12;break}}else n=t===(e?"pm":"PM");return n},h={A:[i,function(t){this.afternoon=u(t,!1)}],a:[i,function(t){this.afternoon=u(t,!0)}],S:[/\d/,function(t){this.milliseconds=100*+t}],SS:[n,function(t){this.milliseconds=10*+t}],SSS:[/\d{3}/,function(t){this.milliseconds=+t}],s:[r,o("seconds")],ss:[r,o("seconds")],m:[r,o("minutes")],mm:[r,o("minutes")],H:[r,o("hours")],h:[r,o("hours")],HH:[r,o("hours")],hh:[r,o("hours")],D:[r,o("day")],DD:[n,o("day")],Do:[i,function(t){var e=a.ordinal,n=t.match(/\d+/);if(this.day=n[0],e)for(var r=1;r<=31;r+=1)e(r).replace(/\[|\]/g,"")===t&&(this.day=r)}],M:[r,o("month")],MM:[n,o("month")],MMM:[i,function(t){var e=c("months"),n=(c("monthsShort")||e.map((function(t){return t.slice(0,3)}))).indexOf(t)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(t){var e=c("months").indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e}],Y:[/[+-]?\d+/,o("year")],YY:[n,function(t){this.year=s(t)}],YYYY:[/\d{4}/,o("year")],Z:l,ZZ:l};function d(n){var r,i;r=n,i=a&&a.formats;for(var s=(n=r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(e,n,r){var a=r&&r.toUpperCase();return n||i[r]||t[r]||i[a].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(t,e,n){return e||n.slice(1)}))}))).match(e),o=s.length,l=0;l<o;l+=1){var c=s[l],u=h[c],d=u&&u[0],p=u&&u[1];s[l]=p?{regex:d,parser:p}:c.replace(/^\[|\]$/g,"")}return function(t){for(var e={},n=0,r=0;n<o;n+=1){var i=s[n];if("string"==typeof i)r+=i.length;else{var a=i.regex,l=i.parser,c=t.slice(r),u=a.exec(c)[0];l.call(e,u),t=t.replace(u,"")}}return function(t){var e=t.afternoon;if(void 0!==e){var n=t.hours;e?n<12&&(t.hours+=12):12===n&&(t.hours=0),delete t.afternoon}}(e),e}}return function(t,e,n){n.p.customParseFormat=!0,t&&t.parseTwoDigitYear&&(s=t.parseTwoDigitYear);var r=e.prototype,i=r.parse;r.parse=function(t){var e=t.date,r=t.utc,s=t.args;this.$u=r;var o=s[1];if("string"==typeof o){var l=!0===s[2],c=!0===s[3],u=l||c,h=s[2];c&&(h=s[2]),a=this.$locale(),!l&&h&&(a=n.Ls[h]),this.$d=function(t,e,n){try{if(["x","X"].indexOf(e)>-1)return new Date(("X"===e?1e3:1)*t);var r=d(e)(t),i=r.year,a=r.month,s=r.day,o=r.hours,l=r.minutes,c=r.seconds,u=r.milliseconds,h=r.zone,p=new Date,f=s||(i||a?1:p.getDate()),m=i||p.getFullYear(),g=0;i&&!a||(g=a>0?a-1:p.getMonth());var y=o||0,b=l||0,x=c||0,v=u||0;return h?new Date(Date.UTC(m,g,f,y,b,x,v+60*h.offset*1e3)):n?new Date(Date.UTC(m,g,f,y,b,x,v)):new Date(m,g,f,y,b,x,v)}catch(t){return new Date("")}}(e,o,r),this.init(),h&&!0!==h&&(this.$L=this.locale(h).$L),u&&e!=this.format(o)&&(this.$d=new Date("")),a={}}else if(o instanceof Array)for(var p=o.length,f=1;f<=p;f+=1){s[1]=o[f-1];var m=n.apply(this,s);if(m.isValid()){this.$d=m.$d,this.$L=m.$L,this.init();break}f===p&&(this.$d=new Date(""))}else i.call(this,t)}}}()},9542:function(t){t.exports=function(){"use strict";var t="day";return function(e,n,r){var i=function(e){return e.add(4-e.isoWeekday(),t)},a=n.prototype;a.isoWeekYear=function(){return i(this).year()},a.isoWeek=function(e){if(!this.$utils().u(e))return this.add(7*(e-this.isoWeek()),t);var n,a,s,o=i(this),l=(n=this.isoWeekYear(),s=4-(a=(this.$u?r.utc:r)().year(n).startOf("year")).isoWeekday(),a.isoWeekday()>4&&(s+=7),a.add(s,t));return o.diff(l,"week")+1},a.isoWeekday=function(t){return this.$utils().u(t)?this.day()||7:this.day(this.day()%7?t:t-7)};var s=a.startOf;a.startOf=function(t,e){var n=this.$utils(),r=!!n.u(e)||e;return"isoweek"===n.p(t)?r?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):s.bind(this)(t,e)}}}()},7856:function(t){t.exports=function(){"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,n){return e=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},e(t,n)}function n(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function r(t,i,a){return r=n()?Reflect.construct:function(t,n,r){var i=[null];i.push.apply(i,n);var a=new(Function.bind.apply(t,i));return r&&e(a,r.prototype),a},r.apply(null,arguments)}function i(t){return a(t)||s(t)||o(t)||c()}function a(t){if(Array.isArray(t))return l(t)}function s(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function o(t,e){if(t){if("string"==typeof t)return l(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(t,e):void 0}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function c(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u=Object.hasOwnProperty,h=Object.setPrototypeOf,d=Object.isFrozen,p=Object.getPrototypeOf,f=Object.getOwnPropertyDescriptor,m=Object.freeze,g=Object.seal,y=Object.create,b="undefined"!=typeof Reflect&&Reflect,x=b.apply,v=b.construct;x||(x=function(t,e,n){return t.apply(e,n)}),m||(m=function(t){return t}),g||(g=function(t){return t}),v||(v=function(t,e){return r(t,i(e))});var _=L(Array.prototype.forEach),k=L(Array.prototype.pop),T=L(Array.prototype.push),w=L(String.prototype.toLowerCase),S=L(String.prototype.toString),E=L(String.prototype.match),C=L(String.prototype.replace),D=L(String.prototype.indexOf),A=L(String.prototype.trim),O=L(RegExp.prototype.test),I=N(TypeError);function L(t){return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return x(t,e,r)}}function N(t){return function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return v(t,n)}}function M(t,e,n){n=n||w,h&&h(t,null);for(var r=e.length;r--;){var i=e[r];if("string"==typeof i){var a=n(i);a!==i&&(d(e)||(e[r]=a),i=a)}t[i]=!0}return t}function F(t){var e,n=y(null);for(e in t)!0===x(u,t,[e])&&(n[e]=t[e]);return n}function B(t,e){for(;null!==t;){var n=f(t,e);if(n){if(n.get)return L(n.get);if("function"==typeof n.value)return L(n.value)}t=p(t)}function r(t){return console.warn("fallback value for",t),null}return r}var R=m(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),$=m(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Z=m(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),j=m(["animate","color-profile","cursor","discard","fedropshadow","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),P=m(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"]),z=m(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Y=m(["#text"]),U=m(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),W=m(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),H=m(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),q=m(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),V=g(/\{\{[\w\W]*|[\w\W]*\}\}/gm),G=g(/<%[\w\W]*|[\w\W]*%>/gm),X=g(/\${[\w\W]*}/gm),K=g(/^data-[\-\w.\u00B7-\uFFFF]/),Q=g(/^aria-[\-\w]+$/),J=g(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),tt=g(/^(?:\w+script|data):/i),et=g(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),nt=g(/^html$/i),rt=function(){return"undefined"==typeof window?null:window},it=function(e,n){if("object"!==t(e)||"function"!=typeof e.createPolicy)return null;var r=null,i="data-tt-policy-suffix";n.currentScript&&n.currentScript.hasAttribute(i)&&(r=n.currentScript.getAttribute(i));var a="dompurify"+(r?"#"+r:"");try{return e.createPolicy(a,{createHTML:function(t){return t},createScriptURL:function(t){return t}})}catch(s){return console.warn("TrustedTypes policy "+a+" could not be created."),null}};function at(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:rt(),n=function(t){return at(t)};if(n.version="2.4.3",n.removed=[],!e||!e.document||9!==e.document.nodeType)return n.isSupported=!1,n;var r=e.document,a=e.document,s=e.DocumentFragment,o=e.HTMLTemplateElement,l=e.Node,c=e.Element,u=e.NodeFilter,h=e.NamedNodeMap,d=void 0===h?e.NamedNodeMap||e.MozNamedAttrMap:h,p=e.HTMLFormElement,f=e.DOMParser,g=e.trustedTypes,y=c.prototype,b=B(y,"cloneNode"),x=B(y,"nextSibling"),v=B(y,"childNodes"),L=B(y,"parentNode");if("function"==typeof o){var N=a.createElement("template");N.content&&N.content.ownerDocument&&(a=N.content.ownerDocument)}var st=it(g,r),ot=st?st.createHTML(""):"",lt=a,ct=lt.implementation,ut=lt.createNodeIterator,ht=lt.createDocumentFragment,dt=lt.getElementsByTagName,pt=r.importNode,ft={};try{ft=F(a).documentMode?a.documentMode:{}}catch(Le){}var mt={};n.isSupported="function"==typeof L&&ct&&void 0!==ct.createHTMLDocument&&9!==ft;var gt,yt,bt=V,xt=G,vt=X,_t=K,kt=Q,Tt=tt,wt=et,St=J,Et=null,Ct=M({},[].concat(i(R),i($),i(Z),i(P),i(Y))),Dt=null,At=M({},[].concat(i(U),i(W),i(H),i(q))),Ot=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),It=null,Lt=null,Nt=!0,Mt=!0,Ft=!1,Bt=!1,Rt=!1,$t=!1,Zt=!1,jt=!1,Pt=!1,zt=!1,Yt=!0,Ut=!1,Wt="user-content-",Ht=!0,qt=!1,Vt={},Gt=null,Xt=M({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Kt=null,Qt=M({},["audio","video","img","source","image","track"]),Jt=null,te=M({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),ee="http://www.w3.org/1998/Math/MathML",ne="http://www.w3.org/2000/svg",re="http://www.w3.org/1999/xhtml",ie=re,ae=!1,se=null,oe=M({},[ee,ne,re],S),le=["application/xhtml+xml","text/html"],ce="text/html",ue=null,he=a.createElement("form"),de=function(t){return t instanceof RegExp||t instanceof Function},pe=function(e){ue&&ue===e||(e&&"object"===t(e)||(e={}),e=F(e),gt=gt=-1===le.indexOf(e.PARSER_MEDIA_TYPE)?ce:e.PARSER_MEDIA_TYPE,yt="application/xhtml+xml"===gt?S:w,Et="ALLOWED_TAGS"in e?M({},e.ALLOWED_TAGS,yt):Ct,Dt="ALLOWED_ATTR"in e?M({},e.ALLOWED_ATTR,yt):At,se="ALLOWED_NAMESPACES"in e?M({},e.ALLOWED_NAMESPACES,S):oe,Jt="ADD_URI_SAFE_ATTR"in e?M(F(te),e.ADD_URI_SAFE_ATTR,yt):te,Kt="ADD_DATA_URI_TAGS"in e?M(F(Qt),e.ADD_DATA_URI_TAGS,yt):Qt,Gt="FORBID_CONTENTS"in e?M({},e.FORBID_CONTENTS,yt):Xt,It="FORBID_TAGS"in e?M({},e.FORBID_TAGS,yt):{},Lt="FORBID_ATTR"in e?M({},e.FORBID_ATTR,yt):{},Vt="USE_PROFILES"in e&&e.USE_PROFILES,Nt=!1!==e.ALLOW_ARIA_ATTR,Mt=!1!==e.ALLOW_DATA_ATTR,Ft=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Bt=e.SAFE_FOR_TEMPLATES||!1,Rt=e.WHOLE_DOCUMENT||!1,jt=e.RETURN_DOM||!1,Pt=e.RETURN_DOM_FRAGMENT||!1,zt=e.RETURN_TRUSTED_TYPE||!1,Zt=e.FORCE_BODY||!1,Yt=!1!==e.SANITIZE_DOM,Ut=e.SANITIZE_NAMED_PROPS||!1,Ht=!1!==e.KEEP_CONTENT,qt=e.IN_PLACE||!1,St=e.ALLOWED_URI_REGEXP||St,ie=e.NAMESPACE||re,e.CUSTOM_ELEMENT_HANDLING&&de(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ot.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&de(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Ot.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Ot.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Bt&&(Mt=!1),Pt&&(jt=!0),Vt&&(Et=M({},i(Y)),Dt=[],!0===Vt.html&&(M(Et,R),M(Dt,U)),!0===Vt.svg&&(M(Et,$),M(Dt,W),M(Dt,q)),!0===Vt.svgFilters&&(M(Et,Z),M(Dt,W),M(Dt,q)),!0===Vt.mathMl&&(M(Et,P),M(Dt,H),M(Dt,q))),e.ADD_TAGS&&(Et===Ct&&(Et=F(Et)),M(Et,e.ADD_TAGS,yt)),e.ADD_ATTR&&(Dt===At&&(Dt=F(Dt)),M(Dt,e.ADD_ATTR,yt)),e.ADD_URI_SAFE_ATTR&&M(Jt,e.ADD_URI_SAFE_ATTR,yt),e.FORBID_CONTENTS&&(Gt===Xt&&(Gt=F(Gt)),M(Gt,e.FORBID_CONTENTS,yt)),Ht&&(Et["#text"]=!0),Rt&&M(Et,["html","head","body"]),Et.table&&(M(Et,["tbody"]),delete It.tbody),m&&m(e),ue=e)},fe=M({},["mi","mo","mn","ms","mtext"]),me=M({},["foreignobject","desc","title","annotation-xml"]),ge=M({},["title","style","font","a","script"]),ye=M({},$);M(ye,Z),M(ye,j);var be=M({},P);M(be,z);var xe=function(t){var e=L(t);e&&e.tagName||(e={namespaceURI:ie,tagName:"template"});var n=w(t.tagName),r=w(e.tagName);return!!se[t.namespaceURI]&&(t.namespaceURI===ne?e.namespaceURI===re?"svg"===n:e.namespaceURI===ee?"svg"===n&&("annotation-xml"===r||fe[r]):Boolean(ye[n]):t.namespaceURI===ee?e.namespaceURI===re?"math"===n:e.namespaceURI===ne?"math"===n&&me[r]:Boolean(be[n]):t.namespaceURI===re?!(e.namespaceURI===ne&&!me[r])&&!(e.namespaceURI===ee&&!fe[r])&&!be[n]&&(ge[n]||!ye[n]):!("application/xhtml+xml"!==gt||!se[t.namespaceURI]))},ve=function(t){T(n.removed,{element:t});try{t.parentNode.removeChild(t)}catch(Le){try{t.outerHTML=ot}catch(Le){t.remove()}}},_e=function(t,e){try{T(n.removed,{attribute:e.getAttributeNode(t),from:e})}catch(Le){T(n.removed,{attribute:null,from:e})}if(e.removeAttribute(t),"is"===t&&!Dt[t])if(jt||Pt)try{ve(e)}catch(Le){}else try{e.setAttribute(t,"")}catch(Le){}},ke=function(t){var e,n;if(Zt)t="<remove></remove>"+t;else{var r=E(t,/^[\r\n\t ]+/);n=r&&r[0]}"application/xhtml+xml"===gt&&ie===re&&(t='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+t+"</body></html>");var i=st?st.createHTML(t):t;if(ie===re)try{e=(new f).parseFromString(i,gt)}catch(Le){}if(!e||!e.documentElement){e=ct.createDocument(ie,"template",null);try{e.documentElement.innerHTML=ae?ot:i}catch(Le){}}var s=e.body||e.documentElement;return t&&n&&s.insertBefore(a.createTextNode(n),s.childNodes[0]||null),ie===re?dt.call(e,Rt?"html":"body")[0]:Rt?e.documentElement:s},Te=function(t){return ut.call(t.ownerDocument||t,t,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT,null,!1)},we=function(t){return t instanceof p&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||!(t.attributes instanceof d)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore||"function"!=typeof t.hasChildNodes)},Se=function(e){return"object"===t(l)?e instanceof l:e&&"object"===t(e)&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},Ee=function(t,e,r){mt[t]&&_(mt[t],(function(t){t.call(n,e,r,ue)}))},Ce=function(t){var e;if(Ee("beforeSanitizeElements",t,null),we(t))return ve(t),!0;if(O(/[\u0080-\uFFFF]/,t.nodeName))return ve(t),!0;var r=yt(t.nodeName);if(Ee("uponSanitizeElement",t,{tagName:r,allowedTags:Et}),t.hasChildNodes()&&!Se(t.firstElementChild)&&(!Se(t.content)||!Se(t.content.firstElementChild))&&O(/<[/\w]/g,t.innerHTML)&&O(/<[/\w]/g,t.textContent))return ve(t),!0;if("select"===r&&O(/<template/i,t.innerHTML))return ve(t),!0;if(!Et[r]||It[r]){if(!It[r]&&Ae(r)){if(Ot.tagNameCheck instanceof RegExp&&O(Ot.tagNameCheck,r))return!1;if(Ot.tagNameCheck instanceof Function&&Ot.tagNameCheck(r))return!1}if(Ht&&!Gt[r]){var i=L(t)||t.parentNode,a=v(t)||t.childNodes;if(a&&i)for(var s=a.length-1;s>=0;--s)i.insertBefore(b(a[s],!0),x(t))}return ve(t),!0}return t instanceof c&&!xe(t)?(ve(t),!0):"noscript"!==r&&"noembed"!==r||!O(/<\/no(script|embed)/i,t.innerHTML)?(Bt&&3===t.nodeType&&(e=t.textContent,e=C(e,bt," "),e=C(e,xt," "),e=C(e,vt," "),t.textContent!==e&&(T(n.removed,{element:t.cloneNode()}),t.textContent=e)),Ee("afterSanitizeElements",t,null),!1):(ve(t),!0)},De=function(t,e,n){if(Yt&&("id"===e||"name"===e)&&(n in a||n in he))return!1;if(Mt&&!Lt[e]&&O(_t,e));else if(Nt&&O(kt,e));else if(!Dt[e]||Lt[e]){if(!(Ae(t)&&(Ot.tagNameCheck instanceof RegExp&&O(Ot.tagNameCheck,t)||Ot.tagNameCheck instanceof Function&&Ot.tagNameCheck(t))&&(Ot.attributeNameCheck instanceof RegExp&&O(Ot.attributeNameCheck,e)||Ot.attributeNameCheck instanceof Function&&Ot.attributeNameCheck(e))||"is"===e&&Ot.allowCustomizedBuiltInElements&&(Ot.tagNameCheck instanceof RegExp&&O(Ot.tagNameCheck,n)||Ot.tagNameCheck instanceof Function&&Ot.tagNameCheck(n))))return!1}else if(Jt[e]);else if(O(St,C(n,wt,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==D(n,"data:")||!Kt[t])if(Ft&&!O(Tt,C(n,wt,"")));else if(n)return!1;return!0},Ae=function(t){return t.indexOf("-")>0},Oe=function(e){var r,i,a,s;Ee("beforeSanitizeAttributes",e,null);var o=e.attributes;if(o){var l={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Dt};for(s=o.length;s--;){var c=r=o[s],u=c.name,h=c.namespaceURI;if(i="value"===u?r.value:A(r.value),a=yt(u),l.attrName=a,l.attrValue=i,l.keepAttr=!0,l.forceKeepAttr=void 0,Ee("uponSanitizeAttribute",e,l),i=l.attrValue,!l.forceKeepAttr&&(_e(u,e),l.keepAttr))if(O(/\/>/i,i))_e(u,e);else{Bt&&(i=C(i,bt," "),i=C(i,xt," "),i=C(i,vt," "));var d=yt(e.nodeName);if(De(d,a,i)){if(!Ut||"id"!==a&&"name"!==a||(_e(u,e),i=Wt+i),st&&"object"===t(g)&&"function"==typeof g.getAttributeType)if(h);else switch(g.getAttributeType(d,a)){case"TrustedHTML":i=st.createHTML(i);break;case"TrustedScriptURL":i=st.createScriptURL(i)}try{h?e.setAttributeNS(h,u,i):e.setAttribute(u,i),k(n.removed)}catch(Le){}}}}Ee("afterSanitizeAttributes",e,null)}},Ie=function t(e){var n,r=Te(e);for(Ee("beforeSanitizeShadowDOM",e,null);n=r.nextNode();)Ee("uponSanitizeShadowNode",n,null),Ce(n)||(n.content instanceof s&&t(n.content),Oe(n));Ee("afterSanitizeShadowDOM",e,null)};return n.sanitize=function(i){var a,o,c,u,h,d=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if((ae=!i)&&(i="\x3c!--\x3e"),"string"!=typeof i&&!Se(i)){if("function"!=typeof i.toString)throw I("toString is not a function");if("string"!=typeof(i=i.toString()))throw I("dirty is not a string, aborting")}if(!n.isSupported){if("object"===t(e.toStaticHTML)||"function"==typeof e.toStaticHTML){if("string"==typeof i)return e.toStaticHTML(i);if(Se(i))return e.toStaticHTML(i.outerHTML)}return i}if($t||pe(d),n.removed=[],"string"==typeof i&&(qt=!1),qt){if(i.nodeName){var p=yt(i.nodeName);if(!Et[p]||It[p])throw I("root node is forbidden and cannot be sanitized in-place")}}else if(i instanceof l)1===(o=(a=ke("\x3c!----\x3e")).ownerDocument.importNode(i,!0)).nodeType&&"BODY"===o.nodeName||"HTML"===o.nodeName?a=o:a.appendChild(o);else{if(!jt&&!Bt&&!Rt&&-1===i.indexOf("<"))return st&&zt?st.createHTML(i):i;if(!(a=ke(i)))return jt?null:zt?ot:""}a&&Zt&&ve(a.firstChild);for(var f=Te(qt?i:a);c=f.nextNode();)3===c.nodeType&&c===u||Ce(c)||(c.content instanceof s&&Ie(c.content),Oe(c),u=c);if(u=null,qt)return i;if(jt){if(Pt)for(h=ht.call(a.ownerDocument);a.firstChild;)h.appendChild(a.firstChild);else h=a;return Dt.shadowroot&&(h=pt.call(r,h,!0)),h}var m=Rt?a.outerHTML:a.innerHTML;return Rt&&Et["!doctype"]&&a.ownerDocument&&a.ownerDocument.doctype&&a.ownerDocument.doctype.name&&O(nt,a.ownerDocument.doctype.name)&&(m="<!DOCTYPE "+a.ownerDocument.doctype.name+">\n"+m),Bt&&(m=C(m,bt," "),m=C(m,xt," "),m=C(m,vt," ")),st&&zt?st.createHTML(m):m},n.setConfig=function(t){pe(t),$t=!0},n.clearConfig=function(){ue=null,$t=!1},n.isValidAttribute=function(t,e,n){ue||pe({});var r=yt(t),i=yt(e);return De(r,i,n)},n.addHook=function(t,e){"function"==typeof e&&(mt[t]=mt[t]||[],T(mt[t],e))},n.removeHook=function(t){if(mt[t])return k(mt[t])},n.removeHooks=function(t){mt[t]&&(mt[t]=[])},n.removeAllHooks=function(){mt={}},n}return at()}()},6432:(t,e,n)=>{"use strict";n.d(e,{a:()=>Pn,b:()=>Ys,c:()=>zt,d:()=>Zn,e:()=>jt,f:()=>Gs,g:()=>dr,h:()=>wl,i:()=>ys,j:()=>qr,k:()=>Gr,l:()=>It,m:()=>Zr,n:()=>Bt,o:()=>wp,p:()=>So,s:()=>vr});const r=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];var r=Array.from("string"==typeof t?[t]:t);r[r.length-1]=r[r.length-1].replace(/\r?\n([\t ]*)$/,"");var i=r.reduce((function(t,e){var n=e.match(/\n([\t ]+|(?!\s).)/g);return n?t.concat(n.map((function(t){var e,n;return null!==(n=null===(e=t.match(/[\t ]/g))||void 0===e?void 0:e.length)&&void 0!==n?n:0}))):t}),[]);if(i.length){var a=new RegExp("\n[\t ]{"+Math.min.apply(Math,i)+"}","g");r=r.map((function(t){return t.replace(a,"\n")}))}r[0]=r[0].replace(/^\r?\n/,"");var s=r[0];return e.forEach((function(t,e){var n=s.match(/(?:^|\n)( *)$/),i=n?n[1]:"",a=t;"string"==typeof t&&t.includes("\n")&&(a=String(t).split("\n").map((function(t,e){return 0===e?t:""+i+t})).join("\n")),s+=a+r[e+1]})),s};var i=n(7484),a=n.n(i),s=n(7967),o=n(9373),l=n(7856),u=n.n(l),h=n(1610),d=n(1691);const p=(t,e)=>{const n=h.Z.parse(t);for(const r in e)n[r]=d.Z.channel.clamp[r](e[r]);return h.Z.stringify(n)},f=(t,e)=>{const n=h.Z.parse(t),r={};for(const i in e)e[i]&&(r[i]=n[i]+e[i]);return p(t,r)};var m=n(1883);const g=(t,e,n=0,r=1)=>{if("number"!=typeof t)return p(t,{a:e});const i=m.Z.set({r:d.Z.channel.clamp.r(t),g:d.Z.channel.clamp.g(e),b:d.Z.channel.clamp.b(n),a:d.Z.channel.clamp.a(r)});return h.Z.stringify(i)},y=(t,e,n=50)=>{const{r:r,g:i,b:a,a:s}=h.Z.parse(t),{r:o,g:l,b:c,a:u}=h.Z.parse(e),d=n/100,p=2*d-1,f=s-u,m=((p*f==-1?p:(p+f)/(1+p*f))+1)/2,y=1-m;return g(r*m+o*y,i*m+l*y,a*m+c*y,s*d+u*(1-d))},b=(t,e=100)=>{const n=h.Z.parse(t);return n.r=255-n.r,n.g=255-n.g,n.b=255-n.b,y(n,t,e)};var x=n(7201),v=n(5920),_=n(2454),k="comm",T="rule",w="decl",S=Math.abs,E=String.fromCharCode;Object.assign;function C(t){return t.trim()}function D(t,e,n){return t.replace(e,n)}function A(t,e){return t.indexOf(e)}function O(t,e){return 0|t.charCodeAt(e)}function I(t,e,n){return t.slice(e,n)}function L(t){return t.length}function N(t){return t.length}function M(t,e){return e.push(t),t}function F(t,e){for(var n="",r=N(t),i=0;i<r;i++)n+=e(t[i],i,t,e)||"";return n}function B(t,e,n,r){switch(t.type){case"@import":case w:return t.return=t.return||t.value;case k:return"";case"@keyframes":return t.return=t.value+"{"+F(t.children,r)+"}";case T:t.value=t.props.join(",")}return L(n=F(t.children,r))?t.return=t.value+"{"+n+"}":""}var R=1,$=1,Z=0,j=0,P=0,z="";function Y(t,e,n,r,i,a,s){return{value:t,root:e,parent:n,type:r,props:i,children:a,line:R,column:$,length:s,return:""}}function U(){return P=j>0?O(z,--j):0,$--,10===P&&($=1,R--),P}function W(){return P=j<Z?O(z,j++):0,$++,10===P&&($=1,R++),P}function H(){return O(z,j)}function q(){return j}function V(t,e){return I(z,t,e)}function G(t){switch(t){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function X(t){return R=$=1,Z=L(z=t),j=0,[]}function K(t){return z="",t}function Q(t){return C(V(j-1,et(91===t?t+2:40===t?t+1:t)))}function J(t){for(;(P=H())&&P<33;)W();return G(t)>2||G(P)>3?"":" "}function tt(t,e){for(;--e&&W()&&!(P<48||P>102||P>57&&P<65||P>70&&P<97););return V(t,q()+(e<6&&32==H()&&32==W()))}function et(t){for(;W();)switch(P){case t:return j;case 34:case 39:34!==t&&39!==t&&et(P);break;case 40:41===t&&et(t);break;case 92:W()}return j}function nt(t,e){for(;W()&&t+P!==57&&(t+P!==84||47!==H()););return"/*"+V(e,j-1)+"*"+E(47===t?t:W())}function rt(t){for(;!G(H());)W();return V(t,j)}function it(t){return K(at("",null,null,null,[""],t=X(t),0,[0],t))}function at(t,e,n,r,i,a,s,o,l){for(var c=0,u=0,h=s,d=0,p=0,f=0,m=1,g=1,y=1,b=0,x="",v=i,_=a,k=r,T=x;g;)switch(f=b,b=W()){case 40:if(108!=f&&58==O(T,h-1)){-1!=A(T+=D(Q(b),"&","&\f"),"&\f")&&(y=-1);break}case 34:case 39:case 91:T+=Q(b);break;case 9:case 10:case 13:case 32:T+=J(f);break;case 92:T+=tt(q()-1,7);continue;case 47:switch(H()){case 42:case 47:M(ot(nt(W(),q()),e,n),l);break;default:T+="/"}break;case 123*m:o[c++]=L(T)*y;case 125*m:case 59:case 0:switch(b){case 0:case 125:g=0;case 59+u:p>0&&L(T)-h&&M(p>32?lt(T+";",r,n,h-1):lt(D(T," ","")+";",r,n,h-2),l);break;case 59:T+=";";default:if(M(k=st(T,e,n,c,u,i,o,x,v=[],_=[],h),a),123===b)if(0===u)at(T,e,k,k,v,a,h,o,_);else switch(99===d&&110===O(T,3)?100:d){case 100:case 109:case 115:at(t,k,k,r&&M(st(t,k,k,0,0,i,o,x,i,v=[],h),_),i,_,h,o,r?v:_);break;default:at(T,k,k,k,[""],_,0,o,_)}}c=u=p=0,m=y=1,x=T="",h=s;break;case 58:h=1+L(T),p=f;default:if(m<1)if(123==b)--m;else if(125==b&&0==m++&&125==U())continue;switch(T+=E(b),b*m){case 38:y=u>0?1:(T+="\f",-1);break;case 44:o[c++]=(L(T)-1)*y,y=1;break;case 64:45===H()&&(T+=Q(W())),d=H(),u=h=L(x=T+=rt(q())),b++;break;case 45:45===f&&2==L(T)&&(m=0)}}return a}function st(t,e,n,r,i,a,s,o,l,c,u){for(var h=i-1,d=0===i?a:[""],p=N(d),f=0,m=0,g=0;f<r;++f)for(var y=0,b=I(t,h+1,h=S(m=s[f])),x=t;y<p;++y)(x=C(m>0?d[y]+" "+b:D(b,/&\f/g,d[y])))&&(l[g++]=x);return Y(t,e,n,0===i?T:o,l,c,u)}function ot(t,e,n){return Y(t,e,n,k,E(P),I(t,2,-2),0)}function lt(t,e,n,r){return Y(t,e,n,w,I(t,0,r),I(t,r+1,-1),r)}var ct=n(277),ut=n(5625),ht=n(9354);const dt=[];for(let c=0;c<256;++c)dt.push((c+256).toString(16).slice(1));function pt(t,e=0){return(dt[t[e+0]]+dt[t[e+1]]+dt[t[e+2]]+dt[t[e+3]]+"-"+dt[t[e+4]]+dt[t[e+5]]+"-"+dt[t[e+6]]+dt[t[e+7]]+"-"+dt[t[e+8]]+dt[t[e+9]]+"-"+dt[t[e+10]]+dt[t[e+11]]+dt[t[e+12]]+dt[t[e+13]]+dt[t[e+14]]+dt[t[e+15]]).toLowerCase()}const ft=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;const mt=function(t){return"string"==typeof t&&ft.test(t)};const gt=function(t){if(!mt(t))throw TypeError("Invalid UUID");let e;const n=new Uint8Array(16);return n[0]=(e=parseInt(t.slice(0,8),16))>>>24,n[1]=e>>>16&255,n[2]=e>>>8&255,n[3]=255&e,n[4]=(e=parseInt(t.slice(9,13),16))>>>8,n[5]=255&e,n[6]=(e=parseInt(t.slice(14,18),16))>>>8,n[7]=255&e,n[8]=(e=parseInt(t.slice(19,23),16))>>>8,n[9]=255&e,n[10]=(e=parseInt(t.slice(24,36),16))/1099511627776&255,n[11]=e/4294967296&255,n[12]=e>>>24&255,n[13]=e>>>16&255,n[14]=e>>>8&255,n[15]=255&e,n};function yt(t,e,n,r){switch(t){case 0:return e&n^~e&r;case 1:case 3:return e^n^r;case 2:return e&n^e&r^n&r}}function bt(t,e){return t<<e|t>>>32-e}const xt=function(t){const e=[1518500249,1859775393,2400959708,3395469782],n=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof t){const e=unescape(encodeURIComponent(t));t=[];for(let n=0;n<e.length;++n)t.push(e.charCodeAt(n))}else Array.isArray(t)||(t=Array.prototype.slice.call(t));t.push(128);const r=t.length/4+2,i=Math.ceil(r/16),a=new Array(i);for(let s=0;s<i;++s){const e=new Uint32Array(16);for(let n=0;n<16;++n)e[n]=t[64*s+4*n]<<24|t[64*s+4*n+1]<<16|t[64*s+4*n+2]<<8|t[64*s+4*n+3];a[s]=e}a[i-1][14]=8*(t.length-1)/Math.pow(2,32),a[i-1][14]=Math.floor(a[i-1][14]),a[i-1][15]=8*(t.length-1)&4294967295;for(let s=0;s<i;++s){const t=new Uint32Array(80);for(let e=0;e<16;++e)t[e]=a[s][e];for(let e=16;e<80;++e)t[e]=bt(t[e-3]^t[e-8]^t[e-14]^t[e-16],1);let r=n[0],i=n[1],o=n[2],l=n[3],c=n[4];for(let n=0;n<80;++n){const a=Math.floor(n/20),s=bt(r,5)+yt(a,i,o,l)+c+e[a]+t[n]>>>0;c=l,l=o,o=bt(i,30)>>>0,i=r,r=s}n[0]=n[0]+r>>>0,n[1]=n[1]+i>>>0,n[2]=n[2]+o>>>0,n[3]=n[3]+l>>>0,n[4]=n[4]+c>>>0}return[n[0]>>24&255,n[0]>>16&255,n[0]>>8&255,255&n[0],n[1]>>24&255,n[1]>>16&255,n[1]>>8&255,255&n[1],n[2]>>24&255,n[2]>>16&255,n[2]>>8&255,255&n[2],n[3]>>24&255,n[3]>>16&255,n[3]>>8&255,255&n[3],n[4]>>24&255,n[4]>>16&255,n[4]>>8&255,255&n[4]]},vt=function(t,e,n){function r(t,r,i,a){var s;if("string"==typeof t&&(t=function(t){t=unescape(encodeURIComponent(t));const e=[];for(let n=0;n<t.length;++n)e.push(t.charCodeAt(n));return e}(t)),"string"==typeof r&&(r=gt(r)),16!==(null===(s=r)||void 0===s?void 0:s.length))throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let o=new Uint8Array(16+t.length);if(o.set(r),o.set(t,r.length),o=n(o),o[6]=15&o[6]|e,o[8]=63&o[8]|128,i){a=a||0;for(let t=0;t<16;++t)i[a+t]=o[t];return i}return pt(o)}try{r.name=t}catch(i){}return r.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",r.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",r}("v5",80,xt),_t=vt;n(1518),n(6225);var kt=n(3349),Tt=(n(3352),n(2930),n(9542)),wt=n.n(Tt),St=n(285),Et=n.n(St),Ct=n(8734),Dt=n.n(Ct),At=n(9697);const Ot={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},It={trace:(...t)=>{},debug:(...t)=>{},info:(...t)=>{},warn:(...t)=>{},error:(...t)=>{},fatal:(...t)=>{}},Lt=function(t="fatal"){let e=Ot.fatal;"string"==typeof t?(t=t.toLowerCase())in Ot&&(e=Ot[t]):"number"==typeof t&&(e=t),It.trace=()=>{},It.debug=()=>{},It.info=()=>{},It.warn=()=>{},It.error=()=>{},It.fatal=()=>{},e<=Ot.fatal&&(It.fatal=console.error?console.error.bind(console,Nt("FATAL"),"color: orange"):console.log.bind(console,"\x1b[35m",Nt("FATAL"))),e<=Ot.error&&(It.error=console.error?console.error.bind(console,Nt("ERROR"),"color: orange"):console.log.bind(console,"\x1b[31m",Nt("ERROR"))),e<=Ot.warn&&(It.warn=console.warn?console.warn.bind(console,Nt("WARN"),"color: orange"):console.log.bind(console,"\x1b[33m",Nt("WARN"))),e<=Ot.info&&(It.info=console.info?console.info.bind(console,Nt("INFO"),"color: lightblue"):console.log.bind(console,"\x1b[34m",Nt("INFO"))),e<=Ot.debug&&(It.debug=console.debug?console.debug.bind(console,Nt("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1b[32m",Nt("DEBUG"))),e<=Ot.trace&&(It.trace=console.debug?console.debug.bind(console,Nt("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1b[32m",Nt("TRACE")))},Nt=t=>`%c${a()().format("ss.SSS")} : ${t} : `,Mt=t=>u().sanitize(t),Ft=(t,e)=>{var n;if(!1!==(null==(n=e.flowchart)?void 0:n.htmlLabels)){const n=e.securityLevel;"antiscript"===n||"strict"===n?t=Mt(t):"loose"!==n&&(t=(t=(t=Zt(t)).replace(/</g,"<").replace(/>/g,">")).replace(/=/g,"="),t=$t(t))}return t},Bt=(t,e)=>t?t=e.dompurifyConfig?u().sanitize(Ft(t,e),e.dompurifyConfig).toString():u().sanitize(Ft(t,e),{FORBID_TAGS:["style"]}).toString():t,Rt=/<br\s*\/?>/gi,$t=t=>t.replace(/#br#/g,"<br/>"),Zt=t=>t.replace(Rt,"#br#"),jt=t=>!1!==t&&!["false","null","0"].includes(String(t).trim().toLowerCase()),Pt=function(t){let e=t;if(t.split("~").length-1>=2){let t=e;do{e=t,t=e.replace(/~([^\s,:;]+)~/,"<$1>")}while(t!=e);return Pt(t)}return e},zt={getRows:t=>{if(!t)return[""];return Zt(t).replace(/\\n/g,"#br#").split("#br#")},sanitizeText:Bt,sanitizeTextOrArray:(t,e)=>"string"==typeof t?Bt(t,e):t.flat().map((t=>Bt(t,e))),hasBreaks:t=>Rt.test(t),splitBreaks:t=>t.split(Rt),lineBreakRegex:Rt,removeScript:Mt,getUrl:t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=e.replaceAll(/\(/g,"\\("),e=e.replaceAll(/\)/g,"\\)")),e},evaluate:jt},Yt=(t,e)=>f(t,e?{s:-40,l:10}:{s:-40,l:-10}),Ut="#ffffff",Wt="#f2f2f2";class Ht{constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=(0,v.Z)(this.contrast,55),this.background="#ffffff",this.tertiaryColor=f(this.primaryColor,{h:-160}),this.primaryBorderColor=Yt(this.primaryColor,this.darkMode),this.secondaryBorderColor=Yt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Yt(this.tertiaryColor,this.darkMode),this.primaryTextColor=b(this.primaryColor),this.secondaryTextColor=b(this.secondaryColor),this.tertiaryTextColor=b(this.tertiaryColor),this.lineColor=b(this.background),this.textColor=b(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.personBorder="calculated",this.personBkg="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=(0,v.Z)(this.contrast,55),this.border2=this.contrast,this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||b(this["cScale"+t]);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this.darkMode?this["cScalePeer"+t]=this["cScalePeer"+t]||(0,v.Z)(this["cScale"+t],10):this["cScalePeer"+t]=this["cScalePeer"+t]||(0,x.Z)(this["cScale"+t],10);this.scaleLabelColor=this.scaleLabelColor||(this.darkMode?"black":this.labelTextColor),this.cScaleLabel0=this.cScaleLabel0||this.cScale1,this.cScaleLabel2=this.cScaleLabel2||this.cScale1;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||f(this.mainBkg,{l:-(5+5*t)}),this["surfacePeer"+t]=this["surfacePeer"+t]||f(this.mainBkg,{l:-(8+5*t)});this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.text,this.actorBorder=(0,v.Z)(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.lineColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.sectionBkgColor=(0,v.Z)(this.contrast,30),this.sectionBkgColor2=(0,v.Z)(this.contrast,30),this.taskBorderColor=(0,x.Z)(this.contrast,10),this.taskBkgColor=this.contrast,this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor=this.text,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.gridColor=(0,v.Z)(this.border1,30),this.doneTaskBkgColor=this.done,this.doneTaskBorderColor=this.lineColor,this.critBkgColor=this.critical,this.critBorderColor=(0,x.Z)(this.critBkgColor,10),this.todayLineColor=this.critBkgColor,this.transitionColor=this.transitionColor||"#000",this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f4f4f4",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.stateBorder=this.stateBorder||"#000",this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#222",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=f(this.primaryColor,{h:64}),this.fillType3=f(this.secondaryColor,{h:64}),this.fillType4=f(this.primaryColor,{h:-64}),this.fillType5=f(this.secondaryColor,{h:-64}),this.fillType6=f(this.primaryColor,{h:128}),this.fillType7=f(this.secondaryColor,{h:128});for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["pie"+t]=this["cScale"+t];this.pie12=this.pie0,this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOpacity=this.pieOpacity||"0.7",this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.edgeLabelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=(0,x.Z)(this.pie1,25)||this.primaryColor,this.git1=this.pie2||this.secondaryColor,this.git2=this.pie3||this.tertiaryColor,this.git3=this.pie4||f(this.primaryColor,{h:-30}),this.git4=this.pie5||f(this.primaryColor,{h:-60}),this.git5=this.pie6||f(this.primaryColor,{h:-90}),this.git6=this.pie7||f(this.primaryColor,{h:60}),this.git7=this.pie8||f(this.primaryColor,{h:120}),this.gitInv0=this.gitInv0||b(this.git0),this.gitInv1=this.gitInv1||b(this.git1),this.gitInv2=this.gitInv2||b(this.git2),this.gitInv3=this.gitInv3||b(this.git3),this.gitInv4=this.gitInv4||b(this.git4),this.gitInv5=this.gitInv5||b(this.git5),this.gitInv6=this.gitInv6||b(this.git6),this.gitInv7=this.gitInv7||b(this.git7),this.branchLabelColor=this.branchLabelColor||this.labelTextColor,this.gitBranchLabel0=this.branchLabelColor,this.gitBranchLabel1="white",this.gitBranchLabel2=this.branchLabelColor,this.gitBranchLabel3="white",this.gitBranchLabel4=this.branchLabelColor,this.gitBranchLabel5=this.branchLabelColor,this.gitBranchLabel6=this.branchLabelColor,this.gitBranchLabel7=this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Ut,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Wt}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach((e=>{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}}const qt={base:{getThemeVariables:t=>{const e=new class{constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||f(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||f(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Yt(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Yt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Yt(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Yt(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||b(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||b(this.tertiaryColor),this.lineColor=this.lineColor||b(this.background),this.textColor=this.textColor||this.primaryTextColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?(0,x.Z)(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||"grey",this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||(0,x.Z)(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||b(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||(0,v.Z)(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||f(this.primaryColor,{h:30}),this.cScale4=this.cScale4||f(this.primaryColor,{h:60}),this.cScale5=this.cScale5||f(this.primaryColor,{h:90}),this.cScale6=this.cScale6||f(this.primaryColor,{h:120}),this.cScale7=this.cScale7||f(this.primaryColor,{h:150}),this.cScale8=this.cScale8||f(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||f(this.primaryColor,{h:270}),this.cScale10=this.cScale10||f(this.primaryColor,{h:300}),this.cScale11=this.cScale11||f(this.primaryColor,{h:330}),this.darkMode)for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScale"+e]=(0,x.Z)(this["cScale"+e],75);else for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScale"+e]=(0,x.Z)(this["cScale"+e],25);for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScaleInv"+e]=this["cScaleInv"+e]||b(this["cScale"+e]);for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this.darkMode?this["cScalePeer"+e]=this["cScalePeer"+e]||(0,v.Z)(this["cScale"+e],10):this["cScalePeer"+e]=this["cScalePeer"+e]||(0,x.Z)(this["cScale"+e],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScaleLabel"+e]=this["cScaleLabel"+e]||this.scaleLabelColor;const t=this.darkMode?-4:-1;for(let e=0;e<5;e++)this["surface"+e]=this["surface"+e]||f(this.mainBkg,{h:180,s:-15,l:t*(5+3*e)}),this["surfacePeer"+e]=this["surfacePeer"+e]||f(this.mainBkg,{h:180,s:-15,l:t*(8+3*e)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||f(this.primaryColor,{h:64}),this.fillType3=this.fillType3||f(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||f(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||f(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||f(this.primaryColor,{h:128}),this.fillType7=this.fillType7||f(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||f(this.primaryColor,{l:-10}),this.pie5=this.pie5||f(this.secondaryColor,{l:-10}),this.pie6=this.pie6||f(this.tertiaryColor,{l:-10}),this.pie7=this.pie7||f(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||f(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||f(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||f(this.primaryColor,{h:60,l:-20}),this.pie11=this.pie11||f(this.primaryColor,{h:-60,l:-20}),this.pie12=this.pie12||f(this.primaryColor,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOpacity=this.pieOpacity||"0.7",this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?(0,x.Z)(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||f(this.primaryColor,{h:-30}),this.git4=this.git4||f(this.primaryColor,{h:-60}),this.git5=this.git5||f(this.primaryColor,{h:-90}),this.git6=this.git6||f(this.primaryColor,{h:60}),this.git7=this.git7||f(this.primaryColor,{h:120}),this.darkMode?(this.git0=(0,v.Z)(this.git0,25),this.git1=(0,v.Z)(this.git1,25),this.git2=(0,v.Z)(this.git2,25),this.git3=(0,v.Z)(this.git3,25),this.git4=(0,v.Z)(this.git4,25),this.git5=(0,v.Z)(this.git5,25),this.git6=(0,v.Z)(this.git6,25),this.git7=(0,v.Z)(this.git7,25)):(this.git0=(0,x.Z)(this.git0,25),this.git1=(0,x.Z)(this.git1,25),this.git2=(0,x.Z)(this.git2,25),this.git3=(0,x.Z)(this.git3,25),this.git4=(0,x.Z)(this.git4,25),this.git5=(0,x.Z)(this.git5,25),this.git6=(0,x.Z)(this.git6,25),this.git7=(0,x.Z)(this.git7,25)),this.gitInv0=this.gitInv0||b(this.git0),this.gitInv1=this.gitInv1||b(this.git1),this.gitInv2=this.gitInv2||b(this.git2),this.gitInv3=this.gitInv3||b(this.git3),this.gitInv4=this.gitInv4||b(this.git4),this.gitInv5=this.gitInv5||b(this.git5),this.gitInv6=this.gitInv6||b(this.git6),this.gitInv7=this.gitInv7||b(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Ut,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Wt}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach((e=>{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e}},dark:{getThemeVariables:t=>{const e=new class{constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=(0,v.Z)(this.primaryColor,16),this.tertiaryColor=f(this.primaryColor,{h:-160}),this.primaryBorderColor=b(this.background),this.secondaryBorderColor=Yt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Yt(this.tertiaryColor,this.darkMode),this.primaryTextColor=b(this.primaryColor),this.secondaryTextColor=b(this.secondaryColor),this.tertiaryTextColor=b(this.tertiaryColor),this.lineColor=b(this.background),this.textColor=b(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=(0,v.Z)(b("#323D47"),10),this.lineColor="calculated",this.border1="#81B1DB",this.border2=g(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=(0,x.Z)("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.taskBorderColor=g(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=g(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.personBorder="calculated",this.personBkg="calculated",this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=(0,v.Z)(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=(0,v.Z)(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.mainContrastColor,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=(0,v.Z)(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=f(this.primaryColor,{h:64}),this.fillType3=f(this.secondaryColor,{h:64}),this.fillType4=f(this.primaryColor,{h:-64}),this.fillType5=f(this.secondaryColor,{h:-64}),this.fillType6=f(this.primaryColor,{h:128}),this.fillType7=f(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||f(this.primaryColor,{h:30}),this.cScale4=this.cScale4||f(this.primaryColor,{h:60}),this.cScale5=this.cScale5||f(this.primaryColor,{h:90}),this.cScale6=this.cScale6||f(this.primaryColor,{h:120}),this.cScale7=this.cScale7||f(this.primaryColor,{h:150}),this.cScale8=this.cScale8||f(this.primaryColor,{h:210}),this.cScale9=this.cScale9||f(this.primaryColor,{h:270}),this.cScale10=this.cScale10||f(this.primaryColor,{h:300}),this.cScale11=this.cScale11||f(this.primaryColor,{h:330});for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||b(this["cScale"+t]);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScalePeer"+t]=this["cScalePeer"+t]||(0,v.Z)(this["cScale"+t],10);for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||f(this.mainBkg,{h:30,s:-30,l:-(4*t-10)}),this["surfacePeer"+t]=this["surfacePeer"+t]||f(this.mainBkg,{h:30,s:-30,l:-(4*t-7)});this.scaleLabelColor=this.scaleLabelColor||(this.darkMode?"black":this.labelTextColor);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["pie"+t]=this["cScale"+t];this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOpacity=this.pieOpacity||"0.7",this.classText=this.primaryTextColor,this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?(0,x.Z)(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=(0,v.Z)(this.secondaryColor,20),this.git1=(0,v.Z)(this.pie2||this.secondaryColor,20),this.git2=(0,v.Z)(this.pie3||this.tertiaryColor,20),this.git3=(0,v.Z)(this.pie4||f(this.primaryColor,{h:-30}),20),this.git4=(0,v.Z)(this.pie5||f(this.primaryColor,{h:-60}),20),this.git5=(0,v.Z)(this.pie6||f(this.primaryColor,{h:-90}),10),this.git6=(0,v.Z)(this.pie7||f(this.primaryColor,{h:60}),10),this.git7=(0,v.Z)(this.pie8||f(this.primaryColor,{h:120}),20),this.gitInv0=this.gitInv0||b(this.git0),this.gitInv1=this.gitInv1||b(this.git1),this.gitInv2=this.gitInv2||b(this.git2),this.gitInv3=this.gitInv3||b(this.git3),this.gitInv4=this.gitInv4||b(this.git4),this.gitInv5=this.gitInv5||b(this.git5),this.gitInv6=this.gitInv6||b(this.git6),this.gitInv7=this.gitInv7||b(this.git7),this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||(0,v.Z)(this.background,12),this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||(0,v.Z)(this.background,2)}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach((e=>{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e}},default:{getThemeVariables:t=>{const e=new class{constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=f(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=f(this.primaryColor,{h:-160}),this.primaryBorderColor=Yt(this.primaryColor,this.darkMode),this.secondaryBorderColor=Yt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Yt(this.tertiaryColor,this.darkMode),this.primaryTextColor=b(this.primaryColor),this.secondaryTextColor=b(this.secondaryColor),this.tertiaryTextColor=b(this.tertiaryColor),this.lineColor=b(this.background),this.textColor=b(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#e8e8e8",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=g(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder="calculated",this.personBkg="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||f(this.primaryColor,{h:30}),this.cScale4=this.cScale4||f(this.primaryColor,{h:60}),this.cScale5=this.cScale5||f(this.primaryColor,{h:90}),this.cScale6=this.cScale6||f(this.primaryColor,{h:120}),this.cScale7=this.cScale7||f(this.primaryColor,{h:150}),this.cScale8=this.cScale8||f(this.primaryColor,{h:210}),this.cScale9=this.cScale9||f(this.primaryColor,{h:270}),this.cScale10=this.cScale10||f(this.primaryColor,{h:300}),this.cScale11=this.cScale11||f(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,x.Z)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,x.Z)(this.tertiaryColor,40);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScale"+t]=(0,x.Z)(this["cScale"+t],10),this["cScalePeer"+t]=this["cScalePeer"+t]||(0,x.Z)(this["cScale"+t],25);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||f(this["cScale"+t],{h:180});for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||f(this.mainBkg,{h:30,l:-(5+5*t)}),this["surfacePeer"+t]=this["surfacePeer"+t]||f(this.mainBkg,{h:30,l:-(7+5*t)});if(this.scaleLabelColor="calculated"!==this.scaleLabelColor&&this.scaleLabelColor?this.scaleLabelColor:this.labelTextColor,"calculated"!==this.labelTextColor){this.cScaleLabel0=this.cScaleLabel0||b(this.labelTextColor),this.cScaleLabel3=this.cScaleLabel3||b(this.labelTextColor);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.labelTextColor}this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.textColor,this.edgeLabelBackground=this.labelBackground,this.actorBorder=(0,v.Z)(this.border1,23),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.signalColor=this.textColor,this.signalTextColor=this.textColor,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.specialStateColor=this.lineColor,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=f(this.primaryColor,{h:64}),this.fillType3=f(this.secondaryColor,{h:64}),this.fillType4=f(this.primaryColor,{h:-64}),this.fillType5=f(this.secondaryColor,{h:-64}),this.fillType6=f(this.primaryColor,{h:128}),this.fillType7=f(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||f(this.tertiaryColor,{l:-40}),this.pie4=this.pie4||f(this.primaryColor,{l:-10}),this.pie5=this.pie5||f(this.secondaryColor,{l:-30}),this.pie6=this.pie6||f(this.tertiaryColor,{l:-20}),this.pie7=this.pie7||f(this.primaryColor,{h:60,l:-20}),this.pie8=this.pie8||f(this.primaryColor,{h:-60,l:-40}),this.pie9=this.pie9||f(this.primaryColor,{h:120,l:-40}),this.pie10=this.pie10||f(this.primaryColor,{h:60,l:-40}),this.pie11=this.pie11||f(this.primaryColor,{h:-90,l:-40}),this.pie12=this.pie12||f(this.primaryColor,{h:120,l:-30}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOpacity=this.pieOpacity||"0.7",this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.labelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||f(this.primaryColor,{h:-30}),this.git4=this.git4||f(this.primaryColor,{h:-60}),this.git5=this.git5||f(this.primaryColor,{h:-90}),this.git6=this.git6||f(this.primaryColor,{h:60}),this.git7=this.git7||f(this.primaryColor,{h:120}),this.darkMode?(this.git0=(0,v.Z)(this.git0,25),this.git1=(0,v.Z)(this.git1,25),this.git2=(0,v.Z)(this.git2,25),this.git3=(0,v.Z)(this.git3,25),this.git4=(0,v.Z)(this.git4,25),this.git5=(0,v.Z)(this.git5,25),this.git6=(0,v.Z)(this.git6,25),this.git7=(0,v.Z)(this.git7,25)):(this.git0=(0,x.Z)(this.git0,25),this.git1=(0,x.Z)(this.git1,25),this.git2=(0,x.Z)(this.git2,25),this.git3=(0,x.Z)(this.git3,25),this.git4=(0,x.Z)(this.git4,25),this.git5=(0,x.Z)(this.git5,25),this.git6=(0,x.Z)(this.git6,25),this.git7=(0,x.Z)(this.git7,25)),this.gitInv0=this.gitInv0||(0,x.Z)(b(this.git0),25),this.gitInv1=this.gitInv1||b(this.git1),this.gitInv2=this.gitInv2||b(this.git2),this.gitInv3=this.gitInv3||b(this.git3),this.gitInv4=this.gitInv4||b(this.git4),this.gitInv5=this.gitInv5||b(this.git5),this.gitInv6=this.gitInv6||b(this.git6),this.gitInv7=this.gitInv7||b(this.git7),this.gitBranchLabel0=this.gitBranchLabel0||b(this.labelTextColor),this.gitBranchLabel1=this.gitBranchLabel1||this.labelTextColor,this.gitBranchLabel2=this.gitBranchLabel2||this.labelTextColor,this.gitBranchLabel3=this.gitBranchLabel3||b(this.labelTextColor),this.gitBranchLabel4=this.gitBranchLabel4||this.labelTextColor,this.gitBranchLabel5=this.gitBranchLabel5||this.labelTextColor,this.gitBranchLabel6=this.gitBranchLabel6||this.labelTextColor,this.gitBranchLabel7=this.gitBranchLabel7||this.labelTextColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Ut,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Wt}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach((e=>{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e}},forest:{getThemeVariables:t=>{const e=new class{constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=(0,v.Z)("#cde498",10),this.primaryBorderColor=Yt(this.primaryColor,this.darkMode),this.secondaryBorderColor=Yt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Yt(this.tertiaryColor,this.darkMode),this.primaryTextColor=b(this.primaryColor),this.secondaryTextColor=b(this.secondaryColor),this.tertiaryTextColor=b(this.primaryColor),this.lineColor=b(this.background),this.textColor=b(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder="calculated",this.personBkg="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||f(this.primaryColor,{h:30}),this.cScale4=this.cScale4||f(this.primaryColor,{h:60}),this.cScale5=this.cScale5||f(this.primaryColor,{h:90}),this.cScale6=this.cScale6||f(this.primaryColor,{h:120}),this.cScale7=this.cScale7||f(this.primaryColor,{h:150}),this.cScale8=this.cScale8||f(this.primaryColor,{h:210}),this.cScale9=this.cScale9||f(this.primaryColor,{h:270}),this.cScale10=this.cScale10||f(this.primaryColor,{h:300}),this.cScale11=this.cScale11||f(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,x.Z)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,x.Z)(this.tertiaryColor,40);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScale"+t]=(0,x.Z)(this["cScale"+t],10),this["cScalePeer"+t]=this["cScalePeer"+t]||(0,x.Z)(this["cScale"+t],25);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||f(this["cScale"+t],{h:180});this.scaleLabelColor="calculated"!==this.scaleLabelColor&&this.scaleLabelColor?this.scaleLabelColor:this.labelTextColor;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||f(this.mainBkg,{h:30,s:-30,l:-(5+5*t)}),this["surfacePeer"+t]=this["surfacePeer"+t]||f(this.mainBkg,{h:30,s:-30,l:-(8+5*t)});this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.actorBorder=(0,x.Z)(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.taskBorderColor=this.border1,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor=this.lineColor,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=f(this.primaryColor,{h:64}),this.fillType3=f(this.secondaryColor,{h:64}),this.fillType4=f(this.primaryColor,{h:-64}),this.fillType5=f(this.secondaryColor,{h:-64}),this.fillType6=f(this.primaryColor,{h:128}),this.fillType7=f(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||f(this.primaryColor,{l:-30}),this.pie5=this.pie5||f(this.secondaryColor,{l:-30}),this.pie6=this.pie6||f(this.tertiaryColor,{h:40,l:-40}),this.pie7=this.pie7||f(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||f(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||f(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||f(this.primaryColor,{h:60,l:-50}),this.pie11=this.pie11||f(this.primaryColor,{h:-60,l:-50}),this.pie12=this.pie12||f(this.primaryColor,{h:120,l:-50}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOpacity=this.pieOpacity||"0.7",this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.edgeLabelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||f(this.primaryColor,{h:-30}),this.git4=this.git4||f(this.primaryColor,{h:-60}),this.git5=this.git5||f(this.primaryColor,{h:-90}),this.git6=this.git6||f(this.primaryColor,{h:60}),this.git7=this.git7||f(this.primaryColor,{h:120}),this.darkMode?(this.git0=(0,v.Z)(this.git0,25),this.git1=(0,v.Z)(this.git1,25),this.git2=(0,v.Z)(this.git2,25),this.git3=(0,v.Z)(this.git3,25),this.git4=(0,v.Z)(this.git4,25),this.git5=(0,v.Z)(this.git5,25),this.git6=(0,v.Z)(this.git6,25),this.git7=(0,v.Z)(this.git7,25)):(this.git0=(0,x.Z)(this.git0,25),this.git1=(0,x.Z)(this.git1,25),this.git2=(0,x.Z)(this.git2,25),this.git3=(0,x.Z)(this.git3,25),this.git4=(0,x.Z)(this.git4,25),this.git5=(0,x.Z)(this.git5,25),this.git6=(0,x.Z)(this.git6,25),this.git7=(0,x.Z)(this.git7,25)),this.gitInv0=this.gitInv0||b(this.git0),this.gitInv1=this.gitInv1||b(this.git1),this.gitInv2=this.gitInv2||b(this.git2),this.gitInv3=this.gitInv3||b(this.git3),this.gitInv4=this.gitInv4||b(this.git4),this.gitInv5=this.gitInv5||b(this.git5),this.gitInv6=this.gitInv6||b(this.git6),this.gitInv7=this.gitInv7||b(this.git7),this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Ut,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Wt}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach((e=>{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e}},neutral:{getThemeVariables:t=>{const e=new Ht;return e.calculate(t),e}}},Vt={theme:"default",themeVariables:qt.default.getThemeVariables(),themeCSS:void 0,maxTextSize:5e4,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize"],deterministicIds:!1,deterministicIDSeed:void 0,flowchart:{titleTopMargin:25,diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,useMaxWidth:!0,defaultRenderer:"dagre-wrapper"},sequence:{hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20,messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},noteFont:function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},actorFont:function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",tickInterval:void 0,useMaxWidth:!0,topAxis:!1,useWidth:void 0},journey:{diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},timeline:{diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},class:{titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,useMaxWidth:!0,defaultRenderer:"dagre-wrapper"},state:{titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,useMaxWidth:!0,defaultRenderer:"dagre-wrapper"},er:{titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12,useMaxWidth:!0},pie:{useWidth:void 0,useMaxWidth:!0},requirement:{useWidth:void 0,useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},gitGraph:{titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0},c4:{useWidth:void 0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,useMaxWidth:!0,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,personFont:function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},external_personFont:function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},systemFont:function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},external_systemFont:function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},system_dbFont:function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},external_system_dbFont:function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},system_queueFont:function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},external_system_queueFont:function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},containerFont:function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},external_containerFont:function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},container_dbFont:function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},external_container_dbFont:function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},container_queueFont:function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},external_container_queueFont:function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},componentFont:function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},external_componentFont:function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},component_dbFont:function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},external_component_dbFont:function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},component_queueFont:function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},external_component_queueFont:function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},boundaryFont:function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},fontSize:16};Vt.class&&(Vt.class.arrowMarkerAbsolute=Vt.arrowMarkerAbsolute),Vt.gitGraph&&(Vt.gitGraph.arrowMarkerAbsolute=Vt.arrowMarkerAbsolute);const Gt=(t,e="")=>Object.keys(t).reduce(((n,r)=>Array.isArray(t[r])?n:"object"==typeof t[r]&&null!==t[r]?[...n,e+r,...Gt(t[r],"")]:[...n,e+r]),[]),Xt=Gt(Vt,""),Kt=Vt;function Qt(t){return null==t}var Jt={isNothing:Qt,isObject:function(t){return"object"==typeof t&&null!==t},toArray:function(t){return Array.isArray(t)?t:Qt(t)?[]:[t]},repeat:function(t,e){var n,r="";for(n=0;n<e;n+=1)r+=t;return r},isNegativeZero:function(t){return 0===t&&Number.NEGATIVE_INFINITY===1/t},extend:function(t,e){var n,r,i,a;if(e)for(n=0,r=(a=Object.keys(e)).length;n<r;n+=1)t[i=a[n]]=e[i];return t}};function te(t,e){var n="",r=t.reason||"(unknown reason)";return t.mark?(t.mark.name&&(n+='in "'+t.mark.name+'" '),n+="("+(t.mark.line+1)+":"+(t.mark.column+1)+")",!e&&t.mark.snippet&&(n+="\n\n"+t.mark.snippet),r+" "+n):r}function ee(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=te(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||""}ee.prototype=Object.create(Error.prototype),ee.prototype.constructor=ee,ee.prototype.toString=function(t){return this.name+": "+te(this,t)};var ne=ee;function re(t,e,n,r,i){var a="",s="",o=Math.floor(i/2)-1;return r-e>o&&(e=r-o+(a=" ... ").length),n-r>o&&(n=r+o-(s=" ...").length),{str:a+t.slice(e,n).replace(/\t/g,"\u2192")+s,pos:r-e+a.length}}function ie(t,e){return Jt.repeat(" ",e-t.length)+t}var ae=function(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),"number"!=typeof e.indent&&(e.indent=1),"number"!=typeof e.linesBefore&&(e.linesBefore=3),"number"!=typeof e.linesAfter&&(e.linesAfter=2);for(var n,r=/\r?\n|\r|\0/g,i=[0],a=[],s=-1;n=r.exec(t.buffer);)a.push(n.index),i.push(n.index+n[0].length),t.position<=n.index&&s<0&&(s=i.length-2);s<0&&(s=i.length-1);var o,l,c="",u=Math.min(t.line+e.linesAfter,a.length).toString().length,h=e.maxLength-(e.indent+u+3);for(o=1;o<=e.linesBefore&&!(s-o<0);o++)l=re(t.buffer,i[s-o],a[s-o],t.position-(i[s]-i[s-o]),h),c=Jt.repeat(" ",e.indent)+ie((t.line-o+1).toString(),u)+" | "+l.str+"\n"+c;for(l=re(t.buffer,i[s],a[s],t.position,h),c+=Jt.repeat(" ",e.indent)+ie((t.line+1).toString(),u)+" | "+l.str+"\n",c+=Jt.repeat("-",e.indent+u+3+l.pos)+"^\n",o=1;o<=e.linesAfter&&!(s+o>=a.length);o++)l=re(t.buffer,i[s+o],a[s+o],t.position-(i[s]-i[s+o]),h),c+=Jt.repeat(" ",e.indent)+ie((t.line+o+1).toString(),u)+" | "+l.str+"\n";return c.replace(/\n$/,"")},se=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],oe=["scalar","sequence","mapping"];var le=function(t,e){var n,r;if(e=e||{},Object.keys(e).forEach((function(e){if(-1===se.indexOf(e))throw new ne('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')})),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=(n=e.styleAliases||null,r={},null!==n&&Object.keys(n).forEach((function(t){n[t].forEach((function(e){r[String(e)]=t}))})),r),-1===oe.indexOf(this.kind))throw new ne('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')};function ce(t,e){var n=[];return t[e].forEach((function(t){var e=n.length;n.forEach((function(n,r){n.tag===t.tag&&n.kind===t.kind&&n.multi===t.multi&&(e=r)})),n[e]=t})),n}function ue(t){return this.extend(t)}ue.prototype.extend=function(t){var e=[],n=[];if(t instanceof le)n.push(t);else if(Array.isArray(t))n=n.concat(t);else{if(!t||!Array.isArray(t.implicit)&&!Array.isArray(t.explicit))throw new ne("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.implicit&&(e=e.concat(t.implicit)),t.explicit&&(n=n.concat(t.explicit))}e.forEach((function(t){if(!(t instanceof le))throw new ne("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(t.loadKind&&"scalar"!==t.loadKind)throw new ne("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(t.multi)throw new ne("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")})),n.forEach((function(t){if(!(t instanceof le))throw new ne("Specified list of YAML types (or a single Type object) contains a non-Type object.")}));var r=Object.create(ue.prototype);return r.implicit=(this.implicit||[]).concat(e),r.explicit=(this.explicit||[]).concat(n),r.compiledImplicit=ce(r,"implicit"),r.compiledExplicit=ce(r,"explicit"),r.compiledTypeMap=function(){var t,e,n={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function r(t){t.multi?(n.multi[t.kind].push(t),n.multi.fallback.push(t)):n[t.kind][t.tag]=n.fallback[t.tag]=t}for(t=0,e=arguments.length;t<e;t+=1)arguments[t].forEach(r);return n}(r.compiledImplicit,r.compiledExplicit),r};var he=new ue({explicit:[new le("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return null!==t?t:""}}),new le("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return null!==t?t:[]}}),new le("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return null!==t?t:{}}})]});var de=new le("tag:yaml.org,2002:null",{kind:"scalar",resolve:function(t){if(null===t)return!0;var e=t.length;return 1===e&&"~"===t||4===e&&("null"===t||"Null"===t||"NULL"===t)},construct:function(){return null},predicate:function(t){return null===t},represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"});var pe=new le("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(t){if(null===t)return!1;var e=t.length;return 4===e&&("true"===t||"True"===t||"TRUE"===t)||5===e&&("false"===t||"False"===t||"FALSE"===t)},construct:function(t){return"true"===t||"True"===t||"TRUE"===t},predicate:function(t){return"[object Boolean]"===Object.prototype.toString.call(t)},represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"});function fe(t){return 48<=t&&t<=55}function me(t){return 48<=t&&t<=57}var ge=new le("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(t){if(null===t)return!1;var e,n,r=t.length,i=0,a=!1;if(!r)return!1;if("-"!==(e=t[i])&&"+"!==e||(e=t[++i]),"0"===e){if(i+1===r)return!0;if("b"===(e=t[++i])){for(i++;i<r;i++)if("_"!==(e=t[i])){if("0"!==e&&"1"!==e)return!1;a=!0}return a&&"_"!==e}if("x"===e){for(i++;i<r;i++)if("_"!==(e=t[i])){if(!(48<=(n=t.charCodeAt(i))&&n<=57||65<=n&&n<=70||97<=n&&n<=102))return!1;a=!0}return a&&"_"!==e}if("o"===e){for(i++;i<r;i++)if("_"!==(e=t[i])){if(!fe(t.charCodeAt(i)))return!1;a=!0}return a&&"_"!==e}}if("_"===e)return!1;for(;i<r;i++)if("_"!==(e=t[i])){if(!me(t.charCodeAt(i)))return!1;a=!0}return!(!a||"_"===e)},construct:function(t){var e,n=t,r=1;if(-1!==n.indexOf("_")&&(n=n.replace(/_/g,"")),"-"!==(e=n[0])&&"+"!==e||("-"===e&&(r=-1),e=(n=n.slice(1))[0]),"0"===n)return 0;if("0"===e){if("b"===n[1])return r*parseInt(n.slice(2),2);if("x"===n[1])return r*parseInt(n.slice(2),16);if("o"===n[1])return r*parseInt(n.slice(2),8)}return r*parseInt(n,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&t%1==0&&!Jt.isNegativeZero(t)},represent:{binary:function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),ye=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var be=/^[-+]?[0-9]+e/;var xe=new le("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(t){return null!==t&&!(!ye.test(t)||"_"===t[t.length-1])},construct:function(t){var e,n;return n="-"===(e=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),".inf"===e?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:n*parseFloat(e,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||Jt.isNegativeZero(t))},represent:function(t,e){var n;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Jt.isNegativeZero(t))return"-0.0";return n=t.toString(10),be.test(n)?n.replace("e",".e"):n},defaultStyle:"lowercase"}),ve=he.extend({implicit:[de,pe,ge,xe]}),_e=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),ke=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");var Te=new le("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(t){return null!==t&&(null!==_e.exec(t)||null!==ke.exec(t))},construct:function(t){var e,n,r,i,a,s,o,l,c=0,u=null;if(null===(e=_e.exec(t))&&(e=ke.exec(t)),null===e)throw new Error("Date resolve error");if(n=+e[1],r=+e[2]-1,i=+e[3],!e[4])return new Date(Date.UTC(n,r,i));if(a=+e[4],s=+e[5],o=+e[6],e[7]){for(c=e[7].slice(0,3);c.length<3;)c+="0";c=+c}return e[9]&&(u=6e4*(60*+e[10]+ +(e[11]||0)),"-"===e[9]&&(u=-u)),l=new Date(Date.UTC(n,r,i,a,s,o,c)),u&&l.setTime(l.getTime()-u),l},instanceOf:Date,represent:function(t){return t.toISOString()}});var we=new le("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(t){return"<<"===t||null===t}}),Se="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";var Ee=new le("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(t){if(null===t)return!1;var e,n,r=0,i=t.length,a=Se;for(n=0;n<i;n++)if(!((e=a.indexOf(t.charAt(n)))>64)){if(e<0)return!1;r+=6}return r%8==0},construct:function(t){var e,n,r=t.replace(/[\r\n=]/g,""),i=r.length,a=Se,s=0,o=[];for(e=0;e<i;e++)e%4==0&&e&&(o.push(s>>16&255),o.push(s>>8&255),o.push(255&s)),s=s<<6|a.indexOf(r.charAt(e));return 0===(n=i%4*6)?(o.push(s>>16&255),o.push(s>>8&255),o.push(255&s)):18===n?(o.push(s>>10&255),o.push(s>>2&255)):12===n&&o.push(s>>4&255),new Uint8Array(o)},predicate:function(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)},represent:function(t){var e,n,r="",i=0,a=t.length,s=Se;for(e=0;e<a;e++)e%3==0&&e&&(r+=s[i>>18&63],r+=s[i>>12&63],r+=s[i>>6&63],r+=s[63&i]),i=(i<<8)+t[e];return 0===(n=a%3)?(r+=s[i>>18&63],r+=s[i>>12&63],r+=s[i>>6&63],r+=s[63&i]):2===n?(r+=s[i>>10&63],r+=s[i>>4&63],r+=s[i<<2&63],r+=s[64]):1===n&&(r+=s[i>>2&63],r+=s[i<<4&63],r+=s[64],r+=s[64]),r}}),Ce=Object.prototype.hasOwnProperty,De=Object.prototype.toString;var Ae=new le("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(t){if(null===t)return!0;var e,n,r,i,a,s=[],o=t;for(e=0,n=o.length;e<n;e+=1){if(r=o[e],a=!1,"[object Object]"!==De.call(r))return!1;for(i in r)if(Ce.call(r,i)){if(a)return!1;a=!0}if(!a)return!1;if(-1!==s.indexOf(i))return!1;s.push(i)}return!0},construct:function(t){return null!==t?t:[]}}),Oe=Object.prototype.toString;var Ie=new le("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:function(t){if(null===t)return!0;var e,n,r,i,a,s=t;for(a=new Array(s.length),e=0,n=s.length;e<n;e+=1){if(r=s[e],"[object Object]"!==Oe.call(r))return!1;if(1!==(i=Object.keys(r)).length)return!1;a[e]=[i[0],r[i[0]]]}return!0},construct:function(t){if(null===t)return[];var e,n,r,i,a,s=t;for(a=new Array(s.length),e=0,n=s.length;e<n;e+=1)r=s[e],i=Object.keys(r),a[e]=[i[0],r[i[0]]];return a}}),Le=Object.prototype.hasOwnProperty;var Ne=new le("tag:yaml.org,2002:set",{kind:"mapping",resolve:function(t){if(null===t)return!0;var e,n=t;for(e in n)if(Le.call(n,e)&&null!==n[e])return!1;return!0},construct:function(t){return null!==t?t:{}}}),Me=ve.extend({implicit:[Te,we],explicit:[Ee,Ae,Ie,Ne]}),Fe=Object.prototype.hasOwnProperty,Be=1,Re=2,$e=3,Ze=4,je=1,Pe=2,ze=3,Ye=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Ue=/[\x85\u2028\u2029]/,We=/[,\[\]\{\}]/,He=/^(?:!|!!|![a-z\-]+!)$/i,qe=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Ve(t){return Object.prototype.toString.call(t)}function Ge(t){return 10===t||13===t}function Xe(t){return 9===t||32===t}function Ke(t){return 9===t||32===t||10===t||13===t}function Qe(t){return 44===t||91===t||93===t||123===t||125===t}function Je(t){var e;return 48<=t&&t<=57?t-48:97<=(e=32|t)&&e<=102?e-97+10:-1}function tn(t){return 48===t?"\0":97===t?"\x07":98===t?"\b":116===t||9===t?"\t":110===t?"\n":118===t?"\v":102===t?"\f":114===t?"\r":101===t?"\x1b":32===t?" ":34===t?'"':47===t?"/":92===t?"\\":78===t?"\x85":95===t?"\xa0":76===t?"\u2028":80===t?"\u2029":""}function en(t){return t<=65535?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>10),56320+(t-65536&1023))}for(var nn=new Array(256),rn=new Array(256),an=0;an<256;an++)nn[an]=tn(an)?1:0,rn[an]=tn(an);function sn(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||Me,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function on(t,e){var n={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return n.snippet=ae(n),new ne(e,n)}function ln(t,e){throw on(t,e)}function cn(t,e){t.onWarning&&t.onWarning.call(null,on(t,e))}var un={YAML:function(t,e,n){var r,i,a;null!==t.version&&ln(t,"duplication of %YAML directive"),1!==n.length&&ln(t,"YAML directive accepts exactly one argument"),null===(r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&ln(t,"ill-formed argument of the YAML directive"),i=parseInt(r[1],10),a=parseInt(r[2],10),1!==i&&ln(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=a<2,1!==a&&2!==a&&cn(t,"unsupported YAML version of the document")},TAG:function(t,e,n){var r,i;2!==n.length&&ln(t,"TAG directive accepts exactly two arguments"),r=n[0],i=n[1],He.test(r)||ln(t,"ill-formed tag handle (first argument) of the TAG directive"),Fe.call(t.tagMap,r)&&ln(t,'there is a previously declared suffix for "'+r+'" tag handle'),qe.test(i)||ln(t,"ill-formed tag prefix (second argument) of the TAG directive");try{i=decodeURIComponent(i)}catch(a){ln(t,"tag prefix is malformed: "+i)}t.tagMap[r]=i}};function hn(t,e,n,r){var i,a,s,o;if(e<n){if(o=t.input.slice(e,n),r)for(i=0,a=o.length;i<a;i+=1)9===(s=o.charCodeAt(i))||32<=s&&s<=1114111||ln(t,"expected valid JSON character");else Ye.test(o)&&ln(t,"the stream contains non-printable characters");t.result+=o}}function dn(t,e,n,r){var i,a,s,o;for(Jt.isObject(n)||ln(t,"cannot merge mappings; the provided source object is unacceptable"),s=0,o=(i=Object.keys(n)).length;s<o;s+=1)a=i[s],Fe.call(e,a)||(e[a]=n[a],r[a]=!0)}function pn(t,e,n,r,i,a,s,o,l){var c,u;if(Array.isArray(i))for(c=0,u=(i=Array.prototype.slice.call(i)).length;c<u;c+=1)Array.isArray(i[c])&&ln(t,"nested arrays are not supported inside keys"),"object"==typeof i&&"[object Object]"===Ve(i[c])&&(i[c]="[object Object]");if("object"==typeof i&&"[object Object]"===Ve(i)&&(i="[object Object]"),i=String(i),null===e&&(e={}),"tag:yaml.org,2002:merge"===r)if(Array.isArray(a))for(c=0,u=a.length;c<u;c+=1)dn(t,e,a[c],n);else dn(t,e,a,n);else t.json||Fe.call(n,i)||!Fe.call(e,i)||(t.line=s||t.line,t.lineStart=o||t.lineStart,t.position=l||t.position,ln(t,"duplicated mapping key")),"__proto__"===i?Object.defineProperty(e,i,{configurable:!0,enumerable:!0,writable:!0,value:a}):e[i]=a,delete n[i];return e}function fn(t){var e;10===(e=t.input.charCodeAt(t.position))?t.position++:13===e?(t.position++,10===t.input.charCodeAt(t.position)&&t.position++):ln(t,"a line break is expected"),t.line+=1,t.lineStart=t.position,t.firstTabInLine=-1}function mn(t,e,n){for(var r=0,i=t.input.charCodeAt(t.position);0!==i;){for(;Xe(i);)9===i&&-1===t.firstTabInLine&&(t.firstTabInLine=t.position),i=t.input.charCodeAt(++t.position);if(e&&35===i)do{i=t.input.charCodeAt(++t.position)}while(10!==i&&13!==i&&0!==i);if(!Ge(i))break;for(fn(t),i=t.input.charCodeAt(t.position),r++,t.lineIndent=0;32===i;)t.lineIndent++,i=t.input.charCodeAt(++t.position)}return-1!==n&&0!==r&&t.lineIndent<n&&cn(t,"deficient indentation"),r}function gn(t){var e,n=t.position;return!(45!==(e=t.input.charCodeAt(n))&&46!==e||e!==t.input.charCodeAt(n+1)||e!==t.input.charCodeAt(n+2)||(n+=3,0!==(e=t.input.charCodeAt(n))&&!Ke(e)))}function yn(t,e){1===e?t.result+=" ":e>1&&(t.result+=Jt.repeat("\n",e-1))}function bn(t,e){var n,r,i=t.tag,a=t.anchor,s=[],o=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=s),r=t.input.charCodeAt(t.position);0!==r&&(-1!==t.firstTabInLine&&(t.position=t.firstTabInLine,ln(t,"tab characters must not be used in indentation")),45===r)&&Ke(t.input.charCodeAt(t.position+1));)if(o=!0,t.position++,mn(t,!0,-1)&&t.lineIndent<=e)s.push(null),r=t.input.charCodeAt(t.position);else if(n=t.line,_n(t,e,$e,!1,!0),s.push(t.result),mn(t,!0,-1),r=t.input.charCodeAt(t.position),(t.line===n||t.lineIndent>e)&&0!==r)ln(t,"bad indentation of a sequence entry");else if(t.lineIndent<e)break;return!!o&&(t.tag=i,t.anchor=a,t.kind="sequence",t.result=s,!0)}function xn(t){var e,n,r,i,a=!1,s=!1;if(33!==(i=t.input.charCodeAt(t.position)))return!1;if(null!==t.tag&&ln(t,"duplication of a tag property"),60===(i=t.input.charCodeAt(++t.position))?(a=!0,i=t.input.charCodeAt(++t.position)):33===i?(s=!0,n="!!",i=t.input.charCodeAt(++t.position)):n="!",e=t.position,a){do{i=t.input.charCodeAt(++t.position)}while(0!==i&&62!==i);t.position<t.length?(r=t.input.slice(e,t.position),i=t.input.charCodeAt(++t.position)):ln(t,"unexpected end of the stream within a verbatim tag")}else{for(;0!==i&&!Ke(i);)33===i&&(s?ln(t,"tag suffix cannot contain exclamation marks"):(n=t.input.slice(e-1,t.position+1),He.test(n)||ln(t,"named tag handle cannot contain such characters"),s=!0,e=t.position+1)),i=t.input.charCodeAt(++t.position);r=t.input.slice(e,t.position),We.test(r)&&ln(t,"tag suffix cannot contain flow indicator characters")}r&&!qe.test(r)&&ln(t,"tag name cannot contain such characters: "+r);try{r=decodeURIComponent(r)}catch(o){ln(t,"tag name is malformed: "+r)}return a?t.tag=r:Fe.call(t.tagMap,n)?t.tag=t.tagMap[n]+r:"!"===n?t.tag="!"+r:"!!"===n?t.tag="tag:yaml.org,2002:"+r:ln(t,'undeclared tag handle "'+n+'"'),!0}function vn(t){var e,n;if(38!==(n=t.input.charCodeAt(t.position)))return!1;for(null!==t.anchor&&ln(t,"duplication of an anchor property"),n=t.input.charCodeAt(++t.position),e=t.position;0!==n&&!Ke(n)&&!Qe(n);)n=t.input.charCodeAt(++t.position);return t.position===e&&ln(t,"name of an anchor node must contain at least one character"),t.anchor=t.input.slice(e,t.position),!0}function _n(t,e,n,r,i){var a,s,o,l,c,u,h,d,p,f=1,m=!1,g=!1;if(null!==t.listener&&t.listener("open",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,a=s=o=Ze===n||$e===n,r&&mn(t,!0,-1)&&(m=!0,t.lineIndent>e?f=1:t.lineIndent===e?f=0:t.lineIndent<e&&(f=-1)),1===f)for(;xn(t)||vn(t);)mn(t,!0,-1)?(m=!0,o=a,t.lineIndent>e?f=1:t.lineIndent===e?f=0:t.lineIndent<e&&(f=-1)):o=!1;if(o&&(o=m||i),1!==f&&Ze!==n||(d=Be===n||Re===n?e:e+1,p=t.position-t.lineStart,1===f?o&&(bn(t,p)||function(t,e,n){var r,i,a,s,o,l,c,u=t.tag,h=t.anchor,d={},p=Object.create(null),f=null,m=null,g=null,y=!1,b=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=d),c=t.input.charCodeAt(t.position);0!==c;){if(y||-1===t.firstTabInLine||(t.position=t.firstTabInLine,ln(t,"tab characters must not be used in indentation")),r=t.input.charCodeAt(t.position+1),a=t.line,63!==c&&58!==c||!Ke(r)){if(s=t.line,o=t.lineStart,l=t.position,!_n(t,n,Re,!1,!0))break;if(t.line===a){for(c=t.input.charCodeAt(t.position);Xe(c);)c=t.input.charCodeAt(++t.position);if(58===c)Ke(c=t.input.charCodeAt(++t.position))||ln(t,"a whitespace character is expected after the key-value separator within a block mapping"),y&&(pn(t,d,p,f,m,null,s,o,l),f=m=g=null),b=!0,y=!1,i=!1,f=t.tag,m=t.result;else{if(!b)return t.tag=u,t.anchor=h,!0;ln(t,"can not read an implicit mapping pair; a colon is missed")}}else{if(!b)return t.tag=u,t.anchor=h,!0;ln(t,"can not read a block mapping entry; a multiline key may not be an implicit key")}}else 63===c?(y&&(pn(t,d,p,f,m,null,s,o,l),f=m=g=null),b=!0,y=!0,i=!0):y?(y=!1,i=!0):ln(t,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),t.position+=1,c=r;if((t.line===a||t.lineIndent>e)&&(y&&(s=t.line,o=t.lineStart,l=t.position),_n(t,e,Ze,!0,i)&&(y?m=t.result:g=t.result),y||(pn(t,d,p,f,m,g,s,o,l),f=m=g=null),mn(t,!0,-1),c=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&0!==c)ln(t,"bad indentation of a mapping entry");else if(t.lineIndent<e)break}return y&&pn(t,d,p,f,m,null,s,o,l),b&&(t.tag=u,t.anchor=h,t.kind="mapping",t.result=d),b}(t,p,d))||function(t,e){var n,r,i,a,s,o,l,c,u,h,d,p,f=!0,m=t.tag,g=t.anchor,y=Object.create(null);if(91===(p=t.input.charCodeAt(t.position)))s=93,c=!1,a=[];else{if(123!==p)return!1;s=125,c=!0,a={}}for(null!==t.anchor&&(t.anchorMap[t.anchor]=a),p=t.input.charCodeAt(++t.position);0!==p;){if(mn(t,!0,e),(p=t.input.charCodeAt(t.position))===s)return t.position++,t.tag=m,t.anchor=g,t.kind=c?"mapping":"sequence",t.result=a,!0;f?44===p&&ln(t,"expected the node content, but found ','"):ln(t,"missed comma between flow collection entries"),d=null,o=l=!1,63===p&&Ke(t.input.charCodeAt(t.position+1))&&(o=l=!0,t.position++,mn(t,!0,e)),n=t.line,r=t.lineStart,i=t.position,_n(t,e,Be,!1,!0),h=t.tag,u=t.result,mn(t,!0,e),p=t.input.charCodeAt(t.position),!l&&t.line!==n||58!==p||(o=!0,p=t.input.charCodeAt(++t.position),mn(t,!0,e),_n(t,e,Be,!1,!0),d=t.result),c?pn(t,a,y,h,u,d,n,r,i):o?a.push(pn(t,null,y,h,u,d,n,r,i)):a.push(u),mn(t,!0,e),44===(p=t.input.charCodeAt(t.position))?(f=!0,p=t.input.charCodeAt(++t.position)):f=!1}ln(t,"unexpected end of the stream within a flow collection")}(t,d)?g=!0:(s&&function(t,e){var n,r,i,a,s,o=je,l=!1,c=!1,u=e,h=0,d=!1;if(124===(a=t.input.charCodeAt(t.position)))r=!1;else{if(62!==a)return!1;r=!0}for(t.kind="scalar",t.result="";0!==a;)if(43===(a=t.input.charCodeAt(++t.position))||45===a)je===o?o=43===a?ze:Pe:ln(t,"repeat of a chomping mode identifier");else{if(!((i=48<=(s=a)&&s<=57?s-48:-1)>=0))break;0===i?ln(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?ln(t,"repeat of an indentation width identifier"):(u=e+i-1,c=!0)}if(Xe(a)){do{a=t.input.charCodeAt(++t.position)}while(Xe(a));if(35===a)do{a=t.input.charCodeAt(++t.position)}while(!Ge(a)&&0!==a)}for(;0!==a;){for(fn(t),t.lineIndent=0,a=t.input.charCodeAt(t.position);(!c||t.lineIndent<u)&&32===a;)t.lineIndent++,a=t.input.charCodeAt(++t.position);if(!c&&t.lineIndent>u&&(u=t.lineIndent),Ge(a))h++;else{if(t.lineIndent<u){o===ze?t.result+=Jt.repeat("\n",l?1+h:h):o===je&&l&&(t.result+="\n");break}for(r?Xe(a)?(d=!0,t.result+=Jt.repeat("\n",l?1+h:h)):d?(d=!1,t.result+=Jt.repeat("\n",h+1)):0===h?l&&(t.result+=" "):t.result+=Jt.repeat("\n",h):t.result+=Jt.repeat("\n",l?1+h:h),l=!0,c=!0,h=0,n=t.position;!Ge(a)&&0!==a;)a=t.input.charCodeAt(++t.position);hn(t,n,t.position,!1)}}return!0}(t,d)||function(t,e){var n,r,i;if(39!==(n=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,r=i=t.position;0!==(n=t.input.charCodeAt(t.position));)if(39===n){if(hn(t,r,t.position,!0),39!==(n=t.input.charCodeAt(++t.position)))return!0;r=t.position,t.position++,i=t.position}else Ge(n)?(hn(t,r,i,!0),yn(t,mn(t,!1,e)),r=i=t.position):t.position===t.lineStart&&gn(t)?ln(t,"unexpected end of the document within a single quoted scalar"):(t.position++,i=t.position);ln(t,"unexpected end of the stream within a single quoted scalar")}(t,d)||function(t,e){var n,r,i,a,s,o,l;if(34!==(o=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,n=r=t.position;0!==(o=t.input.charCodeAt(t.position));){if(34===o)return hn(t,n,t.position,!0),t.position++,!0;if(92===o){if(hn(t,n,t.position,!0),Ge(o=t.input.charCodeAt(++t.position)))mn(t,!1,e);else if(o<256&&nn[o])t.result+=rn[o],t.position++;else if((s=120===(l=o)?2:117===l?4:85===l?8:0)>0){for(i=s,a=0;i>0;i--)(s=Je(o=t.input.charCodeAt(++t.position)))>=0?a=(a<<4)+s:ln(t,"expected hexadecimal character");t.result+=en(a),t.position++}else ln(t,"unknown escape sequence");n=r=t.position}else Ge(o)?(hn(t,n,r,!0),yn(t,mn(t,!1,e)),n=r=t.position):t.position===t.lineStart&&gn(t)?ln(t,"unexpected end of the document within a double quoted scalar"):(t.position++,r=t.position)}ln(t,"unexpected end of the stream within a double quoted scalar")}(t,d)?g=!0:!function(t){var e,n,r;if(42!==(r=t.input.charCodeAt(t.position)))return!1;for(r=t.input.charCodeAt(++t.position),e=t.position;0!==r&&!Ke(r)&&!Qe(r);)r=t.input.charCodeAt(++t.position);return t.position===e&&ln(t,"name of an alias node must contain at least one character"),n=t.input.slice(e,t.position),Fe.call(t.anchorMap,n)||ln(t,'unidentified alias "'+n+'"'),t.result=t.anchorMap[n],mn(t,!0,-1),!0}(t)?function(t,e,n){var r,i,a,s,o,l,c,u,h=t.kind,d=t.result;if(Ke(u=t.input.charCodeAt(t.position))||Qe(u)||35===u||38===u||42===u||33===u||124===u||62===u||39===u||34===u||37===u||64===u||96===u)return!1;if((63===u||45===u)&&(Ke(r=t.input.charCodeAt(t.position+1))||n&&Qe(r)))return!1;for(t.kind="scalar",t.result="",i=a=t.position,s=!1;0!==u;){if(58===u){if(Ke(r=t.input.charCodeAt(t.position+1))||n&&Qe(r))break}else if(35===u){if(Ke(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&gn(t)||n&&Qe(u))break;if(Ge(u)){if(o=t.line,l=t.lineStart,c=t.lineIndent,mn(t,!1,-1),t.lineIndent>=e){s=!0,u=t.input.charCodeAt(t.position);continue}t.position=a,t.line=o,t.lineStart=l,t.lineIndent=c;break}}s&&(hn(t,i,a,!1),yn(t,t.line-o),i=a=t.position,s=!1),Xe(u)||(a=t.position+1),u=t.input.charCodeAt(++t.position)}return hn(t,i,a,!1),!!t.result||(t.kind=h,t.result=d,!1)}(t,d,Be===n)&&(g=!0,null===t.tag&&(t.tag="?")):(g=!0,null===t.tag&&null===t.anchor||ln(t,"alias node should not have any properties")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===f&&(g=o&&bn(t,p))),null===t.tag)null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);else if("?"===t.tag){for(null!==t.result&&"scalar"!==t.kind&&ln(t,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+t.kind+'"'),l=0,c=t.implicitTypes.length;l<c;l+=1)if((h=t.implicitTypes[l]).resolve(t.result)){t.result=h.construct(t.result),t.tag=h.tag,null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);break}}else if("!"!==t.tag){if(Fe.call(t.typeMap[t.kind||"fallback"],t.tag))h=t.typeMap[t.kind||"fallback"][t.tag];else for(h=null,l=0,c=(u=t.typeMap.multi[t.kind||"fallback"]).length;l<c;l+=1)if(t.tag.slice(0,u[l].tag.length)===u[l].tag){h=u[l];break}h||ln(t,"unknown tag !<"+t.tag+">"),null!==t.result&&h.kind!==t.kind&&ln(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+h.kind+'", not "'+t.kind+'"'),h.resolve(t.result,t.tag)?(t.result=h.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):ln(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||g}function kn(t){var e,n,r,i,a=t.position,s=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(i=t.input.charCodeAt(t.position))&&(mn(t,!0,-1),i=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==i));){for(s=!0,i=t.input.charCodeAt(++t.position),e=t.position;0!==i&&!Ke(i);)i=t.input.charCodeAt(++t.position);for(r=[],(n=t.input.slice(e,t.position)).length<1&&ln(t,"directive name must not be less than one character in length");0!==i;){for(;Xe(i);)i=t.input.charCodeAt(++t.position);if(35===i){do{i=t.input.charCodeAt(++t.position)}while(0!==i&&!Ge(i));break}if(Ge(i))break;for(e=t.position;0!==i&&!Ke(i);)i=t.input.charCodeAt(++t.position);r.push(t.input.slice(e,t.position))}0!==i&&fn(t),Fe.call(un,n)?un[n](t,n,r):cn(t,'unknown document directive "'+n+'"')}mn(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,mn(t,!0,-1)):s&&ln(t,"directives end mark is expected"),_n(t,t.lineIndent-1,Ze,!1,!0),mn(t,!0,-1),t.checkLineBreaks&&Ue.test(t.input.slice(a,t.position))&&cn(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&gn(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,mn(t,!0,-1)):t.position<t.length-1&&ln(t,"end of the stream or a document separator is expected")}function Tn(t,e){e=e||{},0!==(t=String(t)).length&&(10!==t.charCodeAt(t.length-1)&&13!==t.charCodeAt(t.length-1)&&(t+="\n"),65279===t.charCodeAt(0)&&(t=t.slice(1)));var n=new sn(t,e),r=t.indexOf("\0");for(-1!==r&&(n.position=r,ln(n,"null byte is not allowed in input")),n.input+="\0";32===n.input.charCodeAt(n.position);)n.lineIndent+=1,n.position+=1;for(;n.position<n.length-1;)kn(n);return n.documents}var wn=he,Sn={loadAll:function(t,e,n){null!==e&&"object"==typeof e&&void 0===n&&(n=e,e=null);var r=Tn(t,n);if("function"!=typeof e)return r;for(var i=0,a=r.length;i<a;i+=1)e(r[i])},load:function(t,e){var n=Tn(t,e);if(0!==n.length){if(1===n.length)return n[0];throw new ne("expected a single document in the stream, but found more")}}}.load;const En=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s;const Cn=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,Dn=/\s*%%.*\n/gm,An={},On=function(t,e){t=t.replace(En,"").replace(Cn,"").replace(Dn,"\n");for(const[n,{detector:r}]of Object.entries(An)){if(r(t,e))return n}throw new Error(`No diagram type detected for text: ${t}`)},In=(...t)=>{for(const{id:e,detector:n,loader:r}of t)Ln(e,n,r)},Ln=(t,e,n)=>{An[t]?It.error(`Detector with key ${t} already exists`):An[t]={detector:e,loader:n},It.debug(`Detector with key ${t} added${n?" with loader":""}`)},Nn=function(t,e,n){const{depth:r,clobber:i}=Object.assign({depth:2,clobber:!1},n);return Array.isArray(e)&&!Array.isArray(t)?(e.forEach((e=>Nn(t,e,n))),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach((e=>{t.includes(e)||t.push(e)})),t):void 0===t||r<=0?null!=t&&"object"==typeof t&&"object"==typeof e?Object.assign(t,e):e:(void 0!==e&&"object"==typeof t&&"object"==typeof e&&Object.keys(e).forEach((n=>{"object"!=typeof e[n]||void 0!==t[n]&&"object"!=typeof t[n]?(i||"object"!=typeof t[n]&&"object"!=typeof e[n])&&(t[n]=e[n]):(void 0===t[n]&&(t[n]=Array.isArray(e[n])?[]:{}),t[n]=Nn(t[n],e[n],{depth:r-1,clobber:i}))})),t)},Mn=Nn,Fn={curveBasis:o.$0Z,curveBasisClosed:o.Dts,curveBasisOpen:o.WQY,curveBumpX:o.qpX,curveBumpY:o.u93,curveBundle:o.tFB,curveCardinalClosed:o.OvA,curveCardinalOpen:o.dCK,curveCardinal:o.YY7,curveCatmullRomClosed:o.fGX,curveCatmullRomOpen:o.$m7,curveCatmullRom:o.zgE,curveLinear:o.c_6,curveLinearClosed:o.fxm,curveMonotoneX:o.FdL,curveMonotoneY:o.ak_,curveNatural:o.SxZ,curveStep:o.eA_,curveStepAfter:o.jsv,curveStepBefore:o.iJ},Bn=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,Rn=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,$n=function(t,e=null){try{const n=new RegExp(`[%]{2}(?![{]${Rn.source})(?=[}][%]{2}).*\n`,"ig");let r;t=t.trim().replace(n,"").replace(/'/gm,'"'),It.debug(`Detecting diagram directive${null!==e?" type:"+e:""} based on the text:${t}`);const i=[];for(;null!==(r=Bn.exec(t));)if(r.index===Bn.lastIndex&&Bn.lastIndex++,r&&!e||e&&r[1]&&r[1].match(e)||e&&r[2]&&r[2].match(e)){const t=r[1]?r[1]:r[2],e=r[3]?r[3].trim():r[4]?JSON.parse(r[4].trim()):null;i.push({type:t,args:e})}return 0===i.length&&i.push({type:t,args:null}),1===i.length?i[0]:i}catch(n){return It.error(`ERROR: ${n.message} - Unable to parse directive\n ${null!==e?" type:"+e:""} based on the text:${t}`),{type:null,args:null}}};function Zn(t,e){if(!t)return e;const n=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return Fn[n]||e}function jn(t,e){return t&&e?Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)):0}function Pn(t){let e="",n="";for(const r of t)void 0!==r&&(r.startsWith("color:")||r.startsWith("text-align:")?n=n+r+";":e=e+r+";");return{style:e,labelStyle:n}}let zn=0;const Yn=()=>(zn++,"id-"+Math.random().toString(36).substr(2,12)+"-"+zn);const Un=t=>function(t){let e="";const n="0123456789abcdef",r=n.length;for(let i=0;i<t;i++)e+=n.charAt(Math.floor(Math.random()*r));return e}(t.length),Wn=function(t,e){const n=e.text.replace(zt.lineBreakRegex," "),[,r]=er(e.fontSize),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.style("text-anchor",e.anchor),i.style("font-family",e.fontFamily),i.style("font-size",r),i.style("font-weight",e.fontWeight),i.attr("fill",e.fill),void 0!==e.class&&i.attr("class",e.class);const a=i.append("tspan");return a.attr("x",e.x+2*e.textMargin),a.attr("fill",e.fill),a.text(n),i},Hn=(0,_.Z)(((t,e,n)=>{if(!t)return t;if(n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"<br/>"},n),zt.lineBreakRegex.test(t))return t;const r=t.split(" "),i=[];let a="";return r.forEach(((t,s)=>{const o=Gn(`${t} `,n),l=Gn(a,n);if(o>e){const{hyphenatedStrings:r,remainingWord:s}=qn(t,e,"-",n);i.push(a,...r),a=s}else l+o>=e?(i.push(a),a=t):a=[a,t].filter(Boolean).join(" ");s+1===r.length&&i.push(a)})),i.filter((t=>""!==t)).join(n.joinWith)}),((t,e,n)=>`${t}${e}${n.fontSize}${n.fontWeight}${n.fontFamily}${n.joinWith}`)),qn=(0,_.Z)(((t,e,n="-",r)=>{r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},r);const i=[...t],a=[];let s="";return i.forEach(((t,o)=>{const l=`${s}${t}`;if(Gn(l,r)>=e){const t=o+1,e=i.length===t,r=`${l}${n}`;a.push(e?l:r),s=""}else s=l})),{hyphenatedStrings:a,remainingWord:s}}),((t,e,n="-",r)=>`${t}${e}${n}${r.fontSize}${r.fontWeight}${r.fontFamily}`));function Vn(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:15},e),Xn(t,e).height}function Gn(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e),Xn(t,e).width}const Xn=(0,_.Z)(((t,e)=>{e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e);const{fontSize:n,fontFamily:r,fontWeight:i}=e;if(!t)return{width:0,height:0};const[,a]=er(n),s=["sans-serif",r],l=t.split(zt.lineBreakRegex),c=[],u=(0,o.Ys)("body");if(!u.remove)return{width:0,height:0,lineHeight:0};const h=u.append("svg");for(const o of s){let t=0;const e={width:0,height:0,lineHeight:0};for(const n of l){const r={x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0};r.text=n;const s=Wn(h,r).style("font-size",a).style("font-weight",i).style("font-family",o),l=(s._groups||s)[0][0].getBBox();e.width=Math.round(Math.max(e.width,l.width)),t=Math.round(l.height),e.height+=t,e.lineHeight=Math.round(Math.max(e.lineHeight,t))}c.push(e)}h.remove();return c[isNaN(c[1].height)||isNaN(c[1].width)||isNaN(c[1].lineHeight)||c[0].height>c[1].height&&c[0].width>c[1].width&&c[0].lineHeight>c[1].lineHeight?0:1]}),((t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`));let Kn;const Qn=t=>{if(It.debug("directiveSanitizer called with",t),"object"==typeof t&&(t.length?t.forEach((t=>Qn(t))):Object.keys(t).forEach((e=>{It.debug("Checking key",e),e.startsWith("__")&&(It.debug("sanitize deleting __ option",e),delete t[e]),e.includes("proto")&&(It.debug("sanitize deleting proto option",e),delete t[e]),e.includes("constr")&&(It.debug("sanitize deleting constr option",e),delete t[e]),e.includes("themeCSS")&&(It.debug("sanitizing themeCss option"),t[e]=Jn(t[e])),e.includes("fontFamily")&&(It.debug("sanitizing fontFamily option"),t[e]=Jn(t[e])),e.includes("altFontFamily")&&(It.debug("sanitizing altFontFamily option"),t[e]=Jn(t[e])),Xt.includes(e)?"object"==typeof t[e]&&(It.debug("sanitize deleting object",e),Qn(t[e])):(It.debug("sanitize deleting option",e),delete t[e])}))),t.themeVariables){const e=Object.keys(t.themeVariables);for(const n of e){const e=t.themeVariables[n];e&&e.match&&!e.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[n]="")}}It.debug("After sanitization",t)},Jn=t=>{let e=0,n=0;for(const r of t){if(e<n)return"{ /* ERROR: Unbalanced CSS */ }";"{"===r?e++:"}"===r&&n++}return e!==n?"{ /* ERROR: Unbalanced CSS */ }":t};function tr(t){return"str"in t}const er=t=>{if("number"==typeof t)return[t,t+"px"];const e=parseInt(t,10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]},nr={assignWithDepth:Mn,wrapLabel:Hn,calculateTextHeight:Vn,calculateTextWidth:Gn,calculateTextDimensions:Xn,detectInit:function(t,e){const n=$n(t,/(?:init\b)|(?:initialize\b)/);let r={};if(Array.isArray(n)){const t=n.map((t=>t.args));Qn(t),r=Mn(r,[...t])}else r=n.args;if(r){let n=On(t,e);["config"].forEach((t=>{void 0!==r[t]&&("flowchart-v2"===n&&(n="flowchart"),r[n]=r[t],delete r[t])}))}return r},detectDirective:$n,isSubstringInArray:function(t,e){for(const[n,r]of e.entries())if(r.match(t))return n;return-1},interpolateToCurve:Zn,calcLabelPosition:function(t){return 1===t.length?t[0]:function(t){let e,n=0;t.forEach((t=>{n+=jn(t,e),e=t}));let r,i=n/2;return e=void 0,t.forEach((t=>{if(e&&!r){const n=jn(t,e);if(n<i)i-=n;else{const a=i/n;a<=0&&(r=e),a>=1&&(r={x:t.x,y:t.y}),a>0&&a<1&&(r={x:(1-a)*e.x+a*t.x,y:(1-a)*e.y+a*t.y})}}e=t})),r}(t)},calcCardinalityPosition:(t,e,n)=>{let r;It.info(`our points ${JSON.stringify(e)}`),e[0]!==n&&(e=e.reverse());let i,a=25;r=void 0,e.forEach((t=>{if(r&&!i){const e=jn(t,r);if(e<a)a-=e;else{const n=a/e;n<=0&&(i=r),n>=1&&(i={x:t.x,y:t.y}),n>0&&n<1&&(i={x:(1-n)*r.x+n*t.x,y:(1-n)*r.y+n*t.y})}}r=t}));const s=t?10:5,o=Math.atan2(e[0].y-i.y,e[0].x-i.x),l={x:0,y:0};return l.x=Math.sin(o)*s+(e[0].x+i.x)/2,l.y=-Math.cos(o)*s+(e[0].y+i.y)/2,l},calcTerminalLabelPosition:function(t,e,n){let r,i=JSON.parse(JSON.stringify(n));It.info("our points",i),"start_left"!==e&&"start_right"!==e&&(i=i.reverse()),i.forEach((t=>{r=t}));let a,s=25+t;r=void 0,i.forEach((t=>{if(r&&!a){const e=jn(t,r);if(e<s)s-=e;else{const n=s/e;n<=0&&(a=r),n>=1&&(a={x:t.x,y:t.y}),n>0&&n<1&&(a={x:(1-n)*r.x+n*t.x,y:(1-n)*r.y+n*t.y})}}r=t}));const o=10+.5*t,l=Math.atan2(i[0].y-a.y,i[0].x-a.x),c={x:0,y:0};return c.x=Math.sin(l)*o+(i[0].x+a.x)/2,c.y=-Math.cos(l)*o+(i[0].y+a.y)/2,"start_left"===e&&(c.x=Math.sin(l+Math.PI)*o+(i[0].x+a.x)/2,c.y=-Math.cos(l+Math.PI)*o+(i[0].y+a.y)/2),"end_right"===e&&(c.x=Math.sin(l-Math.PI)*o+(i[0].x+a.x)/2-5,c.y=-Math.cos(l-Math.PI)*o+(i[0].y+a.y)/2-5),"end_left"===e&&(c.x=Math.sin(l)*o+(i[0].x+a.x)/2-5,c.y=-Math.cos(l)*o+(i[0].y+a.y)/2-5),c},formatUrl:function(t,e){const n=t.trim();if(n)return"loose"!==e.securityLevel?(0,s.N)(n):n},getStylesFromArray:Pn,generateId:Yn,random:Un,runFunc:(t,...e)=>{const n=t.split("."),r=n.length-1,i=n[r];let a=window;for(let s=0;s<r;s++)if(a=a[n[s]],!a)return;a[i](...e)},entityDecode:function(t){return Kn=Kn||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),Kn.innerHTML=t,unescape(Kn.textContent)},initIdGenerator:class{constructor(t,e){this.deterministic=t,this.seed=e,this.count=e?e.length:0}next(){return this.deterministic?this.count++:Date.now()}},directiveSanitizer:Qn,sanitizeCss:Jn,insertTitle:(t,e,n,r)=>{if(!r)return;const i=t.node().getBBox();t.append("text").text(r).attr("x",i.x+i.width/2).attr("y",-n).attr("class",e)},parseFontSize:er},rr="9.4.3",ir=Object.freeze(Kt);let ar,sr=Mn({},ir),or=[],lr=Mn({},ir);const cr=(t,e)=>{let n=Mn({},t),r={};for(const i of e)pr(i),r=Mn(r,i);if(n=Mn(n,r),r.theme&&r.theme in qt){const t=Mn({},ar),e=Mn(t.themeVariables||{},r.themeVariables);n.theme&&n.theme in qt&&(n.themeVariables=qt[n.theme].getThemeVariables(e))}return lr=n,br(lr),lr},ur=()=>Mn({},sr),hr=t=>(br(t),Mn(lr,t),dr()),dr=()=>Mn({},lr),pr=t=>{["secure",...sr.secure??[]].forEach((e=>{void 0!==t[e]&&(It.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])})),Object.keys(t).forEach((e=>{0===e.indexOf("__")&&delete t[e]})),Object.keys(t).forEach((e=>{"string"==typeof t[e]&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],"object"==typeof t[e]&&pr(t[e])}))},fr=t=>{t.fontFamily&&(t.themeVariables&&t.themeVariables.fontFamily||(t.themeVariables={fontFamily:t.fontFamily})),or.push(t),cr(sr,or)},mr=(t=sr)=>{or=[],cr(t,or)};var gr=(t=>(t.LAZY_LOAD_DEPRECATED="The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.",t))(gr||{});const yr={},br=t=>{var e;t&&((t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&(yr[e="LAZY_LOAD_DEPRECATED"]||(It.warn(gr[e]),yr[e]=!0)))},xr=function(t,e,n,r){const i=function(t,e,n){let r=new Map;return n?(r.set("width","100%"),r.set("style",`max-width: ${e}px;`)):(r.set("height",t),r.set("width",e)),r}(e,n,r);!function(t,e){for(let n of e)t.attr(n[0],n[1])}(t,i)},vr=function(t,e,n,r){const i=e.node().getBBox(),a=i.width,s=i.height;It.info(`SVG bounds: ${a}x${s}`,i);let o=0,l=0;It.info(`Graph bounds: ${o}x${l}`,t),o=a+2*n,l=s+2*n,It.info(`Calculated bounds: ${o}x${l}`),xr(e,l,o,r);const c=`${i.x-n} ${i.y-n} ${i.width+2*n} ${i.height+2*n}`;e.attr("viewBox",c)},_r=t=>`g.classGroup text {\n fill: ${t.nodeBorder};\n fill: ${t.classText};\n stroke: none;\n font-family: ${t.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${t.classText};\n}\n.edgeLabel .label rect {\n fill: ${t.mainBkg};\n}\n.label text {\n fill: ${t.classText};\n}\n.edgeLabel .label span {\n background: ${t.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${t.nodeBorder};\n stroke: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${t.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${t.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${t.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n#compositionStart, .composition {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n`,kr=t=>`\n .entityBox {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n }\n\n .attributeBoxOdd {\n fill: ${t.attributeBackgroundColorOdd};\n stroke: ${t.nodeBorder};\n }\n\n .attributeBoxEven {\n fill: ${t.attributeBackgroundColorEven};\n stroke: ${t.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${t.tertiaryColor};\n opacity: 0.7;\n background-color: ${t.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${t.lineColor};\n }\n\n .entityTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n } \n`,Tr=()=>"",wr=t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n .cluster-label text {\n fill: ${t.titleColor};\n }\n .cluster-label span {\n color: ${t.titleColor};\n }\n\n .label text,span {\n fill: ${t.nodeTextColor||t.textColor};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ${t.clusterBkg};\n stroke: ${t.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n .cluster span {\n color: ${t.titleColor};\n }\n /* .cluster div {\n color: ${t.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n`,Sr=t=>`\n .mermaid-main-font {\n font-family: "trebuchet ms", verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n .exclude-range {\n fill: ${t.excludeBkgColor};\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${t.sectionBkgColor};\n }\n\n .section2 {\n fill: ${t.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${t.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n // font-size: ${t.ganttFontSize};\n // text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${t.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ${t.fontFamily};\n fill: ${t.textColor};\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${t.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n\n // .taskText:not([font-size]) {\n // font-size: ${t.ganttFontSize};\n // }\n\n .taskTextOutsideRight {\n fill: ${t.taskTextDarkColor};\n text-anchor: start;\n // font-size: ${t.ganttFontSize};\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ${t.taskTextDarkColor};\n text-anchor: end;\n // font-size: ${t.ganttFontSize};\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${t.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${t.taskBkgColor};\n stroke: ${t.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${t.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${t.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${t.activeTaskBkgColor};\n stroke: ${t.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${t.doneTaskBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor} ;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n`,Er=()=>"",Cr=t=>`\n .pieCircle{\n stroke: ${t.pieStrokeColor};\n stroke-width : ${t.pieStrokeWidth};\n opacity : ${t.pieOpacity};\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${t.pieTitleTextSize};\n fill: ${t.pieTitleTextColor};\n font-family: ${t.fontFamily};\n }\n .slice {\n font-family: ${t.fontFamily};\n fill: ${t.pieSectionTextColor};\n font-size:${t.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${t.pieLegendTextColor};\n font-family: ${t.fontFamily};\n font-size: ${t.pieLegendTextSize};\n }\n`,Dr=t=>`\n\n marker {\n fill: ${t.relationColor};\n stroke: ${t.relationColor};\n }\n\n marker.cross {\n stroke: ${t.lineColor};\n }\n\n svg {\n font-family: ${t.fontFamily};\n font-size: ${t.fontSize};\n }\n\n .reqBox {\n fill: ${t.requirementBackground};\n fill-opacity: 100%;\n stroke: ${t.requirementBorderColor};\n stroke-width: ${t.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${t.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${t.relationLabelBackground};\n fill-opacity: 100%;\n }\n\n .req-title-line {\n stroke: ${t.requirementBorderColor};\n stroke-width: ${t.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${t.relationColor};\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ${t.relationLabelColor};\n }\n\n`,Ar=t=>`.actor {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${t.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${t.actorLineColor};\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${t.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${t.signalColor};\n }\n\n #arrowhead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .sequenceNumber {\n fill: ${t.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${t.signalColor};\n }\n\n #crosshead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .messageText {\n fill: ${t.signalTextColor};\n stroke: none;\n }\n\n .labelBox {\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${t.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${t.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${t.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation1 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation2 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${t.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n .actor-man circle, line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n stroke-width: 2px;\n }\n`,Or=t=>`\ndefs #statediagram-barbEnd {\n fill: ${t.transitionColor};\n stroke: ${t.transitionColor};\n }\ng.stateGroup text {\n fill: ${t.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${t.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${t.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${t.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${t.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n\n text {\n fill: ${t.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${t.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel .label text {\n fill: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${t.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${t.innerEndBackground};\n stroke: ${t.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${t.compositeBackground||t.background};\n // stroke: ${t.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${t.stateBkg||t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${t.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${t.compositeTitleBackground};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${t.stateLabelColor};\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${t.stateBorder||t.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${t.compositeBackground||t.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${t.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${t.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${t.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${t.lineColor};\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n`,Ir=t=>`.label {\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n color: ${t.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${t.textColor}\n }\n\n .legend {\n fill: ${t.textColor};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${t.textColor}\n }\n\n .face {\n ${t.faceColor?`fill: ${t.faceColor}`:"fill: #FFF8DC"};\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${t.fillType0?`fill: ${t.fillType0}`:""};\n }\n .task-type-1, .section-type-1 {\n ${t.fillType0?`fill: ${t.fillType1}`:""};\n }\n .task-type-2, .section-type-2 {\n ${t.fillType0?`fill: ${t.fillType2}`:""};\n }\n .task-type-3, .section-type-3 {\n ${t.fillType0?`fill: ${t.fillType3}`:""};\n }\n .task-type-4, .section-type-4 {\n ${t.fillType0?`fill: ${t.fillType4}`:""};\n }\n .task-type-5, .section-type-5 {\n ${t.fillType0?`fill: ${t.fillType5}`:""};\n }\n .task-type-6, .section-type-6 {\n ${t.fillType0?`fill: ${t.fillType6}`:""};\n }\n .task-type-7, .section-type-7 {\n ${t.fillType0?`fill: ${t.fillType7}`:""};\n }\n\n .actor-0 {\n ${t.actor0?`fill: ${t.actor0}`:""};\n }\n .actor-1 {\n ${t.actor1?`fill: ${t.actor1}`:""};\n }\n .actor-2 {\n ${t.actor2?`fill: ${t.actor2}`:""};\n }\n .actor-3 {\n ${t.actor3?`fill: ${t.actor3}`:""};\n }\n .actor-4 {\n ${t.actor4?`fill: ${t.actor4}`:""};\n }\n .actor-5 {\n ${t.actor5?`fill: ${t.actor5}`:""};\n }\n`,Lr=t=>`.person {\n stroke: ${t.personBorder};\n fill: ${t.personBkg};\n }\n`,Nr={flowchart:wr,"flowchart-v2":wr,sequence:Ar,gantt:Sr,classDiagram:_r,"classDiagram-v2":_r,class:_r,stateDiagram:Or,state:Or,info:Er,pie:Cr,er:kr,error:Tr,journey:Ir,requirement:Dr,c4:Lr},Mr=(t,e,n)=>{let r="";return t in Nr&&Nr[t]?r=Nr[t](n):It.warn(`No theme found for ${t}`),` & {\n font-family: ${n.fontFamily};\n font-size: ${n.fontSize};\n fill: ${n.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n & .error-icon {\n fill: ${n.errorBkgColor};\n }\n & .error-text {\n fill: ${n.errorTextColor};\n stroke: ${n.errorTextColor};\n }\n\n & .edge-thickness-normal {\n stroke-width: 2px;\n }\n & .edge-thickness-thick {\n stroke-width: 3.5px\n }\n & .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n & .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n & .marker {\n fill: ${n.lineColor};\n stroke: ${n.lineColor};\n }\n & .marker.cross {\n stroke: ${n.lineColor};\n }\n\n & svg {\n font-family: ${n.fontFamily};\n font-size: ${n.fontSize};\n }\n\n ${r}\n\n ${e}\n`};let Fr="",Br="",Rr="";const $r=t=>Bt(t,dr()),Zr=function(){Fr="",Rr="",Br=""},jr=function(t){Fr=$r(t).replace(/^\s+/g,"")},Pr=function(){return Fr||Br},zr=function(t){Rr=$r(t).replace(/\n\s+/g,"\n")},Yr=function(){return Rr},Ur=function(t){Br=$r(t)},Wr=function(){return Br},Hr={setAccTitle:jr,getAccTitle:Pr,setDiagramTitle:Ur,getDiagramTitle:Wr,getAccDescription:Yr,setAccDescription:zr,clear:Zr},qr=Object.freeze(Object.defineProperty({__proto__:null,clear:Zr,default:Hr,getAccDescription:Yr,getAccTitle:Pr,getDiagramTitle:Wr,setAccDescription:zr,setAccTitle:jr,setDiagramTitle:Ur},Symbol.toStringTag,{value:"Module"}));let Vr={};const Gr=function(t,e,n,r){It.debug("parseDirective is being called",e,n,r);try{if(void 0!==e)switch(e=e.trim(),n){case"open_directive":Vr={};break;case"type_directive":if(!Vr)throw new Error("currentDirective is undefined");Vr.type=e.toLowerCase();break;case"arg_directive":if(!Vr)throw new Error("currentDirective is undefined");Vr.args=JSON.parse(e);break;case"close_directive":Xr(t,Vr,r),Vr=void 0}}catch(i){It.error(`Error while rendering sequenceDiagram directive: ${e} jison context: ${n}`),It.error(i.message)}},Xr=function(t,e,n){switch(It.info(`Directive type=${e.type} with args:`,e.args),e.type){case"init":case"initialize":["config"].forEach((t=>{void 0!==e.args[t]&&("flowchart-v2"===n&&(n="flowchart"),e.args[n]=e.args[t],delete e.args[t])})),It.info("sanitize in handleDirective",e.args),Qn(e.args),It.info("sanitize in handleDirective (done)",e.args),fr(e.args);break;case"wrap":case"nowrap":t&&t.setWrap&&t.setWrap("wrap"===e.type);break;case"themeCss":It.warn("themeCss encountered");break;default:It.warn(`Unhandled directive: source: '%%{${e.type}: ${JSON.stringify(e.args?e.args:{})}}%%`,e)}},Kr=It,Qr=Lt,Jr=dr,ti=t=>Bt(t,Jr()),ei=vr,ni=(t,e,n,r)=>Gr(t,e,n,r),ri={},ii=(t,e,n)=>{if(ri[t])throw new Error(`Diagram ${t} already registered.`);var r,i;ri[t]=e,n&&Ln(t,n),r=t,i=e.styles,Nr[r]=i,e.injectUtils&&e.injectUtils(Kr,Qr,Jr,ti,ei,qr,ni)},ai=t=>{if(t in ri)return ri[t];throw new Error(`Diagram ${t} not found.`)};var si=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,4],r=[1,7],i=[1,5],a=[1,9],s=[1,6],o=[2,6],l=[1,16],c=[6,8,14,20,22,24,25,27,29,32,37,40,50,55],u=[8,14,20,22,24,25,27,29,32,37,40],h=[8,13,14,20,22,24,25,27,29,32,37,40],d=[1,26],p=[6,8,14,50,55],f=[8,14,55],m=[1,53],g=[1,52],y=[8,14,30,33,35,38,55],b=[1,67],x=[1,68],v=[1,69],_=[8,14,33,35,42,55],k={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,GG:6,document:7,EOF:8,":":9,DIR:10,options:11,body:12,OPT:13,NL:14,line:15,statement:16,commitStatement:17,mergeStatement:18,cherryPickStatement:19,acc_title:20,acc_title_value:21,acc_descr:22,acc_descr_value:23,acc_descr_multiline_value:24,section:25,branchStatement:26,CHECKOUT:27,ref:28,BRANCH:29,ORDER:30,NUM:31,CHERRY_PICK:32,COMMIT_ID:33,STR:34,COMMIT_TAG:35,EMPTYSTR:36,MERGE:37,COMMIT_TYPE:38,commitType:39,COMMIT:40,commit_arg:41,COMMIT_MSG:42,NORMAL:43,REVERSE:44,HIGHLIGHT:45,openDirective:46,typeDirective:47,closeDirective:48,argDirective:49,open_directive:50,type_directive:51,arg_directive:52,close_directive:53,ID:54,";":55,$accept:0,$end:1},terminals_:{2:"error",6:"GG",8:"EOF",9:":",10:"DIR",13:"OPT",14:"NL",20:"acc_title",21:"acc_title_value",22:"acc_descr",23:"acc_descr_value",24:"acc_descr_multiline_value",25:"section",27:"CHECKOUT",29:"BRANCH",30:"ORDER",31:"NUM",32:"CHERRY_PICK",33:"COMMIT_ID",34:"STR",35:"COMMIT_TAG",36:"EMPTYSTR",37:"MERGE",38:"COMMIT_TYPE",40:"COMMIT",42:"COMMIT_MSG",43:"NORMAL",44:"REVERSE",45:"HIGHLIGHT",50:"open_directive",51:"type_directive",52:"arg_directive",53:"close_directive",54:"ID",55:";"},productions_:[0,[3,2],[3,2],[3,3],[3,4],[3,5],[7,0],[7,2],[11,2],[11,1],[12,0],[12,2],[15,2],[15,1],[16,1],[16,1],[16,1],[16,2],[16,2],[16,1],[16,1],[16,1],[16,2],[26,2],[26,4],[19,3],[19,5],[19,5],[19,5],[19,5],[18,2],[18,4],[18,4],[18,4],[18,6],[18,6],[18,6],[18,6],[18,6],[18,6],[18,8],[18,8],[18,8],[18,8],[18,8],[18,8],[17,2],[17,3],[17,3],[17,5],[17,5],[17,3],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,3],[17,5],[17,5],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[41,0],[41,1],[39,1],[39,1],[39,1],[5,3],[5,5],[46,1],[47,1],[49,1],[48,1],[28,1],[28,1],[4,1],[4,1],[4,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 3:return a[o];case 4:return a[o-1];case 5:return r.setDirection(a[o-3]),a[o-1];case 7:r.setOptions(a[o-1]),this.$=a[o];break;case 8:a[o-1]+=a[o],this.$=a[o-1];break;case 10:this.$=[];break;case 11:a[o-1].push(a[o]),this.$=a[o-1];break;case 12:this.$=a[o-1];break;case 17:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 18:case 19:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 20:r.addSection(a[o].substr(8)),this.$=a[o].substr(8);break;case 22:r.checkout(a[o]);break;case 23:r.branch(a[o]);break;case 24:r.branch(a[o-2],a[o]);break;case 25:r.cherryPick(a[o],"",void 0);break;case 26:r.cherryPick(a[o-2],"",a[o]);break;case 27:case 29:r.cherryPick(a[o-2],"","");break;case 28:r.cherryPick(a[o],"",a[o-2]);break;case 30:r.merge(a[o],"","","");break;case 31:r.merge(a[o-2],a[o],"","");break;case 32:r.merge(a[o-2],"",a[o],"");break;case 33:r.merge(a[o-2],"","",a[o]);break;case 34:r.merge(a[o-4],a[o],"",a[o-2]);break;case 35:r.merge(a[o-4],"",a[o],a[o-2]);break;case 36:r.merge(a[o-4],"",a[o-2],a[o]);break;case 37:r.merge(a[o-4],a[o-2],a[o],"");break;case 38:r.merge(a[o-4],a[o-2],"",a[o]);break;case 39:r.merge(a[o-4],a[o],a[o-2],"");break;case 40:r.merge(a[o-6],a[o-4],a[o-2],a[o]);break;case 41:r.merge(a[o-6],a[o],a[o-4],a[o-2]);break;case 42:r.merge(a[o-6],a[o-4],a[o],a[o-2]);break;case 43:r.merge(a[o-6],a[o-2],a[o-4],a[o]);break;case 44:r.merge(a[o-6],a[o],a[o-2],a[o-4]);break;case 45:r.merge(a[o-6],a[o-2],a[o],a[o-4]);break;case 46:r.commit(a[o]);break;case 47:r.commit("","",r.commitType.NORMAL,a[o]);break;case 48:r.commit("","",a[o],"");break;case 49:r.commit("","",a[o],a[o-2]);break;case 50:r.commit("","",a[o-2],a[o]);break;case 51:r.commit("",a[o],r.commitType.NORMAL,"");break;case 52:r.commit("",a[o-2],r.commitType.NORMAL,a[o]);break;case 53:r.commit("",a[o],r.commitType.NORMAL,a[o-2]);break;case 54:r.commit("",a[o-2],a[o],"");break;case 55:r.commit("",a[o],a[o-2],"");break;case 56:r.commit("",a[o-4],a[o-2],a[o]);break;case 57:r.commit("",a[o-4],a[o],a[o-2]);break;case 58:r.commit("",a[o-2],a[o-4],a[o]);break;case 59:r.commit("",a[o],a[o-4],a[o-2]);break;case 60:r.commit("",a[o],a[o-2],a[o-4]);break;case 61:r.commit("",a[o-2],a[o],a[o-4]);break;case 62:r.commit(a[o],"",r.commitType.NORMAL,"");break;case 63:r.commit(a[o],"",r.commitType.NORMAL,a[o-2]);break;case 64:r.commit(a[o-2],"",r.commitType.NORMAL,a[o]);break;case 65:r.commit(a[o-2],"",a[o],"");break;case 66:r.commit(a[o],"",a[o-2],"");break;case 67:r.commit(a[o],a[o-2],r.commitType.NORMAL,"");break;case 68:r.commit(a[o-2],a[o],r.commitType.NORMAL,"");break;case 69:r.commit(a[o-4],"",a[o-2],a[o]);break;case 70:r.commit(a[o-4],"",a[o],a[o-2]);break;case 71:r.commit(a[o-2],"",a[o-4],a[o]);break;case 72:r.commit(a[o],"",a[o-4],a[o-2]);break;case 73:r.commit(a[o],"",a[o-2],a[o-4]);break;case 74:r.commit(a[o-2],"",a[o],a[o-4]);break;case 75:r.commit(a[o-4],a[o],a[o-2],"");break;case 76:r.commit(a[o-4],a[o-2],a[o],"");break;case 77:r.commit(a[o-2],a[o],a[o-4],"");break;case 78:r.commit(a[o],a[o-2],a[o-4],"");break;case 79:r.commit(a[o],a[o-4],a[o-2],"");break;case 80:r.commit(a[o-2],a[o-4],a[o],"");break;case 81:r.commit(a[o-4],a[o],r.commitType.NORMAL,a[o-2]);break;case 82:r.commit(a[o-4],a[o-2],r.commitType.NORMAL,a[o]);break;case 83:r.commit(a[o-2],a[o],r.commitType.NORMAL,a[o-4]);break;case 84:r.commit(a[o],a[o-2],r.commitType.NORMAL,a[o-4]);break;case 85:r.commit(a[o],a[o-4],r.commitType.NORMAL,a[o-2]);break;case 86:r.commit(a[o-2],a[o-4],r.commitType.NORMAL,a[o]);break;case 87:r.commit(a[o-6],a[o-4],a[o-2],a[o]);break;case 88:r.commit(a[o-6],a[o-4],a[o],a[o-2]);break;case 89:r.commit(a[o-6],a[o-2],a[o-4],a[o]);break;case 90:r.commit(a[o-6],a[o],a[o-4],a[o-2]);break;case 91:r.commit(a[o-6],a[o-2],a[o],a[o-4]);break;case 92:r.commit(a[o-6],a[o],a[o-2],a[o-4]);break;case 93:r.commit(a[o-4],a[o-6],a[o-2],a[o]);break;case 94:r.commit(a[o-4],a[o-6],a[o],a[o-2]);break;case 95:r.commit(a[o-2],a[o-6],a[o-4],a[o]);break;case 96:r.commit(a[o],a[o-6],a[o-4],a[o-2]);break;case 97:r.commit(a[o-2],a[o-6],a[o],a[o-4]);break;case 98:r.commit(a[o],a[o-6],a[o-2],a[o-4]);break;case 99:r.commit(a[o],a[o-4],a[o-2],a[o-6]);break;case 100:r.commit(a[o-2],a[o-4],a[o],a[o-6]);break;case 101:r.commit(a[o],a[o-2],a[o-4],a[o-6]);break;case 102:r.commit(a[o-2],a[o],a[o-4],a[o-6]);break;case 103:r.commit(a[o-4],a[o-2],a[o],a[o-6]);break;case 104:r.commit(a[o-4],a[o],a[o-2],a[o-6]);break;case 105:r.commit(a[o-2],a[o-4],a[o-6],a[o]);break;case 106:r.commit(a[o],a[o-4],a[o-6],a[o-2]);break;case 107:r.commit(a[o-2],a[o],a[o-6],a[o-4]);break;case 108:r.commit(a[o],a[o-2],a[o-6],a[o-4]);break;case 109:r.commit(a[o-4],a[o-2],a[o-6],a[o]);break;case 110:r.commit(a[o-4],a[o],a[o-6],a[o-2]);break;case 111:this.$="";break;case 112:this.$=a[o];break;case 113:this.$=r.commitType.NORMAL;break;case 114:this.$=r.commitType.REVERSE;break;case 115:this.$=r.commitType.HIGHLIGHT;break;case 118:r.parseDirective("%%{","open_directive");break;case 119:r.parseDirective(a[o],"type_directive");break;case 120:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 121:r.parseDirective("}%%","close_directive","gitGraph")}},table:[{3:1,4:2,5:3,6:n,8:r,14:i,46:8,50:a,55:s},{1:[3]},{3:10,4:2,5:3,6:n,8:r,14:i,46:8,50:a,55:s},{3:11,4:2,5:3,6:n,8:r,14:i,46:8,50:a,55:s},{7:12,8:o,9:[1,13],10:[1,14],11:15,14:l},e(c,[2,124]),e(c,[2,125]),e(c,[2,126]),{47:17,51:[1,18]},{51:[2,118]},{1:[2,1]},{1:[2,2]},{8:[1,19]},{7:20,8:o,11:15,14:l},{9:[1,21]},e(u,[2,10],{12:22,13:[1,23]}),e(h,[2,9]),{9:[1,25],48:24,53:d},e([9,53],[2,119]),{1:[2,3]},{8:[1,27]},{7:28,8:o,11:15,14:l},{8:[2,7],14:[1,31],15:29,16:30,17:32,18:33,19:34,20:[1,35],22:[1,36],24:[1,37],25:[1,38],26:39,27:[1,40],29:[1,44],32:[1,43],37:[1,42],40:[1,41]},e(h,[2,8]),e(p,[2,116]),{49:45,52:[1,46]},e(p,[2,121]),{1:[2,4]},{8:[1,47]},e(u,[2,11]),{4:48,8:r,14:i,55:s},e(u,[2,13]),e(f,[2,14]),e(f,[2,15]),e(f,[2,16]),{21:[1,49]},{23:[1,50]},e(f,[2,19]),e(f,[2,20]),e(f,[2,21]),{28:51,34:m,54:g},e(f,[2,111],{41:54,33:[1,57],34:[1,59],35:[1,55],38:[1,56],42:[1,58]}),{28:60,34:m,54:g},{33:[1,61],35:[1,62]},{28:63,34:m,54:g},{48:64,53:d},{53:[2,120]},{1:[2,5]},e(u,[2,12]),e(f,[2,17]),e(f,[2,18]),e(f,[2,22]),e(y,[2,122]),e(y,[2,123]),e(f,[2,46]),{34:[1,65]},{39:66,43:b,44:x,45:v},{34:[1,70]},{34:[1,71]},e(f,[2,112]),e(f,[2,30],{33:[1,72],35:[1,74],38:[1,73]}),{34:[1,75]},{34:[1,76],36:[1,77]},e(f,[2,23],{30:[1,78]}),e(p,[2,117]),e(f,[2,47],{33:[1,80],38:[1,79],42:[1,81]}),e(f,[2,48],{33:[1,83],35:[1,82],42:[1,84]}),e(_,[2,113]),e(_,[2,114]),e(_,[2,115]),e(f,[2,51],{35:[1,85],38:[1,86],42:[1,87]}),e(f,[2,62],{33:[1,90],35:[1,88],38:[1,89]}),{34:[1,91]},{39:92,43:b,44:x,45:v},{34:[1,93]},e(f,[2,25],{35:[1,94]}),{33:[1,95]},{33:[1,96]},{31:[1,97]},{39:98,43:b,44:x,45:v},{34:[1,99]},{34:[1,100]},{34:[1,101]},{34:[1,102]},{34:[1,103]},{34:[1,104]},{39:105,43:b,44:x,45:v},{34:[1,106]},{34:[1,107]},{39:108,43:b,44:x,45:v},{34:[1,109]},e(f,[2,31],{35:[1,111],38:[1,110]}),e(f,[2,32],{33:[1,113],35:[1,112]}),e(f,[2,33],{33:[1,114],38:[1,115]}),{34:[1,116],36:[1,117]},{34:[1,118]},{34:[1,119]},e(f,[2,24]),e(f,[2,49],{33:[1,120],42:[1,121]}),e(f,[2,53],{38:[1,122],42:[1,123]}),e(f,[2,63],{33:[1,125],38:[1,124]}),e(f,[2,50],{33:[1,126],42:[1,127]}),e(f,[2,55],{35:[1,128],42:[1,129]}),e(f,[2,66],{33:[1,131],35:[1,130]}),e(f,[2,52],{38:[1,132],42:[1,133]}),e(f,[2,54],{35:[1,134],42:[1,135]}),e(f,[2,67],{35:[1,137],38:[1,136]}),e(f,[2,64],{33:[1,139],38:[1,138]}),e(f,[2,65],{33:[1,141],35:[1,140]}),e(f,[2,68],{35:[1,143],38:[1,142]}),{39:144,43:b,44:x,45:v},{34:[1,145]},{34:[1,146]},{34:[1,147]},{34:[1,148]},{39:149,43:b,44:x,45:v},e(f,[2,26]),e(f,[2,27]),e(f,[2,28]),e(f,[2,29]),{34:[1,150]},{34:[1,151]},{39:152,43:b,44:x,45:v},{34:[1,153]},{39:154,43:b,44:x,45:v},{34:[1,155]},{34:[1,156]},{34:[1,157]},{34:[1,158]},{34:[1,159]},{34:[1,160]},{34:[1,161]},{39:162,43:b,44:x,45:v},{34:[1,163]},{34:[1,164]},{34:[1,165]},{39:166,43:b,44:x,45:v},{34:[1,167]},{39:168,43:b,44:x,45:v},{34:[1,169]},{34:[1,170]},{34:[1,171]},{39:172,43:b,44:x,45:v},{34:[1,173]},e(f,[2,37],{35:[1,174]}),e(f,[2,38],{38:[1,175]}),e(f,[2,36],{33:[1,176]}),e(f,[2,39],{35:[1,177]}),e(f,[2,34],{38:[1,178]}),e(f,[2,35],{33:[1,179]}),e(f,[2,60],{42:[1,180]}),e(f,[2,73],{33:[1,181]}),e(f,[2,61],{42:[1,182]}),e(f,[2,84],{38:[1,183]}),e(f,[2,74],{33:[1,184]}),e(f,[2,83],{38:[1,185]}),e(f,[2,59],{42:[1,186]}),e(f,[2,72],{33:[1,187]}),e(f,[2,58],{42:[1,188]}),e(f,[2,78],{35:[1,189]}),e(f,[2,71],{33:[1,190]}),e(f,[2,77],{35:[1,191]}),e(f,[2,57],{42:[1,192]}),e(f,[2,85],{38:[1,193]}),e(f,[2,56],{42:[1,194]}),e(f,[2,79],{35:[1,195]}),e(f,[2,80],{35:[1,196]}),e(f,[2,86],{38:[1,197]}),e(f,[2,70],{33:[1,198]}),e(f,[2,81],{38:[1,199]}),e(f,[2,69],{33:[1,200]}),e(f,[2,75],{35:[1,201]}),e(f,[2,76],{35:[1,202]}),e(f,[2,82],{38:[1,203]}),{34:[1,204]},{39:205,43:b,44:x,45:v},{34:[1,206]},{34:[1,207]},{39:208,43:b,44:x,45:v},{34:[1,209]},{34:[1,210]},{34:[1,211]},{34:[1,212]},{39:213,43:b,44:x,45:v},{34:[1,214]},{39:215,43:b,44:x,45:v},{34:[1,216]},{34:[1,217]},{34:[1,218]},{34:[1,219]},{34:[1,220]},{34:[1,221]},{34:[1,222]},{39:223,43:b,44:x,45:v},{34:[1,224]},{34:[1,225]},{34:[1,226]},{39:227,43:b,44:x,45:v},{34:[1,228]},{39:229,43:b,44:x,45:v},{34:[1,230]},{34:[1,231]},{34:[1,232]},{39:233,43:b,44:x,45:v},e(f,[2,40]),e(f,[2,42]),e(f,[2,41]),e(f,[2,43]),e(f,[2,45]),e(f,[2,44]),e(f,[2,101]),e(f,[2,102]),e(f,[2,99]),e(f,[2,100]),e(f,[2,104]),e(f,[2,103]),e(f,[2,108]),e(f,[2,107]),e(f,[2,106]),e(f,[2,105]),e(f,[2,110]),e(f,[2,109]),e(f,[2,98]),e(f,[2,97]),e(f,[2,96]),e(f,[2,95]),e(f,[2,93]),e(f,[2,94]),e(f,[2,92]),e(f,[2,91]),e(f,[2,90]),e(f,[2,89]),e(f,[2,87]),e(f,[2,88])],defaultActions:{9:[2,118],10:[2,1],11:[2,2],19:[2,3],27:[2,4],46:[2,120],47:[2,5]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},T=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),50;case 1:return this.begin("type_directive"),51;case 2:return this.popState(),this.begin("arg_directive"),9;case 3:return this.popState(),this.popState(),53;case 4:return 52;case 5:return this.begin("acc_title"),20;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),22;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:case 34:case 38:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:return 14;case 13:case 14:break;case 15:return 6;case 16:return 40;case 17:return 33;case 18:return 38;case 19:return 42;case 20:return 43;case 21:return 44;case 22:return 45;case 23:return 35;case 24:return 29;case 25:return 30;case 26:return 37;case 27:return 32;case 28:return 27;case 29:case 30:return 10;case 31:return 9;case 32:return"CARET";case 33:this.begin("options");break;case 35:return 13;case 36:return 36;case 37:this.begin("string");break;case 39:return 34;case 40:return 31;case 41:return 54;case 42:return 8}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit(?=\s|$))/i,/^(?:id:)/i,/^(?:type:)/i,/^(?:msg:)/i,/^(?:NORMAL\b)/i,/^(?:REVERSE\b)/i,/^(?:HIGHLIGHT\b)/i,/^(?:tag:)/i,/^(?:branch(?=\s|$))/i,/^(?:order:)/i,/^(?:merge(?=\s|$))/i,/^(?:cherry-pick(?=\s|$))/i,/^(?:checkout(?=\s|$))/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:[ \r\n\t]+end\b)/i,/^(?:[\s\S]+(?=[ \r\n\t]+end))/i,/^(?:["]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[0-9]+(?=\s|$))/i,/^(?:\w([-\./\w]*[-\w])?)/i,/^(?:$)/i,/^(?:\s+)/i],conditions:{acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},options:{rules:[34,35],inclusive:!1},string:{rules:[38,39],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,36,37,40,41,42,43],inclusive:!0}}},t);function w(){this.yy={}}return k.lexer=T,w.prototype=k,k.Parser=w,new w}();si.parser=si;const oi=si,li=t=>null!==t.match(/^\s*gitGraph/);let ci=dr().gitGraph.mainBranchName,ui=dr().gitGraph.mainBranchOrder,hi={},di=null,pi={};pi[ci]={name:ci,order:ui};let fi={};fi[ci]=di;let mi=ci,gi="LR",yi=0;function bi(){return Un({length:7})}let xi={};const vi=function(t){if(t=zt.sanitizeText(t,dr()),void 0===fi[t]){let e=new Error('Trying to checkout branch which is not yet created. (Help try using "branch '+t+'")');throw e.hash={text:"checkout "+t,token:"checkout "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"branch '+t+'"']},e}{mi=t;const e=fi[mi];di=hi[e]}};function _i(t,e,n){const r=t.indexOf(e);-1===r?t.push(n):t.splice(r,1,n)}function ki(t){const e=t.reduce(((t,e)=>t.seq>e.seq?t:e),t[0]);let n="";t.forEach((function(t){n+=t===e?"\t*":"\t|"}));const r=[n,e.id,e.seq];for(let i in fi)fi[i]===e.id&&r.push(i);if(It.debug(r.join(" ")),e.parents&&2==e.parents.length){const n=hi[e.parents[0]];_i(t,e,n),t.push(hi[e.parents[1]])}else{if(0==e.parents.length)return;{const n=hi[e.parents];_i(t,e,n)}}ki(t=function(t,e){const n=Object.create(null);return t.reduce(((t,r)=>{const i=e(r);return n[i]||(n[i]=!0,t.push(r)),t}),[])}(t,(t=>t.id)))}const Ti=function(){const t=Object.keys(hi).map((function(t){return hi[t]}));return t.forEach((function(t){It.debug(t.id)})),t.sort(((t,e)=>t.seq-e.seq)),t},wi={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},Si={parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().gitGraph,setDirection:function(t){gi=t},setOptions:function(t){It.debug("options str",t),t=(t=t&&t.trim())||"{}";try{xi=JSON.parse(t)}catch(e){It.error("error while parsing gitGraph options",e.message)}},getOptions:function(){return xi},commit:function(t,e,n,r){It.debug("Entering commit:",t,e,n,r),e=zt.sanitizeText(e,dr()),t=zt.sanitizeText(t,dr()),r=zt.sanitizeText(r,dr());const i={id:e||yi+"-"+bi(),message:t,seq:yi++,type:n||wi.NORMAL,tag:r||"",parents:null==di?[]:[di.id],branch:mi};di=i,hi[i.id]=i,fi[mi]=i.id,It.debug("in pushCommit "+i.id)},branch:function(t,e){if(t=zt.sanitizeText(t,dr()),void 0!==fi[t]){let e=new Error('Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout '+t+'")');throw e.hash={text:"branch "+t,token:"branch "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"checkout '+t+'"']},e}fi[t]=null!=di?di.id:null,pi[t]={name:t,order:e?parseInt(e,10):null},vi(t),It.debug("in createBranch")},merge:function(t,e,n,r){t=zt.sanitizeText(t,dr()),e=zt.sanitizeText(e,dr());const i=hi[fi[mi]],a=hi[fi[t]];if(mi===t){let e=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},e}if(void 0===i||!i){let e=new Error('Incorrect usage of "merge". Current branch ('+mi+")has no commits");throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["commit"]},e}if(void 0===fi[t]){let e=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") does not exist");throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch "+t]},e}if(void 0===a||!a){let e=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") has no commits");throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"commit"']},e}if(i===a){let e=new Error('Incorrect usage of "merge". Both branches have same head');throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},e}if(e&&void 0!==hi[e]){let i=new Error('Incorrect usage of "merge". Commit with id:'+e+" already exists, use different custom Id");throw i.hash={text:"merge "+t+e+n+r,token:"merge "+t+e+n+r,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["merge "+t+" "+e+"_UNIQUE "+n+" "+r]},i}const s={id:e||yi+"-"+bi(),message:"merged branch "+t+" into "+mi,seq:yi++,parents:[null==di?null:di.id,fi[t]],branch:mi,type:wi.MERGE,customType:n,customId:!!e,tag:r||""};di=s,hi[s.id]=s,fi[mi]=s.id,It.debug(fi),It.debug("in mergeBranch")},cherryPick:function(t,e,n){if(It.debug("Entering cherryPick:",t,e,n),t=zt.sanitizeText(t,dr()),e=zt.sanitizeText(e,dr()),n=zt.sanitizeText(n,dr()),!t||void 0===hi[t]){let n=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw n.hash={text:"cherryPick "+t+" "+e,token:"cherryPick "+t+" "+e,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},n}let r=hi[t],i=r.branch;if(r.type===wi.MERGE){let n=new Error('Incorrect usage of "cherryPick". Source commit should not be a merge commit');throw n.hash={text:"cherryPick "+t+" "+e,token:"cherryPick "+t+" "+e,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},n}if(!e||void 0===hi[e]){if(i===mi){let n=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw n.hash={text:"cherryPick "+t+" "+e,token:"cherryPick "+t+" "+e,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},n}const a=hi[fi[mi]];if(void 0===a||!a){let n=new Error('Incorrect usage of "cherry-pick". Current branch ('+mi+")has no commits");throw n.hash={text:"cherryPick "+t+" "+e,token:"cherryPick "+t+" "+e,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},n}const s={id:yi+"-"+bi(),message:"cherry-picked "+r+" into "+mi,seq:yi++,parents:[null==di?null:di.id,r.id],branch:mi,type:wi.CHERRY_PICK,tag:n??"cherry-pick:"+r.id};di=s,hi[s.id]=s,fi[mi]=s.id,It.debug(fi),It.debug("in cherryPick")}},checkout:vi,prettyPrint:function(){It.debug(hi);ki([Ti()[0]])},clear:function(){hi={},di=null;let t=dr().gitGraph.mainBranchName,e=dr().gitGraph.mainBranchOrder;fi={},fi[t]=null,pi={},pi[t]={name:t,order:e},mi=t,yi=0,Zr()},getBranchesAsObjArray:function(){const t=Object.values(pi).map(((t,e)=>null!==t.order?t:{...t,order:parseFloat(`0.${e}`,10)})).sort(((t,e)=>t.order-e.order)).map((({name:t})=>({name:t})));return t},getBranches:function(){return fi},getCommits:function(){return hi},getCommitsArray:Ti,getCurrentBranch:function(){return mi},getDirection:function(){return gi},getHead:function(){return di},setAccTitle:jr,getAccTitle:Pr,getAccDescription:Yr,setAccDescription:zr,setDiagramTitle:Ur,getDiagramTitle:Wr,commitType:wi};let Ei={};const Ci=0,Di=1,Ai=2,Oi=3,Ii=4;let Li={},Ni={},Mi=[],Fi=0;const Bi=(t,e,n)=>{const r=Jr().gitGraph,i=t.append("g").attr("class","commit-bullets"),a=t.append("g").attr("class","commit-labels");let s=0;Object.keys(e).sort(((t,n)=>e[t].seq-e[n].seq)).forEach((t=>{const o=e[t],l=Li[o.branch].pos,c=s+10;if(n){let t,e=void 0!==o.customType&&""!==o.customType?o.customType:o.type;switch(e){case Ci:t="commit-normal";break;case Di:t="commit-reverse";break;case Ai:t="commit-highlight";break;case Oi:t="commit-merge";break;case Ii:t="commit-cherry-pick";break;default:t="commit-normal"}if(e===Ai){const e=i.append("rect");e.attr("x",c-10),e.attr("y",l-10),e.attr("height",20),e.attr("width",20),e.attr("class",`commit ${o.id} commit-highlight${Li[o.branch].index%8} ${t}-outer`),i.append("rect").attr("x",c-6).attr("y",l-6).attr("height",12).attr("width",12).attr("class",`commit ${o.id} commit${Li[o.branch].index%8} ${t}-inner`)}else if(e===Ii)i.append("circle").attr("cx",c).attr("cy",l).attr("r",10).attr("class",`commit ${o.id} ${t}`),i.append("circle").attr("cx",c-3).attr("cy",l+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${o.id} ${t}`),i.append("circle").attr("cx",c+3).attr("cy",l+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${o.id} ${t}`),i.append("line").attr("x1",c+3).attr("y1",l+1).attr("x2",c).attr("y2",l-5).attr("stroke","#fff").attr("class",`commit ${o.id} ${t}`),i.append("line").attr("x1",c-3).attr("y1",l+1).attr("x2",c).attr("y2",l-5).attr("stroke","#fff").attr("class",`commit ${o.id} ${t}`);else{const n=i.append("circle");if(n.attr("cx",c),n.attr("cy",l),n.attr("r",o.type===Oi?9:10),n.attr("class",`commit ${o.id} commit${Li[o.branch].index%8}`),e===Oi){const e=i.append("circle");e.attr("cx",c),e.attr("cy",l),e.attr("r",6),e.attr("class",`commit ${t} ${o.id} commit${Li[o.branch].index%8}`)}if(e===Di){i.append("path").attr("d",`M ${c-5},${l-5}L${c+5},${l+5}M${c-5},${l+5}L${c+5},${l-5}`).attr("class",`commit ${t} ${o.id} commit${Li[o.branch].index%8}`)}}}if(Ni[o.id]={x:s+10,y:l},n){const t=4,e=2;if(o.type!==Ii&&(o.customId&&o.type===Oi||o.type!==Oi)&&r.showCommitLabel){const t=a.append("g"),n=t.insert("rect").attr("class","commit-label-bkg"),i=t.append("text").attr("x",s).attr("y",l+25).attr("class","commit-label").text(o.id);let c=i.node().getBBox();if(n.attr("x",s+10-c.width/2-e).attr("y",l+13.5).attr("width",c.width+2*e).attr("height",c.height+2*e),i.attr("x",s+10-c.width/2),r.rotateCommitLabel){let e=-7.5-(c.width+10)/25*9.5,n=10+c.width/25*8.5;t.attr("transform","translate("+e+", "+n+") rotate("+"-45, "+s+", "+l+")")}}if(o.tag){const n=a.insert("polygon"),r=a.append("circle"),i=a.append("text").attr("y",l-16).attr("class","tag-label").text(o.tag);let c=i.node().getBBox();i.attr("x",s+10-c.width/2);const u=c.height/2,h=l-19.2;n.attr("class","tag-label-bkg").attr("points",`\n ${s-c.width/2-t/2},${h+e}\n ${s-c.width/2-t/2},${h-e}\n ${s+10-c.width/2-t},${h-u-e}\n ${s+10+c.width/2+t},${h-u-e}\n ${s+10+c.width/2+t},${h+u+e}\n ${s+10-c.width/2-t},${h+u+e}`),r.attr("cx",s-c.width/2+t/2).attr("cy",h).attr("r",1.5).attr("class","tag-hole")}}s+=50,s>Fi&&(Fi=s)}))},Ri=(t,e,n=0)=>{const r=t+Math.abs(t-e)/2;if(n>5)return r;if(Mi.every((t=>Math.abs(t-r)>=10)))return Mi.push(r),r;const i=Math.abs(t-e);return Ri(t,e-i/5,n+1)},$i=(t,e,n,r)=>{const i=Ni[e.id],a=Ni[n.id],s=((t,e,n)=>Object.keys(n).filter((r=>n[r].branch===e.branch&&n[r].seq>t.seq&&n[r].seq<e.seq)).length>0)(e,n,r);let o,l="",c="",u=0,h=0,d=Li[n.branch].index;if(s){l="A 10 10, 0, 0, 0,",c="A 10 10, 0, 0, 1,",u=10,h=10,d=Li[n.branch].index;const t=i.y<a.y?Ri(i.y,a.y):Ri(a.y,i.y);o=i.y<a.y?`M ${i.x} ${i.y} L ${i.x} ${t-u} ${l} ${i.x+h} ${t} L ${a.x-u} ${t} ${c} ${a.x} ${t+h} L ${a.x} ${a.y}`:`M ${i.x} ${i.y} L ${i.x} ${t+u} ${c} ${i.x+h} ${t} L ${a.x-u} ${t} ${l} ${a.x} ${t-h} L ${a.x} ${a.y}`}else i.y<a.y&&(l="A 20 20, 0, 0, 0,",u=20,h=20,d=Li[n.branch].index,o=`M ${i.x} ${i.y} L ${i.x} ${a.y-u} ${l} ${i.x+h} ${a.y} L ${a.x} ${a.y}`),i.y>a.y&&(l="A 20 20, 0, 0, 0,",u=20,h=20,d=Li[e.branch].index,o=`M ${i.x} ${i.y} L ${a.x-u} ${i.y} ${l} ${a.x} ${i.y-h} L ${a.x} ${a.y}`),i.y===a.y&&(d=Li[e.branch].index,o=`M ${i.x} ${i.y} L ${i.x} ${a.y-u} ${l} ${i.x+h} ${a.y} L ${a.x} ${a.y}`);t.append("path").attr("d",o).attr("class","arrow arrow"+d%8)},Zi=(t,e)=>{const n=Jr().gitGraph,r=t.append("g");e.forEach(((t,e)=>{const i=e%8,a=Li[t.name].pos,s=r.append("line");s.attr("x1",0),s.attr("y1",a),s.attr("x2",Fi),s.attr("y2",a),s.attr("class","branch branch"+i),Mi.push(a);const o=(t=>{const e=document.createElementNS("http://www.w3.org/2000/svg","text");let n=[];n="string"==typeof t?t.split(/\\n|\n|<br\s*\/?>/gi):Array.isArray(t)?t:[];for(const r of n){const t=document.createElementNS("http://www.w3.org/2000/svg","tspan");t.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),t.setAttribute("dy","1em"),t.setAttribute("x","0"),t.setAttribute("class","row"),t.textContent=r.trim(),e.appendChild(t)}return e})(t.name),l=r.insert("rect"),c=r.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+i);c.node().appendChild(o);let u=o.getBBox();l.attr("class","branchLabelBkg label"+i).attr("rx",4).attr("ry",4).attr("x",-u.width-4-(!0===n.rotateCommitLabel?30:0)).attr("y",-u.height/2+8).attr("width",u.width+18).attr("height",u.height+4),c.attr("transform","translate("+(-u.width-14-(!0===n.rotateCommitLabel?30:0))+", "+(a-u.height/2-1)+")"),l.attr("transform","translate(-19, "+(a-u.height/2)+")")}))},ji={draw:function(t,e,n,r){Li={},Ni={},Ei={},Fi=0,Mi=[];const i=Jr(),a=i.gitGraph;It.debug("in gitgraph renderer",t+"\n","id:",e,n),Ei=r.db.getCommits();const s=r.db.getBranchesAsObjArray();let l=0;s.forEach(((t,e)=>{Li[t.name]={pos:l,index:e},l+=50+(a.rotateCommitLabel?40:0)}));const c=(0,o.Ys)(`[id="${e}"]`);Bi(c,Ei,!1),a.showBranches&&Zi(c,s),((t,e)=>{const n=t.append("g").attr("class","commit-arrows");Object.keys(e).forEach((t=>{const r=e[t];r.parents&&r.parents.length>0&&r.parents.forEach((t=>{$i(n,e[t],r,e)}))}))})(c,Ei),Bi(c,Ei,!0),nr.insertTitle(c,"gitTitleText",a.titleTopMargin,r.db.getDiagramTitle()),ei(void 0,c,a.diagramPadding,a.useMaxWidth??i.useMaxWidth)}},Pi=t=>`\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n ${[0,1,2,3,4,5,6,7].map((e=>`\n .branch-label${e} { fill: ${t["gitBranchLabel"+e]}; }\n .commit${e} { stroke: ${t["git"+e]}; fill: ${t["git"+e]}; }\n .commit-highlight${e} { stroke: ${t["gitInv"+e]}; fill: ${t["gitInv"+e]}; }\n .label${e} { fill: ${t["git"+e]}; }\n .arrow${e} { stroke: ${t["git"+e]}; }\n `)).join("\n")}\n\n .branch {\n stroke-width: 1;\n stroke: ${t.lineColor};\n stroke-dasharray: 2;\n }\n .commit-label { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelColor};}\n .commit-label-bkg { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelBackground}; opacity: 0.5; }\n .tag-label { font-size: ${t.tagLabelFontSize}; fill: ${t.tagLabelColor};}\n .tag-label-bkg { fill: ${t.tagLabelBackground}; stroke: ${t.tagLabelBorder}; }\n .tag-hole { fill: ${t.textColor}; }\n\n .commit-merge {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n }\n .commit-reverse {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n stroke-width: 3;\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n }\n\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n }\n`;var zi=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,6],r=[1,7],i=[1,8],a=[1,9],s=[1,16],o=[1,11],l=[1,12],u=[1,13],h=[1,14],d=[1,15],p=[1,27],f=[1,33],m=[1,34],g=[1,35],y=[1,36],b=[1,37],x=[1,72],v=[1,73],_=[1,74],k=[1,75],T=[1,76],w=[1,77],S=[1,78],E=[1,38],C=[1,39],D=[1,40],A=[1,41],O=[1,42],I=[1,43],L=[1,44],N=[1,45],M=[1,46],F=[1,47],B=[1,48],R=[1,49],$=[1,50],Z=[1,51],j=[1,52],P=[1,53],z=[1,54],Y=[1,55],U=[1,56],W=[1,57],H=[1,59],q=[1,60],V=[1,61],G=[1,62],X=[1,63],K=[1,64],Q=[1,65],J=[1,66],tt=[1,67],et=[1,68],nt=[1,69],rt=[24,52],it=[24,44,46,47,48,49,50,51,52,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],at=[15,24,44,46,47,48,49,50,51,52,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],st=[1,94],ot=[1,95],lt=[1,96],ct=[1,97],ut=[15,24,52],ht=[7,8,9,10,18,22,25,26,27,28],dt=[15,24,43,52],pt=[15,24,43,52,86,87,89,90],ft=[15,43],mt=[44,46,47,48,49,50,51,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],gt={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,directive:6,direction_tb:7,direction_bt:8,direction_rl:9,direction_lr:10,graphConfig:11,openDirective:12,typeDirective:13,closeDirective:14,NEWLINE:15,":":16,argDirective:17,open_directive:18,type_directive:19,arg_directive:20,close_directive:21,C4_CONTEXT:22,statements:23,EOF:24,C4_CONTAINER:25,C4_COMPONENT:26,C4_DYNAMIC:27,C4_DEPLOYMENT:28,otherStatements:29,diagramStatements:30,otherStatement:31,title:32,accDescription:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,boundaryStatement:39,boundaryStartStatement:40,boundaryStopStatement:41,boundaryStart:42,LBRACE:43,ENTERPRISE_BOUNDARY:44,attributes:45,SYSTEM_BOUNDARY:46,BOUNDARY:47,CONTAINER_BOUNDARY:48,NODE:49,NODE_L:50,NODE_R:51,RBRACE:52,diagramStatement:53,PERSON:54,PERSON_EXT:55,SYSTEM:56,SYSTEM_DB:57,SYSTEM_QUEUE:58,SYSTEM_EXT:59,SYSTEM_EXT_DB:60,SYSTEM_EXT_QUEUE:61,CONTAINER:62,CONTAINER_DB:63,CONTAINER_QUEUE:64,CONTAINER_EXT:65,CONTAINER_EXT_DB:66,CONTAINER_EXT_QUEUE:67,COMPONENT:68,COMPONENT_DB:69,COMPONENT_QUEUE:70,COMPONENT_EXT:71,COMPONENT_EXT_DB:72,COMPONENT_EXT_QUEUE:73,REL:74,BIREL:75,REL_U:76,REL_D:77,REL_L:78,REL_R:79,REL_B:80,REL_INDEX:81,UPDATE_EL_STYLE:82,UPDATE_REL_STYLE:83,UPDATE_LAYOUT_CONFIG:84,attribute:85,STR:86,STR_KEY:87,STR_VALUE:88,ATTRIBUTE:89,ATTRIBUTE_EMPTY:90,$accept:0,$end:1},terminals_:{2:"error",7:"direction_tb",8:"direction_bt",9:"direction_rl",10:"direction_lr",15:"NEWLINE",16:":",18:"open_directive",19:"type_directive",20:"arg_directive",21:"close_directive",22:"C4_CONTEXT",24:"EOF",25:"C4_CONTAINER",26:"C4_COMPONENT",27:"C4_DYNAMIC",28:"C4_DEPLOYMENT",32:"title",33:"accDescription",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",43:"LBRACE",44:"ENTERPRISE_BOUNDARY",46:"SYSTEM_BOUNDARY",47:"BOUNDARY",48:"CONTAINER_BOUNDARY",49:"NODE",50:"NODE_L",51:"NODE_R",52:"RBRACE",54:"PERSON",55:"PERSON_EXT",56:"SYSTEM",57:"SYSTEM_DB",58:"SYSTEM_QUEUE",59:"SYSTEM_EXT",60:"SYSTEM_EXT_DB",61:"SYSTEM_EXT_QUEUE",62:"CONTAINER",63:"CONTAINER_DB",64:"CONTAINER_QUEUE",65:"CONTAINER_EXT",66:"CONTAINER_EXT_DB",67:"CONTAINER_EXT_QUEUE",68:"COMPONENT",69:"COMPONENT_DB",70:"COMPONENT_QUEUE",71:"COMPONENT_EXT",72:"COMPONENT_EXT_DB",73:"COMPONENT_EXT_QUEUE",74:"REL",75:"BIREL",76:"REL_U",77:"REL_D",78:"REL_L",79:"REL_R",80:"REL_B",81:"REL_INDEX",82:"UPDATE_EL_STYLE",83:"UPDATE_REL_STYLE",84:"UPDATE_LAYOUT_CONFIG",86:"STR",87:"STR_KEY",88:"STR_VALUE",89:"ATTRIBUTE",90:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[3,2],[5,1],[5,1],[5,1],[5,1],[4,1],[6,4],[6,6],[12,1],[13,1],[17,1],[14,1],[11,4],[11,4],[11,4],[11,4],[11,4],[23,1],[23,1],[23,2],[29,1],[29,2],[29,3],[31,1],[31,1],[31,2],[31,2],[31,1],[39,3],[40,3],[40,3],[40,4],[42,2],[42,2],[42,2],[42,2],[42,2],[42,2],[42,2],[41,1],[30,1],[30,2],[30,3],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,1],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[45,1],[45,2],[85,1],[85,2],[85,1],[85,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 4:r.setDirection("TB");break;case 5:r.setDirection("BT");break;case 6:r.setDirection("RL");break;case 7:r.setDirection("LR");break;case 11:r.parseDirective("%%{","open_directive");break;case 12:break;case 13:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 14:r.parseDirective("}%%","close_directive","c4Context");break;case 15:case 16:case 17:case 18:case 19:r.setC4Type(a[o-3]);break;case 26:r.setTitle(a[o].substring(6)),this.$=a[o].substring(6);break;case 27:r.setAccDescription(a[o].substring(15)),this.$=a[o].substring(15);break;case 28:this.$=a[o].trim(),r.setTitle(this.$);break;case 29:case 30:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 35:case 36:a[o].splice(2,0,"ENTERPRISE"),r.addPersonOrSystemBoundary(...a[o]),this.$=a[o];break;case 37:r.addPersonOrSystemBoundary(...a[o]),this.$=a[o];break;case 38:a[o].splice(2,0,"CONTAINER"),r.addContainerBoundary(...a[o]),this.$=a[o];break;case 39:r.addDeploymentNode("node",...a[o]),this.$=a[o];break;case 40:r.addDeploymentNode("nodeL",...a[o]),this.$=a[o];break;case 41:r.addDeploymentNode("nodeR",...a[o]),this.$=a[o];break;case 42:r.popBoundaryParseStack();break;case 46:r.addPersonOrSystem("person",...a[o]),this.$=a[o];break;case 47:r.addPersonOrSystem("external_person",...a[o]),this.$=a[o];break;case 48:r.addPersonOrSystem("system",...a[o]),this.$=a[o];break;case 49:r.addPersonOrSystem("system_db",...a[o]),this.$=a[o];break;case 50:r.addPersonOrSystem("system_queue",...a[o]),this.$=a[o];break;case 51:r.addPersonOrSystem("external_system",...a[o]),this.$=a[o];break;case 52:r.addPersonOrSystem("external_system_db",...a[o]),this.$=a[o];break;case 53:r.addPersonOrSystem("external_system_queue",...a[o]),this.$=a[o];break;case 54:r.addContainer("container",...a[o]),this.$=a[o];break;case 55:r.addContainer("container_db",...a[o]),this.$=a[o];break;case 56:r.addContainer("container_queue",...a[o]),this.$=a[o];break;case 57:r.addContainer("external_container",...a[o]),this.$=a[o];break;case 58:r.addContainer("external_container_db",...a[o]),this.$=a[o];break;case 59:r.addContainer("external_container_queue",...a[o]),this.$=a[o];break;case 60:r.addComponent("component",...a[o]),this.$=a[o];break;case 61:r.addComponent("component_db",...a[o]),this.$=a[o];break;case 62:r.addComponent("component_queue",...a[o]),this.$=a[o];break;case 63:r.addComponent("external_component",...a[o]),this.$=a[o];break;case 64:r.addComponent("external_component_db",...a[o]),this.$=a[o];break;case 65:r.addComponent("external_component_queue",...a[o]),this.$=a[o];break;case 67:r.addRel("rel",...a[o]),this.$=a[o];break;case 68:r.addRel("birel",...a[o]),this.$=a[o];break;case 69:r.addRel("rel_u",...a[o]),this.$=a[o];break;case 70:r.addRel("rel_d",...a[o]),this.$=a[o];break;case 71:r.addRel("rel_l",...a[o]),this.$=a[o];break;case 72:r.addRel("rel_r",...a[o]),this.$=a[o];break;case 73:r.addRel("rel_b",...a[o]),this.$=a[o];break;case 74:a[o].splice(0,1),r.addRel("rel",...a[o]),this.$=a[o];break;case 75:r.updateElStyle("update_el_style",...a[o]),this.$=a[o];break;case 76:r.updateRelStyle("update_rel_style",...a[o]),this.$=a[o];break;case 77:r.updateLayoutConfig("update_layout_config",...a[o]),this.$=a[o];break;case 78:this.$=[a[o]];break;case 79:a[o].unshift(a[o-1]),this.$=a[o];break;case 80:case 82:this.$=a[o].trim();break;case 81:let t={};t[a[o-1].trim()]=a[o].trim(),this.$=t;break;case 83:this.$=""}},table:[{3:1,4:2,5:3,6:4,7:n,8:r,9:i,10:a,11:5,12:10,18:s,22:o,25:l,26:u,27:h,28:d},{1:[3]},{1:[2,1]},{1:[2,2]},{3:17,4:2,5:3,6:4,7:n,8:r,9:i,10:a,11:5,12:10,18:s,22:o,25:l,26:u,27:h,28:d},{1:[2,8]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{1:[2,7]},{13:18,19:[1,19]},{15:[1,20]},{15:[1,21]},{15:[1,22]},{15:[1,23]},{15:[1,24]},{19:[2,11]},{1:[2,3]},{14:25,16:[1,26],21:p},e([16,21],[2,12]),{23:28,29:29,30:30,31:31,32:f,33:m,34:g,36:y,38:b,39:58,40:70,42:71,44:x,46:v,47:_,48:k,49:T,50:w,51:S,53:32,54:E,55:C,56:D,57:A,58:O,59:I,60:L,61:N,62:M,63:F,64:B,65:R,66:$,67:Z,68:j,69:P,70:z,71:Y,72:U,73:W,74:H,75:q,76:V,77:G,78:X,79:K,80:Q,81:J,82:tt,83:et,84:nt},{23:79,29:29,30:30,31:31,32:f,33:m,34:g,36:y,38:b,39:58,40:70,42:71,44:x,46:v,47:_,48:k,49:T,50:w,51:S,53:32,54:E,55:C,56:D,57:A,58:O,59:I,60:L,61:N,62:M,63:F,64:B,65:R,66:$,67:Z,68:j,69:P,70:z,71:Y,72:U,73:W,74:H,75:q,76:V,77:G,78:X,79:K,80:Q,81:J,82:tt,83:et,84:nt},{23:80,29:29,30:30,31:31,32:f,33:m,34:g,36:y,38:b,39:58,40:70,42:71,44:x,46:v,47:_,48:k,49:T,50:w,51:S,53:32,54:E,55:C,56:D,57:A,58:O,59:I,60:L,61:N,62:M,63:F,64:B,65:R,66:$,67:Z,68:j,69:P,70:z,71:Y,72:U,73:W,74:H,75:q,76:V,77:G,78:X,79:K,80:Q,81:J,82:tt,83:et,84:nt},{23:81,29:29,30:30,31:31,32:f,33:m,34:g,36:y,38:b,39:58,40:70,42:71,44:x,46:v,47:_,48:k,49:T,50:w,51:S,53:32,54:E,55:C,56:D,57:A,58:O,59:I,60:L,61:N,62:M,63:F,64:B,65:R,66:$,67:Z,68:j,69:P,70:z,71:Y,72:U,73:W,74:H,75:q,76:V,77:G,78:X,79:K,80:Q,81:J,82:tt,83:et,84:nt},{23:82,29:29,30:30,31:31,32:f,33:m,34:g,36:y,38:b,39:58,40:70,42:71,44:x,46:v,47:_,48:k,49:T,50:w,51:S,53:32,54:E,55:C,56:D,57:A,58:O,59:I,60:L,61:N,62:M,63:F,64:B,65:R,66:$,67:Z,68:j,69:P,70:z,71:Y,72:U,73:W,74:H,75:q,76:V,77:G,78:X,79:K,80:Q,81:J,82:tt,83:et,84:nt},{15:[1,83]},{17:84,20:[1,85]},{15:[2,14]},{24:[1,86]},e(rt,[2,20],{53:32,39:58,40:70,42:71,30:87,44:x,46:v,47:_,48:k,49:T,50:w,51:S,54:E,55:C,56:D,57:A,58:O,59:I,60:L,61:N,62:M,63:F,64:B,65:R,66:$,67:Z,68:j,69:P,70:z,71:Y,72:U,73:W,74:H,75:q,76:V,77:G,78:X,79:K,80:Q,81:J,82:tt,83:et,84:nt}),e(rt,[2,21]),e(it,[2,23],{15:[1,88]}),e(rt,[2,43],{15:[1,89]}),e(at,[2,26]),e(at,[2,27]),{35:[1,90]},{37:[1,91]},e(at,[2,30]),{45:92,85:93,86:st,87:ot,89:lt,90:ct},{45:98,85:93,86:st,87:ot,89:lt,90:ct},{45:99,85:93,86:st,87:ot,89:lt,90:ct},{45:100,85:93,86:st,87:ot,89:lt,90:ct},{45:101,85:93,86:st,87:ot,89:lt,90:ct},{45:102,85:93,86:st,87:ot,89:lt,90:ct},{45:103,85:93,86:st,87:ot,89:lt,90:ct},{45:104,85:93,86:st,87:ot,89:lt,90:ct},{45:105,85:93,86:st,87:ot,89:lt,90:ct},{45:106,85:93,86:st,87:ot,89:lt,90:ct},{45:107,85:93,86:st,87:ot,89:lt,90:ct},{45:108,85:93,86:st,87:ot,89:lt,90:ct},{45:109,85:93,86:st,87:ot,89:lt,90:ct},{45:110,85:93,86:st,87:ot,89:lt,90:ct},{45:111,85:93,86:st,87:ot,89:lt,90:ct},{45:112,85:93,86:st,87:ot,89:lt,90:ct},{45:113,85:93,86:st,87:ot,89:lt,90:ct},{45:114,85:93,86:st,87:ot,89:lt,90:ct},{45:115,85:93,86:st,87:ot,89:lt,90:ct},{45:116,85:93,86:st,87:ot,89:lt,90:ct},e(ut,[2,66]),{45:117,85:93,86:st,87:ot,89:lt,90:ct},{45:118,85:93,86:st,87:ot,89:lt,90:ct},{45:119,85:93,86:st,87:ot,89:lt,90:ct},{45:120,85:93,86:st,87:ot,89:lt,90:ct},{45:121,85:93,86:st,87:ot,89:lt,90:ct},{45:122,85:93,86:st,87:ot,89:lt,90:ct},{45:123,85:93,86:st,87:ot,89:lt,90:ct},{45:124,85:93,86:st,87:ot,89:lt,90:ct},{45:125,85:93,86:st,87:ot,89:lt,90:ct},{45:126,85:93,86:st,87:ot,89:lt,90:ct},{45:127,85:93,86:st,87:ot,89:lt,90:ct},{30:128,39:58,40:70,42:71,44:x,46:v,47:_,48:k,49:T,50:w,51:S,53:32,54:E,55:C,56:D,57:A,58:O,59:I,60:L,61:N,62:M,63:F,64:B,65:R,66:$,67:Z,68:j,69:P,70:z,71:Y,72:U,73:W,74:H,75:q,76:V,77:G,78:X,79:K,80:Q,81:J,82:tt,83:et,84:nt},{15:[1,130],43:[1,129]},{45:131,85:93,86:st,87:ot,89:lt,90:ct},{45:132,85:93,86:st,87:ot,89:lt,90:ct},{45:133,85:93,86:st,87:ot,89:lt,90:ct},{45:134,85:93,86:st,87:ot,89:lt,90:ct},{45:135,85:93,86:st,87:ot,89:lt,90:ct},{45:136,85:93,86:st,87:ot,89:lt,90:ct},{45:137,85:93,86:st,87:ot,89:lt,90:ct},{24:[1,138]},{24:[1,139]},{24:[1,140]},{24:[1,141]},e(ht,[2,9]),{14:142,21:p},{21:[2,13]},{1:[2,15]},e(rt,[2,22]),e(it,[2,24],{31:31,29:143,32:f,33:m,34:g,36:y,38:b}),e(rt,[2,44],{29:29,30:30,31:31,53:32,39:58,40:70,42:71,23:144,32:f,33:m,34:g,36:y,38:b,44:x,46:v,47:_,48:k,49:T,50:w,51:S,54:E,55:C,56:D,57:A,58:O,59:I,60:L,61:N,62:M,63:F,64:B,65:R,66:$,67:Z,68:j,69:P,70:z,71:Y,72:U,73:W,74:H,75:q,76:V,77:G,78:X,79:K,80:Q,81:J,82:tt,83:et,84:nt}),e(at,[2,28]),e(at,[2,29]),e(ut,[2,46]),e(dt,[2,78],{85:93,45:145,86:st,87:ot,89:lt,90:ct}),e(pt,[2,80]),{88:[1,146]},e(pt,[2,82]),e(pt,[2,83]),e(ut,[2,47]),e(ut,[2,48]),e(ut,[2,49]),e(ut,[2,50]),e(ut,[2,51]),e(ut,[2,52]),e(ut,[2,53]),e(ut,[2,54]),e(ut,[2,55]),e(ut,[2,56]),e(ut,[2,57]),e(ut,[2,58]),e(ut,[2,59]),e(ut,[2,60]),e(ut,[2,61]),e(ut,[2,62]),e(ut,[2,63]),e(ut,[2,64]),e(ut,[2,65]),e(ut,[2,67]),e(ut,[2,68]),e(ut,[2,69]),e(ut,[2,70]),e(ut,[2,71]),e(ut,[2,72]),e(ut,[2,73]),e(ut,[2,74]),e(ut,[2,75]),e(ut,[2,76]),e(ut,[2,77]),{41:147,52:[1,148]},{15:[1,149]},{43:[1,150]},e(ft,[2,35]),e(ft,[2,36]),e(ft,[2,37]),e(ft,[2,38]),e(ft,[2,39]),e(ft,[2,40]),e(ft,[2,41]),{1:[2,16]},{1:[2,17]},{1:[2,18]},{1:[2,19]},{15:[1,151]},e(it,[2,25]),e(rt,[2,45]),e(dt,[2,79]),e(pt,[2,81]),e(ut,[2,31]),e(ut,[2,42]),e(mt,[2,32]),e(mt,[2,33],{15:[1,152]}),e(ht,[2,10]),e(mt,[2,34])],defaultActions:{2:[2,1],3:[2,2],5:[2,8],6:[2,4],7:[2,5],8:[2,6],9:[2,7],16:[2,11],17:[2,3],27:[2,14],85:[2,13],86:[2,15],138:[2,16],139:[2,17],140:[2,18],141:[2,19]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},yt=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),18;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 10;case 5:return this.begin("type_directive"),19;case 6:return this.popState(),this.begin("arg_directive"),16;case 7:return this.popState(),this.popState(),21;case 8:return 20;case 9:return 32;case 10:return 33;case 11:return this.begin("acc_title"),34;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),36;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:case 78:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:case 21:case 75:break;case 19:c;break;case 20:return 15;case 22:return 22;case 23:return 25;case 24:return 26;case 25:return 27;case 26:return 28;case 27:return this.begin("person_ext"),55;case 28:return this.begin("person"),54;case 29:return this.begin("system_ext_queue"),61;case 30:return this.begin("system_ext_db"),60;case 31:return this.begin("system_ext"),59;case 32:return this.begin("system_queue"),58;case 33:return this.begin("system_db"),57;case 34:return this.begin("system"),56;case 35:return this.begin("boundary"),47;case 36:return this.begin("enterprise_boundary"),44;case 37:return this.begin("system_boundary"),46;case 38:return this.begin("container_ext_queue"),67;case 39:return this.begin("container_ext_db"),66;case 40:return this.begin("container_ext"),65;case 41:return this.begin("container_queue"),64;case 42:return this.begin("container_db"),63;case 43:return this.begin("container"),62;case 44:return this.begin("container_boundary"),48;case 45:return this.begin("component_ext_queue"),73;case 46:return this.begin("component_ext_db"),72;case 47:return this.begin("component_ext"),71;case 48:return this.begin("component_queue"),70;case 49:return this.begin("component_db"),69;case 50:return this.begin("component"),68;case 51:case 52:return this.begin("node"),49;case 53:return this.begin("node_l"),50;case 54:return this.begin("node_r"),51;case 55:return this.begin("rel"),74;case 56:return this.begin("birel"),75;case 57:case 58:return this.begin("rel_u"),76;case 59:case 60:return this.begin("rel_d"),77;case 61:case 62:return this.begin("rel_l"),78;case 63:case 64:return this.begin("rel_r"),79;case 65:return this.begin("rel_b"),80;case 66:return this.begin("rel_index"),81;case 67:return this.begin("update_el_style"),82;case 68:return this.begin("update_rel_style"),83;case 69:return this.begin("update_layout_config"),84;case 70:return"EOF_IN_STRUCT";case 71:return this.begin("attribute"),"ATTRIBUTE_EMPTY";case 72:this.begin("attribute");break;case 73:case 84:this.popState(),this.popState();break;case 74:case 76:return 90;case 77:this.begin("string");break;case 79:case 85:return"STR";case 80:this.begin("string_kv");break;case 81:return this.begin("string_kv_key"),"STR_KEY";case 82:this.popState(),this.begin("string_kv_value");break;case 83:return"STR_VALUE";case 86:return"LBRACE";case 87:return"RBRACE";case 88:return"SPACE";case 89:return"EOL";case 90:return 24}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[16,17],inclusive:!1},acc_descr:{rules:[14],inclusive:!1},acc_title:{rules:[12],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[7,8],inclusive:!1},type_directive:{rules:[6,7],inclusive:!1},open_directive:{rules:[5],inclusive:!1},string_kv_value:{rules:[83,84],inclusive:!1},string_kv_key:{rules:[82],inclusive:!1},string_kv:{rules:[81],inclusive:!1},string:{rules:[78,79],inclusive:!1},attribute:{rules:[73,74,75,76,77,80,85],inclusive:!1},update_layout_config:{rules:[70,71,72,73],inclusive:!1},update_rel_style:{rules:[70,71,72,73],inclusive:!1},update_el_style:{rules:[70,71,72,73],inclusive:!1},rel_b:{rules:[70,71,72,73],inclusive:!1},rel_r:{rules:[70,71,72,73],inclusive:!1},rel_l:{rules:[70,71,72,73],inclusive:!1},rel_d:{rules:[70,71,72,73],inclusive:!1},rel_u:{rules:[70,71,72,73],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[70,71,72,73],inclusive:!1},node_r:{rules:[70,71,72,73],inclusive:!1},node_l:{rules:[70,71,72,73],inclusive:!1},node:{rules:[70,71,72,73],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[70,71,72,73],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[70,71,72,73],inclusive:!1},component_ext:{rules:[70,71,72,73],inclusive:!1},component_queue:{rules:[70,71,72,73],inclusive:!1},component_db:{rules:[70,71,72,73],inclusive:!1},component:{rules:[70,71,72,73],inclusive:!1},container_boundary:{rules:[70,71,72,73],inclusive:!1},container_ext_queue:{rules:[],inclusive:!1},container_ext_db:{rules:[70,71,72,73],inclusive:!1},container_ext:{rules:[70,71,72,73],inclusive:!1},container_queue:{rules:[70,71,72,73],inclusive:!1},container_db:{rules:[70,71,72,73],inclusive:!1},container:{rules:[70,71,72,73],inclusive:!1},birel:{rules:[70,71,72,73],inclusive:!1},system_boundary:{rules:[70,71,72,73],inclusive:!1},enterprise_boundary:{rules:[70,71,72,73],inclusive:!1},boundary:{rules:[70,71,72,73],inclusive:!1},system_ext_queue:{rules:[70,71,72,73],inclusive:!1},system_ext_db:{rules:[70,71,72,73],inclusive:!1},system_ext:{rules:[70,71,72,73],inclusive:!1},system_queue:{rules:[70,71,72,73],inclusive:!1},system_db:{rules:[70,71,72,73],inclusive:!1},system:{rules:[70,71,72,73],inclusive:!1},person_ext:{rules:[70,71,72,73],inclusive:!1},person:{rules:[70,71,72,73],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,86,87,88,89,90],inclusive:!0}}},t);function bt(){this.yy={}}return gt.lexer=yt,bt.prototype=gt,gt.Parser=bt,new bt}();zi.parser=zi;const Yi=zi,Ui=t=>null!==t.match(/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/);let Wi=[],Hi=[""],qi="global",Vi="",Gi=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Xi=[],Ki="",Qi=!1,Ji=4,ta=2;var ea;const na=function(t){return null==t?Wi:Wi.filter((e=>e.parentBoundary===t))},ra=function(){return Qi},ia={addPersonOrSystem:function(t,e,n,r,i,a,s){if(null===e||null===n)return;let o={};const l=Wi.find((t=>t.alias===e));if(l&&e===l.alias?o=l:(o.alias=e,Wi.push(o)),o.label=null==n?{text:""}:{text:n},null==r)o.descr={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]={text:e}}else o.descr={text:r};if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]=e}else o.sprite=i;if("object"==typeof a){let[t,e]=Object.entries(a)[0];o[t]=e}else o.tags=a;if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.link=s;o.typeC4Shape={text:t},o.parentBoundary=qi,o.wrap=ra()},addPersonOrSystemBoundary:function(t,e,n,r,i){if(null===t||null===e)return;let a={};const s=Gi.find((e=>e.alias===t));if(s&&t===s.alias?a=s:(a.alias=t,Gi.push(a)),a.label=null==e?{text:""}:{text:e},null==n)a.type={text:"system"};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];a[t]={text:e}}else a.type={text:n};if("object"==typeof r){let[t,e]=Object.entries(r)[0];a[t]=e}else a.tags=r;if("object"==typeof i){let[t,e]=Object.entries(i)[0];a[t]=e}else a.link=i;a.parentBoundary=qi,a.wrap=ra(),Vi=qi,qi=t,Hi.push(Vi)},addContainer:function(t,e,n,r,i,a,s,o){if(null===e||null===n)return;let l={};const c=Wi.find((t=>t.alias===e));if(c&&e===c.alias?l=c:(l.alias=e,Wi.push(l)),l.label=null==n?{text:""}:{text:n},null==r)l.techn={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]={text:e}}else l.techn={text:r};if(null==i)l.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]={text:e}}else l.descr={text:i};if("object"==typeof a){let[t,e]=Object.entries(a)[0];l[t]=e}else l.sprite=a;if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=e}else l.tags=s;if("object"==typeof o){let[t,e]=Object.entries(o)[0];l[t]=e}else l.link=o;l.wrap=ra(),l.typeC4Shape={text:t},l.parentBoundary=qi},addContainerBoundary:function(t,e,n,r,i){if(null===t||null===e)return;let a={};const s=Gi.find((e=>e.alias===t));if(s&&t===s.alias?a=s:(a.alias=t,Gi.push(a)),a.label=null==e?{text:""}:{text:e},null==n)a.type={text:"container"};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];a[t]={text:e}}else a.type={text:n};if("object"==typeof r){let[t,e]=Object.entries(r)[0];a[t]=e}else a.tags=r;if("object"==typeof i){let[t,e]=Object.entries(i)[0];a[t]=e}else a.link=i;a.parentBoundary=qi,a.wrap=ra(),Vi=qi,qi=t,Hi.push(Vi)},addComponent:function(t,e,n,r,i,a,s,o){if(null===e||null===n)return;let l={};const c=Wi.find((t=>t.alias===e));if(c&&e===c.alias?l=c:(l.alias=e,Wi.push(l)),l.label=null==n?{text:""}:{text:n},null==r)l.techn={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]={text:e}}else l.techn={text:r};if(null==i)l.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]={text:e}}else l.descr={text:i};if("object"==typeof a){let[t,e]=Object.entries(a)[0];l[t]=e}else l.sprite=a;if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=e}else l.tags=s;if("object"==typeof o){let[t,e]=Object.entries(o)[0];l[t]=e}else l.link=o;l.wrap=ra(),l.typeC4Shape={text:t},l.parentBoundary=qi},addDeploymentNode:function(t,e,n,r,i,a,s,o){if(null===e||null===n)return;let l={};const c=Gi.find((t=>t.alias===e));if(c&&e===c.alias?l=c:(l.alias=e,Gi.push(l)),l.label=null==n?{text:""}:{text:n},null==r)l.type={text:"node"};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]={text:e}}else l.type={text:r};if(null==i)l.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]={text:e}}else l.descr={text:i};if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=e}else l.tags=s;if("object"==typeof o){let[t,e]=Object.entries(o)[0];l[t]=e}else l.link=o;l.nodeType=t,l.parentBoundary=qi,l.wrap=ra(),Vi=qi,qi=e,Hi.push(Vi)},popBoundaryParseStack:function(){qi=Vi,Hi.pop(),Vi=Hi.pop(),Hi.push(Vi)},addRel:function(t,e,n,r,i,a,s,o,l){if(null==t||null==e||null==n||null==r)return;let c={};const u=Xi.find((t=>t.from===e&&t.to===n));if(u?c=u:Xi.push(c),c.type=t,c.from=e,c.to=n,c.label={text:r},null==i)c.techn={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];c[t]={text:e}}else c.techn={text:i};if(null==a)c.descr={text:""};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];c[t]={text:e}}else c.descr={text:a};if("object"==typeof s){let[t,e]=Object.entries(s)[0];c[t]=e}else c.sprite=s;if("object"==typeof o){let[t,e]=Object.entries(o)[0];c[t]=e}else c.tags=o;if("object"==typeof l){let[t,e]=Object.entries(l)[0];c[t]=e}else c.link=l;c.wrap=ra()},updateElStyle:function(t,e,n,r,i,a,s,o,l,c,u){let h=Wi.find((t=>t.alias===e));if(void 0!==h||(h=Gi.find((t=>t.alias===e)),void 0!==h)){if(null!=n)if("object"==typeof n){let[t,e]=Object.entries(n)[0];h[t]=e}else h.bgColor=n;if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];h[t]=e}else h.fontColor=r;if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];h[t]=e}else h.borderColor=i;if(null!=a)if("object"==typeof a){let[t,e]=Object.entries(a)[0];h[t]=e}else h.shadowing=a;if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];h[t]=e}else h.shape=s;if(null!=o)if("object"==typeof o){let[t,e]=Object.entries(o)[0];h[t]=e}else h.sprite=o;if(null!=l)if("object"==typeof l){let[t,e]=Object.entries(l)[0];h[t]=e}else h.techn=l;if(null!=c)if("object"==typeof c){let[t,e]=Object.entries(c)[0];h[t]=e}else h.legendText=c;if(null!=u)if("object"==typeof u){let[t,e]=Object.entries(u)[0];h[t]=e}else h.legendSprite=u}},updateRelStyle:function(t,e,n,r,i,a,s){const o=Xi.find((t=>t.from===e&&t.to===n));if(void 0!==o){if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]=e}else o.textColor=r;if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]=e}else o.lineColor=i;if(null!=a)if("object"==typeof a){let[t,e]=Object.entries(a)[0];o[t]=parseInt(e)}else o.offsetX=parseInt(a);if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=parseInt(e)}else o.offsetY=parseInt(s)}},updateLayoutConfig:function(t,e,n){let r=Ji,i=ta;if("object"==typeof e){const t=Object.values(e)[0];r=parseInt(t)}else r=parseInt(e);if("object"==typeof n){const t=Object.values(n)[0];i=parseInt(t)}else i=parseInt(n);r>=1&&(Ji=r),i>=1&&(ta=i)},autoWrap:ra,setWrap:function(t){Qi=t},getC4ShapeArray:na,getC4Shape:function(t){return Wi.find((e=>e.alias===t))},getC4ShapeKeys:function(t){return Object.keys(na(t))},getBoundarys:function(t){return null==t?Gi:Gi.filter((e=>e.parentBoundary===t))},getCurrentBoundaryParse:function(){return qi},getParentBoundaryParse:function(){return Vi},getRels:function(){return Xi},getTitle:function(){return Ki},getC4Type:function(){return ea},getC4ShapeInRow:function(){return Ji},getC4BoundaryInRow:function(){return ta},setAccTitle:jr,getAccTitle:Pr,getAccDescription:Yr,setAccDescription:zr,parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().c4,clear:function(){Wi=[],Gi=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Vi="",qi="global",Hi=[""],Xi=[],Hi=[""],Ki="",Qi=!1,Ji=4,ta=2},LINETYPE:{SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},setTitle:function(t){let e=Bt(t,dr());Ki=e},setC4Type:function(t){let e=Bt(t,dr());ea=e}},aa=function(t,e){const n=t.append("rect");if(n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),"undefined"!==e.attrs&&null!==e.attrs)for(let r in e.attrs)n.attr(r,e.attrs[r]);return"undefined"!==e.class&&n.attr("class",e.class),n},sa=function(t,e,n,r,i,a){const o=t.append("image");o.attr("width",e),o.attr("height",n),o.attr("x",r),o.attr("y",i);let l=a.startsWith("data:image/png;base64")?a:(0,s.N)(a);o.attr("xlink:href",l)},oa=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},la=(t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),ca=function(){function t(t,e,n,i,a,s,o){r(e.append("text").attr("x",n+a/2).attr("y",i+s/2+5).style("text-anchor","middle").text(t),o)}function e(t,e,n,i,a,s,o,l){const{fontSize:c,fontFamily:u,fontWeight:h}=l,d=t.split(zt.lineBreakRegex);for(let p=0;p<d.length;p++){const t=p*c-c*(d.length-1)/2,s=e.append("text").attr("x",n+a/2).attr("y",i).style("text-anchor","middle").attr("dominant-baseline","middle").style("font-size",c).style("font-weight",h).style("font-family",u);s.append("tspan").attr("dy",t).text(d[p]).attr("alignment-baseline","mathematical"),r(s,o)}}function n(t,n,i,a,s,o,l,c){const u=n.append("switch"),h=u.append("foreignObject").attr("x",i).attr("y",a).attr("width",s).attr("height",o).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");h.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,u,i,a,s,0,l,c),r(h,l)}function r(t,e){for(const n in e)e.hasOwnProperty(n)&&t.attr(n,e[n])}return function(r){return"fo"===r.textPlacement?n:"old"===r.textPlacement?t:e}}(),ua=function(t,e,n){const r=t.append("g");let i=e.bgColor?e.bgColor:"none",a=e.borderColor?e.borderColor:"#444444",s=e.fontColor?e.fontColor:"black",o={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};e.nodeType&&(o={"stroke-width":1});let l={x:e.x,y:e.y,fill:i,stroke:a,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:o};aa(r,l);let c=n.boundaryFont();c.fontWeight="bold",c.fontSize=c.fontSize+2,c.fontColor=s,ca(n)(e.label.text,r,e.x,e.y+e.label.Y,e.width,e.height,{fill:"#444444"},c),e.type&&""!==e.type.text&&(c=n.boundaryFont(),c.fontColor=s,ca(n)(e.type.text,r,e.x,e.y+e.type.Y,e.width,e.height,{fill:"#444444"},c)),e.descr&&""!==e.descr.text&&(c=n.boundaryFont(),c.fontSize=c.fontSize-2,c.fontColor=s,ca(n)(e.descr.text,r,e.x,e.y+e.descr.Y,e.width,e.height,{fill:"#444444"},c))},ha=function(t,e,n){var r;let i=e.bgColor?e.bgColor:n[e.typeC4Shape.text+"_bg_color"],a=e.borderColor?e.borderColor:n[e.typeC4Shape.text+"_border_color"],s=e.fontColor?e.fontColor:"#FFFFFF",o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(e.typeC4Shape.text){case"person":o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII="}const l=t.append("g");l.attr("class","person-man");const c=oa();switch(e.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":c.x=e.x,c.y=e.y,c.fill=i,c.width=e.width,c.height=e.height,c.stroke=a,c.rx=2.5,c.ry=2.5,c.attrs={"stroke-width":.5},aa(l,c);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":l.append("path").attr("fill",i).attr("stroke-width","0.5").attr("stroke",a).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2).replaceAll("height",e.height)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",a).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":l.append("path").attr("fill",i).attr("stroke-width","0.5").attr("stroke",a).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("width",e.width).replaceAll("half",e.height/2)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",a).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",e.x+e.width).replaceAll("starty",e.y).replaceAll("half",e.height/2))}let u=la(n,e.typeC4Shape.text);switch(l.append("text").attr("fill",s).attr("font-family",u.fontFamily).attr("font-size",u.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",e.typeC4Shape.width).attr("x",e.x+e.width/2-e.typeC4Shape.width/2).attr("y",e.y+e.typeC4Shape.Y).text("<<"+e.typeC4Shape.text+">>"),e.typeC4Shape.text){case"person":case"external_person":sa(l,48,48,e.x+e.width/2-24,e.y+e.image.Y,o)}let h=n[e.typeC4Shape.text+"Font"]();return h.fontWeight="bold",h.fontSize=h.fontSize+2,h.fontColor=s,ca(n)(e.label.text,l,e.x,e.y+e.label.Y,e.width,e.height,{fill:s},h),h=n[e.typeC4Shape.text+"Font"](),h.fontColor=s,e.techn&&""!==(null==(r=e.techn)?void 0:r.text)?ca(n)(e.techn.text,l,e.x,e.y+e.techn.Y,e.width,e.height,{fill:s,"font-style":"italic"},h):e.type&&""!==e.type.text&&ca(n)(e.type.text,l,e.x,e.y+e.type.Y,e.width,e.height,{fill:s,"font-style":"italic"},h),e.descr&&""!==e.descr.text&&(h=n.personFont(),h.fontColor=s,ca(n)(e.descr.text,l,e.x,e.y+e.descr.Y,e.width,e.height,{fill:s},h)),e.height},da=(t,e,n)=>{const r=t.append("g");let i=0;for(let a of e){let t=a.textColor?a.textColor:"#444444",e=a.lineColor?a.lineColor:"#444444",s=a.offsetX?parseInt(a.offsetX):0,o=a.offsetY?parseInt(a.offsetY):0,l="";if(0===i){let t=r.append("line");t.attr("x1",a.startPoint.x),t.attr("y1",a.startPoint.y),t.attr("x2",a.endPoint.x),t.attr("y2",a.endPoint.y),t.attr("stroke-width","1"),t.attr("stroke",e),t.style("fill","none"),"rel_b"!==a.type&&t.attr("marker-end","url("+l+"#arrowhead)"),"birel"!==a.type&&"rel_b"!==a.type||t.attr("marker-start","url("+l+"#arrowend)"),i=-1}else{let t=r.append("path");t.attr("fill","none").attr("stroke-width","1").attr("stroke",e).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",a.startPoint.x).replaceAll("starty",a.startPoint.y).replaceAll("controlx",a.startPoint.x+(a.endPoint.x-a.startPoint.x)/2-(a.endPoint.x-a.startPoint.x)/4).replaceAll("controly",a.startPoint.y+(a.endPoint.y-a.startPoint.y)/2).replaceAll("stopx",a.endPoint.x).replaceAll("stopy",a.endPoint.y)),"rel_b"!==a.type&&t.attr("marker-end","url("+l+"#arrowhead)"),"birel"!==a.type&&"rel_b"!==a.type||t.attr("marker-start","url("+l+"#arrowend)")}let c=n.messageFont();ca(n)(a.label.text,r,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+s,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+o,a.label.width,a.label.height,{fill:t},c),a.techn&&""!==a.techn.text&&(c=n.messageFont(),ca(n)("["+a.techn.text+"]",r,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+s,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+n.messageFontSize+5+o,Math.max(a.label.width,a.techn.width),a.techn.height,{fill:t,"font-style":"italic"},c))}},pa=function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},fa=function(t){t.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},ma=function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},ga=function(t){const e=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);e.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),e.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},ya=function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},ba=function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},xa=function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")};s.N;let va=0,_a=0,ka=4,Ta=2;zi.yy=ia;let wa={};class Sa{constructor(t){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,Ea(t.db.getConfig())}setData(t,e,n,r){this.nextData.startx=this.data.startx=t,this.nextData.stopx=this.data.stopx=e,this.nextData.starty=this.data.starty=n,this.nextData.stopy=this.data.stopy=r}updateVal(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])}insert(t){this.nextData.cnt=this.nextData.cnt+1;let e=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+t.margin:this.nextData.stopx+2*t.margin,n=e+t.width,r=this.nextData.starty+2*t.margin,i=r+t.height;(e>=this.data.widthLimit||n>=this.data.widthLimit||this.nextData.cnt>ka)&&(e=this.nextData.startx+t.margin+wa.nextLinePaddingX,r=this.nextData.stopy+2*t.margin,this.nextData.stopx=n=e+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=i=r+t.height,this.nextData.cnt=1),t.x=e,t.y=r,this.updateVal(this.data,"startx",e,Math.min),this.updateVal(this.data,"starty",r,Math.min),this.updateVal(this.data,"stopx",n,Math.max),this.updateVal(this.data,"stopy",i,Math.max),this.updateVal(this.nextData,"startx",e,Math.min),this.updateVal(this.nextData,"starty",r,Math.min),this.updateVal(this.nextData,"stopx",n,Math.max),this.updateVal(this.nextData,"stopy",i,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},Ea(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}}const Ea=function(t){Mn(wa,t),t.fontFamily&&(wa.personFontFamily=wa.systemFontFamily=wa.messageFontFamily=t.fontFamily),t.fontSize&&(wa.personFontSize=wa.systemFontSize=wa.messageFontSize=t.fontSize),t.fontWeight&&(wa.personFontWeight=wa.systemFontWeight=wa.messageFontWeight=t.fontWeight)},Ca=(t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),Da=t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight});function Aa(t,e,n,r,i){if(!e[t].width)if(n)e[t].text=Hn(e[t].text,i,r),e[t].textLines=e[t].text.split(zt.lineBreakRegex).length,e[t].width=i,e[t].height=Vn(e[t].text,r);else{let n=e[t].text.split(zt.lineBreakRegex);e[t].textLines=n.length;let i=0;e[t].height=0,e[t].width=0;for(const a of n)e[t].width=Math.max(Gn(a,r),e[t].width),i=Vn(a,r),e[t].height=e[t].height+i}}const Oa=function(t,e,n){e.x=n.data.startx,e.y=n.data.starty,e.width=n.data.stopx-n.data.startx,e.height=n.data.stopy-n.data.starty,e.label.y=wa.c4ShapeMargin-35;let r=e.wrap&&wa.wrap,i=Da(wa);i.fontSize=i.fontSize+2,i.fontWeight="bold",Aa("label",e,r,i,Gn(e.label.text,i)),ua(t,e,wa)},Ia=function(t,e,n,r){let i=0;for(const a of r){i=0;const r=n[a];let s=Ca(wa,r.typeC4Shape.text);switch(s.fontSize=s.fontSize-2,r.typeC4Shape.width=Gn("<<"+r.typeC4Shape.text+">>",s),r.typeC4Shape.height=s.fontSize+2,r.typeC4Shape.Y=wa.c4ShapePadding,i=r.typeC4Shape.Y+r.typeC4Shape.height-4,r.image={width:0,height:0,Y:0},r.typeC4Shape.text){case"person":case"external_person":r.image.width=48,r.image.height=48,r.image.Y=i,i=r.image.Y+r.image.height}r.sprite&&(r.image.width=48,r.image.height=48,r.image.Y=i,i=r.image.Y+r.image.height);let o=r.wrap&&wa.wrap,l=wa.width-2*wa.c4ShapePadding,c=Ca(wa,r.typeC4Shape.text);if(c.fontSize=c.fontSize+2,c.fontWeight="bold",Aa("label",r,o,c,l),r.label.Y=i+8,i=r.label.Y+r.label.height,r.type&&""!==r.type.text){r.type.text="["+r.type.text+"]",Aa("type",r,o,Ca(wa,r.typeC4Shape.text),l),r.type.Y=i+5,i=r.type.Y+r.type.height}else if(r.techn&&""!==r.techn.text){r.techn.text="["+r.techn.text+"]",Aa("techn",r,o,Ca(wa,r.techn.text),l),r.techn.Y=i+5,i=r.techn.Y+r.techn.height}let u=i,h=r.label.width;if(r.descr&&""!==r.descr.text){Aa("descr",r,o,Ca(wa,r.typeC4Shape.text),l),r.descr.Y=i+20,i=r.descr.Y+r.descr.height,h=Math.max(r.label.width,r.descr.width),u=i-5*r.descr.textLines}h+=wa.c4ShapePadding,r.width=Math.max(r.width||wa.width,h,wa.width),r.height=Math.max(r.height||wa.height,u,wa.height),r.margin=r.margin||wa.c4ShapeMargin,t.insert(r),ha(e,r,wa)}t.bumpLastMargin(wa.c4ShapeMargin)};class La{constructor(t,e){this.x=t,this.y=e}}let Na=function(t,e){let n=t.x,r=t.y,i=e.x,a=e.y,s=n+t.width/2,o=r+t.height/2,l=Math.abs(n-i),c=Math.abs(r-a),u=c/l,h=t.height/t.width,d=null;return r==a&&n<i?d=new La(n+t.width,o):r==a&&n>i?d=new La(n,o):n==i&&r<a?d=new La(s,r+t.height):n==i&&r>a&&(d=new La(s,r)),n>i&&r<a?d=h>=u?new La(n,o+u*t.width/2):new La(s-l/c*t.height/2,r+t.height):n<i&&r<a?d=h>=u?new La(n+t.width,o+u*t.width/2):new La(s+l/c*t.height/2,r+t.height):n<i&&r>a?d=h>=u?new La(n+t.width,o-u*t.width/2):new La(s+t.height/2*l/c,r):n>i&&r>a&&(d=h>=u?new La(n,o-t.width/2*u):new La(s-t.height/2*l/c,r)),d},Ma=function(t,e){let n={x:0,y:0};n.x=e.x+e.width/2,n.y=e.y+e.height/2;let r=Na(t,n);return n.x=t.x+t.width/2,n.y=t.y+t.height/2,{startPoint:r,endPoint:Na(e,n)}};function Fa(t,e,n,r,i){let a=new Sa(i);a.data.widthLimit=n.data.widthLimit/Math.min(Ta,r.length);for(let[s,o]of r.entries()){let r=0;o.image={width:0,height:0,Y:0},o.sprite&&(o.image.width=48,o.image.height=48,o.image.Y=r,r=o.image.Y+o.image.height);let l=o.wrap&&wa.wrap,c=Da(wa);if(c.fontSize=c.fontSize+2,c.fontWeight="bold",Aa("label",o,l,c,a.data.widthLimit),o.label.Y=r+8,r=o.label.Y+o.label.height,o.type&&""!==o.type.text){o.type.text="["+o.type.text+"]",Aa("type",o,l,Da(wa),a.data.widthLimit),o.type.Y=r+5,r=o.type.Y+o.type.height}if(o.descr&&""!==o.descr.text){let t=Da(wa);t.fontSize=t.fontSize-2,Aa("descr",o,l,t,a.data.widthLimit),o.descr.Y=r+20,r=o.descr.Y+o.descr.height}if(0==s||s%Ta==0){let t=n.data.startx+wa.diagramMarginX,e=n.data.stopy+wa.diagramMarginY+r;a.setData(t,t,e,e)}else{let t=a.data.stopx!==a.data.startx?a.data.stopx+wa.diagramMarginX:a.data.startx,e=a.data.starty;a.setData(t,t,e,e)}a.name=o.alias;let u=i.db.getC4ShapeArray(o.alias),h=i.db.getC4ShapeKeys(o.alias);h.length>0&&Ia(a,t,u,h),e=o.alias;let d=i.db.getBoundarys(e);d.length>0&&Fa(t,e,a,d,i),"global"!==o.alias&&Oa(t,o,a),n.data.stopy=Math.max(a.data.stopy+wa.c4ShapeMargin,n.data.stopy),n.data.stopx=Math.max(a.data.stopx+wa.c4ShapeMargin,n.data.stopx),va=Math.max(va,n.data.stopx),_a=Math.max(_a,n.data.stopy)}}const Ba={drawPersonOrSystemArray:Ia,drawBoundary:Oa,setConf:Ea,draw:function(t,e,n,r){wa=dr().c4;const i=dr().securityLevel;let a;"sandbox"===i&&(a=(0,o.Ys)("#i"+e));const s="sandbox"===i?(0,o.Ys)(a.nodes()[0].contentDocument.body):(0,o.Ys)("body");let l=r.db;r.db.setWrap(wa.wrap),ka=l.getC4ShapeInRow(),Ta=l.getC4BoundaryInRow(),It.debug(`C:${JSON.stringify(wa,null,2)}`);const c="sandbox"===i?s.select(`[id="${e}"]`):(0,o.Ys)(`[id="${e}"]`);ba(c),ya(c),xa(c);let u=new Sa(r);u.setData(wa.diagramMarginX,wa.diagramMarginX,wa.diagramMarginY,wa.diagramMarginY),u.data.widthLimit=screen.availWidth,va=wa.diagramMarginX,_a=wa.diagramMarginY;const h=r.db.getTitle();Fa(c,"",u,r.db.getBoundarys(""),r),pa(c),fa(c),ga(c),ma(c),function(t,e,n,r){let i=0;for(let s of e){i+=1;let t=s.wrap&&wa.wrap,e={fontFamily:(a=wa).messageFontFamily,fontSize:a.messageFontSize,fontWeight:a.messageFontWeight};"C4Dynamic"===r.db.getC4Type()&&(s.label.text=i+": "+s.label.text);let o=Gn(s.label.text,e);Aa("label",s,t,e,o),s.techn&&""!==s.techn.text&&(o=Gn(s.techn.text,e),Aa("techn",s,t,e,o)),s.descr&&""!==s.descr.text&&(o=Gn(s.descr.text,e),Aa("descr",s,t,e,o));let l=n(s.from),c=n(s.to),u=Ma(l,c);s.startPoint=u.startPoint,s.endPoint=u.endPoint}var a;da(t,e,wa)}(c,r.db.getRels(),r.db.getC4Shape,r),u.data.stopx=va,u.data.stopy=_a;const d=u.data;let p=d.stopy-d.starty+2*wa.diagramMarginY;const f=d.stopx-d.startx+2*wa.diagramMarginX;h&&c.append("text").text(h).attr("x",(d.stopx-d.startx)/2-4*wa.diagramMarginX).attr("y",d.starty+wa.diagramMarginY),xr(c,p,f,wa.useMaxWidth);const m=h?60:0;c.attr("viewBox",d.startx-wa.diagramMarginX+" -"+(wa.diagramMarginY+m)+" "+f+" "+(p+m)),It.debug("models:",d)}};var Ra=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,3],r=[1,7],i=[1,8],a=[1,9],s=[1,10],o=[1,13],l=[1,12],c=[1,16,25],u=[1,20],h=[1,32],d=[1,33],p=[1,34],f=[1,36],m=[1,39],g=[1,37],y=[1,38],b=[1,44],x=[1,45],v=[1,40],_=[1,41],k=[1,42],T=[1,43],w=[1,48],S=[1,49],E=[1,50],C=[1,51],D=[16,25],A=[1,65],O=[1,66],I=[1,67],L=[1,68],N=[1,69],M=[1,70],F=[1,71],B=[1,80],R=[16,25,32,45,46,54,60,61,62,63,64,65,66,71,73],$=[16,25,30,32,45,46,50,54,60,61,62,63,64,65,66,71,73,88,89,90,91],Z=[5,8,9,10,11,16,19,23,25],j=[54,88,89,90,91],P=[54,65,66,88,89,90,91],z=[54,60,61,62,63,64,88,89,90,91],Y=[16,25,32],U=[1,107],W={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statments:5,direction:6,directive:7,direction_tb:8,direction_bt:9,direction_rl:10,direction_lr:11,graphConfig:12,openDirective:13,typeDirective:14,closeDirective:15,NEWLINE:16,":":17,argDirective:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,CLASS_DIAGRAM:23,statements:24,EOF:25,statement:26,className:27,alphaNumToken:28,classLiteralName:29,GENERICTYPE:30,relationStatement:31,LABEL:32,classStatement:33,methodStatement:34,annotationStatement:35,clickStatement:36,cssClassStatement:37,noteStatement:38,acc_title:39,acc_title_value:40,acc_descr:41,acc_descr_value:42,acc_descr_multiline_value:43,CLASS:44,STYLE_SEPARATOR:45,STRUCT_START:46,members:47,STRUCT_STOP:48,ANNOTATION_START:49,ANNOTATION_END:50,MEMBER:51,SEPARATOR:52,relation:53,STR:54,NOTE_FOR:55,noteText:56,NOTE:57,relationType:58,lineType:59,AGGREGATION:60,EXTENSION:61,COMPOSITION:62,DEPENDENCY:63,LOLLIPOP:64,LINE:65,DOTTED_LINE:66,CALLBACK:67,LINK:68,LINK_TARGET:69,CLICK:70,CALLBACK_NAME:71,CALLBACK_ARGS:72,HREF:73,CSSCLASS:74,commentToken:75,textToken:76,graphCodeTokens:77,textNoTagsToken:78,TAGSTART:79,TAGEND:80,"==":81,"--":82,PCT:83,DEFAULT:84,SPACE:85,MINUS:86,keywords:87,UNICODE_TEXT:88,NUM:89,ALPHA:90,BQUOTE_STR:91,$accept:0,$end:1},terminals_:{2:"error",5:"statments",8:"direction_tb",9:"direction_bt",10:"direction_rl",11:"direction_lr",16:"NEWLINE",17:":",19:"open_directive",20:"type_directive",21:"arg_directive",22:"close_directive",23:"CLASS_DIAGRAM",25:"EOF",30:"GENERICTYPE",32:"LABEL",39:"acc_title",40:"acc_title_value",41:"acc_descr",42:"acc_descr_value",43:"acc_descr_multiline_value",44:"CLASS",45:"STYLE_SEPARATOR",46:"STRUCT_START",48:"STRUCT_STOP",49:"ANNOTATION_START",50:"ANNOTATION_END",51:"MEMBER",52:"SEPARATOR",54:"STR",55:"NOTE_FOR",57:"NOTE",60:"AGGREGATION",61:"EXTENSION",62:"COMPOSITION",63:"DEPENDENCY",64:"LOLLIPOP",65:"LINE",66:"DOTTED_LINE",67:"CALLBACK",68:"LINK",69:"LINK_TARGET",70:"CLICK",71:"CALLBACK_NAME",72:"CALLBACK_ARGS",73:"HREF",74:"CSSCLASS",77:"graphCodeTokens",79:"TAGSTART",80:"TAGEND",81:"==",82:"--",83:"PCT",84:"DEFAULT",85:"SPACE",86:"MINUS",87:"keywords",88:"UNICODE_TEXT",89:"NUM",90:"ALPHA",91:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[3,1],[3,2],[6,1],[6,1],[6,1],[6,1],[4,1],[7,4],[7,6],[13,1],[14,1],[18,1],[15,1],[12,4],[24,1],[24,2],[24,3],[27,1],[27,1],[27,2],[27,2],[27,2],[26,1],[26,2],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,2],[26,2],[26,1],[33,2],[33,4],[33,5],[33,7],[35,4],[47,1],[47,2],[34,1],[34,2],[34,1],[34,1],[31,3],[31,4],[31,4],[31,5],[38,3],[38,2],[53,3],[53,2],[53,2],[53,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[36,3],[36,4],[36,3],[36,4],[36,4],[36,5],[36,3],[36,4],[36,4],[36,5],[36,3],[36,4],[36,4],[36,5],[37,3],[75,1],[75,1],[76,1],[76,1],[76,1],[76,1],[76,1],[76,1],[76,1],[78,1],[78,1],[78,1],[78,1],[28,1],[28,1],[28,1],[29,1],[56,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 5:r.setDirection("TB");break;case 6:r.setDirection("BT");break;case 7:r.setDirection("RL");break;case 8:r.setDirection("LR");break;case 12:r.parseDirective("%%{","open_directive");break;case 13:r.parseDirective(a[o],"type_directive");break;case 14:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 15:r.parseDirective("}%%","close_directive","class");break;case 20:case 21:this.$=a[o];break;case 22:this.$=a[o-1]+a[o];break;case 23:case 24:this.$=a[o-1]+"~"+a[o];break;case 25:r.addRelation(a[o]);break;case 26:a[o-1].title=r.cleanupLabel(a[o]),r.addRelation(a[o-1]);break;case 35:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 36:case 37:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 38:r.addClass(a[o]);break;case 39:r.addClass(a[o-2]),r.setCssClass(a[o-2],a[o]);break;case 40:r.addClass(a[o-3]),r.addMembers(a[o-3],a[o-1]);break;case 41:r.addClass(a[o-5]),r.setCssClass(a[o-5],a[o-3]),r.addMembers(a[o-5],a[o-1]);break;case 42:r.addAnnotation(a[o],a[o-2]);break;case 43:this.$=[a[o]];break;case 44:a[o].push(a[o-1]),this.$=a[o];break;case 45:case 47:case 48:break;case 46:r.addMember(a[o-1],r.cleanupLabel(a[o]));break;case 49:this.$={id1:a[o-2],id2:a[o],relation:a[o-1],relationTitle1:"none",relationTitle2:"none"};break;case 50:this.$={id1:a[o-3],id2:a[o],relation:a[o-1],relationTitle1:a[o-2],relationTitle2:"none"};break;case 51:this.$={id1:a[o-3],id2:a[o],relation:a[o-2],relationTitle1:"none",relationTitle2:a[o-1]};break;case 52:this.$={id1:a[o-4],id2:a[o],relation:a[o-2],relationTitle1:a[o-3],relationTitle2:a[o-1]};break;case 53:r.addNote(a[o],a[o-1]);break;case 54:r.addNote(a[o]);break;case 55:this.$={type1:a[o-2],type2:a[o],lineType:a[o-1]};break;case 56:this.$={type1:"none",type2:a[o],lineType:a[o-1]};break;case 57:this.$={type1:a[o-1],type2:"none",lineType:a[o]};break;case 58:this.$={type1:"none",type2:"none",lineType:a[o]};break;case 59:this.$=r.relationType.AGGREGATION;break;case 60:this.$=r.relationType.EXTENSION;break;case 61:this.$=r.relationType.COMPOSITION;break;case 62:this.$=r.relationType.DEPENDENCY;break;case 63:this.$=r.relationType.LOLLIPOP;break;case 64:this.$=r.lineType.LINE;break;case 65:this.$=r.lineType.DOTTED_LINE;break;case 66:case 72:this.$=a[o-2],r.setClickEvent(a[o-1],a[o]);break;case 67:case 73:this.$=a[o-3],r.setClickEvent(a[o-2],a[o-1]),r.setTooltip(a[o-2],a[o]);break;case 68:case 76:this.$=a[o-2],r.setLink(a[o-1],a[o]);break;case 69:case 77:this.$=a[o-3],r.setLink(a[o-2],a[o-1],a[o]);break;case 70:case 78:this.$=a[o-3],r.setLink(a[o-2],a[o-1]),r.setTooltip(a[o-2],a[o]);break;case 71:case 79:this.$=a[o-4],r.setLink(a[o-3],a[o-2],a[o]),r.setTooltip(a[o-3],a[o-1]);break;case 74:this.$=a[o-3],r.setClickEvent(a[o-2],a[o-1],a[o]);break;case 75:this.$=a[o-4],r.setClickEvent(a[o-3],a[o-2],a[o-1]),r.setTooltip(a[o-3],a[o]);break;case 80:r.setCssClass(a[o-1],a[o])}},table:[{3:1,4:2,5:n,6:4,7:5,8:r,9:i,10:a,11:s,12:6,13:11,19:o,23:l},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{3:14,4:2,5:n,6:4,7:5,8:r,9:i,10:a,11:s,12:6,13:11,19:o,23:l},{1:[2,9]},e(c,[2,5]),e(c,[2,6]),e(c,[2,7]),e(c,[2,8]),{14:15,20:[1,16]},{16:[1,17]},{20:[2,12]},{1:[2,4]},{15:18,17:[1,19],22:u},e([17,22],[2,13]),{6:31,7:30,8:r,9:i,10:a,11:s,13:11,19:o,24:21,26:22,27:35,28:46,29:47,31:23,33:24,34:25,35:26,36:27,37:28,38:29,39:h,41:d,43:p,44:f,49:m,51:g,52:y,55:b,57:x,67:v,68:_,70:k,74:T,88:w,89:S,90:E,91:C},{16:[1,52]},{18:53,21:[1,54]},{16:[2,15]},{25:[1,55]},{16:[1,56],25:[2,17]},e(D,[2,25],{32:[1,57]}),e(D,[2,27]),e(D,[2,28]),e(D,[2,29]),e(D,[2,30]),e(D,[2,31]),e(D,[2,32]),e(D,[2,33]),e(D,[2,34]),{40:[1,58]},{42:[1,59]},e(D,[2,37]),e(D,[2,45],{53:60,58:63,59:64,32:[1,62],54:[1,61],60:A,61:O,62:I,63:L,64:N,65:M,66:F}),{27:72,28:46,29:47,88:w,89:S,90:E,91:C},e(D,[2,47]),e(D,[2,48]),{28:73,88:w,89:S,90:E},{27:74,28:46,29:47,88:w,89:S,90:E,91:C},{27:75,28:46,29:47,88:w,89:S,90:E,91:C},{27:76,28:46,29:47,88:w,89:S,90:E,91:C},{54:[1,77]},{27:78,28:46,29:47,88:w,89:S,90:E,91:C},{54:B,56:79},e(R,[2,20],{28:46,29:47,27:81,30:[1,82],88:w,89:S,90:E,91:C}),e(R,[2,21],{30:[1,83]}),e($,[2,94]),e($,[2,95]),e($,[2,96]),e([16,25,30,32,45,46,54,60,61,62,63,64,65,66,71,73],[2,97]),e(Z,[2,10]),{15:84,22:u},{22:[2,14]},{1:[2,16]},{6:31,7:30,8:r,9:i,10:a,11:s,13:11,19:o,24:85,25:[2,18],26:22,27:35,28:46,29:47,31:23,33:24,34:25,35:26,36:27,37:28,38:29,39:h,41:d,43:p,44:f,49:m,51:g,52:y,55:b,57:x,67:v,68:_,70:k,74:T,88:w,89:S,90:E,91:C},e(D,[2,26]),e(D,[2,35]),e(D,[2,36]),{27:86,28:46,29:47,54:[1,87],88:w,89:S,90:E,91:C},{53:88,58:63,59:64,60:A,61:O,62:I,63:L,64:N,65:M,66:F},e(D,[2,46]),{59:89,65:M,66:F},e(j,[2,58],{58:90,60:A,61:O,62:I,63:L,64:N}),e(P,[2,59]),e(P,[2,60]),e(P,[2,61]),e(P,[2,62]),e(P,[2,63]),e(z,[2,64]),e(z,[2,65]),e(D,[2,38],{45:[1,91],46:[1,92]}),{50:[1,93]},{54:[1,94]},{54:[1,95]},{71:[1,96],73:[1,97]},{28:98,88:w,89:S,90:E},{54:B,56:99},e(D,[2,54]),e(D,[2,98]),e(R,[2,22]),e(R,[2,23]),e(R,[2,24]),{16:[1,100]},{25:[2,19]},e(Y,[2,49]),{27:101,28:46,29:47,88:w,89:S,90:E,91:C},{27:102,28:46,29:47,54:[1,103],88:w,89:S,90:E,91:C},e(j,[2,57],{58:104,60:A,61:O,62:I,63:L,64:N}),e(j,[2,56]),{28:105,88:w,89:S,90:E},{47:106,51:U},{27:108,28:46,29:47,88:w,89:S,90:E,91:C},e(D,[2,66],{54:[1,109]}),e(D,[2,68],{54:[1,111],69:[1,110]}),e(D,[2,72],{54:[1,112],72:[1,113]}),e(D,[2,76],{54:[1,115],69:[1,114]}),e(D,[2,80]),e(D,[2,53]),e(Z,[2,11]),e(Y,[2,51]),e(Y,[2,50]),{27:116,28:46,29:47,88:w,89:S,90:E,91:C},e(j,[2,55]),e(D,[2,39],{46:[1,117]}),{48:[1,118]},{47:119,48:[2,43],51:U},e(D,[2,42]),e(D,[2,67]),e(D,[2,69]),e(D,[2,70],{69:[1,120]}),e(D,[2,73]),e(D,[2,74],{54:[1,121]}),e(D,[2,77]),e(D,[2,78],{69:[1,122]}),e(Y,[2,52]),{47:123,51:U},e(D,[2,40]),{48:[2,44]},e(D,[2,71]),e(D,[2,75]),e(D,[2,79]),{48:[1,124]},e(D,[2,41])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],6:[2,9],13:[2,12],14:[2,4],20:[2,15],54:[2,14],55:[2,16],85:[2,19],119:[2,44]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},H=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),19;case 1:return 8;case 2:return 9;case 3:return 10;case 4:return 11;case 5:return this.begin("type_directive"),20;case 6:return this.popState(),this.begin("arg_directive"),17;case 7:return this.popState(),this.popState(),22;case 8:return 21;case 9:case 10:case 19:case 27:break;case 11:return this.begin("acc_title"),39;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),41;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:case 39:case 42:case 45:case 48:case 51:case 54:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:return 16;case 20:case 21:return 23;case 22:return this.begin("struct"),46;case 23:return"EDGE_STATE";case 24:return"EOF_IN_STRUCT";case 25:return"OPEN_IN_STRUCT";case 26:return this.popState(),48;case 28:return"MEMBER";case 29:return 44;case 30:return 74;case 31:return 67;case 32:return 68;case 33:return 70;case 34:return 55;case 35:return 57;case 36:return 49;case 37:return 50;case 38:this.begin("generic");break;case 40:return"GENERICTYPE";case 41:this.begin("string");break;case 43:return"STR";case 44:this.begin("bqstring");break;case 46:return"BQUOTE_STR";case 47:this.begin("href");break;case 49:return 73;case 50:this.begin("callback_name");break;case 52:this.popState(),this.begin("callback_args");break;case 53:return 71;case 55:return 72;case 56:case 57:case 58:case 59:return 69;case 60:case 61:return 61;case 62:case 63:return 63;case 64:return 62;case 65:return 60;case 66:return 64;case 67:return 65;case 68:return 66;case 69:return 32;case 70:return 45;case 71:return 86;case 72:return"DOT";case 73:return"PLUS";case 74:return 83;case 75:case 76:return"EQUALS";case 77:return 90;case 78:return"PUNCTUATION";case 79:return 89;case 80:return 88;case 81:return 85;case 82:return 25}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:[{])/,/^(?:\[\*\])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:class\b)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[16,17],inclusive:!1},acc_descr:{rules:[14],inclusive:!1},acc_title:{rules:[12],inclusive:!1},arg_directive:{rules:[7,8],inclusive:!1},type_directive:{rules:[6,7],inclusive:!1},open_directive:{rules:[5],inclusive:!1},callback_args:{rules:[54,55],inclusive:!1},callback_name:{rules:[51,52,53],inclusive:!1},href:{rules:[48,49],inclusive:!1},struct:{rules:[23,24,25,26,27,28],inclusive:!1},generic:{rules:[39,40],inclusive:!1},bqstring:{rules:[45,46],inclusive:!1},string:{rules:[42,43],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,23,29,30,31,32,33,34,35,36,37,38,41,44,47,50,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82],inclusive:!0}}},t);function q(){this.yy={}}return W.lexer=H,q.prototype=W,W.Parser=q,new q}();Ra.parser=Ra;const $a=Ra,Za=(t,e)=>{var n;return"dagre-wrapper"!==(null==(n=null==e?void 0:e.class)?void 0:n.defaultRenderer)&&null!==t.match(/^\s*classDiagram/)},ja=(t,e)=>{var n;return null!==t.match(/^\s*classDiagram/)&&"dagre-wrapper"===(null==(n=null==e?void 0:e.class)?void 0:n.defaultRenderer)||null!==t.match(/^\s*classDiagram-v2/)},Pa="classid-";let za=[],Ya={},Ua=[],Wa=0,Ha=[];const qa=t=>zt.sanitizeText(t,dr()),Va=function(t){let e="",n=t;if(t.indexOf("~")>0){let r=t.split("~");n=r[0],e=zt.sanitizeText(r[1],dr())}return{className:n,type:e}},Ga=function(t){let e=Va(t);void 0===Ya[e.className]&&(Ya[e.className]={id:e.className,type:e.type,cssClasses:[],methods:[],members:[],annotations:[],domId:Pa+e.className+"-"+Wa},Wa++)},Xa=function(t){const e=Object.keys(Ya);for(const n of e)if(Ya[n].id===t)return Ya[n].domId},Ka=function(t,e){const n=Va(t).className,r=Ya[n];if("string"==typeof e){const t=e.trim();t.startsWith("<<")&&t.endsWith(">>")?r.annotations.push(qa(t.substring(2,t.length-2))):t.indexOf(")")>0?r.methods.push(qa(t)):t&&r.members.push(qa(t))}},Qa=function(t,e){t.split(",").forEach((function(t){let n=t;t[0].match(/\d/)&&(n=Pa+n),void 0!==Ya[n]&&Ya[n].cssClasses.push(e)}))},Ja=function(t,e,n){const r=dr();let i=t,a=Xa(i);if("loose"===r.securityLevel&&void 0!==e&&void 0!==Ya[i]){let t=[];if("string"==typeof n){t=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let e=0;e<t.length;e++){let n=t[e].trim();'"'===n.charAt(0)&&'"'===n.charAt(n.length-1)&&(n=n.substr(1,n.length-2)),t[e]=n}}0===t.length&&t.push(a),Ha.push((function(){const n=document.querySelector(`[id="${a}"]`);null!==n&&n.addEventListener("click",(function(){nr.runFunc(e,...t)}),!1)}))}},ts=function(t){let e=(0,o.Ys)(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=(0,o.Ys)("body").append("div").attr("class","mermaidTooltip").style("opacity",0));(0,o.Ys)(t).select("svg").selectAll("g.node").on("mouseover",(function(){const t=(0,o.Ys)(this);if(null===t.attr("title"))return;const n=this.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.text(t.attr("title")).style("left",window.scrollX+n.left+(n.right-n.left)/2+"px").style("top",window.scrollY+n.top-14+document.body.scrollTop+"px"),e.html(e.html().replace(/<br\/>/g,"<br/>")),t.classed("hover",!0)})).on("mouseout",(function(){e.transition().duration(500).style("opacity",0);(0,o.Ys)(this).classed("hover",!1)}))};Ha.push(ts);let es="TB";const ns={parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},setAccTitle:jr,getAccTitle:Pr,getAccDescription:Yr,setAccDescription:zr,getConfig:()=>dr().class,addClass:Ga,bindFunctions:function(t){Ha.forEach((function(e){e(t)}))},clear:function(){za=[],Ya={},Ua=[],Ha=[],Ha.push(ts),Zr()},getClass:function(t){return Ya[t]},getClasses:function(){return Ya},getNotes:function(){return Ua},addAnnotation:function(t,e){const n=Va(t).className;Ya[n].annotations.push(e)},addNote:function(t,e){const n={id:`note${Ua.length}`,class:e,text:t};Ua.push(n)},getRelations:function(){return za},addRelation:function(t){It.debug("Adding relation: "+JSON.stringify(t)),Ga(t.id1),Ga(t.id2),t.id1=Va(t.id1).className,t.id2=Va(t.id2).className,t.relationTitle1=zt.sanitizeText(t.relationTitle1.trim(),dr()),t.relationTitle2=zt.sanitizeText(t.relationTitle2.trim(),dr()),za.push(t)},getDirection:()=>es,setDirection:t=>{es=t},addMember:Ka,addMembers:function(t,e){Array.isArray(e)&&(e.reverse(),e.forEach((e=>Ka(t,e))))},cleanupLabel:function(t){return":"===t.substring(0,1)?zt.sanitizeText(t.substr(1).trim(),dr()):qa(t.trim())},lineType:{LINE:0,DOTTED_LINE:1},relationType:{AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4},setClickEvent:function(t,e,n){t.split(",").forEach((function(t){Ja(t,e,n),Ya[t].haveCallback=!0})),Qa(t,"clickable")},setCssClass:Qa,setLink:function(t,e,n){const r=dr();t.split(",").forEach((function(t){let i=t;t[0].match(/\d/)&&(i=Pa+i),void 0!==Ya[i]&&(Ya[i].link=nr.formatUrl(e,r),"sandbox"===r.securityLevel?Ya[i].linkTarget="_top":Ya[i].linkTarget="string"==typeof n?qa(n):"_blank")})),Qa(t,"clickable")},getTooltip:function(t){return Ya[t].tooltip},setTooltip:function(t,e){const n=dr();t.split(",").forEach((function(t){void 0!==e&&(Ya[t].tooltip=zt.sanitizeText(e,n))}))},lookUpDomId:Xa,setDiagramTitle:Ur,getDiagramTitle:Wr};let rs=0;const is=function(t){let e=t.match(/^([#+~-])?(\w+)(~\w+~|\[])?\s+(\w+) *([$*])?$/),n=t.match(/^([#+|~-])?(\w+) *\( *(.*)\) *([$*])? *(\w*[[\]|~]*\s*\w*~?)$/);return e&&!n?as(e):n?ss(n):os(t)},as=function(t){let e="",n="";try{let r=t[1]?t[1].trim():"",i=t[2]?t[2].trim():"",a=t[3]?Pt(t[3].trim()):"",s=t[4]?t[4].trim():"",o=t[5]?t[5].trim():"";n=r+i+a+" "+s,e=cs(o)}catch(r){n=t}return{displayText:n,cssStyle:e}},ss=function(t){let e="",n="";try{let r=t[1]?t[1].trim():"",i=t[2]?t[2].trim():"",a=t[3]?Pt(t[3].trim()):"",s=t[4]?t[4].trim():"";n=r+i+"("+a+")"+(t[5]?" : "+Pt(t[5]).trim():""),e=cs(s)}catch(r){n=t}return{displayText:n,cssStyle:e}},os=function(t){let e="",n="",r="",i=t.indexOf("("),a=t.indexOf(")");if(i>1&&a>i&&a<=t.length){let s="",o="",l=t.substring(0,1);l.match(/\w/)?o=t.substring(0,i).trim():(l.match(/[#+~-]/)&&(s=l),o=t.substring(1,i).trim());const c=t.substring(i+1,a);t.substring(a+1,1),n=cs(t.substring(a+1,a+2)),e=s+o+"("+Pt(c.trim())+")",a<t.length&&(r=t.substring(a+2).trim(),""!==r&&(r=" : "+Pt(r),e+=r))}else e=Pt(t);return{displayText:e,cssStyle:n}},ls=function(t,e,n,r){let i=is(e);const a=t.append("tspan").attr("x",r.padding).text(i.displayText);""!==i.cssStyle&&a.attr("style",i.cssStyle),n||a.attr("dy",r.textHeight)},cs=function(t){switch(t){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}},us=function(t,e,n,r){It.debug("Rendering class ",e,n);const i=e.id,a={id:i,label:e.id,width:0,height:0},s=t.append("g").attr("id",r.db.lookUpDomId(i)).attr("class","classGroup");let o;o=e.link?s.append("svg:a").attr("xlink:href",e.link).attr("target",e.linkTarget).append("text").attr("y",n.textHeight+n.padding).attr("x",0):s.append("text").attr("y",n.textHeight+n.padding).attr("x",0);let l=!0;e.annotations.forEach((function(t){const e=o.append("tspan").text("\xab"+t+"\xbb");l||e.attr("dy",n.textHeight),l=!1}));let c=e.id;void 0!==e.type&&""!==e.type&&(c+="<"+e.type+">");const u=o.append("tspan").text(c).attr("class","title");l||u.attr("dy",n.textHeight);const h=o.node().getBBox().height,d=s.append("line").attr("x1",0).attr("y1",n.padding+h+n.dividerMargin/2).attr("y2",n.padding+h+n.dividerMargin/2),p=s.append("text").attr("x",n.padding).attr("y",h+n.dividerMargin+n.textHeight).attr("fill","white").attr("class","classText");l=!0,e.members.forEach((function(t){ls(p,t,l,n),l=!1}));const f=p.node().getBBox(),m=s.append("line").attr("x1",0).attr("y1",n.padding+h+n.dividerMargin+f.height).attr("y2",n.padding+h+n.dividerMargin+f.height),g=s.append("text").attr("x",n.padding).attr("y",h+2*n.dividerMargin+f.height+n.textHeight).attr("fill","white").attr("class","classText");l=!0,e.methods.forEach((function(t){ls(g,t,l,n),l=!1}));const y=s.node().getBBox();var b=" ";e.cssClasses.length>0&&(b+=e.cssClasses.join(" "));const x=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",y.width+2*n.padding).attr("height",y.height+n.padding+.5*n.dividerMargin).attr("class",b).node().getBBox().width;return o.node().childNodes.forEach((function(t){t.setAttribute("x",(x-t.getBBox().width)/2)})),e.tooltip&&o.insert("title").text(e.tooltip),d.attr("x2",x),m.attr("x2",x),a.width=x,a.height=y.height+n.padding+.5*n.dividerMargin,a},hs=function(t,e,n,r,i){const a=function(t){switch(t){case i.db.relationType.AGGREGATION:return"aggregation";case i.db.relationType.EXTENSION:return"extension";case i.db.relationType.COMPOSITION:return"composition";case i.db.relationType.DEPENDENCY:return"dependency";case i.db.relationType.LOLLIPOP:return"lollipop"}};e.points=e.points.filter((t=>!Number.isNaN(t.y)));const s=e.points,l=(0,o.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(o.$0Z),c=t.append("path").attr("d",l(s)).attr("id","edge"+rs).attr("class","relation");let u,h,d="";r.arrowMarkerAbsolute&&(d=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,d=d.replace(/\(/g,"\\("),d=d.replace(/\)/g,"\\)")),1==n.relation.lineType&&c.attr("class","relation dashed-line"),10==n.relation.lineType&&c.attr("class","relation dotted-line"),"none"!==n.relation.type1&&c.attr("marker-start","url("+d+"#"+a(n.relation.type1)+"Start)"),"none"!==n.relation.type2&&c.attr("marker-end","url("+d+"#"+a(n.relation.type2)+"End)");const p=e.points.length;let f,m,g,y,b=nr.calcLabelPosition(e.points);if(u=b.x,h=b.y,p%2!=0&&p>1){let t=nr.calcCardinalityPosition("none"!==n.relation.type1,e.points,e.points[0]),r=nr.calcCardinalityPosition("none"!==n.relation.type2,e.points,e.points[p-1]);It.debug("cardinality_1_point "+JSON.stringify(t)),It.debug("cardinality_2_point "+JSON.stringify(r)),f=t.x,m=t.y,g=r.x,y=r.y}if(void 0!==n.title){const e=t.append("g").attr("class","classLabel"),i=e.append("text").attr("class","label").attr("x",u).attr("y",h).attr("fill","red").attr("text-anchor","middle").text(n.title);window.label=i;const a=i.node().getBBox();e.insert("rect",":first-child").attr("class","box").attr("x",a.x-r.padding/2).attr("y",a.y-r.padding/2).attr("width",a.width+r.padding).attr("height",a.height+r.padding)}if(It.info("Rendering relation "+JSON.stringify(n)),void 0!==n.relationTitle1&&"none"!==n.relationTitle1){t.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",f).attr("y",m).attr("fill","black").attr("font-size","6").text(n.relationTitle1)}if(void 0!==n.relationTitle2&&"none"!==n.relationTitle2){t.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",g).attr("y",y).attr("fill","black").attr("font-size","6").text(n.relationTitle2)}rs++},ds=function(t,e,n,r){It.debug("Rendering note ",e,n);const i=e.id,a={id:i,text:e.text,width:0,height:0},s=t.append("g").attr("id",i).attr("class","classGroup");let o=s.append("text").attr("y",n.textHeight+n.padding).attr("x",0);const l=JSON.parse(`"${e.text}"`).split("\n");l.forEach((function(t){It.debug(`Adding line: ${t}`),o.append("tspan").text(t).attr("class","title").attr("dy",n.textHeight)}));const c=s.node().getBBox(),u=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",c.width+2*n.padding).attr("height",c.height+l.length*n.textHeight+n.padding+.5*n.dividerMargin).node().getBBox().width;return o.node().childNodes.forEach((function(t){t.setAttribute("x",(u-t.getBBox().width)/2)})),a.width=u,a.height=c.height+l.length*n.textHeight+n.padding+.5*n.dividerMargin,a};let ps={};const fs=function(t){const e=Object.entries(ps).find((e=>e[1].label===t));if(e)return e[0]},ms={draw:function(t,e,n,r){const i=dr().class;ps={},It.info("Rendering diagram "+t);const a=dr().securityLevel;let s;"sandbox"===a&&(s=(0,o.Ys)("#i"+e));const l="sandbox"===a?(0,o.Ys)(s.nodes()[0].contentDocument.body):(0,o.Ys)("body"),c=l.select(`[id='${e}']`);var u;(u=c).append("defs").append("marker").attr("id","extensionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),u.append("defs").append("marker").attr("id","extensionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),u.append("defs").append("marker").attr("id","compositionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),u.append("defs").append("marker").attr("id","compositionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),u.append("defs").append("marker").attr("id","aggregationStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),u.append("defs").append("marker").attr("id","aggregationEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),u.append("defs").append("marker").attr("id","dependencyStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),u.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z");const h=new ut.k({multigraph:!0});h.setGraph({isMultiGraph:!0}),h.setDefaultEdgeLabel((function(){return{}}));const d=r.db.getClasses(),p=Object.keys(d);for(const o of p){const t=d[o],e=us(c,t,i,r);ps[e.id]=e,h.setNode(e.id,e),It.info("Org height: "+e.height)}r.db.getRelations().forEach((function(t){It.info("tjoho"+fs(t.id1)+fs(t.id2)+JSON.stringify(t)),h.setEdge(fs(t.id1),fs(t.id2),{relation:t},t.title||"DEFAULT")}));r.db.getNotes().forEach((function(t){It.debug(`Adding note: ${JSON.stringify(t)}`);const e=ds(c,t,i,r);ps[e.id]=e,h.setNode(e.id,e),t.class&&t.class in d&&h.setEdge(t.id,fs(t.class),{relation:{id1:t.id,id2:t.class,relation:{type1:"none",type2:"none",lineType:10}}},"DEFAULT")})),(0,ct.bK)(h),h.nodes().forEach((function(t){void 0!==t&&void 0!==h.node(t)&&(It.debug("Node "+t+": "+JSON.stringify(h.node(t))),l.select("#"+(r.db.lookUpDomId(t)||t)).attr("transform","translate("+(h.node(t).x-h.node(t).width/2)+","+(h.node(t).y-h.node(t).height/2)+" )"))})),h.edges().forEach((function(t){void 0!==t&&void 0!==h.edge(t)&&(It.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(h.edge(t))),hs(c,h.edge(t),h.edge(t).relation,i,r))}));const f=c.node().getBBox(),m=f.width+40,g=f.height+40;xr(c,g,m,i.useMaxWidth);const y=`${f.x-20} ${f.y-20} ${m} ${g}`;It.debug(`viewBox ${y}`),c.attr("viewBox",y)}},gs={extension:(t,e,n)=>{It.trace("Making markers for ",n),t.append("defs").append("marker").attr("id",e+"-extensionStart").attr("class","marker extension "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},composition:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-compositionStart").attr("class","marker composition "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},aggregation:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},dependency:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},lollipop:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","white").attr("cx",6).attr("cy",7).attr("r",6)},point:(t,e)=>{t.append("marker").attr("id",e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 12 20").attr("refX",10).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},circle:(t,e)=>{t.append("marker").attr("id",e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},cross:(t,e)=>{t.append("marker").attr("id",e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},barb:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")}},ys=(t,e,n,r)=>{e.forEach((e=>{gs[e](t,n,r)}))};const bs=(t,e,n,r)=>{let i=t||"";if("object"==typeof i&&(i=i[0]),jt(dr().flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"<br />"),It.info("vertexText"+i);let t=function(t){const e=(0,o.Ys)(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),n=e.append("xhtml:div"),r=t.label,i=t.isNode?"nodeLabel":"edgeLabel";var a,s;return n.html('<span class="'+i+'" '+(t.labelStyle?'style="'+t.labelStyle+'"':"")+">"+r+"</span>"),a=n,(s=t.labelStyle)&&a.attr("style",s),n.style("display","inline-block"),n.style("white-space","nowrap"),n.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}({isNode:r,label:lp(i).replace(/fa[blrs]?:fa-[\w-]+/g,(t=>`<i class='${t.replace(":"," ")}'></i>`)),labelStyle:e.replace("fill:","color:")});return t}{const t=document.createElementNS("http://www.w3.org/2000/svg","text");t.setAttribute("style",e.replace("color:","fill:"));let r=[];r="string"==typeof i?i.split(/\\n|\n|<br\s*\/?>/gi):Array.isArray(i)?i:[];for(const e of r){const r=document.createElementNS("http://www.w3.org/2000/svg","tspan");r.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),r.setAttribute("dy","1em"),r.setAttribute("x","0"),n?r.setAttribute("class","title-row"):r.setAttribute("class","row"),r.textContent=e.trim(),t.appendChild(r)}return t}},xs=(t,e,n,r)=>{let i;i=n||"node default";const a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),s=a.insert("g").attr("class","label").attr("style",e.labelStyle);let l;l=void 0===e.labelText?"":"string"==typeof e.labelText?e.labelText:e.labelText[0];const c=s.node().appendChild(bs(Bt(lp(l),dr()),e.labelStyle,!1,r));let u=c.getBBox();if(jt(dr().flowchart.htmlLabels)){const t=c.children[0],e=(0,o.Ys)(c);u=t.getBoundingClientRect(),e.attr("width",u.width),e.attr("height",u.height)}const h=e.padding/2;return s.attr("transform","translate("+-u.width/2+", "+-u.height/2+")"),{shapeSvg:a,bbox:u,halfPadding:h,label:s}},vs=(t,e)=>{const n=e.node().getBBox();t.width=n.width,t.height=n.height};function _s(t,e,n,r){return t.insert("polygon",":first-child").attr("points",r.map((function(t){return t.x+","+t.y})).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+n/2+")")}let ks={},Ts={},ws={};const Ss=(t,e)=>(It.trace("In isDecendant",e," ",t," = ",Ts[e].includes(t)),!!Ts[e].includes(t)),Es=(t,e,n,r)=>{It.warn("Copying children of ",t,"root",r,"data",e.node(t),r);const i=e.children(t)||[];t!==r&&i.push(t),It.warn("Copying (nodes) clusterId",t,"nodes",i),i.forEach((i=>{if(e.children(i).length>0)Es(i,e,n,r);else{const a=e.node(i);It.info("cp ",i," to ",r," with parent ",t),n.setNode(i,a),r!==e.parent(i)&&(It.warn("Setting parent",i,e.parent(i)),n.setParent(i,e.parent(i))),t!==r&&i!==t?(It.debug("Setting parent",i,t),n.setParent(i,t)):(It.info("In copy ",t,"root",r,"data",e.node(t),r),It.debug("Not Setting parent for node=",i,"cluster!==rootId",t!==r,"node!==clusterId",i!==t));const s=e.edges(i);It.debug("Copying Edges",s),s.forEach((i=>{It.info("Edge",i);const a=e.edge(i.v,i.w,i.name);It.info("Edge data",a,r);try{((t,e)=>(It.info("Decendants of ",e," is ",Ts[e]),It.info("Edge is ",t),t.v!==e&&t.w!==e&&(Ts[e]?Ts[e].includes(t.v)||Ss(t.v,e)||Ss(t.w,e)||Ts[e].includes(t.w):(It.debug("Tilt, ",e,",not in decendants"),!1))))(i,r)?(It.info("Copying as ",i.v,i.w,a,i.name),n.setEdge(i.v,i.w,a,i.name),It.info("newGraph edges ",n.edges(),n.edge(n.edges()[0]))):It.info("Skipping copy of edge ",i.v,"--\x3e",i.w," rootId: ",r," clusterId:",t)}catch(s){It.error(s)}}))}It.debug("Removing node",i),e.removeNode(i)}))},Cs=(t,e)=>{const n=e.children(t);let r=[...n];for(const i of n)ws[i]=t,r=[...r,...Cs(i,e)];return r},Ds=(t,e)=>{It.trace("Searching",t);const n=e.children(t);if(It.trace("Searching children of id ",t,n),n.length<1)return It.trace("This is a valid node",t),t;for(const r of n){const n=Ds(r,e);if(n)return It.trace("Found replacement for",t," => ",n),n}},As=t=>ks[t]&&ks[t].externalConnections&&ks[t]?ks[t].id:t,Os=(t,e)=>{if(It.warn("extractor - ",e,ht.c(t),t.children("D")),e>10)return void It.error("Bailing out");let n=t.nodes(),r=!1;for(const i of n){const e=t.children(i);r=r||e.length>0}if(r){It.debug("Nodes = ",n,e);for(const r of n)if(It.debug("Extracting node",r,ks,ks[r]&&!ks[r].externalConnections,!t.parent(r),t.node(r),t.children("D")," Depth ",e),ks[r])if(!ks[r].externalConnections&&t.children(r)&&t.children(r).length>0){It.warn("Cluster without external connections, without a parent and with children",r,e);let n="TB"===t.graph().rankdir?"LR":"TB";ks[r]&&ks[r].clusterData&&ks[r].clusterData.dir&&(n=ks[r].clusterData.dir,It.warn("Fixing dir",ks[r].clusterData.dir,n));const i=new ut.k({multigraph:!0,compound:!0}).setGraph({rankdir:n,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));It.warn("Old graph before copy",ht.c(t)),Es(r,t,i,r),t.setNode(r,{clusterNode:!0,id:r,clusterData:ks[r].clusterData,labelText:ks[r].labelText,graph:i}),It.warn("New graph after copy node: (",r,")",ht.c(i)),It.debug("Old graph after copy",ht.c(t))}else It.warn("Cluster ** ",r," **not meeting the criteria !externalConnections:",!ks[r].externalConnections," no parent: ",!t.parent(r)," children ",t.children(r)&&t.children(r).length>0,t.children("D"),e),It.debug(ks);else It.debug("Not a cluster",r,e);n=t.nodes(),It.warn("New list of nodes",n);for(const r of n){const n=t.node(r);It.warn(" Now next level",r,n),n.clusterNode&&Os(n.graph,e+1)}}else It.debug("Done, no node has children",t.nodes())},Is=(t,e)=>{if(0===e.length)return[];let n=Object.assign(e);return e.forEach((e=>{const r=t.children(e),i=Is(t,r);n=[...n,...i]})),n};function Ls(t,e,n,r){var i=t.x,a=t.y,s=i-r.x,o=a-r.y,l=Math.sqrt(e*e*o*o+n*n*s*s),c=Math.abs(e*n*s/l);r.x<i&&(c=-c);var u=Math.abs(e*n*o/l);return r.y<a&&(u=-u),{x:i+c,y:a+u}}function Ns(t,e,n,r){var i,a,s,o,l,c,u,h,d,p,f,m,g;if(i=e.y-t.y,s=t.x-e.x,l=e.x*t.y-t.x*e.y,d=i*n.x+s*n.y+l,p=i*r.x+s*r.y+l,!(0!==d&&0!==p&&Ms(d,p)||(a=r.y-n.y,o=n.x-r.x,c=r.x*n.y-n.x*r.y,u=a*t.x+o*t.y+c,h=a*e.x+o*e.y+c,0!==u&&0!==h&&Ms(u,h)||0==(f=i*o-a*s))))return m=Math.abs(f/2),{x:(g=s*c-o*l)<0?(g-m)/f:(g+m)/f,y:(g=a*l-i*c)<0?(g-m)/f:(g+m)/f}}function Ms(t,e){return t*e>0}const Fs=(t,e)=>{var n,r,i=t.x,a=t.y,s=e.x-i,o=e.y-a,l=t.width/2,c=t.height/2;return Math.abs(o)*l>Math.abs(s)*c?(o<0&&(c=-c),n=0===o?0:c*s/o,r=c):(s<0&&(l=-l),n=l,r=0===s?0:l*o/s),{x:i+n,y:a+r}},Bs={node:function(t,e){return t.intersect(e)},circle:function(t,e,n){return Ls(t,e,e,n)},ellipse:Ls,polygon:function(t,e,n){var r=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach((function(t){s=Math.min(s,t.x),o=Math.min(o,t.y)})):(s=Math.min(s,e.x),o=Math.min(o,e.y));for(var l=r-t.width/2-s,c=i-t.height/2-o,u=0;u<e.length;u++){var h=e[u],d=e[u<e.length-1?u+1:0],p=Ns(t,n,{x:l+h.x,y:c+h.y},{x:l+d.x,y:c+d.y});p&&a.push(p)}return a.length?(a.length>1&&a.sort((function(t,e){var r=t.x-n.x,i=t.y-n.y,a=Math.sqrt(r*r+i*i),s=e.x-n.x,o=e.y-n.y,l=Math.sqrt(s*s+o*o);return a<l?-1:a===l?0:1})),a[0]):t},rect:Fs},Rs=(t,e)=>{const{shapeSvg:n,bbox:r,halfPadding:i}=xs(t,e,"node "+e.classes,!0);It.info("Classes = ",e.classes);const a=n.insert("rect",":first-child");return a.attr("rx",e.rx).attr("ry",e.ry).attr("x",-r.width/2-i).attr("y",-r.height/2-i).attr("width",r.width+e.padding).attr("height",r.height+e.padding),vs(e,a),e.intersect=function(t){return Bs.rect(e,t)},n},$s=(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding+(r.height+e.padding),a=[{x:i/2,y:0},{x:i,y:-i/2},{x:i/2,y:-i},{x:0,y:-i/2}];It.info("Question main (Circle)");const s=_s(n,i,i,a);return s.attr("style",e.style),vs(e,s),e.intersect=function(t){return It.warn("Intersect called"),Bs.polygon(e,a,t)},n};function Zs(t,e,n,r){const i=[],a=t=>{i.push(t,0)},s=t=>{i.push(0,t)};e.includes("t")?(It.debug("add top border"),a(n)):s(n),e.includes("r")?(It.debug("add right border"),a(r)):s(r),e.includes("b")?(It.debug("add bottom border"),a(n)):s(n),e.includes("l")?(It.debug("add left border"),a(r)):s(r),t.attr("stroke-dasharray",i.join(" "))}const js=(t,e,n)=>{const r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id);let i=70,a=10;"LR"===n&&(i=10,a=70);const s=r.append("rect").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return vs(e,s),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(t){return Bs.rect(e,t)},r},Ps={rhombus:$s,question:$s,rect:(t,e)=>{const{shapeSvg:n,bbox:r,halfPadding:i}=xs(t,e,"node "+e.classes,!0);It.trace("Classes = ",e.classes);const a=n.insert("rect",":first-child"),s=r.width+e.padding,o=r.height+e.padding;if(a.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",-r.width/2-i).attr("y",-r.height/2-i).attr("width",s).attr("height",o),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(Zs(a,e.props.borders,s,o),t.delete("borders")),t.forEach((t=>{It.warn(`Unknown node property ${t}`)}))}return vs(e,a),e.intersect=function(t){return Bs.rect(e,t)},n},labelRect:(t,e)=>{const{shapeSvg:n}=xs(t,e,"label",!0);It.trace("Classes = ",e.classes);const r=n.insert("rect",":first-child");if(r.attr("width",0).attr("height",0),n.attr("class","label edgeLabel"),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(Zs(r,e.props.borders,0,0),t.delete("borders")),t.forEach((t=>{It.warn(`Unknown node property ${t}`)}))}return vs(e,r),e.intersect=function(t){return Bs.rect(e,t)},n},rectWithTitle:(t,e)=>{let n;n=e.classes?"node "+e.classes:"node default";const r=t.insert("g").attr("class",n).attr("id",e.domId||e.id),i=r.insert("rect",":first-child"),a=r.insert("line"),s=r.insert("g").attr("class","label"),l=e.labelText.flat?e.labelText.flat():e.labelText;let c="";c="object"==typeof l?l[0]:l,It.info("Label text abc79",c,l,"object"==typeof l);const u=s.node().appendChild(bs(c,e.labelStyle,!0,!0));let h={width:0,height:0};if(jt(dr().flowchart.htmlLabels)){const t=u.children[0],e=(0,o.Ys)(u);h=t.getBoundingClientRect(),e.attr("width",h.width),e.attr("height",h.height)}It.info("Text 2",l);const d=l.slice(1,l.length);let p=u.getBBox();const f=s.node().appendChild(bs(d.join?d.join("<br/>"):d,e.labelStyle,!0,!0));if(jt(dr().flowchart.htmlLabels)){const t=f.children[0],e=(0,o.Ys)(f);h=t.getBoundingClientRect(),e.attr("width",h.width),e.attr("height",h.height)}const m=e.padding/2;return(0,o.Ys)(f).attr("transform","translate( "+(h.width>p.width?0:(p.width-h.width)/2)+", "+(p.height+m+5)+")"),(0,o.Ys)(u).attr("transform","translate( "+(h.width<p.width?0:-(p.width-h.width)/2)+", 0)"),h=s.node().getBBox(),s.attr("transform","translate("+-h.width/2+", "+(-h.height/2-m+3)+")"),i.attr("class","outer title-state").attr("x",-h.width/2-m).attr("y",-h.height/2-m).attr("width",h.width+e.padding).attr("height",h.height+e.padding),a.attr("class","divider").attr("x1",-h.width/2-m).attr("x2",h.width/2+m).attr("y1",-h.height/2-m+p.height+m).attr("y2",-h.height/2-m+p.height+m),vs(e,i),e.intersect=function(t){return Bs.rect(e,t)},r},choice:(t,e)=>{const n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),r=[{x:0,y:14},{x:14,y:0},{x:0,y:-14},{x:-14,y:0}];return n.insert("polygon",":first-child").attr("points",r.map((function(t){return t.x+","+t.y})).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(t){return Bs.circle(e,14,t)},n},circle:(t,e)=>{const{shapeSvg:n,bbox:r,halfPadding:i}=xs(t,e,void 0,!0),a=n.insert("circle",":first-child");return a.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",r.width/2+i).attr("width",r.width+e.padding).attr("height",r.height+e.padding),It.info("Circle main"),vs(e,a),e.intersect=function(t){return It.info("Circle intersect",e,r.width/2+i,t),Bs.circle(e,r.width/2+i,t)},n},doublecircle:(t,e)=>{const{shapeSvg:n,bbox:r,halfPadding:i}=xs(t,e,void 0,!0),a=n.insert("g",":first-child"),s=a.insert("circle"),o=a.insert("circle");return s.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",r.width/2+i+5).attr("width",r.width+e.padding+10).attr("height",r.height+e.padding+10),o.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",r.width/2+i).attr("width",r.width+e.padding).attr("height",r.height+e.padding),It.info("DoubleCircle main"),vs(e,s),e.intersect=function(t){return It.info("DoubleCircle intersect",e,r.width/2+i+5,t),Bs.circle(e,r.width/2+i+5,t)},n},stadium:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.height+e.padding,a=r.width+i/4+e.padding,s=n.insert("rect",":first-child").attr("style",e.style).attr("rx",i/2).attr("ry",i/2).attr("x",-a/2).attr("y",-i/2).attr("width",a).attr("height",i);return vs(e,s),e.intersect=function(t){return Bs.rect(e,t)},n},hexagon:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.height+e.padding,a=i/4,s=r.width+2*a+e.padding,o=[{x:a,y:0},{x:s-a,y:0},{x:s,y:-i/2},{x:s-a,y:-i},{x:a,y:-i},{x:0,y:-i/2}],l=_s(n,s,i,o);return l.attr("style",e.style),vs(e,l),e.intersect=function(t){return Bs.polygon(e,o,t)},n},rect_left_inv_arrow:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding,a=r.height+e.padding,s=[{x:-a/2,y:0},{x:i,y:0},{x:i,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}];return _s(n,i,a,s).attr("style",e.style),e.width=i+a,e.height=a,e.intersect=function(t){return Bs.polygon(e,s,t)},n},lean_right:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding,a=r.height+e.padding,s=[{x:-2*a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:a/6,y:-a}],o=_s(n,i,a,s);return o.attr("style",e.style),vs(e,o),e.intersect=function(t){return Bs.polygon(e,s,t)},n},lean_left:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding,a=r.height+e.padding,s=[{x:2*a/6,y:0},{x:i+a/6,y:0},{x:i-2*a/6,y:-a},{x:-a/6,y:-a}],o=_s(n,i,a,s);return o.attr("style",e.style),vs(e,o),e.intersect=function(t){return Bs.polygon(e,s,t)},n},trapezoid:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding,a=r.height+e.padding,s=[{x:-2*a/6,y:0},{x:i+2*a/6,y:0},{x:i-a/6,y:-a},{x:a/6,y:-a}],o=_s(n,i,a,s);return o.attr("style",e.style),vs(e,o),e.intersect=function(t){return Bs.polygon(e,s,t)},n},inv_trapezoid:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding,a=r.height+e.padding,s=[{x:a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:-2*a/6,y:-a}],o=_s(n,i,a,s);return o.attr("style",e.style),vs(e,o),e.intersect=function(t){return Bs.polygon(e,s,t)},n},rect_right_inv_arrow:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding,a=r.height+e.padding,s=[{x:0,y:0},{x:i+a/2,y:0},{x:i,y:-a/2},{x:i+a/2,y:-a},{x:0,y:-a}],o=_s(n,i,a,s);return o.attr("style",e.style),vs(e,o),e.intersect=function(t){return Bs.polygon(e,s,t)},n},cylinder:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding,a=i/2,s=a/(2.5+i/50),o=r.height+s+e.padding,l="M 0,"+s+" a "+a+","+s+" 0,0,0 "+i+" 0 a "+a+","+s+" 0,0,0 "+-i+" 0 l 0,"+o+" a "+a+","+s+" 0,0,0 "+i+" 0 l 0,"+-o,c=n.attr("label-offset-y",s).insert("path",":first-child").attr("style",e.style).attr("d",l).attr("transform","translate("+-i/2+","+-(o/2+s)+")");return vs(e,c),e.intersect=function(t){const n=Bs.rect(e,t),r=n.x-e.x;if(0!=a&&(Math.abs(r)<e.width/2||Math.abs(r)==e.width/2&&Math.abs(n.y-e.y)>e.height/2-s)){let i=s*s*(1-r*r/(a*a));0!=i&&(i=Math.sqrt(i)),i=s-i,t.y-e.y>0&&(i=-i),n.y+=i}return n},n},start:(t,e)=>{const n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),r=n.insert("circle",":first-child");return r.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),vs(e,r),e.intersect=function(t){return Bs.circle(e,7,t)},n},end:(t,e)=>{const n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),r=n.insert("circle",":first-child"),i=n.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),r.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),vs(e,i),e.intersect=function(t){return Bs.circle(e,7,t)},n},note:Rs,subroutine:(t,e)=>{const{shapeSvg:n,bbox:r}=xs(t,e,void 0,!0),i=r.width+e.padding,a=r.height+e.padding,s=[{x:0,y:0},{x:i,y:0},{x:i,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:i+8,y:0},{x:i+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],o=_s(n,i,a,s);return o.attr("style",e.style),vs(e,o),e.intersect=function(t){return Bs.polygon(e,s,t)},n},fork:js,join:js,class_box:(t,e)=>{const n=e.padding/2;let r;r=e.classes?"node "+e.classes:"node default";const i=t.insert("g").attr("class",r).attr("id",e.domId||e.id),a=i.insert("rect",":first-child"),s=i.insert("line"),l=i.insert("line");let c=0,u=4;const h=i.insert("g").attr("class","label");let d=0;const p=e.classData.annotations&&e.classData.annotations[0],f=e.classData.annotations[0]?"\xab"+e.classData.annotations[0]+"\xbb":"",m=h.node().appendChild(bs(f,e.labelStyle,!0,!0));let g=m.getBBox();if(jt(dr().flowchart.htmlLabels)){const t=m.children[0],e=(0,o.Ys)(m);g=t.getBoundingClientRect(),e.attr("width",g.width),e.attr("height",g.height)}e.classData.annotations[0]&&(u+=g.height+4,c+=g.width);let y=e.classData.id;void 0!==e.classData.type&&""!==e.classData.type&&(dr().flowchart.htmlLabels?y+="<"+e.classData.type+">":y+="<"+e.classData.type+">");const b=h.node().appendChild(bs(y,e.labelStyle,!0,!0));(0,o.Ys)(b).attr("class","classTitle");let x=b.getBBox();if(jt(dr().flowchart.htmlLabels)){const t=b.children[0],e=(0,o.Ys)(b);x=t.getBoundingClientRect(),e.attr("width",x.width),e.attr("height",x.height)}u+=x.height+4,x.width>c&&(c=x.width);const v=[];e.classData.members.forEach((t=>{const n=is(t);let r=n.displayText;dr().flowchart.htmlLabels&&(r=r.replace(/</g,"<").replace(/>/g,">"));const i=h.node().appendChild(bs(r,n.cssStyle?n.cssStyle:e.labelStyle,!0,!0));let a=i.getBBox();if(jt(dr().flowchart.htmlLabels)){const t=i.children[0],e=(0,o.Ys)(i);a=t.getBoundingClientRect(),e.attr("width",a.width),e.attr("height",a.height)}a.width>c&&(c=a.width),u+=a.height+4,v.push(i)})),u+=8;const _=[];if(e.classData.methods.forEach((t=>{const n=is(t);let r=n.displayText;dr().flowchart.htmlLabels&&(r=r.replace(/</g,"<").replace(/>/g,">"));const i=h.node().appendChild(bs(r,n.cssStyle?n.cssStyle:e.labelStyle,!0,!0));let a=i.getBBox();if(jt(dr().flowchart.htmlLabels)){const t=i.children[0],e=(0,o.Ys)(i);a=t.getBoundingClientRect(),e.attr("width",a.width),e.attr("height",a.height)}a.width>c&&(c=a.width),u+=a.height+4,_.push(i)})),u+=8,p){let t=(c-g.width)/2;(0,o.Ys)(m).attr("transform","translate( "+(-1*c/2+t)+", "+-1*u/2+")"),d=g.height+4}let k=(c-x.width)/2;return(0,o.Ys)(b).attr("transform","translate( "+(-1*c/2+k)+", "+(-1*u/2+d)+")"),d+=x.height+4,s.attr("class","divider").attr("x1",-c/2-n).attr("x2",c/2+n).attr("y1",-u/2-n+8+d).attr("y2",-u/2-n+8+d),d+=8,v.forEach((t=>{(0,o.Ys)(t).attr("transform","translate( "+-c/2+", "+(-1*u/2+d+4)+")"),d+=x.height+4})),d+=8,l.attr("class","divider").attr("x1",-c/2-n).attr("x2",c/2+n).attr("y1",-u/2-n+8+d).attr("y2",-u/2-n+8+d),d+=8,_.forEach((t=>{(0,o.Ys)(t).attr("transform","translate( "+-c/2+", "+(-1*u/2+d)+")"),d+=x.height+4})),a.attr("class","outer title-state").attr("x",-c/2-n).attr("y",-u/2-n).attr("width",c+e.padding).attr("height",u+e.padding),vs(e,a),e.intersect=function(t){return Bs.rect(e,t)},i}};let zs={};const Ys=(t,e,n)=>{let r,i;if(e.link){let a;"sandbox"===dr().securityLevel?a="_top":e.linkTarget&&(a=e.linkTarget||"_blank"),r=t.insert("svg:a").attr("xlink:href",e.link).attr("target",a),i=Ps[e.shape](r,e,n)}else i=Ps[e.shape](t,e,n),r=i;return e.tooltip&&i.attr("title",e.tooltip),e.class&&i.attr("class","node default "+e.class),zs[e.id]=r,e.haveCallback&&zs[e.id].attr("class",zs[e.id].attr("class")+" clickable"),r},Us=t=>{const e=zs[t.id];It.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");const n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n},Ws={rect:(t,e)=>{It.trace("Creating subgraph rect for ",e.id,e);const n=t.insert("g").attr("class","cluster"+(e.class?" "+e.class:"")).attr("id",e.id),r=n.insert("rect",":first-child"),i=n.insert("g").attr("class","cluster-label"),a=i.node().appendChild(bs(e.labelText,e.labelStyle,void 0,!0));let s=a.getBBox();if(jt(dr().flowchart.htmlLabels)){const t=a.children[0],e=(0,o.Ys)(a);s=t.getBoundingClientRect(),e.attr("width",s.width),e.attr("height",s.height)}const l=0*e.padding,c=l/2,u=e.width<=s.width+l?s.width+l:e.width;e.width<=s.width+l?e.diff=(s.width-e.width)/2-e.padding/2:e.diff=-e.padding/2,It.trace("Data ",e,JSON.stringify(e)),r.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-u/2).attr("y",e.y-e.height/2-c).attr("width",u).attr("height",e.height+l),i.attr("transform","translate("+(e.x-s.width/2)+", "+(e.y-e.height/2)+")");const h=r.node().getBBox();return e.width=h.width,e.height=h.height,e.intersect=function(t){return Fs(e,t)},n},roundedWithTitle:(t,e)=>{const n=t.insert("g").attr("class",e.classes).attr("id",e.id),r=n.insert("rect",":first-child"),i=n.insert("g").attr("class","cluster-label"),a=n.append("rect"),s=i.node().appendChild(bs(e.labelText,e.labelStyle,void 0,!0));let l=s.getBBox();if(jt(dr().flowchart.htmlLabels)){const t=s.children[0],e=(0,o.Ys)(s);l=t.getBoundingClientRect(),e.attr("width",l.width),e.attr("height",l.height)}l=s.getBBox();const c=0*e.padding,u=c/2,h=e.width<=l.width+e.padding?l.width+e.padding:e.width;e.width<=l.width+e.padding?e.diff=(l.width+0*e.padding-e.width)/2:e.diff=-e.padding/2,r.attr("class","outer").attr("x",e.x-h/2-u).attr("y",e.y-e.height/2-u).attr("width",h+c).attr("height",e.height+c),a.attr("class","inner").attr("x",e.x-h/2-u).attr("y",e.y-e.height/2-u+l.height-1).attr("width",h+c).attr("height",e.height+c-l.height-3),i.attr("transform","translate("+(e.x-l.width/2)+", "+(e.y-e.height/2-e.padding/3+(jt(dr().flowchart.htmlLabels)?5:3))+")");const d=r.node().getBBox();return e.height=d.height,e.intersect=function(t){return Fs(e,t)},n},noteGroup:(t,e)=>{const n=t.insert("g").attr("class","note-cluster").attr("id",e.id),r=n.insert("rect",":first-child"),i=0*e.padding,a=i/2;r.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+i).attr("height",e.height+i).attr("fill","none");const s=r.node().getBBox();return e.width=s.width,e.height=s.height,e.intersect=function(t){return Fs(e,t)},n},divider:(t,e)=>{const n=t.insert("g").attr("class",e.classes).attr("id",e.id),r=n.insert("rect",":first-child"),i=0*e.padding,a=i/2;r.attr("class","divider").attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2).attr("width",e.width+i).attr("height",e.height+i);const s=r.node().getBBox();return e.width=s.width,e.height=s.height,e.diff=-e.padding/2,e.intersect=function(t){return Fs(e,t)},n}};let Hs={};let qs={},Vs={};const Gs=(t,e)=>{const n=bs(e.label,e.labelStyle),r=t.insert("g").attr("class","edgeLabel"),i=r.insert("g").attr("class","label");i.node().appendChild(n);let a,s=n.getBBox();if(jt(dr().flowchart.htmlLabels)){const t=n.children[0],e=(0,o.Ys)(n);s=t.getBoundingClientRect(),e.attr("width",s.width),e.attr("height",s.height)}if(i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),qs[e.id]=r,e.width=s.width,e.height=s.height,e.startLabelLeft){const n=bs(e.startLabelLeft,e.labelStyle),r=t.insert("g").attr("class","edgeTerminals"),i=r.insert("g").attr("class","inner");a=i.node().appendChild(n);const s=n.getBBox();i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),Vs[e.id]||(Vs[e.id]={}),Vs[e.id].startLeft=r,Xs(a,e.startLabelLeft)}if(e.startLabelRight){const n=bs(e.startLabelRight,e.labelStyle),r=t.insert("g").attr("class","edgeTerminals"),i=r.insert("g").attr("class","inner");a=r.node().appendChild(n),i.node().appendChild(n);const s=n.getBBox();i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),Vs[e.id]||(Vs[e.id]={}),Vs[e.id].startRight=r,Xs(a,e.startLabelRight)}if(e.endLabelLeft){const n=bs(e.endLabelLeft,e.labelStyle),r=t.insert("g").attr("class","edgeTerminals"),i=r.insert("g").attr("class","inner");a=i.node().appendChild(n);const s=n.getBBox();i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),r.node().appendChild(n),Vs[e.id]||(Vs[e.id]={}),Vs[e.id].endLeft=r,Xs(a,e.endLabelLeft)}if(e.endLabelRight){const n=bs(e.endLabelRight,e.labelStyle),r=t.insert("g").attr("class","edgeTerminals"),i=r.insert("g").attr("class","inner");a=i.node().appendChild(n);const s=n.getBBox();i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),r.node().appendChild(n),Vs[e.id]||(Vs[e.id]={}),Vs[e.id].endRight=r,Xs(a,e.endLabelRight)}return n};function Xs(t,e){dr().flowchart.htmlLabels&&t&&(t.style.width=9*e.length+"px",t.style.height="12px")}const Ks=(t,e)=>{It.warn("abc88 cutPathAtIntersect",t,e);let n=[],r=t[0],i=!1;return t.forEach((t=>{if(It.info("abc88 checking point",t,e),((t,e)=>{const n=t.x,r=t.y,i=Math.abs(e.x-n),a=Math.abs(e.y-r),s=t.width/2,o=t.height/2;return i>=s||a>=o})(e,t)||i)It.warn("abc88 outside",t,r),r=t,i||n.push(t);else{const a=((t,e,n)=>{It.warn(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(e)}\n insidePoint : ${JSON.stringify(n)}\n node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);const r=t.x,i=t.y,a=Math.abs(r-n.x),s=t.width/2;let o=n.x<e.x?s-a:s+a;const l=t.height/2,c=Math.abs(e.y-n.y),u=Math.abs(e.x-n.x);if(Math.abs(i-e.y)*s>Math.abs(r-e.x)*l){let t=n.y<e.y?e.y-l-i:i-l-e.y;o=u*t/c;const r={x:n.x<e.x?n.x+o:n.x-u+o,y:n.y<e.y?n.y+c-t:n.y-c+t};return 0===o&&(r.x=e.x,r.y=e.y),0===u&&(r.x=e.x),0===c&&(r.y=e.y),It.warn(`abc89 topp/bott calc, Q ${c}, q ${t}, R ${u}, r ${o}`,r),r}{o=n.x<e.x?e.x-s-r:r-s-e.x;let t=c*o/u,i=n.x<e.x?n.x+u-o:n.x-u+o,a=n.y<e.y?n.y+t:n.y-t;return It.warn(`sides calc abc89, Q ${c}, q ${t}, R ${u}, r ${o}`,{_x:i,_y:a}),0===o&&(i=e.x,a=e.y),0===u&&(i=e.x),0===c&&(a=e.y),{x:i,y:a}}})(e,r,t);It.warn("abc88 inside",t,r,a),It.warn("abc88 intersection",a);let s=!1;n.forEach((t=>{s=s||t.x===a.x&&t.y===a.y})),n.some((t=>t.x===a.x&&t.y===a.y))?It.warn("abc88 no intersect",a,n):n.push(a),i=!0}})),It.warn("abc88 returning points",n),n},Qs=(t,e,n,r)=>{It.info("Graph in recursive render: XXX",ht.c(e),r);const i=e.graph().rankdir;It.trace("Dir in recursive render - dir:",i);const a=t.insert("g").attr("class","root");e.nodes()?It.info("Recursive render XXX",e.nodes()):It.info("No nodes found for",e),e.edges().length>0&&It.trace("Recursive edges",e.edge(e.edges()[0]));const s=a.insert("g").attr("class","clusters"),l=a.insert("g").attr("class","edgePaths"),c=a.insert("g").attr("class","edgeLabels"),u=a.insert("g").attr("class","nodes");e.nodes().forEach((function(t){const a=e.node(t);if(void 0!==r){const n=JSON.parse(JSON.stringify(r.clusterData));It.info("Setting data for cluster XXX (",t,") ",n,r),e.setNode(r.id,n),e.parent(t)||(It.trace("Setting parent",t,r.id),e.setParent(t,r.id,n))}if(It.info("(Insert) Node XXX"+t+": "+JSON.stringify(e.node(t))),a&&a.clusterNode){It.info("Cluster identified",t,a.width,e.node(t));const r=Qs(u,a.graph,n,e.node(t)),i=r.elem;vs(a,i),a.diff=r.diff||0,It.info("Node bounds (abc123)",t,a,a.width,a.x,a.y),((t,e)=>{zs[e.id]=t})(i,a),It.warn("Recursive render complete ",i,a)}else e.children(t).length>0?(It.info("Cluster - the non recursive path XXX",t,a.id,a,e),It.info(Ds(a.id,e)),ks[a.id]={id:Ds(a.id,e),node:a}):(It.info("Node - the non recursive path",t,a.id,a),Ys(u,e.node(t),i))})),e.edges().forEach((function(t){const n=e.edge(t.v,t.w,t.name);It.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t)),It.info("Edge "+t.v+" -> "+t.w+": ",t," ",JSON.stringify(e.edge(t))),It.info("Fix",ks,"ids:",t.v,t.w,"Translateing: ",ks[t.v],ks[t.w]),Gs(c,n)})),e.edges().forEach((function(t){It.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t))})),It.info("#############################################"),It.info("### Layout ###"),It.info("#############################################"),It.info(e),(0,ct.bK)(e),It.info("Graph after layout:",ht.c(e));let h=0;return(t=>Is(t,t.children()))(e).forEach((function(t){const n=e.node(t);It.info("Position "+t+": "+JSON.stringify(e.node(t))),It.info("Position "+t+": ("+n.x,","+n.y,") width: ",n.width," height: ",n.height),n&&n.clusterNode?Us(n):e.children(t).length>0?(((t,e)=>{It.trace("Inserting cluster");const n=e.shape||"rect";Hs[e.id]=Ws[n](t,e)})(s,n),ks[n.id].node=n):Us(n)})),e.edges().forEach((function(t){const r=e.edge(t);It.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(r),r);const i=function(t,e,n,r,i,a){let s=n.points,l=!1;const c=a.node(e.v);var u=a.node(e.w);It.info("abc88 InsertEdge: ",n),u.intersect&&c.intersect&&(s=s.slice(1,n.points.length-1),s.unshift(c.intersect(s[0])),It.info("Last point",s[s.length-1],u,u.intersect(s[s.length-1])),s.push(u.intersect(s[s.length-1]))),n.toCluster&&(It.info("to cluster abc88",r[n.toCluster]),s=Ks(n.points,r[n.toCluster].node),l=!0),n.fromCluster&&(It.info("from cluster abc88",r[n.fromCluster]),s=Ks(s.reverse(),r[n.fromCluster].node).reverse(),l=!0);const h=s.filter((t=>!Number.isNaN(t.y)));let d;d=("graph"===i||"flowchart"===i)&&n.curve||o.$0Z;const p=(0,o.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(d);let f;switch(n.thickness){case"normal":f="edge-thickness-normal";break;case"thick":f="edge-thickness-thick";break;default:f=""}switch(n.pattern){case"solid":f+=" edge-pattern-solid";break;case"dotted":f+=" edge-pattern-dotted";break;case"dashed":f+=" edge-pattern-dashed"}const m=t.append("path").attr("d",p(h)).attr("id",n.id).attr("class"," "+f+(n.classes?" "+n.classes:"")).attr("style",n.style);let g="";switch((dr().flowchart.arrowMarkerAbsolute||dr().state.arrowMarkerAbsolute)&&(g=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,g=g.replace(/\(/g,"\\("),g=g.replace(/\)/g,"\\)")),It.info("arrowTypeStart",n.arrowTypeStart),It.info("arrowTypeEnd",n.arrowTypeEnd),n.arrowTypeStart){case"arrow_cross":m.attr("marker-start","url("+g+"#"+i+"-crossStart)");break;case"arrow_point":m.attr("marker-start","url("+g+"#"+i+"-pointStart)");break;case"arrow_barb":m.attr("marker-start","url("+g+"#"+i+"-barbStart)");break;case"arrow_circle":m.attr("marker-start","url("+g+"#"+i+"-circleStart)");break;case"aggregation":m.attr("marker-start","url("+g+"#"+i+"-aggregationStart)");break;case"extension":m.attr("marker-start","url("+g+"#"+i+"-extensionStart)");break;case"composition":m.attr("marker-start","url("+g+"#"+i+"-compositionStart)");break;case"dependency":m.attr("marker-start","url("+g+"#"+i+"-dependencyStart)");break;case"lollipop":m.attr("marker-start","url("+g+"#"+i+"-lollipopStart)")}switch(n.arrowTypeEnd){case"arrow_cross":m.attr("marker-end","url("+g+"#"+i+"-crossEnd)");break;case"arrow_point":m.attr("marker-end","url("+g+"#"+i+"-pointEnd)");break;case"arrow_barb":m.attr("marker-end","url("+g+"#"+i+"-barbEnd)");break;case"arrow_circle":m.attr("marker-end","url("+g+"#"+i+"-circleEnd)");break;case"aggregation":m.attr("marker-end","url("+g+"#"+i+"-aggregationEnd)");break;case"extension":m.attr("marker-end","url("+g+"#"+i+"-extensionEnd)");break;case"composition":m.attr("marker-end","url("+g+"#"+i+"-compositionEnd)");break;case"dependency":m.attr("marker-end","url("+g+"#"+i+"-dependencyEnd)");break;case"lollipop":m.attr("marker-end","url("+g+"#"+i+"-lollipopEnd)")}let y={};return l&&(y.updatedPath=s),y.originalPath=n.points,y}(l,t,r,ks,n,e);((t,e)=>{It.info("Moving label abc78 ",t.id,t.label,qs[t.id]);let n=e.updatedPath?e.updatedPath:e.originalPath;if(t.label){const r=qs[t.id];let i=t.x,a=t.y;if(n){const r=nr.calcLabelPosition(n);It.info("Moving label "+t.label+" from (",i,",",a,") to (",r.x,",",r.y,") abc78"),e.updatedPath&&(i=r.x,a=r.y)}r.attr("transform","translate("+i+", "+a+")")}if(t.startLabelLeft){const e=Vs[t.id].startLeft;let r=t.x,i=t.y;if(n){const e=nr.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",n);r=e.x,i=e.y}e.attr("transform","translate("+r+", "+i+")")}if(t.startLabelRight){const e=Vs[t.id].startRight;let r=t.x,i=t.y;if(n){const e=nr.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",n);r=e.x,i=e.y}e.attr("transform","translate("+r+", "+i+")")}if(t.endLabelLeft){const e=Vs[t.id].endLeft;let r=t.x,i=t.y;if(n){const e=nr.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",n);r=e.x,i=e.y}e.attr("transform","translate("+r+", "+i+")")}if(t.endLabelRight){const e=Vs[t.id].endRight;let r=t.x,i=t.y;if(n){const e=nr.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",n);r=e.x,i=e.y}e.attr("transform","translate("+r+", "+i+")")}})(r,i)})),e.nodes().forEach((function(t){const n=e.node(t);It.info(t,n.type,n.diff),"group"===n.type&&(h=n.diff)})),{elem:a,diff:h}},Js=(t,e,n,r,i)=>{ys(t,n,r,i),zs={},qs={},Vs={},Hs={},Ts={},ws={},ks={},It.warn("Graph at first:",ht.c(e)),((t,e)=>{!t||e>10?It.debug("Opting out, no graph "):(It.debug("Opting in, graph "),t.nodes().forEach((function(e){t.children(e).length>0&&(It.warn("Cluster identified",e," Replacement id in edges: ",Ds(e,t)),Ts[e]=Cs(e,t),ks[e]={id:Ds(e,t),clusterData:t.node(e)})})),t.nodes().forEach((function(e){const n=t.children(e),r=t.edges();n.length>0?(It.debug("Cluster identified",e,Ts),r.forEach((t=>{t.v!==e&&t.w!==e&&Ss(t.v,e)^Ss(t.w,e)&&(It.warn("Edge: ",t," leaves cluster ",e),It.warn("Decendants of XXX ",e,": ",Ts[e]),ks[e].externalConnections=!0)}))):It.debug("Not a cluster ",e,Ts)})),t.edges().forEach((function(e){const n=t.edge(e);It.warn("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),It.warn("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(t.edge(e)));let r=e.v,i=e.w;if(It.warn("Fix XXX",ks,"ids:",e.v,e.w,"Translating: ",ks[e.v]," --- ",ks[e.w]),ks[e.v]&&ks[e.w]&&ks[e.v]===ks[e.w]){It.warn("Fixing and trixing link to self - removing XXX",e.v,e.w,e.name),It.warn("Fixing and trixing - removing XXX",e.v,e.w,e.name),r=As(e.v),i=As(e.w),t.removeEdge(e.v,e.w,e.name);const a=e.w+"---"+e.v;t.setNode(a,{domId:a,id:a,labelStyle:"",labelText:n.label,padding:0,shape:"labelRect",style:""});const s=JSON.parse(JSON.stringify(n)),o=JSON.parse(JSON.stringify(n));s.label="",s.arrowTypeEnd="none",o.label="",s.fromCluster=e.v,o.toCluster=e.v,t.setEdge(r,a,s,e.name+"-cyclic-special"),t.setEdge(a,i,o,e.name+"-cyclic-special")}else(ks[e.v]||ks[e.w])&&(It.warn("Fixing and trixing - removing XXX",e.v,e.w,e.name),r=As(e.v),i=As(e.w),t.removeEdge(e.v,e.w,e.name),r!==e.v&&(n.fromCluster=e.v),i!==e.w&&(n.toCluster=e.w),It.warn("Fix Replacing with XXX",r,i,e.name),t.setEdge(r,i,n,e.name))})),It.warn("Adjusted Graph",ht.c(t)),Os(t,0),It.trace(ks))})(e),It.warn("Graph after:",ht.c(e)),Qs(t,e,r)},to=t=>zt.sanitizeText(t,dr());let eo={dividerMargin:10,padding:5,textHeight:10};function no(t){let e;switch(t){case 0:e="aggregation";break;case 1:e="extension";break;case 2:e="composition";break;case 3:e="dependency";break;case 4:e="lollipop";break;default:e="none"}return e}const ro={setConf:function(t){Object.keys(t).forEach((function(e){eo[e]=t[e]}))},draw:function(t,e,n,r){It.info("Drawing class - ",e);const i=dr().flowchart,a=dr().securityLevel;It.info("config:",i);const s=i.nodeSpacing||50,l=i.rankSpacing||50,c=new ut.k({multigraph:!0,compound:!0}).setGraph({rankdir:r.db.getDirection(),nodesep:s,ranksep:l,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}})),u=r.db.getClasses(),h=r.db.getRelations(),d=r.db.getNotes();let p;It.info(h),function(t,e,n,r){const i=Object.keys(t);It.info("keys:",i),It.info(t),i.forEach((function(n){const i=t[n];let a="";i.cssClasses.length>0&&(a=a+" "+i.cssClasses.join(" "));const s={labelStyle:""};let o=void 0!==i.text?i.text:i.id,l="";i.type,l="class_box",e.setNode(i.id,{labelStyle:s.labelStyle,shape:l,labelText:to(o),classData:i,rx:0,ry:0,class:a,style:s.style,id:i.id,domId:i.domId,tooltip:r.db.getTooltip(i.id)||"",haveCallback:i.haveCallback,link:i.link,width:"group"===i.type?500:void 0,type:i.type,padding:dr().flowchart.padding}),It.info("setNode",{labelStyle:s.labelStyle,shape:l,labelText:o,rx:0,ry:0,class:a,style:s.style,id:i.id,width:"group"===i.type?500:void 0,type:i.type,padding:dr().flowchart.padding})}))}(u,c,0,r),function(t,e){const n=dr().flowchart;let r=0;t.forEach((function(i){r++;const a={classes:"relation"};a.pattern=1==i.relation.lineType?"dashed":"solid",a.id="id"+r,"arrow_open"===i.type?a.arrowhead="none":a.arrowhead="normal",It.info(a,i),a.startLabelRight="none"===i.relationTitle1?"":i.relationTitle1,a.endLabelLeft="none"===i.relationTitle2?"":i.relationTitle2,a.arrowTypeStart=no(i.relation.type1),a.arrowTypeEnd=no(i.relation.type2);let s="",l="";if(void 0!==i.style){const t=Pn(i.style);s=t.style,l=t.labelStyle}else s="fill:none";a.style=s,a.labelStyle=l,void 0!==i.interpolate?a.curve=Zn(i.interpolate,o.c_6):void 0!==t.defaultInterpolate?a.curve=Zn(t.defaultInterpolate,o.c_6):a.curve=Zn(n.curve,o.c_6),i.text=i.title,void 0===i.text?void 0!==i.style&&(a.arrowheadStyle="fill: #333"):(a.arrowheadStyle="fill: #333",a.labelpos="c",dr().flowchart.htmlLabels?(a.labelType="html",a.label='<span class="edgeLabel">'+i.text+"</span>"):(a.labelType="text",a.label=i.text.replace(zt.lineBreakRegex,"\n"),void 0===i.style&&(a.style=a.style||"stroke: #333; stroke-width: 1.5px;fill:none"),a.labelStyle=a.labelStyle.replace("color:","fill:"))),e.setEdge(i.id1,i.id2,a,r)}))}(h,c),function(t,e,n,r){It.info(t),t.forEach((function(t,i){const a=t,s="",l="";let c=a.text,u="note";if(e.setNode(a.id,{labelStyle:s,shape:u,labelText:to(c),noteData:a,rx:0,ry:0,class:"",style:l,id:a.id,domId:a.id,tooltip:"",type:"note",padding:dr().flowchart.padding}),It.info("setNode",{labelStyle:s,shape:u,labelText:c,rx:0,ry:0,style:l,id:a.id,type:"note",padding:dr().flowchart.padding}),!a.class||!(a.class in r))return;const h=n+i,d={classes:"relation",pattern:"dotted"};d.id=`edgeNote${h}`,d.arrowhead="none",It.info(`Note edge: ${JSON.stringify(d)}, ${JSON.stringify(a)}`),d.startLabelRight="",d.endLabelLeft="",d.arrowTypeStart="none",d.arrowTypeEnd="none",d.style="fill:none",d.labelStyle="",d.curve=Zn(eo.curve,o.c_6),e.setEdge(a.id,a.class,d,h)}))}(d,c,h.length+1,u),"sandbox"===a&&(p=(0,o.Ys)("#i"+e));const f="sandbox"===a?(0,o.Ys)(p.nodes()[0].contentDocument.body):(0,o.Ys)("body"),m=f.select(`[id="${e}"]`),g=f.select("#"+e+" g");if(Js(g,c,["aggregation","extension","composition","dependency","lollipop"],"classDiagram",e),nr.insertTitle(m,"classTitleText",i.titleTopMargin,r.db.getDiagramTitle()),vr(c,m,i.diagramPadding,i.useMaxWidth),!i.htmlLabels){const t="sandbox"===a?p.nodes()[0].contentDocument:document,n=t.querySelectorAll('[id="'+e+'"] .edgeLabel .label');for(const e of n){const n=e.getBBox(),r=t.createElementNS("http://www.w3.org/2000/svg","rect");r.setAttribute("rx",0),r.setAttribute("ry",0),r.setAttribute("width",n.width),r.setAttribute("height",n.height),e.insertBefore(r,e.firstChild)}}}};var io=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,2],r=[1,5],i=[6,9,11,23,25,27,29,30,31,51],a=[1,17],s=[1,18],o=[1,19],l=[1,20],c=[1,21],u=[1,22],h=[1,25],d=[1,30],p=[1,31],f=[1,32],m=[1,33],g=[6,9,11,15,20,23,25,27,29,30,31,44,45,46,47,51],y=[1,45],b=[30,31,48,49],x=[4,6,9,11,23,25,27,29,30,31,51],v=[44,45,46,47],_=[22,37],k=[1,65],T=[1,64],w=[22,37,39,41],S={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,entityName:17,relSpec:18,role:19,BLOCK_START:20,attributes:21,BLOCK_STOP:22,title:23,title_value:24,acc_title:25,acc_title_value:26,acc_descr:27,acc_descr_value:28,acc_descr_multiline_value:29,ALPHANUM:30,ENTITY_NAME:31,attribute:32,attributeType:33,attributeName:34,attributeKeyTypeList:35,attributeComment:36,ATTRIBUTE_WORD:37,attributeKeyType:38,COMMA:39,ATTRIBUTE_KEY:40,COMMENT:41,cardinality:42,relType:43,ZERO_OR_ONE:44,ZERO_OR_MORE:45,ONE_OR_MORE:46,ONLY_ONE:47,NON_IDENTIFYING:48,IDENTIFYING:49,WORD:50,open_directive:51,type_directive:52,arg_directive:53,close_directive:54,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"BLOCK_START",22:"BLOCK_STOP",23:"title",24:"title_value",25:"acc_title",26:"acc_title_value",27:"acc_descr",28:"acc_descr_value",29:"acc_descr_multiline_value",30:"ALPHANUM",31:"ENTITY_NAME",37:"ATTRIBUTE_WORD",39:"COMMA",40:"ATTRIBUTE_KEY",41:"COMMENT",44:"ZERO_OR_ONE",45:"ZERO_OR_MORE",46:"ONE_OR_MORE",47:"ONLY_ONE",48:"NON_IDENTIFYING",49:"IDENTIFYING",50:"WORD",51:"open_directive",52:"type_directive",53:"arg_directive",54:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[10,2],[10,2],[10,2],[10,1],[17,1],[17,1],[21,1],[21,2],[32,2],[32,3],[32,3],[32,4],[33,1],[34,1],[35,1],[35,3],[38,1],[36,1],[18,3],[42,1],[42,1],[42,1],[42,1],[43,1],[43,1],[19,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 1:break;case 3:case 7:case 8:this.$=[];break;case 4:a[o-1].push(a[o]),this.$=a[o-1];break;case 5:case 6:case 20:case 43:case 28:case 29:case 32:this.$=a[o];break;case 12:r.addEntity(a[o-4]),r.addEntity(a[o-2]),r.addRelationship(a[o-4],a[o],a[o-2],a[o-3]);break;case 13:r.addEntity(a[o-3]),r.addAttributes(a[o-3],a[o-1]);break;case 14:r.addEntity(a[o-2]);break;case 15:r.addEntity(a[o]);break;case 16:case 17:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 18:case 19:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 21:case 41:case 42:case 33:this.$=a[o].replace(/"/g,"");break;case 22:case 30:this.$=[a[o]];break;case 23:a[o].push(a[o-1]),this.$=a[o];break;case 24:this.$={attributeType:a[o-1],attributeName:a[o]};break;case 25:this.$={attributeType:a[o-2],attributeName:a[o-1],attributeKeyTypeList:a[o]};break;case 26:this.$={attributeType:a[o-2],attributeName:a[o-1],attributeComment:a[o]};break;case 27:this.$={attributeType:a[o-3],attributeName:a[o-2],attributeKeyTypeList:a[o-1],attributeComment:a[o]};break;case 31:a[o-2].push(a[o]),this.$=a[o-2];break;case 34:this.$={cardA:a[o],relType:a[o-1],cardB:a[o-2]};break;case 35:this.$=r.Cardinality.ZERO_OR_ONE;break;case 36:this.$=r.Cardinality.ZERO_OR_MORE;break;case 37:this.$=r.Cardinality.ONE_OR_MORE;break;case 38:this.$=r.Cardinality.ONLY_ONE;break;case 39:this.$=r.Identification.NON_IDENTIFYING;break;case 40:this.$=r.Identification.IDENTIFYING;break;case 44:r.parseDirective("%%{","open_directive");break;case 45:r.parseDirective(a[o],"type_directive");break;case 46:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 47:r.parseDirective("}%%","close_directive","er")}},table:[{3:1,4:n,7:3,12:4,51:r},{1:[3]},e(i,[2,3],{5:6}),{3:7,4:n,7:3,12:4,51:r},{13:8,52:[1,9]},{52:[2,44]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:a,25:s,27:o,29:l,30:c,31:u,51:r},{1:[2,2]},{14:23,15:[1,24],54:h},e([15,54],[2,45]),e(i,[2,8],{1:[2,1]}),e(i,[2,4]),{7:15,10:26,12:4,17:16,23:a,25:s,27:o,29:l,30:c,31:u,51:r},e(i,[2,6]),e(i,[2,7]),e(i,[2,11]),e(i,[2,15],{18:27,42:29,20:[1,28],44:d,45:p,46:f,47:m}),{24:[1,34]},{26:[1,35]},{28:[1,36]},e(i,[2,19]),e(g,[2,20]),e(g,[2,21]),{11:[1,37]},{16:38,53:[1,39]},{11:[2,47]},e(i,[2,5]),{17:40,30:c,31:u},{21:41,22:[1,42],32:43,33:44,37:y},{43:46,48:[1,47],49:[1,48]},e(b,[2,35]),e(b,[2,36]),e(b,[2,37]),e(b,[2,38]),e(i,[2,16]),e(i,[2,17]),e(i,[2,18]),e(x,[2,9]),{14:49,54:h},{54:[2,46]},{15:[1,50]},{22:[1,51]},e(i,[2,14]),{21:52,22:[2,22],32:43,33:44,37:y},{34:53,37:[1,54]},{37:[2,28]},{42:55,44:d,45:p,46:f,47:m},e(v,[2,39]),e(v,[2,40]),{11:[1,56]},{19:57,30:[1,60],31:[1,59],50:[1,58]},e(i,[2,13]),{22:[2,23]},e(_,[2,24],{35:61,36:62,38:63,40:k,41:T}),e([22,37,40,41],[2,29]),e([30,31],[2,34]),e(x,[2,10]),e(i,[2,12]),e(i,[2,41]),e(i,[2,42]),e(i,[2,43]),e(_,[2,25],{36:66,39:[1,67],41:T}),e(_,[2,26]),e(w,[2,30]),e(_,[2,33]),e(w,[2,32]),e(_,[2,27]),{38:68,40:k},e(w,[2,31])],defaultActions:{5:[2,44],7:[2,2],25:[2,47],39:[2,46],45:[2,28],52:[2,23]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},E=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("acc_title"),25;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),27;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.begin("open_directive"),51;case 8:return this.begin("type_directive"),52;case 9:return this.popState(),this.begin("arg_directive"),15;case 10:return this.popState(),this.popState(),54;case 11:return 53;case 12:case 13:case 15:case 22:case 27:break;case 14:return 11;case 16:return 9;case 17:return 31;case 18:return 50;case 19:return 4;case 20:return this.begin("block"),20;case 21:return 39;case 23:return 40;case 24:case 25:return 37;case 26:return 41;case 28:return this.popState(),22;case 29:case 58:return e.yytext[0];case 30:case 34:case 35:case 48:return 44;case 31:case 32:case 33:case 41:case 43:case 50:return 46;case 36:case 37:case 38:case 39:case 40:case 42:case 49:return 45;case 44:case 45:case 46:case 47:return 47;case 51:case 54:case 55:case 56:return 48;case 52:case 53:return 49;case 57:return 30;case 59:return 6}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:,)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:(.*?)[~](.*?)*[~])/i,/^(?:[A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},open_directive:{rules:[8],inclusive:!1},type_directive:{rules:[9,10],inclusive:!1},arg_directive:{rules:[10,11],inclusive:!1},block:{rules:[21,22,23,24,25,26,27,28,29],inclusive:!1},INITIAL:{rules:[0,2,4,7,12,13,14,15,16,17,18,19,20,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59],inclusive:!0}}},t);function C(){this.yy={}}return S.lexer=E,C.prototype=S,S.Parser=C,new C}();io.parser=io;const ao=io,so=t=>null!==t.match(/^\s*erDiagram/);let oo={},lo=[];const co=function(t){return void 0===oo[t]&&(oo[t]={attributes:[]},It.info("Added new entity :",t)),oo[t]},uo={Cardinality:{ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE"},Identification:{NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().er,addEntity:co,addAttributes:function(t,e){let n,r=co(t);for(n=e.length-1;n>=0;n--)r.attributes.push(e[n]),It.debug("Added attribute ",e[n].attributeName)},getEntities:()=>oo,addRelationship:function(t,e,n,r){let i={entityA:t,roleA:e,entityB:n,relSpec:r};lo.push(i),It.debug("Added new relationship :",i)},getRelationships:()=>lo,clear:function(){oo={},lo=[],Zr()},setAccTitle:jr,getAccTitle:Pr,setAccDescription:zr,getAccDescription:Yr,setDiagramTitle:Ur,getDiagramTitle:Wr},ho={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END"},po=ho,fo=function(t,e){let n;t.append("defs").append("marker").attr("id",ho.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",ho.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),n=t.append("defs").append("marker").attr("id",ho.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),n.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18"),n=t.append("defs").append("marker").attr("id",ho.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),n.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,0 L21,18"),t.append("defs").append("marker").attr("id",ho.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",ho.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),n=t.append("defs").append("marker").attr("id",ho.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),n.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),n=t.append("defs").append("marker").attr("id",ho.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),n.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},mo=/[^\dA-Za-z](\W)*/g;let go={},yo=new Map;const bo=function(t,e,n){let r;return Object.keys(e).forEach((function(i){const a=function(t="",e=""){const n=t.replace(mo,"");return`${ko(e)}${ko(n)}${_t(t,_o)}`}(i,"entity");yo.set(i,a);const s=t.append("g").attr("id",a);r=void 0===r?a:r;const o="text-"+a,l=s.append("text").classed("er entityLabel",!0).attr("id",o).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","middle").style("font-family",dr().fontFamily).style("font-size",go.fontSize+"px").text(i),{width:c,height:u}=((t,e,n)=>{const r=go.entityPadding/3,i=go.entityPadding/3,a=.85*go.fontSize,s=e.node().getBBox(),o=[];let l=!1,c=!1,u=0,h=0,d=0,p=0,f=s.height+2*r,m=1;n.forEach((t=>{void 0!==t.attributeKeyTypeList&&t.attributeKeyTypeList.length>0&&(l=!0),void 0!==t.attributeComment&&(c=!0)})),n.forEach((n=>{const i=`${e.node().id}-attr-${m}`;let s=0;const g=Pt(n.attributeType),y=t.append("text").classed("er entityLabel",!0).attr("id",`${i}-type`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",dr().fontFamily).style("font-size",a+"px").text(g),b=t.append("text").classed("er entityLabel",!0).attr("id",`${i}-name`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",dr().fontFamily).style("font-size",a+"px").text(n.attributeName),x={};x.tn=y,x.nn=b;const v=y.node().getBBox(),_=b.node().getBBox();if(u=Math.max(u,v.width),h=Math.max(h,_.width),s=Math.max(v.height,_.height),l){const e=void 0!==n.attributeKeyTypeList?n.attributeKeyTypeList.join(","):"",r=t.append("text").classed("er entityLabel",!0).attr("id",`${i}-key`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",dr().fontFamily).style("font-size",a+"px").text(e);x.kn=r;const o=r.node().getBBox();d=Math.max(d,o.width),s=Math.max(s,o.height)}if(c){const e=t.append("text").classed("er entityLabel",!0).attr("id",`${i}-comment`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",dr().fontFamily).style("font-size",a+"px").text(n.attributeComment||"");x.cn=e;const r=e.node().getBBox();p=Math.max(p,r.width),s=Math.max(s,r.height)}x.height=s,o.push(x),f+=s+2*r,m+=1}));let g=4;l&&(g+=2),c&&(g+=2);const y=u+h+d+p,b={width:Math.max(go.minEntityWidth,Math.max(s.width+2*go.entityPadding,y+i*g)),height:n.length>0?f:Math.max(go.minEntityHeight,s.height+2*go.entityPadding)};if(n.length>0){const n=Math.max(0,(b.width-y-i*g)/(g/2));e.attr("transform","translate("+b.width/2+","+(r+s.height/2)+")");let a=s.height+2*r,f="attributeBoxOdd";o.forEach((e=>{const s=a+r+e.height/2;e.tn.attr("transform","translate("+i+","+s+")");const o=t.insert("rect","#"+e.tn.node().id).classed(`er ${f}`,!0).attr("x",0).attr("y",a).attr("width",u+2*i+n).attr("height",e.height+2*r),m=parseFloat(o.attr("x"))+parseFloat(o.attr("width"));e.nn.attr("transform","translate("+(m+i)+","+s+")");const g=t.insert("rect","#"+e.nn.node().id).classed(`er ${f}`,!0).attr("x",m).attr("y",a).attr("width",h+2*i+n).attr("height",e.height+2*r);let y=parseFloat(g.attr("x"))+parseFloat(g.attr("width"));if(l){e.kn.attr("transform","translate("+(y+i)+","+s+")");const o=t.insert("rect","#"+e.kn.node().id).classed(`er ${f}`,!0).attr("x",y).attr("y",a).attr("width",d+2*i+n).attr("height",e.height+2*r);y=parseFloat(o.attr("x"))+parseFloat(o.attr("width"))}c&&(e.cn.attr("transform","translate("+(y+i)+","+s+")"),t.insert("rect","#"+e.cn.node().id).classed(`er ${f}`,"true").attr("x",y).attr("y",a).attr("width",p+2*i+n).attr("height",e.height+2*r)),a+=e.height+2*r,f="attributeBoxOdd"===f?"attributeBoxEven":"attributeBoxOdd"}))}else b.height=Math.max(go.minEntityHeight,f),e.attr("transform","translate("+b.width/2+","+b.height/2+")");return b})(s,l,e[i].attributes),h=s.insert("rect","#"+o).classed("er entityBox",!0).attr("x",0).attr("y",0).attr("width",c).attr("height",u).node().getBBox();n.setNode(a,{width:h.width,height:h.height,shape:"rect",id:a})})),r},xo=function(t){return(t.entityA+t.roleA+t.entityB).replace(/\s/g,"")};let vo=0;const _o="28e9f9db-3c8d-5aa5-9faf-44286ae5937c";function ko(t=""){return t.length>0?`${t}-`:""}const To={setConf:function(t){const e=Object.keys(t);for(const n of e)go[n]=t[n]},draw:function(t,e,n,r){go=dr().er,It.info("Drawing ER diagram");const i=dr().securityLevel;let a;"sandbox"===i&&(a=(0,o.Ys)("#i"+e));const s=("sandbox"===i?(0,o.Ys)(a.nodes()[0].contentDocument.body):(0,o.Ys)("body")).select(`[id='${e}']`);let l;fo(s,go),l=new ut.k({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:go.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel((function(){return{}}));const c=bo(s,r.db.getEntities(),l),u=function(t,e){return t.forEach((function(t){e.setEdge(yo.get(t.entityA),yo.get(t.entityB),{relationship:t},xo(t))})),t}(r.db.getRelationships(),l);var h,d;(0,ct.bK)(l),h=s,(d=l).nodes().forEach((function(t){void 0!==t&&void 0!==d.node(t)&&h.select("#"+t).attr("transform","translate("+(d.node(t).x-d.node(t).width/2)+","+(d.node(t).y-d.node(t).height/2)+" )")})),u.forEach((function(t){!function(t,e,n,r,i){vo++;const a=n.edge(yo.get(e.entityA),yo.get(e.entityB),xo(e)),s=(0,o.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(o.$0Z),l=t.insert("path","#"+r).classed("er relationshipLine",!0).attr("d",s(a.points)).style("stroke",go.stroke).style("fill","none");e.relSpec.relType===i.db.Identification.NON_IDENTIFYING&&l.attr("stroke-dasharray","8,8");let c="";switch(go.arrowMarkerAbsolute&&(c=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,c=c.replace(/\(/g,"\\("),c=c.replace(/\)/g,"\\)")),e.relSpec.cardA){case i.db.Cardinality.ZERO_OR_ONE:l.attr("marker-end","url("+c+"#"+po.ZERO_OR_ONE_END+")");break;case i.db.Cardinality.ZERO_OR_MORE:l.attr("marker-end","url("+c+"#"+po.ZERO_OR_MORE_END+")");break;case i.db.Cardinality.ONE_OR_MORE:l.attr("marker-end","url("+c+"#"+po.ONE_OR_MORE_END+")");break;case i.db.Cardinality.ONLY_ONE:l.attr("marker-end","url("+c+"#"+po.ONLY_ONE_END+")")}switch(e.relSpec.cardB){case i.db.Cardinality.ZERO_OR_ONE:l.attr("marker-start","url("+c+"#"+po.ZERO_OR_ONE_START+")");break;case i.db.Cardinality.ZERO_OR_MORE:l.attr("marker-start","url("+c+"#"+po.ZERO_OR_MORE_START+")");break;case i.db.Cardinality.ONE_OR_MORE:l.attr("marker-start","url("+c+"#"+po.ONE_OR_MORE_START+")");break;case i.db.Cardinality.ONLY_ONE:l.attr("marker-start","url("+c+"#"+po.ONLY_ONE_START+")")}const u=l.node().getTotalLength(),h=l.node().getPointAtLength(.5*u),d="rel"+vo,p=t.append("text").classed("er relationshipLabel",!0).attr("id",d).attr("x",h.x).attr("y",h.y).style("text-anchor","middle").style("dominant-baseline","middle").style("font-family",dr().fontFamily).style("font-size",go.fontSize+"px").text(e.roleA).node().getBBox();t.insert("rect","#"+d).classed("er relationshipLabelBox",!0).attr("x",h.x-p.width/2).attr("y",h.y-p.height/2).attr("width",p.width).attr("height",p.height)}(s,t,l,c,r)}));const p=go.diagramPadding;nr.insertTitle(s,"entityTitleText",go.titleTopMargin,r.db.getDiagramTitle());const f=s.node().getBBox(),m=f.width+2*p,g=f.height+2*p;xr(s,g,m,go.useMaxWidth),s.attr("viewBox",`${f.x-p} ${f.y-p} ${m} ${g}`)}};var wo=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,9],r=[1,7],i=[1,6],a=[1,8],s=[1,20,21,22,23,38,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],o=[2,10],l=[1,20],c=[1,21],u=[1,22],h=[1,23],d=[1,30],p=[1,32],f=[1,33],m=[1,34],g=[1,62],y=[1,48],b=[1,52],x=[1,36],v=[1,37],_=[1,38],k=[1,39],T=[1,40],w=[1,56],S=[1,63],E=[1,51],C=[1,53],D=[1,55],A=[1,59],O=[1,60],I=[1,41],L=[1,42],N=[1,43],M=[1,44],F=[1,61],B=[1,50],R=[1,54],$=[1,57],Z=[1,58],j=[1,49],P=[1,66],z=[1,71],Y=[1,20,21,22,23,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],U=[1,75],W=[1,74],H=[1,76],q=[20,21,23,81,82],V=[1,99],G=[1,104],X=[1,107],K=[1,108],Q=[1,101],J=[1,106],tt=[1,109],et=[1,102],nt=[1,114],rt=[1,113],it=[1,103],at=[1,105],st=[1,110],ot=[1,111],lt=[1,112],ct=[1,115],ut=[20,21,22,23,81,82],ht=[20,21,22,23,53,81,82],dt=[20,21,22,23,40,52,53,55,57,59,61,63,65,66,67,69,71,73,74,76,81,82,91,95,105,106,109,111,112,122,123,124,125,126,127],pt=[20,21,23],ft=[20,21,23,52,66,67,81,82,91,95,105,106,109,111,112,122,123,124,125,126,127],mt=[1,12,20,21,22,23,24,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],gt=[52,66,67,91,95,105,106,109,111,112,122,123,124,125,126,127],yt=[1,149],bt=[1,157],xt=[1,158],vt=[1,159],_t=[1,160],kt=[1,144],Tt=[1,145],wt=[1,141],St=[1,152],Et=[1,153],Ct=[1,154],Dt=[1,155],At=[1,156],Ot=[1,161],It=[1,162],Lt=[1,147],Nt=[1,150],Mt=[1,146],Ft=[1,143],Bt=[20,21,22,23,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],Rt=[1,165],$t=[20,21,22,23,26,52,66,67,91,105,106,109,111,112,122,123,124,125,126,127],Zt=[20,21,22,23,24,26,38,40,41,42,52,56,58,60,62,64,66,67,68,70,72,73,75,77,81,82,86,87,88,89,90,91,92,95,105,106,109,111,112,113,114,122,123,124,125,126,127],jt=[12,21,22,24],Pt=[22,106],zt=[1,250],Yt=[1,245],Ut=[1,246],Wt=[1,254],Ht=[1,251],qt=[1,248],Vt=[1,247],Gt=[1,249],Xt=[1,252],Kt=[1,253],Qt=[1,255],Jt=[1,273],te=[20,21,23,106],ee=[20,21,22,23,66,67,86,102,105,106,109,110,111,112,113],ne={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,openDirective:6,typeDirective:7,closeDirective:8,separator:9,":":10,argDirective:11,open_directive:12,type_directive:13,arg_directive:14,close_directive:15,graphConfig:16,document:17,line:18,statement:19,SEMI:20,NEWLINE:21,SPACE:22,EOF:23,GRAPH:24,NODIR:25,DIR:26,FirstStmtSeperator:27,ending:28,endToken:29,spaceList:30,spaceListNewline:31,verticeStatement:32,styleStatement:33,linkStyleStatement:34,classDefStatement:35,classStatement:36,clickStatement:37,subgraph:38,text:39,SQS:40,SQE:41,end:42,direction:43,acc_title:44,acc_title_value:45,acc_descr:46,acc_descr_value:47,acc_descr_multiline_value:48,link:49,node:50,vertex:51,AMP:52,STYLE_SEPARATOR:53,idString:54,DOUBLECIRCLESTART:55,DOUBLECIRCLEEND:56,PS:57,PE:58,"(-":59,"-)":60,STADIUMSTART:61,STADIUMEND:62,SUBROUTINESTART:63,SUBROUTINEEND:64,VERTEX_WITH_PROPS_START:65,ALPHA:66,COLON:67,PIPE:68,CYLINDERSTART:69,CYLINDEREND:70,DIAMOND_START:71,DIAMOND_STOP:72,TAGEND:73,TRAPSTART:74,TRAPEND:75,INVTRAPSTART:76,INVTRAPEND:77,linkStatement:78,arrowText:79,TESTSTR:80,START_LINK:81,LINK:82,textToken:83,STR:84,keywords:85,STYLE:86,LINKSTYLE:87,CLASSDEF:88,CLASS:89,CLICK:90,DOWN:91,UP:92,textNoTags:93,textNoTagsToken:94,DEFAULT:95,stylesOpt:96,alphaNum:97,CALLBACKNAME:98,CALLBACKARGS:99,HREF:100,LINK_TARGET:101,HEX:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,MINUS:109,UNIT:110,BRKT:111,DOT:112,PCT:113,TAGSTART:114,alphaNumToken:115,idStringToken:116,alphaNumStatement:117,direction_tb:118,direction_bt:119,direction_rl:120,direction_lr:121,PUNCTUATION:122,UNICODE_TEXT:123,PLUS:124,EQUALS:125,MULT:126,UNDERSCORE:127,graphCodeTokens:128,ARROW_CROSS:129,ARROW_POINT:130,ARROW_CIRCLE:131,ARROW_OPEN:132,QUOTE:133,$accept:0,$end:1},terminals_:{2:"error",10:":",12:"open_directive",13:"type_directive",14:"arg_directive",15:"close_directive",20:"SEMI",21:"NEWLINE",22:"SPACE",23:"EOF",24:"GRAPH",25:"NODIR",26:"DIR",38:"subgraph",40:"SQS",41:"SQE",42:"end",44:"acc_title",45:"acc_title_value",46:"acc_descr",47:"acc_descr_value",48:"acc_descr_multiline_value",52:"AMP",53:"STYLE_SEPARATOR",55:"DOUBLECIRCLESTART",56:"DOUBLECIRCLEEND",57:"PS",58:"PE",59:"(-",60:"-)",61:"STADIUMSTART",62:"STADIUMEND",63:"SUBROUTINESTART",64:"SUBROUTINEEND",65:"VERTEX_WITH_PROPS_START",66:"ALPHA",67:"COLON",68:"PIPE",69:"CYLINDERSTART",70:"CYLINDEREND",71:"DIAMOND_START",72:"DIAMOND_STOP",73:"TAGEND",74:"TRAPSTART",75:"TRAPEND",76:"INVTRAPSTART",77:"INVTRAPEND",80:"TESTSTR",81:"START_LINK",82:"LINK",84:"STR",86:"STYLE",87:"LINKSTYLE",88:"CLASSDEF",89:"CLASS",90:"CLICK",91:"DOWN",92:"UP",95:"DEFAULT",98:"CALLBACKNAME",99:"CALLBACKARGS",100:"HREF",101:"LINK_TARGET",102:"HEX",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"MINUS",110:"UNIT",111:"BRKT",112:"DOT",113:"PCT",114:"TAGSTART",118:"direction_tb",119:"direction_bt",120:"direction_rl",121:"direction_lr",122:"PUNCTUATION",123:"UNICODE_TEXT",124:"PLUS",125:"EQUALS",126:"MULT",127:"UNDERSCORE",129:"ARROW_CROSS",130:"ARROW_POINT",131:"ARROW_CIRCLE",132:"ARROW_OPEN",133:"QUOTE"},productions_:[0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[19,2],[19,2],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[50,1],[50,5],[50,3],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,8],[51,4],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,4],[51,4],[51,1],[49,2],[49,3],[49,3],[49,1],[49,3],[78,1],[79,3],[39,1],[39,2],[39,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[93,1],[93,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[103,1],[103,3],[96,1],[96,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[94,1],[94,1],[94,1],[94,1],[54,1],[54,2],[97,1],[97,2],[117,1],[117,1],[117,1],[117,1],[43,1],[43,1],[43,1],[43,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 5:r.parseDirective("%%{","open_directive");break;case 6:r.parseDirective(a[o],"type_directive");break;case 7:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 8:r.parseDirective("}%%","close_directive","flowchart");break;case 10:case 36:case 37:case 38:case 39:case 40:this.$=[];break;case 11:(!Array.isArray(a[o])||a[o].length>0)&&a[o-1].push(a[o]),this.$=a[o-1];break;case 12:case 82:case 84:case 96:case 152:case 154:case 155:case 78:case 150:this.$=a[o];break;case 19:r.setDirection("TB"),this.$="TB";break;case 20:r.setDirection(a[o-1]),this.$=a[o-1];break;case 35:this.$=a[o-1].nodes;break;case 41:this.$=r.addSubGraph(a[o-6],a[o-1],a[o-4]);break;case 42:this.$=r.addSubGraph(a[o-3],a[o-1],a[o-3]);break;case 43:this.$=r.addSubGraph(void 0,a[o-1],void 0);break;case 45:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 46:case 47:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 51:r.addLink(a[o-2].stmt,a[o],a[o-1]),this.$={stmt:a[o],nodes:a[o].concat(a[o-2].nodes)};break;case 52:r.addLink(a[o-3].stmt,a[o-1],a[o-2]),this.$={stmt:a[o-1],nodes:a[o-1].concat(a[o-3].nodes)};break;case 53:this.$={stmt:a[o-1],nodes:a[o-1]};break;case 54:this.$={stmt:a[o],nodes:a[o]};break;case 55:case 123:case 125:this.$=[a[o]];break;case 56:this.$=a[o-4].concat(a[o]);break;case 57:this.$=[a[o-2]],r.setClass(a[o-2],a[o]);break;case 58:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"square");break;case 59:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"doublecircle");break;case 60:this.$=a[o-5],r.addVertex(a[o-5],a[o-2],"circle");break;case 61:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"ellipse");break;case 62:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"stadium");break;case 63:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"subroutine");break;case 64:this.$=a[o-7],r.addVertex(a[o-7],a[o-1],"rect",void 0,void 0,void 0,Object.fromEntries([[a[o-5],a[o-3]]]));break;case 65:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"cylinder");break;case 66:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"round");break;case 67:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"diamond");break;case 68:this.$=a[o-5],r.addVertex(a[o-5],a[o-2],"hexagon");break;case 69:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"odd");break;case 70:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"trapezoid");break;case 71:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"inv_trapezoid");break;case 72:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"lean_right");break;case 73:this.$=a[o-3],r.addVertex(a[o-3],a[o-1],"lean_left");break;case 74:this.$=a[o],r.addVertex(a[o]);break;case 75:a[o-1].text=a[o],this.$=a[o-1];break;case 76:case 77:a[o-2].text=a[o-1],this.$=a[o-2];break;case 79:var l=r.destructLink(a[o],a[o-2]);this.$={type:l.type,stroke:l.stroke,length:l.length,text:a[o-1]};break;case 80:l=r.destructLink(a[o]);this.$={type:l.type,stroke:l.stroke,length:l.length};break;case 81:this.$=a[o-1];break;case 83:case 97:case 153:case 151:this.$=a[o-1]+""+a[o];break;case 98:case 99:this.$=a[o-4],r.addClass(a[o-2],a[o]);break;case 100:this.$=a[o-4],r.setClass(a[o-2],a[o]);break;case 101:case 109:this.$=a[o-1],r.setClickEvent(a[o-1],a[o]);break;case 102:case 110:this.$=a[o-3],r.setClickEvent(a[o-3],a[o-2]),r.setTooltip(a[o-3],a[o]);break;case 103:this.$=a[o-2],r.setClickEvent(a[o-2],a[o-1],a[o]);break;case 104:this.$=a[o-4],r.setClickEvent(a[o-4],a[o-3],a[o-2]),r.setTooltip(a[o-4],a[o]);break;case 105:case 111:this.$=a[o-1],r.setLink(a[o-1],a[o]);break;case 106:case 112:this.$=a[o-3],r.setLink(a[o-3],a[o-2]),r.setTooltip(a[o-3],a[o]);break;case 107:case 113:this.$=a[o-3],r.setLink(a[o-3],a[o-2],a[o]);break;case 108:case 114:this.$=a[o-5],r.setLink(a[o-5],a[o-4],a[o]),r.setTooltip(a[o-5],a[o-2]);break;case 115:this.$=a[o-4],r.addVertex(a[o-2],void 0,void 0,a[o]);break;case 116:case 118:this.$=a[o-4],r.updateLink(a[o-2],a[o]);break;case 117:this.$=a[o-4],r.updateLink([a[o-2]],a[o]);break;case 119:this.$=a[o-8],r.updateLinkInterpolate([a[o-6]],a[o-2]),r.updateLink([a[o-6]],a[o]);break;case 120:this.$=a[o-8],r.updateLinkInterpolate(a[o-6],a[o-2]),r.updateLink(a[o-6],a[o]);break;case 121:this.$=a[o-6],r.updateLinkInterpolate([a[o-4]],a[o]);break;case 122:this.$=a[o-6],r.updateLinkInterpolate(a[o-4],a[o]);break;case 124:case 126:a[o-2].push(a[o]),this.$=a[o-2];break;case 128:this.$=a[o-1]+a[o];break;case 156:this.$="v";break;case 157:this.$="-";break;case 158:this.$={stmt:"dir",value:"TB"};break;case 159:this.$={stmt:"dir",value:"BT"};break;case 160:this.$={stmt:"dir",value:"RL"};break;case 161:this.$={stmt:"dir",value:"LR"}}},table:[{3:1,4:2,5:3,6:5,12:n,16:4,21:r,22:i,24:a},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:n,16:4,21:r,22:i,24:a},e(s,o,{17:11}),{7:12,13:[1,13]},{16:14,21:r,22:i,24:a},{16:15,21:r,22:i,24:a},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:l,21:c,22:u,23:h,32:24,33:25,34:26,35:27,36:28,37:29,38:d,43:31,44:p,46:f,48:m,50:35,51:45,52:g,54:46,66:y,67:b,86:x,87:v,88:_,89:k,90:T,91:w,95:S,105:E,106:C,109:D,111:A,112:O,116:47,118:I,119:L,120:N,121:M,122:F,123:B,124:R,125:$,126:Z,127:j},{8:64,10:[1,65],15:P},e([10,15],[2,6]),e(s,[2,17]),e(s,[2,18]),e(s,[2,19]),{20:[1,68],21:[1,69],22:z,27:67,30:70},e(Y,[2,11]),e(Y,[2,12]),e(Y,[2,13]),e(Y,[2,14]),e(Y,[2,15]),e(Y,[2,16]),{9:72,20:U,21:W,23:H,49:73,78:77,81:[1,78],82:[1,79]},{9:80,20:U,21:W,23:H},{9:81,20:U,21:W,23:H},{9:82,20:U,21:W,23:H},{9:83,20:U,21:W,23:H},{9:84,20:U,21:W,23:H},{9:86,20:U,21:W,22:[1,85],23:H},e(Y,[2,44]),{45:[1,87]},{47:[1,88]},e(Y,[2,47]),e(q,[2,54],{30:89,22:z}),{22:[1,90]},{22:[1,91]},{22:[1,92]},{22:[1,93]},{26:V,52:G,66:X,67:K,84:[1,97],91:Q,97:96,98:[1,94],100:[1,95],105:J,106:tt,109:et,111:nt,112:rt,115:100,117:98,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(Y,[2,158]),e(Y,[2,159]),e(Y,[2,160]),e(Y,[2,161]),e(ut,[2,55],{53:[1,116]}),e(ht,[2,74],{116:129,40:[1,117],52:g,55:[1,118],57:[1,119],59:[1,120],61:[1,121],63:[1,122],65:[1,123],66:y,67:b,69:[1,124],71:[1,125],73:[1,126],74:[1,127],76:[1,128],91:w,95:S,105:E,106:C,109:D,111:A,112:O,122:F,123:B,124:R,125:$,126:Z,127:j}),e(dt,[2,150]),e(dt,[2,175]),e(dt,[2,176]),e(dt,[2,177]),e(dt,[2,178]),e(dt,[2,179]),e(dt,[2,180]),e(dt,[2,181]),e(dt,[2,182]),e(dt,[2,183]),e(dt,[2,184]),e(dt,[2,185]),e(dt,[2,186]),e(dt,[2,187]),e(dt,[2,188]),e(dt,[2,189]),e(dt,[2,190]),{9:130,20:U,21:W,23:H},{11:131,14:[1,132]},e(pt,[2,8]),e(s,[2,20]),e(s,[2,26]),e(s,[2,27]),{21:[1,133]},e(ft,[2,34],{30:134,22:z}),e(Y,[2,35]),{50:135,51:45,52:g,54:46,66:y,67:b,91:w,95:S,105:E,106:C,109:D,111:A,112:O,116:47,122:F,123:B,124:R,125:$,126:Z,127:j},e(mt,[2,48]),e(mt,[2,49]),e(mt,[2,50]),e(gt,[2,78],{79:136,68:[1,138],80:[1,137]}),{22:yt,24:bt,26:xt,38:vt,39:139,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e([52,66,67,68,80,91,95,105,106,109,111,112,122,123,124,125,126,127],[2,80]),e(Y,[2,36]),e(Y,[2,37]),e(Y,[2,38]),e(Y,[2,39]),e(Y,[2,40]),{22:yt,24:bt,26:xt,38:vt,39:163,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(Bt,o,{17:164}),e(Y,[2,45]),e(Y,[2,46]),e(q,[2,53],{52:Rt}),{26:V,52:G,66:X,67:K,91:Q,97:166,102:[1,167],105:J,106:tt,109:et,111:nt,112:rt,115:100,117:98,122:it,123:at,124:st,125:ot,126:lt,127:ct},{95:[1,168],103:169,105:[1,170]},{26:V,52:G,66:X,67:K,91:Q,95:[1,171],97:172,105:J,106:tt,109:et,111:nt,112:rt,115:100,117:98,122:it,123:at,124:st,125:ot,126:lt,127:ct},{26:V,52:G,66:X,67:K,91:Q,97:173,105:J,106:tt,109:et,111:nt,112:rt,115:100,117:98,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(pt,[2,101],{22:[1,174],99:[1,175]}),e(pt,[2,105],{22:[1,176]}),e(pt,[2,109],{115:100,117:178,22:[1,177],26:V,52:G,66:X,67:K,91:Q,105:J,106:tt,109:et,111:nt,112:rt,122:it,123:at,124:st,125:ot,126:lt,127:ct}),e(pt,[2,111],{22:[1,179]}),e($t,[2,152]),e($t,[2,154]),e($t,[2,155]),e($t,[2,156]),e($t,[2,157]),e(Zt,[2,162]),e(Zt,[2,163]),e(Zt,[2,164]),e(Zt,[2,165]),e(Zt,[2,166]),e(Zt,[2,167]),e(Zt,[2,168]),e(Zt,[2,169]),e(Zt,[2,170]),e(Zt,[2,171]),e(Zt,[2,172]),e(Zt,[2,173]),e(Zt,[2,174]),{52:g,54:180,66:y,67:b,91:w,95:S,105:E,106:C,109:D,111:A,112:O,116:47,122:F,123:B,124:R,125:$,126:Z,127:j},{22:yt,24:bt,26:xt,38:vt,39:181,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:182,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:184,42:_t,52:G,57:[1,183],66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:185,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:186,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:187,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{66:[1,188]},{22:yt,24:bt,26:xt,38:vt,39:189,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:190,42:_t,52:G,66:X,67:K,71:[1,191],73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:192,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:193,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:194,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(dt,[2,151]),e(jt,[2,3]),{8:195,15:P},{15:[2,7]},e(s,[2,28]),e(ft,[2,33]),e(q,[2,51],{30:196,22:z}),e(gt,[2,75],{22:[1,197]}),{22:[1,198]},{22:yt,24:bt,26:xt,38:vt,39:199,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,66:X,67:K,73:kt,81:Tt,82:[1,200],83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(Zt,[2,82]),e(Zt,[2,84]),e(Zt,[2,140]),e(Zt,[2,141]),e(Zt,[2,142]),e(Zt,[2,143]),e(Zt,[2,144]),e(Zt,[2,145]),e(Zt,[2,146]),e(Zt,[2,147]),e(Zt,[2,148]),e(Zt,[2,149]),e(Zt,[2,85]),e(Zt,[2,86]),e(Zt,[2,87]),e(Zt,[2,88]),e(Zt,[2,89]),e(Zt,[2,90]),e(Zt,[2,91]),e(Zt,[2,92]),e(Zt,[2,93]),e(Zt,[2,94]),e(Zt,[2,95]),{9:203,20:U,21:W,22:yt,23:H,24:bt,26:xt,38:vt,40:[1,202],42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{18:18,19:19,20:l,21:c,22:u,23:h,32:24,33:25,34:26,35:27,36:28,37:29,38:d,42:[1,204],43:31,44:p,46:f,48:m,50:35,51:45,52:g,54:46,66:y,67:b,86:x,87:v,88:_,89:k,90:T,91:w,95:S,105:E,106:C,109:D,111:A,112:O,116:47,118:I,119:L,120:N,121:M,122:F,123:B,124:R,125:$,126:Z,127:j},{22:z,30:205},{22:[1,206],26:V,52:G,66:X,67:K,91:Q,105:J,106:tt,109:et,111:nt,112:rt,115:100,117:178,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:[1,207]},{22:[1,208]},{22:[1,209],106:[1,210]},e(Pt,[2,123]),{22:[1,211]},{22:[1,212],26:V,52:G,66:X,67:K,91:Q,105:J,106:tt,109:et,111:nt,112:rt,115:100,117:178,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:[1,213],26:V,52:G,66:X,67:K,91:Q,105:J,106:tt,109:et,111:nt,112:rt,115:100,117:178,122:it,123:at,124:st,125:ot,126:lt,127:ct},{84:[1,214]},e(pt,[2,103],{22:[1,215]}),{84:[1,216],101:[1,217]},{84:[1,218]},e($t,[2,153]),{84:[1,219],101:[1,220]},e(ut,[2,57],{116:129,52:g,66:y,67:b,91:w,95:S,105:E,106:C,109:D,111:A,112:O,122:F,123:B,124:R,125:$,126:Z,127:j}),{22:yt,24:bt,26:xt,38:vt,41:[1,221],42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,56:[1,222],66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:223,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,58:[1,224],66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,60:[1,225],66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,62:[1,226],66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,64:[1,227],66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{67:[1,228]},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,66:X,67:K,70:[1,229],73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,66:X,67:K,72:[1,230],73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,39:231,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,41:[1,232],42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,66:X,67:K,73:kt,75:[1,233],77:[1,234],81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,66:X,67:K,73:kt,75:[1,236],77:[1,235],81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{9:237,20:U,21:W,23:H},e(q,[2,52],{52:Rt}),e(gt,[2,77]),e(gt,[2,76]),{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,66:X,67:K,68:[1,238],73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(gt,[2,79]),e(Zt,[2,83]),{22:yt,24:bt,26:xt,38:vt,39:239,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(Bt,o,{17:240}),e(Y,[2,43]),{51:241,52:g,54:46,66:y,67:b,91:w,95:S,105:E,106:C,109:D,111:A,112:O,116:47,122:F,123:B,124:R,125:$,126:Z,127:j},{22:zt,66:Yt,67:Ut,86:Wt,96:242,102:Ht,105:qt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},{22:zt,66:Yt,67:Ut,86:Wt,96:256,102:Ht,105:qt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},{22:zt,66:Yt,67:Ut,86:Wt,96:257,102:Ht,104:[1,258],105:qt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},{22:zt,66:Yt,67:Ut,86:Wt,96:259,102:Ht,104:[1,260],105:qt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},{105:[1,261]},{22:zt,66:Yt,67:Ut,86:Wt,96:262,102:Ht,105:qt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},{22:zt,66:Yt,67:Ut,86:Wt,96:263,102:Ht,105:qt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},{26:V,52:G,66:X,67:K,91:Q,97:264,105:J,106:tt,109:et,111:nt,112:rt,115:100,117:98,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(pt,[2,102]),{84:[1,265]},e(pt,[2,106],{22:[1,266]}),e(pt,[2,107]),e(pt,[2,110]),e(pt,[2,112],{22:[1,267]}),e(pt,[2,113]),e(ht,[2,58]),e(ht,[2,59]),{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,58:[1,268],66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(ht,[2,66]),e(ht,[2,61]),e(ht,[2,62]),e(ht,[2,63]),{66:[1,269]},e(ht,[2,65]),e(ht,[2,67]),{22:yt,24:bt,26:xt,38:vt,42:_t,52:G,66:X,67:K,72:[1,270],73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(ht,[2,69]),e(ht,[2,70]),e(ht,[2,72]),e(ht,[2,71]),e(ht,[2,73]),e(jt,[2,4]),e([22,52,66,67,91,95,105,106,109,111,112,122,123,124,125,126,127],[2,81]),{22:yt,24:bt,26:xt,38:vt,41:[1,271],42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{18:18,19:19,20:l,21:c,22:u,23:h,32:24,33:25,34:26,35:27,36:28,37:29,38:d,42:[1,272],43:31,44:p,46:f,48:m,50:35,51:45,52:g,54:46,66:y,67:b,86:x,87:v,88:_,89:k,90:T,91:w,95:S,105:E,106:C,109:D,111:A,112:O,116:47,118:I,119:L,120:N,121:M,122:F,123:B,124:R,125:$,126:Z,127:j},e(ut,[2,56]),e(pt,[2,115],{106:Jt}),e(te,[2,125],{108:274,22:zt,66:Yt,67:Ut,86:Wt,102:Ht,105:qt,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt}),e(ee,[2,127]),e(ee,[2,129]),e(ee,[2,130]),e(ee,[2,131]),e(ee,[2,132]),e(ee,[2,133]),e(ee,[2,134]),e(ee,[2,135]),e(ee,[2,136]),e(ee,[2,137]),e(ee,[2,138]),e(ee,[2,139]),e(pt,[2,116],{106:Jt}),e(pt,[2,117],{106:Jt}),{22:[1,275]},e(pt,[2,118],{106:Jt}),{22:[1,276]},e(Pt,[2,124]),e(pt,[2,98],{106:Jt}),e(pt,[2,99],{106:Jt}),e(pt,[2,100],{115:100,117:178,26:V,52:G,66:X,67:K,91:Q,105:J,106:tt,109:et,111:nt,112:rt,122:it,123:at,124:st,125:ot,126:lt,127:ct}),e(pt,[2,104]),{101:[1,277]},{101:[1,278]},{58:[1,279]},{68:[1,280]},{72:[1,281]},{9:282,20:U,21:W,23:H},e(Y,[2,42]),{22:zt,66:Yt,67:Ut,86:Wt,102:Ht,105:qt,107:283,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},e(ee,[2,128]),{26:V,52:G,66:X,67:K,91:Q,97:284,105:J,106:tt,109:et,111:nt,112:rt,115:100,117:98,122:it,123:at,124:st,125:ot,126:lt,127:ct},{26:V,52:G,66:X,67:K,91:Q,97:285,105:J,106:tt,109:et,111:nt,112:rt,115:100,117:98,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(pt,[2,108]),e(pt,[2,114]),e(ht,[2,60]),{22:yt,24:bt,26:xt,38:vt,39:286,42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:140,84:wt,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},e(ht,[2,68]),e(Bt,o,{17:287}),e(te,[2,126],{108:274,22:zt,66:Yt,67:Ut,86:Wt,102:Ht,105:qt,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt}),e(pt,[2,121],{115:100,117:178,22:[1,288],26:V,52:G,66:X,67:K,91:Q,105:J,106:tt,109:et,111:nt,112:rt,122:it,123:at,124:st,125:ot,126:lt,127:ct}),e(pt,[2,122],{115:100,117:178,22:[1,289],26:V,52:G,66:X,67:K,91:Q,105:J,106:tt,109:et,111:nt,112:rt,122:it,123:at,124:st,125:ot,126:lt,127:ct}),{22:yt,24:bt,26:xt,38:vt,41:[1,290],42:_t,52:G,66:X,67:K,73:kt,81:Tt,83:201,85:151,86:St,87:Et,88:Ct,89:Dt,90:At,91:Ot,92:It,94:142,95:Lt,105:J,106:tt,109:Nt,111:nt,112:rt,113:Mt,114:Ft,115:148,122:it,123:at,124:st,125:ot,126:lt,127:ct},{18:18,19:19,20:l,21:c,22:u,23:h,32:24,33:25,34:26,35:27,36:28,37:29,38:d,42:[1,291],43:31,44:p,46:f,48:m,50:35,51:45,52:g,54:46,66:y,67:b,86:x,87:v,88:_,89:k,90:T,91:w,95:S,105:E,106:C,109:D,111:A,112:O,116:47,118:I,119:L,120:N,121:M,122:F,123:B,124:R,125:$,126:Z,127:j},{22:zt,66:Yt,67:Ut,86:Wt,96:292,102:Ht,105:qt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},{22:zt,66:Yt,67:Ut,86:Wt,96:293,102:Ht,105:qt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Kt,113:Qt},e(ht,[2,64]),e(Y,[2,41]),e(pt,[2,119],{106:Jt}),e(pt,[2,120],{106:Jt})],defaultActions:{2:[2,1],9:[2,5],10:[2,2],132:[2,7]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},re=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),12;case 1:return this.begin("type_directive"),13;case 2:return this.popState(),this.begin("arg_directive"),10;case 3:return this.popState(),this.popState(),15;case 4:return 14;case 5:case 6:break;case 7:return this.begin("acc_title"),44;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),46;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:case 15:case 24:case 27:case 30:case 33:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:this.begin("string");break;case 16:return"STR";case 17:return 86;case 18:return 95;case 19:return 87;case 20:return 104;case 21:return 88;case 22:return 89;case 23:this.begin("href");break;case 25:return 100;case 26:this.begin("callbackname");break;case 28:this.popState(),this.begin("callbackargs");break;case 29:return 98;case 31:return 99;case 32:this.begin("click");break;case 34:return 90;case 35:case 36:case 37:return t.lex.firstGraph()&&this.begin("dir"),24;case 38:return 38;case 39:return 42;case 40:case 41:case 42:case 43:return 101;case 44:return this.popState(),25;case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:return this.popState(),26;case 55:return 118;case 56:return 119;case 57:return 120;case 58:return 121;case 59:return 105;case 60:return 111;case 61:return 53;case 62:return 67;case 63:return 52;case 64:return 20;case 65:return 106;case 66:return 126;case 67:case 68:case 69:return 82;case 70:case 71:case 72:return 81;case 73:return 59;case 74:return 60;case 75:return 61;case 76:return 62;case 77:return 63;case 78:return 64;case 79:return 65;case 80:return 69;case 81:return 70;case 82:return 55;case 83:return 56;case 84:return 109;case 85:return 112;case 86:return 127;case 87:return 124;case 88:return 113;case 89:case 90:return 125;case 91:return 114;case 92:return 73;case 93:return 92;case 94:return"SEP";case 95:return 91;case 96:return 66;case 97:return 75;case 98:return 74;case 99:return 77;case 100:return 76;case 101:return 122;case 102:return 123;case 103:return 68;case 104:return 57;case 105:return 58;case 106:return 40;case 107:return 41;case 108:return 71;case 109:return 72;case 110:return 133;case 111:return 21;case 112:return 22;case 113:return 23}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)[^\n]*)/,/^(?:[^\}]%%[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\])/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[30,31],inclusive:!1},callbackname:{rules:[27,28,29],inclusive:!1},href:{rules:[24,25],inclusive:!1},click:{rules:[33,34],inclusive:!1},vertex:{rules:[],inclusive:!1},dir:{rules:[44,45,46,47,48,49,50,51,52,53,54],inclusive:!1},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},string:{rules:[15,16],inclusive:!1},INITIAL:{rules:[0,5,6,7,9,11,14,17,18,19,20,21,22,23,26,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113],inclusive:!0}}},t);function ie(){this.yy={}}return ne.lexer=re,ie.prototype=ne,ne.Parser=ie,new ie}();wo.parser=wo;const So=wo,Eo=(t,e)=>{var n,r;return"dagre-wrapper"!==(null==(n=null==e?void 0:e.flowchart)?void 0:n.defaultRenderer)&&("elk"!==(null==(r=null==e?void 0:e.flowchart)?void 0:r.defaultRenderer)&&null!==t.match(/^\s*graph/))},Co=(t,e)=>{var n,r;return"dagre-d3"!==(null==(n=null==e?void 0:e.flowchart)?void 0:n.defaultRenderer)&&("elk"!==(null==(r=null==e?void 0:e.flowchart)?void 0:r.defaultRenderer)&&(null!==t.match(/^\s*graph/)||null!==t.match(/^\s*flowchart/)))};let Do,Ao,Oo=0,Io=dr(),Lo={},No=[],Mo={},Fo=[],Bo={},Ro={},$o=0,Zo=!0,jo=[];const Po=t=>zt.sanitizeText(t,Io),zo=function(t,e,n){yp.parseDirective(this,t,e,n)},Yo=function(t){const e=Object.keys(Lo);for(const n of e)if(Lo[n].id===t)return Lo[n].domId;return t},Uo=function(t,e,n,r,i,a,s={}){let o,l=t;void 0!==l&&0!==l.trim().length&&(void 0===Lo[l]&&(Lo[l]={id:l,domId:"flowchart-"+l+"-"+Oo,styles:[],classes:[]}),Oo++,void 0!==e?(Io=dr(),o=Po(e.trim()),'"'===o[0]&&'"'===o[o.length-1]&&(o=o.substring(1,o.length-1)),Lo[l].text=o):void 0===Lo[l].text&&(Lo[l].text=t),void 0!==n&&(Lo[l].type=n),null!=r&&r.forEach((function(t){Lo[l].styles.push(t)})),null!=i&&i.forEach((function(t){Lo[l].classes.push(t)})),void 0!==a&&(Lo[l].dir=a),void 0===Lo[l].props?Lo[l].props=s:void 0!==s&&Object.assign(Lo[l].props,s))},Wo=function(t,e,n,r){const i={start:t,end:e,type:void 0,text:""};void 0!==(r=n.text)&&(i.text=Po(r.trim()),'"'===i.text[0]&&'"'===i.text[i.text.length-1]&&(i.text=i.text.substring(1,i.text.length-1))),void 0!==n&&(i.type=n.type,i.stroke=n.stroke,i.length=n.length),No.push(i)},Ho=function(t,e,n,r){let i,a;for(i=0;i<t.length;i++)for(a=0;a<e.length;a++)Wo(t[i],e[a],n,r)},qo=function(t,e){t.forEach((function(t){"default"===t?No.defaultInterpolate=e:No[t].interpolate=e}))},Vo=function(t,e){t.forEach((function(t){"default"===t?No.defaultStyle=e:(-1===nr.isSubstringInArray("fill",e)&&e.push("fill:none"),No[t].style=e)}))},Go=function(t,e){void 0===Mo[t]&&(Mo[t]={id:t,styles:[],textStyles:[]}),null!=e&&e.forEach((function(e){if(e.match("color")){const n=e.replace("fill","bgFill").replace("color","fill");Mo[t].textStyles.push(n)}Mo[t].styles.push(e)}))},Xo=function(t){Do=t,Do.match(/.*</)&&(Do="RL"),Do.match(/.*\^/)&&(Do="BT"),Do.match(/.*>/)&&(Do="LR"),Do.match(/.*v/)&&(Do="TB"),"TD"===Do&&(Do="TB")},Ko=function(t,e){t.split(",").forEach((function(t){let n=t;void 0!==Lo[n]&&Lo[n].classes.push(e),void 0!==Bo[n]&&Bo[n].classes.push(e)}))},Qo=function(t,e,n){t.split(",").forEach((function(t){void 0!==Lo[t]&&(Lo[t].link=nr.formatUrl(e,Io),Lo[t].linkTarget=n)})),Ko(t,"clickable")},Jo=function(t){return Ro[t]},tl=function(t,e,n){t.split(",").forEach((function(t){!function(t,e,n){let r=Yo(t);if("loose"!==dr().securityLevel)return;if(void 0===e)return;let i=[];if("string"==typeof n){i=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t<i.length;t++){let e=i[t].trim();'"'===e.charAt(0)&&'"'===e.charAt(e.length-1)&&(e=e.substr(1,e.length-2)),i[t]=e}}0===i.length&&i.push(t),void 0!==Lo[t]&&(Lo[t].haveCallback=!0,jo.push((function(){const t=document.querySelector(`[id="${r}"]`);null!==t&&t.addEventListener("click",(function(){nr.runFunc(e,...i)}),!1)})))}(t,e,n)})),Ko(t,"clickable")},el=function(t){jo.forEach((function(e){e(t)}))},nl=function(){return Do.trim()},rl=function(){return Lo},il=function(){return No},al=function(){return Mo},sl=function(t){let e=(0,o.Ys)(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=(0,o.Ys)("body").append("div").attr("class","mermaidTooltip").style("opacity",0));(0,o.Ys)(t).select("svg").selectAll("g.node").on("mouseover",(function(){const t=(0,o.Ys)(this);if(null===t.attr("title"))return;const n=this.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.text(t.attr("title")).style("left",window.scrollX+n.left+(n.right-n.left)/2+"px").style("top",window.scrollY+n.top-14+document.body.scrollTop+"px"),e.html(e.html().replace(/<br\/>/g,"<br/>")),t.classed("hover",!0)})).on("mouseout",(function(){e.transition().duration(500).style("opacity",0);(0,o.Ys)(this).classed("hover",!1)}))};jo.push(sl);const ol=function(t="gen-1"){Lo={},Mo={},No=[],jo=[sl],Fo=[],Bo={},$o=0,Ro=[],Zo=!0,Ao=t,Zr()},ll=t=>{Ao=t||"gen-2"},cl=function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},ul=function(t,e,n){let r=t.trim(),i=n;t===n&&n.match(/\s/)&&(r=void 0);let a=[];const{nodeList:s,dir:o}=function(t){const e={boolean:{},number:{},string:{}},n=[];let r;return{nodeList:t.filter((function(t){const i=typeof t;return t.stmt&&"dir"===t.stmt?(r=t.value,!1):""!==t.trim()&&(i in e?!e[i].hasOwnProperty(t)&&(e[i][t]=!0):!n.includes(t)&&n.push(t))})),dir:r}}(a.concat.apply(a,e));if(a=s,"gen-1"===Ao)for(let c=0;c<a.length;c++)a[c]=Yo(a[c]);r=r||"subGraph"+$o,i=i||"",i=Po(i),$o+=1;const l={id:r,nodes:a,title:i.trim(),classes:[],dir:o};return It.info("Adding",l.id,l.nodes,l.dir),l.nodes=_l(l,Fo).nodes,Fo.push(l),Bo[r]=l,r},hl=function(t){for(const[e,n]of Fo.entries())if(n.id===t)return e;return-1};let dl=-1;const pl=[],fl=function(t,e){const n=Fo[e].nodes;if(dl+=1,dl>2e3)return;if(pl[dl]=e,Fo[e].id===t)return{result:!0,count:0};let r=0,i=1;for(;r<n.length;){const e=hl(n[r]);if(e>=0){const n=fl(t,e);if(n.result)return{result:!0,count:i+n.count};i+=n.count}r+=1}return{result:!1,count:i}},ml=function(t){return pl[t]},gl=function(){dl=-1,Fo.length>0&&fl("none",Fo.length-1)},yl=function(){return Fo},bl=()=>!!Zo&&(Zo=!1,!0),xl=(t,e)=>{const n=(t=>{const e=t.trim();let n=e.slice(0,-1),r="arrow_open";switch(e.slice(-1)){case"x":r="arrow_cross","x"===e[0]&&(r="double_"+r,n=n.slice(1));break;case">":r="arrow_point","<"===e[0]&&(r="double_"+r,n=n.slice(1));break;case"o":r="arrow_circle","o"===e[0]&&(r="double_"+r,n=n.slice(1))}let i="normal",a=n.length-1;"="===n[0]&&(i="thick");let s=((t,e)=>{const n=e.length;let r=0;for(let i=0;i<n;++i)e[i]===t&&++r;return r})(".",n);return s&&(i="dotted",a=s),{type:r,stroke:i,length:a}})(t);let r;if(e){if(r=(t=>{let e=t.trim(),n="arrow_open";switch(e[0]){case"<":n="arrow_point",e=e.slice(1);break;case"x":n="arrow_cross",e=e.slice(1);break;case"o":n="arrow_circle",e=e.slice(1)}let r="normal";return e.includes("=")&&(r="thick"),e.includes(".")&&(r="dotted"),{type:n,stroke:r}})(e),r.stroke!==n.stroke)return{type:"INVALID",stroke:"INVALID"};if("arrow_open"===r.type)r.type=n.type;else{if(r.type!==n.type)return{type:"INVALID",stroke:"INVALID"};r.type="double_"+r.type}return"double_arrow"===r.type&&(r.type="double_arrow_point"),r.length=n.length,r}return n},vl=(t,e)=>{let n=!1;return t.forEach((t=>{t.nodes.indexOf(e)>=0&&(n=!0)})),n},_l=(t,e)=>{const n=[];return t.nodes.forEach(((r,i)=>{vl(e,r)||n.push(t.nodes[i])})),{nodes:n}},kl={firstGraph:bl},Tl={parseDirective:zo,defaultConfig:()=>ir.flowchart,setAccTitle:jr,getAccTitle:Pr,getAccDescription:Yr,setAccDescription:zr,addVertex:Uo,lookUpDomId:Yo,addLink:Ho,updateLinkInterpolate:qo,updateLink:Vo,addClass:Go,setDirection:Xo,setClass:Ko,setTooltip:function(t,e){t.split(",").forEach((function(t){void 0!==e&&(Ro["gen-1"===Ao?Yo(t):t]=Po(e))}))},getTooltip:Jo,setClickEvent:tl,setLink:Qo,bindFunctions:el,getDirection:nl,getVertices:rl,getEdges:il,getClasses:al,clear:ol,setGen:ll,defaultStyle:cl,addSubGraph:ul,getDepthFirstPos:ml,indexNodes:gl,getSubGraphs:yl,destructLink:xl,lex:kl,exists:vl,makeUniq:_l,setDiagramTitle:Ur,getDiagramTitle:Wr},wl=Object.freeze(Object.defineProperty({__proto__:null,addClass:Go,addLink:Ho,addSingleLink:Wo,addSubGraph:ul,addVertex:Uo,bindFunctions:el,clear:ol,default:Tl,defaultStyle:cl,destructLink:xl,firstGraph:bl,getClasses:al,getDepthFirstPos:ml,getDirection:nl,getEdges:il,getSubGraphs:yl,getTooltip:Jo,getVertices:rl,indexNodes:gl,lex:kl,lookUpDomId:Yo,parseDirective:zo,setClass:Ko,setClickEvent:tl,setDirection:Xo,setGen:ll,setLink:Qo,updateLink:Vo,updateLinkInterpolate:qo},Symbol.toStringTag,{value:"Module"}));const Sl={},El=function(t){const e=Object.keys(t);for(const n of e)Sl[n]=t[n]},Cl={},Dl=function(t,e,n,r,i,a){const s=r.select(`[id="${n}"]`);Object.keys(t).forEach((function(n){const r=t[n];let o="default";r.classes.length>0&&(o=r.classes.join(" "));const l=Pn(r.styles);let c,u=void 0!==r.text?r.text:r.id;if(jt(dr().flowchart.htmlLabels)){const t={label:u.replace(/fa[blrs]?:fa-[\w-]+/g,(t=>`<i class='${t.replace(":"," ")}'></i>`))};c=(0,kt.a)(s,t).node(),c.parentNode.removeChild(c)}else{const t=i.createElementNS("http://www.w3.org/2000/svg","text");t.setAttribute("style",l.labelStyle.replace("color:","fill:"));const e=u.split(zt.lineBreakRegex);for(const n of e){const e=i.createElementNS("http://www.w3.org/2000/svg","tspan");e.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),e.setAttribute("dy","1em"),e.setAttribute("x","1"),e.textContent=n,t.appendChild(e)}c=t}let h=0,d="";switch(r.type){case"round":h=5,d="rect";break;case"square":case"group":default:d="rect";break;case"diamond":d="question";break;case"hexagon":d="hexagon";break;case"odd":case"odd_right":d="rect_left_inv_arrow";break;case"lean_right":d="lean_right";break;case"lean_left":d="lean_left";break;case"trapezoid":d="trapezoid";break;case"inv_trapezoid":d="inv_trapezoid";break;case"circle":d="circle";break;case"ellipse":d="ellipse";break;case"stadium":d="stadium";break;case"subroutine":d="subroutine";break;case"cylinder":d="cylinder";break;case"doublecircle":d="doublecircle"}e.setNode(r.id,{labelStyle:l.labelStyle,shape:d,labelText:u,rx:h,ry:h,class:o,style:l.style,id:r.id,link:r.link,linkTarget:r.linkTarget,tooltip:a.db.getTooltip(r.id)||"",domId:a.db.lookUpDomId(r.id),haveCallback:r.haveCallback,width:"group"===r.type?500:void 0,dir:r.dir,type:r.type,props:r.props,padding:dr().flowchart.padding}),It.info("setNode",{labelStyle:l.labelStyle,shape:d,labelText:u,rx:h,ry:h,class:o,style:l.style,id:r.id,domId:a.db.lookUpDomId(r.id),width:"group"===r.type?500:void 0,type:r.type,dir:r.dir,props:r.props,padding:dr().flowchart.padding})}))},Al=function(t,e,n){It.info("abc78 edges = ",t);let r,i,a=0,s={};if(void 0!==t.defaultStyle){const e=Pn(t.defaultStyle);r=e.style,i=e.labelStyle}t.forEach((function(n){a++;var l="L-"+n.start+"-"+n.end;void 0===s[l]?(s[l]=0,It.info("abc78 new entry",l,s[l])):(s[l]++,It.info("abc78 new entry",l,s[l]));let c=l+"-"+s[l];It.info("abc78 new link id to be used is",l,c,s[l]);var u="LS-"+n.start,h="LE-"+n.end;const d={style:"",labelStyle:""};switch(d.minlen=n.length||1,"arrow_open"===n.type?d.arrowhead="none":d.arrowhead="normal",d.arrowTypeStart="arrow_open",d.arrowTypeEnd="arrow_open",n.type){case"double_arrow_cross":d.arrowTypeStart="arrow_cross";case"arrow_cross":d.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":d.arrowTypeStart="arrow_point";case"arrow_point":d.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":d.arrowTypeStart="arrow_circle";case"arrow_circle":d.arrowTypeEnd="arrow_circle"}let p="",f="";switch(n.stroke){case"normal":p="fill:none;",void 0!==r&&(p=r),void 0!==i&&(f=i),d.thickness="normal",d.pattern="solid";break;case"dotted":d.thickness="normal",d.pattern="dotted",d.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":d.thickness="thick",d.pattern="solid",d.style="stroke-width: 3.5px;fill:none;"}if(void 0!==n.style){const t=Pn(n.style);p=t.style,f=t.labelStyle}d.style=d.style+=p,d.labelStyle=d.labelStyle+=f,void 0!==n.interpolate?d.curve=Zn(n.interpolate,o.c_6):void 0!==t.defaultInterpolate?d.curve=Zn(t.defaultInterpolate,o.c_6):d.curve=Zn(Cl.curve,o.c_6),void 0===n.text?void 0!==n.style&&(d.arrowheadStyle="fill: #333"):(d.arrowheadStyle="fill: #333",d.labelpos="c"),d.labelType="text",d.label=n.text.replace(zt.lineBreakRegex,"\n"),void 0===n.style&&(d.style=d.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),d.labelStyle=d.labelStyle.replace("color:","fill:"),d.id=c,d.classes="flowchart-link "+u+" "+h,e.setEdge(n.start,n.end,d,a)}))},Ol={setConf:function(t){const e=Object.keys(t);for(const n of e)Cl[n]=t[n]},addVertices:Dl,addEdges:Al,getClasses:function(t,e){It.info("Extracting classes"),e.db.clear();try{return e.parse(t),e.db.getClasses()}catch(n){return}},draw:function(t,e,n,r){It.info("Drawing flowchart"),r.db.clear(),Tl.setGen("gen-2"),r.parser.parse(t);let i=r.db.getDirection();void 0===i&&(i="TD");const{securityLevel:a,flowchart:s}=dr(),l=s.nodeSpacing||50,c=s.rankSpacing||50;let u;"sandbox"===a&&(u=(0,o.Ys)("#i"+e));const h="sandbox"===a?(0,o.Ys)(u.nodes()[0].contentDocument.body):(0,o.Ys)("body"),d="sandbox"===a?u.nodes()[0].contentDocument:document,p=new ut.k({multigraph:!0,compound:!0}).setGraph({rankdir:i,nodesep:l,ranksep:c,marginx:0,marginy:0}).setDefaultEdgeLabel((function(){return{}}));let f;const m=r.db.getSubGraphs();It.info("Subgraphs - ",m);for(let o=m.length-1;o>=0;o--)f=m[o],It.info("Subgraph - ",f),r.db.addVertex(f.id,f.title,"group",void 0,f.classes,f.dir);const g=r.db.getVertices(),y=r.db.getEdges();It.info("Edges",y);let b=0;for(b=m.length-1;b>=0;b--){f=m[b],(0,o.td_)("cluster").append("text");for(let t=0;t<f.nodes.length;t++)It.info("Setting up subgraphs",f.nodes[t],f.id),p.setParent(f.nodes[t],f.id)}Dl(g,p,e,h,d,r),Al(y,p);const x=h.select(`[id="${e}"]`),v=h.select("#"+e+" g");if(Js(v,p,["point","circle","cross"],"flowchart",e),nr.insertTitle(x,"flowchartTitleText",s.titleTopMargin,r.db.getDiagramTitle()),vr(p,x,s.diagramPadding,s.useMaxWidth),r.db.indexNodes("subGraph"+b),!s.htmlLabels){const t=d.querySelectorAll('[id="'+e+'"] .edgeLabel .label');for(const e of t){const t=e.getBBox(),n=d.createElementNS("http://www.w3.org/2000/svg","rect");n.setAttribute("rx",0),n.setAttribute("ry",0),n.setAttribute("width",t.width),n.setAttribute("height",t.height),e.insertBefore(n,e.firstChild)}}Object.keys(g).forEach((function(t){const n=g[t];if(n.link){const r=(0,o.Ys)("#"+e+' [id="'+t+'"]');if(r){const t=d.createElementNS("http://www.w3.org/2000/svg","a");t.setAttributeNS("http://www.w3.org/2000/svg","class",n.classes.join(" ")),t.setAttributeNS("http://www.w3.org/2000/svg","href",n.link),t.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),"sandbox"===a?t.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):n.linkTarget&&t.setAttributeNS("http://www.w3.org/2000/svg","target",n.linkTarget);const e=r.insert((function(){return t}),":first-child"),i=r.select(".label-container");i&&e.append((function(){return i.node()}));const s=r.select(".label");s&&e.append((function(){return s.node()}))}}}))}};var Il=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,3],r=[1,5],i=[7,9,11,12,13,14,15,16,17,18,19,20,21,23,25,26,28,35,40],a=[1,15],s=[1,16],o=[1,17],l=[1,18],c=[1,19],u=[1,20],h=[1,21],d=[1,22],p=[1,23],f=[1,24],m=[1,25],g=[1,26],y=[1,27],b=[1,29],x=[1,31],v=[1,34],_=[5,7,9,11,12,13,14,15,16,17,18,19,20,21,23,25,26,28,35,40],k={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,gantt:5,document:6,EOF:7,line:8,SPACE:9,statement:10,NL:11,dateFormat:12,inclusiveEndDates:13,topAxis:14,axisFormat:15,tickInterval:16,excludes:17,includes:18,todayMarker:19,title:20,acc_title:21,acc_title_value:22,acc_descr:23,acc_descr_value:24,acc_descr_multiline_value:25,section:26,clickStatement:27,taskTxt:28,taskData:29,openDirective:30,typeDirective:31,closeDirective:32,":":33,argDirective:34,click:35,callbackname:36,callbackargs:37,href:38,clickStatementDebug:39,open_directive:40,type_directive:41,arg_directive:42,close_directive:43,$accept:0,$end:1},terminals_:{2:"error",5:"gantt",7:"EOF",9:"SPACE",11:"NL",12:"dateFormat",13:"inclusiveEndDates",14:"topAxis",15:"axisFormat",16:"tickInterval",17:"excludes",18:"includes",19:"todayMarker",20:"title",21:"acc_title",22:"acc_title_value",23:"acc_descr",24:"acc_descr_value",25:"acc_descr_multiline_value",26:"section",28:"taskTxt",29:"taskData",33:":",35:"click",36:"callbackname",37:"callbackargs",38:"href",40:"open_directive",41:"type_directive",42:"arg_directive",43:"close_directive"},productions_:[0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[27,2],[27,3],[27,3],[27,4],[27,3],[27,4],[27,2],[39,2],[39,3],[39,3],[39,4],[39,3],[39,4],[39,2],[30,1],[31,1],[34,1],[32,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 2:return a[o-1];case 3:case 7:case 8:this.$=[];break;case 4:a[o-1].push(a[o]),this.$=a[o-1];break;case 5:case 6:this.$=a[o];break;case 9:r.setDateFormat(a[o].substr(11)),this.$=a[o].substr(11);break;case 10:r.enableInclusiveEndDates(),this.$=a[o].substr(18);break;case 11:r.TopAxis(),this.$=a[o].substr(8);break;case 12:r.setAxisFormat(a[o].substr(11)),this.$=a[o].substr(11);break;case 13:r.setTickInterval(a[o].substr(13)),this.$=a[o].substr(13);break;case 14:r.setExcludes(a[o].substr(9)),this.$=a[o].substr(9);break;case 15:r.setIncludes(a[o].substr(9)),this.$=a[o].substr(9);break;case 16:r.setTodayMarker(a[o].substr(12)),this.$=a[o].substr(12);break;case 17:r.setDiagramTitle(a[o].substr(6)),this.$=a[o].substr(6);break;case 18:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 19:case 20:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 21:r.addSection(a[o].substr(8)),this.$=a[o].substr(8);break;case 23:r.addTask(a[o-1],a[o]),this.$="task";break;case 27:this.$=a[o-1],r.setClickEvent(a[o-1],a[o],null);break;case 28:this.$=a[o-2],r.setClickEvent(a[o-2],a[o-1],a[o]);break;case 29:this.$=a[o-2],r.setClickEvent(a[o-2],a[o-1],null),r.setLink(a[o-2],a[o]);break;case 30:this.$=a[o-3],r.setClickEvent(a[o-3],a[o-2],a[o-1]),r.setLink(a[o-3],a[o]);break;case 31:this.$=a[o-2],r.setClickEvent(a[o-2],a[o],null),r.setLink(a[o-2],a[o-1]);break;case 32:this.$=a[o-3],r.setClickEvent(a[o-3],a[o-1],a[o]),r.setLink(a[o-3],a[o-2]);break;case 33:this.$=a[o-1],r.setLink(a[o-1],a[o]);break;case 34:case 40:this.$=a[o-1]+" "+a[o];break;case 35:case 36:case 38:this.$=a[o-2]+" "+a[o-1]+" "+a[o];break;case 37:case 39:this.$=a[o-3]+" "+a[o-2]+" "+a[o-1]+" "+a[o];break;case 41:r.parseDirective("%%{","open_directive");break;case 42:r.parseDirective(a[o],"type_directive");break;case 43:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 44:r.parseDirective("}%%","close_directive","gantt")}},table:[{3:1,4:2,5:n,30:4,40:r},{1:[3]},{3:6,4:2,5:n,30:4,40:r},e(i,[2,3],{6:7}),{31:8,41:[1,9]},{41:[2,41]},{1:[2,1]},{4:30,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:a,13:s,14:o,15:l,16:c,17:u,18:h,19:d,20:p,21:f,23:m,25:g,26:y,27:28,28:b,30:4,35:x,40:r},{32:32,33:[1,33],43:v},e([33,43],[2,42]),e(i,[2,8],{1:[2,2]}),e(i,[2,4]),{4:30,10:35,12:a,13:s,14:o,15:l,16:c,17:u,18:h,19:d,20:p,21:f,23:m,25:g,26:y,27:28,28:b,30:4,35:x,40:r},e(i,[2,6]),e(i,[2,7]),e(i,[2,9]),e(i,[2,10]),e(i,[2,11]),e(i,[2,12]),e(i,[2,13]),e(i,[2,14]),e(i,[2,15]),e(i,[2,16]),e(i,[2,17]),{22:[1,36]},{24:[1,37]},e(i,[2,20]),e(i,[2,21]),e(i,[2,22]),{29:[1,38]},e(i,[2,24]),{36:[1,39],38:[1,40]},{11:[1,41]},{34:42,42:[1,43]},{11:[2,44]},e(i,[2,5]),e(i,[2,18]),e(i,[2,19]),e(i,[2,23]),e(i,[2,27],{37:[1,44],38:[1,45]}),e(i,[2,33],{36:[1,46]}),e(_,[2,25]),{32:47,43:v},{43:[2,43]},e(i,[2,28],{38:[1,48]}),e(i,[2,29]),e(i,[2,31],{37:[1,49]}),{11:[1,50]},e(i,[2,30]),e(i,[2,32]),e(_,[2,26])],defaultActions:{5:[2,41],6:[2,1],34:[2,44],43:[2,43]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},T=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),40;case 1:return this.begin("type_directive"),41;case 2:return this.popState(),this.begin("arg_directive"),33;case 3:return this.popState(),this.popState(),43;case 4:return 42;case 5:return this.begin("acc_title"),21;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),23;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:case 20:case 23:case 26:case 29:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:case 13:case 14:case 16:case 17:case 18:break;case 15:return 11;case 19:this.begin("href");break;case 21:return 38;case 22:this.begin("callbackname");break;case 24:this.popState(),this.begin("callbackargs");break;case 25:return 36;case 27:return 37;case 28:this.begin("click");break;case 30:return 35;case 31:return 5;case 32:return 12;case 33:return 13;case 34:return 14;case 35:return 15;case 36:return 16;case 37:return 18;case 38:return 17;case 39:return 19;case 40:return"date";case 41:return 20;case 42:return"accDescription";case 43:return 26;case 44:return 28;case 45:return 29;case 46:return 33;case 47:return 7;case 48:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[26,27],inclusive:!1},callbackname:{rules:[23,24,25],inclusive:!1},href:{rules:[20,21],inclusive:!1},click:{rules:[29,30],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,13,14,15,16,17,18,19,22,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],inclusive:!0}}},t);function w(){this.yy={}}return k.lexer=T,w.prototype=k,k.Parser=w,new w}();Il.parser=Il;const Ll=Il,Nl=t=>null!==t.match(/^\s*gantt/);a().extend(wt()),a().extend(Et()),a().extend(Dt());let Ml,Fl="",Bl="",Rl="",$l=[],Zl=[],jl={},Pl=[],zl=[],Yl="";const Ul=["active","done","crit","milestone"];let Wl=[],Hl=!1,ql=!1,Vl=0;const Gl=function(t,e,n,r){return!r.includes(t.format(e.trim()))&&(!!(t.isoWeekday()>=6&&n.includes("weekends"))||(!!n.includes(t.format("dddd").toLowerCase())||n.includes(t.format(e.trim()))))},Xl=function(t,e,n,r){if(!n.length||t.manualEndTime)return;let i,s;i=t.startTime instanceof Date?a()(t.startTime):a()(t.startTime,e,!0),i=i.add(1,"d"),s=t.endTime instanceof Date?a()(t.endTime):a()(t.endTime,e,!0);const[o,l]=Kl(i,s,e,n,r);t.endTime=o.toDate(),t.renderEndTime=l},Kl=function(t,e,n,r,i){let a=!1,s=null;for(;t<=e;)a||(s=e.toDate()),a=Gl(t,n,r,i),a&&(e=e.add(1,"d")),t=t.add(1,"d");return[e,s]},Ql=function(t,e,n){n=n.trim();const r=/^after\s+([\d\w- ]+)/.exec(n.trim());if(null!==r){let t=null;if(r[1].split(" ").forEach((function(e){let n=oc(e);void 0!==n&&(t?n.endTime>t.endTime&&(t=n):t=n)})),t)return t.endTime;{const t=new Date;return t.setHours(0,0,0,0),t}}let i=a()(n,e.trim(),!0);if(i.isValid())return i.toDate();{It.debug("Invalid date:"+n),It.debug("With date format:"+e.trim());const t=new Date(n);if(void 0===t||isNaN(t.getTime()))throw new Error("Invalid date:"+n);return t}},Jl=function(t){const e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return null!==e?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]},tc=function(t,e,n,r=!1){n=n.trim();let i=a()(n,e.trim(),!0);if(i.isValid())return r&&(i=i.add(1,"d")),i.toDate();let s=a()(t);const[o,l]=Jl(n);if(!Number.isNaN(o)){const t=s.add(o,l);t.isValid()&&(s=t)}return s.toDate()};let ec=0;const nc=function(t){return void 0===t?(ec+=1,"task"+ec):t};let rc,ic,ac=[];const sc={},oc=function(t){const e=sc[t];return ac[e]},lc=function(){const t=function(t){const e=ac[t];let n="";switch(ac[t].raw.startTime.type){case"prevTaskEnd":{const t=oc(e.prevTaskId);e.startTime=t.endTime;break}case"getStartDate":n=Ql(0,Fl,ac[t].raw.startTime.startData),n&&(ac[t].startTime=n)}return ac[t].startTime&&(ac[t].endTime=tc(ac[t].startTime,Fl,ac[t].raw.endTime.data,Hl),ac[t].endTime&&(ac[t].processed=!0,ac[t].manualEndTime=a()(ac[t].raw.endTime.data,"YYYY-MM-DD",!0).isValid(),Xl(ac[t],Fl,Zl,$l))),ac[t].processed};let e=!0;for(const[n,r]of ac.entries())t(n),e=e&&r.processed;return e},cc=function(t,e){t.split(",").forEach((function(t){let n=oc(t);void 0!==n&&n.classes.push(e)}))},uc=function(t,e){Wl.push((function(){const n=document.querySelector(`[id="${t}"]`);null!==n&&n.addEventListener("click",(function(){e()}))}),(function(){const n=document.querySelector(`[id="${t}-text"]`);null!==n&&n.addEventListener("click",(function(){e()}))}))},hc={parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().gantt,clear:function(){Pl=[],zl=[],Yl="",Wl=[],ec=0,rc=void 0,ic=void 0,ac=[],Fl="",Bl="",Ml=void 0,Rl="",$l=[],Zl=[],Hl=!1,ql=!1,Vl=0,jl={},Zr()},setDateFormat:function(t){Fl=t},getDateFormat:function(){return Fl},enableInclusiveEndDates:function(){Hl=!0},endDatesAreInclusive:function(){return Hl},enableTopAxis:function(){ql=!0},topAxisEnabled:function(){return ql},setAxisFormat:function(t){Bl=t},getAxisFormat:function(){return Bl},setTickInterval:function(t){Ml=t},getTickInterval:function(){return Ml},setTodayMarker:function(t){Rl=t},getTodayMarker:function(){return Rl},setAccTitle:jr,getAccTitle:Pr,setDiagramTitle:Ur,getDiagramTitle:Wr,setAccDescription:zr,getAccDescription:Yr,addSection:function(t){Yl=t,Pl.push(t)},getSections:function(){return Pl},getTasks:function(){let t=lc();let e=0;for(;!t&&e<10;)t=lc(),e++;return zl=ac,zl},addTask:function(t,e){const n={section:Yl,type:Yl,processed:!1,manualEndTime:!1,renderEndTime:null,raw:{data:e},task:t,classes:[]},r=function(t,e){let n;n=":"===e.substr(0,1)?e.substr(1,e.length):e;const r=n.split(","),i={};dc(r,i,Ul);for(let a=0;a<r.length;a++)r[a]=r[a].trim();switch(r.length){case 1:i.id=nc(),i.startTime={type:"prevTaskEnd",id:t},i.endTime={data:r[0]};break;case 2:i.id=nc(),i.startTime={type:"getStartDate",startData:r[0]},i.endTime={data:r[1]};break;case 3:i.id=nc(r[0]),i.startTime={type:"getStartDate",startData:r[1]},i.endTime={data:r[2]}}return i}(ic,e);n.raw.startTime=r.startTime,n.raw.endTime=r.endTime,n.id=r.id,n.prevTaskId=ic,n.active=r.active,n.done=r.done,n.crit=r.crit,n.milestone=r.milestone,n.order=Vl,Vl++;const i=ac.push(n);ic=n.id,sc[n.id]=i-1},findTaskById:oc,addTaskOrg:function(t,e){const n={section:Yl,type:Yl,description:t,task:t,classes:[]},r=function(t,e){let n;n=":"===e.substr(0,1)?e.substr(1,e.length):e;const r=n.split(","),i={};dc(r,i,Ul);for(let a=0;a<r.length;a++)r[a]=r[a].trim();let s="";switch(r.length){case 1:i.id=nc(),i.startTime=t.endTime,s=r[0];break;case 2:i.id=nc(),i.startTime=Ql(0,Fl,r[0]),s=r[1];break;case 3:i.id=nc(r[0]),i.startTime=Ql(0,Fl,r[1]),s=r[2]}return s&&(i.endTime=tc(i.startTime,Fl,s,Hl),i.manualEndTime=a()(s,"YYYY-MM-DD",!0).isValid(),Xl(i,Fl,Zl,$l)),i}(rc,e);n.startTime=r.startTime,n.endTime=r.endTime,n.id=r.id,n.active=r.active,n.done=r.done,n.crit=r.crit,n.milestone=r.milestone,rc=n,zl.push(n)},setIncludes:function(t){$l=t.toLowerCase().split(/[\s,]+/)},getIncludes:function(){return $l},setExcludes:function(t){Zl=t.toLowerCase().split(/[\s,]+/)},getExcludes:function(){return Zl},setClickEvent:function(t,e,n){t.split(",").forEach((function(t){!function(t,e,n){if("loose"!==dr().securityLevel)return;if(void 0===e)return;let r=[];if("string"==typeof n){r=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t<r.length;t++){let e=r[t].trim();'"'===e.charAt(0)&&'"'===e.charAt(e.length-1)&&(e=e.substr(1,e.length-2)),r[t]=e}}0===r.length&&r.push(t),void 0!==oc(t)&&uc(t,(()=>{nr.runFunc(e,...r)}))}(t,e,n)})),cc(t,"clickable")},setLink:function(t,e){let n=e;"loose"!==dr().securityLevel&&(n=(0,s.N)(e)),t.split(",").forEach((function(t){void 0!==oc(t)&&(uc(t,(()=>{window.open(n,"_self")})),jl[t]=n)})),cc(t,"clickable")},getLinks:function(){return jl},bindFunctions:function(t){Wl.forEach((function(e){e(t)}))},parseDuration:Jl,isInvalidDate:Gl};function dc(t,e,n){let r=!0;for(;r;)r=!1,n.forEach((function(n){const i=new RegExp("^\\s*"+n+"\\s*$");t[0].match(i)&&(e[n]=!0,t.shift(1),r=!0)}))}let pc;const fc={setConf:function(){It.debug("Something is calling, setConf, remove the call")},draw:function(t,e,n,r){const i=dr().gantt,s=dr().securityLevel;let l;"sandbox"===s&&(l=(0,o.Ys)("#i"+e));const c="sandbox"===s?(0,o.Ys)(l.nodes()[0].contentDocument.body):(0,o.Ys)("body"),u="sandbox"===s?l.nodes()[0].contentDocument:document,h=u.getElementById(e);pc=h.parentElement.offsetWidth,void 0===pc&&(pc=1200),void 0!==i.useWidth&&(pc=i.useWidth);const d=r.db.getTasks(),p=d.length*(i.barHeight+i.barGap)+2*i.topPadding;h.setAttribute("viewBox","0 0 "+pc+" "+p);const f=c.select(`[id="${e}"]`),m=(0,o.Xf)().domain([(0,o.VV$)(d,(function(t){return t.startTime})),(0,o.Fp7)(d,(function(t){return t.endTime}))]).rangeRound([0,pc-i.leftPadding-i.rightPadding]);let g=[];for(const a of d)g.push(a.type);const y=g;function b(t,e){return function(t){let e=t.length;const n={};for(;e;)n[t[--e]]=(n[t[e]]||0)+1;return n}(e)[t]||0}g=function(t){const e={},n=[];for(let r=0,i=t.length;r<i;++r)Object.prototype.hasOwnProperty.call(e,t[r])||(e[t[r]]=!0,n.push(t[r]));return n}(g),d.sort((function(t,e){const n=t.startTime,r=e.startTime;let i=0;return n>r?i=1:n<r&&(i=-1),i})),function(t,n,s){const l=i.barHeight,c=l+i.barGap,h=i.topPadding,d=i.leftPadding;(0,o.BYU)().domain([0,g.length]).range(["#00B9FA","#F95002"]).interpolate(o.JHv);(function(t,e,n,s,o,l,c,u){const h=l.reduce(((t,{startTime:e})=>t?Math.min(t,e):e),0),d=l.reduce(((t,{endTime:e})=>t?Math.max(t,e):e),0),p=r.db.getDateFormat();if(!h||!d)return;const g=[];let y=null,b=a()(h);for(;b.valueOf()<=d;)r.db.isInvalidDate(b,p,c,u)?y?y.end=b:y={start:b,end:b}:y&&(g.push(y),y=null),b=b.add(1,"d");f.append("g").selectAll("rect").data(g).enter().append("rect").attr("id",(function(t){return"exclude-"+t.start.format("YYYY-MM-DD")})).attr("x",(function(t){return m(t.start)+n})).attr("y",i.gridLineStartPadding).attr("width",(function(t){const e=t.end.add(1,"day");return m(e)-m(t.start)})).attr("height",o-e-i.gridLineStartPadding).attr("transform-origin",(function(e,r){return(m(e.start)+n+.5*(m(e.end)-m(e.start))).toString()+"px "+(r*t+.5*o).toString()+"px"})).attr("class","exclude-range")})(c,h,d,0,s,t,r.db.getExcludes(),r.db.getIncludes()),function(t,e,n,a){let s=(0,o.LLu)(m).tickSize(-a+e+i.gridLineStartPadding).tickFormat((0,o.i$Z)(r.db.getAxisFormat()||i.axisFormat||"%Y-%m-%d"));const l=/^([1-9]\d*)(minute|hour|day|week|month)$/.exec(r.db.getTickInterval()||i.tickInterval);if(null!==l){const t=l[1];switch(l[2]){case"minute":s.ticks(o.Z_i.every(t));break;case"hour":s.ticks(o.WQD.every(t));break;case"day":s.ticks(o.rr1.every(t));break;case"week":s.ticks(o.NGh.every(t));break;case"month":s.ticks(o.F0B.every(t))}}if(f.append("g").attr("class","grid").attr("transform","translate("+t+", "+(a-50)+")").call(s).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),r.db.topAxisEnabled()||i.topAxis){let n=(0,o.F5q)(m).tickSize(-a+e+i.gridLineStartPadding).tickFormat((0,o.i$Z)(r.db.getAxisFormat()||i.axisFormat||"%Y-%m-%d"));if(null!==l){const t=l[1];switch(l[2]){case"minute":n.ticks(o.Z_i.every(t));break;case"hour":n.ticks(o.WQD.every(t));break;case"day":n.ticks(o.rr1.every(t));break;case"week":n.ticks(o.NGh.every(t));break;case"month":n.ticks(o.F0B.every(t))}}f.append("g").attr("class","grid").attr("transform","translate("+t+", "+e+")").call(n).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}(d,h,0,s),function(t,n,a,s,l,c,u){f.append("g").selectAll("rect").data(t).enter().append("rect").attr("x",0).attr("y",(function(t,e){return t.order*n+a-2})).attr("width",(function(){return u-i.rightPadding/2})).attr("height",n).attr("class",(function(t){for(const[e,n]of g.entries())if(t.type===n)return"section section"+e%i.numberSectionStyles;return"section section0"}));const h=f.append("g").selectAll("rect").data(t).enter(),d=r.db.getLinks();h.append("rect").attr("id",(function(t){return t.id})).attr("rx",3).attr("ry",3).attr("x",(function(t){return t.milestone?m(t.startTime)+s+.5*(m(t.endTime)-m(t.startTime))-.5*l:m(t.startTime)+s})).attr("y",(function(t,e){return t.order*n+a})).attr("width",(function(t){return t.milestone?l:m(t.renderEndTime||t.endTime)-m(t.startTime)})).attr("height",l).attr("transform-origin",(function(t,e){return e=t.order,(m(t.startTime)+s+.5*(m(t.endTime)-m(t.startTime))).toString()+"px "+(e*n+a+.5*l).toString()+"px"})).attr("class",(function(t){const e="task";let n="";t.classes.length>0&&(n=t.classes.join(" "));let r=0;for(const[s,o]of g.entries())t.type===o&&(r=s%i.numberSectionStyles);let a="";return t.active?t.crit?a+=" activeCrit":a=" active":t.done?a=t.crit?" doneCrit":" done":t.crit&&(a+=" crit"),0===a.length&&(a=" task"),t.milestone&&(a=" milestone "+a),a+=r,a+=" "+n,e+a})),h.append("text").attr("id",(function(t){return t.id+"-text"})).text((function(t){return t.task})).attr("font-size",i.fontSize).attr("x",(function(t){let e=m(t.startTime),n=m(t.renderEndTime||t.endTime);t.milestone&&(e+=.5*(m(t.endTime)-m(t.startTime))-.5*l),t.milestone&&(n=e+l);const r=this.getBBox().width;return r>n-e?n+r+1.5*i.leftPadding>u?e+s-5:n+s+5:(n-e)/2+e+s})).attr("y",(function(t,e){return t.order*n+i.barHeight/2+(i.fontSize/2-2)+a})).attr("text-height",l).attr("class",(function(t){const e=m(t.startTime);let n=m(t.endTime);t.milestone&&(n=e+l);const r=this.getBBox().width;let a="";t.classes.length>0&&(a=t.classes.join(" "));let s=0;for(const[l,c]of g.entries())t.type===c&&(s=l%i.numberSectionStyles);let o="";return t.active&&(o=t.crit?"activeCritText"+s:"activeText"+s),t.done?o=t.crit?o+" doneCritText"+s:o+" doneText"+s:t.crit&&(o=o+" critText"+s),t.milestone&&(o+=" milestoneText"),r>n-e?n+r+1.5*i.leftPadding>u?a+" taskTextOutsideLeft taskTextOutside"+s+" "+o:a+" taskTextOutsideRight taskTextOutside"+s+" "+o+" width-"+r:a+" taskText taskText"+s+" "+o+" width-"+r}));if("sandbox"===dr().securityLevel){let t;t=(0,o.Ys)("#i"+e);const n=t.nodes()[0].contentDocument;h.filter((function(t){return void 0!==d[t.id]})).each((function(t){var e=n.querySelector("#"+t.id),r=n.querySelector("#"+t.id+"-text");const i=e.parentNode;var a=n.createElement("a");a.setAttribute("xlink:href",d[t.id]),a.setAttribute("target","_top"),i.appendChild(a),a.appendChild(e),a.appendChild(r)}))}}(t,c,h,d,l,0,n),function(t,e){const n=[];let r=0;for(const[i,a]of g.entries())n[i]=[a,b(a,y)];f.append("g").selectAll("text").data(n).enter().append((function(t){const e=t[0].split(zt.lineBreakRegex),n=-(e.length-1)/2,r=u.createElementNS("http://www.w3.org/2000/svg","text");r.setAttribute("dy",n+"em");for(const[i,a]of e.entries()){const t=u.createElementNS("http://www.w3.org/2000/svg","tspan");t.setAttribute("alignment-baseline","central"),t.setAttribute("x","10"),i>0&&t.setAttribute("dy","1em"),t.textContent=a,r.appendChild(t)}return r})).attr("x",10).attr("y",(function(i,a){if(!(a>0))return i[1]*t/2+e;for(let s=0;s<a;s++)return r+=n[a-1][1],i[1]*t/2+r*t+e})).attr("font-size",i.sectionFontSize).attr("font-size",i.sectionFontSize).attr("class",(function(t){for(const[e,n]of g.entries())if(t[0]===n)return"sectionTitle sectionTitle"+e%i.numberSectionStyles;return"sectionTitle"}))}(c,h),function(t,e,n,a){const s=r.db.getTodayMarker();if("off"===s)return;const o=f.append("g").attr("class","today"),l=new Date,c=o.append("line");c.attr("x1",m(l)+t).attr("x2",m(l)+t).attr("y1",i.titleTopMargin).attr("y2",a-i.titleTopMargin).attr("class","today"),""!==s&&c.attr("style",s.replace(/,/g,";"))}(d,0,0,s)}(d,pc,p),xr(f,p,pc,i.useMaxWidth),f.append("text").text(r.db.getDiagramTitle()).attr("x",pc/2).attr("y",i.titleTopMargin).attr("class","titleText")}};var mc=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[6,9,10],r={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,r,i,a,s){switch(a.length,i){case 1:return r;case 4:break;case 6:r.setInfo(!0)}},table:[{3:1,4:[1,2]},{1:[3]},e(n,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},e(n,[2,3]),e(n,[2,4]),e(n,[2,5]),e(n,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},i=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}},t);function a(){this.yy={}}return r.lexer=i,a.prototype=r,r.Parser=a,new a}();mc.parser=mc;const gc=mc;var yc="",bc=!1;const xc={setMessage:t=>{It.debug("Setting message to: "+t),yc=t},getMessage:()=>yc,setInfo:t=>{bc=t},getInfo:()=>bc,clear:Zr},vc={draw:(t,e,n)=>{try{It.debug("Rendering info diagram\n"+t);const r=dr().securityLevel;let i;"sandbox"===r&&(i=(0,o.Ys)("#i"+e));const a=("sandbox"===r?(0,o.Ys)(i.nodes()[0].contentDocument.body):(0,o.Ys)("body")).select("#"+e);a.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size","32px").style("text-anchor","middle").text("v "+n),a.attr("height",100),a.attr("width",400)}catch(r){It.error("Error while rendering info diagram"),It.error(r.message)}}},_c=t=>null!==t.match(/^\s*info/);var kc=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,4],r=[1,5],i=[1,6],a=[1,7],s=[1,9],o=[1,11,13,15,17,19,20,26,27,28,29],l=[2,5],c=[1,6,11,13,15,17,19,20,26,27,28,29],u=[26,27,28],h=[2,8],d=[1,18],p=[1,19],f=[1,20],m=[1,21],g=[1,22],y=[1,23],b=[1,28],x=[6,26,27,28,29],v={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,PIE:6,document:7,showData:8,line:9,statement:10,txt:11,value:12,title:13,title_value:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,openDirective:21,typeDirective:22,closeDirective:23,":":24,argDirective:25,NEWLINE:26,";":27,EOF:28,open_directive:29,type_directive:30,arg_directive:31,close_directive:32,$accept:0,$end:1},terminals_:{2:"error",6:"PIE",8:"showData",11:"txt",12:"value",13:"title",14:"title_value",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",24:":",26:"NEWLINE",27:";",28:"EOF",29:"open_directive",30:"type_directive",31:"arg_directive",32:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,3],[7,0],[7,2],[9,2],[10,0],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[21,1],[22,1],[25,1],[23,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 4:r.setShowData(!0);break;case 7:this.$=a[o-1];break;case 9:r.addSection(a[o-1],r.cleanupValue(a[o]));break;case 10:this.$=a[o].trim(),r.setDiagramTitle(this.$);break;case 11:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 12:case 13:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 14:r.addSection(a[o].substr(8)),this.$=a[o].substr(8);break;case 21:r.parseDirective("%%{","open_directive");break;case 22:r.parseDirective(a[o],"type_directive");break;case 23:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 24:r.parseDirective("}%%","close_directive","pie")}},table:[{3:1,4:2,5:3,6:n,21:8,26:r,27:i,28:a,29:s},{1:[3]},{3:10,4:2,5:3,6:n,21:8,26:r,27:i,28:a,29:s},{3:11,4:2,5:3,6:n,21:8,26:r,27:i,28:a,29:s},e(o,l,{7:12,8:[1,13]}),e(c,[2,18]),e(c,[2,19]),e(c,[2,20]),{22:14,30:[1,15]},{30:[2,21]},{1:[2,1]},{1:[2,2]},e(u,h,{21:8,9:16,10:17,5:24,1:[2,3],11:d,13:p,15:f,17:m,19:g,20:y,29:s}),e(o,l,{7:25}),{23:26,24:[1,27],32:b},e([24,32],[2,22]),e(o,[2,6]),{4:29,26:r,27:i,28:a},{12:[1,30]},{14:[1,31]},{16:[1,32]},{18:[1,33]},e(u,[2,13]),e(u,[2,14]),e(u,[2,15]),e(u,h,{21:8,9:16,10:17,5:24,1:[2,4],11:d,13:p,15:f,17:m,19:g,20:y,29:s}),e(x,[2,16]),{25:34,31:[1,35]},e(x,[2,24]),e(o,[2,7]),e(u,[2,9]),e(u,[2,10]),e(u,[2,11]),e(u,[2,12]),{23:36,32:b},{32:[2,23]},e(x,[2,17])],defaultActions:{9:[2,21],10:[2,1],11:[2,2],35:[2,23]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},_=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),29;case 1:return this.begin("type_directive"),30;case 2:return this.popState(),this.begin("arg_directive"),24;case 3:return this.popState(),this.popState(),32;case 4:return 31;case 5:case 6:case 8:case 9:break;case 7:return 26;case 10:return this.begin("title"),13;case 11:return this.popState(),"title_value";case 12:return this.begin("acc_title"),15;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),17;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:case 20:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:this.begin("string");break;case 21:return"txt";case 22:return 6;case 23:return 8;case 24:return"value";case 25:return 28}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?:showData\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[11],inclusive:!1},string:{rules:[20,21],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,12,14,16,19,22,23,24,25],inclusive:!0}}},t);function k(){this.yy={}}return v.lexer=_,k.prototype=v,v.Parser=k,new k}();kc.parser=kc;const Tc=kc,wc=t=>null!==t.match(/^\s*pie/)||null!==t.match(/^\s*bar/);let Sc={},Ec=!1;const Cc={parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().pie,addSection:function(t,e){t=zt.sanitizeText(t,dr()),void 0===Sc[t]&&(Sc[t]=e,It.debug("Added new section :",t))},getSections:()=>Sc,cleanupValue:function(t){return":"===t.substring(0,1)?(t=t.substring(1).trim(),Number(t.trim())):Number(t.trim())},clear:function(){Sc={},Ec=!1,Zr()},setAccTitle:jr,getAccTitle:Pr,setDiagramTitle:Ur,getDiagramTitle:Wr,setShowData:function(t){Ec=t},getShowData:function(){return Ec},getAccDescription:Yr,setAccDescription:zr};let Dc,Ac=dr();const Oc=450,Ic={draw:(t,e,n,r)=>{try{Ac=dr(),It.debug("Rendering info diagram\n"+t);const n=dr().securityLevel;let g;"sandbox"===n&&(g=(0,o.Ys)("#i"+e));const y="sandbox"===n?(0,o.Ys)(g.nodes()[0].contentDocument.body):(0,o.Ys)("body"),b="sandbox"===n?g.nodes()[0].contentDocument:document;r.db.clear(),r.parser.parse(t),It.debug("Parsed info diagram");const x=b.getElementById(e);Dc=x.parentElement.offsetWidth,void 0===Dc&&(Dc=1200),void 0!==Ac.useWidth&&(Dc=Ac.useWidth),void 0!==Ac.pie.useWidth&&(Dc=Ac.pie.useWidth);const v=y.select("#"+e);xr(v,Oc,Dc,Ac.pie.useMaxWidth),x.setAttribute("viewBox","0 0 "+Dc+" "+Oc);var i=18,a=Math.min(Dc,Oc)/2-40,s=v.append("g").attr("transform","translate("+Dc/2+",225)"),l=r.db.getSections(),c=0;Object.keys(l).forEach((function(t){c+=l[t]}));const _=Ac.themeVariables;var u=[_.pie1,_.pie2,_.pie3,_.pie4,_.pie5,_.pie6,_.pie7,_.pie8,_.pie9,_.pie10,_.pie11,_.pie12],h=(0,o.PKp)().range(u),d=Object.entries(l).map((function(t,e){return{order:e,name:t[0],value:t[1]}})),p=(0,o.ve8)().value((function(t){return t.value})).sort((function(t,e){return t.order-e.order}))(d),f=(0,o.Nb1)().innerRadius(0).outerRadius(a);s.selectAll("mySlices").data(p).enter().append("path").attr("d",f).attr("fill",(function(t){return h(t.data.name)})).attr("class","pieCircle"),s.selectAll("mySlices").data(p).enter().append("text").text((function(t){return(t.data.value/c*100).toFixed(0)+"%"})).attr("transform",(function(t){return"translate("+f.centroid(t)+")"})).style("text-anchor","middle").attr("class","slice"),s.append("text").text(r.db.getDiagramTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText");var m=s.selectAll(".legend").data(h.domain()).enter().append("g").attr("class","legend").attr("transform",(function(t,e){return"translate(216,"+(22*e-22*h.domain().length/2)+")"}));m.append("rect").attr("width",i).attr("height",i).style("fill",h).style("stroke",h),m.data(p).append("text").attr("x",22).attr("y",14).text((function(t){return r.db.getShowData()||Ac.showData||Ac.pie.showData?t.data.name+" ["+t.data.value+"]":t.data.name}))}catch(g){It.error("Error while rendering info diagram"),It.error(g)}}};var Lc=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,3],r=[1,5],i=[1,6],a=[1,7],s=[1,8],o=[5,6,8,14,16,18,19,40,41,42,43,44,45,53,71,72],l=[1,22],c=[2,13],u=[1,26],h=[1,27],d=[1,28],p=[1,29],f=[1,30],m=[1,31],g=[1,24],y=[1,32],b=[1,33],x=[1,36],v=[71,72],_=[5,8,14,16,18,19,40,41,42,43,44,45,53,60,62,71,72],k=[1,56],T=[1,57],w=[1,58],S=[1,59],E=[1,60],C=[1,61],D=[1,62],A=[62,63],O=[1,74],I=[1,70],L=[1,71],N=[1,72],M=[1,73],F=[1,75],B=[1,79],R=[1,80],$=[1,77],Z=[1,78],j=[5,8,14,16,18,19,40,41,42,43,44,45,53,71,72],P={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,openDirective:9,typeDirective:10,closeDirective:11,":":12,argDirective:13,acc_title:14,acc_title_value:15,acc_descr:16,acc_descr_value:17,acc_descr_multiline_value:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,requirementDef:23,elementDef:24,relationshipDef:25,requirementType:26,requirementName:27,STRUCT_START:28,requirementBody:29,ID:30,COLONSEP:31,id:32,TEXT:33,text:34,RISK:35,riskLevel:36,VERIFYMTHD:37,verifyType:38,STRUCT_STOP:39,REQUIREMENT:40,FUNCTIONAL_REQUIREMENT:41,INTERFACE_REQUIREMENT:42,PERFORMANCE_REQUIREMENT:43,PHYSICAL_REQUIREMENT:44,DESIGN_CONSTRAINT:45,LOW_RISK:46,MED_RISK:47,HIGH_RISK:48,VERIFY_ANALYSIS:49,VERIFY_DEMONSTRATION:50,VERIFY_INSPECTION:51,VERIFY_TEST:52,ELEMENT:53,elementName:54,elementBody:55,TYPE:56,type:57,DOCREF:58,ref:59,END_ARROW_L:60,relationship:61,LINE:62,END_ARROW_R:63,CONTAINS:64,COPIES:65,DERIVES:66,SATISFIES:67,VERIFIES:68,REFINES:69,TRACES:70,unqString:71,qString:72,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",12:":",14:"acc_title",15:"acc_title_value",16:"acc_descr",17:"acc_descr_value",18:"acc_descr_multiline_value",19:"open_directive",20:"type_directive",21:"arg_directive",22:"close_directive",28:"STRUCT_START",30:"ID",31:"COLONSEP",33:"TEXT",35:"RISK",37:"VERIFYMTHD",39:"STRUCT_STOP",40:"REQUIREMENT",41:"FUNCTIONAL_REQUIREMENT",42:"INTERFACE_REQUIREMENT",43:"PERFORMANCE_REQUIREMENT",44:"PHYSICAL_REQUIREMENT",45:"DESIGN_CONSTRAINT",46:"LOW_RISK",47:"MED_RISK",48:"HIGH_RISK",49:"VERIFY_ANALYSIS",50:"VERIFY_DEMONSTRATION",51:"VERIFY_INSPECTION",52:"VERIFY_TEST",53:"ELEMENT",56:"TYPE",58:"DOCREF",60:"END_ARROW_L",62:"LINE",63:"END_ARROW_R",64:"CONTAINS",65:"COPIES",66:"DERIVES",67:"SATISFIES",68:"VERIFIES",69:"REFINES",70:"TRACES",71:"unqString",72:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,3],[4,5],[4,2],[4,2],[4,1],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[23,5],[29,5],[29,5],[29,5],[29,5],[29,2],[29,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[36,1],[36,1],[36,1],[38,1],[38,1],[38,1],[38,1],[24,5],[55,5],[55,5],[55,2],[55,1],[25,5],[25,5],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[27,1],[27,1],[32,1],[32,1],[34,1],[34,1],[54,1],[54,1],[57,1],[57,1],[59,1],[59,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 6:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 7:case 8:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 9:r.parseDirective("%%{","open_directive");break;case 10:r.parseDirective(a[o],"type_directive");break;case 11:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 12:r.parseDirective("}%%","close_directive","pie");break;case 13:this.$=[];break;case 19:r.addRequirement(a[o-3],a[o-4]);break;case 20:r.setNewReqId(a[o-2]);break;case 21:r.setNewReqText(a[o-2]);break;case 22:r.setNewReqRisk(a[o-2]);break;case 23:r.setNewReqVerifyMethod(a[o-2]);break;case 26:this.$=r.RequirementType.REQUIREMENT;break;case 27:this.$=r.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 28:this.$=r.RequirementType.INTERFACE_REQUIREMENT;break;case 29:this.$=r.RequirementType.PERFORMANCE_REQUIREMENT;break;case 30:this.$=r.RequirementType.PHYSICAL_REQUIREMENT;break;case 31:this.$=r.RequirementType.DESIGN_CONSTRAINT;break;case 32:this.$=r.RiskLevel.LOW_RISK;break;case 33:this.$=r.RiskLevel.MED_RISK;break;case 34:this.$=r.RiskLevel.HIGH_RISK;break;case 35:this.$=r.VerifyType.VERIFY_ANALYSIS;break;case 36:this.$=r.VerifyType.VERIFY_DEMONSTRATION;break;case 37:this.$=r.VerifyType.VERIFY_INSPECTION;break;case 38:this.$=r.VerifyType.VERIFY_TEST;break;case 39:r.addElement(a[o-3]);break;case 40:r.setNewElementType(a[o-2]);break;case 41:r.setNewElementDocRef(a[o-2]);break;case 44:r.addRelationship(a[o-2],a[o],a[o-4]);break;case 45:r.addRelationship(a[o-2],a[o-4],a[o]);break;case 46:this.$=r.Relationships.CONTAINS;break;case 47:this.$=r.Relationships.COPIES;break;case 48:this.$=r.Relationships.DERIVES;break;case 49:this.$=r.Relationships.SATISFIES;break;case 50:this.$=r.Relationships.VERIFIES;break;case 51:this.$=r.Relationships.REFINES;break;case 52:this.$=r.Relationships.TRACES}},table:[{3:1,4:2,6:n,9:4,14:r,16:i,18:a,19:s},{1:[3]},{3:10,4:2,5:[1,9],6:n,9:4,14:r,16:i,18:a,19:s},{5:[1,11]},{10:12,20:[1,13]},{15:[1,14]},{17:[1,15]},e(o,[2,8]),{20:[2,9]},{3:16,4:2,6:n,9:4,14:r,16:i,18:a,19:s},{1:[2,2]},{4:21,5:l,7:17,8:c,9:4,14:r,16:i,18:a,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:h,42:d,43:p,44:f,45:m,53:g,71:y,72:b},{11:34,12:[1,35],22:x},e([12,22],[2,10]),e(o,[2,6]),e(o,[2,7]),{1:[2,1]},{8:[1,37]},{4:21,5:l,7:38,8:c,9:4,14:r,16:i,18:a,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:h,42:d,43:p,44:f,45:m,53:g,71:y,72:b},{4:21,5:l,7:39,8:c,9:4,14:r,16:i,18:a,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:h,42:d,43:p,44:f,45:m,53:g,71:y,72:b},{4:21,5:l,7:40,8:c,9:4,14:r,16:i,18:a,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:h,42:d,43:p,44:f,45:m,53:g,71:y,72:b},{4:21,5:l,7:41,8:c,9:4,14:r,16:i,18:a,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:h,42:d,43:p,44:f,45:m,53:g,71:y,72:b},{4:21,5:l,7:42,8:c,9:4,14:r,16:i,18:a,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:h,42:d,43:p,44:f,45:m,53:g,71:y,72:b},{27:43,71:[1,44],72:[1,45]},{54:46,71:[1,47],72:[1,48]},{60:[1,49],62:[1,50]},e(v,[2,26]),e(v,[2,27]),e(v,[2,28]),e(v,[2,29]),e(v,[2,30]),e(v,[2,31]),e(_,[2,55]),e(_,[2,56]),e(o,[2,4]),{13:51,21:[1,52]},e(o,[2,12]),{1:[2,3]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{8:[2,17]},{8:[2,18]},{28:[1,53]},{28:[2,53]},{28:[2,54]},{28:[1,54]},{28:[2,59]},{28:[2,60]},{61:55,64:k,65:T,66:w,67:S,68:E,69:C,70:D},{61:63,64:k,65:T,66:w,67:S,68:E,69:C,70:D},{11:64,22:x},{22:[2,11]},{5:[1,65]},{5:[1,66]},{62:[1,67]},e(A,[2,46]),e(A,[2,47]),e(A,[2,48]),e(A,[2,49]),e(A,[2,50]),e(A,[2,51]),e(A,[2,52]),{63:[1,68]},e(o,[2,5]),{5:O,29:69,30:I,33:L,35:N,37:M,39:F},{5:B,39:R,55:76,56:$,58:Z},{32:81,71:y,72:b},{32:82,71:y,72:b},e(j,[2,19]),{31:[1,83]},{31:[1,84]},{31:[1,85]},{31:[1,86]},{5:O,29:87,30:I,33:L,35:N,37:M,39:F},e(j,[2,25]),e(j,[2,39]),{31:[1,88]},{31:[1,89]},{5:B,39:R,55:90,56:$,58:Z},e(j,[2,43]),e(j,[2,44]),e(j,[2,45]),{32:91,71:y,72:b},{34:92,71:[1,93],72:[1,94]},{36:95,46:[1,96],47:[1,97],48:[1,98]},{38:99,49:[1,100],50:[1,101],51:[1,102],52:[1,103]},e(j,[2,24]),{57:104,71:[1,105],72:[1,106]},{59:107,71:[1,108],72:[1,109]},e(j,[2,42]),{5:[1,110]},{5:[1,111]},{5:[2,57]},{5:[2,58]},{5:[1,112]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[1,113]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[2,38]},{5:[1,114]},{5:[2,61]},{5:[2,62]},{5:[1,115]},{5:[2,63]},{5:[2,64]},{5:O,29:116,30:I,33:L,35:N,37:M,39:F},{5:O,29:117,30:I,33:L,35:N,37:M,39:F},{5:O,29:118,30:I,33:L,35:N,37:M,39:F},{5:O,29:119,30:I,33:L,35:N,37:M,39:F},{5:B,39:R,55:120,56:$,58:Z},{5:B,39:R,55:121,56:$,58:Z},e(j,[2,20]),e(j,[2,21]),e(j,[2,22]),e(j,[2,23]),e(j,[2,40]),e(j,[2,41])],defaultActions:{8:[2,9],10:[2,2],16:[2,1],37:[2,3],38:[2,14],39:[2,15],40:[2,16],41:[2,17],42:[2,18],44:[2,53],45:[2,54],47:[2,59],48:[2,60],52:[2,11],93:[2,57],94:[2,58],96:[2,32],97:[2,33],98:[2,34],100:[2,35],101:[2,36],102:[2,37],103:[2,38],105:[2,61],106:[2,62],108:[2,63],109:[2,64]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},z=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),19;case 1:return this.begin("type_directive"),20;case 2:return this.popState(),this.begin("arg_directive"),12;case 3:return this.popState(),this.popState(),22;case 4:return 21;case 5:return"title";case 6:return this.begin("acc_title"),14;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),16;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 53:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 5;case 14:case 15:case 16:break;case 17:return 8;case 18:return 6;case 19:return 28;case 20:return 39;case 21:return 31;case 22:return 30;case 23:return 33;case 24:return 35;case 25:return 37;case 26:return 40;case 27:return 41;case 28:return 42;case 29:return 43;case 30:return 44;case 31:return 45;case 32:return 46;case 33:return 47;case 34:return 48;case 35:return 49;case 36:return 50;case 37:return 51;case 38:return 52;case 39:return 53;case 40:return 64;case 41:return 65;case 42:return 66;case 43:return 67;case 44:return 68;case 45:return 69;case 46:return 70;case 47:return 56;case 48:return 58;case 49:return 60;case 50:return 63;case 51:return 62;case 52:this.begin("string");break;case 54:return"qString";case 55:return e.yytext=e.yytext.trim(),71}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[53,54],inclusive:!1},INITIAL:{rules:[0,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,55],inclusive:!0}}},t);function Y(){this.yy={}}return P.lexer=z,Y.prototype=P,P.Parser=Y,new Y}();Lc.parser=Lc;const Nc=Lc,Mc=t=>null!==t.match(/^\s*requirement(Diagram)?/);let Fc=[],Bc={},Rc={},$c={},Zc={};const jc={RequirementType:{REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},RiskLevel:{LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},VerifyType:{VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},Relationships:{CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().req,addRequirement:(t,e)=>(void 0===Rc[t]&&(Rc[t]={name:t,type:e,id:Bc.id,text:Bc.text,risk:Bc.risk,verifyMethod:Bc.verifyMethod}),Bc={},Rc[t]),getRequirements:()=>Rc,setNewReqId:t=>{void 0!==Bc&&(Bc.id=t)},setNewReqText:t=>{void 0!==Bc&&(Bc.text=t)},setNewReqRisk:t=>{void 0!==Bc&&(Bc.risk=t)},setNewReqVerifyMethod:t=>{void 0!==Bc&&(Bc.verifyMethod=t)},setAccTitle:jr,getAccTitle:Pr,setAccDescription:zr,getAccDescription:Yr,addElement:t=>(void 0===Zc[t]&&(Zc[t]={name:t,type:$c.type,docRef:$c.docRef},It.info("Added new requirement: ",t)),$c={},Zc[t]),getElements:()=>Zc,setNewElementType:t=>{void 0!==$c&&($c.type=t)},setNewElementDocRef:t=>{void 0!==$c&&($c.docRef=t)},addRelationship:(t,e,n)=>{Fc.push({type:t,src:e,dst:n})},getRelationships:()=>Fc,clear:()=>{Fc=[],Bc={},Rc={},$c={},Zc={},Zr()}},Pc={CONTAINS:"contains",ARROW:"arrow"},zc=Pc,Yc=(t,e)=>{let n=t.append("defs").append("marker").attr("id",Pc.CONTAINS+"_line_ending").attr("refX",0).attr("refY",e.line_height/2).attr("markerWidth",e.line_height).attr("markerHeight",e.line_height).attr("orient","auto").append("g");n.append("circle").attr("cx",e.line_height/2).attr("cy",e.line_height/2).attr("r",e.line_height/2).attr("fill","none"),n.append("line").attr("x1",0).attr("x2",e.line_height).attr("y1",e.line_height/2).attr("y2",e.line_height/2).attr("stroke-width",1),n.append("line").attr("y1",0).attr("y2",e.line_height).attr("x1",e.line_height/2).attr("x2",e.line_height/2).attr("stroke-width",1),t.append("defs").append("marker").attr("id",Pc.ARROW+"_line_ending").attr("refX",e.line_height).attr("refY",.5*e.line_height).attr("markerWidth",e.line_height).attr("markerHeight",e.line_height).attr("orient","auto").append("path").attr("d",`M0,0\n L${e.line_height},${e.line_height/2}\n M${e.line_height},${e.line_height/2}\n L0,${e.line_height}`).attr("stroke-width",1)};let Uc={},Wc=0;const Hc=(t,e)=>t.insert("rect","#"+e).attr("class","req reqBox").attr("x",0).attr("y",0).attr("width",Uc.rect_min_width+"px").attr("height",Uc.rect_min_height+"px"),qc=(t,e,n)=>{let r=Uc.rect_min_width/2,i=t.append("text").attr("class","req reqLabel reqTitle").attr("id",e).attr("x",r).attr("y",Uc.rect_padding).attr("dominant-baseline","hanging"),a=0;n.forEach((t=>{0==a?i.append("tspan").attr("text-anchor","middle").attr("x",Uc.rect_min_width/2).attr("dy",0).text(t):i.append("tspan").attr("text-anchor","middle").attr("x",Uc.rect_min_width/2).attr("dy",.75*Uc.line_height).text(t),a++}));let s=1.5*Uc.rect_padding+a*Uc.line_height*.75;return t.append("line").attr("class","req-title-line").attr("x1","0").attr("x2",Uc.rect_min_width).attr("y1",s).attr("y2",s),{titleNode:i,y:s}},Vc=(t,e,n,r)=>{let i=t.append("text").attr("class","req reqLabel").attr("id",e).attr("x",Uc.rect_padding).attr("y",r).attr("dominant-baseline","hanging"),a=0;let s=[];return n.forEach((t=>{let e=t.length;for(;e>30&&a<3;){let n=t.substring(0,30);e=(t=t.substring(30,t.length)).length,s[s.length]=n,a++}if(3==a){let t=s[s.length-1];s[s.length-1]=t.substring(0,t.length-4)+"..."}else s[s.length]=t;a=0})),s.forEach((t=>{i.append("tspan").attr("x",Uc.rect_padding).attr("dy",Uc.line_height).text(t)})),i},Gc=function(t,e,n,r,i){const a=n.edge(Xc(e.src),Xc(e.dst)),s=(0,o.jvg)().x((function(t){return t.x})).y((function(t){return t.y})),l=t.insert("path","#"+r).attr("class","er relationshipLine").attr("d",s(a.points)).attr("fill","none");e.type==i.db.Relationships.CONTAINS?l.attr("marker-start","url("+zt.getUrl(Uc.arrowMarkerAbsolute)+"#"+e.type+"_line_ending)"):(l.attr("stroke-dasharray","10,7"),l.attr("marker-end","url("+zt.getUrl(Uc.arrowMarkerAbsolute)+"#"+zc.ARROW+"_line_ending)")),((t,e,n,r)=>{const i=e.node().getTotalLength(),a=e.node().getPointAtLength(.5*i),s="rel"+Wc;Wc++;const o=t.append("text").attr("class","req relationshipLabel").attr("id",s).attr("x",a.x).attr("y",a.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(r).node().getBBox();t.insert("rect","#"+s).attr("class","req reqLabelBox").attr("x",a.x-o.width/2).attr("y",a.y-o.height/2).attr("width",o.width).attr("height",o.height).attr("fill","white").attr("fill-opacity","85%")})(t,l,0,`<<${e.type}>>`)},Xc=t=>t.replace(/\s/g,"").replace(/\./g,"_"),Kc={draw:(t,e,n,r)=>{Uc=dr().requirement,r.db.clear(),r.parser.parse(t);const i=Uc.securityLevel;let a;"sandbox"===i&&(a=(0,o.Ys)("#i"+e));const s=("sandbox"===i?(0,o.Ys)(a.nodes()[0].contentDocument.body):(0,o.Ys)("body")).select(`[id='${e}']`);Yc(s,Uc);const l=new ut.k({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:Uc.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel((function(){return{}}));let c=r.db.getRequirements(),u=r.db.getElements(),h=r.db.getRelationships();var d,p,f;d=c,p=l,f=s,Object.keys(d).forEach((t=>{let e=d[t];t=Xc(t),It.info("Added new requirement: ",t);const n=f.append("g").attr("id",t),r=Hc(n,"req-"+t);let i=qc(n,t+"_title",[`<<${e.type}>>`,`${e.name}`]);Vc(n,t+"_body",[`Id: ${e.id}`,`Text: ${e.text}`,`Risk: ${e.risk}`,`Verification: ${e.verifyMethod}`],i.y);const a=r.node().getBBox();p.setNode(t,{width:a.width,height:a.height,shape:"rect",id:t})})),((t,e,n)=>{Object.keys(t).forEach((r=>{let i=t[r];const a=Xc(r),s=n.append("g").attr("id",a),o="element-"+a,l=Hc(s,o);let c=qc(s,o+"_title",["<<Element>>",`${r}`]);Vc(s,o+"_body",[`Type: ${i.type||"Not Specified"}`,`Doc Ref: ${i.docRef||"None"}`],c.y);const u=l.node().getBBox();e.setNode(a,{width:u.width,height:u.height,shape:"rect",id:a})}))})(u,l,s),((t,e)=>{t.forEach((function(t){let n=Xc(t.src),r=Xc(t.dst);e.setEdge(n,r,{relationship:t})}))})(h,l),(0,ct.bK)(l),function(t,e){e.nodes().forEach((function(n){void 0!==n&&void 0!==e.node(n)&&(t.select("#"+n),t.select("#"+n).attr("transform","translate("+(e.node(n).x-e.node(n).width/2)+","+(e.node(n).y-e.node(n).height/2)+" )"))}))}(s,l),h.forEach((function(t){Gc(s,t,l,e,r)}));const m=Uc.rect_padding,g=s.node().getBBox(),y=g.width+2*m,b=g.height+2*m;xr(s,b,y,Uc.useMaxWidth),s.attr("viewBox",`${g.x-m} ${g.y-m} ${y} ${b}`)}};var Qc=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,2],r=[1,3],i=[1,5],a=[1,7],s=[2,5],o=[1,15],l=[1,17],c=[1,19],u=[1,21],h=[1,22],d=[1,23],p=[1,29],f=[1,30],m=[1,31],g=[1,32],y=[1,33],b=[1,34],x=[1,35],v=[1,36],_=[1,37],k=[1,38],T=[1,39],w=[1,40],S=[1,42],E=[1,43],C=[1,45],D=[1,46],A=[1,47],O=[1,48],I=[1,49],L=[1,50],N=[1,53],M=[1,4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,51,52,53,54,56,57,62,63,64,65,73,83],F=[4,5,21,54,56],B=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,54,56,57,62,63,64,65,73,83],R=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,53,54,56,57,62,63,64,65,73,83],$=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,52,54,56,57,62,63,64,65,73,83],Z=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,51,54,56,57,62,63,64,65,73,83],j=[71,72,73],P=[1,125],z=[1,4,5,7,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,51,52,53,54,56,57,62,63,64,65,73,83],Y={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,directive:6,SD:7,document:8,line:9,statement:10,box_section:11,box_line:12,participant_statement:13,openDirective:14,typeDirective:15,closeDirective:16,":":17,argDirective:18,box:19,restOfLine:20,end:21,signal:22,autonumber:23,NUM:24,off:25,activate:26,actor:27,deactivate:28,note_statement:29,links_statement:30,link_statement:31,properties_statement:32,details_statement:33,title:34,legacy_title:35,acc_title:36,acc_title_value:37,acc_descr:38,acc_descr_value:39,acc_descr_multiline_value:40,loop:41,rect:42,opt:43,alt:44,else_sections:45,par:46,par_sections:47,critical:48,option_sections:49,break:50,option:51,and:52,else:53,participant:54,AS:55,participant_actor:56,note:57,placement:58,text2:59,over:60,actor_pair:61,links:62,link:63,properties:64,details:65,spaceList:66,",":67,left_of:68,right_of:69,signaltype:70,"+":71,"-":72,ACTOR:73,SOLID_OPEN_ARROW:74,DOTTED_OPEN_ARROW:75,SOLID_ARROW:76,DOTTED_ARROW:77,SOLID_CROSS:78,DOTTED_CROSS:79,SOLID_POINT:80,DOTTED_POINT:81,TXT:82,open_directive:83,type_directive:84,arg_directive:85,close_directive:86,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",7:"SD",17:":",19:"box",20:"restOfLine",21:"end",23:"autonumber",24:"NUM",25:"off",26:"activate",28:"deactivate",34:"title",35:"legacy_title",36:"acc_title",37:"acc_title_value",38:"acc_descr",39:"acc_descr_value",40:"acc_descr_multiline_value",41:"loop",42:"rect",43:"opt",44:"alt",46:"par",48:"critical",50:"break",51:"option",52:"and",53:"else",54:"participant",55:"AS",56:"participant_actor",57:"note",60:"over",62:"links",63:"link",64:"properties",65:"details",67:",",68:"left_of",69:"right_of",71:"+",72:"-",73:"ACTOR",74:"SOLID_OPEN_ARROW",75:"DOTTED_OPEN_ARROW",76:"SOLID_ARROW",77:"DOTTED_ARROW",78:"SOLID_CROSS",79:"DOTTED_CROSS",80:"SOLID_POINT",81:"DOTTED_POINT",82:"TXT",83:"open_directive",84:"type_directive",85:"arg_directive",86:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[11,0],[11,2],[12,2],[12,1],[12,1],[6,4],[6,6],[10,1],[10,4],[10,2],[10,4],[10,3],[10,3],[10,2],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,2],[10,2],[10,1],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[49,1],[49,4],[47,1],[47,4],[45,1],[45,4],[13,5],[13,3],[13,5],[13,3],[29,4],[29,4],[30,3],[31,3],[32,3],[33,3],[66,2],[66,1],[61,3],[61,1],[58,1],[58,1],[22,5],[22,5],[22,4],[27,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[59,1],[14,1],[15,1],[18,1],[16,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 4:return r.apply(a[o]),a[o];case 5:case 10:case 9:case 14:this.$=[];break;case 6:case 11:a[o-1].push(a[o]),this.$=a[o-1];break;case 7:case 8:case 12:case 13:case 63:this.$=a[o];break;case 18:a[o-1].unshift({type:"boxStart",boxData:r.parseBoxData(a[o-2])}),a[o-1].push({type:"boxEnd",boxText:a[o-2]}),this.$=a[o-1];break;case 20:this.$={type:"sequenceIndex",sequenceIndex:Number(a[o-2]),sequenceIndexStep:Number(a[o-1]),sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceIndex:Number(a[o-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:r.LINETYPE.AUTONUMBER};break;case 23:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 24:this.$={type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:a[o-1]};break;case 25:this.$={type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:a[o-1]};break;case 31:r.setDiagramTitle(a[o].substring(6)),this.$=a[o].substring(6);break;case 32:r.setDiagramTitle(a[o].substring(7)),this.$=a[o].substring(7);break;case 33:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 34:case 35:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 36:a[o-1].unshift({type:"loopStart",loopText:r.parseMessage(a[o-2]),signalType:r.LINETYPE.LOOP_START}),a[o-1].push({type:"loopEnd",loopText:a[o-2],signalType:r.LINETYPE.LOOP_END}),this.$=a[o-1];break;case 37:a[o-1].unshift({type:"rectStart",color:r.parseMessage(a[o-2]),signalType:r.LINETYPE.RECT_START}),a[o-1].push({type:"rectEnd",color:r.parseMessage(a[o-2]),signalType:r.LINETYPE.RECT_END}),this.$=a[o-1];break;case 38:a[o-1].unshift({type:"optStart",optText:r.parseMessage(a[o-2]),signalType:r.LINETYPE.OPT_START}),a[o-1].push({type:"optEnd",optText:r.parseMessage(a[o-2]),signalType:r.LINETYPE.OPT_END}),this.$=a[o-1];break;case 39:a[o-1].unshift({type:"altStart",altText:r.parseMessage(a[o-2]),signalType:r.LINETYPE.ALT_START}),a[o-1].push({type:"altEnd",signalType:r.LINETYPE.ALT_END}),this.$=a[o-1];break;case 40:a[o-1].unshift({type:"parStart",parText:r.parseMessage(a[o-2]),signalType:r.LINETYPE.PAR_START}),a[o-1].push({type:"parEnd",signalType:r.LINETYPE.PAR_END}),this.$=a[o-1];break;case 41:a[o-1].unshift({type:"criticalStart",criticalText:r.parseMessage(a[o-2]),signalType:r.LINETYPE.CRITICAL_START}),a[o-1].push({type:"criticalEnd",signalType:r.LINETYPE.CRITICAL_END}),this.$=a[o-1];break;case 42:a[o-1].unshift({type:"breakStart",breakText:r.parseMessage(a[o-2]),signalType:r.LINETYPE.BREAK_START}),a[o-1].push({type:"breakEnd",optText:r.parseMessage(a[o-2]),signalType:r.LINETYPE.BREAK_END}),this.$=a[o-1];break;case 45:this.$=a[o-3].concat([{type:"option",optionText:r.parseMessage(a[o-1]),signalType:r.LINETYPE.CRITICAL_OPTION},a[o]]);break;case 47:this.$=a[o-3].concat([{type:"and",parText:r.parseMessage(a[o-1]),signalType:r.LINETYPE.PAR_AND},a[o]]);break;case 49:this.$=a[o-3].concat([{type:"else",altText:r.parseMessage(a[o-1]),signalType:r.LINETYPE.ALT_ELSE},a[o]]);break;case 50:a[o-3].type="addParticipant",a[o-3].description=r.parseMessage(a[o-1]),this.$=a[o-3];break;case 51:a[o-1].type="addParticipant",this.$=a[o-1];break;case 52:a[o-3].type="addActor",a[o-3].description=r.parseMessage(a[o-1]),this.$=a[o-3];break;case 53:a[o-1].type="addActor",this.$=a[o-1];break;case 54:this.$=[a[o-1],{type:"addNote",placement:a[o-2],actor:a[o-1].actor,text:a[o]}];break;case 55:a[o-2]=[].concat(a[o-1],a[o-1]).slice(0,2),a[o-2][0]=a[o-2][0].actor,a[o-2][1]=a[o-2][1].actor,this.$=[a[o-1],{type:"addNote",placement:r.PLACEMENT.OVER,actor:a[o-2].slice(0,2),text:a[o]}];break;case 56:this.$=[a[o-1],{type:"addLinks",actor:a[o-1].actor,text:a[o]}];break;case 57:this.$=[a[o-1],{type:"addALink",actor:a[o-1].actor,text:a[o]}];break;case 58:this.$=[a[o-1],{type:"addProperties",actor:a[o-1].actor,text:a[o]}];break;case 59:this.$=[a[o-1],{type:"addDetails",actor:a[o-1].actor,text:a[o]}];break;case 62:this.$=[a[o-2],a[o]];break;case 64:this.$=r.PLACEMENT.LEFTOF;break;case 65:this.$=r.PLACEMENT.RIGHTOF;break;case 66:this.$=[a[o-4],a[o-1],{type:"addMessage",from:a[o-4].actor,to:a[o-1].actor,signalType:a[o-3],msg:a[o]},{type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:a[o-1]}];break;case 67:this.$=[a[o-4],a[o-1],{type:"addMessage",from:a[o-4].actor,to:a[o-1].actor,signalType:a[o-3],msg:a[o]},{type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:a[o-4]}];break;case 68:this.$=[a[o-3],a[o-1],{type:"addMessage",from:a[o-3].actor,to:a[o-1].actor,signalType:a[o-2],msg:a[o]}];break;case 69:this.$={type:"addParticipant",actor:a[o]};break;case 70:this.$=r.LINETYPE.SOLID_OPEN;break;case 71:this.$=r.LINETYPE.DOTTED_OPEN;break;case 72:this.$=r.LINETYPE.SOLID;break;case 73:this.$=r.LINETYPE.DOTTED;break;case 74:this.$=r.LINETYPE.SOLID_CROSS;break;case 75:this.$=r.LINETYPE.DOTTED_CROSS;break;case 76:this.$=r.LINETYPE.SOLID_POINT;break;case 77:this.$=r.LINETYPE.DOTTED_POINT;break;case 78:this.$=r.parseMessage(a[o].trim().substring(1));break;case 79:r.parseDirective("%%{","open_directive");break;case 80:r.parseDirective(a[o],"type_directive");break;case 81:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 82:r.parseDirective("}%%","close_directive","sequence")}},table:[{3:1,4:n,5:r,6:4,7:i,14:6,83:a},{1:[3]},{3:8,4:n,5:r,6:4,7:i,14:6,83:a},{3:9,4:n,5:r,6:4,7:i,14:6,83:a},{3:10,4:n,5:r,6:4,7:i,14:6,83:a},e([1,4,5,19,23,26,28,34,35,36,38,40,41,42,43,44,46,48,50,54,56,57,62,63,64,65,73,83],s,{8:11}),{15:12,84:[1,13]},{84:[2,79]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:l,6:41,9:14,10:16,13:18,14:6,19:c,22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},{16:51,17:[1,52],86:N},e([17,86],[2,80]),e(M,[2,6]),{6:41,10:54,13:18,14:6,19:c,22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},e(M,[2,8]),e(M,[2,9]),e(M,[2,17]),{20:[1,55]},{5:[1,56]},{5:[1,59],24:[1,57],25:[1,58]},{27:60,73:L},{27:61,73:L},{5:[1,62]},{5:[1,63]},{5:[1,64]},{5:[1,65]},{5:[1,66]},e(M,[2,31]),e(M,[2,32]),{37:[1,67]},{39:[1,68]},e(M,[2,35]),{20:[1,69]},{20:[1,70]},{20:[1,71]},{20:[1,72]},{20:[1,73]},{20:[1,74]},{20:[1,75]},e(M,[2,43]),{27:76,73:L},{27:77,73:L},{70:78,74:[1,79],75:[1,80],76:[1,81],77:[1,82],78:[1,83],79:[1,84],80:[1,85],81:[1,86]},{58:87,60:[1,88],68:[1,89],69:[1,90]},{27:91,73:L},{27:92,73:L},{27:93,73:L},{27:94,73:L},e([5,55,67,74,75,76,77,78,79,80,81,82],[2,69]),{5:[1,95]},{18:96,85:[1,97]},{5:[2,82]},e(M,[2,7]),e(F,[2,10],{11:98}),e(M,[2,19]),{5:[1,100],24:[1,99]},{5:[1,101]},e(M,[2,23]),{5:[1,102]},{5:[1,103]},e(M,[2,26]),e(M,[2,27]),e(M,[2,28]),e(M,[2,29]),e(M,[2,30]),e(M,[2,33]),e(M,[2,34]),e(B,s,{8:104}),e(B,s,{8:105}),e(B,s,{8:106}),e(R,s,{45:107,8:108}),e($,s,{47:109,8:110}),e(Z,s,{49:111,8:112}),e(B,s,{8:113}),{5:[1,115],55:[1,114]},{5:[1,117],55:[1,116]},{27:120,71:[1,118],72:[1,119],73:L},e(j,[2,70]),e(j,[2,71]),e(j,[2,72]),e(j,[2,73]),e(j,[2,74]),e(j,[2,75]),e(j,[2,76]),e(j,[2,77]),{27:121,73:L},{27:123,61:122,73:L},{73:[2,64]},{73:[2,65]},{59:124,82:P},{59:126,82:P},{59:127,82:P},{59:128,82:P},e(z,[2,15]),{16:129,86:N},{86:[2,81]},{4:[1,132],5:[1,134],12:131,13:133,21:[1,130],54:S,56:E},{5:[1,135]},e(M,[2,21]),e(M,[2,22]),e(M,[2,24]),e(M,[2,25]),{4:o,5:l,6:41,9:14,10:16,13:18,14:6,19:c,21:[1,136],22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},{4:o,5:l,6:41,9:14,10:16,13:18,14:6,19:c,21:[1,137],22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},{4:o,5:l,6:41,9:14,10:16,13:18,14:6,19:c,21:[1,138],22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},{21:[1,139]},{4:o,5:l,6:41,9:14,10:16,13:18,14:6,19:c,21:[2,48],22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,53:[1,140],54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},{21:[1,141]},{4:o,5:l,6:41,9:14,10:16,13:18,14:6,19:c,21:[2,46],22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,52:[1,142],54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},{21:[1,143]},{4:o,5:l,6:41,9:14,10:16,13:18,14:6,19:c,21:[2,44],22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,51:[1,144],54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},{4:o,5:l,6:41,9:14,10:16,13:18,14:6,19:c,21:[1,145],22:20,23:u,26:h,27:44,28:d,29:24,30:25,31:26,32:27,33:28,34:p,35:f,36:m,38:g,40:y,41:b,42:x,43:v,44:_,46:k,48:T,50:w,54:S,56:E,57:C,62:D,63:A,64:O,65:I,73:L,83:a},{20:[1,146]},e(M,[2,51]),{20:[1,147]},e(M,[2,53]),{27:148,73:L},{27:149,73:L},{59:150,82:P},{59:151,82:P},{59:152,82:P},{67:[1,153],82:[2,63]},{5:[2,56]},{5:[2,78]},{5:[2,57]},{5:[2,58]},{5:[2,59]},{5:[1,154]},e(M,[2,18]),e(F,[2,11]),{13:155,54:S,56:E},e(F,[2,13]),e(F,[2,14]),e(M,[2,20]),e(M,[2,36]),e(M,[2,37]),e(M,[2,38]),e(M,[2,39]),{20:[1,156]},e(M,[2,40]),{20:[1,157]},e(M,[2,41]),{20:[1,158]},e(M,[2,42]),{5:[1,159]},{5:[1,160]},{59:161,82:P},{59:162,82:P},{5:[2,68]},{5:[2,54]},{5:[2,55]},{27:163,73:L},e(z,[2,16]),e(F,[2,12]),e(R,s,{8:108,45:164}),e($,s,{8:110,47:165}),e(Z,s,{8:112,49:166}),e(M,[2,50]),e(M,[2,52]),{5:[2,66]},{5:[2,67]},{82:[2,62]},{21:[2,49]},{21:[2,47]},{21:[2,45]}],defaultActions:{7:[2,79],8:[2,1],9:[2,2],10:[2,3],53:[2,82],89:[2,64],90:[2,65],97:[2,81],124:[2,56],125:[2,78],126:[2,57],127:[2,58],128:[2,59],150:[2,68],151:[2,54],152:[2,55],161:[2,66],162:[2,67],163:[2,62],164:[2,49],165:[2,47],166:[2,45]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},U=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),83;case 1:return this.begin("type_directive"),84;case 2:return this.popState(),this.begin("arg_directive"),17;case 3:return this.popState(),this.popState(),86;case 4:return 85;case 5:case 53:case 66:return 5;case 6:case 7:case 8:case 9:case 10:break;case 11:return 24;case 12:return this.begin("LINE"),19;case 13:return this.begin("ID"),54;case 14:return this.begin("ID"),56;case 15:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),73;case 16:return this.popState(),this.popState(),this.begin("LINE"),55;case 17:return this.popState(),this.popState(),5;case 18:return this.begin("LINE"),41;case 19:return this.begin("LINE"),42;case 20:return this.begin("LINE"),43;case 21:return this.begin("LINE"),44;case 22:return this.begin("LINE"),53;case 23:return this.begin("LINE"),46;case 24:return this.begin("LINE"),52;case 25:return this.begin("LINE"),48;case 26:return this.begin("LINE"),51;case 27:return this.begin("LINE"),50;case 28:return this.popState(),20;case 29:return 21;case 30:return 68;case 31:return 69;case 32:return 62;case 33:return 63;case 34:return 64;case 35:return 65;case 36:return 60;case 37:return 57;case 38:return this.begin("ID"),26;case 39:return this.begin("ID"),28;case 40:return 34;case 41:return 35;case 42:return this.begin("acc_title"),36;case 43:return this.popState(),"acc_title_value";case 44:return this.begin("acc_descr"),38;case 45:return this.popState(),"acc_descr_value";case 46:this.begin("acc_descr_multiline");break;case 47:this.popState();break;case 48:return"acc_descr_multiline_value";case 49:return 7;case 50:return 23;case 51:return 25;case 52:return 67;case 54:return e.yytext=e.yytext.trim(),73;case 55:return 76;case 56:return 77;case 57:return 74;case 58:return 75;case 59:return 78;case 60:return 79;case 61:return 80;case 62:return 81;case 63:return 82;case 64:return 71;case 65:return 72;case 67:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:[^\->:\n,;]+?([\-]*[^\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[47,48],inclusive:!1},acc_descr:{rules:[45],inclusive:!1},acc_title:{rules:[43],inclusive:!1},open_directive:{rules:[1,8],inclusive:!1},type_directive:{rules:[2,3,8],inclusive:!1},arg_directive:{rules:[3,4,8],inclusive:!1},ID:{rules:[7,8,15],inclusive:!1},ALIAS:{rules:[7,8,16,17],inclusive:!1},LINE:{rules:[7,8,28],inclusive:!1},INITIAL:{rules:[0,5,6,8,9,10,11,12,13,14,18,19,20,21,22,23,24,25,26,27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,44,46,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67],inclusive:!0}}},t);function W(){this.yy={}}return Y.lexer=U,W.prototype=Y,Y.Parser=W,new W}();Qc.parser=Qc;const Jc=Qc,tu=t=>null!==t.match(/^\s*sequenceDiagram/);let eu,nu,ru,iu={},au=[],su=[],ou=!1;const lu=function(t,e,n,r){let i=ru;const a=iu[t];if(a){if(ru&&a.box&&ru!==a.box)throw new Error("A same participant should only be defined in one Box: "+a.name+" can't be in '"+a.box.name+"' and in '"+ru.name+"' at the same time.");if(i=a.box?a.box:ru,a.box=i,a&&e===a.name&&null==n)return}null!=n&&null!=n.text||(n={text:e,wrap:null,type:r}),null!=r&&null!=n.text||(n={text:e,wrap:null,type:r}),iu[t]={box:i,name:e,description:n.text,wrap:void 0===n.wrap&&hu()||!!n.wrap,prevActor:eu,links:{},properties:{},actorCnt:null,rectData:null,type:r||"participant"},eu&&iu[eu]&&(iu[eu].nextActor=t),ru&&ru.actorKeys.push(t),eu=t},cu=function(t,e,n={text:void 0,wrap:void 0},r){if(r===du.ACTIVE_END){const e=(t=>{let e,n=0;for(e=0;e<su.length;e++)su[e].type===du.ACTIVE_START&&su[e].from.actor===t&&n++,su[e].type===du.ACTIVE_END&&su[e].from.actor===t&&n--;return n})(t.actor);if(e<1){let e=new Error("Trying to inactivate an inactive participant ("+t.actor+")");throw e.hash={text:"->>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},e}}return su.push({from:t,to:e,message:n.text,wrap:void 0===n.wrap&&hu()||!!n.wrap,type:r}),!0},uu=function(t){return iu[t]},hu=()=>void 0!==nu?nu:dr().sequence.wrap,du={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31},pu=function(t,e,n){n.text,void 0===n.wrap&&hu()||n.wrap;const r=[].concat(t,t);su.push({from:r[0],to:r[1],message:n.text,wrap:void 0===n.wrap&&hu()||!!n.wrap,type:du.NOTE,placement:e})},fu=function(t,e){const n=uu(t);try{let t=Bt(e.text,dr());t=t.replace(/&/g,"&"),t=t.replace(/=/g,"=");mu(n,JSON.parse(t))}catch(r){It.error("error while parsing actor link text",r)}};function mu(t,e){if(null==t.links)t.links=e;else for(let n in e)t.links[n]=e[n]}const gu=function(t,e){const n=uu(t);try{let t=Bt(e.text,dr());yu(n,JSON.parse(t))}catch(r){It.error("error while parsing actor properties text",r)}};function yu(t,e){if(null==t.properties)t.properties=e;else for(let n in e)t.properties[n]=e[n]}const bu=function(t,e){const n=uu(t),r=document.getElementById(e.text);try{const t=r.innerHTML,e=JSON.parse(t);e.properties&&yu(n,e.properties),e.links&&mu(n,e.links)}catch(i){It.error("error while parsing actor details text",i)}},xu=function(t){if(Array.isArray(t))t.forEach((function(t){xu(t)}));else switch(t.type){case"sequenceIndex":su.push({from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":lu(t.actor,t.actor,t.description,"participant");break;case"addActor":lu(t.actor,t.actor,t.description,"actor");break;case"activeStart":case"activeEnd":cu(t.actor,void 0,void 0,t.signalType);break;case"addNote":pu(t.actor,t.placement,t.text);break;case"addLinks":fu(t.actor,t.text);break;case"addALink":!function(t,e){const n=uu(t);try{const t={};let s=Bt(e.text,dr());var r=s.indexOf("@");s=s.replace(/&/g,"&"),s=s.replace(/=/g,"=");var i=s.slice(0,r-1).trim(),a=s.slice(r+1).trim();t[i]=a,mu(n,t)}catch(s){It.error("error while parsing actor link text",s)}}(t.actor,t.text);break;case"addProperties":gu(t.actor,t.text);break;case"addDetails":bu(t.actor,t.text);break;case"addMessage":cu(t.from,t.to,t.msg,t.signalType);break;case"boxStart":e=t.boxData,au.push({name:e.text,wrap:void 0===e.wrap&&hu()||!!e.wrap,fill:e.color,actorKeys:[]}),ru=au.slice(-1)[0];break;case"boxEnd":ru=void 0;break;case"loopStart":cu(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":case"rectEnd":case"optEnd":case"altEnd":case"parEnd":case"criticalEnd":case"breakEnd":cu(void 0,void 0,void 0,t.signalType);break;case"rectStart":cu(void 0,void 0,t.color,t.signalType);break;case"optStart":cu(void 0,void 0,t.optText,t.signalType);break;case"altStart":case"else":cu(void 0,void 0,t.altText,t.signalType);break;case"setAccTitle":jr(t.text);break;case"parStart":case"and":cu(void 0,void 0,t.parText,t.signalType);break;case"criticalStart":cu(void 0,void 0,t.criticalText,t.signalType);break;case"option":cu(void 0,void 0,t.optionText,t.signalType);break;case"breakStart":cu(void 0,void 0,t.breakText,t.signalType)}var e},vu={addActor:lu,addMessage:function(t,e,n,r){su.push({from:t,to:e,message:n.text,wrap:void 0===n.wrap&&hu()||!!n.wrap,answer:r})},addSignal:cu,addLinks:fu,addDetails:bu,addProperties:gu,autoWrap:hu,setWrap:function(t){nu=t},enableSequenceNumbers:function(){ou=!0},disableSequenceNumbers:function(){ou=!1},showSequenceNumbers:()=>ou,getMessages:function(){return su},getActors:function(){return iu},getActor:uu,getActorKeys:function(){return Object.keys(iu)},getActorProperty:function(t,e){if(void 0!==t&&void 0!==t.properties)return t.properties[e]},getAccTitle:Pr,getBoxes:function(){return au},getDiagramTitle:Wr,setDiagramTitle:Ur,parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().sequence,clear:function(){iu={},au=[],su=[],ou=!1,Zr()},parseMessage:function(t){const e=t.trim(),n={text:e.replace(/^:?(?:no)?wrap:/,"").trim(),wrap:null!==e.match(/^:?wrap:/)||null===e.match(/^:?nowrap:/)&&void 0};return It.debug("parseMessage:",n),n},parseBoxData:function(t){const e=t.match(/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/);let n=null!=e&&e[1]?e[1].trim():"transparent",r=null!=e&&e[2]?e[2].trim():void 0;if(window&&window.CSS)window.CSS.supports("color",n)||(n="transparent",r=t.trim());else{const e=(new Option).style;e.color=n,e.color!==n&&(n="transparent",r=t.trim())}return{color:n,text:void 0!==r?Bt(r.replace(/^:?(?:no)?wrap:/,""),dr()):void 0,wrap:void 0!==r?null!==r.match(/^:?wrap:/)||null===r.match(/^:?nowrap:/)&&void 0:void 0}},LINETYPE:du,ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},addNote:pu,setAccTitle:jr,apply:xu,setAccDescription:zr,getAccDescription:Yr,hasAtLeastOneBox:function(){return au.length>0},hasAtLeastOneBoxWithTitle:function(){return au.some((t=>t.name))}};let _u=[];const ku=()=>{_u.forEach((t=>{t()})),_u=[]},Tu=function(t,e){const n=t.append("rect");return n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),void 0!==e.class&&n.attr("class",e.class),n},wu=(t,e)=>{var n;n=()=>{const n=document.querySelectorAll(t);0!==n.length&&(n[0].addEventListener("mouseover",(function(){Cu("actor"+e+"_popup")})),n[0].addEventListener("mouseout",(function(){Du("actor"+e+"_popup")})))},_u.push(n)},Su=function(t,e,n,r){const i=t.append("image");i.attr("x",e),i.attr("y",n);var a=(0,s.N)(r);i.attr("xlink:href",a)},Eu=function(t,e,n,r){const i=t.append("use");i.attr("x",e),i.attr("y",n);var a=(0,s.N)(r);i.attr("xlink:href","#"+a)},Cu=function(t){var e=document.getElementById(t);null!=e&&(e.style.display="block")},Du=function(t){var e=document.getElementById(t);null!=e&&(e.style.display="none")},Au=function(t,e){let n=0,r=0;const i=e.text.split(zt.lineBreakRegex),[a,s]=er(e.fontSize);let o=[],l=0,c=()=>e.y;if(void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0)switch(e.valign){case"top":case"start":c=()=>Math.round(e.y+e.textMargin);break;case"middle":case"center":c=()=>Math.round(e.y+(n+r+e.textMargin)/2);break;case"bottom":case"end":c=()=>Math.round(e.y+(n+r+2*e.textMargin)-e.textMargin)}if(void 0!==e.anchor&&void 0!==e.textMargin&&void 0!==e.width)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="middle",e.alignmentBaseline="middle"}for(let[u,h]of i.entries()){void 0!==e.textMargin&&0===e.textMargin&&void 0!==a&&(l=u*a);const i=t.append("text");if(i.attr("x",e.x),i.attr("y",c()),void 0!==e.anchor&&i.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),void 0!==e.fontFamily&&i.style("font-family",e.fontFamily),void 0!==s&&i.style("font-size",s),void 0!==e.fontWeight&&i.style("font-weight",e.fontWeight),void 0!==e.fill&&i.attr("fill",e.fill),void 0!==e.class&&i.attr("class",e.class),void 0!==e.dy?i.attr("dy",e.dy):0!==l&&i.attr("dy",l),e.tspan){const t=i.append("tspan");t.attr("x",e.x),void 0!==e.fill&&t.attr("fill",e.fill),t.text(h)}else i.text(h);void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0&&(r+=(i._groups||i)[0][0].getBBox().height,n=r),o.push(i)}return o},Ou=function(t,e){const n=t.append("polygon");var r,i,a,s,o;return n.attr("points",(r=e.x,i=e.y,a=e.width,s=e.height,r+","+i+" "+(r+a)+","+i+" "+(r+a)+","+(i+s-(o=7))+" "+(r+a-1.2*o)+","+(i+s)+" "+r+","+(i+s))),n.attr("class","labelBox"),e.y=e.y+e.height/2,Au(t,e),n};let Iu=-1;const Lu=(t,e)=>{t.selectAll&&t.selectAll(".actor-line").attr("class","200").attr("y2",e-55)},Nu=function(t,e){Tu(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"}).lower()},Mu=function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},Fu=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},Bu=function(){function t(t,e,n,i,a,s,o){r(e.append("text").attr("x",n+a/2).attr("y",i+s/2+5).style("text-anchor","middle").text(t),o)}function e(t,e,n,i,a,s,o,l){const{actorFontSize:c,actorFontFamily:u,actorFontWeight:h}=l,[d,p]=er(c),f=t.split(zt.lineBreakRegex);for(let m=0;m<f.length;m++){const t=m*d-d*(f.length-1)/2,l=e.append("text").attr("x",n+a/2).attr("y",i).style("text-anchor","middle").style("font-size",p).style("font-weight",h).style("font-family",u);l.append("tspan").attr("x",n+a/2).attr("dy",t).text(f[m]),l.attr("y",i+s/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),r(l,o)}}function n(t,n,i,a,s,o,l,c){const u=n.append("switch"),h=u.append("foreignObject").attr("x",i).attr("y",a).attr("width",s).attr("height",o).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");h.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,u,i,a,s,o,l,c),r(h,l)}function r(t,e){for(const n in e)e.hasOwnProperty(n)&&t.attr(n,e[n])}return function(r){return"fo"===r.textPlacement?n:"old"===r.textPlacement?t:e}}(),Ru=function(){function t(t,e,n,i,a,s,o){r(e.append("text").attr("x",n).attr("y",i).style("text-anchor","start").text(t),o)}function e(t,e,n,i,a,s,o,l){const{actorFontSize:c,actorFontFamily:u,actorFontWeight:h}=l,d=t.split(zt.lineBreakRegex);for(let p=0;p<d.length;p++){const t=p*c-c*(d.length-1)/2,a=e.append("text").attr("x",n).attr("y",i).style("text-anchor","start").style("font-size",c).style("font-weight",h).style("font-family",u);a.append("tspan").attr("x",n).attr("dy",t).text(d[p]),a.attr("y",i+s/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),r(a,o)}}function n(t,n,i,a,s,o,l,c){const u=n.append("switch"),h=u.append("foreignObject").attr("x",i).attr("y",a).attr("width",s).attr("height",o).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");h.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,u,i,a,0,o,l,c),r(h,l)}function r(t,e){for(const n in e)e.hasOwnProperty(n)&&t.attr(n,e[n])}return function(r){return"fo"===r.textPlacement?n:"old"===r.textPlacement?t:e}}(),$u={drawRect:Tu,drawText:Au,drawLabel:Ou,drawActor:function(t,e,n,r){switch(e.type){case"actor":return function(t,e,n,r){const i=e.x+e.width/2,a=e.y+80;r||(Iu++,t.append("line").attr("id","actor"+Iu).attr("x1",i).attr("y1",a).attr("x2",i).attr("y2",2e3).attr("class","actor-line").attr("stroke-width","0.5px").attr("stroke","#999"));const s=t.append("g");s.attr("class","actor-man");const o=Fu();o.x=e.x,o.y=e.y,o.fill="#eaeaea",o.width=e.width,o.height=e.height,o.class="actor",o.rx=3,o.ry=3,s.append("line").attr("id","actor-man-torso"+Iu).attr("x1",i).attr("y1",e.y+25).attr("x2",i).attr("y2",e.y+45),s.append("line").attr("id","actor-man-arms"+Iu).attr("x1",i-18).attr("y1",e.y+33).attr("x2",i+18).attr("y2",e.y+33),s.append("line").attr("x1",i-18).attr("y1",e.y+60).attr("x2",i).attr("y2",e.y+45),s.append("line").attr("x1",i).attr("y1",e.y+45).attr("x2",i+16).attr("y2",e.y+60);const l=s.append("circle");l.attr("cx",e.x+e.width/2),l.attr("cy",e.y+10),l.attr("r",15),l.attr("width",e.width),l.attr("height",e.height);const c=s.node().getBBox();return e.height=c.height,Bu(n)(e.description,s,o.x,o.y+35,o.width,o.height,{class:"actor"},n),e.height}(t,e,n,r);case"participant":return function(t,e,n,r){const i=e.x+e.width/2,a=e.y+5,s=t.append("g");var o=s;r||(Iu++,o.append("line").attr("id","actor"+Iu).attr("x1",i).attr("y1",a).attr("x2",i).attr("y2",2e3).attr("class","actor-line").attr("stroke-width","0.5px").attr("stroke","#999"),o=s.append("g"),e.actorCnt=Iu,null!=e.links&&(o.attr("id","root-"+Iu),wu("#root-"+Iu,Iu)));const l=Fu();var c="actor";null!=e.properties&&e.properties.class?c=e.properties.class:l.fill="#eaeaea",l.x=e.x,l.y=e.y,l.width=e.width,l.height=e.height,l.class=c,l.rx=3,l.ry=3;const u=Tu(o,l);if(e.rectData=l,null!=e.properties&&e.properties.icon){const t=e.properties.icon.trim();"@"===t.charAt(0)?Eu(o,l.x+l.width-20,l.y+10,t.substr(1)):Su(o,l.x+l.width-20,l.y+10,t)}Bu(n)(e.description,o,l.x,l.y,l.width,l.height,{class:"actor"},n);let h=e.height;if(u.node){const t=u.node().getBBox();e.height=t.height,h=t.height}return h}(t,e,n,r)}},drawBox:function(t,e,n){const r=t.append("g");Nu(r,e),e.name&&Bu(n)(e.name,r,e.x,e.y+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},n),r.lower()},drawPopup:function(t,e,n,r,i){if(void 0===e.links||null===e.links||0===Object.keys(e.links).length)return{height:0,width:0};const a=e.links,o=e.actorCnt,l=e.rectData;var c="none";i&&(c="block !important");const u=t.append("g");u.attr("id","actor"+o+"_popup"),u.attr("class","actorPopupMenu"),u.attr("display",c),wu("#actor"+o+"_popup",o);var h="";void 0!==l.class&&(h=" "+l.class);let d=l.width>n?l.width:n;const p=u.append("rect");if(p.attr("class","actorPopupMenuPanel"+h),p.attr("x",l.x),p.attr("y",l.height),p.attr("fill",l.fill),p.attr("stroke",l.stroke),p.attr("width",d),p.attr("height",l.height),p.attr("rx",l.rx),p.attr("ry",l.ry),null!=a){var f=20;for(let t in a){var m=u.append("a"),g=(0,s.N)(a[t]);m.attr("xlink:href",g),m.attr("target","_blank"),Ru(r)(t,m,l.x+10,l.height+f,d,20,{class:"actor"},r),f+=30}}return p.attr("height",f),{height:l.height+f,width:d}},drawImage:Su,drawEmbeddedImage:Eu,anchorElement:function(t){return t.append("g")},drawActivation:function(t,e,n,r,i){const a=Fu(),s=e.anchored;a.x=e.startx,a.y=e.starty,a.class="activation"+i%3,a.width=e.stopx-e.startx,a.height=n-e.starty,Tu(s,a)},drawLoop:function(t,e,n,r){const{boxMargin:i,boxTextMargin:a,labelBoxHeight:s,labelBoxWidth:o,messageFontFamily:l,messageFontSize:c,messageFontWeight:u}=r,h=t.append("g"),d=function(t,e,n,r){return h.append("line").attr("x1",t).attr("y1",e).attr("x2",n).attr("y2",r).attr("class","loopLine")};d(e.startx,e.starty,e.stopx,e.starty),d(e.stopx,e.starty,e.stopx,e.stopy),d(e.startx,e.stopy,e.stopx,e.stopy),d(e.startx,e.starty,e.startx,e.stopy),void 0!==e.sections&&e.sections.forEach((function(t){d(e.startx,t.y,e.stopx,t.y).style("stroke-dasharray","3, 3")}));let p=Mu();p.text=n,p.x=e.startx,p.y=e.starty,p.fontFamily=l,p.fontSize=c,p.fontWeight=u,p.anchor="middle",p.valign="middle",p.tspan=!1,p.width=o||50,p.height=s||20,p.textMargin=a,p.class="labelText",Ou(h,p),p=Mu(),p.text=e.title,p.x=e.startx+o/2+(e.stopx-e.startx)/2,p.y=e.starty+i+a,p.anchor="middle",p.valign="middle",p.textMargin=a,p.class="loopText",p.fontFamily=l,p.fontSize=c,p.fontWeight=u,p.wrap=!0;let f=Au(h,p);return void 0!==e.sectionTitles&&e.sectionTitles.forEach((function(t,n){if(t.message){p.text=t.message,p.x=e.startx+(e.stopx-e.startx)/2,p.y=e.sections[n].y+i+a,p.class="loopText",p.anchor="middle",p.valign="middle",p.tspan=!1,p.fontFamily=l,p.fontSize=c,p.fontWeight=u,p.wrap=e.wrap,f=Au(h,p);let r=Math.round(f.map((t=>(t._groups||t)[0][0].getBBox().height)).reduce(((t,e)=>t+e)));e.sections[n].height+=r-(i+a)}})),e.height=Math.round(e.stopy-e.starty),h},drawBackgroundRect:Nu,insertArrowHead:function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},insertArrowFilledHead:function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},insertSequenceNumber:function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},insertArrowCrossHead:function(t){t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},insertDatabaseIcon:function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},insertComputerIcon:function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},insertClockIcon:function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},getTextObj:Mu,getNoteRect:Fu,popupMenu:function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = 'block'; }"},popdownMenu:function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = 'none'; }"},fixLifeLineHeights:Lu,sanitizeUrl:s.N};let Zu={};const ju={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:function(){return Math.max.apply(null,0===this.actors.length?[0]:this.actors.map((t=>t.height||0)))+(0===this.loops.length?0:this.loops.map((t=>t.height||0)).reduce(((t,e)=>t+e)))+(0===this.messages.length?0:this.messages.map((t=>t.height||0)).reduce(((t,e)=>t+e)))+(0===this.notes.length?0:this.notes.map((t=>t.height||0)).reduce(((t,e)=>t+e)))},clear:function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},addBox:function(t){this.boxes.push(t)},addActor:function(t){this.actors.push(t)},addLoop:function(t){this.loops.push(t)},addMessage:function(t){this.messages.push(t)},addNote:function(t){this.notes.push(t)},lastActor:function(){return this.actors[this.actors.length-1]},lastLoop:function(){return this.loops[this.loops.length-1]},lastMessage:function(){return this.messages[this.messages.length-1]},lastNote:function(){return this.notes[this.notes.length-1]},actors:[],boxes:[],loops:[],messages:[],notes:[]},init:function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,Hu(dr())},updateVal:function(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])},updateBounds:function(t,e,n,r){const i=this;let a=0;function s(s){return function(o){a++;const l=i.sequenceItems.length-a+1;i.updateVal(o,"starty",e-l*Zu.boxMargin,Math.min),i.updateVal(o,"stopy",r+l*Zu.boxMargin,Math.max),i.updateVal(ju.data,"startx",t-l*Zu.boxMargin,Math.min),i.updateVal(ju.data,"stopx",n+l*Zu.boxMargin,Math.max),"activation"!==s&&(i.updateVal(o,"startx",t-l*Zu.boxMargin,Math.min),i.updateVal(o,"stopx",n+l*Zu.boxMargin,Math.max),i.updateVal(ju.data,"starty",e-l*Zu.boxMargin,Math.min),i.updateVal(ju.data,"stopy",r+l*Zu.boxMargin,Math.max))}}this.sequenceItems.forEach(s()),this.activations.forEach(s("activation"))},insert:function(t,e,n,r){const i=Math.min(t,n),a=Math.max(t,n),s=Math.min(e,r),o=Math.max(e,r);this.updateVal(ju.data,"startx",i,Math.min),this.updateVal(ju.data,"starty",s,Math.min),this.updateVal(ju.data,"stopx",a,Math.max),this.updateVal(ju.data,"stopy",o,Math.max),this.updateBounds(i,s,a,o)},newActivation:function(t,e,n){const r=n[t.from.actor],i=qu(t.from.actor).length||0,a=r.x+r.width/2+(i-1)*Zu.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+Zu.activationWidth,stopy:void 0,actor:t.from.actor,anchored:$u.anchorElement(e)})},endActivation:function(t){const e=this.activations.map((function(t){return t.actor})).lastIndexOf(t.from.actor);return this.activations.splice(e,1)[0]},createLoop:function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},newLoop:function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},endLoop:function(){return this.sequenceItems.pop()},addSectionToLoop:function(t){const e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:ju.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return{bounds:this.data,models:this.models}}},Pu=t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),zu=t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),Yu=t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight});const Uu=function(t,e,n,r,i,a,s){if(!0===i.hideUnusedParticipants){const t=new Set;a.forEach((e=>{t.add(e.from),t.add(e.to)})),n=n.filter((e=>t.has(e)))}let o,l=0,c=0,u=0;for(const h of n){const n=e[h],i=n.box;o&&o!=i&&(s||ju.models.addBox(o),c+=Zu.boxMargin+o.margin),i&&i!=o&&(s||(i.x=l+c,i.y=r),c+=i.margin),n.width=n.width||Zu.width,n.height=Math.max(n.height||Zu.height,Zu.height),n.margin=n.margin||Zu.actorMargin,n.x=l+c,n.y=ju.getVerticalPos();const a=$u.drawActor(t,n,Zu,s);u=Math.max(u,a),ju.insert(n.x,r,n.x+n.width,n.height),l+=n.width+c,n.box&&(n.box.width=l+i.margin-n.box.x),c=n.margin,o=n.box,ju.models.addActor(n)}o&&!s&&ju.models.addBox(o),ju.bumpVerticalPos(u)},Wu=function(t,e,n,r){let i=0,a=0;for(const s of n){const n=e[s],o=Xu(n),l=$u.drawPopup(t,n,o,Zu,Zu.forceMenus,r);l.height>i&&(i=l.height),l.width+n.x>a&&(a=l.width+n.x)}return{maxHeight:i,maxWidth:a}},Hu=function(t){Mn(Zu,t),t.fontFamily&&(Zu.actorFontFamily=Zu.noteFontFamily=Zu.messageFontFamily=t.fontFamily),t.fontSize&&(Zu.actorFontSize=Zu.noteFontSize=Zu.messageFontSize=t.fontSize),t.fontWeight&&(Zu.actorFontWeight=Zu.noteFontWeight=Zu.messageFontWeight=t.fontWeight)},qu=function(t){return ju.activations.filter((function(e){return e.actor===t}))},Vu=function(t,e){const n=e[t],r=qu(t);return[r.reduce((function(t,e){return Math.min(t,e.startx)}),n.x+n.width/2),r.reduce((function(t,e){return Math.max(t,e.stopx)}),n.x+n.width/2)]};function Gu(t,e,n,r,i){ju.bumpVerticalPos(n);let a=r;if(e.id&&e.message&&t[e.id]){const n=t[e.id].width,i=Pu(Zu);e.message=nr.wrapLabel(`[${e.message}]`,n-2*Zu.wrapPadding,i),e.width=n,e.wrap=!0;const s=nr.calculateTextDimensions(e.message,i),o=Math.max(s.height,Zu.labelBoxHeight);a=r+o,It.debug(`${o} - ${e.message}`)}i(e),ju.bumpVerticalPos(a)}const Xu=function(t){let e=0;const n=Yu(Zu);for(const r in t.links){const t=nr.calculateTextDimensions(r,n).width+2*Zu.wrapPadding+2*Zu.boxMargin;e<t&&(e=t)}return e};const Ku=function(t,e,n,r){const i={},a=[];let s,o,l;return t.forEach((function(t){switch(t.id=nr.random({length:10}),t.type){case r.db.LINETYPE.LOOP_START:case r.db.LINETYPE.ALT_START:case r.db.LINETYPE.OPT_START:case r.db.LINETYPE.PAR_START:case r.db.LINETYPE.CRITICAL_START:case r.db.LINETYPE.BREAK_START:a.push({id:t.id,msg:t.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case r.db.LINETYPE.ALT_ELSE:case r.db.LINETYPE.PAR_AND:case r.db.LINETYPE.CRITICAL_OPTION:t.message&&(s=a.pop(),i[s.id]=s,i[t.id]=s,a.push(s));break;case r.db.LINETYPE.LOOP_END:case r.db.LINETYPE.ALT_END:case r.db.LINETYPE.OPT_END:case r.db.LINETYPE.PAR_END:case r.db.LINETYPE.CRITICAL_END:case r.db.LINETYPE.BREAK_END:s=a.pop(),i[s.id]=s;break;case r.db.LINETYPE.ACTIVE_START:{const n=e[t.from?t.from.actor:t.to.actor],r=qu(t.from?t.from.actor:t.to.actor).length,i=n.x+n.width/2+(r-1)*Zu.activationWidth/2,a={startx:i,stopx:i+Zu.activationWidth,actor:t.from.actor,enabled:!0};ju.activations.push(a)}break;case r.db.LINETYPE.ACTIVE_END:{const e=ju.activations.map((t=>t.actor)).lastIndexOf(t.from.actor);delete ju.activations.splice(e,1)[0]}}void 0!==t.placement?(o=function(t,e,n){const r=e[t.from].x,i=e[t.to].x,a=t.wrap&&t.message;let s=nr.calculateTextDimensions(a?nr.wrapLabel(t.message,Zu.width,zu(Zu)):t.message,zu(Zu));const o={width:a?Zu.width:Math.max(Zu.width,s.width+2*Zu.noteMargin),height:0,startx:e[t.from].x,stopx:0,starty:0,stopy:0,message:t.message};return t.placement===n.db.PLACEMENT.RIGHTOF?(o.width=a?Math.max(Zu.width,s.width):Math.max(e[t.from].width/2+e[t.to].width/2,s.width+2*Zu.noteMargin),o.startx=r+(e[t.from].width+Zu.actorMargin)/2):t.placement===n.db.PLACEMENT.LEFTOF?(o.width=a?Math.max(Zu.width,s.width+2*Zu.noteMargin):Math.max(e[t.from].width/2+e[t.to].width/2,s.width+2*Zu.noteMargin),o.startx=r-o.width+(e[t.from].width-Zu.actorMargin)/2):t.to===t.from?(s=nr.calculateTextDimensions(a?nr.wrapLabel(t.message,Math.max(Zu.width,e[t.from].width),zu(Zu)):t.message,zu(Zu)),o.width=a?Math.max(Zu.width,e[t.from].width):Math.max(e[t.from].width,Zu.width,s.width+2*Zu.noteMargin),o.startx=r+(e[t.from].width-o.width)/2):(o.width=Math.abs(r+e[t.from].width/2-(i+e[t.to].width/2))+Zu.actorMargin,o.startx=r<i?r+e[t.from].width/2-Zu.actorMargin/2:i+e[t.to].width/2-Zu.actorMargin/2),a&&(o.message=nr.wrapLabel(t.message,o.width-2*Zu.wrapPadding,zu(Zu))),It.debug(`NM:[${o.startx},${o.stopx},${o.starty},${o.stopy}:${o.width},${o.height}=${t.message}]`),o}(t,e,r),t.noteModel=o,a.forEach((t=>{s=t,s.from=Math.min(s.from,o.startx),s.to=Math.max(s.to,o.startx+o.width),s.width=Math.max(s.width,Math.abs(s.from-s.to))-Zu.labelBoxWidth}))):(l=function(t,e,n){let r=!1;if([n.db.LINETYPE.SOLID_OPEN,n.db.LINETYPE.DOTTED_OPEN,n.db.LINETYPE.SOLID,n.db.LINETYPE.DOTTED,n.db.LINETYPE.SOLID_CROSS,n.db.LINETYPE.DOTTED_CROSS,n.db.LINETYPE.SOLID_POINT,n.db.LINETYPE.DOTTED_POINT].includes(t.type)&&(r=!0),!r)return{};const i=Vu(t.from,e),a=Vu(t.to,e),s=i[0]<=a[0]?1:0,o=i[0]<a[0]?0:1,l=[...i,...a],c=Math.abs(a[o]-i[s]);t.wrap&&t.message&&(t.message=nr.wrapLabel(t.message,Math.max(c+2*Zu.wrapPadding,Zu.width),Pu(Zu)));const u=nr.calculateTextDimensions(t.message,Pu(Zu));return{width:Math.max(t.wrap?0:u.width+2*Zu.wrapPadding,c+2*Zu.wrapPadding,Zu.width),height:0,startx:i[s],stopx:a[o],starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,l),toBounds:Math.max.apply(null,l)}}(t,e,r),t.msgModel=l,l.startx&&l.stopx&&a.length>0&&a.forEach((n=>{if(s=n,l.startx===l.stopx){const n=e[t.from],r=e[t.to];s.from=Math.min(n.x-l.width/2,n.x-n.width/2,s.from),s.to=Math.max(r.x+l.width/2,r.x+n.width/2,s.to),s.width=Math.max(s.width,Math.abs(s.to-s.from))-Zu.labelBoxWidth}else s.from=Math.min(l.startx,s.from),s.to=Math.max(l.stopx,s.to),s.width=Math.max(s.width,l.width)-Zu.labelBoxWidth})))})),ju.activations=[],It.debug("Loop type widths:",i),i},Qu={bounds:ju,drawActors:Uu,drawActorsPopup:Wu,setConf:Hu,draw:function(t,e,n,r){const{securityLevel:i,sequence:a}=dr();let s;Zu=a,r.db.clear(),r.parser.parse(t),"sandbox"===i&&(s=(0,o.Ys)("#i"+e));const l="sandbox"===i?(0,o.Ys)(s.nodes()[0].contentDocument.body):(0,o.Ys)("body"),c="sandbox"===i?s.nodes()[0].contentDocument:document;ju.init(),It.debug(r.db);const u="sandbox"===i?l.select(`[id="${e}"]`):(0,o.Ys)(`[id="${e}"]`),h=r.db.getActors(),d=r.db.getBoxes(),p=r.db.getActorKeys(),f=r.db.getMessages(),m=r.db.getDiagramTitle(),g=r.db.hasAtLeastOneBox(),y=r.db.hasAtLeastOneBoxWithTitle(),b=function(t,e,n){const r={};return e.forEach((function(e){if(t[e.to]&&t[e.from]){const i=t[e.to];if(e.placement===n.db.PLACEMENT.LEFTOF&&!i.prevActor)return;if(e.placement===n.db.PLACEMENT.RIGHTOF&&!i.nextActor)return;const a=void 0!==e.placement,s=!a,o=a?zu(Zu):Pu(Zu),l=e.wrap?nr.wrapLabel(e.message,Zu.width-2*Zu.wrapPadding,o):e.message,c=nr.calculateTextDimensions(l,o).width+2*Zu.wrapPadding;s&&e.from===i.nextActor?r[e.to]=Math.max(r[e.to]||0,c):s&&e.from===i.prevActor?r[e.from]=Math.max(r[e.from]||0,c):s&&e.from===e.to?(r[e.from]=Math.max(r[e.from]||0,c/2),r[e.to]=Math.max(r[e.to]||0,c/2)):e.placement===n.db.PLACEMENT.RIGHTOF?r[e.from]=Math.max(r[e.from]||0,c):e.placement===n.db.PLACEMENT.LEFTOF?r[i.prevActor]=Math.max(r[i.prevActor]||0,c):e.placement===n.db.PLACEMENT.OVER&&(i.prevActor&&(r[i.prevActor]=Math.max(r[i.prevActor]||0,c/2)),i.nextActor&&(r[e.from]=Math.max(r[e.from]||0,c/2)))}})),It.debug("maxMessageWidthPerActor:",r),r}(h,f,r);Zu.height=function(t,e,n){let r=0;Object.keys(t).forEach((e=>{const n=t[e];n.wrap&&(n.description=nr.wrapLabel(n.description,Zu.width-2*Zu.wrapPadding,Yu(Zu)));const i=nr.calculateTextDimensions(n.description,Yu(Zu));n.width=n.wrap?Zu.width:Math.max(Zu.width,i.width+2*Zu.wrapPadding),n.height=n.wrap?Math.max(i.height,Zu.height):Zu.height,r=Math.max(r,n.height)}));for(const a in e){const n=t[a];if(!n)continue;const r=t[n.nextActor];if(!r){const t=e[a]+Zu.actorMargin-n.width/2;n.margin=Math.max(t,Zu.actorMargin);continue}const i=e[a]+Zu.actorMargin-n.width/2-r.width/2;n.margin=Math.max(i,Zu.actorMargin)}let i=0;return n.forEach((e=>{const n=Pu(Zu);let r=e.actorKeys.reduce(((e,n)=>e+(t[n].width+(t[n].margin||0))),0);r-=2*Zu.boxTextMargin,e.wrap&&(e.name=nr.wrapLabel(e.name,r-2*Zu.wrapPadding,n));const a=nr.calculateTextDimensions(e.name,n);i=Math.max(a.height,i);const s=Math.max(r,a.width+2*Zu.wrapPadding);if(e.margin=Zu.boxTextMargin,r<s){const t=(s-r)/2;e.margin+=t}})),n.forEach((t=>t.textMaxHeight=i)),Math.max(r,Zu.height)}(h,b,d),$u.insertComputerIcon(u),$u.insertDatabaseIcon(u),$u.insertClockIcon(u),g&&(ju.bumpVerticalPos(Zu.boxMargin),y&&ju.bumpVerticalPos(d[0].textMaxHeight)),Uu(u,h,p,0,Zu,f,!1);const x=Ku(f,h,b,r);$u.insertArrowHead(u),$u.insertArrowCrossHead(u),$u.insertArrowFilledHead(u),$u.insertSequenceNumber(u);let v=1,_=1;const k=[];f.forEach((function(t){let e,n,i;switch(t.type){case r.db.LINETYPE.NOTE:n=t.noteModel,function(t,e){ju.bumpVerticalPos(Zu.boxMargin),e.height=Zu.boxMargin,e.starty=ju.getVerticalPos();const n=$u.getNoteRect();n.x=e.startx,n.y=e.starty,n.width=e.width||Zu.width,n.class="note";const r=t.append("g"),i=$u.drawRect(r,n),a=$u.getTextObj();a.x=e.startx,a.y=e.starty,a.width=n.width,a.dy="1em",a.text=e.message,a.class="noteText",a.fontFamily=Zu.noteFontFamily,a.fontSize=Zu.noteFontSize,a.fontWeight=Zu.noteFontWeight,a.anchor=Zu.noteAlign,a.textMargin=Zu.noteMargin,a.valign="center";const s=Au(r,a),o=Math.round(s.map((t=>(t._groups||t)[0][0].getBBox().height)).reduce(((t,e)=>t+e)));i.attr("height",o+2*Zu.noteMargin),e.height+=o+2*Zu.noteMargin,ju.bumpVerticalPos(o+2*Zu.noteMargin),e.stopy=e.starty+o+2*Zu.noteMargin,e.stopx=e.startx+n.width,ju.insert(e.startx,e.starty,e.stopx,e.stopy),ju.models.addNote(e)}(u,n);break;case r.db.LINETYPE.ACTIVE_START:ju.newActivation(t,u,h);break;case r.db.LINETYPE.ACTIVE_END:!function(t,e){const n=ju.endActivation(t);n.starty+18>e&&(n.starty=e-6,e+=12),$u.drawActivation(u,n,e,Zu,qu(t.from.actor).length),ju.insert(n.startx,e-10,n.stopx,e)}(t,ju.getVerticalPos());break;case r.db.LINETYPE.LOOP_START:Gu(x,t,Zu.boxMargin,Zu.boxMargin+Zu.boxTextMargin,(t=>ju.newLoop(t)));break;case r.db.LINETYPE.LOOP_END:e=ju.endLoop(),$u.drawLoop(u,e,"loop",Zu),ju.bumpVerticalPos(e.stopy-ju.getVerticalPos()),ju.models.addLoop(e);break;case r.db.LINETYPE.RECT_START:Gu(x,t,Zu.boxMargin,Zu.boxMargin,(t=>ju.newLoop(void 0,t.message)));break;case r.db.LINETYPE.RECT_END:e=ju.endLoop(),$u.drawBackgroundRect(u,e),ju.models.addLoop(e),ju.bumpVerticalPos(e.stopy-ju.getVerticalPos());break;case r.db.LINETYPE.OPT_START:Gu(x,t,Zu.boxMargin,Zu.boxMargin+Zu.boxTextMargin,(t=>ju.newLoop(t)));break;case r.db.LINETYPE.OPT_END:e=ju.endLoop(),$u.drawLoop(u,e,"opt",Zu),ju.bumpVerticalPos(e.stopy-ju.getVerticalPos()),ju.models.addLoop(e);break;case r.db.LINETYPE.ALT_START:Gu(x,t,Zu.boxMargin,Zu.boxMargin+Zu.boxTextMargin,(t=>ju.newLoop(t)));break;case r.db.LINETYPE.ALT_ELSE:Gu(x,t,Zu.boxMargin+Zu.boxTextMargin,Zu.boxMargin,(t=>ju.addSectionToLoop(t)));break;case r.db.LINETYPE.ALT_END:e=ju.endLoop(),$u.drawLoop(u,e,"alt",Zu),ju.bumpVerticalPos(e.stopy-ju.getVerticalPos()),ju.models.addLoop(e);break;case r.db.LINETYPE.PAR_START:Gu(x,t,Zu.boxMargin,Zu.boxMargin+Zu.boxTextMargin,(t=>ju.newLoop(t)));break;case r.db.LINETYPE.PAR_AND:Gu(x,t,Zu.boxMargin+Zu.boxTextMargin,Zu.boxMargin,(t=>ju.addSectionToLoop(t)));break;case r.db.LINETYPE.PAR_END:e=ju.endLoop(),$u.drawLoop(u,e,"par",Zu),ju.bumpVerticalPos(e.stopy-ju.getVerticalPos()),ju.models.addLoop(e);break;case r.db.LINETYPE.AUTONUMBER:v=t.message.start||v,_=t.message.step||_,t.message.visible?r.db.enableSequenceNumbers():r.db.disableSequenceNumbers();break;case r.db.LINETYPE.CRITICAL_START:Gu(x,t,Zu.boxMargin,Zu.boxMargin+Zu.boxTextMargin,(t=>ju.newLoop(t)));break;case r.db.LINETYPE.CRITICAL_OPTION:Gu(x,t,Zu.boxMargin+Zu.boxTextMargin,Zu.boxMargin,(t=>ju.addSectionToLoop(t)));break;case r.db.LINETYPE.CRITICAL_END:e=ju.endLoop(),$u.drawLoop(u,e,"critical",Zu),ju.bumpVerticalPos(e.stopy-ju.getVerticalPos()),ju.models.addLoop(e);break;case r.db.LINETYPE.BREAK_START:Gu(x,t,Zu.boxMargin,Zu.boxMargin+Zu.boxTextMargin,(t=>ju.newLoop(t)));break;case r.db.LINETYPE.BREAK_END:e=ju.endLoop(),$u.drawLoop(u,e,"break",Zu),ju.bumpVerticalPos(e.stopy-ju.getVerticalPos()),ju.models.addLoop(e);break;default:try{i=t.msgModel,i.starty=ju.getVerticalPos(),i.sequenceIndex=v,i.sequenceVisible=r.db.showSequenceNumbers();const e=function(t,e){ju.bumpVerticalPos(10);const{startx:n,stopx:r,message:i}=e,a=zt.splitBreaks(i).length,s=nr.calculateTextDimensions(i,Pu(Zu)),o=s.height/a;let l;e.height+=o,ju.bumpVerticalPos(o);let c=s.height-10;const u=s.width;if(n===r){l=ju.getVerticalPos()+c,Zu.rightAngles||(c+=Zu.boxMargin,l=ju.getVerticalPos()+c),c+=30;const t=Math.max(u/2,Zu.width/2);ju.insert(n-t,ju.getVerticalPos()-10+c,r+t,ju.getVerticalPos()+30+c)}else c+=Zu.boxMargin,l=ju.getVerticalPos()+c,ju.insert(n,l-10,r,l);return ju.bumpVerticalPos(c),e.height+=c,e.stopy=e.starty+e.height,ju.insert(e.fromBounds,e.starty,e.toBounds,e.stopy),l}(0,i);k.push({messageModel:i,lineStartY:e}),ju.models.addMessage(i)}catch(a){It.error("error while drawing message",a)}}[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN,r.db.LINETYPE.SOLID,r.db.LINETYPE.DOTTED,r.db.LINETYPE.SOLID_CROSS,r.db.LINETYPE.DOTTED_CROSS,r.db.LINETYPE.SOLID_POINT,r.db.LINETYPE.DOTTED_POINT].includes(t.type)&&(v+=_)})),k.forEach((t=>function(t,e,n,r){const{startx:i,stopx:a,starty:s,message:o,type:l,sequenceIndex:c,sequenceVisible:u}=e,h=nr.calculateTextDimensions(o,Pu(Zu)),d=$u.getTextObj();d.x=i,d.y=s+10,d.width=a-i,d.class="messageText",d.dy="1em",d.text=o,d.fontFamily=Zu.messageFontFamily,d.fontSize=Zu.messageFontSize,d.fontWeight=Zu.messageFontWeight,d.anchor=Zu.messageAlign,d.valign="center",d.textMargin=Zu.wrapPadding,d.tspan=!1,Au(t,d);const p=h.width;let f;i===a?f=Zu.rightAngles?t.append("path").attr("d",`M ${i},${n} H ${i+Math.max(Zu.width/2,p/2)} V ${n+25} H ${i}`):t.append("path").attr("d","M "+i+","+n+" C "+(i+60)+","+(n-10)+" "+(i+60)+","+(n+30)+" "+i+","+(n+20)):(f=t.append("line"),f.attr("x1",i),f.attr("y1",n),f.attr("x2",a),f.attr("y2",n)),l===r.db.LINETYPE.DOTTED||l===r.db.LINETYPE.DOTTED_CROSS||l===r.db.LINETYPE.DOTTED_POINT||l===r.db.LINETYPE.DOTTED_OPEN?(f.style("stroke-dasharray","3, 3"),f.attr("class","messageLine1")):f.attr("class","messageLine0");let m="";Zu.arrowMarkerAbsolute&&(m=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,m=m.replace(/\(/g,"\\("),m=m.replace(/\)/g,"\\)")),f.attr("stroke-width",2),f.attr("stroke","none"),f.style("fill","none"),l!==r.db.LINETYPE.SOLID&&l!==r.db.LINETYPE.DOTTED||f.attr("marker-end","url("+m+"#arrowhead)"),l!==r.db.LINETYPE.SOLID_POINT&&l!==r.db.LINETYPE.DOTTED_POINT||f.attr("marker-end","url("+m+"#filled-head)"),l!==r.db.LINETYPE.SOLID_CROSS&&l!==r.db.LINETYPE.DOTTED_CROSS||f.attr("marker-end","url("+m+"#crosshead)"),(u||Zu.showSequenceNumbers)&&(f.attr("marker-start","url("+m+"#sequencenumber)"),t.append("text").attr("x",i).attr("y",n+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(c))}(u,t.messageModel,t.lineStartY,r))),Zu.mirrorActors&&(ju.bumpVerticalPos(2*Zu.boxMargin),Uu(u,h,p,ju.getVerticalPos(),Zu,f,!0),ju.bumpVerticalPos(Zu.boxMargin),Lu(u,ju.getVerticalPos())),ju.models.boxes.forEach((function(t){t.height=ju.getVerticalPos()-t.y,ju.insert(t.x,t.y,t.x+t.width,t.height),t.startx=t.x,t.starty=t.y,t.stopx=t.startx+t.width,t.stopy=t.starty+t.height,t.stroke="rgb(0,0,0, 0.5)",$u.drawBox(u,t,Zu)})),g&&ju.bumpVerticalPos(Zu.boxMargin);const T=Wu(u,h,p,c),{bounds:w}=ju.getBounds();It.debug("For line height fix Querying: #"+e+" .actor-line");(0,o.td_)("#"+e+" .actor-line").attr("y2",w.stopy);let S=w.stopy-w.starty;S<T.maxHeight&&(S=T.maxHeight);let E=S+2*Zu.diagramMarginY;Zu.mirrorActors&&(E=E-Zu.boxMargin+Zu.bottomMarginAdj);let C=w.stopx-w.startx;C<T.maxWidth&&(C=T.maxWidth);const D=C+2*Zu.diagramMarginX;m&&u.append("text").text(m).attr("x",(w.stopx-w.startx)/2-2*Zu.diagramMarginX).attr("y",-25),xr(u,E,D,Zu.useMaxWidth);const A=m?40:0;u.attr("viewBox",w.startx-Zu.diagramMarginX+" -"+(Zu.diagramMarginY+A)+" "+D+" "+(E+A)),It.debug("models:",ju.models)}};var Ju=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,2],r=[1,3],i=[1,5],a=[1,7],s=[2,5],o=[1,15],l=[1,17],c=[1,21],u=[1,22],h=[1,23],d=[1,24],p=[1,37],f=[1,25],m=[1,26],g=[1,27],y=[1,28],b=[1,29],x=[1,32],v=[1,33],_=[1,34],k=[1,35],T=[1,36],w=[1,39],S=[1,40],E=[1,41],C=[1,42],D=[1,38],A=[1,45],O=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],I=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],L=[1,4,5,7,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],N=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],M={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,directive:6,SD:7,document:8,line:9,statement:10,classDefStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"--\x3e":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,classDef:38,CLASSDEF_ID:39,CLASSDEF_STYLEOPTS:40,DEFAULT:41,class:42,CLASSENTITY_IDS:43,STYLECLASS:44,openDirective:45,typeDirective:46,closeDirective:47,":":48,argDirective:49,direction_tb:50,direction_bt:51,direction_rl:52,direction_lr:53,eol:54,";":55,EDGE_STATE:56,STYLE_SEPARATOR:57,left_of:58,right_of:59,open_directive:60,type_directive:61,arg_directive:62,close_directive:63,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",7:"SD",14:"DESCR",15:"--\x3e",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"classDef",39:"CLASSDEF_ID",40:"CLASSDEF_STYLEOPTS",41:"DEFAULT",42:"class",43:"CLASSENTITY_IDS",44:"STYLECLASS",48:":",50:"direction_tb",51:"direction_bt",52:"direction_rl",53:"direction_lr",55:";",56:"EDGE_STATE",57:"STYLE_SEPARATOR",58:"left_of",59:"right_of",60:"open_directive",61:"type_directive",62:"arg_directive",63:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[10,2],[10,2],[10,1],[11,3],[11,3],[12,3],[6,3],[6,5],[32,1],[32,1],[32,1],[32,1],[54,1],[54,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1],[45,1],[46,1],[49,1],[47,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 4:return r.setRootDoc(a[o]),a[o];case 5:this.$=[];break;case 6:"nl"!=a[o]&&(a[o-1].push(a[o]),this.$=a[o-1]);break;case 7:case 8:case 12:this.$=a[o];break;case 9:this.$="nl";break;case 13:const t=a[o-1];t.description=r.trimColon(a[o]),this.$=t;break;case 14:this.$={stmt:"relation",state1:a[o-2],state2:a[o]};break;case 15:const e=r.trimColon(a[o]);this.$={stmt:"relation",state1:a[o-3],state2:a[o-1],description:e};break;case 19:this.$={stmt:"state",id:a[o-3],type:"default",description:"",doc:a[o-1]};break;case 20:var l=a[o],c=a[o-2].trim();if(a[o].match(":")){var u=a[o].split(":");l=u[0],c=[c,u[1]]}this.$={stmt:"state",id:l,type:"default",description:c};break;case 21:this.$={stmt:"state",id:a[o-3],type:"default",description:a[o-5],doc:a[o-1]};break;case 22:this.$={stmt:"state",id:a[o],type:"fork"};break;case 23:this.$={stmt:"state",id:a[o],type:"join"};break;case 24:this.$={stmt:"state",id:a[o],type:"choice"};break;case 25:this.$={stmt:"state",id:r.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:a[o-1].trim(),note:{position:a[o-2].trim(),text:a[o].trim()}};break;case 30:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 31:case 32:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 33:case 34:this.$={stmt:"classDef",id:a[o-1].trim(),classes:a[o].trim()};break;case 35:this.$={stmt:"applyClass",id:a[o-1].trim(),styleClass:a[o].trim()};break;case 38:r.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:r.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:r.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:r.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:a[o].trim(),type:"default",description:""};break;case 46:case 47:this.$={stmt:"state",id:a[o-2].trim(),classes:[a[o].trim()],type:"default",description:""};break;case 50:r.parseDirective("%%{","open_directive");break;case 51:r.parseDirective(a[o],"type_directive");break;case 52:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 53:r.parseDirective("}%%","close_directive","state")}},table:[{3:1,4:n,5:r,6:4,7:i,45:6,60:a},{1:[3]},{3:8,4:n,5:r,6:4,7:i,45:6,60:a},{3:9,4:n,5:r,6:4,7:i,45:6,60:a},{3:10,4:n,5:r,6:4,7:i,45:6,60:a},e([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],s,{8:11}),{46:12,61:[1,13]},{61:[2,50]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:l,6:30,9:14,10:16,11:18,12:19,13:20,16:c,17:u,19:h,22:d,24:p,25:f,26:m,27:g,28:y,29:b,32:31,33:x,35:v,37:_,38:k,42:T,45:6,50:w,51:S,52:E,53:C,56:D,60:a},{47:43,48:[1,44],63:A},e([48,63],[2,51]),e(O,[2,6]),{6:30,10:46,11:18,12:19,13:20,16:c,17:u,19:h,22:d,24:p,25:f,26:m,27:g,28:y,29:b,32:31,33:x,35:v,37:_,38:k,42:T,45:6,50:w,51:S,52:E,53:C,56:D,60:a},e(O,[2,8]),e(O,[2,9]),e(O,[2,10]),e(O,[2,11]),e(O,[2,12],{14:[1,47],15:[1,48]}),e(O,[2,16]),{18:[1,49]},e(O,[2,18],{20:[1,50]}),{23:[1,51]},e(O,[2,22]),e(O,[2,23]),e(O,[2,24]),e(O,[2,25]),{30:52,31:[1,53],58:[1,54],59:[1,55]},e(O,[2,28]),e(O,[2,29]),{34:[1,56]},{36:[1,57]},e(O,[2,32]),{39:[1,58],41:[1,59]},{43:[1,60]},e(I,[2,44],{57:[1,61]}),e(I,[2,45],{57:[1,62]}),e(O,[2,38]),e(O,[2,39]),e(O,[2,40]),e(O,[2,41]),e(L,[2,36]),{49:63,62:[1,64]},e(L,[2,53]),e(O,[2,7]),e(O,[2,13]),{13:65,24:p,56:D},e(O,[2,17]),e(N,s,{8:66}),{24:[1,67]},{24:[1,68]},{23:[1,69]},{24:[2,48]},{24:[2,49]},e(O,[2,30]),e(O,[2,31]),{40:[1,70]},{40:[1,71]},{44:[1,72]},{24:[1,73]},{24:[1,74]},{47:75,63:A},{63:[2,52]},e(O,[2,14],{14:[1,76]}),{4:o,5:l,6:30,9:14,10:16,11:18,12:19,13:20,16:c,17:u,19:h,21:[1,77],22:d,24:p,25:f,26:m,27:g,28:y,29:b,32:31,33:x,35:v,37:_,38:k,42:T,45:6,50:w,51:S,52:E,53:C,56:D,60:a},e(O,[2,20],{20:[1,78]}),{31:[1,79]},{24:[1,80]},e(O,[2,33]),e(O,[2,34]),e(O,[2,35]),e(I,[2,46]),e(I,[2,47]),e(L,[2,37]),e(O,[2,15]),e(O,[2,19]),e(N,s,{8:81}),e(O,[2,26]),e(O,[2,27]),{4:o,5:l,6:30,9:14,10:16,11:18,12:19,13:20,16:c,17:u,19:h,21:[1,82],22:d,24:p,25:f,26:m,27:g,28:y,29:b,32:31,33:x,35:v,37:_,38:k,42:T,45:6,50:w,51:S,52:E,53:C,56:D,60:a},e(O,[2,21])],defaultActions:{7:[2,50],8:[2,1],9:[2,2],10:[2,3],54:[2,48],55:[2,49],64:[2,52]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},F=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 41;case 1:case 44:return 50;case 2:case 45:return 51;case 3:case 46:return 52;case 4:case 47:return 53;case 5:return this.begin("open_directive"),60;case 6:return this.begin("type_directive"),61;case 7:return this.popState(),this.begin("arg_directive"),48;case 8:return this.popState(),this.popState(),63;case 9:return 62;case 10:case 11:case 13:case 14:case 15:case 16:case 56:case 58:case 64:break;case 12:case 79:return 5;case 17:case 34:return this.pushState("SCALE"),17;case 18:case 35:return 18;case 19:case 25:case 36:case 51:case 54:this.popState();break;case 20:return this.begin("acc_title"),33;case 21:return this.popState(),"acc_title_value";case 22:return this.begin("acc_descr"),35;case 23:return this.popState(),"acc_descr_value";case 24:this.begin("acc_descr_multiline");break;case 26:return"acc_descr_multiline_value";case 27:return this.pushState("CLASSDEF"),38;case 28:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 29:return this.popState(),this.pushState("CLASSDEFID"),39;case 30:return this.popState(),40;case 31:return this.pushState("CLASS"),42;case 32:return this.popState(),this.pushState("CLASS_STYLE"),43;case 33:return this.popState(),44;case 37:this.pushState("STATE");break;case 38:case 41:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),25;case 39:case 42:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),26;case 40:case 43:return this.popState(),e.yytext=e.yytext.slice(0,-10).trim(),27;case 48:this.pushState("STATE_STRING");break;case 49:return this.pushState("STATE_ID"),"AS";case 50:case 66:return this.popState(),"ID";case 52:return"STATE_DESCR";case 53:return 19;case 55:return this.popState(),this.pushState("struct"),20;case 57:return this.popState(),21;case 59:return this.begin("NOTE"),29;case 60:return this.popState(),this.pushState("NOTE_ID"),58;case 61:return this.popState(),this.pushState("NOTE_ID"),59;case 62:this.popState(),this.pushState("FLOATING_NOTE");break;case 63:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 65:return"NOTE_TEXT";case 67:return this.popState(),this.pushState("NOTE_TEXT"),24;case 68:return this.popState(),e.yytext=e.yytext.substr(2).trim(),31;case 69:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),31;case 70:case 71:return 7;case 72:return 16;case 73:return 56;case 74:return 24;case 75:return e.yytext=e.yytext.trim(),14;case 76:return 15;case 77:return 28;case 78:return 57;case 80:return"INVALID"}},rules:[/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<<fork>>)/i,/^(?:.*<<join>>)/i,/^(?:.*<<choice>>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[14,15],inclusive:!1},close_directive:{rules:[14,15],inclusive:!1},arg_directive:{rules:[8,9,14,15],inclusive:!1},type_directive:{rules:[7,8,14,15],inclusive:!1},open_directive:{rules:[6,14,15],inclusive:!1},struct:{rules:[14,15,27,31,37,44,45,46,47,56,57,58,59,73,74,75,76,77],inclusive:!1},FLOATING_NOTE_ID:{rules:[66],inclusive:!1},FLOATING_NOTE:{rules:[63,64,65],inclusive:!1},NOTE_TEXT:{rules:[68,69],inclusive:!1},NOTE_ID:{rules:[67],inclusive:!1},NOTE:{rules:[60,61,62],inclusive:!1},CLASS_STYLE:{rules:[33],inclusive:!1},CLASS:{rules:[32],inclusive:!1},CLASSDEFID:{rules:[30],inclusive:!1},CLASSDEF:{rules:[28,29],inclusive:!1},acc_descr_multiline:{rules:[25,26],inclusive:!1},acc_descr:{rules:[23],inclusive:!1},acc_title:{rules:[21],inclusive:!1},SCALE:{rules:[18,19,35,36],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[50],inclusive:!1},STATE_STRING:{rules:[51,52],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[14,15,38,39,40,41,42,43,48,49,53,54,55],inclusive:!1},ID:{rules:[14,15],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,10,11,12,13,15,16,17,20,22,24,27,31,34,37,55,59,70,71,72,73,74,75,76,78,79,80],inclusive:!0}}},t);function B(){this.yy={}}return M.lexer=F,B.prototype=M,M.Parser=B,new B}();Ju.parser=Ju;const th=Ju,eh=(t,e)=>{var n;return"dagre-wrapper"!==(null==(n=null==e?void 0:e.state)?void 0:n.defaultRenderer)&&null!==t.match(/^\s*stateDiagram/)},nh=(t,e)=>{var n;return null!==t.match(/^\s*stateDiagram-v2/)||!(!t.match(/^\s*stateDiagram/)||"dagre-wrapper"!==(null==(n=null==e?void 0:e.state)?void 0:n.defaultRenderer))},rh="state",ih="relation",ah="default",sh="divider",oh="[*]",lh="start",ch=oh,uh="color",hh="fill";let dh="LR",ph=[],fh={};let mh={root:{relations:[],states:{},documents:{}}},gh=mh.root,yh=0,bh=0;const xh=t=>JSON.parse(JSON.stringify(t)),vh=(t,e,n)=>{if(e.stmt===ih)vh(t,e.state1,!0),vh(t,e.state2,!1);else if(e.stmt===rh&&("[*]"===e.id?(e.id=n?t.id+"_start":t.id+"_end",e.start=n):e.id=e.id.trim()),e.doc){const t=[];let n,r=[];for(n=0;n<e.doc.length;n++)if(e.doc[n].type===sh){const i=xh(e.doc[n]);i.doc=xh(r),t.push(i),r=[]}else r.push(e.doc[n]);if(t.length>0&&r.length>0){const n={stmt:rh,id:Yn(),type:"divider",doc:xh(r)};t.push(xh(n)),e.doc=t}e.doc.forEach((t=>vh(e,t,!0)))}},_h=function(t,e=ah,n=null,r=null,i=null,a=null,s=null,o=null){const l=null==t?void 0:t.trim();if(void 0===gh.states[l]?(It.info("Adding state ",l,r),gh.states[l]={id:l,descriptions:[],type:e,doc:n,note:i,classes:[],styles:[],textStyles:[]}):(gh.states[l].doc||(gh.states[l].doc=n),gh.states[l].type||(gh.states[l].type=e)),r&&(It.info("Setting state description",l,r),"string"==typeof r&&Ch(l,r.trim()),"object"==typeof r&&r.forEach((t=>Ch(l,t.trim())))),i&&(gh.states[l].note=i,gh.states[l].note.text=zt.sanitizeText(gh.states[l].note.text,dr())),a){It.info("Setting state classes",l,a);("string"==typeof a?[a]:a).forEach((t=>Ah(l,t.trim())))}if(s){It.info("Setting state styles",l,s);("string"==typeof s?[s]:s).forEach((t=>Oh(l,t.trim())))}if(o){It.info("Setting state styles",l,s);("string"==typeof o?[o]:o).forEach((t=>Ih(l,t.trim())))}},kh=function(t){mh={root:{relations:[],states:{},documents:{}}},gh=mh.root,yh=0,fh={},t||Zr()},Th=function(t){return gh.states[t]};function wh(t=""){let e=t;return t===oh&&(yh++,e=`${lh}${yh}`),e}function Sh(t="",e=ah){return t===oh?lh:e}const Eh=function(t,e,n){if("object"==typeof t)!function(t,e,n){let r=wh(t.id.trim()),i=Sh(t.id.trim(),t.type),a=wh(e.id.trim()),s=Sh(e.id.trim(),e.type);_h(r,i,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),_h(a,s,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),gh.relations.push({id1:r,id2:a,relationTitle:zt.sanitizeText(n,dr())})}(t,e,n);else{const r=wh(t.trim()),i=Sh(t),a=function(t=""){let e=t;return t===ch&&(yh++,e=`end${yh}`),e}(e.trim()),s=function(t="",e=ah){return t===ch?"end":e}(e);_h(r,i),_h(a,s),gh.relations.push({id1:r,id2:a,title:zt.sanitizeText(n,dr())})}},Ch=function(t,e){const n=gh.states[t],r=e.startsWith(":")?e.replace(":","").trim():e;n.descriptions.push(zt.sanitizeText(r,dr()))},Dh=function(t,e=""){void 0===fh[t]&&(fh[t]={id:t,styles:[],textStyles:[]});const n=fh[t];null!=e&&e.split(",").forEach((t=>{const e=t.replace(/([^;]*);/,"$1").trim();if(t.match(uh)){const t=e.replace(hh,"bgFill").replace(uh,hh);n.textStyles.push(t)}n.styles.push(e)}))},Ah=function(t,e){t.split(",").forEach((function(t){let n=Th(t);if(void 0===n){const e=t.trim();_h(e),n=Th(e)}n.classes.push(e)}))},Oh=function(t,e){const n=Th(t);void 0!==n&&n.textStyles.push(e)},Ih=function(t,e){const n=Th(t);void 0!==n&&n.textStyles.push(e)},Lh={parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().state,addState:_h,clear:kh,getState:Th,getStates:function(){return gh.states},getRelations:function(){return gh.relations},getClasses:function(){return fh},getDirection:()=>dh,addRelation:Eh,getDividerId:()=>(bh++,"divider-id-"+bh),setDirection:t=>{dh=t},cleanupLabel:function(t){return":"===t.substring(0,1)?t.substr(2).trim():t.trim()},lineType:{LINE:0,DOTTED_LINE:1},relationType:{AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},logDocuments:function(){It.info("Documents = ",mh)},getRootDoc:()=>ph,setRootDoc:t=>{It.info("Setting root doc",t),ph=t},getRootDocV2:()=>(vh({id:"root"},{id:"root",doc:ph},!0),{id:"root",doc:ph}),extract:t=>{let e;e=t.doc?t.doc:t,It.info(e),kh(!0),It.info("Extract",e),e.forEach((t=>{switch(t.stmt){case rh:_h(t.id.trim(),t.type,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles);break;case ih:Eh(t.state1,t.state2,t.description);break;case"classDef":Dh(t.id.trim(),t.classes);break;case"applyClass":Ah(t.id.trim(),t.styleClass)}}))},trimColon:t=>t&&":"===t[0]?t.substr(1).trim():t.trim(),getAccTitle:Pr,setAccTitle:jr,getAccDescription:Yr,setAccDescription:zr,addStyleClass:Dh,setCssClass:Ah,addDescription:Ch,setDiagramTitle:Ur,getDiagramTitle:Wr},Nh={},Mh=(t,e)=>{Nh[t]=e},Fh=(t,e)=>{const n=t.append("text").attr("x",2*dr().state.padding).attr("y",dr().state.textHeight+1.3*dr().state.padding).attr("font-size",dr().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),r=n.height,i=t.append("text").attr("x",dr().state.padding).attr("y",r+.4*dr().state.padding+dr().state.dividerMargin+dr().state.textHeight).attr("class","state-description");let a=!0,s=!0;e.descriptions.forEach((function(t){a||(!function(t,e,n){const r=t.append("tspan").attr("x",2*dr().state.padding).text(e);n||r.attr("dy",dr().state.textHeight)}(i,t,s),s=!1),a=!1}));const o=t.append("line").attr("x1",dr().state.padding).attr("y1",dr().state.padding+r+dr().state.dividerMargin/2).attr("y2",dr().state.padding+r+dr().state.dividerMargin/2).attr("class","descr-divider"),l=i.node().getBBox(),c=Math.max(l.width,n.width);return o.attr("x2",c+3*dr().state.padding),t.insert("rect",":first-child").attr("x",dr().state.padding).attr("y",dr().state.padding).attr("width",c+2*dr().state.padding).attr("height",l.height+r+2*dr().state.padding).attr("rx",dr().state.radius),t},Bh=(t,e,n)=>{const r=dr().state.padding,i=2*dr().state.padding,a=t.node().getBBox(),s=a.width,o=a.x,l=t.append("text").attr("x",0).attr("y",dr().state.titleShift).attr("font-size",dr().state.fontSize).attr("class","state-title").text(e.id),c=l.node().getBBox().width+i;let u,h=Math.max(c,s);h===s&&(h+=i);const d=t.node().getBBox();e.doc,u=o-r,c>s&&(u=(s-h)/2+r),Math.abs(o-d.x)<r&&c>s&&(u=o-(c-s)/2);const p=1-dr().state.textHeight;return t.insert("rect",":first-child").attr("x",u).attr("y",p).attr("class",n?"alt-composit":"composit").attr("width",h).attr("height",d.height+dr().state.textHeight+dr().state.titleShift+1).attr("rx","0"),l.attr("x",u+r),c<=s&&l.attr("x",o+(h-i)/2-c/2+r),t.insert("rect",":first-child").attr("x",u).attr("y",dr().state.titleShift-dr().state.textHeight-dr().state.padding).attr("width",h).attr("height",3*dr().state.textHeight).attr("rx",dr().state.radius),t.insert("rect",":first-child").attr("x",u).attr("y",dr().state.titleShift-dr().state.textHeight-dr().state.padding).attr("width",h).attr("height",d.height+3+2*dr().state.textHeight).attr("rx",dr().state.radius),t},Rh=(t,e)=>{e.attr("class","state-note");const n=e.append("rect").attr("x",0).attr("y",dr().state.padding),r=e.append("g"),{textWidth:i,textHeight:a}=((t,e,n,r)=>{let i=0;const a=r.append("text");a.style("text-anchor","start"),a.attr("class","noteText");let s=t.replace(/\r\n/g,"<br/>");s=s.replace(/\n/g,"<br/>");const o=s.split(zt.lineBreakRegex);let l=1.25*dr().state.noteMargin;for(const c of o){const t=c.trim();if(t.length>0){const r=a.append("tspan");r.text(t),0===l&&(l+=r.node().getBBox().height),i+=l,r.attr("x",e+dr().state.noteMargin),r.attr("y",n+i+1.25*dr().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:i}})(t,0,0,r);return n.attr("height",a+2*dr().state.noteMargin),n.attr("width",i+2*dr().state.noteMargin),n},$h=function(t,e){const n=e.id,r={id:n,label:e.id,width:0,height:0},i=t.append("g").attr("id",n).attr("class","stateGroup");"start"===e.type&&(t=>{t.append("circle").attr("class","start-state").attr("r",dr().state.sizeUnit).attr("cx",dr().state.padding+dr().state.sizeUnit).attr("cy",dr().state.padding+dr().state.sizeUnit)})(i),"end"===e.type&&(t=>{t.append("circle").attr("class","end-state-outer").attr("r",dr().state.sizeUnit+dr().state.miniPadding).attr("cx",dr().state.padding+dr().state.sizeUnit+dr().state.miniPadding).attr("cy",dr().state.padding+dr().state.sizeUnit+dr().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",dr().state.sizeUnit).attr("cx",dr().state.padding+dr().state.sizeUnit+2).attr("cy",dr().state.padding+dr().state.sizeUnit+2)})(i),"fork"!==e.type&&"join"!==e.type||((t,e)=>{let n=dr().state.forkWidth,r=dr().state.forkHeight;if(e.parentId){let t=n;n=r,r=t}t.append("rect").style("stroke","black").style("fill","black").attr("width",n).attr("height",r).attr("x",dr().state.padding).attr("y",dr().state.padding)})(i,e),"note"===e.type&&Rh(e.note.text,i),"divider"===e.type&&(t=>{t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",dr().state.textHeight).attr("class","divider").attr("x2",2*dr().state.textHeight).attr("y1",0).attr("y2",0)})(i),"default"===e.type&&0===e.descriptions.length&&((t,e)=>{const n=t.append("text").attr("x",2*dr().state.padding).attr("y",dr().state.textHeight+2*dr().state.padding).attr("font-size",dr().state.fontSize).attr("class","state-title").text(e.id),r=n.node().getBBox();t.insert("rect",":first-child").attr("x",dr().state.padding).attr("y",dr().state.padding).attr("width",r.width+2*dr().state.padding).attr("height",r.height+2*dr().state.padding).attr("rx",dr().state.radius)})(i,e),"default"===e.type&&e.descriptions.length>0&&Fh(i,e);const a=i.node().getBBox();return r.width=a.width+2*dr().state.padding,r.height=a.height+2*dr().state.padding,Mh(n,r),r};let Zh=0;let jh;const Ph={},zh=(t,e,n,r,i,a,s)=>{const l=new ut.k({compound:!0,multigraph:!0});let c,u=!0;for(c=0;c<t.length;c++)if("relation"===t[c].stmt){u=!1;break}n?l.setGraph({rankdir:"LR",multigraph:!0,compound:!0,ranker:"tight-tree",ranksep:u?1:jh.edgeLengthFactor,nodeSep:u?1:50,isMultiGraph:!0}):l.setGraph({rankdir:"TB",multigraph:!0,compound:!0,ranksep:u?1:jh.edgeLengthFactor,nodeSep:u?1:50,ranker:"tight-tree",isMultiGraph:!0}),l.setDefaultEdgeLabel((function(){return{}})),s.db.extract(t);const h=s.db.getStates(),d=s.db.getRelations(),p=Object.keys(h);for(const o of p){const t=h[o];let c;if(n&&(t.parentId=n),t.doc){let n=e.append("g").attr("id",t.id).attr("class","stateGroup");c=zh(t.doc,n,t.id,!r,i,a,s);{n=Bh(n,t,r);let e=n.node().getBBox();c.width=e.width,c.height=e.height+jh.padding/2,Ph[t.id]={y:jh.compositTitleSize}}}else c=$h(e,t);if(t.note){const n={descriptions:[],id:t.id+"-note",note:t.note,type:"note"},r=$h(e,n);"left of"===t.note.position?(l.setNode(c.id+"-note",r),l.setNode(c.id,c)):(l.setNode(c.id,c),l.setNode(c.id+"-note",r)),l.setParent(c.id,c.id+"-group"),l.setParent(c.id+"-note",c.id+"-group")}else l.setNode(c.id,c)}It.debug("Count=",l.nodeCount(),l);let f=0;d.forEach((function(t){var e;f++,It.debug("Setting edge",t),l.setEdge(t.id1,t.id2,{relation:t,width:(e=t.title,e?e.length*jh.fontSizeFactor:1),height:jh.labelHeight*zt.getRows(t.title).length,labelpos:"c"},"id"+f)})),(0,ct.bK)(l),It.debug("Graph after layout",l.nodes());const m=e.node();l.nodes().forEach((function(t){if(void 0!==t&&void 0!==l.node(t)){It.warn("Node "+t+": "+JSON.stringify(l.node(t))),i.select("#"+m.id+" #"+t).attr("transform","translate("+(l.node(t).x-l.node(t).width/2)+","+(l.node(t).y+(Ph[t]?Ph[t].y:0)-l.node(t).height/2)+" )"),i.select("#"+m.id+" #"+t).attr("data-x-shift",l.node(t).x-l.node(t).width/2);a.querySelectorAll("#"+m.id+" #"+t+" .divider").forEach((t=>{const e=t.parentElement;let n=0,r=0;e&&(e.parentElement&&(n=e.parentElement.getBBox().width),r=parseInt(e.getAttribute("data-x-shift"),10),Number.isNaN(r)&&(r=0)),t.setAttribute("x1",0-r+8),t.setAttribute("x2",n-r-8)}))}else It.debug("No Node "+t+": "+JSON.stringify(l.node(t)))}));let g=m.getBBox();l.edges().forEach((function(t){void 0!==t&&void 0!==l.edge(t)&&(It.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(l.edge(t))),function(t,e,n){e.points=e.points.filter((t=>!Number.isNaN(t.y)));const r=e.points,i=(0,o.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(o.$0Z),a=t.append("path").attr("d",i(r)).attr("id","edge"+Zh).attr("class","transition");let s="";if(dr().state.arrowMarkerAbsolute&&(s=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,s=s.replace(/\(/g,"\\("),s=s.replace(/\)/g,"\\)")),a.attr("marker-end","url("+s+"#"+function(t){switch(t){case Lh.relationType.AGGREGATION:return"aggregation";case Lh.relationType.EXTENSION:return"extension";case Lh.relationType.COMPOSITION:return"composition";case Lh.relationType.DEPENDENCY:return"dependency"}}(Lh.relationType.DEPENDENCY)+"End)"),void 0!==n.title){const r=t.append("g").attr("class","stateLabel"),{x:i,y:a}=nr.calcLabelPosition(e.points),s=zt.getRows(n.title);let o=0;const l=[];let c=0,u=0;for(let t=0;t<=s.length;t++){const e=r.append("text").attr("text-anchor","middle").text(s[t]).attr("x",i).attr("y",a+o),n=e.node().getBBox();if(c=Math.max(c,n.width),u=Math.min(u,n.x),It.info(n.x,i,a+o),0===o){const t=e.node().getBBox();o=t.height,It.info("Title height",o,a)}l.push(e)}let h=o*s.length;if(s.length>1){const t=(s.length-1)*o*.5;l.forEach(((e,n)=>e.attr("y",a+n*o-t))),h=o*s.length}const d=r.node().getBBox();r.insert("rect",":first-child").attr("class","box").attr("x",i-c/2-dr().state.padding/2).attr("y",a-h/2-dr().state.padding/2-3.5).attr("width",c+dr().state.padding).attr("height",h+dr().state.padding),It.info(d)}Zh++}(e,l.edge(t),l.edge(t).relation))})),g=m.getBBox();const y={id:n||"root",label:n||"root",width:0,height:0};return y.width=g.width+2*jh.padding,y.height=g.height+2*jh.padding,It.debug("Doc rendered",y,l),y},Yh={setConf:function(){},draw:function(t,e,n,r){jh=dr().state;const i=dr().securityLevel;let a;"sandbox"===i&&(a=(0,o.Ys)("#i"+e));const s="sandbox"===i?(0,o.Ys)(a.nodes()[0].contentDocument.body):(0,o.Ys)("body"),l="sandbox"===i?a.nodes()[0].contentDocument:document;It.debug("Rendering diagram "+t);const c=s.select(`[id='${e}']`);c.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z");new ut.k({multigraph:!0,compound:!0,rankdir:"RL"}).setDefaultEdgeLabel((function(){return{}}));const u=r.db.getRootDoc();zh(u,c,void 0,!1,s,l,r);const h=jh.padding,d=c.node().getBBox(),p=d.width+2*h,f=d.height+2*h;xr(c,f,1.75*p,jh.useMaxWidth),c.attr("viewBox",`${d.x-jh.padding} ${d.y-jh.padding} `+p+" "+f)}},Uh="rect",Wh="rectWithTitle",Hh="statediagram",qh=`${Hh}-state`,Vh="transition",Gh=`${Vh} note-edge`,Xh=`${Hh}-note`,Kh=`${Hh}-cluster`,Qh=`${Hh}-cluster-alt`,Jh="parent",td="note",ed="----",nd=`${ed}${td}`,rd=`${ed}${Jh}`,id="fill:none",ad="fill: #333",sd="text",od="normal";let ld={},cd=0;function ud(t="",e=0,n="",r=ed){return`state-${t}${null!==n&&n.length>0?`${r}${n}`:""}-${e}`}const hd=(t,e,n,r,i,a)=>{const s=n.id,o=null==(l=r[s])?"":l.classes?l.classes.join(" "):"";var l;if("root"!==s){let e=Uh;!0===n.start&&(e="start"),!1===n.start&&(e="end"),n.type!==ah&&(e=n.type),ld[s]||(ld[s]={id:s,shape:e,description:zt.sanitizeText(s,dr()),classes:`${o} ${qh}`});const r=ld[s];n.description&&(Array.isArray(r.description)?(r.shape=Wh,r.description.push(n.description)):r.description.length>0?(r.shape=Wh,r.description===s?r.description=[n.description]:r.description=[r.description,n.description]):(r.shape=Uh,r.description=n.description),r.description=zt.sanitizeTextOrArray(r.description,dr())),1===r.description.length&&r.shape===Wh&&(r.shape=Uh),!r.type&&n.doc&&(It.info("Setting cluster for ",s,pd(n)),r.type="group",r.dir=pd(n),r.shape=n.type===sh?"divider":"roundedWithTitle",r.classes=r.classes+" "+Kh+" "+(a?Qh:""));const i={labelStyle:"",shape:r.shape,labelText:r.description,classes:r.classes,style:"",id:s,dir:r.dir,domId:ud(s,cd),type:r.type,padding:15};if(n.note){const e={labelStyle:"",shape:"note",labelText:n.note.text,classes:Xh,style:"",id:s+nd+"-"+cd,domId:ud(s,cd,td),type:r.type,padding:15},a={labelStyle:"",shape:"noteGroup",labelText:n.note.text,classes:r.classes,style:"",id:s+rd,domId:ud(s,cd,Jh),type:"group",padding:0};cd++;const o=s+rd;t.setNode(o,a),t.setNode(e.id,e),t.setNode(s,i),t.setParent(s,o),t.setParent(e.id,o);let l=s,c=e.id;"left of"===n.note.position&&(l=e.id,c=s),t.setEdge(l,c,{arrowhead:"none",arrowType:"",style:id,labelStyle:"",classes:Gh,arrowheadStyle:ad,labelpos:"c",labelType:sd,thickness:od})}else t.setNode(s,i)}e&&"root"!==e.id&&(It.trace("Setting node ",s," to be child of its parent ",e.id),t.setParent(s,e.id)),n.doc&&(It.trace("Adding nodes children "),dd(t,n,n.doc,r,i,!a))},dd=(t,e,n,r,i,a)=>{It.trace("items",n),n.forEach((n=>{switch(n.stmt){case rh:case ah:hd(t,e,n,r,i,a);break;case ih:{hd(t,e,n.state1,r,i,a),hd(t,e,n.state2,r,i,a);const s={id:"edge"+cd,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:id,labelStyle:"",label:zt.sanitizeText(n.description,dr()),arrowheadStyle:ad,labelpos:"c",labelType:sd,thickness:od,classes:Vh};t.setEdge(n.state1.id,n.state2.id,s,cd),cd++}}}))},pd=(t,e="TB")=>{let n=e;if(t.doc)for(let r=0;r<t.doc.length;r++){const e=t.doc[r];"dir"===e.stmt&&(n=e.value)}return n},fd={setConf:function(t){const e=Object.keys(t);for(const n of e)t[n]},getClasses:function(t,e){It.trace("Extracting classes"),e.db.clear();try{return e.parser.parse(t),e.db.extract(e.db.getRootDocV2()),e.db.getClasses()}catch(n){return n}},draw:function(t,e,n,r){It.info("Drawing state diagram (v2)",e),ld={};let i=r.db.getDirection();void 0===i&&(i="LR");const{securityLevel:a,state:s}=dr(),l=s.nodeSpacing||50,c=s.rankSpacing||50;It.info(r.db.getRootDocV2()),r.db.extract(r.db.getRootDocV2()),It.info(r.db.getRootDocV2());const u=r.db.getStates(),h=new ut.k({multigraph:!0,compound:!0}).setGraph({rankdir:pd(r.db.getRootDocV2()),nodesep:l,ranksep:c,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));let d;hd(h,void 0,r.db.getRootDocV2(),u,r.db,!0),"sandbox"===a&&(d=(0,o.Ys)("#i"+e));const p="sandbox"===a?(0,o.Ys)(d.nodes()[0].contentDocument.body):(0,o.Ys)("body"),f=p.select(`[id="${e}"]`),m=p.select("#"+e+" g");Js(m,h,["barb"],Hh,e);nr.insertTitle(f,"statediagramTitleText",s.titleTopMargin,r.db.getDiagramTitle());const g=f.node().getBBox(),y=g.width+16,b=g.height+16;f.attr("class",Hh);const x=f.node().getBBox();xr(f,b,y,s.useMaxWidth);const v=`${x.x-8} ${x.y-8} ${y} ${b}`;It.debug(`viewBox ${v}`),f.attr("viewBox",v);const _=document.querySelectorAll('[id="'+e+'"] .edgeLabel .label');for(const o of _){const t=o.getBBox(),e=document.createElementNS("http://www.w3.org/2000/svg",Uh);e.setAttribute("rx",0),e.setAttribute("ry",0),e.setAttribute("width",t.width),e.setAttribute("height",t.height),o.insertBefore(e,o.firstChild)}}};var md=function(){var t,e=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},n=[1,2],r=[1,5],i=[6,9,11,17,18,20,22,23,24,26],a=[1,15],s=[1,16],o=[1,17],l=[1,18],c=[1,19],u=[1,20],h=[1,24],d=[4,6,9,11,17,18,20,22,23,24,26],p={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,acc_title:18,acc_title_value:19,acc_descr:20,acc_descr_value:21,acc_descr_multiline_value:22,section:23,taskName:24,taskData:25,open_directive:26,type_directive:27,arg_directive:28,close_directive:29,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"acc_title",19:"acc_title_value",20:"acc_descr",21:"acc_descr_value",22:"acc_descr_multiline_value",23:"section",24:"taskName",25:"taskData",26:"open_directive",27:"type_directive",28:"arg_directive",29:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,2],[10,2],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,r,i,a,s){var o=a.length-1;switch(i){case 1:return a[o-1];case 3:case 7:case 8:this.$=[];break;case 4:a[o-1].push(a[o]),this.$=a[o-1];break;case 5:case 6:this.$=a[o];break;case 11:r.setDiagramTitle(a[o].substr(6)),this.$=a[o].substr(6);break;case 12:this.$=a[o].trim(),r.setAccTitle(this.$);break;case 13:case 14:this.$=a[o].trim(),r.setAccDescription(this.$);break;case 15:r.addSection(a[o].substr(8)),this.$=a[o].substr(8);break;case 16:r.addTask(a[o-1],a[o]),this.$="task";break;case 18:r.parseDirective("%%{","open_directive");break;case 19:r.parseDirective(a[o],"type_directive");break;case 20:a[o]=a[o].trim().replace(/'/g,'"'),r.parseDirective(a[o],"arg_directive");break;case 21:r.parseDirective("}%%","close_directive","journey")}},table:[{3:1,4:n,7:3,12:4,26:r},{1:[3]},e(i,[2,3],{5:6}),{3:7,4:n,7:3,12:4,26:r},{13:8,27:[1,9]},{27:[2,18]},{6:[1,10],7:21,8:11,9:[1,12],10:13,11:[1,14],12:4,17:a,18:s,20:o,22:l,23:c,24:u,26:r},{1:[2,2]},{14:22,15:[1,23],29:h},e([15,29],[2,19]),e(i,[2,8],{1:[2,1]}),e(i,[2,4]),{7:21,10:25,12:4,17:a,18:s,20:o,22:l,23:c,24:u,26:r},e(i,[2,6]),e(i,[2,7]),e(i,[2,11]),{19:[1,26]},{21:[1,27]},e(i,[2,14]),e(i,[2,15]),{25:[1,28]},e(i,[2,17]),{11:[1,29]},{16:30,28:[1,31]},{11:[2,21]},e(i,[2,5]),e(i,[2,12]),e(i,[2,13]),e(i,[2,16]),e(d,[2,9]),{14:32,29:h},{29:[2,20]},{11:[1,33]},e(d,[2,10])],defaultActions:{5:[2,18],7:[2,2],24:[2,21],31:[2,20]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],s=this.table,o="",l=0,c=0,u=1,h=a.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var m=d.yylloc;a.push(m);var g=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=r.pop()||d.lex()||u)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,v,_,k,T,w,S,E={};;){if(x=n[n.length-1],this.defaultActions[x]?v=this.defaultActions[x]:(null==b&&(b=y()),v=s[x]&&s[x][b]),void 0===v||!v.length||!v[0]){var C="";for(k in S=[],s[x])this.terminals_[k]&&k>2&&S.push("'"+this.terminals_[k]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(b==u?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:m,expected:S})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(v[0]){case 1:n.push(b),i.push(d.yytext),a.push(d.yylloc),n.push(v[1]),b=null,c=d.yyleng,o=d.yytext,l=d.yylineno,m=d.yylloc;break;case 2:if(T=this.productions_[v[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},g&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(E,[o,c,l,p.yy,v[1],i,a].concat(h))))return _;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[v[1]][0]),i.push(E.$),a.push(E._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},f=(t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),26;case 1:return this.begin("type_directive"),27;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),29;case 4:return 28;case 5:case 6:case 8:case 9:break;case 7:return 11;case 10:return 4;case 11:return 17;case 12:return this.begin("acc_title"),18;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),20;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:return 23;case 20:return 24;case 21:return 25;case 22:return 15;case 23:return 6;case 24:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,14,16,19,20,21,22,23,24],inclusive:!0}}},t);function m(){this.yy={}}return p.lexer=f,m.prototype=p,p.Parser=m,new m}();md.parser=md;const gd=md,yd=t=>null!==t.match(/^\s*journey/);let bd="";const xd=[],vd=[],_d=[],kd=function(){let t=!0;for(const[e,n]of _d.entries())_d[e].processed,t=t&&n.processed;return t},Td={parseDirective:function(t,e,n){yp.parseDirective(this,t,e,n)},getConfig:()=>dr().journey,clear:function(){xd.length=0,vd.length=0,bd="",_d.length=0,Zr()},setDiagramTitle:Ur,getDiagramTitle:Wr,setAccTitle:jr,getAccTitle:Pr,setAccDescription:zr,getAccDescription:Yr,addSection:function(t){bd=t,xd.push(t)},getSections:function(){return xd},getTasks:function(){let t=kd();let e=0;for(;!t&&e<100;)t=kd(),e++;return vd.push(..._d),vd},addTask:function(t,e){const n=e.substr(1).split(":");let r=0,i=[];1===n.length?(r=Number(n[0]),i=[]):(r=Number(n[0]),i=n[1].split(","));const a=i.map((t=>t.trim())),s={section:bd,type:bd,people:a,task:t,score:r};_d.push(s)},addTaskOrg:function(t){const e={section:bd,type:bd,description:t,task:t,classes:[]};vd.push(e)},getActors:function(){return function(){const t=[];return vd.forEach((e=>{e.people&&t.push(...e.people)})),[...new Set(t)].sort()}()}},wd=function(t,e){const n=t.append("rect");return n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),void 0!==e.class&&n.attr("class",e.class),n},Sd=function(t,e){const n=t.append("circle");return n.attr("cx",e.cx),n.attr("cy",e.cy),n.attr("class","actor-"+e.pos),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("r",e.r),void 0!==n.class&&n.attr("class",n.class),void 0!==e.title&&n.append("title").text(e.title),n},Ed=function(t,e){const n=e.text.replace(/<br\s*\/?>/gi," "),r=t.append("text");r.attr("x",e.x),r.attr("y",e.y),r.attr("class","legend"),r.style("text-anchor",e.anchor),void 0!==e.class&&r.attr("class",e.class);const i=r.append("tspan");return i.attr("x",e.x+2*e.textMargin),i.text(n),r};let Cd=-1;const Dd=function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},Ad=function(){function t(t,e,n,i,a,s,o,l){r(e.append("text").attr("x",n+a/2).attr("y",i+s/2+5).style("font-color",l).style("text-anchor","middle").text(t),o)}function e(t,e,n,i,a,s,o,l,c){const{taskFontSize:u,taskFontFamily:h}=l,d=t.split(/<br\s*\/?>/gi);for(let p=0;p<d.length;p++){const t=p*u-u*(d.length-1)/2,l=e.append("text").attr("x",n+a/2).attr("y",i).attr("fill",c).style("text-anchor","middle").style("font-size",u).style("font-family",h);l.append("tspan").attr("x",n+a/2).attr("dy",t).text(d[p]),l.attr("y",i+s/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),r(l,o)}}function n(t,n,i,a,s,o,l,c){const u=n.append("switch"),h=u.append("foreignObject").attr("x",i).attr("y",a).attr("width",s).attr("height",o).attr("position","fixed").append("xhtml:div").style("display","table").style("height","100%").style("width","100%");h.append("div").attr("class","label").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,u,i,a,s,o,l,c),r(h,l)}function r(t,e){for(const n in e)n in e&&t.attr(n,e[n])}return function(r){return"fo"===r.textPlacement?n:"old"===r.textPlacement?t:e}}(),Od={drawRect:wd,drawCircle:Sd,drawSection:function(t,e,n){const r=t.append("g"),i=Dd();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=n.width,i.height=n.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,wd(r,i),Ad(n)(e.text,r,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},n,e.colour)},drawText:Ed,drawLabel:function(t,e){const n=t.append("polygon");var r,i,a,s,o;n.attr("points",(r=e.x,i=e.y,r+","+i+" "+(r+(a=50))+","+i+" "+(r+a)+","+(i+(s=20)-(o=7))+" "+(r+a-1.2*o)+","+(i+s)+" "+r+","+(i+s))),n.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,Ed(t,e)},drawTask:function(t,e,n){const r=e.x+n.width/2,i=t.append("g");Cd++;i.append("line").attr("id","task"+Cd).attr("x1",r).attr("y1",e.y).attr("x2",r).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),function(t,e){const n=15,r=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",n).attr("stroke-width",2).attr("overflow","visible"),i=t.append("g");i.append("circle").attr("cx",e.cx-5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",e.cx+5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),e.score>3?function(t){const r=(0,o.Nb1)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",r).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}(i):e.score<3?function(t){const r=(0,o.Nb1)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",r).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}(i):i.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}(i,{cx:r,cy:300+30*(5-e.score),score:e.score});const a=Dd();a.x=e.x,a.y=e.y,a.fill=e.fill,a.width=n.width,a.height=n.height,a.class="task task-type-"+e.num,a.rx=3,a.ry=3,wd(i,a);let s=e.x+14;e.people.forEach((t=>{const n=e.actors[t].color,r={cx:s,cy:e.y,r:7,fill:n,stroke:"#000",title:t,pos:e.actors[t].position};Sd(i,r),s+=10})),Ad(n)(e.task,i,a.x,a.y,a.width,a.height,{class:"task"},n,e.colour)},drawBackgroundRect:function(t,e){wd(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},getTextObj:function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},getNoteRect:Dd,initGraphics:function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")}},Id={};const Ld=dr().journey,Nd=Ld.leftMargin,Md={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])},updateBounds:function(t,e,n,r){const i=dr().journey,a=this;let s=0;var o;this.sequenceItems.forEach((function(l){s++;const c=a.sequenceItems.length-s+1;a.updateVal(l,"starty",e-c*i.boxMargin,Math.min),a.updateVal(l,"stopy",r+c*i.boxMargin,Math.max),a.updateVal(Md.data,"startx",t-c*i.boxMargin,Math.min),a.updateVal(Md.data,"stopx",n+c*i.boxMargin,Math.max),"activation"!==o&&(a.updateVal(l,"startx",t-c*i.boxMargin,Math.min),a.updateVal(l,"stopx",n+c*i.boxMargin,Math.max),a.updateVal(Md.data,"starty",e-c*i.boxMargin,Math.min),a.updateVal(Md.data,"stopy",r+c*i.boxMargin,Math.max))}))},insert:function(t,e,n,r){const i=Math.min(t,n),a=Math.max(t,n),s=Math.min(e,r),o=Math.max(e,r);this.updateVal(Md.data,"startx",i,Math.min),this.updateVal(Md.data,"starty",s,Math.min),this.updateVal(Md.data,"stopx",a,Math.max),this.updateVal(Md.data,"stopy",o,Math.max),this.updateBounds(i,s,a,o)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},Fd=Ld.sectionFills,Bd=Ld.sectionColours,Rd=function(t,e,n){const r=dr().journey;let i="";const a=n+(2*r.height+r.diagramMarginY);let s=0,o="#CCC",l="black",c=0;for(const[u,h]of e.entries()){if(i!==h.section){o=Fd[s%Fd.length],c=s%Fd.length,l=Bd[s%Bd.length];const e={x:u*r.taskMargin+u*r.width+Nd,y:50,text:h.section,fill:o,num:c,colour:l};Od.drawSection(t,e,r),i=h.section,s++}const e=h.people.reduce(((t,e)=>(Id[e]&&(t[e]=Id[e]),t)),{});h.x=u*r.taskMargin+u*r.width+Nd,h.y=a,h.width=r.diagramMarginX,h.height=r.diagramMarginY,h.colour=l,h.fill=o,h.num=c,h.actors=e,Od.drawTask(t,h,r),Md.insert(h.x,h.y,h.x+h.width+r.taskMargin,450)}},$d={setConf:function(t){Object.keys(t).forEach((function(e){Ld[e]=t[e]}))},draw:function(t,e,n,r){const i=dr().journey;r.db.clear(),r.parser.parse(t+"\n");const a=dr().securityLevel;let s;"sandbox"===a&&(s=(0,o.Ys)("#i"+e));const l="sandbox"===a?(0,o.Ys)(s.nodes()[0].contentDocument.body):(0,o.Ys)("body");Md.init();const c=l.select("#"+e);Od.initGraphics(c);const u=r.db.getTasks(),h=r.db.getDiagramTitle(),d=r.db.getActors();for(const o in Id)delete Id[o];let p=0;d.forEach((t=>{Id[t]={color:i.actorColours[p%i.actorColours.length],position:p},p++})),function(t){const e=dr().journey;let n=60;Object.keys(Id).forEach((r=>{const i=Id[r].color,a={cx:20,cy:n,r:7,fill:i,stroke:"#000",pos:Id[r].position};Od.drawCircle(t,a);const s={x:40,y:n+7,fill:"#666",text:r,textMargin:5|e.boxTextMargin};Od.drawText(t,s),n+=20}))}(c),Md.insert(0,0,Nd,50*Object.keys(Id).length),Rd(c,u,0);const f=Md.getBounds();h&&c.append("text").text(h).attr("x",Nd).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);const m=f.stopy-f.starty+2*i.diagramMarginY,g=Nd+f.stopx+2*i.diagramMarginX;xr(c,m,g,i.useMaxWidth),c.append("line").attr("x1",Nd).attr("y1",4*i.height).attr("x2",g-Nd-4).attr("y2",4*i.height).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");const y=h?70:0;c.attr("viewBox",`${f.startx} -25 ${g} ${m+y}`),c.attr("preserveAspectRatio","xMinYMin meet"),c.attr("height",m+y+25)}};let Zd={};const jd={setConf:function(t){Zd={...Zd,...t}},draw:(t,e,n)=>{try{It.debug("Renering svg for syntax error\n");const t=(0,o.Ys)("#"+e),r=t.append("g");r.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),r.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),r.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),r.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),r.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),r.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),r.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in graph"),r.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text("mermaid version "+n),t.attr("height",100),t.attr("width",500),t.attr("viewBox","768 0 912 512")}catch(i){It.error("Error while rendering info diagram"),It.error((r=i)instanceof Error?r.message:String(r))}var r}},Pd="flowchart-elk",zd={id:Pd,detector:(t,e)=>{var n;return!!(t.match(/^\s*flowchart-elk/)||t.match(/^\s*flowchart|graph/)&&"elk"===(null==(n=null==e?void 0:e.flowchart)?void 0:n.defaultRenderer))},loader:async()=>{const{diagram:t}=await n.e(9487).then(n.bind(n,9487));return{id:Pd,diagram:t}}},Yd="timeline",Ud={id:Yd,detector:t=>null!==t.match(/^\s*timeline/),loader:async()=>{const{diagram:t}=await n.e(6316).then(n.bind(n,6316));return{id:Yd,diagram:t}}},Wd="mindmap",Hd={id:Wd,detector:t=>null!==t.match(/^\s*mindmap/),loader:async()=>{const{diagram:t}=await n.e(7724).then(n.bind(n,7724));return{id:Wd,diagram:t}}};let qd=!1;const Vd=()=>{qd||(qd=!0,In(zd,Ud,Hd),ii("error",{db:{clear:()=>{}},styles:Tr,renderer:jd,parser:{parser:{yy:{}},parse:()=>{}},init:()=>{}},(t=>"error"===t.toLowerCase().trim())),ii("---",{db:{clear:()=>{}},styles:Tr,renderer:jd,parser:{parser:{yy:{}},parse:()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with unindented `---` blocks")}},init:()=>null},(t=>t.toLowerCase().trimStart().startsWith("---"))),ii("c4",{parser:Yi,db:ia,renderer:Ba,styles:Lr,init:t=>{Ba.setConf(t.c4)}},Ui),ii("class",{parser:$a,db:ns,renderer:ms,styles:_r,init:t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute,ns.clear()}},Za),ii("classDiagram",{parser:$a,db:ns,renderer:ro,styles:_r,init:t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute,ns.clear()}},ja),ii("er",{parser:ao,db:uo,renderer:To,styles:kr},so),ii("gantt",{parser:Ll,db:hc,renderer:fc,styles:Sr},Nl),ii("info",{parser:gc,db:xc,renderer:vc,styles:Er},_c),ii("pie",{parser:Tc,db:Cc,renderer:Ic,styles:Cr},wc),ii("requirement",{parser:Nc,db:jc,renderer:Kc,styles:Dr},Mc),ii("sequence",{parser:Jc,db:vu,renderer:Qu,styles:Ar,init:t=>{if(t.sequence||(t.sequence={}),t.sequence.arrowMarkerAbsolute=t.arrowMarkerAbsolute,"sequenceDiagram"in t)throw new Error("`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.");vu.setWrap(t.wrap),Qu.setConf(t.sequence)}},tu),ii("state",{parser:th,db:Lh,renderer:Yh,styles:Or,init:t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,Lh.clear()}},eh),ii("stateDiagram",{parser:th,db:Lh,renderer:fd,styles:Or,init:t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,Lh.clear()}},nh),ii("journey",{parser:gd,db:Td,renderer:$d,styles:Ir,init:t=>{$d.setConf(t.journey),Td.clear()}},yd),ii("flowchart",{parser:So,db:Tl,renderer:Ol,styles:wr,init:t=>{t.flowchart||(t.flowchart={}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,El(t.flowchart),Tl.clear(),Tl.setGen("gen-1")}},Eo),ii("flowchart-v2",{parser:So,db:Tl,renderer:Ol,styles:wr,init:t=>{t.flowchart||(t.flowchart={}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,hr({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}}),Ol.setConf(t.flowchart),Tl.clear(),Tl.setGen("gen-2")}},Co),ii("gitGraph",{parser:oi,db:Si,renderer:ji,styles:Pi},li))};class Gd{constructor(t,e){var n,r;this.txt=t,this.type="graph",this.detectTypeFailed=!1;const i=dr();this.txt=t;try{this.type=On(t,i)}catch(o){this.handleError(o,e),this.type="error",this.detectTypeFailed=!0}const a=ai(this.type);It.debug("Type "+this.type),this.db=a.db,null==(r=(n=this.db).clear)||r.call(n),this.renderer=a.renderer,this.parser=a.parser;const s=this.parser.parse.bind(this.parser);this.parser.parse=t=>s(function(t,e){var n;const r=t.match(En);if(r){const i=Sn(r[1],{schema:wn});return(null==i?void 0:i.title)&&(null==(n=e.setDiagramTitle)||n.call(e,i.title)),t.slice(r[0].length)}return t}(t,this.db)),this.parser.parser.yy=this.db,a.init&&(a.init(i),It.info("Initialized diagram "+this.type,i)),this.txt+="\n",this.parse(this.txt,e)}parse(t,e){var n,r;if(this.detectTypeFailed)return!1;try{return t+="\n",null==(r=(n=this.db).clear)||r.call(n),this.parser.parse(t),!0}catch(i){this.handleError(i,e)}return!1}handleError(t,e){if(void 0===e)throw t;tr(t)?e(t.str,t.hash):e(t)}getParser(){return this.parser}getType(){return this.type}}const Xd=(t,e)=>{const n=On(t,dr());try{ai(n)}catch(r){const i=An[n].loader;if(!i)throw new Error(`Diagram ${n} not found.`);return i().then((({diagram:r})=>(ii(n,r,void 0),new Gd(t,e))))}return new Gd(t,e)},Kd=Gd,Qd="graphics-document document";const Jd=["graph","flowchart","flowchart-v2","stateDiagram","stateDiagram-v2"],tp="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",ep="sandbox",np="loose",rp="http://www.w3.org/1999/xlink",ip="http://www.w3.org/1999/xhtml",ap=["foreignobject"],sp=["dominant-baseline"];const op=function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)})),e=e.replace(/classDef.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)})),e=e.replace(/#\w+;/g,(function(t){const e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?"\ufb02\xb0\xb0"+e+"\xb6\xdf":"\ufb02\xb0"+e+"\xb6\xdf"})),e},lp=function(t){let e=t;return e=e.replace(/\ufb02\xb0\xb0/g,"&#"),e=e.replace(/\ufb02\xb0/g,"&"),e=e.replace(/\xb6\xdf/g,";"),e},cp=(t,e,n=[])=>`\n.${t} ${e} { ${n.join(" !important; ")} !important; }`,up=(t,e,n,r)=>{const i=((t,e,n={})=>{var r;let i="";if(void 0!==t.themeCSS&&(i+=`\n${t.themeCSS}`),void 0!==t.fontFamily&&(i+=`\n:root { --mermaid-font-family: ${t.fontFamily}}`),void 0!==t.altFontFamily&&(i+=`\n:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),!(0,At.Z)(n)&&Jd.includes(e)){const e=t.htmlLabels||(null==(r=t.flowchart)?void 0:r.htmlLabels)?["> *","span"]:["rect","polygon","ellipse","circle","path"];for(const t in n){const r=n[t];(0,At.Z)(r.styles)||e.forEach((t=>{i+=cp(r.id,t,r.styles)})),(0,At.Z)(r.textStyles)||(i+=cp(r.id,"tspan",r.textStyles))}}return i})(t,e,n);return F(it(`${r}{${Mr(e,i,t.themeVariables)}}`),B)},hp=(t="",e,n)=>{let r=t;return n||e||(r=r.replace(/marker-end="url\(.*?#/g,'marker-end="url(#')),r=lp(r),r=r.replace(/<br>/g,"<br/>"),r},dp=(t="",e)=>`<iframe style="width:100%;height:${e?e.viewBox.baseVal.height+"px":"100%"};border:0;margin:0;" src="data:text/html;base64,${btoa('<body style="margin:0">'+t+"</body>")}" sandbox="allow-top-navigation-by-user-activation allow-popups">\n The "iframe" tag is not supported by your browser.\n</iframe>`,pp=(t,e,n,r,i)=>{const a=t.append("div");a.attr("id",n),r&&a.attr("style",r);const s=a.append("svg").attr("id",e).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg");return i&&s.attr("xmlns:xlink",i),s.append("g"),t};function fp(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}const mp=(t,e,n,r)=>{var i,a,s;null==(i=t.getElementById(e))||i.remove(),null==(a=t.getElementById(n))||a.remove(),null==(s=t.getElementById(r))||s.remove()};function gp(t,e,n,r){var i,a;a=t,(i=e).attr("role",Qd),(0,At.Z)(a)||i.attr("aria-roledescription",a),function(t,e,n,r){if(void 0!==t.insert&&(e||n)){if(n){const e="chart-desc-"+r;t.attr("aria-describedby",e),t.insert("desc",":first-child").attr("id",e).text(n)}if(e){const n="chart-title-"+r;t.attr("aria-labelledby",n),t.insert("title",":first-child").attr("id",n).text(e)}}}(e,n,r,e.attr("id"))}const yp=Object.freeze({render:function(t,e,n,r){var i,a,s,l;Vd(),mr();const c=nr.detectInit(e);c&&(Qn(c),fr(c));const h=dr();It.debug(h),e.length>((null==h?void 0:h.maxTextSize)??5e4)&&(e=tp),e=e.replace(/\r\n?/g,"\n");const d="#"+t,p="i"+t,f="#"+p,m="d"+t,g="#"+m;let y=(0,o.Ys)("body");const b=h.securityLevel===ep,x=h.securityLevel===np,v=h.fontFamily;if(void 0!==r){if(r&&(r.innerHTML=""),b){const t=fp((0,o.Ys)(r),p);y=(0,o.Ys)(t.nodes()[0].contentDocument.body),y.node().style.margin=0}else y=(0,o.Ys)(r);pp(y,t,m,`font-family: ${v}`,rp)}else{if(mp(document,t,m,p),b){const t=fp((0,o.Ys)("body"),p);y=(0,o.Ys)(t.nodes()[0].contentDocument.body),y.node().style.margin=0}else y=(0,o.Ys)("body");pp(y,t,m)}let _,k;e=op(e);try{if(_=Xd(e),"then"in _)throw new Error("Diagram is a promise. Use renderAsync.")}catch(N){_=new Kd("error"),k=N}const T=y.select(g).node(),w=_.type,S=T.firstChild,E=S.firstChild,C=Jd.includes(w)?_.renderer.getClasses(e,_):{},D=up(h,w,C,d),A=document.createElement("style");A.innerHTML=D,S.insertBefore(A,E);try{_.renderer.draw(e,t,rr,_)}catch(M){throw jd.draw(e,t,rr),M}gp(w,y.select(`${g} svg`),null==(a=(i=_.db).getAccTitle)?void 0:a.call(i),null==(l=(s=_.db).getAccDescription)?void 0:l.call(s)),y.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",ip);let O=y.select(g).node().innerHTML;if(It.debug("config.arrowMarkerAbsolute",h.arrowMarkerAbsolute),O=hp(O,b,jt(h.arrowMarkerAbsolute)),b){const t=y.select(g+" svg").node();O=dp(O,t)}else x||(O=u().sanitize(O,{ADD_TAGS:ap,ADD_ATTR:sp}));if(void 0!==n)switch(w){case"flowchart":case"flowchart-v2":n(O,Tl.bindFunctions);break;case"gantt":n(O,hc.bindFunctions);break;case"class":case"classDiagram":n(O,ns.bindFunctions);break;default:n(O)}else It.debug("CB = undefined!");ku();const I=b?f:g,L=(0,o.Ys)(I).node();if(L&&"remove"in L&&L.remove(),k)throw k;return O},renderAsync:async function(t,e,n,r){var i,a,s,l;Vd(),mr();const c=nr.detectInit(e);c&&(Qn(c),fr(c));const h=dr();It.debug(h),e.length>((null==h?void 0:h.maxTextSize)??5e4)&&(e=tp),e=e.replace(/\r\n?/g,"\n");const d="#"+t,p="i"+t,f="#"+p,m="d"+t,g="#"+m;let y=(0,o.Ys)("body");const b=h.securityLevel===ep,x=h.securityLevel===np,v=h.fontFamily;if(void 0!==r){if(r&&(r.innerHTML=""),b){const t=fp((0,o.Ys)(r),p);y=(0,o.Ys)(t.nodes()[0].contentDocument.body),y.node().style.margin=0}else y=(0,o.Ys)(r);pp(y,t,m,`font-family: ${v}`,rp)}else{if(mp(document,t,m,p),b){const t=fp((0,o.Ys)("body"),p);y=(0,o.Ys)(t.nodes()[0].contentDocument.body),y.node().style.margin=0}else y=(0,o.Ys)("body");pp(y,t,m)}let _,k;e=op(e);try{_=await Xd(e)}catch(N){_=new Kd("error"),k=N}const T=y.select(g).node(),w=_.type,S=T.firstChild,E=S.firstChild,C=Jd.includes(w)?_.renderer.getClasses(e,_):{},D=up(h,w,C,d),A=document.createElement("style");A.innerHTML=D,S.insertBefore(A,E);try{await _.renderer.draw(e,t,rr,_)}catch(M){throw jd.draw(e,t,rr),M}gp(w,y.select(`${g} svg`),null==(a=(i=_.db).getAccTitle)?void 0:a.call(i),null==(l=(s=_.db).getAccDescription)?void 0:l.call(s)),y.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",ip);let O=y.select(g).node().innerHTML;if(It.debug("config.arrowMarkerAbsolute",h.arrowMarkerAbsolute),O=hp(O,b,jt(h.arrowMarkerAbsolute)),b){const t=y.select(g+" svg").node();O=dp(O,t)}else x||(O=u().sanitize(O,{ADD_TAGS:ap,ADD_ATTR:sp}));if(void 0!==n)switch(w){case"flowchart":case"flowchart-v2":n(O,Tl.bindFunctions);break;case"gantt":n(O,hc.bindFunctions);break;case"class":case"classDiagram":n(O,ns.bindFunctions);break;default:n(O)}else It.debug("CB = undefined!");ku();const I=b?f:g,L=(0,o.Ys)(I).node();if(L&&"remove"in L&&L.remove(),k)throw k;return O},parse:function(t,e){return Vd(),new Kd(t,e).parse(t,e)},parseAsync:async function(t,e){return Vd(),(await Xd(t,e)).parse(t,e)},parseDirective:Gr,initialize:function(t={}){var e;(null==t?void 0:t.fontFamily)&&!(null==(e=t.themeVariables)?void 0:e.fontFamily)&&(t.themeVariables={fontFamily:t.fontFamily}),ar=Mn({},t),(null==t?void 0:t.theme)&&t.theme in qt?t.themeVariables=qt[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=qt.default.getThemeVariables(t.themeVariables));const n="object"==typeof t?(t=>(sr=Mn({},ir),sr=Mn(sr,t),t.theme&&qt[t.theme]&&(sr.themeVariables=qt[t.theme].getThemeVariables(t.themeVariables)),cr(sr,or),sr))(t):ur();Lt(n.logLevel),Vd()},getConfig:dr,setConfig:hr,getSiteConfig:ur,updateSiteConfig:t=>(sr=Mn(sr,t),cr(sr,or),sr),reset:()=>{mr()},globalReset:()=>{mr(ir)},defaultConfig:ir});Lt(dr().logLevel),mr(dr());const bp=(t,e,n)=>{It.warn(t),tr(t)?(n&&n(t.str,t.hash),e.push({...t,message:t.str,error:t})):(n&&n(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},xp=async function(t,e,n){const i=yp.getConfig();let a;if(t&&(wp.sequenceConfig=t),It.debug((n?"":"No ")+"Callback function found"),void 0===e)a=document.querySelectorAll(".mermaid");else if("string"==typeof e)a=document.querySelectorAll(e);else if(e instanceof HTMLElement)a=[e];else{if(!(e instanceof NodeList))throw new Error("Invalid argument nodes for mermaid.init");a=e}It.debug(`Found ${a.length} diagrams`),void 0!==(null==t?void 0:t.startOnLoad)&&(It.debug("Start On Load: "+(null==t?void 0:t.startOnLoad)),yp.updateSiteConfig({startOnLoad:null==t?void 0:t.startOnLoad}));const s=new nr.initIdGenerator(i.deterministicIds,i.deterministicIDSeed);let o;const l=[];for(const u of Array.from(a)){if(It.info("Rendering diagram: "+u.id),u.getAttribute("data-processed"))continue;u.setAttribute("data-processed","true");const t=`mermaid-${s.next()}`;o=u.innerHTML,o=r(nr.entityDecode(o)).trim().replace(/<br\s*\/?>/gi,"<br/>");const e=nr.detectInit(o);e&&It.debug("Detected early reinit: ",e);try{await yp.renderAsync(t,o,((e,r)=>{u.innerHTML=e,void 0!==n&&n(t),r&&r(u)}),u)}catch(c){bp(c,l,wp.parseError)}}if(l.length>0)throw l[0]},vp=function(){if(wp.startOnLoad){const{startOnLoad:t}=yp.getConfig();t&&wp.init().catch((t=>It.error("Mermaid failed to initialize",t)))}};"undefined"!=typeof document&&window.addEventListener("load",vp,!1);const _p=[];let kp=!1;const Tp=async()=>{if(!kp){for(kp=!0;_p.length>0;){const e=_p.shift();if(e)try{await e()}catch(t){It.error("Error executing queue",t)}}kp=!1}},wp={startOnLoad:!0,diagrams:{},mermaidAPI:yp,parse:t=>yp.parse(t,wp.parseError),parseAsync:t=>new Promise(((e,n)=>{_p.push((()=>new Promise(((r,i)=>{yp.parseAsync(t,wp.parseError).then((t=>{r(t),e(t)}),(t=>{It.error("Error parsing",t),i(t),n(t)}))})))),Tp().catch(n)})),render:yp.render,renderAsync:(t,e,n,r)=>new Promise(((i,a)=>{_p.push((()=>new Promise(((s,o)=>{yp.renderAsync(t,e,n,r).then((t=>{s(t),i(t)}),(t=>{It.error("Error parsing",t),o(t),a(t)}))})))),Tp().catch(a)})),init:async function(t,e,n){try{await xp(t,e,n)}catch(r){It.warn("Syntax Error rendering"),tr(r)&&It.warn(r.str),wp.parseError&&wp.parseError(r)}},initThrowsErrors:function(t,e,n){const i=yp.getConfig();let a;if(t&&(wp.sequenceConfig=t),It.debug((n?"":"No ")+"Callback function found"),void 0===e)a=document.querySelectorAll(".mermaid");else if("string"==typeof e)a=document.querySelectorAll(e);else if(e instanceof HTMLElement)a=[e];else{if(!(e instanceof NodeList))throw new Error("Invalid argument nodes for mermaid.init");a=e}It.debug(`Found ${a.length} diagrams`),void 0!==(null==t?void 0:t.startOnLoad)&&(It.debug("Start On Load: "+(null==t?void 0:t.startOnLoad)),yp.updateSiteConfig({startOnLoad:null==t?void 0:t.startOnLoad}));const s=new nr.initIdGenerator(i.deterministicIds,i.deterministicIDSeed);let o;const l=[];for(const u of Array.from(a)){if(It.info("Rendering diagram: "+u.id),u.getAttribute("data-processed"))continue;u.setAttribute("data-processed","true");const t=`mermaid-${s.next()}`;o=u.innerHTML,o=r(nr.entityDecode(o)).trim().replace(/<br\s*\/?>/gi,"<br/>");const e=nr.detectInit(o);e&&It.debug("Detected early reinit: ",e);try{yp.render(t,o,((e,r)=>{u.innerHTML=e,void 0!==n&&n(t),r&&r(u)}),u)}catch(c){bp(c,l,wp.parseError)}}if(l.length>0)throw l[0]},initThrowsErrorsAsync:xp,registerExternalDiagrams:async(t,{lazyLoad:e=!0}={})=>{e?In(...t):await(async(...t)=>{It.debug(`Loading ${t.length} external diagrams`);const e=(await Promise.allSettled(t.map((async({id:t,detector:e,loader:n})=>{const{diagram:r}=await n();ii(t,r,e)})))).filter((t=>"rejected"===t.status));if(e.length>0){It.error(`Failed to load ${e.length} external diagrams`);for(const t of e)It.error(t);throw new Error(`Failed to load ${e.length} external diagrams`)}})(...t)},initialize:function(t){yp.initialize(t)},parseError:void 0,contentLoaded:vp,setParseErrorHandler:function(t){wp.parseError=t}}},2944:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"}},7594:(t,e)=>{function n(t){let e,n=[];for(let r of t.split(",").map((t=>t.trim())))if(/^-?\d+$/.test(r))n.push(parseInt(r,10));else if(e=r.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[t,r,i,a]=e;if(r&&a){r=parseInt(r),a=parseInt(a);const t=r<a?1:-1;"-"!==i&&".."!==i&&"\u2025"!==i||(a+=t);for(let e=r;e!==a;e+=t)n.push(e)}}return n}e.default=n,t.exports=n},349:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="// Copyright 2018 ConsenSys AG\n\n// Licensed under the Apache License, Version 2.0(the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n\n// http://www.apache.org/licenses/LICENSE-2.0\n\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Resolver, parse } from '../resolver'\n\ndescribe('resolver', () => {\n describe('parse()', () => {\n it('returns parts', () => {\n expect(parse('did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX')).toEqual({\n method: 'uport',\n id: '2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n did: 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n didUrl: 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n })\n expect(parse('did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX/some/path')).toEqual({\n method: 'uport',\n id: '2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n did: 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n didUrl: 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX/some/path',\n path: '/some/path',\n })\n expect(parse('did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX#fragment=123')).toEqual({\n method: 'uport',\n id: '2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n did: 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n didUrl: 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX#fragment=123',\n fragment: 'fragment=123',\n })\n expect(parse('did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX/some/path#fragment=123')).toEqual({\n method: 'uport',\n id: '2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n did: 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX',\n didUrl: 'did:uport:2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX/some/path#fragment=123',\n path: '/some/path',\n fragment: 'fragment=123',\n })\n expect(parse('did:nacl:Md8JiMIwsapml_FtQ2ngnGftNP5UmVCAUuhnLyAsPxI')).toEqual({\n method: 'nacl',\n id: 'Md8JiMIwsapml_FtQ2ngnGftNP5UmVCAUuhnLyAsPxI',\n did: 'did:nacl:Md8JiMIwsapml_FtQ2ngnGftNP5UmVCAUuhnLyAsPxI',\n didUrl: 'did:nacl:Md8JiMIwsapml_FtQ2ngnGftNP5UmVCAUuhnLyAsPxI',\n })\n expect(parse('did:example:21tDAKCERh95uGgKbJNHYp;service=agent;foo:bar=high')).toEqual({\n method: 'example',\n id: '21tDAKCERh95uGgKbJNHYp',\n did: 'did:example:21tDAKCERh95uGgKbJNHYp',\n didUrl: 'did:example:21tDAKCERh95uGgKbJNHYp;service=agent;foo:bar=high',\n params: {\n service: 'agent',\n 'foo:bar': 'high',\n },\n })\n expect(parse('did:example:21tDAKCERh95uGgKbJNHYp;service=agent;foo:bar=high?foo=bar')).toEqual({\n method: 'example',\n id: '21tDAKCERh95uGgKbJNHYp',\n didUrl: 'did:example:21tDAKCERh95uGgKbJNHYp;service=agent;foo:bar=high?foo=bar',\n did: 'did:example:21tDAKCERh95uGgKbJNHYp',\n query: 'foo=bar',\n params: {\n service: 'agent',\n 'foo:bar': 'high',\n },\n })\n expect(parse('did:example:21tDAKCERh95uGgKbJNHYp;service=agent;foo:bar=high/some/path?foo=bar#key1')).toEqual({\n method: 'example',\n id: '21tDAKCERh95uGgKbJNHYp',\n didUrl: 'did:example:21tDAKCERh95uGgKbJNHYp;service=agent;foo:bar=high/some/path?foo=bar#key1',\n did: 'did:example:21tDAKCERh95uGgKbJNHYp',\n query: 'foo=bar',\n path: '/some/path',\n fragment: 'key1',\n params: {\n service: 'agent',\n 'foo:bar': 'high',\n },\n })\n expect(parse('did:web:example.com%3A8443')).toEqual({\n method: 'web',\n id: 'example.com%3A8443',\n didUrl: 'did:web:example.com%3A8443',\n did: 'did:web:example.com%3A8443',\n })\n expect(parse('did:web:example.com:path:some%2Bsubpath')).toEqual({\n method: 'web',\n id: 'example.com:path:some%2Bsubpath',\n didUrl: 'did:web:example.com:path:some%2Bsubpath',\n did: 'did:web:example.com:path:some%2Bsubpath',\n })\n expect(\n parse('did:example:test:21tDAKCERh95uGgKbJNHYp;service=agent;foo:bar=high/some/path?foo=bar#key1')\n ).toEqual({\n method: 'example',\n id: 'test:21tDAKCERh95uGgKbJNHYp',\n didUrl: 'did:example:test:21tDAKCERh95uGgKbJNHYp;service=agent;foo:bar=high/some/path?foo=bar#key1',\n did: 'did:example:test:21tDAKCERh95uGgKbJNHYp',\n query: 'foo=bar',\n path: '/some/path',\n fragment: 'key1',\n params: {\n service: 'agent',\n 'foo:bar': 'high',\n },\n })\n expect(parse('did:123:test::test2')).toEqual({\n method: '123',\n id: 'test::test2',\n didUrl: 'did:123:test::test2',\n did: 'did:123:test::test2',\n })\n expect(parse('did:method:%12%AF')).toEqual({\n method: 'method',\n id: '%12%AF',\n didUrl: 'did:method:%12%AF',\n did: 'did:method:%12%AF',\n })\n })\n\n it('returns null if non compliant', () => {\n expect(parse('')).toEqual(null)\n expect(parse('did:')).toEqual(null)\n expect(parse('did:uport')).toEqual(null)\n expect(parse('did:uport:')).toEqual(null)\n expect(parse('did:uport:1234_12313***')).toEqual(null)\n expect(parse('2nQtiQG6Cgm1GYTBaaKAgr76uY7iSexUkqX')).toEqual(null)\n expect(parse('did:method:%12%1')).toEqual(null)\n expect(parse('did:method:%1233%Ay')).toEqual(null)\n expect(parse('did:CAP:id')).toEqual(null)\n expect(parse('did:method:id::anotherid%r9')).toEqual(null)\n })\n })\n\n describe('resolve', () => {\n let resolver: Resolver\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let mockmethod: any\n const mockReturn = Promise.resolve({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n beforeAll(() => {\n mockmethod = jest.fn().mockReturnValue(mockReturn)\n resolver = new Resolver({\n example: async (did: string) => ({\n didResolutionMetadata: { contentType: 'application/did+ld+json' },\n didDocument: {\n '@context': 'https://w3id.org/did/v1',\n id: did,\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n }),\n mock: mockmethod,\n })\n })\n\n it('fails on unhandled methods', async () => {\n await expect(resolver.resolve('did:borg:2nQtiQG6Cgm1GY')).resolves.toEqual({\n didResolutionMetadata: { error: 'unsupportedDidMethod' },\n didDocument: null,\n didDocumentMetadata: {},\n })\n })\n\n it('fails on parse error', async () => {\n await expect(resolver.resolve('did:borg:')).resolves.toEqual({\n didResolutionMetadata: { error: 'invalidDid' },\n didDocument: null,\n didDocumentMetadata: {},\n })\n })\n\n it('resolves did document', async () => {\n await expect(resolver.resolve('did:example:123456789')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+ld+json' },\n didDocument: {\n '@context': 'https://w3id.org/did/v1',\n id: 'did:example:123456789',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n })\n\n it('resolves did document with legacy resolver', async () => {\n const resolverWithLegacy = new Resolver(\n {},\n {\n legacyResolvers: {\n legacy: async (did: string) => ({\n '@context': 'https://w3id.org/did/v1',\n id: did,\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n }),\n },\n }\n )\n\n await expect(resolverWithLegacy.resolve('did:legacy:123456789')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+ld+json' },\n didDocument: {\n '@context': 'https://w3id.org/did/v1',\n id: 'did:legacy:123456789',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n })\n\n it('throws on null document', async () => {\n mockmethod = jest.fn().mockReturnValue(\n Promise.resolve({\n didResolutionMetadata: { error: 'notFound' },\n didDocument: null,\n didDocumentMetadata: {},\n })\n )\n const nullRes = new Resolver({\n nuller: mockmethod,\n })\n\n await expect(nullRes.resolve('did:nuller:asdfghjk')).resolves.toEqual({\n didResolutionMetadata: { error: 'notFound' },\n didDocument: null,\n didDocumentMetadata: {},\n })\n })\n\n describe('caching', () => {\n describe('default', () => {\n it('should not cache', async () => {\n mockmethod = jest.fn().mockReturnValue(mockReturn)\n resolver = new Resolver({\n mock: mockmethod,\n })\n\n await expect(resolver.resolve('did:mock:abcdef')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n await expect(resolver.resolve('did:mock:abcdef')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n return expect(mockmethod).toBeCalledTimes(2)\n })\n })\n })\n\n describe('cache=true', () => {\n it('should cache', async () => {\n mockmethod = jest.fn().mockReturnValue(mockReturn)\n resolver = new Resolver(\n {\n mock: mockmethod,\n },\n { cache: true }\n )\n\n await expect(resolver.resolve('did:mock:abcdef')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n await expect(resolver.resolve('did:mock:abcdef')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n return expect(mockmethod).toBeCalledTimes(1)\n })\n\n it('should respect no-cache', async () => {\n mockmethod = jest.fn().mockReturnValue(mockReturn)\n resolver = new Resolver(\n {\n mock: mockmethod,\n },\n { cache: true }\n )\n\n await expect(resolver.resolve('did:mock:abcdef')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n await expect(resolver.resolve('did:mock:abcdef;no-cache=true')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n return expect(mockmethod).toBeCalledTimes(2)\n })\n\n it('should not cache with different params', async () => {\n mockmethod = jest.fn().mockReturnValue(mockReturn)\n resolver = new Resolver(\n {\n mock: mockmethod,\n },\n { cache: true }\n )\n\n await expect(resolver.resolve('did:mock:abcdef')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n await expect(resolver.resolve('did:mock:abcdef?versionId=2')).resolves.toEqual({\n didResolutionMetadata: { contentType: 'application/did+json' },\n didDocument: {\n id: 'did:mock:abcdef',\n verificationMethod: [\n {\n id: 'owner',\n controller: '1234',\n type: 'xyz',\n },\n ],\n },\n didDocumentMetadata: {},\n })\n return expect(mockmethod).toBeCalledTimes(2)\n })\n\n it('should not cache null docs', async () => {\n mockmethod = jest.fn().mockReturnValue(\n Promise.resolve({\n didResolutionMetadata: { error: 'notFound' },\n didDocument: null,\n didDocumentMetadata: {},\n })\n )\n resolver = new Resolver(\n {\n mock: mockmethod,\n },\n { cache: true }\n )\n\n await expect(resolver.resolve('did:mock:abcdef')).resolves.toEqual({\n didResolutionMetadata: { error: 'notFound' },\n didDocument: null,\n didDocumentMetadata: {},\n })\n await expect(resolver.resolve('did:mock:abcdef')).resolves.toEqual({\n didResolutionMetadata: { error: 'notFound' },\n didDocument: null,\n didDocumentMetadata: {},\n })\n return expect(mockmethod).toBeCalledTimes(2)\n })\n })\n })\n})\n"},5883:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="// Copyright 2018 Consensys AG\n\n// Licensed under the Apache License, Version 2.0(the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n\n// http://www.apache.org/licenses/LICENSE-2.0\n\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Extensible = Record<string, any>\n\nexport interface DIDResolutionResult {\n '@context'?: 'https://w3id.org/did-resolution/v1' | string | string[]\n didResolutionMetadata: DIDResolutionMetadata\n didDocument: DIDDocument | null\n didDocumentMetadata: DIDDocumentMetadata\n}\n\nexport interface DIDResolutionOptions extends Extensible {\n accept?: string\n}\n\nexport interface DIDResolutionMetadata extends Extensible {\n contentType?: string\n error?: 'invalidDid' | 'notFound' | 'representationNotSupported' | 'unsupportedDidMethod' | string\n}\n\nexport interface DIDDocumentMetadata extends Extensible {\n created?: string\n updated?: string\n deactivated?: boolean\n versionId?: string\n nextUpdate?: string\n nextVersionId?: string\n equivalentId?: string\n canonicalId?: string\n}\n\nexport type KeyCapabilitySection =\n | 'authentication'\n | 'assertionMethod'\n | 'keyAgreement'\n | 'capabilityInvocation'\n | 'capabilityDelegation'\n\nexport type DIDDocument = {\n '@context'?: 'https://www.w3.org/ns/did/v1' | string | string[]\n id: string\n alsoKnownAs?: string[]\n controller?: string | string[]\n verificationMethod?: VerificationMethod[]\n service?: ServiceEndpoint[]\n /**\n * @deprecated\n */\n publicKey?: VerificationMethod[]\n} & {\n [x in KeyCapabilitySection]?: (string | VerificationMethod)[]\n}\n\nexport interface ServiceEndpoint {\n id: string\n type: string\n serviceEndpoint: string\n description?: string\n}\n\n/**\n * Encapsulates a JSON web key type that includes only the public properties that\n * can be used in DID documents.\n *\n * The private properties are intentionally omitted to discourage the use\n * (and accidental disclosure) of private keys in DID documents.\n */\nexport interface JsonWebKey extends Extensible {\n alg?: string\n crv?: string\n e?: string\n ext?: boolean\n key_ops?: string[]\n kid?: string\n kty: string\n n?: string\n use?: string\n x?: string\n y?: string\n}\n\nexport interface VerificationMethod {\n id: string\n type: string\n controller: string\n publicKeyBase58?: string\n publicKeyBase64?: string\n publicKeyJwk?: JsonWebKey\n publicKeyHex?: string\n publicKeyMultibase?: string\n blockchainAccountId?: string\n ethereumAddress?: string\n}\n\nexport interface Params {\n [index: string]: string\n}\n\nexport interface ParsedDID {\n did: string\n didUrl: string\n method: string\n id: string\n path?: string\n fragment?: string\n query?: string\n params?: Params\n}\n\nexport type DIDResolver = (\n did: string,\n parsed: ParsedDID,\n resolver: Resolvable,\n options: DIDResolutionOptions\n) => Promise<DIDResolutionResult>\nexport type WrappedResolver = () => Promise<DIDResolutionResult>\nexport type DIDCache = (parsed: ParsedDID, resolve: WrappedResolver) => Promise<DIDResolutionResult>\nexport type LegacyDIDResolver = (did: string, parsed: ParsedDID, resolver: Resolvable) => Promise<DIDDocument>\n\nexport type ResolverRegistry = Record<string, DIDResolver>\n\nexport interface LegacyResolverRegistry {\n [index: string]: LegacyDIDResolver\n}\n\nexport interface ResolverOptions {\n cache?: DIDCache | boolean | undefined\n legacyResolvers?: LegacyResolverRegistry\n}\n\nexport function inMemoryCache(): DIDCache {\n const cache: Map<string, DIDResolutionResult> = new Map()\n return async (parsed: ParsedDID, resolve) => {\n if (parsed.params && parsed.params['no-cache'] === 'true') return await resolve()\n\n const cached = cache.get(parsed.didUrl)\n if (cached !== undefined) return cached\n const result = await resolve()\n if (result.didResolutionMetadata?.error !== 'notFound') {\n cache.set(parsed.didUrl, result)\n }\n return result\n }\n}\n\nexport function noCache(parsed: ParsedDID, resolve: WrappedResolver): Promise<DIDResolutionResult> {\n return resolve()\n}\n\nconst PCT_ENCODED = '(?:%[0-9a-fA-F]{2})'\nconst ID_CHAR = `(?:[a-zA-Z0-9._-]|${PCT_ENCODED})`\nconst METHOD = '([a-z0-9]+)'\nconst METHOD_ID = `((?:${ID_CHAR}*:)*(${ID_CHAR}+))`\nconst PARAM_CHAR = '[a-zA-Z0-9_.:%-]'\nconst PARAM = `;${PARAM_CHAR}+=${PARAM_CHAR}*`\nconst PARAMS = `((${PARAM})*)`\nconst PATH = `(/[^#?]*)?`\nconst QUERY = `([?][^#]*)?`\nconst FRAGMENT = `(#.*)?`\nconst DID_MATCHER = new RegExp(`^did:${METHOD}:${METHOD_ID}${PARAMS}${PATH}${QUERY}${FRAGMENT}$`)\n\nexport function parse(didUrl: string): ParsedDID | null {\n if (didUrl === '' || !didUrl) return null\n const sections = didUrl.match(DID_MATCHER)\n if (sections) {\n const parts: ParsedDID = {\n did: `did:${sections[1]}:${sections[2]}`,\n method: sections[1],\n id: sections[2],\n didUrl,\n }\n if (sections[4]) {\n const params = sections[4].slice(1).split(';')\n parts.params = {}\n for (const p of params) {\n const kv = p.split('=')\n parts.params[kv[0]] = kv[1]\n }\n }\n if (sections[6]) parts.path = sections[6]\n if (sections[7]) parts.query = sections[7].slice(1)\n if (sections[8]) parts.fragment = sections[8].slice(1)\n return parts\n }\n return null\n}\n\nconst EMPTY_RESULT: DIDResolutionResult = {\n didResolutionMetadata: {},\n didDocument: null,\n didDocumentMetadata: {},\n}\n\nexport function wrapLegacyResolver(resolve: LegacyDIDResolver): DIDResolver {\n return async (did, parsed, resolver) => {\n try {\n const doc = await resolve(did, parsed, resolver)\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: { contentType: 'application/did+ld+json' },\n didDocument: doc,\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: {\n error: 'notFound',\n message: e.toString(), // This is not in spec, but may be helpful\n },\n }\n }\n }\n}\n\nexport interface Resolvable {\n resolve: (didUrl: string, options?: DIDResolutionOptions) => Promise<DIDResolutionResult>\n}\n\nexport class Resolver implements Resolvable {\n private registry: ResolverRegistry\n private cache: DIDCache\n\n constructor(registry: ResolverRegistry = {}, options: ResolverOptions = {}) {\n this.registry = registry\n this.cache = options.cache === true ? inMemoryCache() : options.cache || noCache\n if (options.legacyResolvers) {\n Object.keys(options.legacyResolvers).map((methodName) => {\n if (!this.registry[methodName]) {\n this.registry[methodName] = wrapLegacyResolver(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n options.legacyResolvers![methodName]\n )\n }\n })\n }\n }\n\n async resolve(didUrl: string, options: DIDResolutionOptions = {}): Promise<DIDResolutionResult> {\n const parsed = parse(didUrl)\n if (parsed === null) {\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: { error: 'invalidDid' },\n }\n }\n const resolver = this.registry[parsed.method]\n if (!resolver) {\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: { error: 'unsupportedDidMethod' },\n }\n }\n return this.cache(parsed, () => resolver(parsed.did, parsed, this, options))\n }\n}\n"},8105:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="import Duration, { friendlyDuration } from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Settings from \"./settings.js\";\nimport Info from \"./info.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport {\n isUndefined,\n maybeArray,\n isDate,\n isNumber,\n bestBy,\n daysInMonth,\n daysInYear,\n isLeapYear,\n weeksInWeekYear,\n normalizeObject,\n roundTo,\n objToLocalTS\n} from \"./impl/util.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport diff from \"./impl/diff.js\";\nimport { parseRFC2822Date, parseISODate, parseHTTPDate, parseSQL } from \"./impl/regexParser.js\";\nimport { parseFromTokens, explainFromTokens } from \"./impl/tokenParser.js\";\nimport {\n gregorianToWeek,\n weekToGregorian,\n gregorianToOrdinal,\n ordinalToGregorian,\n hasInvalidGregorianData,\n hasInvalidWeekData,\n hasInvalidOrdinalData,\n hasInvalidTimeData\n} from \"./impl/conversions.js\";\nimport * as Formats from \"./impl/formats.js\";\nimport {\n InvalidArgumentError,\n ConflictingSpecificationError,\n InvalidUnitError,\n InvalidDateTimeError\n} from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid DateTime\";\nconst MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", `the zone \"${zone.name}\" is not supported`);\n}\n\n// we cache week data on the DT object and this intermediates the cache\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n return dt.weekData;\n}\n\n// clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\nfunction clone(inst, alts) {\n const current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid\n };\n return new DateTime(Object.assign({}, current, alts, { old: current }));\n}\n\n// find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - o * 60 * 1000;\n\n // Test whether the zone matches the offset for this ts\n const o2 = tz.offset(utcGuess);\n\n // If so, offset didn't change and we're done\n if (o === o2) {\n return [utcGuess, o];\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= (o2 - o) * 60 * 1000;\n\n // If that gives us the local time we want, we're done\n const o3 = tz.offset(utcGuess);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\n// convert an epoch timestamp into a calendar object with the given offset\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n\n const d = new Date(ts);\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds()\n };\n}\n\n// convert a calendar object to a epoch timestamp\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\n// create a new DT instance by adding a duration, adjusting for DSTs\nfunction adjustTime(inst, dur) {\n const oPre = inst.o,\n year = inst.c.year + Math.trunc(dur.years),\n month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n c = Object.assign({}, inst.c, {\n year,\n month,\n day:\n Math.min(inst.c.day, daysInMonth(year, month)) +\n Math.trunc(dur.days) +\n Math.trunc(dur.weeks) * 7\n }),\n millisToAdd = Duration.fromObject({\n years: dur.years - Math.trunc(dur.years),\n quarters: dur.quarters - Math.trunc(dur.quarters),\n months: dur.months - Math.trunc(dur.months),\n weeks: dur.weeks - Math.trunc(dur.weeks),\n days: dur.days - Math.trunc(dur.days),\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n if (millisToAdd !== 0) {\n ts += millisToAdd;\n // that could have changed the offset by going over a DST, but we want to keep the ts the same\n o = inst.zone.offset(ts);\n }\n\n return { ts, o };\n}\n\n// helper useful in turning the results of parsing into real dates\n// by handling the zone options\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text) {\n const { setZone, zone } = opts;\n if (parsed && Object.keys(parsed).length !== 0) {\n const interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(\n Object.assign(parsed, opts, {\n zone: interpretationZone,\n // setZone is a valid option in the calling methods, but not in fromObject\n setZone: undefined\n })\n );\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(\n new Invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ${format}`)\n );\n }\n}\n\n// if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\nfunction toTechFormat(dt, format, allowZ = true) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ,\n forceSimple: true\n }).formatDateTimeFromString(dt, format)\n : null;\n}\n\n// technical time formats (e.g. the time part of ISO 8601), take some options\n// and this commonizes their handling\nfunction toTechTimeFormat(\n dt,\n {\n suppressSeconds = false,\n suppressMilliseconds = false,\n includeOffset,\n includePrefix = false,\n includeZone = false,\n spaceZone = false,\n format = \"extended\"\n }\n) {\n let fmt = format === \"basic\" ? \"HHmm\" : \"HH:mm\";\n\n if (!suppressSeconds || dt.second !== 0 || dt.millisecond !== 0) {\n fmt += format === \"basic\" ? \"ss\" : \":ss\";\n if (!suppressMilliseconds || dt.millisecond !== 0) {\n fmt += \".SSS\";\n }\n }\n\n if ((includeZone || includeOffset) && spaceZone) {\n fmt += \" \";\n }\n\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += format === \"basic\" ? \"ZZZ\" : \"ZZ\";\n }\n\n let str = toTechFormat(dt, fmt);\n\n if (includePrefix) {\n str = \"T\" + str;\n }\n\n return str;\n}\n\n// defaults for unspecified units in the supported calendars\nconst defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n },\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n },\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n };\n\n// Units in the supported calendars, sorted by bigness\nconst orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\n \"weekYear\",\n \"weekNumber\",\n \"weekday\",\n \"hour\",\n \"minute\",\n \"second\",\n \"millisecond\"\n ],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n// standardize case and plurality in units\nfunction normalizeUnit(unit) {\n const normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\"\n }[unit.toLowerCase()];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n}\n\n// this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\nfunction quickDT(obj, zone) {\n // assume we have the higher-order units\n for (const u of orderedUnits) {\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n const tsNow = Settings.now(),\n offsetProvis = zone.offset(tsNow),\n [ts, o] = objToTS(obj, offsetProvis, zone);\n\n return new DateTime({\n ts,\n zone,\n o\n });\n}\n\nfunction diffRelative(start, end, opts) {\n const round = isUndefined(opts.round) ? true : opts.round,\n format = (c, unit) => {\n c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n const formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = unit => {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end\n .startOf(unit)\n .diff(start.startOf(unit), unit)\n .get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (const unit of opts.units) {\n const count = differ(unit);\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\n}\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link local}, {@link utc}, and (most flexibly) {@link fromObject}. To create one from a standard string format, use {@link fromISO}, {@link fromHTTP}, and {@link fromRFC2822}. To create one from a custom string format, use {@link fromFormat}. To create one from a native JS date, use {@link fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link toObject}), use the {@link year}, {@link month},\n * {@link day}, {@link hour}, {@link minute}, {@link second}, {@link millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link weekYear}, {@link weekNumber}, and {@link weekday} accessors.\n * * **Configuration** See the {@link locale} and {@link numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link set}, {@link reconfigure}, {@link setZone}, {@link setLocale}, {@link plus}, {@link minus}, {@link endOf}, {@link startOf}, {@link toUTC}, and {@link toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link toRelative}, {@link toRelativeCalendar}, {@link toJSON}, {@link toISO}, {@link toHTTP}, {@link toObject}, {@link toRFC2822}, {@link toString}, {@link toLocaleString}, {@link toFormat}, {@link toMillis} and {@link toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport default class DateTime {\n /**\n * @access private\n */\n constructor(config) {\n const zone = config.zone || Settings.defaultZone;\n\n let invalid =\n config.invalid ||\n (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) ||\n (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n\n let c = null,\n o = null;\n if (!invalid) {\n const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n [c, o] = [config.old.c, config.old.o];\n } else {\n const ot = zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n\n /**\n * @access private\n */\n this._zone = zone;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.invalid = invalid;\n /**\n * @access private\n */\n this.weekData = null;\n /**\n * @access private\n */\n this.c = c;\n /**\n * @access private\n */\n this.o = o;\n /**\n * @access private\n */\n this.isLuxonDateTime = true;\n }\n\n // CONSTRUCT\n\n /**\n * Create a DateTime for the current instant, in the system's time zone.\n *\n * Use Settings to override these default values if needed.\n * @example DateTime.now().toISO() //~> now in the ISO format\n * @return {DateTime}\n */\n static now() {\n return new DateTime({});\n }\n\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month, 1-indexed\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12) //~> 2017-03-12T00:00:00\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n static local(year, month, day, hour, minute, second, millisecond) {\n if (isUndefined(year)) {\n return DateTime.now();\n } else {\n return quickDT(\n {\n year,\n month,\n day,\n hour,\n minute,\n second,\n millisecond\n },\n Settings.defaultZone\n );\n }\n }\n\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765Z\n * @return {DateTime}\n */\n static utc(year, month, day, hour, minute, second, millisecond) {\n if (isUndefined(year)) {\n return new DateTime({\n ts: Settings.now(),\n zone: FixedOffsetZone.utcInstance\n });\n } else {\n return quickDT(\n {\n year,\n month,\n day,\n hour,\n minute,\n second,\n millisecond\n },\n FixedOffsetZone.utcInstance\n );\n }\n }\n\n /**\n * Create a DateTime from a JavaScript Date object. Uses the default zone.\n * @param {Date} date - a JavaScript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n static fromJSDate(date, options = {}) {\n const ts = isDate(date) ? date.valueOf() : NaN;\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n const zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options)\n });\n }\n\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromMillis(milliseconds, options = {}) {\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\n `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`\n );\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options)\n });\n }\n }\n\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromSeconds(seconds, options = {}) {\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options)\n });\n }\n }\n\n /**\n * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {string|Zone} [obj.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [obj.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} obj.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} obj.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @return {DateTime}\n */\n static fromObject(obj) {\n const zoneToUse = normalizeZone(obj.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n const tsNow = Settings.now(),\n offsetProvis = zoneToUse.offset(tsNow),\n normalized = normalizeObject(obj, normalizeUnit, [\n \"zone\",\n \"locale\",\n \"outputCalendar\",\n \"numberingSystem\"\n ]),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber,\n loc = Locale.fromObject(obj);\n\n // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n // configure ourselves to deal with gregorian dates or week stuff\n let units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits;\n defaultValues = defaultUnitValues;\n }\n\n // set default values for missing stuff\n let foundFirst = false;\n for (const u of units) {\n const v = normalized[u];\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n }\n\n // make sure the values we have are in range\n const higherOrderInvalid = useWeekData\n ? hasInvalidWeekData(normalized)\n : containsOrdinal\n ? hasInvalidOrdinalData(normalized)\n : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n // compute the actual time\n const gregorian = useWeekData\n ? weekToGregorian(normalized)\n : containsOrdinal\n ? ordinalToGregorian(normalized)\n : normalized,\n [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc\n });\n\n // gregorian data + weekday serves only to validate\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\n \"mismatched weekday\",\n `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`\n );\n }\n\n return inst;\n }\n\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n static fromISO(text, opts = {}) {\n const [vals, parsedZone] = parseISODate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n static fromRFC2822(text, opts = {}) {\n const [vals, parsedZone] = parseRFC2822Date(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n static fromHTTP(text, opts = {}) {\n const [vals, parsedZone] = parseHTTPDate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @see https://moment.github.io/luxon/docs/manual/parsing.html#table-of-tokens\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromFormat(text, fmt, opts = {}) {\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true\n }),\n [vals, parsedZone, invalid] = parseFromTokens(localeToUse, text, fmt);\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text);\n }\n }\n\n /**\n * @deprecated use fromFormat instead\n */\n static fromString(text, fmt, opts = {}) {\n return DateTime.fromFormat(text, fmt, opts);\n }\n\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n static fromSQL(text, opts = {}) {\n const [vals, parsedZone] = parseSQL(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n\n /**\n * Create an invalid DateTime.\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({ invalid });\n }\n }\n\n /**\n * Check if an object is a DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDateTime(o) {\n return (o && o.isLuxonDateTime) || false;\n }\n\n // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n get(unit) {\n return this[unit];\n }\n\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n get outputCalendar() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n get zone() {\n return this._zone;\n }\n\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n get zoneName() {\n return this.isValid ? this.zone.name : null;\n }\n\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n get year() {\n return this.isValid ? this.c.year : NaN;\n }\n\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n get quarter() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n get month() {\n return this.isValid ? this.c.month : NaN;\n }\n\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n get day() {\n return this.isValid ? this.c.day : NaN;\n }\n\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n get hour() {\n return this.isValid ? this.c.hour : NaN;\n }\n\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n get minute() {\n return this.isValid ? this.c.minute : NaN;\n }\n\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n get second() {\n return this.isValid ? this.c.second : NaN;\n }\n\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n get millisecond() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\n * @type {number}\n */\n get weekYear() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n get weekNumber() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n get weekday() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n get ordinal() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n get monthShort() {\n return this.isValid ? Info.months(\"short\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n get monthLong() {\n return this.isValid ? Info.months(\"long\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n get weekdayShort() {\n return this.isValid ? Info.weekdays(\"short\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n get weekdayLong() {\n return this.isValid ? Info.weekdays(\"long\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.now().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n get offset() {\n return this.isValid ? +this.o : NaN;\n }\n\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameShort() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameLong() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n get isOffsetFixed() {\n return this.isValid ? this.zone.universal : null;\n }\n\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n get isInDST() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return (\n this.offset > this.set({ month: 1 }).offset || this.offset > this.set({ month: 5 }).offset\n );\n }\n }\n\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n get isInLeapYear() {\n return isLeapYear(this.year);\n }\n\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n get daysInMonth() {\n return daysInMonth(this.year, this.month);\n }\n\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n get daysInYear() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n get weeksInWeekYear() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n resolvedLocaleOpts(opts = {}) {\n const { locale, numberingSystem, calendar } = Formatter.create(\n this.loc.clone(opts),\n opts\n ).resolvedOptions(this);\n return { locale, numberingSystem, outputCalendar: calendar };\n }\n\n // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n toUTC(offset = 0, opts = {}) {\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link plus}. You may wish to use {@link toLocal} and {@link toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {\n zone = normalizeZone(zone, Settings.defaultZone);\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n let newTS = this.ts;\n if (keepLocalTime || keepCalendarTime) {\n const offsetGuess = zone.offset(this.ts);\n const asObj = this.toObject();\n [newTS] = objToTS(asObj, offsetGuess, zone);\n }\n return clone(this, { ts: newTS, zone });\n }\n }\n\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n return clone(this, { loc });\n }\n\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n setLocale(locale) {\n return this.reconfigure({ locale });\n }\n\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link reconfigure} and {@link setZone}.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const normalized = normalizeObject(values, normalizeUnit, []),\n settingWeekStuff =\n !isUndefined(normalized.weekYear) ||\n !isUndefined(normalized.weekNumber) ||\n !isUndefined(normalized.weekday),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n let mixed;\n if (settingWeekStuff) {\n mixed = weekToGregorian(Object.assign(gregorianToWeek(this.c), normalized));\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian(Object.assign(gregorianToOrdinal(this.c), normalized));\n } else {\n mixed = Object.assign(this.toObject(), normalized);\n\n // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n const [ts, o] = objToTS(mixed, this.o, this.zone);\n return clone(this, { ts, o });\n }\n\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.now().plus(123) //~> in 123 milliseconds\n * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = friendlyDuration(duration);\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = friendlyDuration(duration).negate();\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n startOf(unit) {\n if (!this.isValid) return this;\n const o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n case \"hours\":\n o.minute = 0;\n // falls through\n case \"minutes\":\n o.second = 0;\n // falls through\n case \"seconds\":\n o.millisecond = 0;\n break;\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n o.weekday = 1;\n }\n\n if (normalizedUnit === \"quarters\") {\n const q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n endOf(unit) {\n return this.isValid\n ? this.plus({ [unit]: 1 })\n .startOf(unit)\n .minus(1)\n : this;\n }\n\n // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/docs/manual/formatting.html#table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @see https://moment.github.io/luxon/docs/manual/formatting.html#table-of-tokens\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options\n * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param opts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @example DateTime.now().toLocaleString(); //=> 4/20/2017\n * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString({ locale: 'en-gb' }); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hour12: false }); //=> '11:32'\n * @return {string}\n */\n toLocaleString(opts = Formats.DATE_SHORT) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTime(this)\n : INVALID;\n }\n\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.now().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n toLocaleParts(opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this)\n : [];\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @return {string}\n */\n toISO(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toISODate(opts)}T${this.toISOTime(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @return {string}\n */\n toISODate({ format = \"extended\" } = {}) {\n let fmt = format === \"basic\" ? \"yyyyMMdd\" : \"yyyy-MM-dd\";\n if (this.year > 9999) {\n fmt = \"+\" + fmt;\n }\n\n return toTechFormat(this, fmt);\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\n * @return {string}\n */\n toISOTime({\n suppressMilliseconds = false,\n suppressSeconds = false,\n includeOffset = true,\n includePrefix = false,\n format = \"extended\"\n } = {}) {\n return toTechTimeFormat(this, {\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n includePrefix,\n format\n });\n }\n\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime, always in UTC\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string}\n */\n toSQLDate() {\n return toTechFormat(this, \"yyyy-MM-dd\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n toSQLTime({ includeOffset = true, includeZone = false } = {}) {\n return toTechTimeFormat(this, {\n includeOffset,\n includeZone,\n spaceZone: true\n });\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n toSQL(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n toString() {\n return this.isValid ? this.toISO() : INVALID;\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n\n /**\n * Returns the epoch seconds of this DateTime.\n * @return {number}\n */\n toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n toBSON() {\n return this.toJSDate();\n }\n\n /**\n * Returns a JavaScript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = Object.assign({}, this.c);\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns a JavaScript Date equivalent to this DateTime.\n * @return {Date}\n */\n toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n }\n\n // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n diff(otherDateTime, unit = \"milliseconds\", opts = {}) {\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(\n this.invalid || otherDateTime.invalid,\n \"created by diffing an invalid DateTime\"\n );\n }\n\n const durOpts = Object.assign(\n { locale: this.locale, numberingSystem: this.numberingSystem },\n opts\n );\n\n const units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n\n /**\n * Return the difference between this DateTime and right now.\n * See {@link diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n diffNow(unit = \"milliseconds\", opts = {}) {\n return this.diff(DateTime.now(), unit, opts);\n }\n\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval}\n */\n until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime.\n * Higher-order units must also be identical for this function to return `true`.\n * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link setZone} to convert one of the dates if needed.\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\n * @return {boolean}\n */\n hasSame(otherDateTime, unit) {\n if (!this.isValid) return false;\n\n const inputMs = otherDateTime.valueOf();\n const otherZoneDateTime = this.setZone(otherDateTime.zone, { keepLocalTime: true });\n return otherZoneDateTime.startOf(unit) <= inputMs && inputMs <= otherZoneDateTime.endOf(unit);\n }\n\n /**\n * Equality check\n * Two DateTimes are equal iff they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n equals(other) {\n return (\n this.isValid &&\n other.isValid &&\n this.valueOf() === other.valueOf() &&\n this.zone.equals(other.zone) &&\n this.loc.equals(other.loc)\n );\n }\n\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds down by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 d\xeda\"\n * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n toRelative(options = {}) {\n if (!this.isValid) return null;\n const base = options.base || DateTime.fromObject({ zone: this.zone }),\n padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;\n let units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\n let unit = options.unit;\n if (Array.isArray(options.unit)) {\n units = options.unit;\n unit = undefined;\n }\n return diffRelative(\n base,\n this.plus(padding),\n Object.assign(options, {\n numeric: \"always\",\n units,\n unit\n })\n );\n }\n\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"ma\xf1ana\"\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n toRelativeCalendar(options = {}) {\n if (!this.isValid) return null;\n\n return diffRelative(\n options.base || DateTime.fromObject({ zone: this.zone }),\n this,\n Object.assign(options, {\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true\n })\n );\n }\n\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n static min(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, i => i.valueOf(), Math.min);\n }\n\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n static max(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, i => i.valueOf(), Math.max);\n }\n\n // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n static fromFormatExplain(text, fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n\n /**\n * @deprecated use fromFormatExplain instead\n */\n static fromStringExplain(text, fmt, options = {}) {\n return DateTime.fromFormatExplain(text, fmt, options);\n }\n\n // FORMAT PRESETS\n\n /**\n * {@link toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n static get DATE_SHORT() {\n return Formats.DATE_SHORT;\n }\n\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED() {\n return Formats.DATE_MED;\n }\n\n /**\n * {@link toLocaleString} format like 'Fri, Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED_WITH_WEEKDAY() {\n return Formats.DATE_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n static get DATE_FULL() {\n return Formats.DATE_FULL;\n }\n\n /**\n * {@link toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n static get DATE_HUGE() {\n return Formats.DATE_HUGE;\n }\n\n /**\n * {@link toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_SIMPLE() {\n return Formats.TIME_SIMPLE;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SECONDS() {\n return Formats.TIME_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SHORT_OFFSET() {\n return Formats.TIME_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_LONG_OFFSET() {\n return Formats.TIME_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_SIMPLE() {\n return Formats.TIME_24_SIMPLE;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SECONDS() {\n return Formats.TIME_24_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SHORT_OFFSET() {\n return Formats.TIME_24_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_LONG_OFFSET() {\n return Formats.TIME_24_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT() {\n return Formats.DATETIME_SHORT;\n }\n\n /**\n * {@link toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT_WITH_SECONDS() {\n return Formats.DATETIME_SHORT_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED() {\n return Formats.DATETIME_MED;\n }\n\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_SECONDS() {\n return Formats.DATETIME_MED_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_WEEKDAY() {\n return Formats.DATETIME_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL() {\n return Formats.DATETIME_FULL;\n }\n\n /**\n * {@link toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL_WITH_SECONDS() {\n return Formats.DATETIME_FULL_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE() {\n return Formats.DATETIME_HUGE;\n }\n\n /**\n * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE_WITH_SECONDS() {\n return Formats.DATETIME_HUGE_WITH_SECONDS;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\n `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`\n );\n }\n}\n"},6721:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from "./errors.js";\nimport Formatter from "./impl/formatter.js";\nimport Invalid from "./impl/invalid.js";\nimport Locale from "./impl/locale.js";\nimport { parseISODuration, parseISOTimeOnly } from "./impl/regexParser.js";\nimport {\n asNumber,\n hasOwnProperty,\n isNumber,\n isUndefined,\n normalizeObject,\n roundTo\n} from "./impl/util.js";\nimport Settings from "./settings.js";\n\nconst INVALID = "Invalid Duration";\n\n// unit conversion constants\nconst lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000\n },\n hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n minutes: { seconds: 60, milliseconds: 60 * 1000 },\n seconds: { milliseconds: 1000 }\n },\n casualMatrix = Object.assign(\n {\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000\n }\n },\n lowOrderMatrix\n ),\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = Object.assign(\n {\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: (daysInYearAccurate * 24) / 4,\n minutes: (daysInYearAccurate * 24 * 60) / 4,\n seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,\n milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000\n }\n },\n lowOrderMatrix\n );\n\n// units ordered by size\nconst orderedUnits = [\n "years",\n "quarters",\n "months",\n "weeks",\n "days",\n "hours",\n "minutes",\n "seconds",\n "milliseconds"\n];\n\nconst reverseUnits = orderedUnits.slice(0).reverse();\n\n// clone really means "create another instance just like this one, but with these changes"\nfunction clone(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : Object.assign({}, dur.values, alts.values || {}),\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy\n };\n return new Duration(conf);\n}\n\nfunction antiTrunc(n) {\n return n < 0 ? Math.floor(n) : Math.ceil(n);\n}\n\n// NB: mutates parameters\nfunction convert(matrix, fromMap, fromUnit, toMap, toUnit) {\n const conv = matrix[toUnit][fromUnit],\n raw = fromMap[fromUnit] / conv,\n sameSign = Math.sign(raw) === Math.sign(toMap[toUnit]),\n // ok, so this is wild, but see the matrix in the tests\n added =\n !sameSign && toMap[toUnit] !== 0 && Math.abs(raw) <= 1 ? antiTrunc(raw) : Math.trunc(raw);\n toMap[toUnit] += added;\n fromMap[fromUnit] -= added * conv;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n reverseUnits.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n convert(matrix, vals, previous, vals, current);\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n/**\n * A Duration object represents a period of time, like "2 months" or "1 day, 1 hour". Conceptually, it\'s just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime.plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\n * * **Unit values** See the {@link Duration.years}, {@link Duration.months}, {@link Duration.weeks}, {@link Duration.days}, {@link Duration.hours}, {@link Duration.minutes}, {@link Duration.seconds}, {@link Duration.milliseconds} accessors.\n * * **Configuration** See {@link Duration.locale} and {@link Duration.numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration.plus}, {@link Duration.minus}, {@link Duration.normalize}, {@link Duration.set}, {@link Duration.reconfigure}, {@link Duration.shiftTo}, and {@link Duration.negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration.as}, {@link Duration.toISO}, {@link Duration.toFormat}, and {@link Duration.toJSON}\n *\n * There\'s are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport default class Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === "longterm" || false;\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? "longterm" : "casual";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = accurate ? accurateMatrix : casualMatrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale=\'en-US\'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy=\'casual\'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject(Object.assign({ milliseconds: count }, opts));\n }\n\n /**\n * Create a Duration from a JavaScript object with keys like \'years\' and \'hours\'.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {string} [obj.locale=\'en-US\'] - the locale to use\n * @param {string} obj.numberingSystem - the numbering system to use\n * @param {string} [obj.conversionAccuracy=\'casual\'] - the conversion system to use\n * @return {Duration}\n */\n static fromObject(obj) {\n if (obj == null || typeof obj !== "object") {\n throw new InvalidArgumentError(\n `Duration.fromObject: argument expected to be an object, got ${\n obj === null ? "null" : typeof obj\n }`\n );\n }\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit, [\n "locale",\n "numberingSystem",\n "conversionAccuracy",\n "zone" // a bit of debt; it\'s super inconvenient internally not to be able to blindly pass this\n ]),\n loc: Locale.fromObject(obj),\n conversionAccuracy: obj.conversionAccuracy\n });\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale=\'en-US\'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy=\'casual\'] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO(\'P3Y6M1W4DT12H30M5S\').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO(\'PT23H\').toObject() //=> { hours: 23 }\n * @example Duration.fromISO(\'P5Y3M\').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n const obj = Object.assign(parsed, opts);\n return Duration.fromObject(obj);\n } else {\n return Duration.invalid("unparsable", `the input "${text}" can\'t be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 time string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale=\'en-US\'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy=\'casual\'] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @example Duration.fromISOTime(\'11:22:33.444\').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n * @example Duration.fromISOTime(\'11:00\').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime(\'T11:00\').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime(\'1100\').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime(\'T1100\').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @return {Duration}\n */\n static fromISOTime(text, opts) {\n const [parsed] = parseISOTimeOnly(text);\n if (parsed) {\n const obj = Object.assign(parsed, opts);\n return Duration.fromObject(obj);\n } else {\n return Duration.invalid("unparsable", `the input "${text}" can\'t be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError("need to specify a reason the Duration is invalid");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({ invalid });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: "years",\n years: "years",\n quarter: "quarters",\n quarters: "quarters",\n month: "months",\n months: "months",\n week: "weeks",\n weeks: "weeks",\n day: "days",\n days: "days",\n hour: "hours",\n hours: "hours",\n minute: "minutes",\n minutes: "minutes",\n second: "seconds",\n seconds: "seconds",\n millisecond: "milliseconds",\n milliseconds: "milliseconds"\n }[unit ? unit.toLowerCase() : unit];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return (o && o.isLuxonDuration) || false;\n }\n\n /**\n * Get the locale of a Duration, such \'en-GB\'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such \'beng\'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. "yy" pads the years to two digits, "hhhh" pads the hours out to four digits\n * * The duration will be converted to the set of units in the format string using {@link Duration.shiftTo} and the Durations\'s conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("y d s") //=> "1 6 2"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("yy dd sss") //=> "01 06 002"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("M S") //=> "12 518402000"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = Object.assign({}, opts, {\n floor: opts.round !== false && opts.floor !== false\n });\n return this.isValid\n ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a JavaScript object with this Duration\'s values.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = Object.assign({}, this.values);\n\n if (opts.includeConfig) {\n base.conversionAccuracy = this.conversionAccuracy;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> \'P3YT45S\'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> \'P4MT45S\'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> \'P5M\'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> \'PT5M\'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> \'PT0.006S\'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n\n let s = "P";\n if (this.years !== 0) s += this.years + "Y";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + "M";\n if (this.weeks !== 0) s += this.weeks + "W";\n if (this.days !== 0) s += this.days + "D";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)\n s += "T";\n if (this.hours !== 0) s += this.hours + "H";\n if (this.minutes !== 0) s += this.minutes + "M";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle "floating point madness" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + "S";\n if (s === "P") s += "T0S";\n return s;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they\'re 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they\'re 0\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format=\'extended\'] - choose between the basic and extended format\n * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> \'11:00:00.000\'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> \'11:00:00\'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> \'11:00\'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> \'T11:00:00.000\'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: \'basic\' }) //=> \'110000.000\'\n * @return {string}\n */\n toISOTime(opts = {}) {\n if (!this.isValid) return null;\n\n const millis = this.toMillis();\n if (millis < 0 || millis >= 86400000) return null;\n\n opts = Object.assign(\n {\n suppressMilliseconds: false,\n suppressSeconds: false,\n includePrefix: false,\n format: "extended"\n },\n opts\n );\n\n const value = this.shiftTo("hours", "minutes", "seconds", "milliseconds");\n\n let fmt = opts.format === "basic" ? "hhmm" : "hh:mm";\n\n if (!opts.suppressSeconds || value.seconds !== 0 || value.milliseconds !== 0) {\n fmt += opts.format === "basic" ? "ss" : ":ss";\n if (!opts.suppressMilliseconds || value.milliseconds !== 0) {\n fmt += ".SSS";\n }\n }\n\n let str = value.toFormat(fmt);\n\n if (opts.includePrefix) {\n str = "T" + str;\n }\n\n return str;\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n toMillis() {\n return this.as("milliseconds");\n }\n\n /**\n * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n\n const dur = friendlyDuration(duration),\n result = {};\n\n for (const k of orderedUnits) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, { values: result }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n\n const dur = friendlyDuration(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnit(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnit((x, u) => u === "hour" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone(this, { values: result }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as \'minute\' or \'day\'\n * @example Duration.fromObject({years: 2, days: 3}).get(\'years\') //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).get(\'months\') //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).get(\'days\') //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * "Set" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const mixed = Object.assign(this.values, normalizeObject(values, Duration.normalizeUnit, []));\n return clone(this, { values: mixed });\n }\n\n /**\n * "Set" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: \'en-GB\' })\n * @return {Duration}\n */\n reconfigure({ locale, numberingSystem, conversionAccuracy } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem }),\n opts = { loc };\n\n if (conversionAccuracy) {\n opts.conversionAccuracy = conversionAccuracy;\n }\n\n return clone(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as \'minutes\' or \'days\'\n * @example Duration.fromObject({years: 1}).as(\'days\') //=> 365\n * @example Duration.fromObject({years: 1}).as(\'months\') //=> 12\n * @example Duration.fromObject({hours: 60}).as(\'days\') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo(\'minutes\', \'milliseconds\').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map(u => Duration.normalizeUnit(u));\n\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n\n for (const k of orderedUnits) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n\n let own = 0;\n\n // anything we haven\'t boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that\'s already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = own - i; // we\'d like to absorb these fractions in another unit\n\n // plus anything further down the chain that should be rolled up in to this\n for (const down in vals) {\n if (orderedUnits.indexOf(down) > orderedUnits.indexOf(k)) {\n convert(this.matrix, vals, down, built, k);\n }\n }\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] +=\n key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n return clone(this, { values: built }, true).normalize();\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = -this.values[k];\n }\n return clone(this, { values: negated }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n function eq(v1, v2) {\n // Consider 0 and undefined as equal\n if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n return v1 === v2;\n }\n\n for (const u of orderedUnits) {\n if (!eq(this.values[u], other.values[u])) {\n return false;\n }\n }\n return true;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDuration(durationish) {\n if (isNumber(durationish)) {\n return Duration.fromMillis(durationish);\n } else if (Duration.isDuration(durationish)) {\n return durationish;\n } else if (typeof durationish === "object") {\n return Duration.fromObject(durationish);\n } else {\n throw new InvalidArgumentError(\n `Unknown duration argument ${durationish} of type ${typeof durationish}`\n );\n }\n}\n'},4015:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='// these aren\'t really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n constructor() {\n super("Zone is an abstract class");\n }\n}\n'},8498:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import {\n integerBetween,\n isLeapYear,\n timeObject,\n daysInYear,\n daysInMonth,\n weeksInWeekYear,\n isInteger\n} from "./util.js";\nimport Invalid from "./invalid.js";\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\n "unit out of range",\n `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`\n );\n}\n\nfunction dayOfWeek(year, month, day) {\n const js = new Date(Date.UTC(year, month - 1, day)).getUTCDay();\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n const table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex(i => i < ordinal),\n day = ordinal - table[month0];\n return { month: month0 + 1, day };\n}\n\n/**\n * @private\n */\n\nexport function gregorianToWeek(gregObj) {\n const { year, month, day } = gregObj,\n ordinal = computeOrdinal(year, month, day),\n weekday = dayOfWeek(year, month, day);\n\n let weekNumber = Math.floor((ordinal - weekday + 10) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear);\n } else if (weekNumber > weeksInWeekYear(year)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return Object.assign({ weekYear, weekNumber, weekday }, timeObject(gregObj));\n}\n\nexport function weekToGregorian(weekData) {\n const { weekYear, weekNumber, weekday } = weekData,\n weekdayOfJan4 = dayOfWeek(weekYear, 1, 4),\n yearInDays = daysInYear(weekYear);\n\n let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n const { month, day } = uncomputeOrdinal(year, ordinal);\n\n return Object.assign({ year, month, day }, timeObject(weekData));\n}\n\nexport function gregorianToOrdinal(gregData) {\n const { year, month, day } = gregData,\n ordinal = computeOrdinal(year, month, day);\n\n return Object.assign({ year, ordinal }, timeObject(gregData));\n}\n\nexport function ordinalToGregorian(ordinalData) {\n const { year, ordinal } = ordinalData,\n { month, day } = uncomputeOrdinal(year, ordinal);\n\n return Object.assign({ year, month, day }, timeObject(ordinalData));\n}\n\nexport function hasInvalidWeekData(obj) {\n const validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear)),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange("weekYear", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange("week", obj.week);\n } else if (!validWeekday) {\n return unitOutOfRange("weekday", obj.weekday);\n } else return false;\n}\n\nexport function hasInvalidOrdinalData(obj) {\n const validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange("year", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange("ordinal", obj.ordinal);\n } else return false;\n}\n\nexport function hasInvalidGregorianData(obj) {\n const validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange("year", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange("month", obj.month);\n } else if (!validDay) {\n return unitOutOfRange("day", obj.day);\n } else return false;\n}\n\nexport function hasInvalidTimeData(obj) {\n const { hour, minute, second, millisecond } = obj;\n const validHour =\n integerBetween(hour, 0, 23) ||\n (hour === 24 && minute === 0 && second === 0 && millisecond === 0),\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange("hour", hour);\n } else if (!validMinute) {\n return unitOutOfRange("minute", minute);\n } else if (!validSecond) {\n return unitOutOfRange("second", second);\n } else if (!validMillisecond) {\n return unitOutOfRange("millisecond", millisecond);\n } else return false;\n}\n'},8998:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import Duration from "../duration.js";\n\nfunction dayDiff(earlier, later) {\n const utcDayStart = dt =>\n dt\n .toUTC(0, { keepLocalTime: true })\n .startOf("day")\n .valueOf(),\n ms = utcDayStart(later) - utcDayStart(earlier);\n return Math.floor(Duration.fromMillis(ms).as("days"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n const differs = [\n ["years", (a, b) => b.year - a.year],\n ["quarters", (a, b) => b.quarter - a.quarter],\n ["months", (a, b) => b.month - a.month + (b.year - a.year) * 12],\n [\n "weeks",\n (a, b) => {\n const days = dayDiff(a, b);\n return (days - (days % 7)) / 7;\n }\n ],\n ["days", dayDiff]\n ];\n\n const results = {};\n let lowestOrder, highWater;\n\n for (const [unit, differ] of differs) {\n if (units.indexOf(unit) >= 0) {\n lowestOrder = unit;\n\n let delta = differ(cursor, later);\n highWater = cursor.plus({ [unit]: delta });\n\n if (highWater > later) {\n cursor = cursor.plus({ [unit]: delta - 1 });\n delta -= 1;\n } else {\n cursor = highWater;\n }\n\n results[unit] = delta;\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nexport default function(earlier, later, units, opts) {\n let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);\n\n const remainingMillis = later - cursor;\n\n const lowerOrderUnits = units.filter(\n u => ["hours", "minutes", "seconds", "milliseconds"].indexOf(u) >= 0\n );\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n highWater = cursor.plus({ [lowestOrder]: 1 });\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n const duration = Duration.fromObject(Object.assign(results, opts));\n\n if (lowerOrderUnits.length > 0) {\n return Duration.fromMillis(remainingMillis, opts)\n .shiftTo(...lowerOrderUnits)\n .plus(duration);\n } else {\n return duration;\n }\n}\n'},9310:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='const numberingSystems = {\n arab: "[\\u0660-\\u0669]",\n arabext: "[\\u06F0-\\u06F9]",\n bali: "[\\u1B50-\\u1B59]",\n beng: "[\\u09E6-\\u09EF]",\n deva: "[\\u0966-\\u096F]",\n fullwide: "[\\uFF10-\\uFF19]",\n gujr: "[\\u0AE6-\\u0AEF]",\n hanidec: "[\u3007|\u4e00|\u4e8c|\u4e09|\u56db|\u4e94|\u516d|\u4e03|\u516b|\u4e5d]",\n khmr: "[\\u17E0-\\u17E9]",\n knda: "[\\u0CE6-\\u0CEF]",\n laoo: "[\\u0ED0-\\u0ED9]",\n limb: "[\\u1946-\\u194F]",\n mlym: "[\\u0D66-\\u0D6F]",\n mong: "[\\u1810-\\u1819]",\n mymr: "[\\u1040-\\u1049]",\n orya: "[\\u0B66-\\u0B6F]",\n tamldec: "[\\u0BE6-\\u0BEF]",\n telu: "[\\u0C66-\\u0C6F]",\n thai: "[\\u0E50-\\u0E59]",\n tibt: "[\\u0F20-\\u0F29]",\n latn: "\\\\d"\n};\n\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881]\n};\n\n// eslint-disable-next-line\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, "").split("");\n\nexport function parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = "";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\nexport function digitRegex({ numberingSystem }, append = "") {\n return new RegExp(`${numberingSystems[numberingSystem || "latn"]}${append}`);\n}\n'},4039:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import * as Formats from "./formats.js";\nimport { pick } from "./util.js";\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n/**\n * @private\n */\n\nexport const monthsLong = [\n "January",\n "February",\n "March",\n "April",\n "May",\n "June",\n "July",\n "August",\n "September",\n "October",\n "November",\n "December"\n];\n\nexport const monthsShort = [\n "Jan",\n "Feb",\n "Mar",\n "Apr",\n "May",\n "Jun",\n "Jul",\n "Aug",\n "Sep",\n "Oct",\n "Nov",\n "Dec"\n];\n\nexport const monthsNarrow = ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"];\n\nexport function months(length) {\n switch (length) {\n case "narrow":\n return [...monthsNarrow];\n case "short":\n return [...monthsShort];\n case "long":\n return [...monthsLong];\n case "numeric":\n return ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"];\n case "2-digit":\n return ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"];\n default:\n return null;\n }\n}\n\nexport const weekdaysLong = [\n "Monday",\n "Tuesday",\n "Wednesday",\n "Thursday",\n "Friday",\n "Saturday",\n "Sunday"\n];\n\nexport const weekdaysShort = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];\n\nexport const weekdaysNarrow = ["M", "T", "W", "T", "F", "S", "S"];\n\nexport function weekdays(length) {\n switch (length) {\n case "narrow":\n return [...weekdaysNarrow];\n case "short":\n return [...weekdaysShort];\n case "long":\n return [...weekdaysLong];\n case "numeric":\n return ["1", "2", "3", "4", "5", "6", "7"];\n default:\n return null;\n }\n}\n\nexport const meridiems = ["AM", "PM"];\n\nexport const erasLong = ["Before Christ", "Anno Domini"];\n\nexport const erasShort = ["BC", "AD"];\n\nexport const erasNarrow = ["B", "A"];\n\nexport function eras(length) {\n switch (length) {\n case "narrow":\n return [...erasNarrow];\n case "short":\n return [...erasShort];\n case "long":\n return [...erasLong];\n default:\n return null;\n }\n}\n\nexport function meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\n\nexport function weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\n\nexport function monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\n\nexport function eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\n\nexport function formatRelativeTime(unit, count, numeric = "always", narrow = false) {\n const units = {\n years: ["year", "yr."],\n quarters: ["quarter", "qtr."],\n months: ["month", "mo."],\n weeks: ["week", "wk."],\n days: ["day", "day", "days"],\n hours: ["hour", "hr."],\n minutes: ["minute", "min."],\n seconds: ["second", "sec."]\n };\n\n const lastable = ["hours", "minutes", "seconds"].indexOf(unit) === -1;\n\n if (numeric === "auto" && lastable) {\n const isDay = unit === "days";\n switch (count) {\n case 1:\n return isDay ? "tomorrow" : `next ${units[unit][0]}`;\n case -1:\n return isDay ? "yesterday" : `last ${units[unit][0]}`;\n case 0:\n return isDay ? "today" : `this ${units[unit][0]}`;\n default: // fall through\n }\n }\n\n const isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow\n ? singular\n ? lilUnits[1]\n : lilUnits[2] || lilUnits[1]\n : singular\n ? units[unit][0]\n : unit;\n return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;\n}\n\nexport function formatString(knownFormat) {\n // these all have the offsets removed because we don\'t have access to them\n // without all the intl stuff this is backfilling\n const filtered = pick(knownFormat, [\n "weekday",\n "era",\n "year",\n "month",\n "day",\n "hour",\n "minute",\n "second",\n "timeZoneName",\n "hour12"\n ]),\n key = stringify(filtered),\n dateTimeHuge = "EEEE, LLLL d, yyyy, h:mm a";\n switch (key) {\n case stringify(Formats.DATE_SHORT):\n return "M/d/yyyy";\n case stringify(Formats.DATE_MED):\n return "LLL d, yyyy";\n case stringify(Formats.DATE_MED_WITH_WEEKDAY):\n return "EEE, LLL d, yyyy";\n case stringify(Formats.DATE_FULL):\n return "LLLL d, yyyy";\n case stringify(Formats.DATE_HUGE):\n return "EEEE, LLLL d, yyyy";\n case stringify(Formats.TIME_SIMPLE):\n return "h:mm a";\n case stringify(Formats.TIME_WITH_SECONDS):\n return "h:mm:ss a";\n case stringify(Formats.TIME_WITH_SHORT_OFFSET):\n return "h:mm a";\n case stringify(Formats.TIME_WITH_LONG_OFFSET):\n return "h:mm a";\n case stringify(Formats.TIME_24_SIMPLE):\n return "HH:mm";\n case stringify(Formats.TIME_24_WITH_SECONDS):\n return "HH:mm:ss";\n case stringify(Formats.TIME_24_WITH_SHORT_OFFSET):\n return "HH:mm";\n case stringify(Formats.TIME_24_WITH_LONG_OFFSET):\n return "HH:mm";\n case stringify(Formats.DATETIME_SHORT):\n return "M/d/yyyy, h:mm a";\n case stringify(Formats.DATETIME_MED):\n return "LLL d, yyyy, h:mm a";\n case stringify(Formats.DATETIME_FULL):\n return "LLLL d, yyyy, h:mm a";\n case stringify(Formats.DATETIME_HUGE):\n return dateTimeHuge;\n case stringify(Formats.DATETIME_SHORT_WITH_SECONDS):\n return "M/d/yyyy, h:mm:ss a";\n case stringify(Formats.DATETIME_MED_WITH_SECONDS):\n return "LLL d, yyyy, h:mm:ss a";\n case stringify(Formats.DATETIME_MED_WITH_WEEKDAY):\n return "EEE, d LLL yyyy, h:mm a";\n case stringify(Formats.DATETIME_FULL_WITH_SECONDS):\n return "LLLL d, yyyy, h:mm:ss a";\n case stringify(Formats.DATETIME_HUGE_WITH_SECONDS):\n return "EEEE, LLLL d, yyyy, h:mm:ss a";\n default:\n return dateTimeHuge;\n }\n}\n'},5303:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\";\n\nexport const DATE_SHORT = {\n year: n,\n month: n,\n day: n\n};\n\nexport const DATE_MED = {\n year: n,\n month: s,\n day: n\n};\n\nexport const DATE_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s\n};\n\nexport const DATE_FULL = {\n year: n,\n month: l,\n day: n\n};\n\nexport const DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l\n};\n\nexport const TIME_SIMPLE = {\n hour: n,\n minute: n\n};\n\nexport const TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n\n};\n\nexport const TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s\n};\n\nexport const TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l\n};\n\nexport const TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hour12: false\n};\n\n/**\n * {@link toLocaleString}; format like '09:30:23', always 24-hour.\n */\nexport const TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hour12: false\n};\n\n/**\n * {@link toLocaleString}; format like '09:30:23 EDT', always 24-hour.\n */\nexport const TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hour12: false,\n timeZoneName: s\n};\n\n/**\n * {@link toLocaleString}; format like '09:30:23 Eastern Daylight Time', always 24-hour.\n */\nexport const TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hour12: false,\n timeZoneName: l\n};\n\n/**\n * {@link toLocaleString}; format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n */\nexport const DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n\n};\n\n/**\n * {@link toLocaleString}; format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n */\nexport const DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n\n};\n\nexport const DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n\n};\n\nexport const DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n\n};\n\nexport const DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n\n};\n\nexport const DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s\n};\n\nexport const DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s\n};\n\nexport const DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l\n};\n\nexport const DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l\n};\n"},4756:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import * as English from "./english.js";\nimport * as Formats from "./formats.js";\nimport { hasFormatToParts, padStart } from "./util.js";\n\nfunction stringifyTokens(splits, tokenToString) {\n let s = "";\n for (const token of splits) {\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n return s;\n}\n\nconst macroTokenToFormatOpts = {\n D: Formats.DATE_SHORT,\n DD: Formats.DATE_MED,\n DDD: Formats.DATE_FULL,\n DDDD: Formats.DATE_HUGE,\n t: Formats.TIME_SIMPLE,\n tt: Formats.TIME_WITH_SECONDS,\n ttt: Formats.TIME_WITH_SHORT_OFFSET,\n tttt: Formats.TIME_WITH_LONG_OFFSET,\n T: Formats.TIME_24_SIMPLE,\n TT: Formats.TIME_24_WITH_SECONDS,\n TTT: Formats.TIME_24_WITH_SHORT_OFFSET,\n TTTT: Formats.TIME_24_WITH_LONG_OFFSET,\n f: Formats.DATETIME_SHORT,\n ff: Formats.DATETIME_MED,\n fff: Formats.DATETIME_FULL,\n ffff: Formats.DATETIME_HUGE,\n F: Formats.DATETIME_SHORT_WITH_SECONDS,\n FF: Formats.DATETIME_MED_WITH_SECONDS,\n FFF: Formats.DATETIME_FULL_WITH_SECONDS,\n FFFF: Formats.DATETIME_HUGE_WITH_SECONDS\n};\n\n/**\n * @private\n */\n\nexport default class Formatter {\n static create(locale, opts = {}) {\n return new Formatter(locale, opts);\n }\n\n static parseFormat(fmt) {\n let current = null,\n currentFull = "",\n bracketed = false;\n const splits = [];\n for (let i = 0; i < fmt.length; i++) {\n const c = fmt.charAt(i);\n if (c === "\'") {\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed, val: currentFull });\n }\n current = null;\n currentFull = "";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({ literal: false, val: currentFull });\n }\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed, val: currentFull });\n }\n\n return splits;\n }\n\n static macroTokenToFormatOpts(token) {\n return macroTokenToFormatOpts[token];\n }\n\n constructor(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n const df = this.systemLoc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.format();\n }\n\n formatDateTime(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.format();\n }\n\n formatDateTimeParts(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.formatToParts();\n }\n\n resolvedOptions(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.resolvedOptions();\n }\n\n num(n, p = 0) {\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n const opts = Object.assign({}, this.opts);\n\n if (p > 0) {\n opts.padTo = p;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n }\n\n formatDateTimeFromString(dt, fmt) {\n const knownEnglish = this.loc.listingMode() === "en",\n useDateTimeFormatter =\n this.loc.outputCalendar && this.loc.outputCalendar !== "gregory" && hasFormatToParts(),\n string = (opts, extract) => this.loc.extract(dt, opts, extract),\n formatOffset = opts => {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return "Z";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : "";\n },\n meridiem = () =>\n knownEnglish\n ? English.meridiemForDateTime(dt)\n : string({ hour: "numeric", hour12: true }, "dayperiod"),\n month = (length, standalone) =>\n knownEnglish\n ? English.monthForDateTime(dt, length)\n : string(standalone ? { month: length } : { month: length, day: "numeric" }, "month"),\n weekday = (length, standalone) =>\n knownEnglish\n ? English.weekdayForDateTime(dt, length)\n : string(\n standalone ? { weekday: length } : { weekday: length, month: "long", day: "numeric" },\n "weekday"\n ),\n maybeMacro = token => {\n const formatOpts = Formatter.macroTokenToFormatOpts(token);\n if (formatOpts) {\n return this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = length =>\n knownEnglish ? English.eraForDateTime(dt, length) : string({ era: length }, "era"),\n tokenToString = token => {\n // Where possible: http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles\n switch (token) {\n // ms\n case "S":\n return this.num(dt.millisecond);\n case "u":\n // falls through\n case "SSS":\n return this.num(dt.millisecond, 3);\n // seconds\n case "s":\n return this.num(dt.second);\n case "ss":\n return this.num(dt.second, 2);\n // minutes\n case "m":\n return this.num(dt.minute);\n case "mm":\n return this.num(dt.minute, 2);\n // hours\n case "h":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n case "hh":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n case "H":\n return this.num(dt.hour);\n case "HH":\n return this.num(dt.hour, 2);\n // offset\n case "Z":\n // like +6\n return formatOffset({ format: "narrow", allowZ: this.opts.allowZ });\n case "ZZ":\n // like +06:00\n return formatOffset({ format: "short", allowZ: this.opts.allowZ });\n case "ZZZ":\n // like +0600\n return formatOffset({ format: "techie", allowZ: this.opts.allowZ });\n case "ZZZZ":\n // like EST\n return dt.zone.offsetName(dt.ts, { format: "short", locale: this.loc.locale });\n case "ZZZZZ":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, { format: "long", locale: this.loc.locale });\n // zone\n case "z":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n case "a":\n return meridiem();\n // dates\n case "d":\n return useDateTimeFormatter ? string({ day: "numeric" }, "day") : this.num(dt.day);\n case "dd":\n return useDateTimeFormatter ? string({ day: "2-digit" }, "day") : this.num(dt.day, 2);\n // weekdays - standalone\n case "c":\n // like 1\n return this.num(dt.weekday);\n case "ccc":\n // like \'Tues\'\n return weekday("short", true);\n case "cccc":\n // like \'Tuesday\'\n return weekday("long", true);\n case "ccccc":\n // like \'T\'\n return weekday("narrow", true);\n // weekdays - format\n case "E":\n // like 1\n return this.num(dt.weekday);\n case "EEE":\n // like \'Tues\'\n return weekday("short", false);\n case "EEEE":\n // like \'Tuesday\'\n return weekday("long", false);\n case "EEEEE":\n // like \'T\'\n return weekday("narrow", false);\n // months - standalone\n case "L":\n // like 1\n return useDateTimeFormatter\n ? string({ month: "numeric", day: "numeric" }, "month")\n : this.num(dt.month);\n case "LL":\n // like 01, doesn\'t seem to work\n return useDateTimeFormatter\n ? string({ month: "2-digit", day: "numeric" }, "month")\n : this.num(dt.month, 2);\n case "LLL":\n // like Jan\n return month("short", true);\n case "LLLL":\n // like January\n return month("long", true);\n case "LLLLL":\n // like J\n return month("narrow", true);\n // months - format\n case "M":\n // like 1\n return useDateTimeFormatter\n ? string({ month: "numeric" }, "month")\n : this.num(dt.month);\n case "MM":\n // like 01\n return useDateTimeFormatter\n ? string({ month: "2-digit" }, "month")\n : this.num(dt.month, 2);\n case "MMM":\n // like Jan\n return month("short", false);\n case "MMMM":\n // like January\n return month("long", false);\n case "MMMMM":\n // like J\n return month("narrow", false);\n // years\n case "y":\n // like 2014\n return useDateTimeFormatter ? string({ year: "numeric" }, "year") : this.num(dt.year);\n case "yy":\n // like 14\n return useDateTimeFormatter\n ? string({ year: "2-digit" }, "year")\n : this.num(dt.year.toString().slice(-2), 2);\n case "yyyy":\n // like 0012\n return useDateTimeFormatter\n ? string({ year: "numeric" }, "year")\n : this.num(dt.year, 4);\n case "yyyyyy":\n // like 000012\n return useDateTimeFormatter\n ? string({ year: "numeric" }, "year")\n : this.num(dt.year, 6);\n // eras\n case "G":\n // like AD\n return era("short");\n case "GG":\n // like Anno Domini\n return era("long");\n case "GGGGG":\n return era("narrow");\n case "kk":\n return this.num(dt.weekYear.toString().slice(-2), 2);\n case "kkkk":\n return this.num(dt.weekYear, 4);\n case "W":\n return this.num(dt.weekNumber);\n case "WW":\n return this.num(dt.weekNumber, 2);\n case "o":\n return this.num(dt.ordinal);\n case "ooo":\n return this.num(dt.ordinal, 3);\n case "q":\n // like 1\n return this.num(dt.quarter);\n case "qq":\n // like 01\n return this.num(dt.quarter, 2);\n case "X":\n return this.num(Math.floor(dt.ts / 1000));\n case "x":\n return this.num(dt.ts);\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n }\n\n formatDurationFromString(dur, fmt) {\n const tokenToField = token => {\n switch (token[0]) {\n case "S":\n return "millisecond";\n case "s":\n return "second";\n case "m":\n return "minute";\n case "h":\n return "hour";\n case "d":\n return "day";\n case "M":\n return "month";\n case "y":\n return "year";\n default:\n return null;\n }\n },\n tokenToString = lildur => token => {\n const mapped = tokenToField(token);\n if (mapped) {\n return this.num(lildur.get(mapped), token.length);\n } else {\n return token;\n }\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(\n (found, { literal, val }) => (literal ? found : found.concat(val)),\n []\n ),\n collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter(t => t));\n return stringifyTokens(tokens, tokenToString(collapsed));\n }\n}\n'},760:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="export default class Invalid {\n constructor(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n toMessage() {\n if (this.explanation) {\n return `${this.reason}: ${this.explanation}`;\n } else {\n return this.reason;\n }\n }\n}\n"},114:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import { hasFormatToParts, hasIntl, padStart, roundTo, hasRelative } from "./util.js";\nimport * as English from "./english.js";\nimport Settings from "../settings.js";\nimport DateTime from "../datetime.js";\nimport Formatter from "./formatter.js";\nimport IANAZone from "../zones/IANAZone.js";\n\nlet intlDTCache = {};\nfunction getCachedDTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache[key];\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlNumCache = {};\nfunction getCachedINF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let inf = intlNumCache[key];\n if (!inf) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache[key] = inf;\n }\n return inf;\n}\n\nlet intlRelCache = {};\nfunction getCachedRTF(locString, opts = {}) {\n const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options\n const key = JSON.stringify([locString, cacheKeyOpts]);\n let inf = intlRelCache[key];\n if (!inf) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache[key] = inf;\n }\n return inf;\n}\n\nlet sysLocaleCache = null;\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else if (hasIntl()) {\n const computedSys = new Intl.DateTimeFormat().resolvedOptions().locale;\n // node sometimes defaults to "und". Override that because that is dumb\n sysLocaleCache = !computedSys || computedSys === "und" ? "en-US" : computedSys;\n return sysLocaleCache;\n } else {\n sysLocaleCache = "en-US";\n return sysLocaleCache;\n }\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we\'ll do this:\n\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n\n const uIndex = localeStr.indexOf("-u-");\n if (uIndex === -1) {\n return [localeStr];\n } else {\n let options;\n const smaller = localeStr.substring(0, uIndex);\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n } catch (e) {\n options = getCachedDTF(smaller).resolvedOptions();\n }\n\n const { numberingSystem, calendar } = options;\n // return the smaller one so that we can append the calendar and numbering overrides to it\n return [smaller, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (hasIntl()) {\n if (outputCalendar || numberingSystem) {\n localeStr += "-u";\n\n if (outputCalendar) {\n localeStr += `-ca-${outputCalendar}`;\n }\n\n if (numberingSystem) {\n localeStr += `-nu-${numberingSystem}`;\n }\n return localeStr;\n } else {\n return localeStr;\n }\n } else {\n return [];\n }\n}\n\nfunction mapMonths(f) {\n const ms = [];\n for (let i = 1; i <= 12; i++) {\n const dt = DateTime.utc(2016, i, 1);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction mapWeekdays(f) {\n const ms = [];\n for (let i = 1; i <= 7; i++) {\n const dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction listStuff(loc, length, defaultOK, englishFn, intlFn) {\n const mode = loc.listingMode(defaultOK);\n\n if (mode === "error") {\n return null;\n } else if (mode === "en") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== "latn") {\n return false;\n } else {\n return (\n loc.numberingSystem === "latn" ||\n !loc.locale ||\n loc.locale.startsWith("en") ||\n (hasIntl() && new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === "latn")\n );\n }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n constructor(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n if (!forceSimple && hasIntl()) {\n const intlOpts = { useGrouping: false };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n\n format(i) {\n if (this.inf) {\n const fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser\'s numberformatter defaults\n const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n return padStart(fixed, this.padTo);\n }\n }\n}\n\n/**\n * @private\n */\n\nclass PolyDateFormatter {\n constructor(dt, intl, opts) {\n this.opts = opts;\n this.hasIntl = hasIntl();\n\n let z;\n if (dt.zone.universal && this.hasIntl) {\n // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\n // That is why fixed-offset TZ is set to that unless it is:\n // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\n // 2. Unsupported by the browser:\n // - some do not support Etc/\n // - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\n const gmtOffset = -1 * (dt.offset / 60);\n const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`;\n const isOffsetZoneSupported = IANAZone.isValidZone(offsetZ);\n if (dt.offset !== 0 && isOffsetZoneSupported) {\n z = offsetZ;\n this.dt = dt;\n } else {\n // Not all fixed-offset zones like Etc/+4:30 are present in tzdata.\n // So we have to make do. Two cases:\n // 1. The format options tell us to show the zone. We can\'t do that, so the best\n // we can do is format the date in UTC.\n // 2. The format options don\'t tell us to show the zone. Then we can adjust them\n // the time and tell the formatter to show it to us in UTC, so that the time is right\n // and the bad zone doesn\'t show up.\n z = "UTC";\n if (opts.timeZoneName) {\n this.dt = dt;\n } else {\n this.dt = dt.offset === 0 ? dt : DateTime.fromMillis(dt.ts + dt.offset * 60 * 1000);\n }\n }\n } else if (dt.zone.type === "local") {\n this.dt = dt;\n } else {\n this.dt = dt;\n z = dt.zone.name;\n }\n\n if (this.hasIntl) {\n const intlOpts = Object.assign({}, this.opts);\n if (z) {\n intlOpts.timeZone = z;\n }\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n }\n\n format() {\n if (this.hasIntl) {\n return this.dtf.format(this.dt.toJSDate());\n } else {\n const tokenFormat = English.formatString(this.opts),\n loc = Locale.create("en-US");\n return Formatter.create(loc).formatDateTimeFromString(this.dt, tokenFormat);\n }\n }\n\n formatToParts() {\n if (this.hasIntl && hasFormatToParts()) {\n return this.dtf.formatToParts(this.dt.toJSDate());\n } else {\n // This is kind of a cop out. We actually could do this for English. However, we couldn\'t do it for intl strings\n // and IMO it\'s too weird to have an uncanny valley like that\n return [];\n }\n }\n\n resolvedOptions() {\n if (this.hasIntl) {\n return this.dtf.resolvedOptions();\n } else {\n return {\n locale: "en-US",\n numberingSystem: "latn",\n outputCalendar: "gregory"\n };\n }\n }\n}\n\n/**\n * @private\n */\nclass PolyRelFormatter {\n constructor(intl, isEnglish, opts) {\n this.opts = Object.assign({ style: "long" }, opts);\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n\n format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return English.formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== "long");\n }\n }\n\n formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n }\n}\n\n/**\n * @private\n */\n\nexport default class Locale {\n static fromOpts(opts) {\n return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN);\n }\n\n static create(locale, numberingSystem, outputCalendar, defaultToEN = false) {\n const specifiedLocale = locale || Settings.defaultLocale,\n // the system locale is useful for human readable strings but annoying for parsing/formatting known formats\n localeR = specifiedLocale || (defaultToEN ? "en-US" : systemLocale()),\n numberingSystemR = numberingSystem || Settings.defaultNumberingSystem,\n outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n return new Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale);\n }\n\n static resetCache() {\n sysLocaleCache = null;\n intlDTCache = {};\n intlNumCache = {};\n intlRelCache = {};\n }\n\n static fromObject({ locale, numberingSystem, outputCalendar } = {}) {\n return Locale.create(locale, numberingSystem, outputCalendar);\n }\n\n constructor(locale, numbering, outputCalendar, specifiedLocale) {\n const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n\n this.weekdaysCache = { format: {}, standalone: {} };\n this.monthsCache = { format: {}, standalone: {} };\n this.meridiemCache = null;\n this.eraCache = {};\n\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n get fastNumbers() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n\n listingMode(defaultOK = true) {\n const intl = hasIntl(),\n hasFTP = intl && hasFormatToParts(),\n isActuallyEn = this.isEnglish(),\n hasNoWeirdness =\n (this.numberingSystem === null || this.numberingSystem === "latn") &&\n (this.outputCalendar === null || this.outputCalendar === "gregory");\n\n if (!hasFTP && !(isActuallyEn && hasNoWeirdness) && !defaultOK) {\n return "error";\n } else if (!hasFTP || (isActuallyEn && hasNoWeirdness)) {\n return "en";\n } else {\n return "intl";\n }\n }\n\n clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(\n alts.locale || this.specifiedLocale,\n alts.numberingSystem || this.numberingSystem,\n alts.outputCalendar || this.outputCalendar,\n alts.defaultToEN || false\n );\n }\n }\n\n redefaultToEN(alts = {}) {\n return this.clone(Object.assign({}, alts, { defaultToEN: true }));\n }\n\n redefaultToSystem(alts = {}) {\n return this.clone(Object.assign({}, alts, { defaultToEN: false }));\n }\n\n months(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.months, () => {\n const intl = format ? { month: length, day: "numeric" } : { month: length },\n formatStr = format ? "format" : "standalone";\n if (!this.monthsCache[formatStr][length]) {\n this.monthsCache[formatStr][length] = mapMonths(dt => this.extract(dt, intl, "month"));\n }\n return this.monthsCache[formatStr][length];\n });\n }\n\n weekdays(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.weekdays, () => {\n const intl = format\n ? { weekday: length, year: "numeric", month: "long", day: "numeric" }\n : { weekday: length },\n formatStr = format ? "format" : "standalone";\n if (!this.weekdaysCache[formatStr][length]) {\n this.weekdaysCache[formatStr][length] = mapWeekdays(dt =>\n this.extract(dt, intl, "weekday")\n );\n }\n return this.weekdaysCache[formatStr][length];\n });\n }\n\n meridiems(defaultOK = true) {\n return listStuff(\n this,\n undefined,\n defaultOK,\n () => English.meridiems,\n () => {\n // In theory there could be aribitrary day periods. We\'re gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it\'s makes parsing way easier.\n if (!this.meridiemCache) {\n const intl = { hour: "numeric", hour12: true };\n this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(\n dt => this.extract(dt, intl, "dayperiod")\n );\n }\n\n return this.meridiemCache;\n }\n );\n }\n\n eras(length, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.eras, () => {\n const intl = { era: length };\n\n // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n if (!this.eraCache[length]) {\n this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map(dt =>\n this.extract(dt, intl, "era")\n );\n }\n\n return this.eraCache[length];\n });\n }\n\n extract(dt, intlOpts, field) {\n const df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find(m => m.type.toLowerCase() === field);\n return matching ? matching.value : null;\n }\n\n numberFormatter(opts = {}) {\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n }\n\n dtFormatter(dt, intlOpts = {}) {\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n }\n\n relFormatter(opts = {}) {\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n }\n\n isEnglish() {\n return (\n this.locale === "en" ||\n this.locale.toLowerCase() === "en-us" ||\n (hasIntl() && new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us"))\n );\n }\n\n equals(other) {\n return (\n this.locale === other.locale &&\n this.numberingSystem === other.numberingSystem &&\n this.outputCalendar === other.outputCalendar\n );\n }\n}\n'},1990:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import {\n untruncateYear,\n signedOffset,\n parseInteger,\n parseMillis,\n ianaRegex,\n isUndefined\n} from "./util.js";\nimport * as English from "./english.js";\nimport FixedOffsetZone from "../zones/fixedOffsetZone.js";\nimport IANAZone from "../zones/IANAZone.js";\n\n/*\n * This file handles parsing for well-specified formats. Here\'s how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a "cursor" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, "");\n return RegExp(`^${full}$`);\n}\n\nfunction combineExtractors(...extractors) {\n return m =>\n extractors\n .reduce(\n ([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [Object.assign(mergedVals, val), mergedZone || zone, next];\n },\n [{}, null, 1]\n )\n .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\n\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/,\n isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/,\n isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${offsetRegex.source}?`),\n isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`),\n isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/,\n isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/,\n isoOrdinalRegex = /(\\d{4})-?(\\d{3})/,\n extractISOWeekData = simpleParse("weekYear", "weekNumber", "weekDay"),\n extractISOOrdinalData = simpleParse("year", "ordinal"),\n sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/, // dumbed-down version of the ISO one\n sqlTimeRegex = RegExp(\n `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`\n ),\n sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\n\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1)\n };\n\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n const item = {\n hours: int(match, cursor, 0),\n minutes: int(match, cursor + 1, 0),\n seconds: int(match, cursor + 2, 0),\n milliseconds: parseMillis(match[cursor + 3])\n };\n\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO time parsing\n\nconst isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);\n\n// ISO duration parsing\n\nconst isoDuration = /^-?P(?:(?:(-?\\d{1,9})Y)?(?:(-?\\d{1,9})M)?(?:(-?\\d{1,9})W)?(?:(-?\\d{1,9})D)?(?:T(?:(-?\\d{1,9})H)?(?:(-?\\d{1,9})M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,9}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n const [\n s,\n yearStr,\n monthStr,\n weekStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr,\n millisecondsStr\n ] = match;\n\n const hasNegativePrefix = s[0] === "-";\n const negativeSeconds = secondStr && secondStr[0] === "-";\n\n const maybeNegate = (num, force = false) =>\n num !== undefined && (force || (num && hasNegativePrefix)) ? -num : num;\n\n return [\n {\n years: maybeNegate(parseInteger(yearStr)),\n months: maybeNegate(parseInteger(monthStr)),\n weeks: maybeNegate(parseInteger(weekStr)),\n days: maybeNegate(parseInteger(dayStr)),\n hours: maybeNegate(parseInteger(hourStr)),\n minutes: maybeNegate(parseInteger(minuteStr)),\n seconds: maybeNegate(parseInteger(secondStr), secondStr === "-0"),\n milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds)\n }\n ];\n}\n\n// These are a little braindead. EDT *should* tell us that we\'re in, say, America/New_York\n// and not just that we\'re in -240 *right now*. But since I don\'t think these are used that often\n// I\'m just going to ignore that\nconst obsOffsets = {\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n};\n\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: English.monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr)\n };\n\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday =\n weekdayStr.length > 3\n ? English.weekdaysLong.indexOf(weekdayStr) + 1\n : English.weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n}\n\n// RFC 2822/5322\nconst rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n const [\n ,\n weekdayStr,\n dayStr,\n monthStr,\n yearStr,\n hourStr,\n minuteStr,\n secondStr,\n obsOffset,\n milOffset,\n offHourStr,\n offMinuteStr\n ] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, " ")\n .replace(/(\\s\\s+)/g, " ")\n .trim();\n}\n\n// http date\n\nconst rfc1123 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 = /^(Monday|Tuesday|Wedsday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n\nconst extractISOYmdTimeAndOffset = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset\n);\nconst extractISOWeekTimeAndOffset = combineExtractors(\n extractISOWeekData,\n extractISOTime,\n extractISOOffset\n);\nconst extractISOOrdinalDateAndTime = combineExtractors(\n extractISOOrdinalData,\n extractISOTime,\n extractISOOffset\n);\nconst extractISOTimeAndOffset = combineExtractors(extractISOTime, extractISOOffset);\n\n/**\n * @private\n */\n\nexport function parseISODate(s) {\n return parse(\n s,\n [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],\n [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],\n [isoTimeCombinedRegex, extractISOTimeAndOffset]\n );\n}\n\nexport function parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\n\nexport function parseHTTPDate(s) {\n return parse(\n s,\n [rfc1123, extractRFC1123Or850],\n [rfc850, extractRFC1123Or850],\n [ascii, extractASCII]\n );\n}\n\nexport function parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\n\nconst extractISOTimeOnly = combineExtractors(extractISOTime);\n\nexport function parseISOTimeOnly(s) {\n return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n}\n\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n\nconst extractISOYmdTimeOffsetAndIANAZone = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\nexport function parseSQL(s) {\n return parse(\n s,\n [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeOffsetAndIANAZone],\n [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]\n );\n}\n'},4546:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import { parseMillis, isUndefined, untruncateYear, signedOffset, hasOwnProperty } from "./util.js";\nimport Formatter from "./formatter.js";\nimport FixedOffsetZone from "../zones/fixedOffsetZone.js";\nimport IANAZone from "../zones/IANAZone.js";\nimport DateTime from "../datetime.js";\nimport { digitRegex, parseDigits } from "./digits.js";\nimport { ConflictingSpecificationError } from "../errors.js";\n\nconst MISSING_FTP = "missing Intl.DateTimeFormat.formatToParts support";\n\nfunction intUnit(regex, post = i => i) {\n return { regex, deser: ([s]) => post(parseDigits(s)) };\n}\n\nconst NBSP = String.fromCharCode(160);\nconst spaceOrNBSP = `( |${NBSP})`;\nconst spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, "g");\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n // make space and non breakable space characters interchangeable\n return s.replace(/\\./g, "\\\\.?").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n}\n\nfunction stripInsensitivities(s) {\n return s\n .replace(/\\./g, "") // ignore dots that were made optional\n .replace(spaceOrNBSPRegExp, " ") // interchange space and nbsp\n .toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join("|")),\n deser: ([s]) =>\n strings.findIndex(i => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex\n };\n }\n}\n\nfunction offset(regex, groups) {\n return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n return { regex, deser: ([s]) => s };\n}\n\nfunction escapeToken(value) {\n // eslint-disable-next-line no-useless-escape\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, "\\\\$&");\n}\n\nfunction unitForToken(token, loc) {\n const one = digitRegex(loc),\n two = digitRegex(loc, "{2}"),\n three = digitRegex(loc, "{3}"),\n four = digitRegex(loc, "{4}"),\n six = digitRegex(loc, "{6}"),\n oneOrTwo = digitRegex(loc, "{1,2}"),\n oneToThree = digitRegex(loc, "{1,3}"),\n oneToSix = digitRegex(loc, "{1,6}"),\n oneToNine = digitRegex(loc, "{1,9}"),\n twoToFour = digitRegex(loc, "{2,4}"),\n fourToSix = digitRegex(loc, "{4,6}"),\n literal = t => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),\n unitate = t => {\n if (token.literal) {\n return literal(t);\n }\n switch (t.val) {\n // era\n case "G":\n return oneOf(loc.eras("short", false), 0);\n case "GG":\n return oneOf(loc.eras("long", false), 0);\n // years\n case "y":\n return intUnit(oneToSix);\n case "yy":\n return intUnit(twoToFour, untruncateYear);\n case "yyyy":\n return intUnit(four);\n case "yyyyy":\n return intUnit(fourToSix);\n case "yyyyyy":\n return intUnit(six);\n // months\n case "M":\n return intUnit(oneOrTwo);\n case "MM":\n return intUnit(two);\n case "MMM":\n return oneOf(loc.months("short", true, false), 1);\n case "MMMM":\n return oneOf(loc.months("long", true, false), 1);\n case "L":\n return intUnit(oneOrTwo);\n case "LL":\n return intUnit(two);\n case "LLL":\n return oneOf(loc.months("short", false, false), 1);\n case "LLLL":\n return oneOf(loc.months("long", false, false), 1);\n // dates\n case "d":\n return intUnit(oneOrTwo);\n case "dd":\n return intUnit(two);\n // ordinals\n case "o":\n return intUnit(oneToThree);\n case "ooo":\n return intUnit(three);\n // time\n case "HH":\n return intUnit(two);\n case "H":\n return intUnit(oneOrTwo);\n case "hh":\n return intUnit(two);\n case "h":\n return intUnit(oneOrTwo);\n case "mm":\n return intUnit(two);\n case "m":\n return intUnit(oneOrTwo);\n case "q":\n return intUnit(oneOrTwo);\n case "qq":\n return intUnit(two);\n case "s":\n return intUnit(oneOrTwo);\n case "ss":\n return intUnit(two);\n case "S":\n return intUnit(oneToThree);\n case "SSS":\n return intUnit(three);\n case "u":\n return simple(oneToNine);\n // meridiem\n case "a":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n case "kkkk":\n return intUnit(four);\n case "kk":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n case "W":\n return intUnit(oneOrTwo);\n case "WW":\n return intUnit(two);\n // weekdays\n case "E":\n case "c":\n return intUnit(one);\n case "EEE":\n return oneOf(loc.weekdays("short", false, false), 1);\n case "EEEE":\n return oneOf(loc.weekdays("long", false, false), 1);\n case "ccc":\n return oneOf(loc.weekdays("short", true, false), 1);\n case "cccc":\n return oneOf(loc.weekdays("long", true, false), 1);\n // offset/zone\n case "Z":\n case "ZZ":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);\n case "ZZZ":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);\n // we don\'t support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don\'t have any way to figure out what they are\n case "z":\n return simple(/[a-z_+-/]{1,256}?/i);\n default:\n return literal(t);\n }\n };\n\n const unit = unitate(token) || {\n invalidReason: MISSING_FTP\n };\n\n unit.token = token;\n\n return unit;\n}\n\nconst partTypeStyleToTokenVal = {\n year: {\n "2-digit": "yy",\n numeric: "yyyyy"\n },\n month: {\n numeric: "M",\n "2-digit": "MM",\n short: "MMM",\n long: "MMMM"\n },\n day: {\n numeric: "d",\n "2-digit": "dd"\n },\n weekday: {\n short: "EEE",\n long: "EEEE"\n },\n dayperiod: "a",\n dayPeriod: "a",\n hour: {\n numeric: "h",\n "2-digit": "hh"\n },\n minute: {\n numeric: "m",\n "2-digit": "mm"\n },\n second: {\n numeric: "s",\n "2-digit": "ss"\n }\n};\n\nfunction tokenForPart(part, locale, formatOpts) {\n const { type, value } = part;\n\n if (type === "literal") {\n return {\n literal: true,\n val: value\n };\n }\n\n const style = formatOpts[type];\n\n let val = partTypeStyleToTokenVal[type];\n if (typeof val === "object") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n const re = units.map(u => u.regex).reduce((f, r) => `${f}(${r.source})`, "");\n return [`^${re}$`, units];\n}\n\nfunction match(input, regex, handlers) {\n const matches = input.match(regex);\n\n if (matches) {\n const all = {};\n let matchIndex = 1;\n for (const i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n const h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n matchIndex += groups;\n }\n }\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n const toField = token => {\n switch (token) {\n case "S":\n return "millisecond";\n case "s":\n return "second";\n case "m":\n return "minute";\n case "h":\n case "H":\n return "hour";\n case "d":\n return "day";\n case "o":\n return "ordinal";\n case "L":\n case "M":\n return "month";\n case "y":\n return "year";\n case "E":\n case "c":\n return "weekday";\n case "W":\n return "weekNumber";\n case "k":\n return "weekYear";\n case "q":\n return "quarter";\n default:\n return null;\n }\n };\n\n let zone;\n if (!isUndefined(matches.Z)) {\n zone = new FixedOffsetZone(matches.Z);\n } else if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n } else {\n zone = null;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n const vals = Object.keys(matches).reduce((r, k) => {\n const f = toField(k);\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n\n return [vals, zone];\n}\n\nlet dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n const formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n\n if (!formatOpts) {\n return token;\n }\n\n const formatter = Formatter.create(locale, formatOpts);\n const parts = formatter.formatDateTimeParts(getDummyDateTime());\n\n const tokens = parts.map(p => tokenForPart(p, locale, formatOpts));\n\n if (tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nfunction expandMacroTokens(tokens, locale) {\n return Array.prototype.concat(...tokens.map(t => maybeExpandMacroToken(t, locale)));\n}\n\n/**\n * @private\n */\n\nexport function explainFromTokens(locale, input, format) {\n const tokens = expandMacroTokens(Formatter.parseFormat(format), locale),\n units = tokens.map(t => unitForToken(t, locale)),\n disqualifyingUnit = units.find(t => t.invalidReason);\n\n if (disqualifyingUnit) {\n return { input, tokens, invalidReason: disqualifyingUnit.invalidReason };\n } else {\n const [regexString, handlers] = buildRegex(units),\n regex = RegExp(regexString, "i"),\n [rawMatches, matches] = match(input, regex, handlers),\n [result, zone] = matches ? dateTimeFromMatches(matches) : [null, null];\n if (hasOwnProperty(matches, "a") && hasOwnProperty(matches, "H")) {\n throw new ConflictingSpecificationError(\n "Can\'t include meridiem when specifying 24-hour format"\n );\n }\n return { input, tokens, regex, rawMatches, matches, result, zone };\n }\n}\n\nexport function parseFromTokens(locale, input, format) {\n const { result, zone, invalidReason } = explainFromTokens(locale, input, format);\n return [result, zone, invalidReason];\n}\n'},7866:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won\'t worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\nimport { InvalidArgumentError } from "../errors.js";\n\n/**\n * @private\n */\n\n// TYPES\n\nexport function isUndefined(o) {\n return typeof o === "undefined";\n}\n\nexport function isNumber(o) {\n return typeof o === "number";\n}\n\nexport function isInteger(o) {\n return typeof o === "number" && o % 1 === 0;\n}\n\nexport function isString(o) {\n return typeof o === "string";\n}\n\nexport function isDate(o) {\n return Object.prototype.toString.call(o) === "[object Date]";\n}\n\n// CAPABILITIES\n\nexport function hasIntl() {\n try {\n return typeof Intl !== "undefined" && Intl.DateTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\nexport function hasFormatToParts() {\n return !isUndefined(Intl.DateTimeFormat.prototype.formatToParts);\n}\n\nexport function hasRelative() {\n try {\n return typeof Intl !== "undefined" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nexport function maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\n\nexport function bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\n\nexport function pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\n\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n// NUMBERS AND STRINGS\n\nexport function integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nexport function floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\n\nexport function padStart(input, n = 2) {\n const minus = input < 0 ? "-" : "";\n const target = minus ? input * -1 : input;\n let result;\n\n if (target.toString().length < n) {\n result = ("0".repeat(n) + target).slice(-n);\n } else {\n result = target.toString();\n }\n\n return `${minus}${result}`;\n}\n\nexport function parseInteger(string) {\n if (isUndefined(string) || string === null || string === "") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\n\nexport function parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === "") {\n return undefined;\n } else {\n const f = parseFloat("0." + fraction) * 1000;\n return Math.floor(f);\n }\n}\n\nexport function roundTo(number, digits, towardZero = false) {\n const factor = 10 ** digits,\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n}\n\n// DATE BASICS\n\nexport function isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// covert a calendar object to a local timestamp (epoch, but with the offset baked in)\nexport function objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n return +d;\n}\n\nexport function weeksInWeekYear(weekYear) {\n const p1 =\n (weekYear +\n Math.floor(weekYear / 4) -\n Math.floor(weekYear / 100) +\n Math.floor(weekYear / 400)) %\n 7,\n last = weekYear - 1,\n p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7;\n return p1 === 4 || p2 === 3 ? 53 : 52;\n}\n\nexport function untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > 60 ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nexport function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hour12: false,\n year: "numeric",\n month: "2-digit",\n day: "2-digit",\n hour: "2-digit",\n minute: "2-digit"\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n const modified = Object.assign({ timeZoneName: offsetFormat }, intlOpts),\n intl = hasIntl();\n\n if (intl && hasFormatToParts()) {\n const parsed = new Intl.DateTimeFormat(locale, modified)\n .formatToParts(date)\n .find(m => m.type.toLowerCase() === "timezonename");\n return parsed ? parsed.value : null;\n } else if (intl) {\n // this probably doesn\'t work for all locales\n const without = new Intl.DateTimeFormat(locale, intlOpts).format(date),\n included = new Intl.DateTimeFormat(locale, modified).format(date),\n diffed = included.substring(without.length),\n trimmed = diffed.replace(/^[, \\u200e]+/, "");\n return trimmed;\n } else {\n return null;\n }\n}\n\n// signedOffset(\'-5\', \'30\') -> -330\nexport function signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don\'t || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nexport function asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === "boolean" || value === "" || Number.isNaN(numericValue))\n throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\n\nexport function normalizeObject(obj, normalizer, nonUnitKeys) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n if (nonUnitKeys.indexOf(u) >= 0) continue;\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\nexport function formatOffset(offset, format) {\n const hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? "+" : "-";\n\n switch (format) {\n case "short":\n return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;\n case "narrow":\n return `${sign}${hours}${minutes > 0 ? `:${minutes}` : ""}`;\n case "techie":\n return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\n\nexport function timeObject(obj) {\n return pick(obj, ["hour", "minute", "second", "millisecond"]);\n}\n\nexport const ianaRegex = /[A-Za-z_+-]{1,256}(:?\\/[A-Za-z_+-]{1,256}(\\/[A-Za-z_+-]{1,256})?)?/;\n'},9776:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='/**\n * @private\n */\n\nimport Zone from "../zone.js";\nimport IANAZone from "../zones/IANAZone.js";\nimport FixedOffsetZone from "../zones/fixedOffsetZone.js";\nimport InvalidZone from "../zones/invalidZone.js";\n\nimport { isUndefined, isString, isNumber } from "./util.js";\n\nexport function normalizeZone(input, defaultZone) {\n let offset;\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n const lowered = input.toLowerCase();\n if (lowered === "local") return defaultZone;\n else if (lowered === "utc" || lowered === "gmt") return FixedOffsetZone.utcInstance;\n else if ((offset = IANAZone.parseGMTOffset(input)) != null) {\n // handle Etc/GMT-4, which V8 chokes on\n return FixedOffsetZone.instance(offset);\n } else if (IANAZone.isValidSpecifier(lowered)) return IANAZone.create(input);\n else return FixedOffsetZone.parseSpecifier(lowered) || new InvalidZone(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === "object" && input.offset && typeof input.offset === "number") {\n // This is dumb, but the instanceof check above doesn\'t seem to really work\n // so we\'re duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n'},6965:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="import DateTime from \"./datetime.js\";\nimport Settings from \"./settings.js\";\nimport Locale from \"./impl/locale.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nimport { hasFormatToParts, hasIntl, hasRelative } from \"./impl/util.js\";\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\nexport default class Info {\n /**\n * Return whether the specified zone contains a DST.\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n * @return {boolean}\n */\n static hasDST(zone = Settings.defaultZone) {\n const proto = DateTime.now()\n .setZone(zone)\n .set({ month: 12 });\n\n return !zone.universal && proto.offset !== proto.set({ month: 6 }).offset;\n }\n\n /**\n * Return whether the specified zone is a valid IANA specifier.\n * @param {string} zone - Zone to check\n * @return {boolean}\n */\n static isValidIANAZone(zone) {\n return IANAZone.isValidSpecifier(zone) && IANAZone.isValidZone(zone);\n }\n\n /**\n * Converts the input into a {@link Zone} instance.\n *\n * * If `input` is already a Zone instance, it is returned unchanged.\n * * If `input` is a string containing a valid time zone name, a Zone instance\n * with that name is returned.\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\n * instance with {@link Zone.isValid} == false is returned.\n * * If `input is a number, a Zone instance with the specified fixed offset\n * in minutes is returned.\n * * If `input` is `null` or `undefined`, the default zone is returned.\n * @param {string|Zone|number} [input] - the value to be converted\n * @return {Zone}\n */\n static normalizeZone(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n\n /**\n * Return an array of standalone month names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @example Info.months()[0] //=> 'January'\n * @example Info.months('short')[0] //=> 'Jan'\n * @example Info.months('numeric')[0] //=> '1'\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> '\u0661'\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabi\u02bb I'\n * @return {[string]}\n */\n static months(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);\n }\n\n /**\n * Return an array of format month names.\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n * changes the string.\n * See {@link months}\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @return {[string]}\n */\n static monthsFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);\n }\n\n /**\n * Return an array of standalone week names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @example Info.weekdays()[0] //=> 'Monday'\n * @example Info.weekdays('short')[0] //=> 'Mon'\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> '\u0627\u0644\u0627\u062b\u0646\u064a\u0646'\n * @return {[string]}\n */\n static weekdays(length = \"long\", { locale = null, numberingSystem = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);\n }\n\n /**\n * Return an array of format week names.\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n * changes the string.\n * See {@link weekdays}\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale=null] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @return {[string]}\n */\n static weekdaysFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);\n }\n\n /**\n * Return an array of meridiems.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n * @example Info.meridiems({ locale: 'my' }) //=> [ '\u1014\u1036\u1014\u1000\u103a', '\u100a\u1014\u1031' ]\n * @return {[string]}\n */\n static meridiems({ locale = null } = {}) {\n return Locale.create(locale).meridiems();\n }\n\n /**\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.eras() //=> [ 'BC', 'AD' ]\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant J\xe9sus-Christ', 'apr\xe8s J\xe9sus-Christ' ]\n * @return {[string]}\n */\n static eras(length = \"short\", { locale = null } = {}) {\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n\n /**\n * Return the set of available features in this environment.\n * Some features of Luxon are not available in all environments. For example, on older browsers, timezone support is not available. Use this function to figure out if that's the case.\n * Keys:\n * * `zones`: whether this environment supports IANA timezones\n * * `intlTokens`: whether this environment supports internationalized token-based formatting/parsing\n * * `intl`: whether this environment supports general internationalization\n * * `relative`: whether this environment supports relative time formatting\n * @example Info.features() //=> { intl: true, intlTokens: false, zones: true, relative: false }\n * @return {Object}\n */\n static features() {\n let intl = false,\n intlTokens = false,\n zones = false,\n relative = false;\n\n if (hasIntl()) {\n intl = true;\n intlTokens = hasFormatToParts();\n relative = hasRelative();\n\n try {\n zones =\n new Intl.DateTimeFormat(\"en\", { timeZone: \"America/New_York\" }).resolvedOptions()\n .timeZone === \"America/New_York\";\n } catch (e) {\n zones = false;\n }\n }\n\n return { intl, intlTokens, zones, relative };\n }\n}\n"},1591:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="import DateTime, { friendlyDateTime } from \"./datetime.js\";\nimport Duration, { friendlyDuration } from \"./duration.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidIntervalError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\n \"end before start\",\n `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`\n );\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link fromDateTimes}, {@link after}, {@link before}, or {@link fromISO}.\n * * **Accessors** Use {@link start} and {@link end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link count}, {@link length}, {@link hasSame}, {@link contains}, {@link isAfter}, or {@link isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link set}, {@link splitAt}, {@link splitBy}, {@link divideEqually}, {@link merge}, {@link xor}, {@link union}, {@link intersection}, or {@link difference}.\n * * **Comparison** To compare this Interval to another one, use {@link equals}, {@link overlaps}, {@link abutsStart}, {@link abutsEnd}, {@link engulfs}.\n * * **Output** To convert the Interval into other representations, see {@link toString}, {@link toISO}, {@link toISODate}, {@link toISOTime}, {@link toFormat}, and {@link toDuration}.\n */\nexport default class Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({ invalid });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n\n const validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = friendlyDuration(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = friendlyDuration(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `<start>/<end>`, `<start>/<duration>`, and `<duration>/<end>` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime.fromISO} and optionally {@link Duration.fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n static fromISO(text, opts) {\n const [s, e] = (text || \"\").split(\"/\", 2);\n if (s && e) {\n let start, startIsValid;\n try {\n start = DateTime.fromISO(s, opts);\n startIsValid = start.isValid;\n } catch (e) {\n startIsValid = false;\n }\n\n let end, endIsValid;\n try {\n end = DateTime.fromISO(e, opts);\n endIsValid = end.isValid;\n } catch (e) {\n endIsValid = false;\n }\n\n if (startIsValid && endIsValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (startIsValid) {\n const dur = Duration.fromISO(e, opts);\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (endIsValid) {\n const dur = Duration.fromISO(s, opts);\n if (dur.isValid) {\n return Interval.before(end, dur);\n }\n }\n }\n return Interval.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isInterval(o) {\n return (o && o.isLuxonInterval) || false;\n }\n\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n get start() {\n return this.isValid ? this.s : null;\n }\n\n /**\n * Returns the end of the Interval\n * @type {DateTime}\n */\n get end() {\n return this.isValid ? this.e : null;\n }\n\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n get isValid() {\n return this.invalidReason === null;\n }\n\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n length(unit = \"milliseconds\") {\n return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n }\n\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @return {number}\n */\n count(unit = \"milliseconds\") {\n if (!this.isValid) return NaN;\n const start = this.start.startOf(unit),\n end = this.end.startOf(unit);\n return Math.floor(end.diff(start, unit).get(unit)) + 1;\n }\n\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n hasSame(unit) {\n return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n }\n\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n set({ start, end } = {}) {\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...[DateTime]} dateTimes - the unit of time to count.\n * @return {[Interval]}\n */\n splitAt(...dateTimes) {\n if (!this.isValid) return [];\n const sorted = dateTimes\n .map(friendlyDateTime)\n .filter(d => this.contains(d))\n .sort(),\n results = [];\n let { s } = this,\n i = 0;\n\n while (s < this.e) {\n const added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {[Interval]}\n */\n splitBy(duration) {\n const dur = friendlyDuration(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n let { s } = this,\n idx = 1,\n next;\n\n const results = [];\n while (s < this.e) {\n const added = this.start.plus(dur.mapUnits(x => x * idx));\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n idx += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {[Interval]}\n */\n divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n\n /**\n * Return whether this Interval engulfs the start and end of the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n intersection(other) {\n if (!this.isValid) return this;\n const s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s >= e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n union(other) {\n if (!this.isValid) return this;\n const s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n\n /**\n * Merge an array of Intervals into a equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * @param {[Interval]} intervals\n * @return {[Interval]}\n */\n static merge(intervals) {\n const [found, final] = intervals.sort((a, b) => a.s - b.s).reduce(\n ([sofar, current], item) => {\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n },\n [[], null]\n );\n if (final) {\n found.push(final);\n }\n return found;\n }\n\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {[Interval]} intervals\n * @return {[Interval]}\n */\n static xor(intervals) {\n let start = null,\n currentCount = 0;\n const results = [],\n ends = intervals.map(i => [{ time: i.s, type: \"s\" }, { time: i.e, type: \"e\" }]),\n flattened = Array.prototype.concat(...ends),\n arr = flattened.sort((a, b) => a.time - b.time);\n\n for (const i of arr) {\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {[Interval]}\n */\n difference(...intervals) {\n return Interval.xor([this].concat(intervals))\n .map(i => this.intersection(i))\n .filter(i => i && !i.isEmpty());\n }\n\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n toString() {\n if (!this.isValid) return INVALID;\n return `[${this.s.toISO()} \u2013 ${this.e.toISO()})`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime.toISO}\n * @return {string}\n */\n toISO(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n toISODate() {\n if (!this.isValid) return INVALID;\n return `${this.s.toISODate()}/${this.e.toISODate()}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime.toISO}\n * @return {string}\n */\n toISOTime(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this Interval formatted according to the specified format string.\n * @param {string} dateFormat - the format string. This string formats the start and end time. See {@link DateTime.toFormat} for details.\n * @param {Object} opts - options\n * @param {string} [opts.separator = ' \u2013 '] - a separator to place between the start and end representations\n * @return {string}\n */\n toFormat(dateFormat, { separator = \" \u2013 \" } = {}) {\n if (!this.isValid) return INVALID;\n return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n }\n\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n return this.e.diff(this.s, unit, opts);\n }\n\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n }\n}\n"},8004:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import DateTime from "./datetime.js";\nimport Duration from "./duration.js";\nimport Interval from "./interval.js";\nimport Info from "./info.js";\nimport Zone from "./zone.js";\nimport FixedOffsetZone from "./zones/fixedOffsetZone.js";\nimport IANAZone from "./zones/IANAZone.js";\nimport InvalidZone from "./zones/invalidZone.js";\nimport LocalZone from "./zones/localZone.js";\nimport Settings from "./settings.js";\n\nconst VERSION = "1.28.1";\n\nexport {\n VERSION,\n DateTime,\n Duration,\n Interval,\n Info,\n Zone,\n FixedOffsetZone,\n IANAZone,\n InvalidZone,\n LocalZone,\n Settings\n};\n'},9972:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='/* eslint import/no-extraneous-dependencies: off */\n\nimport "core-js/features/symbol";\nimport "core-js/features/symbol/iterator";\nimport "core-js/features/object";\nimport "core-js/features/number/is-nan";\nimport "core-js/features/array";\nimport "core-js/features/string/virtual/starts-with";\nimport "core-js/features/string/virtual/repeat";\nimport "core-js/features/math/trunc";\nimport "core-js/features/math/sign";\n\nexport * from "./luxon.js";\n'},2636:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import LocalZone from "./zones/localZone.js";\nimport IANAZone from "./zones/IANAZone.js";\nimport Locale from "./impl/locale.js";\n\nimport { normalizeZone } from "./impl/zoneUtil.js";\n\nlet now = () => Date.now(),\n defaultZone = null, // not setting this directly to LocalZone.instance bc loading order issues\n defaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n throwOnInvalid = false;\n\n/**\n * Settings contains static getters and setters that control Luxon\'s overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nexport default class Settings {\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n static get now() {\n return now;\n }\n\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it\'s Jan 1, 1970 at midnight in UTC time\n */\n static set now(n) {\n now = n;\n }\n\n /**\n * Get the default time zone to create DateTimes in.\n * @type {string}\n */\n static get defaultZoneName() {\n return Settings.defaultZone.name;\n }\n\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * @type {string}\n */\n static set defaultZoneName(z) {\n if (!z) {\n defaultZone = null;\n } else {\n defaultZone = normalizeZone(z);\n }\n }\n\n /**\n * Get the default time zone object to create DateTimes in. Does not affect existing instances.\n * @type {Zone}\n */\n static get defaultZone() {\n return defaultZone || LocalZone.instance;\n }\n\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultLocale() {\n return defaultLocale;\n }\n\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultLocale(locale) {\n defaultLocale = locale;\n }\n\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultNumberingSystem() {\n return defaultNumberingSystem;\n }\n\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultNumberingSystem(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultOutputCalendar() {\n return defaultOutputCalendar;\n }\n\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultOutputCalendar(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static get throwOnInvalid() {\n return throwOnInvalid;\n }\n\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static set throwOnInvalid(t) {\n throwOnInvalid = t;\n }\n\n /**\n * Reset Luxon\'s global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n }\n}\n'},6476:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="/* eslint no-unused-vars: \"off\" */\nimport { ZoneIsAbstractError } from \"./errors.js\";\n\n/**\n * @interface\n */\nexport default class Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get universal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n"},3176:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import { formatOffset, parseZoneInfo, isUndefined, ianaRegex, objToLocalTS } from "../impl/util.js";\nimport Zone from "../zone.js";\n\nconst matchingRegex = RegExp(`^${ianaRegex.source}$`);\n\nlet dtfCache = {};\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat("en-US", {\n hour12: false,\n timeZone: zone,\n year: "numeric",\n month: "2-digit",\n day: "2-digit",\n hour: "2-digit",\n minute: "2-digit",\n second: "2-digit"\n });\n }\n return dtfCache[zone];\n}\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5\n};\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, ""),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date),\n filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i],\n pos = typeToPos[type];\n\n if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nlet ianaZoneCache = {};\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nexport default class IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n return ianaZoneCache[name];\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string\'s format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier("America/New_York") //=> true\n * @example IANAZone.isValidSpecifier("Fantasia/Castle") //=> true\n * @example IANAZone.isValidSpecifier("Sport~~blorp") //=> false\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return !!(s && s.match(matchingRegex));\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone("America/New_York") //=> true\n * @example IANAZone.isValidZone("Fantasia/Castle") //=> false\n * @example IANAZone.isValidZone("Sport~~blorp") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n try {\n new Intl.DateTimeFormat("en-US", { timeZone: zone }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n // Etc/GMT+8 -> -480\n /** @ignore */\n static parseGMTOffset(specifier) {\n if (specifier) {\n const match = specifier.match(/^Etc\\/GMT(0|[+-]\\d{1,2})$/i);\n if (match) {\n return -60 * parseInt(match[1]);\n }\n }\n return null;\n }\n\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /** @override **/\n get type() {\n return "iana";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get universal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n const date = new Date(ts);\n\n if (isNaN(date)) return NaN;\n\n const dtf = makeDTF(this.name),\n [year, month, day, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date),\n // work around https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n adjustedHour = hour === 24 ? 0 : hour;\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === "iana" && otherZone.name === this.name;\n }\n\n /** @override **/\n get isValid() {\n return this.valid;\n }\n}\n'},1840:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import { formatOffset, signedOffset } from "../impl/util.js";\nimport Zone from "../zone.js";\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nexport default class FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like "UTC+6"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier("UTC+6")\n * @example FixedOffsetZone.parseSpecifier("UTC+06")\n * @example FixedOffsetZone.parseSpecifier("UTC-6:00")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /** @override **/\n get type() {\n return "fixed";\n }\n\n /** @override **/\n get name() {\n return this.fixed === 0 ? "UTC" : `UTC${formatOffset(this.fixed, "narrow")}`;\n }\n\n /** @override **/\n offsetName() {\n return this.name;\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /** @override **/\n get universal() {\n return true;\n }\n\n /** @override **/\n offset() {\n return this.fixed;\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === "fixed" && otherZone.fixed === this.fixed;\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n'},5092:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import Zone from "../zone.js";\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\nexport default class InvalidZone extends Zone {\n constructor(zoneName) {\n super();\n /** @private */\n this.zoneName = zoneName;\n }\n\n /** @override **/\n get type() {\n return "invalid";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get universal() {\n return false;\n }\n\n /** @override **/\n offsetName() {\n return null;\n }\n\n /** @override **/\n formatOffset() {\n return "";\n }\n\n /** @override **/\n offset() {\n return NaN;\n }\n\n /** @override **/\n equals() {\n return false;\n }\n\n /** @override **/\n get isValid() {\n return false;\n }\n}\n'},5617:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='import { formatOffset, parseZoneInfo, hasIntl } from "../impl/util.js";\nimport Zone from "../zone.js";\n\nlet singleton = null;\n\n/**\n * Represents the local zone for this JavaScript environment.\n * @implements {Zone}\n */\nexport default class LocalZone extends Zone {\n /**\n * Get a singleton instance of the local zone\n * @return {LocalZone}\n */\n static get instance() {\n if (singleton === null) {\n singleton = new LocalZone();\n }\n return singleton;\n }\n\n /** @override **/\n get type() {\n return "local";\n }\n\n /** @override **/\n get name() {\n if (hasIntl()) {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n } else return "local";\n }\n\n /** @override **/\n get universal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === "local";\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n'},1960:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='<manifest xmlns:android="http://schemas.android.com/apk/res/android"\n package="org.hyperledger.anoncreds">\n</manifest>\n'},8854:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='package org.hyperledger.anoncreds;\n\nimport android.util.Log;\n\nimport androidx.annotation.Keep;\nimport androidx.annotation.NonNull;\nimport androidx.annotation.Nullable;\nimport com.facebook.proguard.annotations.DoNotStrip;\n\nimport com.facebook.react.bridge.JavaScriptContextHolder;\nimport com.facebook.react.bridge.ReactContextBaseJavaModule;\nimport com.facebook.react.bridge.ReactApplicationContext;\nimport com.facebook.react.bridge.ReactContext;\nimport com.facebook.react.bridge.ReactMethod;\nimport com.facebook.react.module.annotations.ReactModule;\nimport com.facebook.react.turbomodule.core.CallInvokerHolderImpl;\nimport com.facebook.react.turbomodule.core.interfaces.CallInvokerHolder;\n\n@Keep\n@DoNotStrip\npublic class AnoncredsModule extends ReactContextBaseJavaModule {\n static {\n System.loadLibrary("anoncredsreactnative");\n }\n\n public static final String NAME = "Anoncreds";\n\n static String TAG = "Anoncreds";\n\n public AnoncredsModule(ReactApplicationContext reactContext) {\n super(reactContext);\n }\n\n @Override\n @NonNull\n public String getName() {\n return TAG;\n }\n\n private static native void installNative(long jsiRuntimePointer, CallInvokerHolderImpl jsCallInvokerHolder);\n\n @ReactMethod(isBlockingSynchronousMethod = true)\n public boolean install() {\n try {\n System.loadLibrary("anoncredsreactnative");\n ReactContext context = getReactApplicationContext();\n long jsContextPointer = context.getJavaScriptContextHolder().get();\n CallInvokerHolderImpl holder = (CallInvokerHolderImpl) context.getCatalystInstance().getJSCallInvokerHolder();\n installNative(jsContextPointer, holder);\n return true;\n } catch (Exception exception) {\n Log.e(NAME, "Failed to install JSI Bindings!", exception);\n return false;\n }\n }\n}\n'},2510:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="package org.hyperledger.anoncreds;\n\nimport androidx.annotation.NonNull;\n\nimport com.facebook.react.ReactPackage;\nimport com.facebook.react.bridge.NativeModule;\nimport com.facebook.react.bridge.ReactApplicationContext;\nimport com.facebook.react.uimanager.ViewManager;\n\nimport java.util.Collections;\nimport java.util.List;\n\npublic class AnoncredsPackage implements ReactPackage {\n @NonNull\n @Override\n public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactContext) {\n return Collections.singletonList(new AnoncredsModule(reactContext));\n }\n\n @NonNull\n @Override\n public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactContext) {\n return Collections.emptyList();\n }\n}\n"},8339:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='<manifest xmlns:android="http://schemas.android.com/apk/res/android"\n package="org.hyperledger.ariesaskar">\n</manifest>\n'},2853:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='package org.hyperledger.ariesaskar;\n\nimport android.util.Log;\n\nimport androidx.annotation.Keep;\nimport androidx.annotation.NonNull;\nimport androidx.annotation.Nullable;\nimport com.facebook.proguard.annotations.DoNotStrip;\n\nimport com.facebook.react.bridge.JavaScriptContextHolder;\nimport com.facebook.react.bridge.ReactContextBaseJavaModule;\nimport com.facebook.react.bridge.ReactApplicationContext;\nimport com.facebook.react.bridge.ReactContext;\nimport com.facebook.react.bridge.ReactMethod;\nimport com.facebook.react.module.annotations.ReactModule;\nimport com.facebook.react.turbomodule.core.CallInvokerHolderImpl;\nimport com.facebook.react.turbomodule.core.interfaces.CallInvokerHolder;\n\n@Keep\n@DoNotStrip\npublic class AriesAskarModule extends ReactContextBaseJavaModule {\n static {\n System.loadLibrary("ariesaskarreactnative");\n }\n\n public static final String NAME = "AriesAskar";\n\n static String TAG = "AriesAskar";\n\n public AriesAskarModule(ReactApplicationContext reactContext) {\n super(reactContext);\n }\n\n @Override\n @NonNull\n public String getName() {\n return TAG;\n }\n\n private static native void installNative(long jsiRuntimePointer, CallInvokerHolderImpl jsCallInvokerHolder);\n\n @ReactMethod(isBlockingSynchronousMethod = true)\n public boolean install() {\n try {\n System.loadLibrary("ariesaskarreactnative");\n ReactContext context = getReactApplicationContext();\n long jsContextPointer = context.getJavaScriptContextHolder().get();\n CallInvokerHolderImpl holder = (CallInvokerHolderImpl) context.getCatalystInstance().getJSCallInvokerHolder();\n installNative(jsContextPointer, holder);\n return true;\n } catch (Exception exception) {\n Log.e(NAME, "Failed to install JSI Bindings!", exception);\n return false;\n }\n }\n}\n'},8093:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="package org.hyperledger.ariesaskar;\n\nimport androidx.annotation.NonNull;\n\nimport com.facebook.react.ReactPackage;\nimport com.facebook.react.bridge.NativeModule;\nimport com.facebook.react.bridge.ReactApplicationContext;\nimport com.facebook.react.uimanager.ViewManager;\n\nimport java.util.Collections;\nimport java.util.List;\n\npublic class AriesAskarPackage implements ReactPackage {\n @NonNull\n @Override\n public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactContext) {\n return Collections.singletonList(new AriesAskarModule(reactContext));\n }\n\n @NonNull\n @Override\n public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactContext) {\n return Collections.emptyList();\n }\n}\n"},6666:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='<manifest xmlns:android="http://schemas.android.com/apk/res/android"\n package="org.hyperledger.indyvdr">\n</manifest>\n'},7383:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r='package org.hyperledger.indyvdr;\n\nimport android.util.Log;\n\nimport androidx.annotation.Keep;\nimport androidx.annotation.NonNull;\nimport androidx.annotation.Nullable;\nimport com.facebook.proguard.annotations.DoNotStrip;\n\nimport com.facebook.react.bridge.JavaScriptContextHolder;\nimport com.facebook.react.bridge.ReactContextBaseJavaModule;\nimport com.facebook.react.bridge.ReactApplicationContext;\nimport com.facebook.react.bridge.ReactContext;\nimport com.facebook.react.bridge.ReactMethod;\nimport com.facebook.react.module.annotations.ReactModule;\nimport com.facebook.react.turbomodule.core.CallInvokerHolderImpl;\nimport com.facebook.react.turbomodule.core.interfaces.CallInvokerHolder;\n\n@Keep\n@DoNotStrip\npublic class IndyVdrModule extends ReactContextBaseJavaModule {\n static {\n System.loadLibrary("indyvdrreactnative");\n }\n\n public static final String NAME = "IndyVdr";\n\n static String TAG = "IndyVdr";\n\n public IndyVdrModule(ReactApplicationContext reactContext) {\n super(reactContext);\n }\n\n @Override\n @NonNull\n public String getName() {\n return TAG;\n }\n\n private static native void installNative(long jsiRuntimePointer, CallInvokerHolderImpl jsCallInvokerHolder);\n\n @ReactMethod(isBlockingSynchronousMethod = true)\n public boolean install() {\n try {\n System.loadLibrary("indyvdrreactnative");\n ReactContext context = getReactApplicationContext();\n long jsContextPointer = context.getJavaScriptContextHolder().get();\n CallInvokerHolderImpl holder = (CallInvokerHolderImpl) context.getCatalystInstance().getJSCallInvokerHolder();\n installNative(jsContextPointer, holder);\n return true;\n } catch (Exception exception) {\n Log.e(NAME, "Failed to install JSI Bindings!", exception);\n return false;\n }\n }\n}\n'},1138:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r="package org.hyperledger.indyvdr;\n\nimport androidx.annotation.NonNull;\n\nimport com.facebook.react.ReactPackage;\nimport com.facebook.react.bridge.NativeModule;\nimport com.facebook.react.bridge.ReactApplicationContext;\nimport com.facebook.react.uimanager.ViewManager;\n\nimport java.util.Collections;\nimport java.util.List;\n\npublic class IndyVdrPackage implements ReactPackage {\n @NonNull\n @Override\n public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactContext) {\n return Collections.singletonList(new IndyVdrModule(reactContext));\n }\n\n @NonNull\n @Override\n public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactContext) {\n return Collections.emptyList();\n }\n}\n"},9373:(t,e,n)=>{"use strict";function r(t,e){let n;if(void 0===e)for(const r of t)null!=r&&(n<r||void 0===n&&r>=r)&&(n=r);else{let r=-1;for(let i of t)null!=(i=e(i,++r,t))&&(n<i||void 0===n&&i>=i)&&(n=i)}return n}function i(t,e){let n;if(void 0===e)for(const r of t)null!=r&&(n>r||void 0===n&&r>=r)&&(n=r);else{let r=-1;for(let i of t)null!=(i=e(i,++r,t))&&(n>i||void 0===n&&i>=i)&&(n=i)}return n}function a(t){return t}n.d(e,{Nb1:()=>oo,LLu:()=>b,F5q:()=>y,$0Z:()=>_o,Dts:()=>To,WQY:()=>So,qpX:()=>Co,u93:()=>Do,tFB:()=>Oo,YY7:()=>No,OvA:()=>Fo,dCK:()=>Ro,zgE:()=>jo,fGX:()=>zo,$m7:()=>Uo,c_6:()=>uo,fxm:()=>Ho,FdL:()=>tl,ak_:()=>el,SxZ:()=>il,eA_:()=>sl,jsv:()=>ll,iJ:()=>ol,JHv:()=>mr,jvg:()=>fo,Fp7:()=>r,VV$:()=>i,ve8:()=>yo,BYU:()=>li,PKp:()=>gi,Xf:()=>Ls,Ys:()=>Ns,td_:()=>Ms,YPS:()=>Vn,rr1:()=>Ni,i$Z:()=>ha,WQD:()=>Ii,Z_i:()=>Ai,F0B:()=>Qi,NGh:()=>Ri});var s=1,o=2,l=3,c=4,u=1e-6;function h(t){return"translate("+t+",0)"}function d(t){return"translate(0,"+t+")"}function p(t){return e=>+t(e)}function f(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function m(){return!this.__axis}function g(t,e){var n=[],r=null,i=null,g=6,y=6,b=3,x="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,v=t===s||t===c?-1:1,_=t===c||t===o?"x":"y",k=t===s||t===l?h:d;function T(h){var d=null==r?e.ticks?e.ticks.apply(e,n):e.domain():r,T=null==i?e.tickFormat?e.tickFormat.apply(e,n):a:i,w=Math.max(g,0)+b,S=e.range(),E=+S[0]+x,C=+S[S.length-1]+x,D=(e.bandwidth?f:p)(e.copy(),x),A=h.selection?h.selection():h,O=A.selectAll(".domain").data([null]),I=A.selectAll(".tick").data(d,e).order(),L=I.exit(),N=I.enter().append("g").attr("class","tick"),M=I.select("line"),F=I.select("text");O=O.merge(O.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),I=I.merge(N),M=M.merge(N.append("line").attr("stroke","currentColor").attr(_+"2",v*g)),F=F.merge(N.append("text").attr("fill","currentColor").attr(_,v*w).attr("dy",t===s?"0em":t===l?"0.71em":"0.32em")),h!==A&&(O=O.transition(h),I=I.transition(h),M=M.transition(h),F=F.transition(h),L=L.transition(h).attr("opacity",u).attr("transform",(function(t){return isFinite(t=D(t))?k(t+x):this.getAttribute("transform")})),N.attr("opacity",u).attr("transform",(function(t){var e=this.parentNode.__axis;return k((e&&isFinite(e=e(t))?e:D(t))+x)}))),L.remove(),O.attr("d",t===c||t===o?y?"M"+v*y+","+E+"H"+x+"V"+C+"H"+v*y:"M"+x+","+E+"V"+C:y?"M"+E+","+v*y+"V"+x+"H"+C+"V"+v*y:"M"+E+","+x+"H"+C),I.attr("opacity",1).attr("transform",(function(t){return k(D(t)+x)})),M.attr(_+"2",v*g),F.attr(_,v*w).text(T),A.filter(m).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===o?"start":t===c?"end":"middle"),A.each((function(){this.__axis=D}))}return T.scale=function(t){return arguments.length?(e=t,T):e},T.ticks=function(){return n=Array.from(arguments),T},T.tickArguments=function(t){return arguments.length?(n=null==t?[]:Array.from(t),T):n.slice()},T.tickValues=function(t){return arguments.length?(r=null==t?null:Array.from(t),T):r&&r.slice()},T.tickFormat=function(t){return arguments.length?(i=t,T):i},T.tickSize=function(t){return arguments.length?(g=y=+t,T):g},T.tickSizeInner=function(t){return arguments.length?(g=+t,T):g},T.tickSizeOuter=function(t){return arguments.length?(y=+t,T):y},T.tickPadding=function(t){return arguments.length?(b=+t,T):b},T.offset=function(t){return arguments.length?(x=+t,T):x},T}function y(t){return g(s,t)}function b(t){return g(l,t)}function x(){}function v(t){return null==t?x:function(){return this.querySelector(t)}}function _(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function k(){return[]}function T(t){return null==t?k:function(){return this.querySelectorAll(t)}}function w(t){return function(){return this.matches(t)}}function S(t){return function(e){return e.matches(t)}}var E=Array.prototype.find;function C(){return this.firstElementChild}var D=Array.prototype.filter;function A(){return Array.from(this.children)}function O(t){return new Array(t.length)}function I(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function L(t,e,n,r,i,a){for(var s,o=0,l=e.length,c=a.length;o<c;++o)(s=e[o])?(s.__data__=a[o],r[o]=s):n[o]=new I(t,a[o]);for(;o<l;++o)(s=e[o])&&(i[o]=s)}function N(t,e,n,r,i,a,s){var o,l,c,u=new Map,h=e.length,d=a.length,p=new Array(h);for(o=0;o<h;++o)(l=e[o])&&(p[o]=c=s.call(l,l.__data__,o,e)+"",u.has(c)?i[o]=l:u.set(c,l));for(o=0;o<d;++o)c=s.call(t,a[o],o,a)+"",(l=u.get(c))?(r[o]=l,l.__data__=a[o],u.delete(c)):n[o]=new I(t,a[o]);for(o=0;o<h;++o)(l=e[o])&&u.get(p[o])===l&&(i[o]=l)}function M(t){return t.__data__}function F(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function B(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}I.prototype={constructor:I,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var R="http://www.w3.org/1999/xhtml";const $={svg:"http://www.w3.org/2000/svg",xhtml:R,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Z(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),$.hasOwnProperty(e)?{space:$[e],local:t}:t}function j(t){return function(){this.removeAttribute(t)}}function P(t){return function(){this.removeAttributeNS(t.space,t.local)}}function z(t,e){return function(){this.setAttribute(t,e)}}function Y(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function U(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function W(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function H(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function q(t){return function(){this.style.removeProperty(t)}}function V(t,e,n){return function(){this.style.setProperty(t,e,n)}}function G(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function X(t,e){return t.style.getPropertyValue(e)||H(t).getComputedStyle(t,null).getPropertyValue(e)}function K(t){return function(){delete this[t]}}function Q(t,e){return function(){this[t]=e}}function J(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function tt(t){return t.trim().split(/^|\s+/)}function et(t){return t.classList||new nt(t)}function nt(t){this._node=t,this._names=tt(t.getAttribute("class")||"")}function rt(t,e){for(var n=et(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function it(t,e){for(var n=et(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function at(t){return function(){rt(this,t)}}function st(t){return function(){it(this,t)}}function ot(t,e){return function(){(e.apply(this,arguments)?rt:it)(this,t)}}function lt(){this.textContent=""}function ct(t){return function(){this.textContent=t}}function ut(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function ht(){this.innerHTML=""}function dt(t){return function(){this.innerHTML=t}}function pt(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function ft(){this.nextSibling&&this.parentNode.appendChild(this)}function mt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function gt(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===R&&e.documentElement.namespaceURI===R?e.createElement(t):e.createElementNS(n,t)}}function yt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function bt(t){var e=Z(t);return(e.local?yt:gt)(e)}function xt(){return null}function vt(){var t=this.parentNode;t&&t.removeChild(this)}function _t(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function kt(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Tt(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,a=e.length;r<a;++r)n=e[r],t.type&&n.type!==t.type||n.name!==t.name?e[++i]=n:this.removeEventListener(n.type,n.listener,n.options);++i?e.length=i:delete this.__on}}}function wt(t,e,n){return function(){var r,i=this.__on,a=function(t){return function(e){t.call(this,e,this.__data__)}}(e);if(i)for(var s=0,o=i.length;s<o;++s)if((r=i[s]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=a,r.options=n),void(r.value=e);this.addEventListener(t.type,a,n),r={type:t.type,name:t.name,value:e,listener:a,options:n},i?i.push(r):this.__on=[r]}}function St(t,e,n){var r=H(t),i=r.CustomEvent;"function"==typeof i?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function Et(t,e){return function(){return St(this,t,e)}}function Ct(t,e){return function(){return St(this,t,e.apply(this,arguments))}}nt.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Dt=[null];function At(t,e){this._groups=t,this._parents=e}function Ot(){return new At([[document.documentElement]],Dt)}At.prototype=Ot.prototype={constructor:At,select:function(t){"function"!=typeof t&&(t=v(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,s,o=e[i],l=o.length,c=r[i]=new Array(l),u=0;u<l;++u)(a=o[u])&&(s=t.call(a,a.__data__,u,o))&&("__data__"in a&&(s.__data__=a.__data__),c[u]=s);return new At(r,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return _(t.apply(this,arguments))}}(t):T(t);for(var e=this._groups,n=e.length,r=[],i=[],a=0;a<n;++a)for(var s,o=e[a],l=o.length,c=0;c<l;++c)(s=o[c])&&(r.push(t.call(s,s.__data__,c,o)),i.push(s));return new At(r,i)},selectChild:function(t){return this.select(null==t?C:function(t){return function(){return E.call(this.children,t)}}("function"==typeof t?t:S(t)))},selectChildren:function(t){return this.selectAll(null==t?A:function(t){return function(){return D.call(this.children,t)}}("function"==typeof t?t:S(t)))},filter:function(t){"function"!=typeof t&&(t=w(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,s=e[i],o=s.length,l=r[i]=[],c=0;c<o;++c)(a=s[c])&&t.call(a,a.__data__,c,s)&&l.push(a);return new At(r,this._parents)},data:function(t,e){if(!arguments.length)return Array.from(this,M);var n,r=e?N:L,i=this._parents,a=this._groups;"function"!=typeof t&&(n=t,t=function(){return n});for(var s=a.length,o=new Array(s),l=new Array(s),c=new Array(s),u=0;u<s;++u){var h=i[u],d=a[u],p=d.length,f=F(t.call(h,h&&h.__data__,u,i)),m=f.length,g=l[u]=new Array(m),y=o[u]=new Array(m);r(h,d,g,y,c[u]=new Array(p),f,e);for(var b,x,v=0,_=0;v<m;++v)if(b=g[v]){for(v>=_&&(_=v+1);!(x=y[_])&&++_<m;);b._next=x||null}}return(o=new At(o,i))._enter=l,o._exit=c,o},enter:function(){return new At(this._enter||this._groups.map(O),this._parents)},exit:function(){return new At(this._exit||this._groups.map(O),this._parents)},join:function(t,e,n){var r=this.enter(),i=this,a=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=e&&(i=e(i))&&(i=i.selection()),null==n?a.remove():n(a),r&&i?r.merge(i).order():i},merge:function(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,a=r.length,s=Math.min(i,a),o=new Array(i),l=0;l<s;++l)for(var c,u=n[l],h=r[l],d=u.length,p=o[l]=new Array(d),f=0;f<d;++f)(c=u[f]||h[f])&&(p[f]=c);for(;l<i;++l)o[l]=n[l];return new At(o,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r,i=t[e],a=i.length-1,s=i[a];--a>=0;)(r=i[a])&&(s&&4^r.compareDocumentPosition(s)&&s.parentNode.insertBefore(r,s),s=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=B);for(var n=this._groups,r=n.length,i=new Array(r),a=0;a<r;++a){for(var s,o=n[a],l=o.length,c=i[a]=new Array(l),u=0;u<l;++u)(s=o[u])&&(c[u]=s);c.sort(e)}return new At(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,a=r.length;i<a;++i){var s=r[i];if(s)return s}return null},size:function(){let t=0;for(const e of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i,a=e[n],s=0,o=a.length;s<o;++s)(i=a[s])&&t.call(i,i.__data__,s,a);return this},attr:function(t,e){var n=Z(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((null==e?n.local?P:j:"function"==typeof e?n.local?W:U:n.local?Y:z)(n,e))},style:function(t,e,n){return arguments.length>1?this.each((null==e?q:"function"==typeof e?G:V)(t,e,null==n?"":n)):X(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?K:"function"==typeof e?J:Q)(t,e)):this.node()[t]},classed:function(t,e){var n=tt(t+"");if(arguments.length<2){for(var r=et(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each(("function"==typeof e?ot:e?at:st)(n,e))},text:function(t){return arguments.length?this.each(null==t?lt:("function"==typeof t?ut:ct)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?ht:("function"==typeof t?pt:dt)(t)):this.node().innerHTML},raise:function(){return this.each(ft)},lower:function(){return this.each(mt)},append:function(t){var e="function"==typeof t?t:bt(t);return this.select((function(){return this.appendChild(e.apply(this,arguments))}))},insert:function(t,e){var n="function"==typeof t?t:bt(t),r=null==e?xt:"function"==typeof e?e:v(e);return this.select((function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)}))},remove:function(){return this.each(vt)},clone:function(t){return this.select(t?kt:_t)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,e,n){var r,i,a=function(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}(t+""),s=a.length;if(!(arguments.length<2)){for(o=e?wt:Tt,r=0;r<s;++r)this.each(o(a[r],e,n));return this}var o=this.node().__on;if(o)for(var l,c=0,u=o.length;c<u;++c)for(r=0,l=o[c];r<s;++r)if((i=a[r]).type===l.type&&i.name===l.name)return l.value},dispatch:function(t,e){return this.each(("function"==typeof e?Ct:Et)(t,e))},[Symbol.iterator]:function*(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r,i=t[e],a=0,s=i.length;a<s;++a)(r=i[a])&&(yield r)}};const It=Ot;var Lt={value:()=>{}};function Nt(){for(var t,e=0,n=arguments.length,r={};e<n;++e){if(!(t=arguments[e]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new Mt(r)}function Mt(t){this._=t}function Ft(t,e){for(var n,r=0,i=t.length;r<i;++r)if((n=t[r]).name===e)return n.value}function Bt(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=Lt,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=n&&t.push({name:e,value:n}),t}Mt.prototype=Nt.prototype={constructor:Mt,on:function(t,e){var n,r,i=this._,a=(r=i,(t+"").trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");if(n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}}))),s=-1,o=a.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++s<o;)if(n=(t=a[s]).type)i[n]=Bt(i[n],t.name,e);else if(null==e)for(n in i)i[n]=Bt(i[n],t.name,null);return this}for(;++s<o;)if((n=(t=a[s]).type)&&(n=Ft(i[n],t.name)))return n},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new Mt(t)},call:function(t,e){if((n=arguments.length-2)>0)for(var n,r,i=new Array(n),a=0;a<n;++a)i[a]=arguments[a+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(a=0,n=(r=this._[t]).length;a<n;++a)r[a].value.apply(e,i)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,a=r.length;i<a;++i)r[i].value.apply(e,n)}};const Rt=Nt;var $t,Zt,jt=0,Pt=0,zt=0,Yt=1e3,Ut=0,Wt=0,Ht=0,qt="object"==typeof performance&&performance.now?performance:Date,Vt="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Gt(){return Wt||(Vt(Xt),Wt=qt.now()+Ht)}function Xt(){Wt=0}function Kt(){this._call=this._time=this._next=null}function Qt(t,e,n){var r=new Kt;return r.restart(t,e,n),r}function Jt(){Wt=(Ut=qt.now())+Ht,jt=Pt=0;try{!function(){Gt(),++jt;for(var t,e=$t;e;)(t=Wt-e._time)>=0&&e._call.call(void 0,t),e=e._next;--jt}()}finally{jt=0,function(){var t,e,n=$t,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:$t=e);Zt=t,ee(r)}(),Wt=0}}function te(){var t=qt.now(),e=t-Ut;e>Yt&&(Ht-=e,Ut=t)}function ee(t){jt||(Pt&&(Pt=clearTimeout(Pt)),t-Wt>24?(t<1/0&&(Pt=setTimeout(Jt,t-qt.now()-Ht)),zt&&(zt=clearInterval(zt))):(zt||(Ut=qt.now(),zt=setInterval(te,Yt)),jt=1,Vt(Jt)))}function ne(t,e,n){var r=new Kt;return e=null==e?0:+e,r.restart((n=>{r.stop(),t(n+e)}),e,n),r}Kt.prototype=Qt.prototype={constructor:Kt,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?Gt():+n)+(null==e?0:+e),this._next||Zt===this||(Zt?Zt._next=this:$t=this,Zt=this),this._call=t,this._time=n,ee()},stop:function(){this._call&&(this._call=null,this._time=1/0,ee())}};var re=Rt("start","end","cancel","interrupt"),ie=[],ae=0,se=1,oe=2,le=3,ce=4,ue=5,he=6;function de(t,e,n,r,i,a){var s=t.__transition;if(s){if(n in s)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function a(t){n.state=se,n.timer.restart(s,n.delay,n.time),n.delay<=t&&s(t-n.delay)}function s(a){var c,u,h,d;if(n.state!==se)return l();for(c in i)if((d=i[c]).name===n.name){if(d.state===le)return ne(s);d.state===ce?(d.state=he,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete i[c]):+c<e&&(d.state=he,d.timer.stop(),d.on.call("cancel",t,t.__data__,d.index,d.group),delete i[c])}if(ne((function(){n.state===le&&(n.state=ce,n.timer.restart(o,n.delay,n.time),o(a))})),n.state=oe,n.on.call("start",t,t.__data__,n.index,n.group),n.state===oe){for(n.state=le,r=new Array(h=n.tween.length),c=0,u=-1;c<h;++c)(d=n.tween[c].value.call(t,t.__data__,n.index,n.group))&&(r[++u]=d);r.length=u+1}}function o(e){for(var i=e<n.duration?n.ease.call(null,e/n.duration):(n.timer.restart(l),n.state=ue,1),a=-1,s=r.length;++a<s;)r[a].call(t,i);n.state===ue&&(n.on.call("end",t,t.__data__,n.index,n.group),l())}function l(){for(var r in n.state=he,n.timer.stop(),delete i[e],i)return;delete t.__transition}i[e]=n,n.timer=Qt(a,0,n.time)}(t,n,{name:e,index:r,group:i,on:re,tween:ie,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:ae})}function pe(t,e){var n=me(t,e);if(n.state>ae)throw new Error("too late; already scheduled");return n}function fe(t,e){var n=me(t,e);if(n.state>le)throw new Error("too late; already running");return n}function me(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function ge(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var ye,be=180/Math.PI,xe={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ve(t,e,n,r,i,a){var s,o,l;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(l=t*n+e*r)&&(n-=t*l,r-=e*l),(o=Math.sqrt(n*n+r*r))&&(n/=o,r/=o,l/=o),t*r<e*n&&(t=-t,e=-e,l=-l,s=-s),{translateX:i,translateY:a,rotate:Math.atan2(e,t)*be,skewX:Math.atan(l)*be,scaleX:s,scaleY:o}}function _e(t,e,n,r){function i(t){return t.length?t.pop()+" ":""}return function(a,s){var o=[],l=[];return a=t(a),s=t(s),function(t,r,i,a,s,o){if(t!==i||r!==a){var l=s.push("translate(",null,e,null,n);o.push({i:l-4,x:ge(t,i)},{i:l-2,x:ge(r,a)})}else(i||a)&&s.push("translate("+i+e+a+n)}(a.translateX,a.translateY,s.translateX,s.translateY,o,l),function(t,e,n,a){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,r)-2,x:ge(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(a.rotate,s.rotate,o,l),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,r)-2,x:ge(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(a.skewX,s.skewX,o,l),function(t,e,n,r,a,s){if(t!==n||e!==r){var o=a.push(i(a)+"scale(",null,",",null,")");s.push({i:o-4,x:ge(t,n)},{i:o-2,x:ge(e,r)})}else 1===n&&1===r||a.push(i(a)+"scale("+n+","+r+")")}(a.scaleX,a.scaleY,s.scaleX,s.scaleY,o,l),a=s=null,function(t){for(var e,n=-1,r=l.length;++n<r;)o[(e=l[n]).i]=e.x(t);return o.join("")}}}var ke=_e((function(t){const e=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?xe:ve(e.a,e.b,e.c,e.d,e.e,e.f)}),"px, ","px)","deg)"),Te=_e((function(t){return null==t?xe:(ye||(ye=document.createElementNS("http://www.w3.org/2000/svg","g")),ye.setAttribute("transform",t),(t=ye.transform.baseVal.consolidate())?ve((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):xe)}),", ",")",")");function we(t,e){var n,r;return function(){var i=fe(this,t),a=i.tween;if(a!==n)for(var s=0,o=(r=n=a).length;s<o;++s)if(r[s].name===e){(r=r.slice()).splice(s,1);break}i.tween=r}}function Se(t,e,n){var r,i;if("function"!=typeof n)throw new Error;return function(){var a=fe(this,t),s=a.tween;if(s!==r){i=(r=s).slice();for(var o={name:e,value:n},l=0,c=i.length;l<c;++l)if(i[l].name===e){i[l]=o;break}l===c&&i.push(o)}a.tween=i}}function Ee(t,e,n){var r=t._id;return t.each((function(){var t=fe(this,r);(t.value||(t.value={}))[e]=n.apply(this,arguments)})),function(t){return me(t,r).value[e]}}function Ce(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function De(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Ae(){}var Oe=.7,Ie=1/Oe,Le="\\s*([+-]?\\d+)\\s*",Ne="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Me="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Fe=/^#([0-9a-f]{3,8})$/,Be=new RegExp(`^rgb\\(${Le},${Le},${Le}\\)$`),Re=new RegExp(`^rgb\\(${Me},${Me},${Me}\\)$`),$e=new RegExp(`^rgba\\(${Le},${Le},${Le},${Ne}\\)$`),Ze=new RegExp(`^rgba\\(${Me},${Me},${Me},${Ne}\\)$`),je=new RegExp(`^hsl\\(${Ne},${Me},${Me}\\)$`),Pe=new RegExp(`^hsla\\(${Ne},${Me},${Me},${Ne}\\)$`),ze={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Ye(){return this.rgb().formatHex()}function Ue(){return this.rgb().formatRgb()}function We(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Fe.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?He(e):3===n?new Xe(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?qe(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?qe(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Be.exec(t))?new Xe(e[1],e[2],e[3],1):(e=Re.exec(t))?new Xe(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=$e.exec(t))?qe(e[1],e[2],e[3],e[4]):(e=Ze.exec(t))?qe(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=je.exec(t))?nn(e[1],e[2]/100,e[3]/100,1):(e=Pe.exec(t))?nn(e[1],e[2]/100,e[3]/100,e[4]):ze.hasOwnProperty(t)?He(ze[t]):"transparent"===t?new Xe(NaN,NaN,NaN,0):null}function He(t){return new Xe(t>>16&255,t>>8&255,255&t,1)}function qe(t,e,n,r){return r<=0&&(t=e=n=NaN),new Xe(t,e,n,r)}function Ve(t){return t instanceof Ae||(t=We(t)),t?new Xe((t=t.rgb()).r,t.g,t.b,t.opacity):new Xe}function Ge(t,e,n,r){return 1===arguments.length?Ve(t):new Xe(t,e,n,null==r?1:r)}function Xe(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function Ke(){return`#${en(this.r)}${en(this.g)}${en(this.b)}`}function Qe(){const t=Je(this.opacity);return`${1===t?"rgb(":"rgba("}${tn(this.r)}, ${tn(this.g)}, ${tn(this.b)}${1===t?")":`, ${t})`}`}function Je(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function tn(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function en(t){return((t=tn(t))<16?"0":"")+t.toString(16)}function nn(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new an(t,e,n,r)}function rn(t){if(t instanceof an)return new an(t.h,t.s,t.l,t.opacity);if(t instanceof Ae||(t=We(t)),!t)return new an;if(t instanceof an)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),s=NaN,o=a-i,l=(a+i)/2;return o?(s=e===a?(n-r)/o+6*(n<r):n===a?(r-e)/o+2:(e-n)/o+4,o/=l<.5?a+i:2-a-i,s*=60):o=l>0&&l<1?0:s,new an(s,o,l,t.opacity)}function an(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function sn(t){return(t=(t||0)%360)<0?t+360:t}function on(t){return Math.max(0,Math.min(1,t||0))}function ln(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function cn(t,e,n,r,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*n+(1+3*t+3*a-3*s)*r+s*i)/6}Ce(Ae,We,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Ye,formatHex:Ye,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return rn(this).formatHsl()},formatRgb:Ue,toString:Ue}),Ce(Xe,Ge,De(Ae,{brighter(t){return t=null==t?Ie:Math.pow(Ie,t),new Xe(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?Oe:Math.pow(Oe,t),new Xe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Xe(tn(this.r),tn(this.g),tn(this.b),Je(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ke,formatHex:Ke,formatHex8:function(){return`#${en(this.r)}${en(this.g)}${en(this.b)}${en(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Qe,toString:Qe})),Ce(an,(function(t,e,n,r){return 1===arguments.length?rn(t):new an(t,e,n,null==r?1:r)}),De(Ae,{brighter(t){return t=null==t?Ie:Math.pow(Ie,t),new an(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?Oe:Math.pow(Oe,t),new an(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new Xe(ln(t>=240?t-240:t+120,i,r),ln(t,i,r),ln(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new an(sn(this.h),on(this.s),on(this.l),Je(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Je(this.opacity);return`${1===t?"hsl(":"hsla("}${sn(this.h)}, ${100*on(this.s)}%, ${100*on(this.l)}%${1===t?")":`, ${t})`}`}}));const un=t=>()=>t;function hn(t,e){return function(n){return t+n*e}}function dn(t){return 1==(t=+t)?pn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):un(isNaN(e)?n:e)}}function pn(t,e){var n=e-t;return n?hn(t,n):un(isNaN(t)?e:t)}const fn=function t(e){var n=dn(e);function r(t,e){var r=n((t=Ge(t)).r,(e=Ge(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),s=pn(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=s(e),t+""}}return r.gamma=t,r}(1);function mn(t){return function(e){var n,r,i=e.length,a=new Array(i),s=new Array(i),o=new Array(i);for(n=0;n<i;++n)r=Ge(e[n]),a[n]=r.r||0,s[n]=r.g||0,o[n]=r.b||0;return a=t(a),s=t(s),o=t(o),r.opacity=1,function(t){return r.r=a(t),r.g=s(t),r.b=o(t),r+""}}}mn((function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],s=r>0?t[r-1]:2*i-a,o=r<e-1?t[r+2]:2*a-i;return cn((n-r/e)*e,s,i,a,o)}})),mn((function(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],a=t[r%e],s=t[(r+1)%e],o=t[(r+2)%e];return cn((n-r/e)*e,i,a,s,o)}}));var gn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,yn=new RegExp(gn.source,"g");function bn(t,e){var n,r,i,a=gn.lastIndex=yn.lastIndex=0,s=-1,o=[],l=[];for(t+="",e+="";(n=gn.exec(t))&&(r=yn.exec(e));)(i=r.index)>a&&(i=e.slice(a,i),o[s]?o[s]+=i:o[++s]=i),(n=n[0])===(r=r[0])?o[s]?o[s]+=r:o[++s]=r:(o[++s]=null,l.push({i:s,x:ge(n,r)})),a=yn.lastIndex;return a<e.length&&(i=e.slice(a),o[s]?o[s]+=i:o[++s]=i),o.length<2?l[0]?function(t){return function(e){return t(e)+""}}(l[0].x):function(t){return function(){return t}}(e):(e=l.length,function(t){for(var n,r=0;r<e;++r)o[(n=l[r]).i]=n.x(t);return o.join("")})}function xn(t,e){var n;return("number"==typeof e?ge:e instanceof We?fn:(n=We(e))?(e=n,fn):bn)(t,e)}function vn(t){return function(){this.removeAttribute(t)}}function _n(t){return function(){this.removeAttributeNS(t.space,t.local)}}function kn(t,e,n){var r,i,a=n+"";return function(){var s=this.getAttribute(t);return s===a?null:s===r?i:i=e(r=s,n)}}function Tn(t,e,n){var r,i,a=n+"";return function(){var s=this.getAttributeNS(t.space,t.local);return s===a?null:s===r?i:i=e(r=s,n)}}function wn(t,e,n){var r,i,a;return function(){var s,o,l=n(this);if(null!=l)return(s=this.getAttribute(t))===(o=l+"")?null:s===r&&o===i?a:(i=o,a=e(r=s,l));this.removeAttribute(t)}}function Sn(t,e,n){var r,i,a;return function(){var s,o,l=n(this);if(null!=l)return(s=this.getAttributeNS(t.space,t.local))===(o=l+"")?null:s===r&&o===i?a:(i=o,a=e(r=s,l));this.removeAttributeNS(t.space,t.local)}}function En(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&function(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}(t,i)),n}return i._value=e,i}function Cn(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&function(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}(t,i)),n}return i._value=e,i}function Dn(t,e){return function(){pe(this,t).delay=+e.apply(this,arguments)}}function An(t,e){return e=+e,function(){pe(this,t).delay=e}}function On(t,e){return function(){fe(this,t).duration=+e.apply(this,arguments)}}function In(t,e){return e=+e,function(){fe(this,t).duration=e}}var Ln=It.prototype.constructor;function Nn(t){return function(){this.style.removeProperty(t)}}var Mn=0;function Fn(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function Bn(){return++Mn}var Rn=It.prototype;Fn.prototype=function(t){return It().transition(t)}.prototype={constructor:Fn,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=v(t));for(var r=this._groups,i=r.length,a=new Array(i),s=0;s<i;++s)for(var o,l,c=r[s],u=c.length,h=a[s]=new Array(u),d=0;d<u;++d)(o=c[d])&&(l=t.call(o,o.__data__,d,c))&&("__data__"in o&&(l.__data__=o.__data__),h[d]=l,de(h[d],e,n,d,h,me(o,n)));return new Fn(a,this._parents,e,n)},selectAll:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=T(t));for(var r=this._groups,i=r.length,a=[],s=[],o=0;o<i;++o)for(var l,c=r[o],u=c.length,h=0;h<u;++h)if(l=c[h]){for(var d,p=t.call(l,l.__data__,h,c),f=me(l,n),m=0,g=p.length;m<g;++m)(d=p[m])&&de(d,e,n,m,p,f);a.push(p),s.push(l)}return new Fn(a,s,e,n)},selectChild:Rn.selectChild,selectChildren:Rn.selectChildren,filter:function(t){"function"!=typeof t&&(t=w(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,s=e[i],o=s.length,l=r[i]=[],c=0;c<o;++c)(a=s[c])&&t.call(a,a.__data__,c,s)&&l.push(a);return new Fn(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,a=Math.min(r,i),s=new Array(r),o=0;o<a;++o)for(var l,c=e[o],u=n[o],h=c.length,d=s[o]=new Array(h),p=0;p<h;++p)(l=c[p]||u[p])&&(d[p]=l);for(;o<r;++o)s[o]=e[o];return new Fn(s,this._parents,this._name,this._id)},selection:function(){return new Ln(this._groups,this._parents)},transition:function(){for(var t=this._name,e=this._id,n=Bn(),r=this._groups,i=r.length,a=0;a<i;++a)for(var s,o=r[a],l=o.length,c=0;c<l;++c)if(s=o[c]){var u=me(s,e);de(s,t,n,c,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new Fn(r,this._parents,t,n)},call:Rn.call,nodes:Rn.nodes,node:Rn.node,size:Rn.size,empty:Rn.empty,each:Rn.each,on:function(t,e){var n=this._id;return arguments.length<2?me(this.node(),n).on.on(t):this.each(function(t,e,n){var r,i,a=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?pe:fe;return function(){var s=a(this,t),o=s.on;o!==r&&(i=(r=o).copy()).on(e,n),s.on=i}}(n,t,e))},attr:function(t,e){var n=Z(t),r="transform"===n?Te:xn;return this.attrTween(t,"function"==typeof e?(n.local?Sn:wn)(n,r,Ee(this,"attr."+t,e)):null==e?(n.local?_n:vn)(n):(n.local?Tn:kn)(n,r,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var r=Z(t);return this.tween(n,(r.local?En:Cn)(r,e))},style:function(t,e,n){var r="transform"==(t+="")?ke:xn;return null==e?this.styleTween(t,function(t,e){var n,r,i;return function(){var a=X(this,t),s=(this.style.removeProperty(t),X(this,t));return a===s?null:a===n&&s===r?i:i=e(n=a,r=s)}}(t,r)).on("end.style."+t,Nn(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var r,i,a;return function(){var s=X(this,t),o=n(this),l=o+"";return null==o&&(this.style.removeProperty(t),l=o=X(this,t)),s===l?null:s===r&&l===i?a:(i=l,a=e(r=s,o))}}(t,r,Ee(this,"style."+t,e))).each(function(t,e){var n,r,i,a,s="style."+e,o="end."+s;return function(){var l=fe(this,t),c=l.on,u=null==l.value[s]?a||(a=Nn(e)):void 0;c===n&&i===u||(r=(n=c).copy()).on(o,i=u),l.on=r}}(this._id,t)):this.styleTween(t,function(t,e,n){var r,i,a=n+"";return function(){var s=X(this,t);return s===a?null:s===r?i:i=e(r=s,n)}}(t,r,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;return this.tween(r,function(t,e,n){var r,i;function a(){var a=e.apply(this,arguments);return a!==i&&(r=(i=a)&&function(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}(t,a,n)),r}return a._value=e,a}(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(Ee(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,function(t){var e,n;function r(){var r=t.apply(this,arguments);return r!==n&&(e=(n=r)&&function(t){return function(e){this.textContent=t.call(this,e)}}(r)),e}return r._value=t,r}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r,i=me(this.node(),n).tween,a=0,s=i.length;a<s;++a)if((r=i[a]).name===t)return r.value;return null}return this.each((null==e?we:Se)(n,t,e))},delay:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?Dn:An)(e,t)):me(this.node(),e).delay},duration:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?On:In)(e,t)):me(this.node(),e).duration},ease:function(t){var e=this._id;return arguments.length?this.each(function(t,e){if("function"!=typeof e)throw new Error;return function(){fe(this,t).ease=e}}(e,t)):me(this.node(),e).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,e){return function(){var n=e.apply(this,arguments);if("function"!=typeof n)throw new Error;fe(this,t).ease=n}}(this._id,t))},end:function(){var t,e,n=this,r=n._id,i=n.size();return new Promise((function(a,s){var o={value:s},l={value:function(){0==--i&&a()}};n.each((function(){var n=fe(this,r),i=n.on;i!==t&&((e=(t=i).copy())._.cancel.push(o),e._.interrupt.push(o),e._.end.push(l)),n.on=e})),0===i&&a()}))},[Symbol.iterator]:Rn[Symbol.iterator]};var $n={time:null,delay:0,duration:250,ease:function(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}};function Zn(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}It.prototype.interrupt=function(t){return this.each((function(){!function(t,e){var n,r,i,a=t.__transition,s=!0;if(a){for(i in e=null==e?null:e+"",a)(n=a[i]).name===e?(r=n.state>oe&&n.state<ue,n.state=he,n.timer.stop(),n.on.call(r?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):s=!1;s&&delete t.__transition}}(this,t)}))},It.prototype.transition=function(t){var e,n;t instanceof Fn?(e=t._id,t=t._name):(e=Bn(),(n=$n).time=Gt(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var s,o=r[a],l=o.length,c=0;c<l;++c)(s=o[c])&&de(s,t,e,c,o,n||Zn(s,e));return new Fn(r,this._parents,t,e)};const{abs:jn,max:Pn,min:zn}=Math;function Yn(t){return[+t[0],+t[1]]}function Un(t){return[Yn(t[0]),Yn(t[1])]}["w","e"].map(Wn),["n","s"].map(Wn),["n","w","e","s","nw","ne","sw","se"].map(Wn);function Wn(t){return{type:t}}function Hn(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.text()}function qn(t){return(e,n)=>function(t,e){return fetch(t,e).then(Hn)}(e,n).then((e=>(new DOMParser).parseFromString(e,t)))}qn("application/xml");qn("text/html");var Vn=qn("image/svg+xml");const Gn=Math.PI/180,Xn=180/Math.PI,Kn=.96422,Qn=1,Jn=.82521,tr=4/29,er=6/29,nr=3*er*er,rr=er*er*er;function ir(t){if(t instanceof ar)return new ar(t.l,t.a,t.b,t.opacity);if(t instanceof dr)return pr(t);t instanceof Xe||(t=Ve(t));var e,n,r=cr(t.r),i=cr(t.g),a=cr(t.b),s=sr((.2225045*r+.7168786*i+.0606169*a)/Qn);return r===i&&i===a?e=n=s:(e=sr((.4360747*r+.3850649*i+.1430804*a)/Kn),n=sr((.0139322*r+.0971045*i+.7141733*a)/Jn)),new ar(116*s-16,500*(e-s),200*(s-n),t.opacity)}function ar(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}function sr(t){return t>rr?Math.pow(t,1/3):t/nr+tr}function or(t){return t>er?t*t*t:nr*(t-tr)}function lr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function cr(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function ur(t){if(t instanceof dr)return new dr(t.h,t.c,t.l,t.opacity);if(t instanceof ar||(t=ir(t)),0===t.a&&0===t.b)return new dr(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Xn;return new dr(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function hr(t,e,n,r){return 1===arguments.length?ur(t):new dr(t,e,n,null==r?1:r)}function dr(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function pr(t){if(isNaN(t.h))return new ar(t.l,0,0,t.opacity);var e=t.h*Gn;return new ar(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}function fr(t){return function(e,n){var r=t((e=hr(e)).h,(n=hr(n)).h),i=pn(e.c,n.c),a=pn(e.l,n.l),s=pn(e.opacity,n.opacity);return function(t){return e.h=r(t),e.c=i(t),e.l=a(t),e.opacity=s(t),e+""}}}Ce(ar,(function(t,e,n,r){return 1===arguments.length?ir(t):new ar(t,e,n,null==r?1:r)}),De(Ae,{brighter(t){return new ar(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker(t){return new ar(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return new Xe(lr(3.1338561*(e=Kn*or(e))-1.6168667*(t=Qn*or(t))-.4906146*(n=Jn*or(n))),lr(-.9787684*e+1.9161415*t+.033454*n),lr(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}})),Ce(dr,hr,De(Ae,{brighter(t){return new dr(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker(t){return new dr(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb(){return pr(this).rgb()}}));const mr=fr((function(t,e){var n=e-t;return n?hn(t,n>180||n<-180?n-360*Math.round(n/360):n):un(isNaN(t)?e:t)}));fr(pn);const gr=Math.sqrt(50),yr=Math.sqrt(10),br=Math.sqrt(2);function xr(t,e,n){const r=(e-t)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/Math.pow(10,i),s=a>=gr?10:a>=yr?5:a>=br?2:1;let o,l,c;return i<0?(c=Math.pow(10,-i)/s,o=Math.round(t*c),l=Math.round(e*c),o/c<t&&++o,l/c>e&&--l,c=-c):(c=Math.pow(10,i)*s,o=Math.round(t/c),l=Math.round(e/c),o*c<t&&++o,l*c>e&&--l),l<o&&.5<=n&&n<2?xr(t,e,2*n):[o,l,c]}function vr(t,e,n){return xr(t=+t,e=+e,n=+n)[2]}function _r(t,e,n){n=+n;const r=(e=+e)<(t=+t),i=r?vr(e,t,n):vr(t,e,n);return(r?-1:1)*(i<0?1/-i:i)}function kr(t,e){return null==t||null==e?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Tr(t,e){return null==t||null==e?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function wr(t){let e,n,r;function i(t,r,i=0,a=t.length){if(i<a){if(0!==e(r,r))return a;do{const e=i+a>>>1;n(t[e],r)<0?i=e+1:a=e}while(i<a)}return i}return 2!==t.length?(e=kr,n=(e,n)=>kr(t(e),n),r=(e,n)=>t(e)-n):(e=t===kr||t===Tr?t:Sr,n=t,r=t),{left:i,center:function(t,e,n=0,a=t.length){const s=i(t,e,n,a-1);return s>n&&r(t[s-1],e)>-r(t[s],e)?s-1:s},right:function(t,r,i=0,a=t.length){if(i<a){if(0!==e(r,r))return a;do{const e=i+a>>>1;n(t[e],r)<=0?i=e+1:a=e}while(i<a)}return i}}}function Sr(){return 0}const Er=wr(kr),Cr=Er.right,Dr=(Er.left,wr((function(t){return null===t?NaN:+t})).center,Cr);function Ar(t,e){var n,r=e?e.length:0,i=t?Math.min(r,t.length):0,a=new Array(i),s=new Array(r);for(n=0;n<i;++n)a[n]=Nr(t[n],e[n]);for(;n<r;++n)s[n]=e[n];return function(t){for(n=0;n<i;++n)s[n]=a[n](t);return s}}function Or(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function Ir(t,e){var n,r={},i={};for(n in null!==t&&"object"==typeof t||(t={}),null!==e&&"object"==typeof e||(e={}),e)n in t?r[n]=Nr(t[n],e[n]):i[n]=e[n];return function(t){for(n in r)i[n]=r[n](t);return i}}function Lr(t,e){e||(e=[]);var n,r=t?Math.min(e.length,t.length):0,i=e.slice();return function(a){for(n=0;n<r;++n)i[n]=t[n]*(1-a)+e[n]*a;return i}}function Nr(t,e){var n,r,i=typeof e;return null==e||"boolean"===i?un(e):("number"===i?ge:"string"===i?(n=We(e))?(e=n,fn):bn:e instanceof We?fn:e instanceof Date?Or:(r=e,!ArrayBuffer.isView(r)||r instanceof DataView?Array.isArray(e)?Ar:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?Ir:ge:Lr))(t,e)}function Mr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}function Fr(t){return+t}var Br=[0,1];function Rr(t){return t}function $r(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:(n=isNaN(e)?NaN:.5,function(){return n});var n}function Zr(t,e,n){var r=t[0],i=t[1],a=e[0],s=e[1];return i<r?(r=$r(i,r),a=n(s,a)):(r=$r(r,i),a=n(a,s)),function(t){return a(r(t))}}function jr(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),a=new Array(r),s=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++s<r;)i[s]=$r(t[s],t[s+1]),a[s]=n(e[s],e[s+1]);return function(e){var n=Dr(t,e,1,r)-1;return a[n](i[n](e))}}function Pr(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function zr(){var t,e,n,r,i,a,s=Br,o=Br,l=Nr,c=Rr;function u(){var t,e,n,l=Math.min(s.length,o.length);return c!==Rr&&(t=s[0],e=s[l-1],t>e&&(n=t,t=e,e=n),c=function(n){return Math.max(t,Math.min(e,n))}),r=l>2?jr:Zr,i=a=null,h}function h(e){return null==e||isNaN(e=+e)?n:(i||(i=r(s.map(t),o,l)))(t(c(e)))}return h.invert=function(n){return c(e((a||(a=r(o,s.map(t),ge)))(n)))},h.domain=function(t){return arguments.length?(s=Array.from(t,Fr),u()):s.slice()},h.range=function(t){return arguments.length?(o=Array.from(t),u()):o.slice()},h.rangeRound=function(t){return o=Array.from(t),l=Mr,u()},h.clamp=function(t){return arguments.length?(c=!!t||Rr,u()):c!==Rr},h.interpolate=function(t){return arguments.length?(l=t,u()):l},h.unknown=function(t){return arguments.length?(n=t,h):n},function(n,r){return t=n,e=r,u()}}function Yr(){return zr()(Rr,Rr)}function Ur(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}var Wr,Hr=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function qr(t){if(!(e=Hr.exec(t)))throw new Error("invalid format: "+t);var e;return new Vr({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function Vr(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function Gr(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function Xr(t){return(t=Gr(Math.abs(t)))?t[1]:NaN}function Kr(t,e){var n=Gr(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}qr.prototype=Vr.prototype,Vr.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const Qr={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Kr(100*t,e),r:Kr,s:function(t,e){var n=Gr(t,e);if(!n)return t+"";var r=n[0],i=n[1],a=i-(Wr=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,s=r.length;return a===s?r:a>s?r+new Array(a-s+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+Gr(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Jr(t){return t}var ti,ei,ni,ri=Array.prototype.map,ii=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"];function ai(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?Jr:(e=ri.call(t.grouping,Number),n=t.thousands+"",function(t,r){for(var i=t.length,a=[],s=0,o=e[0],l=0;i>0&&o>0&&(l+o+1>r&&(o=Math.max(1,r-l)),a.push(t.substring(i-=o,i+o)),!((l+=o+1)>r));)o=e[s=(s+1)%e.length];return a.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",s=void 0===t.decimal?".":t.decimal+"",o=void 0===t.numerals?Jr:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(ri.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"\u2212":t.minus+"",u=void 0===t.nan?"NaN":t.nan+"";function h(t){var e=(t=qr(t)).fill,n=t.align,h=t.sign,d=t.symbol,p=t.zero,f=t.width,m=t.comma,g=t.precision,y=t.trim,b=t.type;"n"===b?(m=!0,b="g"):Qr[b]||(void 0===g&&(g=12),y=!0,b="g"),(p||"0"===e&&"="===n)&&(p=!0,e="0",n="=");var x="$"===d?i:"#"===d&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",v="$"===d?a:/[%p]/.test(b)?l:"",_=Qr[b],k=/[defgprs%]/.test(b);function T(t){var i,a,l,d=x,T=v;if("c"===b)T=_(t)+T,t="";else{var w=(t=+t)<0||1/t<0;if(t=isNaN(t)?u:_(Math.abs(t),g),y&&(t=function(t){t:for(var e,n=t.length,r=1,i=-1;r<n;++r)switch(t[r]){case".":i=e=r;break;case"0":0===i&&(i=r),e=r;break;default:if(!+t[r])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),w&&0==+t&&"+"!==h&&(w=!1),d=(w?"("===h?h:c:"-"===h||"("===h?"":h)+d,T=("s"===b?ii[8+Wr/3]:"")+T+(w&&"("===h?")":""),k)for(i=-1,a=t.length;++i<a;)if(48>(l=t.charCodeAt(i))||l>57){T=(46===l?s+t.slice(i+1):t.slice(i))+T,t=t.slice(0,i);break}}m&&!p&&(t=r(t,1/0));var S=d.length+t.length+T.length,E=S<f?new Array(f-S+1).join(e):"";switch(m&&p&&(t=r(E+t,E.length?f-T.length:1/0),E=""),n){case"<":t=d+t+T+E;break;case"=":t=d+E+t+T;break;case"^":t=E.slice(0,S=E.length>>1)+d+t+T+E.slice(S);break;default:t=E+d+t+T}return o(t)}return g=void 0===g?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),T.toString=function(){return t+""},T}return{format:h,formatPrefix:function(t,e){var n=h(((t=qr(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(Xr(e)/3))),i=Math.pow(10,-r),a=ii[8+r/3];return function(t){return n(i*t)+a}}}}function si(t,e,n,r){var i,a=_r(t,e,n);switch((r=qr(null==r?",f":r)).type){case"s":var s=Math.max(Math.abs(t),Math.abs(e));return null!=r.precision||isNaN(i=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Xr(e)/3)))-Xr(Math.abs(t)))}(a,s))||(r.precision=i),ni(r,s);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Xr(e)-Xr(t))+1}(a,Math.max(Math.abs(t),Math.abs(e))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=function(t){return Math.max(0,-Xr(Math.abs(t)))}(a))||(r.precision=i-2*("%"===r.type))}return ei(r)}function oi(t){var e=t.domain;return t.ticks=function(t){var n=e();return function(t,e,n){if(!((n=+n)>0))return[];if((t=+t)==(e=+e))return[t];const r=e<t,[i,a,s]=r?xr(e,t,n):xr(t,e,n);if(!(a>=i))return[];const o=a-i+1,l=new Array(o);if(r)if(s<0)for(let c=0;c<o;++c)l[c]=(a-c)/-s;else for(let c=0;c<o;++c)l[c]=(a-c)*s;else if(s<0)for(let c=0;c<o;++c)l[c]=(i+c)/-s;else for(let c=0;c<o;++c)l[c]=(i+c)*s;return l}(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return si(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var r,i,a=e(),s=0,o=a.length-1,l=a[s],c=a[o],u=10;for(c<l&&(i=l,l=c,c=i,i=s,s=o,o=i);u-- >0;){if((i=vr(l,c,n))===r)return a[s]=l,a[o]=c,e(a);if(i>0)l=Math.floor(l/i)*i,c=Math.ceil(c/i)*i;else{if(!(i<0))break;l=Math.ceil(l*i)/i,c=Math.floor(c*i)/i}r=i}return t},t}function li(){var t=Yr();return t.copy=function(){return Pr(t,li())},Ur.apply(t,arguments),oi(t)}ti=ai({thousands:",",grouping:[3],currency:["$",""]}),ei=ti.format,ni=ti.formatPrefix;class ci extends Map{constructor(t,e=fi){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[n,r]of t)this.set(n,r)}get(t){return super.get(hi(this,t))}has(t){return super.has(hi(this,t))}set(t,e){return super.set(di(this,t),e)}delete(t){return super.delete(pi(this,t))}}class ui extends Set{constructor(t,e=fi){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const n of t)this.add(n)}has(t){return super.has(hi(this,t))}add(t){return super.add(di(this,t))}delete(t){return super.delete(pi(this,t))}}function hi({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function di({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function pi({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function fi(t){return null!==t&&"object"==typeof t?t.valueOf():t}const mi=Symbol("implicit");function gi(){var t=new ci,e=[],n=[],r=mi;function i(i){let a=t.get(i);if(void 0===a){if(r!==mi)return r;t.set(i,a=e.push(i)-1)}return n[a%n.length]}return i.domain=function(n){if(!arguments.length)return e.slice();e=[],t=new ci;for(const r of n)t.has(r)||t.set(r,e.push(r)-1);return i},i.range=function(t){return arguments.length?(n=Array.from(t),i):n.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return gi(e,n).unknown(r)},Ur.apply(i,arguments),i}const yi=1e3,bi=6e4,xi=60*bi,vi=24*xi,_i=7*vi,ki=30*vi,Ti=365*vi,wi=new Date,Si=new Date;function Ei(t,e,n,r){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=e=>(t(e=new Date(+e)),e),i.ceil=n=>(t(n=new Date(n-1)),e(n,1),t(n),n),i.round=t=>{const e=i(t),n=i.ceil(t);return t-e<n-t?e:n},i.offset=(t,n)=>(e(t=new Date(+t),null==n?1:Math.floor(n)),t),i.range=(n,r,a)=>{const s=[];if(n=i.ceil(n),a=null==a?1:Math.floor(a),!(n<r&&a>0))return s;let o;do{s.push(o=new Date(+n)),e(n,a),t(n)}while(o<n&&n<r);return s},i.filter=n=>Ei((e=>{if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)}),((t,r)=>{if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););})),n&&(i.count=(e,r)=>(wi.setTime(+e),Si.setTime(+r),t(wi),t(Si),Math.floor(n(wi,Si))),i.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?e=>r(e)%t==0:e=>i.count(0,e)%t==0):i:null)),i}const Ci=Ei((()=>{}),((t,e)=>{t.setTime(+t+e)}),((t,e)=>e-t));Ci.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?Ei((e=>{e.setTime(Math.floor(e/t)*t)}),((e,n)=>{e.setTime(+e+n*t)}),((e,n)=>(n-e)/t)):Ci:null);Ci.range;const Di=Ei((t=>{t.setTime(t-t.getMilliseconds())}),((t,e)=>{t.setTime(+t+e*yi)}),((t,e)=>(e-t)/yi),(t=>t.getUTCSeconds())),Ai=(Di.range,Ei((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*yi)}),((t,e)=>{t.setTime(+t+e*bi)}),((t,e)=>(e-t)/bi),(t=>t.getMinutes()))),Oi=(Ai.range,Ei((t=>{t.setUTCSeconds(0,0)}),((t,e)=>{t.setTime(+t+e*bi)}),((t,e)=>(e-t)/bi),(t=>t.getUTCMinutes()))),Ii=(Oi.range,Ei((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*yi-t.getMinutes()*bi)}),((t,e)=>{t.setTime(+t+e*xi)}),((t,e)=>(e-t)/xi),(t=>t.getHours()))),Li=(Ii.range,Ei((t=>{t.setUTCMinutes(0,0,0)}),((t,e)=>{t.setTime(+t+e*xi)}),((t,e)=>(e-t)/xi),(t=>t.getUTCHours()))),Ni=(Li.range,Ei((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*bi)/vi),(t=>t.getDate()-1))),Mi=(Ni.range,Ei((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/vi),(t=>t.getUTCDate()-1))),Fi=(Mi.range,Ei((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/vi),(t=>Math.floor(t/vi))));Fi.range;function Bi(t){return Ei((e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),((t,e)=>{t.setDate(t.getDate()+7*e)}),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*bi)/_i))}const Ri=Bi(0),$i=Bi(1),Zi=Bi(2),ji=Bi(3),Pi=Bi(4),zi=Bi(5),Yi=Bi(6);Ri.range,$i.range,Zi.range,ji.range,Pi.range,zi.range,Yi.range;function Ui(t){return Ei((e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)}),((t,e)=>(e-t)/_i))}const Wi=Ui(0),Hi=Ui(1),qi=Ui(2),Vi=Ui(3),Gi=Ui(4),Xi=Ui(5),Ki=Ui(6),Qi=(Wi.range,Hi.range,qi.range,Vi.range,Gi.range,Xi.range,Ki.range,Ei((t=>{t.setDate(1),t.setHours(0,0,0,0)}),((t,e)=>{t.setMonth(t.getMonth()+e)}),((t,e)=>e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())),(t=>t.getMonth()))),Ji=(Qi.range,Ei((t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)}),((t,e)=>e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())),(t=>t.getUTCMonth()))),ta=(Ji.range,Ei((t=>{t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,e)=>{t.setFullYear(t.getFullYear()+e)}),((t,e)=>e.getFullYear()-t.getFullYear()),(t=>t.getFullYear())));ta.every=t=>isFinite(t=Math.floor(t))&&t>0?Ei((e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),((e,n)=>{e.setFullYear(e.getFullYear()+n*t)})):null;ta.range;const ea=Ei((t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)}),((t,e)=>e.getUTCFullYear()-t.getUTCFullYear()),(t=>t.getUTCFullYear()));ea.every=t=>isFinite(t=Math.floor(t))&&t>0?Ei((e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),((e,n)=>{e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null;ea.range;function na(t,e,n,r,i,a){const s=[[Di,1,yi],[Di,5,5e3],[Di,15,15e3],[Di,30,3e4],[a,1,bi],[a,5,5*bi],[a,15,15*bi],[a,30,30*bi],[i,1,xi],[i,3,3*xi],[i,6,6*xi],[i,12,12*xi],[r,1,vi],[r,2,2*vi],[n,1,_i],[e,1,ki],[e,3,3*ki],[t,1,Ti]];function o(e,n,r){const i=Math.abs(n-e)/r,a=wr((([,,t])=>t)).right(s,i);if(a===s.length)return t.every(_r(e/Ti,n/Ti,r));if(0===a)return Ci.every(Math.max(_r(e,n,r),1));const[o,l]=s[i/s[a-1][2]<s[a][2]/i?a-1:a];return o.every(l)}return[function(t,e,n){const r=e<t;r&&([t,e]=[e,t]);const i=n&&"function"==typeof n.range?n:o(t,e,n),a=i?i.range(t,+e+1):[];return r?a.reverse():a},o]}const[ra,ia]=na(ea,Ji,Wi,Fi,Li,Oi),[aa,sa]=na(ta,Qi,Ri,Ni,Ii,Ai);function oa(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function la(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function ca(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}var ua,ha,da={"-":"",_:" ",0:"0"},pa=/^\s*\d+/,fa=/^%/,ma=/[\\^$*+?|[\]().{}]/g;function ga(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",a=i.length;return r+(a<n?new Array(n-a+1).join(e)+i:i)}function ya(t){return t.replace(ma,"\\$&")}function ba(t){return new RegExp("^(?:"+t.map(ya).join("|")+")","i")}function xa(t){return new Map(t.map(((t,e)=>[t.toLowerCase(),e])))}function va(t,e,n){var r=pa.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function _a(t,e,n){var r=pa.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function ka(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Ta(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function wa(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Sa(t,e,n){var r=pa.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Ea(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Ca(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Da(t,e,n){var r=pa.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,n+r[0].length):-1}function Aa(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Oa(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Ia(t,e,n){var r=pa.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function La(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Na(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Ma(t,e,n){var r=pa.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Fa(t,e,n){var r=pa.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Ba(t,e,n){var r=pa.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Ra(t,e,n){var r=fa.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function $a(t,e,n){var r=pa.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Za(t,e,n){var r=pa.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function ja(t,e){return ga(t.getDate(),e,2)}function Pa(t,e){return ga(t.getHours(),e,2)}function za(t,e){return ga(t.getHours()%12||12,e,2)}function Ya(t,e){return ga(1+Ni.count(ta(t),t),e,3)}function Ua(t,e){return ga(t.getMilliseconds(),e,3)}function Wa(t,e){return Ua(t,e)+"000"}function Ha(t,e){return ga(t.getMonth()+1,e,2)}function qa(t,e){return ga(t.getMinutes(),e,2)}function Va(t,e){return ga(t.getSeconds(),e,2)}function Ga(t){var e=t.getDay();return 0===e?7:e}function Xa(t,e){return ga(Ri.count(ta(t)-1,t),e,2)}function Ka(t){var e=t.getDay();return e>=4||0===e?Pi(t):Pi.ceil(t)}function Qa(t,e){return t=Ka(t),ga(Pi.count(ta(t),t)+(4===ta(t).getDay()),e,2)}function Ja(t){return t.getDay()}function ts(t,e){return ga($i.count(ta(t)-1,t),e,2)}function es(t,e){return ga(t.getFullYear()%100,e,2)}function ns(t,e){return ga((t=Ka(t)).getFullYear()%100,e,2)}function rs(t,e){return ga(t.getFullYear()%1e4,e,4)}function is(t,e){var n=t.getDay();return ga((t=n>=4||0===n?Pi(t):Pi.ceil(t)).getFullYear()%1e4,e,4)}function as(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+ga(e/60|0,"0",2)+ga(e%60,"0",2)}function ss(t,e){return ga(t.getUTCDate(),e,2)}function os(t,e){return ga(t.getUTCHours(),e,2)}function ls(t,e){return ga(t.getUTCHours()%12||12,e,2)}function cs(t,e){return ga(1+Mi.count(ea(t),t),e,3)}function us(t,e){return ga(t.getUTCMilliseconds(),e,3)}function hs(t,e){return us(t,e)+"000"}function ds(t,e){return ga(t.getUTCMonth()+1,e,2)}function ps(t,e){return ga(t.getUTCMinutes(),e,2)}function fs(t,e){return ga(t.getUTCSeconds(),e,2)}function ms(t){var e=t.getUTCDay();return 0===e?7:e}function gs(t,e){return ga(Wi.count(ea(t)-1,t),e,2)}function ys(t){var e=t.getUTCDay();return e>=4||0===e?Gi(t):Gi.ceil(t)}function bs(t,e){return t=ys(t),ga(Gi.count(ea(t),t)+(4===ea(t).getUTCDay()),e,2)}function xs(t){return t.getUTCDay()}function vs(t,e){return ga(Hi.count(ea(t)-1,t),e,2)}function _s(t,e){return ga(t.getUTCFullYear()%100,e,2)}function ks(t,e){return ga((t=ys(t)).getUTCFullYear()%100,e,2)}function Ts(t,e){return ga(t.getUTCFullYear()%1e4,e,4)}function ws(t,e){var n=t.getUTCDay();return ga((t=n>=4||0===n?Gi(t):Gi.ceil(t)).getUTCFullYear()%1e4,e,4)}function Ss(){return"+0000"}function Es(){return"%"}function Cs(t){return+t}function Ds(t){return Math.floor(+t/1e3)}function As(t){return new Date(t)}function Os(t){return t instanceof Date?+t:+new Date(+t)}function Is(t,e,n,r,i,a,s,o,l,c){var u=Yr(),h=u.invert,d=u.domain,p=c(".%L"),f=c(":%S"),m=c("%I:%M"),g=c("%I %p"),y=c("%a %d"),b=c("%b %d"),x=c("%B"),v=c("%Y");function _(t){return(l(t)<t?p:o(t)<t?f:s(t)<t?m:a(t)<t?g:r(t)<t?i(t)<t?y:b:n(t)<t?x:v)(t)}return u.invert=function(t){return new Date(h(t))},u.domain=function(t){return arguments.length?d(Array.from(t,Os)):d().map(As)},u.ticks=function(e){var n=d();return t(n[0],n[n.length-1],null==e?10:e)},u.tickFormat=function(t,e){return null==e?_:c(e)},u.nice=function(t){var n=d();return t&&"function"==typeof t.range||(t=e(n[0],n[n.length-1],null==t?10:t)),t?d(function(t,e){var n,r=0,i=(t=t.slice()).length-1,a=t[r],s=t[i];return s<a&&(n=r,r=i,i=n,n=a,a=s,s=n),t[r]=e.floor(a),t[i]=e.ceil(s),t}(n,t)):u},u.copy=function(){return Pr(u,Is(t,e,n,r,i,a,s,o,l,c))},u}function Ls(){return Ur.apply(Is(aa,sa,ta,Qi,Ri,Ni,Ii,Ai,Di,ha).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Ns(t){return"string"==typeof t?new At([[document.querySelector(t)]],[document.documentElement]):new At([[t]],Dt)}function Ms(t){return"string"==typeof t?new At([document.querySelectorAll(t)],[document.documentElement]):new At([_(t)],Dt)}function Fs(t){return function(){return t}}!function(t){ua=function(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,a=t.days,s=t.shortDays,o=t.months,l=t.shortMonths,c=ba(i),u=xa(i),h=ba(a),d=xa(a),p=ba(s),f=xa(s),m=ba(o),g=xa(o),y=ba(l),b=xa(l),x={a:function(t){return s[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return l[t.getMonth()]},B:function(t){return o[t.getMonth()]},c:null,d:ja,e:ja,f:Wa,g:ns,G:is,H:Pa,I:za,j:Ya,L:Ua,m:Ha,M:qa,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Cs,s:Ds,S:Va,u:Ga,U:Xa,V:Qa,w:Ja,W:ts,x:null,X:null,y:es,Y:rs,Z:as,"%":Es},v={a:function(t){return s[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return o[t.getUTCMonth()]},c:null,d:ss,e:ss,f:hs,g:ks,G:ws,H:os,I:ls,j:cs,L:us,m:ds,M:ps,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Cs,s:Ds,S:fs,u:ms,U:gs,V:bs,w:xs,W:vs,x:null,X:null,y:_s,Y:Ts,Z:Ss,"%":Es},_={a:function(t,e,n){var r=p.exec(e.slice(n));return r?(t.w=f.get(r[0].toLowerCase()),n+r[0].length):-1},A:function(t,e,n){var r=h.exec(e.slice(n));return r?(t.w=d.get(r[0].toLowerCase()),n+r[0].length):-1},b:function(t,e,n){var r=y.exec(e.slice(n));return r?(t.m=b.get(r[0].toLowerCase()),n+r[0].length):-1},B:function(t,e,n){var r=m.exec(e.slice(n));return r?(t.m=g.get(r[0].toLowerCase()),n+r[0].length):-1},c:function(t,n,r){return w(t,e,n,r)},d:Oa,e:Oa,f:Ba,g:Ea,G:Sa,H:La,I:La,j:Ia,L:Fa,m:Aa,M:Na,p:function(t,e,n){var r=c.exec(e.slice(n));return r?(t.p=u.get(r[0].toLowerCase()),n+r[0].length):-1},q:Da,Q:$a,s:Za,S:Ma,u:_a,U:ka,V:Ta,w:va,W:wa,x:function(t,e,r){return w(t,n,e,r)},X:function(t,e,n){return w(t,r,e,n)},y:Ea,Y:Sa,Z:Ca,"%":Ra};function k(t,e){return function(n){var r,i,a,s=[],o=-1,l=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++o<c;)37===t.charCodeAt(o)&&(s.push(t.slice(l,o)),null!=(i=da[r=t.charAt(++o)])?r=t.charAt(++o):i="e"===r?" ":"0",(a=e[r])&&(r=a(n,i)),s.push(r),l=o+1);return s.push(t.slice(l,o)),s.join("")}}function T(t,e){return function(n){var r,i,a=ca(1900,void 0,1);if(w(a,t,n+="",0)!=n.length)return null;if("Q"in a)return new Date(a.Q);if("s"in a)return new Date(1e3*a.s+("L"in a?a.L:0));if(e&&!("Z"in a)&&(a.Z=0),"p"in a&&(a.H=a.H%12+12*a.p),void 0===a.m&&(a.m="q"in a?a.q:0),"V"in a){if(a.V<1||a.V>53)return null;"w"in a||(a.w=1),"Z"in a?(i=(r=la(ca(a.y,0,1))).getUTCDay(),r=i>4||0===i?Hi.ceil(r):Hi(r),r=Mi.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(i=(r=oa(ca(a.y,0,1))).getDay(),r=i>4||0===i?$i.ceil(r):$i(r),r=Ni.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?la(ca(a.y,0,1)).getUTCDay():oa(ca(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,la(a)):oa(a)}}function w(t,e,n,r){for(var i,a,s=0,o=e.length,l=n.length;s<o;){if(r>=l)return-1;if(37===(i=e.charCodeAt(s++))){if(i=e.charAt(s++),!(a=_[i in da?e.charAt(s++):i])||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return x.x=k(n,x),x.X=k(r,x),x.c=k(e,x),v.x=k(n,v),v.X=k(r,v),v.c=k(e,v),{format:function(t){var e=k(t+="",x);return e.toString=function(){return t},e},parse:function(t){var e=T(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=k(t+="",v);return e.toString=function(){return t},e},utcParse:function(t){var e=T(t+="",!0);return e.toString=function(){return t},e}}}(t),ha=ua.format,ua.parse,ua.utcFormat,ua.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});const Bs=Math.abs,Rs=Math.atan2,$s=Math.cos,Zs=Math.max,js=Math.min,Ps=Math.sin,zs=Math.sqrt,Ys=1e-12,Us=Math.PI,Ws=Us/2,Hs=2*Us;function qs(t){return t>=1?Ws:t<=-1?-Ws:Math.asin(t)}const Vs=Math.PI,Gs=2*Vs,Xs=1e-6,Ks=Gs-Xs;function Qs(t){this._+=t[0];for(let e=1,n=t.length;e<n;++e)this._+=arguments[e]+t[e]}class Js{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=null==t?Qs:function(t){let e=Math.floor(t);if(!(e>=0))throw new Error(`invalid digits: ${t}`);if(e>15)return Qs;const n=10**e;return function(t){this._+=t[0];for(let e=1,r=t.length;e<r;++e)this._+=Math.round(arguments[e]*n)/n+t[e]}}(t)}moveTo(t,e){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,e){this._append`L${this._x1=+t},${this._y1=+e}`}quadraticCurveTo(t,e,n,r){this._append`Q${+t},${+e},${this._x1=+n},${this._y1=+r}`}bezierCurveTo(t,e,n,r,i,a){this._append`C${+t},${+e},${+n},${+r},${this._x1=+i},${this._y1=+a}`}arcTo(t,e,n,r,i){if(t=+t,e=+e,n=+n,r=+r,(i=+i)<0)throw new Error(`negative radius: ${i}`);let a=this._x1,s=this._y1,o=n-t,l=r-e,c=a-t,u=s-e,h=c*c+u*u;if(null===this._x1)this._append`M${this._x1=t},${this._y1=e}`;else if(h>Xs)if(Math.abs(u*o-l*c)>Xs&&i){let d=n-a,p=r-s,f=o*o+l*l,m=d*d+p*p,g=Math.sqrt(f),y=Math.sqrt(h),b=i*Math.tan((Vs-Math.acos((f+h-m)/(2*g*y)))/2),x=b/y,v=b/g;Math.abs(x-1)>Xs&&this._append`L${t+x*c},${e+x*u}`,this._append`A${i},${i},0,0,${+(u*d>c*p)},${this._x1=t+v*o},${this._y1=e+v*l}`}else this._append`L${this._x1=t},${this._y1=e}`;else;}arc(t,e,n,r,i,a){if(t=+t,e=+e,a=!!a,(n=+n)<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(r),o=n*Math.sin(r),l=t+s,c=e+o,u=1^a,h=a?r-i:i-r;null===this._x1?this._append`M${l},${c}`:(Math.abs(this._x1-l)>Xs||Math.abs(this._y1-c)>Xs)&&this._append`L${l},${c}`,n&&(h<0&&(h=h%Gs+Gs),h>Ks?this._append`A${n},${n},0,1,${u},${t-s},${e-o}A${n},${n},0,1,${u},${this._x1=l},${this._y1=c}`:h>Xs&&this._append`A${n},${n},0,${+(h>=Vs)},${u},${this._x1=t+n*Math.cos(i)},${this._y1=e+n*Math.sin(i)}`)}rect(t,e,n,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${n=+n}v${+r}h${-n}Z`}toString(){return this._}}function to(t){let e=3;return t.digits=function(n){if(!arguments.length)return e;if(null==n)e=null;else{const t=Math.floor(n);if(!(t>=0))throw new RangeError(`invalid digits: ${n}`);e=t}return t},()=>new Js(e)}function eo(t){return t.innerRadius}function no(t){return t.outerRadius}function ro(t){return t.startAngle}function io(t){return t.endAngle}function ao(t){return t&&t.padAngle}function so(t,e,n,r,i,a,s){var o=t-n,l=e-r,c=(s?a:-a)/zs(o*o+l*l),u=c*l,h=-c*o,d=t+u,p=e+h,f=n+u,m=r+h,g=(d+f)/2,y=(p+m)/2,b=f-d,x=m-p,v=b*b+x*x,_=i-a,k=d*m-f*p,T=(x<0?-1:1)*zs(Zs(0,_*_*v-k*k)),w=(k*x-b*T)/v,S=(-k*b-x*T)/v,E=(k*x+b*T)/v,C=(-k*b+x*T)/v,D=w-g,A=S-y,O=E-g,I=C-y;return D*D+A*A>O*O+I*I&&(w=E,S=C),{cx:w,cy:S,x01:-u,y01:-h,x11:w*(i/_-1),y11:S*(i/_-1)}}function oo(){var t=eo,e=no,n=Fs(0),r=null,i=ro,a=io,s=ao,o=null,l=to(c);function c(){var c,u,h,d=+t.apply(this,arguments),p=+e.apply(this,arguments),f=i.apply(this,arguments)-Ws,m=a.apply(this,arguments)-Ws,g=Bs(m-f),y=m>f;if(o||(o=c=l()),p<d&&(u=p,p=d,d=u),p>Ys)if(g>Hs-Ys)o.moveTo(p*$s(f),p*Ps(f)),o.arc(0,0,p,f,m,!y),d>Ys&&(o.moveTo(d*$s(m),d*Ps(m)),o.arc(0,0,d,m,f,y));else{var b,x,v=f,_=m,k=f,T=m,w=g,S=g,E=s.apply(this,arguments)/2,C=E>Ys&&(r?+r.apply(this,arguments):zs(d*d+p*p)),D=js(Bs(p-d)/2,+n.apply(this,arguments)),A=D,O=D;if(C>Ys){var I=qs(C/d*Ps(E)),L=qs(C/p*Ps(E));(w-=2*I)>Ys?(k+=I*=y?1:-1,T-=I):(w=0,k=T=(f+m)/2),(S-=2*L)>Ys?(v+=L*=y?1:-1,_-=L):(S=0,v=_=(f+m)/2)}var N=p*$s(v),M=p*Ps(v),F=d*$s(T),B=d*Ps(T);if(D>Ys){var R,$=p*$s(_),Z=p*Ps(_),j=d*$s(k),P=d*Ps(k);if(g<Us)if(R=function(t,e,n,r,i,a,s,o){var l=n-t,c=r-e,u=s-i,h=o-a,d=h*l-u*c;if(!(d*d<Ys))return[t+(d=(u*(e-a)-h*(t-i))/d)*l,e+d*c]}(N,M,j,P,$,Z,F,B)){var z=N-R[0],Y=M-R[1],U=$-R[0],W=Z-R[1],H=1/Ps(((h=(z*U+Y*W)/(zs(z*z+Y*Y)*zs(U*U+W*W)))>1?0:h<-1?Us:Math.acos(h))/2),q=zs(R[0]*R[0]+R[1]*R[1]);A=js(D,(d-q)/(H-1)),O=js(D,(p-q)/(H+1))}else A=O=0}S>Ys?O>Ys?(b=so(j,P,N,M,p,O,y),x=so($,Z,F,B,p,O,y),o.moveTo(b.cx+b.x01,b.cy+b.y01),O<D?o.arc(b.cx,b.cy,O,Rs(b.y01,b.x01),Rs(x.y01,x.x01),!y):(o.arc(b.cx,b.cy,O,Rs(b.y01,b.x01),Rs(b.y11,b.x11),!y),o.arc(0,0,p,Rs(b.cy+b.y11,b.cx+b.x11),Rs(x.cy+x.y11,x.cx+x.x11),!y),o.arc(x.cx,x.cy,O,Rs(x.y11,x.x11),Rs(x.y01,x.x01),!y))):(o.moveTo(N,M),o.arc(0,0,p,v,_,!y)):o.moveTo(N,M),d>Ys&&w>Ys?A>Ys?(b=so(F,B,$,Z,d,-A,y),x=so(N,M,j,P,d,-A,y),o.lineTo(b.cx+b.x01,b.cy+b.y01),A<D?o.arc(b.cx,b.cy,A,Rs(b.y01,b.x01),Rs(x.y01,x.x01),!y):(o.arc(b.cx,b.cy,A,Rs(b.y01,b.x01),Rs(b.y11,b.x11),!y),o.arc(0,0,d,Rs(b.cy+b.y11,b.cx+b.x11),Rs(x.cy+x.y11,x.cx+x.x11),y),o.arc(x.cx,x.cy,A,Rs(x.y11,x.x11),Rs(x.y01,x.x01),!y))):o.arc(0,0,d,T,k,y):o.lineTo(F,B)}else o.moveTo(0,0);if(o.closePath(),c)return o=null,c+""||null}return c.centroid=function(){var n=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +a.apply(this,arguments))/2-Us/2;return[$s(r)*n,Ps(r)*n]},c.innerRadius=function(e){return arguments.length?(t="function"==typeof e?e:Fs(+e),c):t},c.outerRadius=function(t){return arguments.length?(e="function"==typeof t?t:Fs(+t),c):e},c.cornerRadius=function(t){return arguments.length?(n="function"==typeof t?t:Fs(+t),c):n},c.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:Fs(+t),c):r},c.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:Fs(+t),c):i},c.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:Fs(+t),c):a},c.padAngle=function(t){return arguments.length?(s="function"==typeof t?t:Fs(+t),c):s},c.context=function(t){return arguments.length?(o=null==t?null:t,c):o},c}Js.prototype;Array.prototype.slice;function lo(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function co(t){this._context=t}function uo(t){return new co(t)}function ho(t){return t[0]}function po(t){return t[1]}function fo(t,e){var n=Fs(!0),r=null,i=uo,a=null,s=to(o);function o(o){var l,c,u,h=(o=lo(o)).length,d=!1;for(null==r&&(a=i(u=s())),l=0;l<=h;++l)!(l<h&&n(c=o[l],l,o))===d&&((d=!d)?a.lineStart():a.lineEnd()),d&&a.point(+t(c,l,o),+e(c,l,o));if(u)return a=null,u+""||null}return t="function"==typeof t?t:void 0===t?ho:Fs(t),e="function"==typeof e?e:void 0===e?po:Fs(e),o.x=function(e){return arguments.length?(t="function"==typeof e?e:Fs(+e),o):t},o.y=function(t){return arguments.length?(e="function"==typeof t?t:Fs(+t),o):e},o.defined=function(t){return arguments.length?(n="function"==typeof t?t:Fs(!!t),o):n},o.curve=function(t){return arguments.length?(i=t,null!=r&&(a=i(r)),o):i},o.context=function(t){return arguments.length?(null==t?r=a=null:a=i(r=t),o):r},o}function mo(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}function go(t){return t}function yo(){var t=go,e=mo,n=null,r=Fs(0),i=Fs(Hs),a=Fs(0);function s(s){var o,l,c,u,h,d=(s=lo(s)).length,p=0,f=new Array(d),m=new Array(d),g=+r.apply(this,arguments),y=Math.min(Hs,Math.max(-Hs,i.apply(this,arguments)-g)),b=Math.min(Math.abs(y)/d,a.apply(this,arguments)),x=b*(y<0?-1:1);for(o=0;o<d;++o)(h=m[f[o]=o]=+t(s[o],o,s))>0&&(p+=h);for(null!=e?f.sort((function(t,n){return e(m[t],m[n])})):null!=n&&f.sort((function(t,e){return n(s[t],s[e])})),o=0,c=p?(y-d*x)/p:0;o<d;++o,g=u)l=f[o],u=g+((h=m[l])>0?h*c:0)+x,m[l]={data:s[l],index:o,value:h,startAngle:g,endAngle:u,padAngle:b};return m}return s.value=function(e){return arguments.length?(t="function"==typeof e?e:Fs(+e),s):t},s.sortValues=function(t){return arguments.length?(e=t,n=null,s):e},s.sort=function(t){return arguments.length?(n=t,e=null,s):n},s.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:Fs(+t),s):r},s.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:Fs(+t),s):i},s.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:Fs(+t),s):a},s}function bo(){}function xo(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function vo(t){this._context=t}function _o(t){return new vo(t)}function ko(t){this._context=t}function To(t){return new ko(t)}function wo(t){this._context=t}function So(t){return new wo(t)}co.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}},vo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:xo(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:xo(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ko.prototype={areaStart:bo,areaEnd:bo,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:xo(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},wo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:xo(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};class Eo{constructor(t,e){this._context=t,this._x=e}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,e,t,e):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+e)/2,t,this._y0,t,e)}this._x0=t,this._y0=e}}function Co(t){return new Eo(t,!0)}function Do(t){return new Eo(t,!1)}function Ao(t,e){this._basis=new vo(t),this._beta=e}Ao.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var r,i=t[0],a=e[0],s=t[n]-i,o=e[n]-a,l=-1;++l<=n;)r=l/n,this._basis.point(this._beta*t[l]+(1-this._beta)*(i+r*s),this._beta*e[l]+(1-this._beta)*(a+r*o));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};const Oo=function t(e){function n(t){return 1===e?new vo(t):new Ao(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function Io(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function Lo(t,e){this._context=t,this._k=(1-e)/6}Lo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Io(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Io(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const No=function t(e){function n(t){return new Lo(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Mo(t,e){this._context=t,this._k=(1-e)/6}Mo.prototype={areaStart:bo,areaEnd:bo,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Io(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Fo=function t(e){function n(t){return new Mo(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Bo(t,e){this._context=t,this._k=(1-e)/6}Bo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Io(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Ro=function t(e){function n(t){return new Bo(t,e)}return n.tension=function(e){return t(+e)},n}(0);function $o(t,e,n){var r=t._x1,i=t._y1,a=t._x2,s=t._y2;if(t._l01_a>Ys){var o=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*o-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,i=(i*o-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>Ys){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,u=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/u,s=(s*c+t._y1*t._l23_2a-n*t._l12_2a)/u}t._context.bezierCurveTo(r,i,a,s,t._x2,t._y2)}function Zo(t,e){this._context=t,this._alpha=e}Zo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:$o(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const jo=function t(e){function n(t){return e?new Zo(t,e):new Lo(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Po(t,e){this._context=t,this._alpha=e}Po.prototype={areaStart:bo,areaEnd:bo,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:$o(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const zo=function t(e){function n(t){return e?new Po(t,e):new Mo(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Yo(t,e){this._context=t,this._alpha=e}Yo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:$o(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Uo=function t(e){function n(t){return e?new Yo(t,e):new Bo(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Wo(t){this._context=t}function Ho(t){return new Wo(t)}function qo(t){return t<0?-1:1}function Vo(t,e,n){var r=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(r||i<0&&-0),s=(n-t._y1)/(i||r<0&&-0),o=(a*i+s*r)/(r+i);return(qo(a)+qo(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(o))||0}function Go(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function Xo(t,e,n){var r=t._x0,i=t._y0,a=t._x1,s=t._y1,o=(a-r)/3;t._context.bezierCurveTo(r+o,i+o*e,a-o,s-o*n,a,s)}function Ko(t){this._context=t}function Qo(t){this._context=new Jo(t)}function Jo(t){this._context=t}function tl(t){return new Ko(t)}function el(t){return new Qo(t)}function nl(t){this._context=t}function rl(t){var e,n,r=t.length-1,i=new Array(r),a=new Array(r),s=new Array(r);for(i[0]=0,a[0]=2,s[0]=t[0]+2*t[1],e=1;e<r-1;++e)i[e]=1,a[e]=4,s[e]=4*t[e]+2*t[e+1];for(i[r-1]=2,a[r-1]=7,s[r-1]=8*t[r-1]+t[r],e=1;e<r;++e)n=i[e]/a[e-1],a[e]-=n,s[e]-=n*s[e-1];for(i[r-1]=s[r-1]/a[r-1],e=r-2;e>=0;--e)i[e]=(s[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e<r-1;++e)a[e]=2*t[e+1]-i[e+1];return[i,a]}function il(t){return new nl(t)}function al(t,e){this._context=t,this._t=e}function sl(t){return new al(t,.5)}function ol(t){return new al(t,0)}function ll(t){return new al(t,1)}function cl(t,e,n){this.k=t,this.x=e,this.y=n}Wo.prototype={areaStart:bo,areaEnd:bo,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}},Ko.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Xo(this,this._t0,Go(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(e=+e,(t=+t)!==this._x1||e!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,Xo(this,Go(this,n=Vo(this,t,e)),n);break;default:Xo(this,this._t0,n=Vo(this,t,e))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}},(Qo.prototype=Object.create(Ko.prototype)).point=function(t,e){Ko.prototype.point.call(this,e,t)},Jo.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,r,i,a){this._context.bezierCurveTo(e,t,r,n,a,i)}},nl.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,n=t.length;if(n)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),2===n)this._context.lineTo(t[1],e[1]);else for(var r=rl(t),i=rl(e),a=0,s=1;s<n;++a,++s)this._context.bezierCurveTo(r[0][a],i[0][a],r[1][a],i[1][a],t[s],e[s]);(this._line||0!==this._line&&1===n)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,e){this._x.push(+t),this._y.push(+e)}},al.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}},cl.prototype={constructor:cl,scale:function(t){return 1===t?this:new cl(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new cl(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};new cl(1,0,0);cl.prototype},3352:(t,e,n)=>{"use strict";function r(t,e,n,r){var a,s,o,l,c,u,h,d,p,f,m,g,y;if(a=e.y-t.y,o=t.x-e.x,c=e.x*t.y-t.x*e.y,p=a*n.x+o*n.y+c,f=a*r.x+o*r.y+c,!(0!==p&&0!==f&&i(p,f)||(s=r.y-n.y,l=n.x-r.x,u=r.x*n.y-n.x*r.y,h=s*t.x+l*t.y+u,d=s*e.x+l*e.y+u,0!==h&&0!==d&&i(h,d)||0==(m=a*l-s*o))))return g=Math.abs(m/2),{x:(y=o*u-l*c)<0?(y-g)/m:(y+g)/m,y:(y=s*c-a*u)<0?(y-g)/m:(y+g)/m}}function i(t,e){return t*e>0}function a(t,e,n){var i=t.x,a=t.y,s=[],o=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;e.forEach((function(t){o=Math.min(o,t.x),l=Math.min(l,t.y)}));for(var c=i-t.width/2-o,u=a-t.height/2-l,h=0;h<e.length;h++){var d=e[h],p=e[h<e.length-1?h+1:0],f=r(t,n,{x:c+d.x,y:u+d.y},{x:c+p.x,y:u+p.y});f&&s.push(f)}return s.length?(s.length>1&&s.sort((function(t,e){var r=t.x-n.x,i=t.y-n.y,a=Math.sqrt(r*r+i*i),s=e.x-n.x,o=e.y-n.y,l=Math.sqrt(s*s+o*o);return a<l?-1:a===l?0:1})),s[0]):(console.log("NO INTERSECTION FOUND, RETURN NODE CENTER",t),t)}n.d(e,{A:()=>a})},2930:(t,e,n)=>{"use strict";function r(t,e){var n,r,i=t.x,a=t.y,s=e.x-i,o=e.y-a,l=t.width/2,c=t.height/2;return Math.abs(o)*l>Math.abs(s)*c?(o<0&&(c=-c),n=0===o?0:c*s/o,r=c):(s<0&&(l=-l),n=l,r=0===s?0:l*o/s),{x:i+n,y:a+r}}n.d(e,{q:()=>r})},3349:(t,e,n)=>{"use strict";n.d(e,{a:()=>i});var r=n(6225);function i(t,e){var n=t.append("foreignObject").attr("width","100000"),i=n.append("xhtml:div");i.attr("xmlns","http://www.w3.org/1999/xhtml");var a=e.label;switch(typeof a){case"function":i.insert(a);break;case"object":i.insert((function(){return a}));break;default:i.html(a)}r.bg(i,e.labelStyle),i.style("display","inline-block"),i.style("white-space","nowrap");var s=i.node().getBoundingClientRect();return n.attr("width",s.width).attr("height",s.height),n}},6225:(t,e,n)=>{"use strict";n.d(e,{$p:()=>u,O1:()=>s,WR:()=>h,bF:()=>a,bg:()=>c});var r=n(7514),i=n(3234);function a(t,e){return!!t.children(e).length}function s(t){return l(t.v)+":"+l(t.w)+":"+l(t.name)}var o=/:/g;function l(t){return t?String(t).replace(o,"\\:"):""}function c(t,e){e&&t.attr("style",e)}function u(t,e,n){e&&t.attr("class",e).attr("class",n+" "+t.attr("class"))}function h(t,e){var n=e.graph();if(r.Z(n)){var a=n.transition;if(i.Z(a))return a(t)}return t}},277:(t,e,n)=>{"use strict";n.d(e,{bK:()=>Ge});var r=n(870),i=n(6749),a=n(7452),s=n(2002),o=n(7961),l=n(3836),c=n(4379),u=n(5625);class h{constructor(){var t={};t._next=t._prev=t,this._sentinel=t}dequeue(){var t=this._sentinel,e=t._prev;if(e!==t)return d(e),e}enqueue(t){var e=this._sentinel;t._prev&&t._next&&d(t),t._next=e._next,e._next._prev=t,e._next=t,t._prev=e}toString(){for(var t=[],e=this._sentinel,n=e._prev;n!==e;)t.push(JSON.stringify(n,p)),n=n._prev;return"["+t.join(", ")+"]"}}function d(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function p(t,e){if("_next"!==t&&"_prev"!==t)return e}var f=s.Z(1);function m(t,e){if(t.nodeCount()<=1)return[];var n=function(t,e){var n=new u.k,i=0,a=0;r.Z(t.nodes(),(function(t){n.setNode(t,{v:t,in:0,out:0})})),r.Z(t.edges(),(function(t){var r=n.edge(t.v,t.w)||0,s=e(t),o=r+s;n.setEdge(t.v,t.w,o),a=Math.max(a,n.node(t.v).out+=s),i=Math.max(i,n.node(t.w).in+=s)}));var s=c.Z(a+i+3).map((function(){return new h})),o=i+1;return r.Z(n.nodes(),(function(t){y(s,o,n.node(t))})),{graph:n,buckets:s,zeroIdx:o}}(t,e||f),i=function(t,e,n){var r,i=[],a=e[e.length-1],s=e[0];for(;t.nodeCount();){for(;r=s.dequeue();)g(t,e,n,r);for(;r=a.dequeue();)g(t,e,n,r);if(t.nodeCount())for(var o=e.length-2;o>0;--o)if(r=e[o].dequeue()){i=i.concat(g(t,e,n,r,!0));break}}return i}(n.graph,n.buckets,n.zeroIdx);return o.Z(l.Z(i,(function(e){return t.outEdges(e.v,e.w)})))}function g(t,e,n,i,a){var s=a?[]:void 0;return r.Z(t.inEdges(i.v),(function(r){var i=t.edge(r),o=t.node(r.v);a&&s.push({v:r.v,w:r.w}),o.out-=i,y(e,n,o)})),r.Z(t.outEdges(i.v),(function(r){var i=t.edge(r),a=r.w,s=t.node(a);s.in-=i,y(e,n,s)})),t.removeNode(i.v),s}function y(t,e,n){n.out?n.in?t[n.out-n.in+e].enqueue(n):t[t.length-1].enqueue(n):t[0].enqueue(n)}function b(t){var e="greedy"===t.graph().acyclicer?m(t,function(t){return function(e){return t.edge(e).weight}}(t)):function(t){var e=[],n={},i={};function s(o){a.Z(i,o)||(i[o]=!0,n[o]=!0,r.Z(t.outEdges(o),(function(t){a.Z(n,t.w)?e.push(t):s(t.w)})),delete n[o])}return r.Z(t.nodes(),s),e}(t);r.Z(e,(function(e){var n=t.edge(e);t.removeEdge(e),n.forwardName=e.name,n.reversed=!0,t.setEdge(e.w,e.v,n,i.Z("rev"))}))}var x=n(1667),v=n(4752),_=n(9651);const k=function(t,e,n){(void 0!==n&&!(0,_.Z)(t[e],n)||void 0===n&&!(e in t))&&(0,v.Z)(t,e,n)};var T=n(1395),w=n(1050),S=n(2701),E=n(7215),C=n(3658),D=n(9169),A=n(7771),O=n(836),I=n(7008),L=n(3234),N=n(7226),M=n(7514),F=n(8843);const B=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]};var R=n(1899),$=n(2957);const Z=function(t){return(0,R.Z)(t,(0,$.Z)(t))};const j=function(t,e,n,r,i,a,s){var o=B(t,n),l=B(e,n),c=s.get(l);if(c)k(t,n,c);else{var u=a?a(o,l,n+"",t,e,s):void 0,h=void 0===u;if(h){var d=(0,A.Z)(l),p=!d&&(0,I.Z)(l),f=!d&&!p&&(0,F.Z)(l);u=l,d||p||f?(0,A.Z)(o)?u=o:(0,O.Z)(o)?u=(0,E.Z)(o):p?(h=!1,u=(0,w.Z)(l,!0)):f?(h=!1,u=(0,S.Z)(l,!0)):u=[]:(0,M.Z)(l)||(0,D.Z)(l)?(u=o,(0,D.Z)(o)?u=Z(o):(0,N.Z)(o)&&!(0,L.Z)(o)||(u=(0,C.Z)(l))):h=!1}h&&(s.set(l,u),i(u,l,r,a,s),s.delete(l)),k(t,n,u)}};const P=function t(e,n,r,i,a){e!==n&&(0,T.Z)(n,(function(s,o){if(a||(a=new x.Z),(0,N.Z)(s))j(e,n,o,r,t,i,a);else{var l=i?i(B(e,o),s,o+"",e,n,a):void 0;void 0===l&&(l=s),k(e,o,l)}}),$.Z)};var z=n(9581),Y=n(439);const U=function(t){return(0,z.Z)((function(e,n){var r=-1,i=n.length,a=i>1?n[i-1]:void 0,s=i>2?n[2]:void 0;for(a=t.length>3&&"function"==typeof a?(i--,a):void 0,s&&(0,Y.Z)(n[0],n[1],s)&&(a=i<3?void 0:a,i=1),e=Object(e);++r<i;){var o=n[r];o&&t(e,o,r,a)}return e}))}((function(t,e,n){P(t,e,n)}));var W=n(1666),H=n(3688),q=n(2714);const V=function(t,e,n){for(var r=-1,i=t.length;++r<i;){var a=t[r],s=e(a);if(null!=s&&(void 0===o?s==s&&!(0,q.Z)(s):n(s,o)))var o=s,l=a}return l};const G=function(t,e){return t>e};var X=n(9203);const K=function(t){return t&&t.length?V(t,X.Z,G):void 0};const Q=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0};var J=n(2693),tt=n(4765);const et=function(t,e){var n={};return e=(0,tt.Z)(e,3),(0,J.Z)(t,(function(t,r,i){(0,v.Z)(n,r,e(t,r,i))})),n};var nt=n(9360);const rt=function(t,e){return t<e};const it=function(t){return t&&t.length?V(t,X.Z,rt):void 0};var at=n(6092);const st=function(){return at.Z.Date.now()};function ot(t,e,n,r){var a;do{a=i.Z(r)}while(t.hasNode(a));return n.dummy=e,t.setNode(a,n),a}function lt(t){var e=new u.k({multigraph:t.isMultigraph()}).setGraph(t.graph());return r.Z(t.nodes(),(function(n){t.children(n).length||e.setNode(n,t.node(n))})),r.Z(t.edges(),(function(n){e.setEdge(n,t.edge(n))})),e}function ct(t,e){var n,r,i=t.x,a=t.y,s=e.x-i,o=e.y-a,l=t.width/2,c=t.height/2;if(!s&&!o)throw new Error("Not possible to find intersection inside of the rectangle");return Math.abs(o)*l>Math.abs(s)*c?(o<0&&(c=-c),n=c*s/o,r=c):(s<0&&(l=-l),n=l,r=l*o/s),{x:i+n,y:a+r}}function ut(t){var e=l.Z(c.Z(dt(t)+1),(function(){return[]}));return r.Z(t.nodes(),(function(n){var r=t.node(n),i=r.rank;nt.Z(i)||(e[i][r.order]=n)})),e}function ht(t,e,n,r){var i={width:0,height:0};return arguments.length>=4&&(i.rank=n,i.order=r),ot(t,"border",i,e)}function dt(t){return K(l.Z(t.nodes(),(function(e){var n=t.node(e).rank;if(!nt.Z(n))return n})))}function pt(t,e){var n=st();try{return e()}finally{console.log(t+" time: "+(st()-n)+"ms")}}function ft(t,e){return e()}function mt(t,e,n,r,i,a){var s={width:0,height:0,rank:a,borderType:e},o=i[e][a-1],l=ot(t,"border",s,n);i[e][a]=l,t.setParent(l,r),o&&t.setEdge(o,l,{weight:1})}function gt(t){var e=t.graph().rankdir.toLowerCase();"bt"!==e&&"rl"!==e||function(t){r.Z(t.nodes(),(function(e){xt(t.node(e))})),r.Z(t.edges(),(function(e){var n=t.edge(e);r.Z(n.points,xt),a.Z(n,"y")&&xt(n)}))}(t),"lr"!==e&&"rl"!==e||(!function(t){r.Z(t.nodes(),(function(e){vt(t.node(e))})),r.Z(t.edges(),(function(e){var n=t.edge(e);r.Z(n.points,vt),a.Z(n,"x")&&vt(n)}))}(t),yt(t))}function yt(t){r.Z(t.nodes(),(function(e){bt(t.node(e))})),r.Z(t.edges(),(function(e){bt(t.edge(e))}))}function bt(t){var e=t.width;t.width=t.height,t.height=e}function xt(t){t.y=-t.y}function vt(t){var e=t.x;t.x=t.y,t.y=e}function _t(t){t.graph().dummyChains=[],r.Z(t.edges(),(function(e){!function(t,e){var n,r,i,a=e.v,s=t.node(a).rank,o=e.w,l=t.node(o).rank,c=e.name,u=t.edge(e),h=u.labelRank;if(l===s+1)return;for(t.removeEdge(e),i=0,++s;s<l;++i,++s)u.points=[],n=ot(t,"edge",r={width:0,height:0,edgeLabel:u,edgeObj:e,rank:s},"_d"),s===h&&(r.width=u.width,r.height=u.height,r.dummy="edge-label",r.labelpos=u.labelpos),t.setEdge(a,n,{weight:u.weight},c),0===i&&t.graph().dummyChains.push(n),a=n;t.setEdge(a,o,{weight:u.weight},c)}(t,e)}))}const kt=function(t,e){return t&&t.length?V(t,(0,tt.Z)(e,2),rt):void 0};function Tt(t){var e={};r.Z(t.sources(),(function n(r){var i=t.node(r);if(a.Z(e,r))return i.rank;e[r]=!0;var s=it(l.Z(t.outEdges(r),(function(e){return n(e.w)-t.edge(e).minlen})));return s!==Number.POSITIVE_INFINITY&&null!=s||(s=0),i.rank=s}))}function wt(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}function St(t){var e,n,r=new u.k({directed:!1}),i=t.nodes()[0],a=t.nodeCount();for(r.setNode(i,{});Et(r,t)<a;)e=Ct(r,t),n=r.hasNode(e.v)?wt(t,e):-wt(t,e),Dt(r,t,n);return r}function Et(t,e){return r.Z(t.nodes(),(function n(i){r.Z(e.nodeEdges(i),(function(r){var a=r.v,s=i===a?r.w:a;t.hasNode(s)||wt(e,r)||(t.setNode(s,{}),t.setEdge(i,s,{}),n(s))}))})),t.nodeCount()}function Ct(t,e){return kt(e.edges(),(function(n){if(t.hasNode(n.v)!==t.hasNode(n.w))return wt(e,n)}))}function Dt(t,e,n){r.Z(t.nodes(),(function(t){e.node(t).rank+=n}))}var At=n(585),Ot=n(7179);const It=function(t){return function(e,n,r){var i=Object(e);if(!(0,At.Z)(e)){var a=(0,tt.Z)(n,3);e=(0,Ot.Z)(e),n=function(t){return a(i[t],t,i)}}var s=t(e,n,r);return s>-1?i[a?e[s]:s]:void 0}};var Lt=n(1692),Nt=n(4099);const Mt=function(t){var e=(0,Nt.Z)(t),n=e%1;return e==e?n?e-n:e:0};var Ft=Math.max;const Bt=It((function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:Mt(n);return i<0&&(i=Ft(r+i,0)),(0,Lt.Z)(t,(0,tt.Z)(e,3),i)}));var Rt=n(3445);s.Z(1);s.Z(1);n(9473),n(3970),n(3589),n(8533);(0,n(4193).Z)("length");RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var $t="\\ud800-\\udfff",Zt="["+$t+"]",jt="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Pt="\\ud83c[\\udffb-\\udfff]",zt="[^"+$t+"]",Yt="(?:\\ud83c[\\udde6-\\uddff]){2}",Ut="[\\ud800-\\udbff][\\udc00-\\udfff]",Wt="(?:"+jt+"|"+Pt+")"+"?",Ht="[\\ufe0e\\ufe0f]?",qt=Ht+Wt+("(?:\\u200d(?:"+[zt,Yt,Ut].join("|")+")"+Ht+Wt+")*"),Vt="(?:"+[zt+jt+"?",jt,Yt,Ut,Zt].join("|")+")";RegExp(Pt+"(?="+Pt+")|"+Vt+qt,"g");function Gt(){}function Xt(t,e,n){A.Z(e)||(e=[e]);var i=(t.isDirected()?t.successors:t.neighbors).bind(t),a=[],s={};return r.Z(e,(function(e){if(!t.hasNode(e))throw new Error("Graph does not have node: "+e);Kt(t,e,"post"===n,s,i,a)})),a}function Kt(t,e,n,i,s,o){a.Z(i,e)||(i[e]=!0,n||o.push(e),r.Z(s(e),(function(e){Kt(t,e,n,i,s,o)})),n&&o.push(e))}Gt.prototype=new Error;n(2544);function Qt(t){t=function(t){var e=(new u.k).setGraph(t.graph());return r.Z(t.nodes(),(function(n){e.setNode(n,t.node(n))})),r.Z(t.edges(),(function(n){var r=e.edge(n.v,n.w)||{weight:0,minlen:1},i=t.edge(n);e.setEdge(n.v,n.w,{weight:r.weight+i.weight,minlen:Math.max(r.minlen,i.minlen)})})),e}(t),Tt(t);var e,n=St(t);for(ee(n),Jt(n,t);e=re(n);)ae(n,t,e,ie(n,t,e))}function Jt(t,e){var n=function(t,e){return Xt(t,e,"post")}(t,t.nodes());n=n.slice(0,n.length-1),r.Z(n,(function(n){!function(t,e,n){var r=t.node(n),i=r.parent;t.edge(n,i).cutvalue=te(t,e,n)}(t,e,n)}))}function te(t,e,n){var i=t.node(n).parent,a=!0,s=e.edge(n,i),o=0;return s||(a=!1,s=e.edge(i,n)),o=s.weight,r.Z(e.nodeEdges(n),(function(r){var s,l,c=r.v===n,u=c?r.w:r.v;if(u!==i){var h=c===a,d=e.edge(r).weight;if(o+=h?d:-d,s=n,l=u,t.hasEdge(s,l)){var p=t.edge(n,u).cutvalue;o+=h?-p:p}}})),o}function ee(t,e){arguments.length<2&&(e=t.nodes()[0]),ne(t,{},1,e)}function ne(t,e,n,i,s){var o=n,l=t.node(i);return e[i]=!0,r.Z(t.neighbors(i),(function(r){a.Z(e,r)||(n=ne(t,e,n,r,i))})),l.low=o,l.lim=n++,s?l.parent=s:delete l.parent,n}function re(t){return Bt(t.edges(),(function(e){return t.edge(e).cutvalue<0}))}function ie(t,e,n){var r=n.v,i=n.w;e.hasEdge(r,i)||(r=n.w,i=n.v);var a=t.node(r),s=t.node(i),o=a,l=!1;a.lim>s.lim&&(o=s,l=!0);var c=Rt.Z(e.edges(),(function(e){return l===se(t,t.node(e.v),o)&&l!==se(t,t.node(e.w),o)}));return kt(c,(function(t){return wt(e,t)}))}function ae(t,e,n,i){var a=n.v,s=n.w;t.removeEdge(a,s),t.setEdge(i.v,i.w,{}),ee(t),Jt(t,e),function(t,e){var n=Bt(t.nodes(),(function(t){return!e.node(t).parent})),i=function(t,e){return Xt(t,e,"pre")}(t,n);i=i.slice(1),r.Z(i,(function(n){var r=t.node(n).parent,i=e.edge(n,r),a=!1;i||(i=e.edge(r,n),a=!0),e.node(n).rank=e.node(r).rank+(a?i.minlen:-i.minlen)}))}(t,e)}function se(t,e,n){return n.low<=e.lim&&e.lim<=n.lim}function oe(t){switch(t.graph().ranker){case"network-simplex":default:ce(t);break;case"tight-tree":!function(t){Tt(t),St(t)}(t);break;case"longest-path":le(t)}}Qt.initLowLimValues=ee,Qt.initCutValues=Jt,Qt.calcCutValue=te,Qt.leaveEdge=re,Qt.enterEdge=ie,Qt.exchangeEdges=ae;var le=Tt;function ce(t){Qt(t)}var ue=n(4148),he=n(2344);function de(t){var e=ot(t,"root",{},"_root"),n=function(t){var e={};function n(i,a){var s=t.children(i);s&&s.length&&r.Z(s,(function(t){n(t,a+1)})),e[i]=a}return r.Z(t.children(),(function(t){n(t,1)})),e}(t),i=K(ue.Z(n))-1,a=2*i+1;t.graph().nestingRoot=e,r.Z(t.edges(),(function(e){t.edge(e).minlen*=a}));var s=function(t){return he.Z(t.edges(),(function(e,n){return e+t.edge(n).weight}),0)}(t)+1;r.Z(t.children(),(function(r){pe(t,e,a,s,i,n,r)})),t.graph().nodeRankFactor=a}function pe(t,e,n,i,a,s,o){var l=t.children(o);if(l.length){var c=ht(t,"_bt"),u=ht(t,"_bb"),h=t.node(o);t.setParent(c,o),h.borderTop=c,t.setParent(u,o),h.borderBottom=u,r.Z(l,(function(r){pe(t,e,n,i,a,s,r);var l=t.node(r),h=l.borderTop?l.borderTop:r,d=l.borderBottom?l.borderBottom:r,p=l.borderTop?i:2*i,f=h!==d?1:a-s[o]+1;t.setEdge(c,h,{weight:p,minlen:f,nestingEdge:!0}),t.setEdge(d,u,{weight:p,minlen:f,nestingEdge:!0})})),t.parent(o)||t.setEdge(e,c,{weight:0,minlen:a+s[o]})}else o!==e&&t.setEdge(e,o,{weight:0,minlen:n})}var fe=n(8451);const me=function(t){return(0,fe.Z)(t,5)};function ge(t,e,n){var s=function(t){var e;for(;t.hasNode(e=i.Z("_root")););return e}(t),o=new u.k({compound:!0}).setGraph({root:s}).setDefaultNodeLabel((function(e){return t.node(e)}));return r.Z(t.nodes(),(function(i){var l=t.node(i),c=t.parent(i);(l.rank===e||l.minRank<=e&&e<=l.maxRank)&&(o.setNode(i),o.setParent(i,c||s),r.Z(t[n](i),(function(e){var n=e.v===i?e.w:e.v,r=o.edge(n,i),a=nt.Z(r)?0:r.weight;o.setEdge(n,i,{weight:t.edge(e).weight+a})})),a.Z(l,"minRank")&&o.setNode(i,{borderLeft:l.borderLeft[e],borderRight:l.borderRight[e]}))})),o}var ye=n(2954);const be=function(t,e,n){for(var r=-1,i=t.length,a=e.length,s={};++r<i;){var o=r<a?e[r]:void 0;n(s,t[r],o)}return s};const xe=function(t,e){return be(t||[],e||[],ye.Z)};var ve=n(626),_e=n(4073),ke=n(3317),Te=n(1018);const we=function(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t};var Se=n(1162);const Ee=function(t,e){if(t!==e){var n=void 0!==t,r=null===t,i=t==t,a=(0,q.Z)(t),s=void 0!==e,o=null===e,l=e==e,c=(0,q.Z)(e);if(!o&&!c&&!a&&t>e||a&&s&&l&&!o&&!c||r&&s&&l||!n&&l||!i)return 1;if(!r&&!a&&!c&&t<e||c&&n&&i&&!r&&!a||o&&n&&i||!s&&i||!l)return-1}return 0};const Ce=function(t,e,n){for(var r=-1,i=t.criteria,a=e.criteria,s=i.length,o=n.length;++r<s;){var l=Ee(i[r],a[r]);if(l)return r>=o?l:l*("desc"==n[r]?-1:1)}return t.index-e.index};const De=function(t,e,n){e=e.length?(0,_e.Z)(e,(function(t){return(0,A.Z)(t)?function(e){return(0,ke.Z)(e,1===t.length?t[0]:t)}:t})):[X.Z];var r=-1;e=(0,_e.Z)(e,(0,Se.Z)(tt.Z));var i=(0,Te.Z)(t,(function(t,n,i){return{criteria:(0,_e.Z)(e,(function(e){return e(t)})),index:++r,value:t}}));return we(i,(function(t,e){return Ce(t,e,n)}))};const Ae=(0,z.Z)((function(t,e){if(null==t)return[];var n=e.length;return n>1&&(0,Y.Z)(t,e[0],e[1])?e=[]:n>2&&(0,Y.Z)(e[0],e[1],e[2])&&(e=[e[0]]),De(t,(0,ve.Z)(e,1),[])}));function Oe(t,e){for(var n=0,r=1;r<e.length;++r)n+=Ie(t,e[r-1],e[r]);return n}function Ie(t,e,n){for(var i=xe(n,l.Z(n,(function(t,e){return e}))),a=o.Z(l.Z(e,(function(e){return Ae(l.Z(t.outEdges(e),(function(e){return{pos:i[e.w],weight:t.edge(e).weight}})),"pos")}))),s=1;s<n.length;)s<<=1;var c=2*s-1;s-=1;var u=l.Z(new Array(c),(function(){return 0})),h=0;return r.Z(a.forEach((function(t){var e=t.pos+s;u[e]+=t.weight;for(var n=0;e>0;)e%2&&(n+=u[e+1]),u[e=e-1>>1]+=t.weight;h+=t.weight*n}))),h}function Le(t,e){var n={};return r.Z(t,(function(t,e){var r=n[t.v]={indegree:0,in:[],out:[],vs:[t.v],i:e};nt.Z(t.barycenter)||(r.barycenter=t.barycenter,r.weight=t.weight)})),r.Z(e.edges(),(function(t){var e=n[t.v],r=n[t.w];nt.Z(e)||nt.Z(r)||(r.indegree++,e.out.push(n[t.w]))})),function(t){var e=[];function n(t){return function(e){e.merged||(nt.Z(e.barycenter)||nt.Z(t.barycenter)||e.barycenter>=t.barycenter)&&function(t,e){var n=0,r=0;t.weight&&(n+=t.barycenter*t.weight,r+=t.weight);e.weight&&(n+=e.barycenter*e.weight,r+=e.weight);t.vs=e.vs.concat(t.vs),t.barycenter=n/r,t.weight=r,t.i=Math.min(e.i,t.i),e.merged=!0}(t,e)}}function i(e){return function(n){n.in.push(e),0==--n.indegree&&t.push(n)}}for(;t.length;){var a=t.pop();e.push(a),r.Z(a.in.reverse(),n(a)),r.Z(a.out,i(a))}return l.Z(Rt.Z(e,(function(t){return!t.merged})),(function(t){return W.Z(t,["vs","i","barycenter","weight"])}))}(Rt.Z(n,(function(t){return!t.indegree})))}function Ne(t,e){var n,i=function(t,e){var n={lhs:[],rhs:[]};return r.Z(t,(function(t){e(t)?n.lhs.push(t):n.rhs.push(t)})),n}(t,(function(t){return a.Z(t,"barycenter")})),s=i.lhs,l=Ae(i.rhs,(function(t){return-t.i})),c=[],u=0,h=0,d=0;s.sort((n=!!e,function(t,e){return t.barycenter<e.barycenter?-1:t.barycenter>e.barycenter?1:n?e.i-t.i:t.i-e.i})),d=Me(c,l,d),r.Z(s,(function(t){d+=t.vs.length,c.push(t.vs),u+=t.barycenter*t.weight,h+=t.weight,d=Me(c,l,d)}));var p={vs:o.Z(c)};return h&&(p.barycenter=u/h,p.weight=h),p}function Me(t,e,n){for(var r;e.length&&(r=Q(e)).i<=n;)e.pop(),t.push(r.vs),n++;return n}function Fe(t,e,n,i){var s=t.children(e),c=t.node(e),u=c?c.borderLeft:void 0,h=c?c.borderRight:void 0,d={};u&&(s=Rt.Z(s,(function(t){return t!==u&&t!==h})));var p=function(t,e){return l.Z(e,(function(e){var n=t.inEdges(e);if(n.length){var r=he.Z(n,(function(e,n){var r=t.edge(n),i=t.node(n.v);return{sum:e.sum+r.weight*i.order,weight:e.weight+r.weight}}),{sum:0,weight:0});return{v:e,barycenter:r.sum/r.weight,weight:r.weight}}return{v:e}}))}(t,s);r.Z(p,(function(e){if(t.children(e.v).length){var r=Fe(t,e.v,n,i);d[e.v]=r,a.Z(r,"barycenter")&&(s=e,o=r,nt.Z(s.barycenter)?(s.barycenter=o.barycenter,s.weight=o.weight):(s.barycenter=(s.barycenter*s.weight+o.barycenter*o.weight)/(s.weight+o.weight),s.weight+=o.weight))}var s,o}));var f=Le(p,n);!function(t,e){r.Z(t,(function(t){t.vs=o.Z(t.vs.map((function(t){return e[t]?e[t].vs:t})))}))}(f,d);var m=Ne(f,i);if(u&&(m.vs=o.Z([u,m.vs,h]),t.predecessors(u).length)){var g=t.node(t.predecessors(u)[0]),y=t.node(t.predecessors(h)[0]);a.Z(m,"barycenter")||(m.barycenter=0,m.weight=0),m.barycenter=(m.barycenter*m.weight+g.order+y.order)/(m.weight+2),m.weight+=2}return m}function Be(t){var e=dt(t),n=Re(t,c.Z(1,e+1),"inEdges"),i=Re(t,c.Z(e-1,-1,-1),"outEdges"),s=function(t){var e={},n=Rt.Z(t.nodes(),(function(e){return!t.children(e).length})),i=K(l.Z(n,(function(e){return t.node(e).rank}))),s=l.Z(c.Z(i+1),(function(){return[]})),o=Ae(n,(function(e){return t.node(e).rank}));return r.Z(o,(function n(i){if(!a.Z(e,i)){e[i]=!0;var o=t.node(i);s[o.rank].push(i),r.Z(t.successors(i),n)}})),s}(t);Ze(t,s);for(var o,u=Number.POSITIVE_INFINITY,h=0,d=0;d<4;++h,++d){$e(h%2?n:i,h%4>=2);var p=Oe(t,s=ut(t));p<u&&(d=0,o=me(s),u=p)}Ze(t,o)}function Re(t,e,n){return l.Z(e,(function(e){return ge(t,e,n)}))}function $e(t,e){var n=new u.k;r.Z(t,(function(t){var i=t.graph().root,a=Fe(t,i,n,e);r.Z(a.vs,(function(e,n){t.node(e).order=n})),function(t,e,n){var i,a={};r.Z(n,(function(n){for(var r,s,o=t.parent(n);o;){if((r=t.parent(o))?(s=a[r],a[r]=o):(s=i,i=o),s&&s!==o)return void e.setEdge(s,o);o=r}}))}(t,n,a.vs)}))}function Ze(t,e){r.Z(e,(function(e){r.Z(e,(function(e,n){t.node(e).order=n}))}))}function je(t){var e=function(t){var e={},n=0;function i(a){var s=n;r.Z(t.children(a),i),e[a]={low:s,lim:n++}}return r.Z(t.children(),i),e}(t);r.Z(t.graph().dummyChains,(function(n){for(var r=t.node(n),i=r.edgeObj,a=function(t,e,n,r){var i,a,s=[],o=[],l=Math.min(e[n].low,e[r].low),c=Math.max(e[n].lim,e[r].lim);i=n;do{i=t.parent(i),s.push(i)}while(i&&(e[i].low>l||c>e[i].lim));a=i,i=r;for(;(i=t.parent(i))!==a;)o.push(i);return{path:s.concat(o.reverse()),lca:a}}(t,e,i.v,i.w),s=a.path,o=a.lca,l=0,c=s[l],u=!0;n!==i.w;){if(r=t.node(n),u){for(;(c=s[l])!==o&&t.node(c).maxRank<r.rank;)l++;c===o&&(u=!1)}if(!u){for(;l<s.length-1&&t.node(c=s[l+1]).minRank<=r.rank;)l++;c=s[l]}t.setParent(n,c),n=t.successors(n)[0]}}))}var Pe=n(8882);const ze=function(t,e){return null==t?t:(0,T.Z)(t,(0,Pe.Z)(e),$.Z)};function Ye(t,e){var n={};return he.Z(e,(function(e,i){var a=0,s=0,o=e.length,l=Q(i);return r.Z(i,(function(e,c){var u=function(t,e){if(t.node(e).dummy)return Bt(t.predecessors(e),(function(e){return t.node(e).dummy}))}(t,e),h=u?t.node(u).order:o;(u||e===l)&&(r.Z(i.slice(s,c+1),(function(e){r.Z(t.predecessors(e),(function(r){var i=t.node(r),s=i.order;!(s<a||h<s)||i.dummy&&t.node(e).dummy||Ue(n,r,e)}))})),s=c+1,a=h)})),i})),n}function Ue(t,e,n){if(e>n){var r=e;e=n,n=r}var i=t[e];i||(t[e]=i={}),i[n]=!0}function We(t,e,n){if(e>n){var r=e;e=n,n=r}return a.Z(t[e],n)}function He(t,e,n,i,s){var o={},l=function(t,e,n,i){var s=new u.k,o=t.graph(),l=function(t,e,n){return function(r,i,s){var o,l=r.node(i),c=r.node(s),u=0;if(u+=l.width/2,a.Z(l,"labelpos"))switch(l.labelpos.toLowerCase()){case"l":o=-l.width/2;break;case"r":o=l.width/2}if(o&&(u+=n?o:-o),o=0,u+=(l.dummy?e:t)/2,u+=(c.dummy?e:t)/2,u+=c.width/2,a.Z(c,"labelpos"))switch(c.labelpos.toLowerCase()){case"l":o=c.width/2;break;case"r":o=-c.width/2}return o&&(u+=n?o:-o),o=0,u}}(o.nodesep,o.edgesep,i);return r.Z(e,(function(e){var i;r.Z(e,(function(e){var r=n[e];if(s.setNode(r),i){var a=n[i],o=s.edge(a,r);s.setEdge(a,r,Math.max(l(t,e,i),o||0))}i=e}))})),s}(t,e,n,s),c=s?"borderLeft":"borderRight";function h(t,e){for(var n=l.nodes(),r=n.pop(),i={};r;)i[r]?t(r):(i[r]=!0,n.push(r),n=n.concat(e(r))),r=n.pop()}return h((function(t){o[t]=l.inEdges(t).reduce((function(t,e){return Math.max(t,o[e.v]+l.edge(e))}),0)}),l.predecessors.bind(l)),h((function(e){var n=l.outEdges(e).reduce((function(t,e){return Math.min(t,o[e.w]-l.edge(e))}),Number.POSITIVE_INFINITY),r=t.node(e);n!==Number.POSITIVE_INFINITY&&r.borderType!==c&&(o[e]=Math.max(o[e],n))}),l.successors.bind(l)),r.Z(i,(function(t){o[t]=o[n[t]]})),o}function qe(t){var e,n=ut(t),i=U(Ye(t,n),function(t,e){var n={};function i(e,i,a,s,o){var l;r.Z(c.Z(i,a),(function(i){l=e[i],t.node(l).dummy&&r.Z(t.predecessors(l),(function(e){var r=t.node(e);r.dummy&&(r.order<s||r.order>o)&&Ue(n,e,l)}))}))}return he.Z(e,(function(e,n){var a,s=-1,o=0;return r.Z(n,(function(r,l){if("border"===t.node(r).dummy){var c=t.predecessors(r);c.length&&(a=t.node(c[0]).order,i(n,o,l,s,a),o=l,s=a)}i(n,o,n.length,a,e.length)})),n})),n}(t,n)),a={};r.Z(["u","d"],(function(s){e="u"===s?n:ue.Z(n).reverse(),r.Z(["l","r"],(function(n){"r"===n&&(e=l.Z(e,(function(t){return ue.Z(t).reverse()})));var o=("u"===s?t.predecessors:t.successors).bind(t),c=function(t,e,n,i){var a={},s={},o={};return r.Z(e,(function(t){r.Z(t,(function(t,e){a[t]=t,s[t]=t,o[t]=e}))})),r.Z(e,(function(t){var e=-1;r.Z(t,(function(t){var r=i(t);if(r.length){r=Ae(r,(function(t){return o[t]}));for(var l=(r.length-1)/2,c=Math.floor(l),u=Math.ceil(l);c<=u;++c){var h=r[c];s[t]===t&&e<o[h]&&!We(n,t,h)&&(s[h]=t,s[t]=a[t]=a[h],e=o[h])}}}))})),{root:a,align:s}}(0,e,i,o),u=He(t,e,c.root,c.align,"r"===n);"r"===n&&(u=et(u,(function(t){return-t}))),a[s+n]=u}))}));var s=function(t,e){return kt(ue.Z(e),(function(e){var n=Number.NEGATIVE_INFINITY,r=Number.POSITIVE_INFINITY;return ze(e,(function(e,i){var a=function(t,e){return t.node(e).width}(t,i)/2;n=Math.max(e+a,n),r=Math.min(e-a,r)})),n-r}))}(t,a);return function(t,e){var n=ue.Z(e),i=it(n),a=K(n);r.Z(["u","d"],(function(n){r.Z(["l","r"],(function(r){var s,o=n+r,l=t[o];if(l!==e){var c=ue.Z(l);(s="l"===r?i-it(c):a-K(c))&&(t[o]=et(l,(function(t){return t+s})))}}))}))}(a,s),function(t,e){return et(t.ul,(function(n,r){if(e)return t[e.toLowerCase()][r];var i=Ae(l.Z(t,r));return(i[1]+i[2])/2}))}(a,t.graph().align)}function Ve(t){(function(t){var e=ut(t),n=t.graph().ranksep,i=0;r.Z(e,(function(e){var a=K(l.Z(e,(function(e){return t.node(e).height})));r.Z(e,(function(e){t.node(e).y=i+a/2})),i+=a+n}))})(t=lt(t)),r.Z(qe(t),(function(e,n){t.node(n).x=e}))}function Ge(t,e){var n=e&&e.debugTiming?pt:ft;n("layout",(function(){var e=n(" buildLayoutGraph",(function(){return function(t){var e=new u.k({multigraph:!0,compound:!0}),n=sn(t.graph());return e.setGraph(U({},Ke,an(n,Xe),W.Z(n,Qe))),r.Z(t.nodes(),(function(n){var r=sn(t.node(n));e.setNode(n,H.Z(an(r,Je),tn)),e.setParent(n,t.parent(n))})),r.Z(t.edges(),(function(n){var r=sn(t.edge(n));e.setEdge(n,U({},nn,an(r,en),W.Z(r,rn)))})),e}(t)}));n(" runLayout",(function(){!function(t,e){e(" makeSpaceForEdgeLabels",(function(){!function(t){var e=t.graph();e.ranksep/=2,r.Z(t.edges(),(function(n){var r=t.edge(n);r.minlen*=2,"c"!==r.labelpos.toLowerCase()&&("TB"===e.rankdir||"BT"===e.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)}))}(t)})),e(" removeSelfEdges",(function(){!function(t){r.Z(t.edges(),(function(e){if(e.v===e.w){var n=t.node(e.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e:e,label:t.edge(e)}),t.removeEdge(e)}}))}(t)})),e(" acyclic",(function(){b(t)})),e(" nestingGraph.run",(function(){de(t)})),e(" rank",(function(){oe(lt(t))})),e(" injectEdgeLabelProxies",(function(){!function(t){r.Z(t.edges(),(function(e){var n=t.edge(e);if(n.width&&n.height){var r=t.node(e.v),i={rank:(t.node(e.w).rank-r.rank)/2+r.rank,e:e};ot(t,"edge-proxy",i,"_ep")}}))}(t)})),e(" removeEmptyRanks",(function(){!function(t){var e=it(l.Z(t.nodes(),(function(e){return t.node(e).rank}))),n=[];r.Z(t.nodes(),(function(r){var i=t.node(r).rank-e;n[i]||(n[i]=[]),n[i].push(r)}));var i=0,a=t.graph().nodeRankFactor;r.Z(n,(function(e,n){nt.Z(e)&&n%a!=0?--i:i&&r.Z(e,(function(e){t.node(e).rank+=i}))}))}(t)})),e(" nestingGraph.cleanup",(function(){!function(t){var e=t.graph();t.removeNode(e.nestingRoot),delete e.nestingRoot,r.Z(t.edges(),(function(e){t.edge(e).nestingEdge&&t.removeEdge(e)}))}(t)})),e(" normalizeRanks",(function(){!function(t){var e=it(l.Z(t.nodes(),(function(e){return t.node(e).rank})));r.Z(t.nodes(),(function(n){var r=t.node(n);a.Z(r,"rank")&&(r.rank-=e)}))}(t)})),e(" assignRankMinMax",(function(){!function(t){var e=0;r.Z(t.nodes(),(function(n){var r=t.node(n);r.borderTop&&(r.minRank=t.node(r.borderTop).rank,r.maxRank=t.node(r.borderBottom).rank,e=K(e,r.maxRank))})),t.graph().maxRank=e}(t)})),e(" removeEdgeLabelProxies",(function(){!function(t){r.Z(t.nodes(),(function(e){var n=t.node(e);"edge-proxy"===n.dummy&&(t.edge(n.e).labelRank=n.rank,t.removeNode(e))}))}(t)})),e(" normalize.run",(function(){_t(t)})),e(" parentDummyChains",(function(){je(t)})),e(" addBorderSegments",(function(){!function(t){r.Z(t.children(),(function e(n){var i=t.children(n),s=t.node(n);if(i.length&&r.Z(i,e),a.Z(s,"minRank")){s.borderLeft=[],s.borderRight=[];for(var o=s.minRank,l=s.maxRank+1;o<l;++o)mt(t,"borderLeft","_bl",n,s,o),mt(t,"borderRight","_br",n,s,o)}}))}(t)})),e(" order",(function(){Be(t)})),e(" insertSelfEdges",(function(){!function(t){var e=ut(t);r.Z(e,(function(e){var n=0;r.Z(e,(function(e,i){var a=t.node(e);a.order=i+n,r.Z(a.selfEdges,(function(e){ot(t,"selfedge",{width:e.label.width,height:e.label.height,rank:a.rank,order:i+ ++n,e:e.e,label:e.label},"_se")})),delete a.selfEdges}))}))}(t)})),e(" adjustCoordinateSystem",(function(){!function(t){var e=t.graph().rankdir.toLowerCase();"lr"!==e&&"rl"!==e||yt(t)}(t)})),e(" position",(function(){Ve(t)})),e(" positionSelfEdges",(function(){!function(t){r.Z(t.nodes(),(function(e){var n=t.node(e);if("selfedge"===n.dummy){var r=t.node(n.e.v),i=r.x+r.width/2,a=r.y,s=n.x-i,o=r.height/2;t.setEdge(n.e,n.label),t.removeNode(e),n.label.points=[{x:i+2*s/3,y:a-o},{x:i+5*s/6,y:a-o},{x:i+s,y:a},{x:i+5*s/6,y:a+o},{x:i+2*s/3,y:a+o}],n.label.x=n.x,n.label.y=n.y}}))}(t)})),e(" removeBorderNodes",(function(){!function(t){r.Z(t.nodes(),(function(e){if(t.children(e).length){var n=t.node(e),r=t.node(n.borderTop),i=t.node(n.borderBottom),a=t.node(Q(n.borderLeft)),s=t.node(Q(n.borderRight));n.width=Math.abs(s.x-a.x),n.height=Math.abs(i.y-r.y),n.x=a.x+n.width/2,n.y=r.y+n.height/2}})),r.Z(t.nodes(),(function(e){"border"===t.node(e).dummy&&t.removeNode(e)}))}(t)})),e(" normalize.undo",(function(){!function(t){r.Z(t.graph().dummyChains,(function(e){var n,r=t.node(e),i=r.edgeLabel;for(t.setEdge(r.edgeObj,i);r.dummy;)n=t.successors(e)[0],t.removeNode(e),i.points.push({x:r.x,y:r.y}),"edge-label"===r.dummy&&(i.x=r.x,i.y=r.y,i.width=r.width,i.height=r.height),e=n,r=t.node(e)}))}(t)})),e(" fixupEdgeLabelCoords",(function(){!function(t){r.Z(t.edges(),(function(e){var n=t.edge(e);if(a.Z(n,"x"))switch("l"!==n.labelpos&&"r"!==n.labelpos||(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset}}))}(t)})),e(" undoCoordinateSystem",(function(){gt(t)})),e(" translateGraph",(function(){!function(t){var e=Number.POSITIVE_INFINITY,n=0,i=Number.POSITIVE_INFINITY,s=0,o=t.graph(),l=o.marginx||0,c=o.marginy||0;function u(t){var r=t.x,a=t.y,o=t.width,l=t.height;e=Math.min(e,r-o/2),n=Math.max(n,r+o/2),i=Math.min(i,a-l/2),s=Math.max(s,a+l/2)}r.Z(t.nodes(),(function(e){u(t.node(e))})),r.Z(t.edges(),(function(e){var n=t.edge(e);a.Z(n,"x")&&u(n)})),e-=l,i-=c,r.Z(t.nodes(),(function(n){var r=t.node(n);r.x-=e,r.y-=i})),r.Z(t.edges(),(function(n){var s=t.edge(n);r.Z(s.points,(function(t){t.x-=e,t.y-=i})),a.Z(s,"x")&&(s.x-=e),a.Z(s,"y")&&(s.y-=i)})),o.width=n-e+l,o.height=s-i+c}(t)})),e(" assignNodeIntersects",(function(){!function(t){r.Z(t.edges(),(function(e){var n,r,i=t.edge(e),a=t.node(e.v),s=t.node(e.w);i.points?(n=i.points[0],r=i.points[i.points.length-1]):(i.points=[],n=s,r=a),i.points.unshift(ct(a,n)),i.points.push(ct(s,r))}))}(t)})),e(" reversePoints",(function(){!function(t){r.Z(t.edges(),(function(e){var n=t.edge(e);n.reversed&&n.points.reverse()}))}(t)})),e(" acyclic.undo",(function(){!function(t){r.Z(t.edges(),(function(e){var n=t.edge(e);if(n.reversed){t.removeEdge(e);var r=n.forwardName;delete n.reversed,delete n.forwardName,t.setEdge(e.w,e.v,n,r)}}))}(t)}))}(e,n)})),n(" updateInputGraph",(function(){!function(t,e){r.Z(t.nodes(),(function(n){var r=t.node(n),i=e.node(n);r&&(r.x=i.x,r.y=i.y,e.children(n).length&&(r.width=i.width,r.height=i.height))})),r.Z(t.edges(),(function(n){var r=t.edge(n),i=e.edge(n);r.points=i.points,a.Z(i,"x")&&(r.x=i.x,r.y=i.y)})),t.graph().width=e.graph().width,t.graph().height=e.graph().height}(t,e)}))}))}var Xe=["nodesep","edgesep","ranksep","marginx","marginy"],Ke={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},Qe=["acyclicer","ranker","rankdir","align"],Je=["width","height"],tn={width:0,height:0},en=["minlen","weight","width","height","labeloffset"],nn={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},rn=["labelpos"];function an(t,e){return et(W.Z(t,e),Number)}function sn(t){var e={};return r.Z(t,(function(t,n){e[n.toLowerCase()]=t})),e}},2544:(t,e,n)=>{"use strict";n.d(e,{k:()=>M});var r=n(7452),i=n(2002),a=n(3234),s=n(7179),o=n(3445),l=n(9697),c=n(870),u=n(9360),h=n(626),d=n(9581),p=n(3001),f=n(1692);const m=function(t){return t!=t};const g=function(t,e,n){for(var r=n-1,i=t.length;++r<i;)if(t[r]===e)return r;return-1};const y=function(t,e,n){return e==e?g(t,e,n):(0,f.Z)(t,m,n)};const b=function(t,e){return!!(null==t?0:t.length)&&y(t,e,0)>-1};const x=function(t,e,n){for(var r=-1,i=null==t?0:t.length;++r<i;)if(n(e,t[r]))return!0;return!1};var v=n(9548),_=n(3203);const k=function(){};var T=n(6545),w=_.Z&&1/(0,T.Z)(new _.Z([,-0]))[1]==1/0?function(t){return new _.Z(t)}:k;const S=w;const E=function(t,e,n){var r=-1,i=b,a=t.length,s=!0,o=[],l=o;if(n)s=!1,i=x;else if(a>=200){var c=e?null:S(t);if(c)return(0,T.Z)(c);s=!1,i=v.Z,l=new p.Z}else l=e?[]:o;t:for(;++r<a;){var u=t[r],h=e?e(u):u;if(u=n||0!==u?u:0,s&&h==h){for(var d=l.length;d--;)if(l[d]===h)continue t;e&&l.push(h),o.push(u)}else i(l,h,n)||(l!==o&&l.push(h),o.push(u))}return o};var C=n(836);const D=(0,d.Z)((function(t){return E((0,h.Z)(t,1,C.Z,!0))}));var A=n(4148),O=n(2344),I="\0",L="\0",N="\x01";class M{constructor(t={}){this._isDirected=!r.Z(t,"directed")||t.directed,this._isMultigraph=!!r.Z(t,"multigraph")&&t.multigraph,this._isCompound=!!r.Z(t,"compound")&&t.compound,this._label=void 0,this._defaultNodeLabelFn=i.Z(void 0),this._defaultEdgeLabelFn=i.Z(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[L]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(t){return this._label=t,this}graph(){return this._label}setDefaultNodeLabel(t){return a.Z(t)||(t=i.Z(t)),this._defaultNodeLabelFn=t,this}nodeCount(){return this._nodeCount}nodes(){return s.Z(this._nodes)}sources(){var t=this;return o.Z(this.nodes(),(function(e){return l.Z(t._in[e])}))}sinks(){var t=this;return o.Z(this.nodes(),(function(e){return l.Z(t._out[e])}))}setNodes(t,e){var n=arguments,r=this;return c.Z(t,(function(t){n.length>1?r.setNode(t,e):r.setNode(t)})),this}setNode(t,e){return r.Z(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=L,this._children[t]={},this._children[L][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)}node(t){return this._nodes[t]}hasNode(t){return r.Z(this._nodes,t)}removeNode(t){var e=this;if(r.Z(this._nodes,t)){var n=function(t){e.removeEdge(e._edgeObjs[t])};delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],c.Z(this.children(t),(function(t){e.setParent(t)})),delete this._children[t]),c.Z(s.Z(this._in[t]),n),delete this._in[t],delete this._preds[t],c.Z(s.Z(this._out[t]),n),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(u.Z(e))e=L;else{for(var n=e+="";!u.Z(n);n=this.parent(n))if(n===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}parent(t){if(this._isCompound){var e=this._parent[t];if(e!==L)return e}}children(t){if(u.Z(t)&&(t=L),this._isCompound){var e=this._children[t];if(e)return s.Z(e)}else{if(t===L)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var e=this._preds[t];if(e)return s.Z(e)}successors(t){var e=this._sucs[t];if(e)return s.Z(e)}neighbors(t){var e=this.predecessors(t);if(e)return D(e,this.successors(t))}isLeaf(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length}filterNodes(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var n=this;c.Z(this._nodes,(function(n,r){t(r)&&e.setNode(r,n)})),c.Z(this._edgeObjs,(function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,n.edge(t))}));var r={};function i(t){var a=n.parent(t);return void 0===a||e.hasNode(a)?(r[t]=a,a):a in r?r[a]:i(a)}return this._isCompound&&c.Z(e.nodes(),(function(t){e.setParent(t,i(t))})),e}setDefaultEdgeLabel(t){return a.Z(t)||(t=i.Z(t)),this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return A.Z(this._edgeObjs)}setPath(t,e){var n=this,r=arguments;return O.Z(t,(function(t,i){return r.length>1?n.setEdge(t,i,e):n.setEdge(t,i),i})),this}setEdge(){var t,e,n,i,a=!1,s=arguments[0];"object"==typeof s&&null!==s&&"v"in s?(t=s.v,e=s.w,n=s.name,2===arguments.length&&(i=arguments[1],a=!0)):(t=s,e=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),t=""+t,e=""+e,u.Z(n)||(n=""+n);var o=R(this._isDirected,t,e,n);if(r.Z(this._edgeLabels,o))return a&&(this._edgeLabels[o]=i),this;if(!u.Z(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[o]=a?i:this._defaultEdgeLabelFn(t,e,n);var l=function(t,e,n,r){var i=""+e,a=""+n;if(!t&&i>a){var s=i;i=a,a=s}var o={v:i,w:a};r&&(o.name=r);return o}(this._isDirected,t,e,n);return t=l.v,e=l.w,Object.freeze(l),this._edgeObjs[o]=l,F(this._preds[e],t),F(this._sucs[t],e),this._in[e][o]=l,this._out[t][o]=l,this._edgeCount++,this}edge(t,e,n){var r=1===arguments.length?$(this._isDirected,arguments[0]):R(this._isDirected,t,e,n);return this._edgeLabels[r]}hasEdge(t,e,n){var i=1===arguments.length?$(this._isDirected,arguments[0]):R(this._isDirected,t,e,n);return r.Z(this._edgeLabels,i)}removeEdge(t,e,n){var r=1===arguments.length?$(this._isDirected,arguments[0]):R(this._isDirected,t,e,n),i=this._edgeObjs[r];return i&&(t=i.v,e=i.w,delete this._edgeLabels[r],delete this._edgeObjs[r],B(this._preds[e],t),B(this._sucs[t],e),delete this._in[e][r],delete this._out[t][r],this._edgeCount--),this}inEdges(t,e){var n=this._in[t];if(n){var r=A.Z(n);return e?o.Z(r,(function(t){return t.v===e})):r}}outEdges(t,e){var n=this._out[t];if(n){var r=A.Z(n);return e?o.Z(r,(function(t){return t.w===e})):r}}nodeEdges(t,e){var n=this.inEdges(t,e);if(n)return n.concat(this.outEdges(t,e))}}function F(t,e){t[e]?t[e]++:t[e]=1}function B(t,e){--t[e]||delete t[e]}function R(t,e,n,r){var i=""+e,a=""+n;if(!t&&i>a){var s=i;i=a,a=s}return i+N+a+N+(u.Z(r)?I:r)}function $(t,e){return R(t,e.v,e.w,e.name)}M.prototype._nodeCount=0,M.prototype._edgeCount=0},5625:(t,e,n)=>{"use strict";n.d(e,{k:()=>r.k});var r=n(2544)},9354:(t,e,n)=>{"use strict";n.d(e,{c:()=>o});var r=n(9360),i=n(8451);const a=function(t){return(0,i.Z)(t,4)};var s=n(3836);n(2544);function o(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:l(t),edges:c(t)};return r.Z(t.graph())||(e.value=a(t.graph())),e}function l(t){return s.Z(t.nodes(),(function(e){var n=t.node(e),i=t.parent(e),a={v:e};return r.Z(n)||(a.value=n),r.Z(i)||(a.parent=i),a}))}function c(t){return s.Z(t.edges(),(function(e){var n=t.edge(e),i={v:e.v,w:e.w};return r.Z(e.name)||(i.name=e.name),r.Z(n)||(i.value=n),i}))}},1518:(t,e,n)=>{"use strict";n.d(e,{sY:()=>S});var r=n(9373),i=n(7452),a=n(3688),s=n(870),o=n(277),l=n(6225),c={normal:function(t,e,n,r){var i=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").style("stroke-width",1).style("stroke-dasharray","1,0");l.bg(i,n[r+"Style"]),n[r+"Class"]&&i.attr("class",n[r+"Class"])},vee:function(t,e,n,r){var i=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 L 4 5 z").style("stroke-width",1).style("stroke-dasharray","1,0");l.bg(i,n[r+"Style"]),n[r+"Class"]&&i.attr("class",n[r+"Class"])},undirected:function(t,e,n,r){var i=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 5 L 10 5").style("stroke-width",1).style("stroke-dasharray","1,0");l.bg(i,n[r+"Style"]),n[r+"Class"]&&i.attr("class",n[r+"Class"])}};var u=n(3349);function h(t,e,n){var r=e.label,i=t.append("g");"svg"===e.labelType?function(t,e){var n=t;n.node().appendChild(e.label),l.bg(n,e.labelStyle)}(i,e):"string"!=typeof r||"html"===e.labelType?(0,u.a)(i,e):function(t,e){for(var n=t.append("text"),r=function(t){for(var e,n="",r=!1,i=0;i<t.length;++i)e=t[i],r?(n+="n"===e?"\n":e,r=!1):"\\"===e?r=!0:n+=e;return n}(e.label).split("\n"),i=0;i<r.length;i++)n.append("tspan").attr("xml:space","preserve").attr("dy","1em").attr("x","1").text(r[i]);l.bg(n,e.labelStyle)}(i,e);var a,s=i.node().getBBox();switch(n){case"top":a=-e.height/2;break;case"bottom":a=e.height/2-s.height;break;default:a=-s.height/2}return i.attr("transform","translate("+-s.width/2+","+a+")"),i}var d=function(t,e){var n=e.nodes().filter((function(t){return l.bF(e,t)})),i=t.selectAll("g.cluster").data(n,(function(t){return t}));l.WR(i.exit(),e).style("opacity",0).remove();var a=i.enter().append("g").attr("class","cluster").attr("id",(function(t){return e.node(t).id})).style("opacity",0).each((function(t){var n=e.node(t),i=r.Ys(this);r.Ys(this).append("rect"),h(i.append("g").attr("class","label"),n,n.clusterLabelPos)}));return i=i.merge(a),(i=l.WR(i,e).style("opacity",1)).selectAll("rect").each((function(t){var n=e.node(t),i=r.Ys(this);l.bg(i,n.style)})),i};let p=function(t,e){var n,a=t.selectAll("g.edgeLabel").data(e.edges(),(function(t){return l.O1(t)})).classed("update",!0);return a.exit().remove(),a.enter().append("g").classed("edgeLabel",!0).style("opacity",0),(a=t.selectAll("g.edgeLabel")).each((function(t){var n=r.Ys(this);n.select(".label").remove();var a=e.edge(t),s=h(n,e.edge(t),0).classed("label",!0),o=s.node().getBBox();a.labelId&&s.attr("id",a.labelId),i.Z(a,"width")||(a.width=o.width),i.Z(a,"height")||(a.height=o.height)})),n=a.exit?a.exit():a.selectAll(null),l.WR(n,e).style("opacity",0).remove(),a};var f=n(6749),m=n(4379);function g(t,e){return t.intersect(e)}var y=function(t,e,n){var i=t.selectAll("g.edgePath").data(e.edges(),(function(t){return l.O1(t)})).classed("update",!0),a=function(t,e){var n=t.enter().append("g").attr("class","edgePath").style("opacity",0);return n.append("path").attr("class","path").attr("d",(function(t){var n=e.edge(t),r=e.node(t.v).elem;return b(n,m.Z(n.points.length).map((function(){return e=(t=r).getBBox(),{x:(n=t.ownerSVGElement.getScreenCTM().inverse().multiply(t.getScreenCTM()).translate(e.width/2,e.height/2)).e,y:n.f};var t,e,n})))})),n.append("defs"),n}(i,e);!function(t,e){var n=t.exit();l.WR(n,e).style("opacity",0).remove()}(i,e);var s=void 0!==i.merge?i.merge(a):i;return l.WR(s,e).style("opacity",1),s.each((function(t){var n=r.Ys(this),i=e.edge(t);i.elem=this,i.id&&n.attr("id",i.id),l.$p(n,i.class,(n.classed("update")?"update ":"")+"edgePath")})),s.selectAll("path.path").each((function(t){var n=e.edge(t);n.arrowheadId=f.Z("arrowhead");var i=r.Ys(this).attr("marker-end",(function(){return"url("+(t=location.href,e=n.arrowheadId,t.split("#")[0]+"#"+e+")");var t,e})).style("fill","none");l.WR(i,e).attr("d",(function(t){return function(t,e){var n=t.edge(e),r=t.node(e.v),i=t.node(e.w),a=n.points.slice(1,n.points.length-1);return a.unshift(g(r,a[0])),a.push(g(i,a[a.length-1])),b(n,a)}(e,t)})),l.bg(i,n.style)})),s.selectAll("defs *").remove(),s.selectAll("defs").each((function(t){var i=e.edge(t);(0,n[i.arrowhead])(r.Ys(this),i.arrowheadId,i,"arrowhead")})),s};function b(t,e){var n=(r.jvg||r.YPS.line)().x((function(t){return t.x})).y((function(t){return t.y}));return(n.curve||n.interpolate)(t.curve),n(e)}var x=n(1666),v=function(t,e,n){var a,s=e.nodes().filter((function(t){return!l.bF(e,t)})),o=t.selectAll("g.node").data(s,(function(t){return t})).classed("update",!0);return o.exit().remove(),o.enter().append("g").attr("class","node").style("opacity",0),(o=t.selectAll("g.node")).each((function(t){var a=e.node(t),s=r.Ys(this);l.$p(s,a.class,(s.classed("update")?"update ":"")+"node"),s.select("g.label").remove();var o=s.append("g").attr("class","label"),c=h(o,a),u=n[a.shape],d=x.Z(c.node().getBBox(),"width","height");a.elem=this,a.id&&s.attr("id",a.id),a.labelId&&o.attr("id",a.labelId),i.Z(a,"width")&&(d.width=a.width),i.Z(a,"height")&&(d.height=a.height),d.width+=a.paddingLeft+a.paddingRight,d.height+=a.paddingTop+a.paddingBottom,o.attr("transform","translate("+(a.paddingLeft-a.paddingRight)/2+","+(a.paddingTop-a.paddingBottom)/2+")");var p=r.Ys(this);p.select(".label-container").remove();var f=u(p,d,a).classed("label-container",!0);l.bg(f,a.style);var m=f.node().getBBox();a.width=m.width,a.height=m.height})),a=o.exit?o.exit():o.selectAll(null),l.WR(a,e).style("opacity",0).remove(),o};function _(t,e,n,r){var i=t.x,a=t.y,s=i-r.x,o=a-r.y,l=Math.sqrt(e*e*o*o+n*n*s*s),c=Math.abs(e*n*s/l);r.x<i&&(c=-c);var u=Math.abs(e*n*o/l);return r.y<a&&(u=-u),{x:i+c,y:a+u}}var k=n(3352),T=n(2930),w={rect:function(t,e,n){var r=t.insert("rect",":first-child").attr("rx",n.rx).attr("ry",n.ry).attr("x",-e.width/2).attr("y",-e.height/2).attr("width",e.width).attr("height",e.height);return n.intersect=function(t){return(0,T.q)(n,t)},r},ellipse:function(t,e,n){var r=e.width/2,i=e.height/2,a=t.insert("ellipse",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("rx",r).attr("ry",i);return n.intersect=function(t){return _(n,r,i,t)},a},circle:function(t,e,n){var r=Math.max(e.width,e.height)/2,i=t.insert("circle",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("r",r);return n.intersect=function(t){return function(t,e,n){return _(t,e,e,n)}(n,r,t)},i},diamond:function(t,e,n){var r=e.width*Math.SQRT2/2,i=e.height*Math.SQRT2/2,a=[{x:0,y:-i},{x:-r,y:0},{x:0,y:i},{x:r,y:0}],s=t.insert("polygon",":first-child").attr("points",a.map((function(t){return t.x+","+t.y})).join(" "));return n.intersect=function(t){return(0,k.A)(n,a,t)},s}};function S(){var t=function(t,e){!function(t){t.nodes().forEach((function(e){var n=t.node(e);i.Z(n,"label")||t.children(e).length||(n.label=e),i.Z(n,"paddingX")&&a.Z(n,{paddingLeft:n.paddingX,paddingRight:n.paddingX}),i.Z(n,"paddingY")&&a.Z(n,{paddingTop:n.paddingY,paddingBottom:n.paddingY}),i.Z(n,"padding")&&a.Z(n,{paddingLeft:n.padding,paddingRight:n.padding,paddingTop:n.padding,paddingBottom:n.padding}),a.Z(n,E),s.Z(["paddingLeft","paddingRight","paddingTop","paddingBottom"],(function(t){n[t]=Number(n[t])})),i.Z(n,"width")&&(n._prevWidth=n.width),i.Z(n,"height")&&(n._prevHeight=n.height)})),t.edges().forEach((function(e){var n=t.edge(e);i.Z(n,"label")||(n.label=""),a.Z(n,C)}))}(e);var n=D(t,"output"),u=D(n,"clusters"),h=D(n,"edgePaths"),f=p(D(n,"edgeLabels"),e),m=v(D(n,"nodes"),e,w);(0,o.bK)(e),function(t,e){function n(t){var n=e.node(t);return"translate("+n.x+","+n.y+")"}t.filter((function(){return!r.Ys(this).classed("update")})).attr("transform",n),l.WR(t,e).style("opacity",1).attr("transform",n)}(m,e),function(t,e){function n(t){var n=e.edge(t);return i.Z(n,"x")?"translate("+n.x+","+n.y+")":""}t.filter((function(){return!r.Ys(this).classed("update")})).attr("transform",n),l.WR(t,e).style("opacity",1).attr("transform",n)}(f,e),y(h,e,c),function(t,e){var n=t.filter((function(){return!r.Ys(this).classed("update")}));function i(t){var n=e.node(t);return"translate("+n.x+","+n.y+")"}n.attr("transform",i),l.WR(t,e).style("opacity",1).attr("transform",i),l.WR(n.selectAll("rect"),e).attr("width",(function(t){return e.node(t).width})).attr("height",(function(t){return e.node(t).height})).attr("x",(function(t){return-e.node(t).width/2})).attr("y",(function(t){return-e.node(t).height/2}))}(d(u,e),e),function(t){s.Z(t.nodes(),(function(e){var n=t.node(e);i.Z(n,"_prevWidth")?n.width=n._prevWidth:delete n.width,i.Z(n,"_prevHeight")?n.height=n._prevHeight:delete n.height,delete n._prevWidth,delete n._prevHeight}))}(e)};return t.createNodes=function(e){return arguments.length?(function(t){v=t}(e),t):v},t.createClusters=function(e){return arguments.length?(function(t){d=t}(e),t):d},t.createEdgeLabels=function(e){return arguments.length?(function(t){p=t}(e),t):p},t.createEdgePaths=function(e){return arguments.length?(function(t){y=t}(e),t):y},t.shapes=function(e){return arguments.length?(function(t){w=t}(e),t):w},t.arrows=function(e){return arguments.length?(function(t){c=t}(e),t):c},t}var E={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},C={arrowhead:"normal",curve:r.c_6};function D(t,e){var n=t.select("g."+e);return n.empty()&&(n=t.append("g").attr("class",e)),n}n(5625)},1883:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r=n(1691),i=n(2142);const a=class{constructor(){this.type=i.w.ALL}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=i.w.ALL}is(t){return this.type===t}};const s=new class{constructor(t,e){this.color=e,this.changed=!1,this.data=t,this.type=new a}set(t,e){return this.color=e,this.changed=!1,this.data=t,this.type.type=i.w.ALL,this}_ensureHSL(){const t=this.data,{h:e,s:n,l:i}=t;void 0===e&&(t.h=r.Z.channel.rgb2hsl(t,"h")),void 0===n&&(t.s=r.Z.channel.rgb2hsl(t,"s")),void 0===i&&(t.l=r.Z.channel.rgb2hsl(t,"l"))}_ensureRGB(){const t=this.data,{r:e,g:n,b:i}=t;void 0===e&&(t.r=r.Z.channel.hsl2rgb(t,"r")),void 0===n&&(t.g=r.Z.channel.hsl2rgb(t,"g")),void 0===i&&(t.b=r.Z.channel.hsl2rgb(t,"b"))}get r(){const t=this.data,e=t.r;return this.type.is(i.w.HSL)||void 0===e?(this._ensureHSL(),r.Z.channel.hsl2rgb(t,"r")):e}get g(){const t=this.data,e=t.g;return this.type.is(i.w.HSL)||void 0===e?(this._ensureHSL(),r.Z.channel.hsl2rgb(t,"g")):e}get b(){const t=this.data,e=t.b;return this.type.is(i.w.HSL)||void 0===e?(this._ensureHSL(),r.Z.channel.hsl2rgb(t,"b")):e}get h(){const t=this.data,e=t.h;return this.type.is(i.w.RGB)||void 0===e?(this._ensureRGB(),r.Z.channel.rgb2hsl(t,"h")):e}get s(){const t=this.data,e=t.s;return this.type.is(i.w.RGB)||void 0===e?(this._ensureRGB(),r.Z.channel.rgb2hsl(t,"s")):e}get l(){const t=this.data,e=t.l;return this.type.is(i.w.RGB)||void 0===e?(this._ensureRGB(),r.Z.channel.rgb2hsl(t,"l")):e}get a(){return this.data.a}set r(t){this.type.set(i.w.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(i.w.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(i.w.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(i.w.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(i.w.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(i.w.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}}({r:0,g:0,b:0,a:0},"transparent")},1610:(t,e,n)=>{"use strict";n.d(e,{Z:()=>m});var r=n(1883),i=n(2142);const a={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:t=>{if(35!==t.charCodeAt(0))return;const e=t.match(a.re);if(!e)return;const n=e[1],i=parseInt(n,16),s=n.length,o=s%4==0,l=s>4,c=l?1:17,u=l?8:4,h=o?0:-1,d=l?255:15;return r.Z.set({r:(i>>u*(h+3)&d)*c,g:(i>>u*(h+2)&d)*c,b:(i>>u*(h+1)&d)*c,a:o?(i&d)*c/255:1},t)},stringify:t=>{const{r:e,g:n,b:r,a:a}=t;return a<1?`#${i.Q[Math.round(e)]}${i.Q[Math.round(n)]}${i.Q[Math.round(r)]}${i.Q[Math.round(255*a)]}`:`#${i.Q[Math.round(e)]}${i.Q[Math.round(n)]}${i.Q[Math.round(r)]}`}},s=a;var o=n(1691);const l={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:t=>{const e=t.match(l.hueRe);if(e){const[,t,n]=e;switch(n){case"grad":return o.Z.channel.clamp.h(.9*parseFloat(t));case"rad":return o.Z.channel.clamp.h(180*parseFloat(t)/Math.PI);case"turn":return o.Z.channel.clamp.h(360*parseFloat(t))}}return o.Z.channel.clamp.h(parseFloat(t))},parse:t=>{const e=t.charCodeAt(0);if(104!==e&&72!==e)return;const n=t.match(l.re);if(!n)return;const[,i,a,s,c,u]=n;return r.Z.set({h:l._hue2deg(i),s:o.Z.channel.clamp.s(parseFloat(a)),l:o.Z.channel.clamp.l(parseFloat(s)),a:c?o.Z.channel.clamp.a(u?parseFloat(c)/100:parseFloat(c)):1},t)},stringify:t=>{const{h:e,s:n,l:r,a:i}=t;return i<1?`hsla(${o.Z.lang.round(e)}, ${o.Z.lang.round(n)}%, ${o.Z.lang.round(r)}%, ${i})`:`hsl(${o.Z.lang.round(e)}, ${o.Z.lang.round(n)}%, ${o.Z.lang.round(r)}%)`}},c=l,u={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:t=>{t=t.toLowerCase();const e=u.colors[t];if(e)return s.parse(e)},stringify:t=>{const e=s.stringify(t);for(const n in u.colors)if(u.colors[n]===e)return n}},h=u,d={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:t=>{const e=t.charCodeAt(0);if(114!==e&&82!==e)return;const n=t.match(d.re);if(!n)return;const[,i,a,s,l,c,u,h,p]=n;return r.Z.set({r:o.Z.channel.clamp.r(a?2.55*parseFloat(i):parseFloat(i)),g:o.Z.channel.clamp.g(l?2.55*parseFloat(s):parseFloat(s)),b:o.Z.channel.clamp.b(u?2.55*parseFloat(c):parseFloat(c)),a:h?o.Z.channel.clamp.a(p?parseFloat(h)/100:parseFloat(h)):1},t)},stringify:t=>{const{r:e,g:n,b:r,a:i}=t;return i<1?`rgba(${o.Z.lang.round(e)}, ${o.Z.lang.round(n)}, ${o.Z.lang.round(r)}, ${o.Z.lang.round(i)})`:`rgb(${o.Z.lang.round(e)}, ${o.Z.lang.round(n)}, ${o.Z.lang.round(r)})`}},p=d,f={format:{keyword:u,hex:s,rgb:d,rgba:d,hsl:l,hsla:l},parse:t=>{if("string"!=typeof t)return t;const e=s.parse(t)||p.parse(t)||c.parse(t)||h.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},stringify:t=>!t.changed&&t.color?t.color:t.type.is(i.w.HSL)||void 0===t.data.r?c.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?p.stringify(t):s.stringify(t)},m=f},2142:(t,e,n)=>{"use strict";n.d(e,{Q:()=>i,w:()=>a});var r=n(1691);const i={};for(let s=0;s<=255;s++)i[s]=r.Z.unit.dec2hex(s);const a={ALL:0,RGB:1,HSL:2}},1506:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(1691),i=n(1610);const a=(t,e,n)=>{const a=i.Z.parse(t),s=a[e],o=r.Z.channel.clamp[e](s+n);return s!==o&&(a[e]=o),i.Z.stringify(a)}},7201:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(1506);const i=(t,e)=>(0,r.Z)(t,"l",-e)},5920:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(1506);const i=(t,e)=>(0,r.Z)(t,"l",e)},1691:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});const r={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:t=>t>=255?255:t<0?0:t,g:t=>t>=255?255:t<0?0:t,b:t=>t>=255?255:t<0?0:t,h:t=>t%360,s:t=>t>=100?100:t<0?0:t,l:t=>t>=100?100:t<0?0:t,a:t=>t>=1?1:t<0?0:t},toLinear:t=>{const e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:(t,e,n)=>(n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t),hsl2rgb:({h:t,s:e,l:n},i)=>{if(!e)return 2.55*n;t/=360,e/=100;const a=(n/=100)<.5?n*(1+e):n+e-n*e,s=2*n-a;switch(i){case"r":return 255*r.hue2rgb(s,a,t+1/3);case"g":return 255*r.hue2rgb(s,a,t);case"b":return 255*r.hue2rgb(s,a,t-1/3)}},rgb2hsl:({r:t,g:e,b:n},r)=>{t/=255,e/=255,n/=255;const i=Math.max(t,e,n),a=Math.min(t,e,n),s=(i+a)/2;if("l"===r)return 100*s;if(i===a)return 0;const o=i-a;if("s"===r)return 100*(s>.5?o/(2-i-a):o/(i+a));switch(i){case t:return 60*((e-n)/o+(e<n?6:0));case e:return 60*((n-t)/o+2);case n:return 60*((t-e)/o+4);default:return-1}}},i={channel:r,lang:{clamp:(t,e,n)=>e>n?Math.min(e,Math.max(n,t)):Math.min(n,Math.max(e,t)),round:t=>Math.round(1e10*t)/1e10},unit:{dec2hex:t=>{const e=Math.round(t).toString(16);return e.length>1?e:`0${e}`}}}},7308:(t,e,n)=>{"use strict";n.d(e,{Z:()=>d});const r=function(){this.__data__=[],this.size=0};var i=n(9651);const a=function(t,e){for(var n=t.length;n--;)if((0,i.Z)(t[n][0],e))return n;return-1};var s=Array.prototype.splice;const o=function(t){var e=this.__data__,n=a(e,t);return!(n<0)&&(n==e.length-1?e.pop():s.call(e,n,1),--this.size,!0)};const l=function(t){var e=this.__data__,n=a(e,t);return n<0?void 0:e[n][1]};const c=function(t){return a(this.__data__,t)>-1};const u=function(t,e){var n=this.__data__,r=a(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this};function h(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}h.prototype.clear=r,h.prototype.delete=o,h.prototype.get=l,h.prototype.has=c,h.prototype.set=u;const d=h},6183:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(2508),i=n(6092);const a=(0,r.Z)(i.Z,"Map")},7834:(t,e,n)=>{"use strict";n.d(e,{Z:()=>T});const r=(0,n(2508).Z)(Object,"create");const i=function(){this.__data__=r?r(null):{},this.size=0};const a=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e};var s=Object.prototype.hasOwnProperty;const o=function(t){var e=this.__data__;if(r){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return s.call(e,t)?e[t]:void 0};var l=Object.prototype.hasOwnProperty;const c=function(t){var e=this.__data__;return r?void 0!==e[t]:l.call(e,t)};const u=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=r&&void 0===e?"__lodash_hash_undefined__":e,this};function h(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}h.prototype.clear=i,h.prototype.delete=a,h.prototype.get=o,h.prototype.has=c,h.prototype.set=u;const d=h;var p=n(7308),f=n(6183);const m=function(){this.size=0,this.__data__={hash:new d,map:new(f.Z||p.Z),string:new d}};const g=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t};const y=function(t,e){var n=t.__data__;return g(e)?n["string"==typeof e?"string":"hash"]:n.map};const b=function(t){var e=y(this,t).delete(t);return this.size-=e?1:0,e};const x=function(t){return y(this,t).get(t)};const v=function(t){return y(this,t).has(t)};const _=function(t,e){var n=y(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this};function k(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}k.prototype.clear=m,k.prototype.delete=b,k.prototype.get=x,k.prototype.has=v,k.prototype.set=_;const T=k},3203:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(2508),i=n(6092);const a=(0,r.Z)(i.Z,"Set")},3001:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(7834);const i=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this};const a=function(t){return this.__data__.has(t)};function s(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new r.Z;++e<n;)this.add(t[e])}s.prototype.add=s.prototype.push=i,s.prototype.has=a;const o=s},1667:(t,e,n)=>{"use strict";n.d(e,{Z:()=>d});var r=n(7308);const i=function(){this.__data__=new r.Z,this.size=0};const a=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n};const s=function(t){return this.__data__.get(t)};const o=function(t){return this.__data__.has(t)};var l=n(6183),c=n(7834);const u=function(t,e){var n=this.__data__;if(n instanceof r.Z){var i=n.__data__;if(!l.Z||i.length<199)return i.push([t,e]),this.size=++n.size,this;n=this.__data__=new c.Z(i)}return n.set(t,e),this.size=n.size,this};function h(t){var e=this.__data__=new r.Z(t);this.size=e.size}h.prototype.clear=i,h.prototype.delete=a,h.prototype.get=s,h.prototype.has=o,h.prototype.set=u;const d=h},7685:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=n(6092).Z.Symbol},7623:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=n(6092).Z.Uint8Array},6579:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}},8774:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e){for(var n=-1,r=null==t?0:t.length,i=0,a=[];++n<r;){var s=t[n];e(s,n,t)&&(a[i++]=s)}return a}},7668:(t,e,n)=>{"use strict";n.d(e,{Z:()=>u});const r=function(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r};var i=n(9169),a=n(7771),s=n(7008),o=n(6009),l=n(8843),c=Object.prototype.hasOwnProperty;const u=function(t,e){var n=(0,a.Z)(t),u=!n&&(0,i.Z)(t),h=!n&&!u&&(0,s.Z)(t),d=!n&&!u&&!h&&(0,l.Z)(t),p=n||u||h||d,f=p?r(t.length,String):[],m=f.length;for(var g in t)!e&&!c.call(t,g)||p&&("length"==g||h&&("offset"==g||"parent"==g)||d&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||(0,o.Z)(g,m))||f.push(g);return f}},4073:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}},8694:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}},2954:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r=n(4752),i=n(9651),a=Object.prototype.hasOwnProperty;const s=function(t,e,n){var s=t[e];a.call(t,e)&&(0,i.Z)(s,n)&&(void 0!==n||e in t)||(0,r.Z)(t,e,n)}},4752:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(7904);const i=function(t,e,n){"__proto__"==e&&r.Z?(0,r.Z)(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}},8451:(t,e,n)=>{"use strict";n.d(e,{Z:()=>J});var r=n(1667),i=n(6579),a=n(2954),s=n(1899),o=n(7179);const l=function(t,e){return t&&(0,s.Z)(e,(0,o.Z)(e),t)};var c=n(2957);const u=function(t,e){return t&&(0,s.Z)(e,(0,c.Z)(e),t)};var h=n(1050),d=n(7215),p=n(5695);const f=function(t,e){return(0,s.Z)(t,(0,p.Z)(t),e)};var m=n(8694),g=n(2513),y=n(532);const b=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)(0,m.Z)(e,(0,p.Z)(t)),t=(0,g.Z)(t);return e}:y.Z;const x=function(t,e){return(0,s.Z)(t,b(t),e)};var v=n(1808),_=n(3327);const k=function(t){return(0,_.Z)(t,c.Z,b)};var T=n(3970),w=Object.prototype.hasOwnProperty;const S=function(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&w.call(t,"index")&&(n.index=t.index,n.input=t.input),n};var E=n(1884);const C=function(t,e){var n=e?(0,E.Z)(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)};var D=/\w*$/;const A=function(t){var e=new t.constructor(t.source,D.exec(t));return e.lastIndex=t.lastIndex,e};var O=n(7685),I=O.Z?O.Z.prototype:void 0,L=I?I.valueOf:void 0;const N=function(t){return L?Object(L.call(t)):{}};var M=n(2701);const F=function(t,e,n){var r=t.constructor;switch(e){case"[object ArrayBuffer]":return(0,E.Z)(t);case"[object Boolean]":case"[object Date]":return new r(+t);case"[object DataView]":return C(t,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return(0,M.Z)(t,n);case"[object Map]":case"[object Set]":return new r;case"[object Number]":case"[object String]":return new r(t);case"[object RegExp]":return A(t);case"[object Symbol]":return N(t)}};var B=n(3658),R=n(7771),$=n(7008),Z=n(8533);const j=function(t){return(0,Z.Z)(t)&&"[object Map]"==(0,T.Z)(t)};var P=n(1162),z=n(8351),Y=z.Z&&z.Z.isMap;const U=Y?(0,P.Z)(Y):j;var W=n(7226);const H=function(t){return(0,Z.Z)(t)&&"[object Set]"==(0,T.Z)(t)};var q=z.Z&&z.Z.isSet;const V=q?(0,P.Z)(q):H;var G="[object Arguments]",X="[object Function]",K="[object Object]",Q={};Q[G]=Q["[object Array]"]=Q["[object ArrayBuffer]"]=Q["[object DataView]"]=Q["[object Boolean]"]=Q["[object Date]"]=Q["[object Float32Array]"]=Q["[object Float64Array]"]=Q["[object Int8Array]"]=Q["[object Int16Array]"]=Q["[object Int32Array]"]=Q["[object Map]"]=Q["[object Number]"]=Q[K]=Q["[object RegExp]"]=Q["[object Set]"]=Q["[object String]"]=Q["[object Symbol]"]=Q["[object Uint8Array]"]=Q["[object Uint8ClampedArray]"]=Q["[object Uint16Array]"]=Q["[object Uint32Array]"]=!0,Q["[object Error]"]=Q[X]=Q["[object WeakMap]"]=!1;const J=function t(e,n,s,p,m,g){var y,b=1&n,_=2&n,w=4&n;if(s&&(y=m?s(e,p,m,g):s(e)),void 0!==y)return y;if(!(0,W.Z)(e))return e;var E=(0,R.Z)(e);if(E){if(y=S(e),!b)return(0,d.Z)(e,y)}else{var C=(0,T.Z)(e),D=C==X||"[object GeneratorFunction]"==C;if((0,$.Z)(e))return(0,h.Z)(e,b);if(C==K||C==G||D&&!m){if(y=_||D?{}:(0,B.Z)(e),!b)return _?x(e,u(y,e)):f(e,l(y,e))}else{if(!Q[C])return m?e:{};y=F(e,C,b)}}g||(g=new r.Z);var A=g.get(e);if(A)return A;g.set(e,y),V(e)?e.forEach((function(r){y.add(t(r,n,s,r,e,g))})):U(e)&&e.forEach((function(r,i){y.set(i,t(r,n,s,i,e,g))}));var O=w?_?k:v.Z:_?c.Z:o.Z,I=E?void 0:O(e);return(0,i.Z)(I||e,(function(r,i){I&&(r=e[i=r]),(0,a.Z)(y,i,t(r,n,s,i,e,g))})),y}},9811:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(2693),i=n(585);const a=function(t,e){return function(n,r){if(null==n)return n;if(!(0,i.Z)(n))return t(n,r);for(var a=n.length,s=e?a:-1,o=Object(n);(e?s--:++s<a)&&!1!==r(o[s],s,o););return n}}(r.Z)},1692:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e,n,r){for(var i=t.length,a=n+(r?1:-1);r?a--:++a<i;)if(e(t[a],a,t))return a;return-1}},626:(t,e,n)=>{"use strict";n.d(e,{Z:()=>c});var r=n(8694),i=n(7685),a=n(9169),s=n(7771),o=i.Z?i.Z.isConcatSpreadable:void 0;const l=function(t){return(0,s.Z)(t)||(0,a.Z)(t)||!!(o&&t&&t[o])};const c=function t(e,n,i,a,s){var o=-1,c=e.length;for(i||(i=l),s||(s=[]);++o<c;){var u=e[o];n>0&&i(u)?n>1?t(u,n-1,i,a,s):(0,r.Z)(s,u):a||(s[s.length]=u)}return s}},1395:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){return function(e,n,r){for(var i=-1,a=Object(e),s=r(e),o=s.length;o--;){var l=s[t?o:++i];if(!1===n(a[l],l,a))break}return e}}()},2693:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(1395),i=n(7179);const a=function(t,e){return t&&(0,r.Z)(t,e,i.Z)}},3317:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(2823),i=n(2281);const a=function(t,e){for(var n=0,a=(e=(0,r.Z)(e,t)).length;null!=t&&n<a;)t=t[(0,i.Z)(e[n++])];return n&&n==a?t:void 0}},3327:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(8694),i=n(7771);const a=function(t,e,n){var a=e(t);return(0,i.Z)(t)?a:(0,r.Z)(a,n(t))}},3589:(t,e,n)=>{"use strict";n.d(e,{Z:()=>d});var r=n(7685),i=Object.prototype,a=i.hasOwnProperty,s=i.toString,o=r.Z?r.Z.toStringTag:void 0;const l=function(t){var e=a.call(t,o),n=t[o];try{t[o]=void 0;var r=!0}catch(l){}var i=s.call(t);return r&&(e?t[o]=n:delete t[o]),i};var c=Object.prototype.toString;const u=function(t){return c.call(t)};var h=r.Z?r.Z.toStringTag:void 0;const d=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":h&&h in Object(t)?l(t):u(t)}},4765:(t,e,n)=>{"use strict";n.d(e,{Z:()=>q});var r=n(1667),i=n(3001);const a=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1};var s=n(9548);const o=function(t,e,n,r,o,l){var c=1&n,u=t.length,h=e.length;if(u!=h&&!(c&&h>u))return!1;var d=l.get(t),p=l.get(e);if(d&&p)return d==e&&p==t;var f=-1,m=!0,g=2&n?new i.Z:void 0;for(l.set(t,e),l.set(e,t);++f<u;){var y=t[f],b=e[f];if(r)var x=c?r(b,y,f,e,t,l):r(y,b,f,t,e,l);if(void 0!==x){if(x)continue;m=!1;break}if(g){if(!a(e,(function(t,e){if(!(0,s.Z)(g,e)&&(y===t||o(y,t,n,r,l)))return g.push(e)}))){m=!1;break}}else if(y!==b&&!o(y,b,n,r,l)){m=!1;break}}return l.delete(t),l.delete(e),m};var l=n(7685),c=n(7623),u=n(9651);const h=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n};var d=n(6545),p=l.Z?l.Z.prototype:void 0,f=p?p.valueOf:void 0;const m=function(t,e,n,r,i,a,s){switch(n){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!a(new c.Z(t),new c.Z(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return(0,u.Z)(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var l=h;case"[object Set]":var p=1&r;if(l||(l=d.Z),t.size!=e.size&&!p)return!1;var m=s.get(t);if(m)return m==e;r|=2,s.set(t,e);var g=o(l(t),l(e),r,i,a,s);return s.delete(t),g;case"[object Symbol]":if(f)return f.call(t)==f.call(e)}return!1};var g=n(1808),y=Object.prototype.hasOwnProperty;const b=function(t,e,n,r,i,a){var s=1&n,o=(0,g.Z)(t),l=o.length;if(l!=(0,g.Z)(e).length&&!s)return!1;for(var c=l;c--;){var u=o[c];if(!(s?u in e:y.call(e,u)))return!1}var h=a.get(t),d=a.get(e);if(h&&d)return h==e&&d==t;var p=!0;a.set(t,e),a.set(e,t);for(var f=s;++c<l;){var m=t[u=o[c]],b=e[u];if(r)var x=s?r(b,m,u,e,t,a):r(m,b,u,t,e,a);if(!(void 0===x?m===b||i(m,b,n,r,a):x)){p=!1;break}f||(f="constructor"==u)}if(p&&!f){var v=t.constructor,_=e.constructor;v==_||!("constructor"in t)||!("constructor"in e)||"function"==typeof v&&v instanceof v&&"function"==typeof _&&_ instanceof _||(p=!1)}return a.delete(t),a.delete(e),p};var x=n(3970),v=n(7771),_=n(7008),k=n(8843),T="[object Arguments]",w="[object Array]",S="[object Object]",E=Object.prototype.hasOwnProperty;const C=function(t,e,n,i,a,s){var l=(0,v.Z)(t),c=(0,v.Z)(e),u=l?w:(0,x.Z)(t),h=c?w:(0,x.Z)(e),d=(u=u==T?S:u)==S,p=(h=h==T?S:h)==S,f=u==h;if(f&&(0,_.Z)(t)){if(!(0,_.Z)(e))return!1;l=!0,d=!1}if(f&&!d)return s||(s=new r.Z),l||(0,k.Z)(t)?o(t,e,n,i,a,s):m(t,e,u,n,i,a,s);if(!(1&n)){var g=d&&E.call(t,"__wrapped__"),y=p&&E.call(e,"__wrapped__");if(g||y){var C=g?t.value():t,D=y?e.value():e;return s||(s=new r.Z),a(C,D,n,i,s)}}return!!f&&(s||(s=new r.Z),b(t,e,n,i,a,s))};var D=n(8533);const A=function t(e,n,r,i,a){return e===n||(null==e||null==n||!(0,D.Z)(e)&&!(0,D.Z)(n)?e!=e&&n!=n:C(e,n,r,i,t,a))};const O=function(t,e,n,i){var a=n.length,s=a,o=!i;if(null==t)return!s;for(t=Object(t);a--;){var l=n[a];if(o&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++a<s;){var c=(l=n[a])[0],u=t[c],h=l[1];if(o&&l[2]){if(void 0===u&&!(c in t))return!1}else{var d=new r.Z;if(i)var p=i(u,h,c,t,e,d);if(!(void 0===p?A(h,u,3,i,d):p))return!1}}return!0};var I=n(7226);const L=function(t){return t==t&&!(0,I.Z)(t)};var N=n(7179);const M=function(t){for(var e=(0,N.Z)(t),n=e.length;n--;){var r=e[n],i=t[r];e[n]=[r,i,L(i)]}return e};const F=function(t,e){return function(n){return null!=n&&(n[t]===e&&(void 0!==e||t in Object(n)))}};const B=function(t){var e=M(t);return 1==e.length&&e[0][2]?F(e[0][0],e[0][1]):function(n){return n===t||O(n,t,e)}};var R=n(3317);const $=function(t,e,n){var r=null==t?void 0:(0,R.Z)(t,e);return void 0===r?n:r};var Z=n(5487),j=n(9365),P=n(2281);const z=function(t,e){return(0,j.Z)(t)&&L(e)?F((0,P.Z)(t),e):function(n){var r=$(n,t);return void 0===r&&r===e?(0,Z.Z)(n,t):A(e,r,3)}};var Y=n(9203),U=n(4193);const W=function(t){return function(e){return(0,R.Z)(e,t)}};const H=function(t){return(0,j.Z)(t)?(0,U.Z)((0,P.Z)(t)):W(t)};const q=function(t){return"function"==typeof t?t:null==t?Y.Z:"object"==typeof t?(0,v.Z)(t)?z(t[0],t[1]):B(t):H(t)}},9473:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r=n(2764);const i=(0,n(1851).Z)(Object.keys,Object);var a=Object.prototype.hasOwnProperty;const s=function(t){if(!(0,r.Z)(t))return i(t);var e=[];for(var n in Object(t))a.call(t,n)&&"constructor"!=n&&e.push(n);return e}},1018:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(9811),i=n(585);const a=function(t,e){var n=-1,a=(0,i.Z)(t)?Array(t.length):[];return(0,r.Z)(t,(function(t,r,i){a[++n]=e(t,r,i)})),a}},4193:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){return function(e){return null==e?void 0:e[t]}}},9581:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r=n(9203),i=n(1211),a=n(7227);const s=function(t,e){return(0,a.Z)((0,i.Z)(t,e,r.Z),t+"")}},1162:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){return function(e){return t(e)}}},9548:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e){return t.has(e)}},8882:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(9203);const i=function(t){return"function"==typeof t?t:r.Z}},2823:(t,e,n)=>{"use strict";n.d(e,{Z:()=>u});var r=n(7771),i=n(9365),a=n(2454);var s=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g;const l=function(t){var e=(0,a.Z)(t,(function(t){return 500===n.size&&n.clear(),t})),n=e.cache;return e}((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(s,(function(t,n,r,i){e.push(r?i.replace(o,"$1"):n||t)})),e}));var c=n(751);const u=function(t,e){return(0,r.Z)(t)?t:(0,i.Z)(t,e)?[t]:l((0,c.Z)(t))}},1884:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(7623);const i=function(t){var e=new t.constructor(t.byteLength);return new r.Z(e).set(new r.Z(t)),e}},1050:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(6092),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,a=i&&"object"==typeof module&&module&&!module.nodeType&&module,s=a&&a.exports===i?r.Z.Buffer:void 0,o=s?s.allocUnsafe:void 0;const l=function(t,e){if(e)return t.slice();var n=t.length,r=o?o(n):new t.constructor(n);return t.copy(r),r}},2701:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(1884);const i=function(t,e){var n=e?(0,r.Z)(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}},7215:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e){var n=-1,r=t.length;for(e||(e=Array(r));++n<r;)e[n]=t[n];return e}},1899:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(2954),i=n(4752);const a=function(t,e,n,a){var s=!n;n||(n={});for(var o=-1,l=e.length;++o<l;){var c=e[o],u=a?a(n[c],t[c],c,n,t):void 0;void 0===u&&(u=t[c]),s?(0,i.Z)(n,c,u):(0,r.Z)(n,c,u)}return n}},7904:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(2508);const i=function(){try{var t=(0,r.Z)(Object,"defineProperty");return t({},"",{}),t}catch(e){}}()},3413:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r="object"==typeof global&&global&&global.Object===Object&&global},1808:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r=n(3327),i=n(5695),a=n(7179);const s=function(t){return(0,r.Z)(t,a.Z,i.Z)}},2508:(t,e,n)=>{"use strict";n.d(e,{Z:()=>b});var r=n(3234);const i=n(6092).Z["__core-js_shared__"];var a,s=(a=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+a:"";const o=function(t){return!!s&&s in t};var l=n(7226),c=n(19),u=/^\[object .+?Constructor\]$/,h=Function.prototype,d=Object.prototype,p=h.toString,f=d.hasOwnProperty,m=RegExp("^"+p.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const g=function(t){return!(!(0,l.Z)(t)||o(t))&&((0,r.Z)(t)?m:u).test((0,c.Z)(t))};const y=function(t,e){return null==t?void 0:t[e]};const b=function(t,e){var n=y(t,e);return g(n)?n:void 0}},2513:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=(0,n(1851).Z)(Object.getPrototypeOf,Object)},5695:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(8774),i=n(532),a=Object.prototype.propertyIsEnumerable,s=Object.getOwnPropertySymbols;const o=s?function(t){return null==t?[]:(t=Object(t),(0,r.Z)(s(t),(function(e){return a.call(t,e)})))}:i.Z},3970:(t,e,n)=>{"use strict";n.d(e,{Z:()=>T});var r=n(2508),i=n(6092);const a=(0,r.Z)(i.Z,"DataView");var s=n(6183);const o=(0,r.Z)(i.Z,"Promise");var l=n(3203);const c=(0,r.Z)(i.Z,"WeakMap");var u=n(3589),h=n(19),d="[object Map]",p="[object Promise]",f="[object Set]",m="[object WeakMap]",g="[object DataView]",y=(0,h.Z)(a),b=(0,h.Z)(s.Z),x=(0,h.Z)(o),v=(0,h.Z)(l.Z),_=(0,h.Z)(c),k=u.Z;(a&&k(new a(new ArrayBuffer(1)))!=g||s.Z&&k(new s.Z)!=d||o&&k(o.resolve())!=p||l.Z&&k(new l.Z)!=f||c&&k(new c)!=m)&&(k=function(t){var e=(0,u.Z)(t),n="[object Object]"==e?t.constructor:void 0,r=n?(0,h.Z)(n):"";if(r)switch(r){case y:return g;case b:return d;case x:return p;case v:return f;case _:return m}return e});const T=k},6174:(t,e,n)=>{"use strict";n.d(e,{Z:()=>c});var r=n(2823),i=n(9169),a=n(7771),s=n(6009),o=n(1656),l=n(2281);const c=function(t,e,n){for(var c=-1,u=(e=(0,r.Z)(e,t)).length,h=!1;++c<u;){var d=(0,l.Z)(e[c]);if(!(h=null!=t&&n(t,d)))break;t=t[d]}return h||++c!=u?h:!!(u=null==t?0:t.length)&&(0,o.Z)(u)&&(0,s.Z)(d,u)&&((0,a.Z)(t)||(0,i.Z)(t))}},3658:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(7226),i=Object.create;const a=function(){function t(){}return function(e){if(!(0,r.Z)(e))return{};if(i)return i(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();var s=n(2513),o=n(2764);const l=function(t){return"function"!=typeof t.constructor||(0,o.Z)(t)?{}:a((0,s.Z)(t))}},6009:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=/^(?:0|[1-9]\d*)$/;const i=function(t,e){var n=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==n||"symbol"!=n&&r.test(t))&&t>-1&&t%1==0&&t<e}},439:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(9651),i=n(585),a=n(6009),s=n(7226);const o=function(t,e,n){if(!(0,s.Z)(n))return!1;var o=typeof e;return!!("number"==o?(0,i.Z)(n)&&(0,a.Z)(e,n.length):"string"==o&&e in n)&&(0,r.Z)(n[e],t)}},9365:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(7771),i=n(2714),a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,s=/^\w*$/;const o=function(t,e){if((0,r.Z)(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!(0,i.Z)(t))||(s.test(t)||!a.test(t)||null!=e&&t in Object(e))}},2764:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=Object.prototype;const i=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||r)}},8351:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(3413),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,a=i&&"object"==typeof module&&module&&!module.nodeType&&module,s=a&&a.exports===i&&r.Z.process;const o=function(){try{var t=a&&a.require&&a.require("util").types;return t||s&&s.binding&&s.binding("util")}catch(e){}}()},1851:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e){return function(n){return t(e(n))}}},1211:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});const r=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)};var i=Math.max;const a=function(t,e,n){return e=i(void 0===e?t.length-1:e,0),function(){for(var a=arguments,s=-1,o=i(a.length-e,0),l=Array(o);++s<o;)l[s]=a[e+s];s=-1;for(var c=Array(e+1);++s<e;)c[s]=a[s];return c[e]=n(l),r(t,this,c)}}},6092:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(3413),i="object"==typeof self&&self&&self.Object===Object&&self;const a=r.Z||i||Function("return this")()},6545:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}},7227:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(2002),i=n(7904),a=n(9203);const s=i.Z?function(t,e){return(0,i.Z)(t,"toString",{configurable:!0,enumerable:!1,value:(0,r.Z)(e),writable:!0})}:a.Z;var o=Date.now;const l=function(t){var e=0,n=0;return function(){var r=o(),i=16-(r-n);if(n=r,i>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(s)},2281:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(2714);const i=function(t){if("string"==typeof t||(0,r.Z)(t))return t;var e=t+"";return"0"==e&&1/t==-Infinity?"-0":e}},19:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=Function.prototype.toString;const i=function(t){if(null!=t){try{return r.call(t)}catch(e){}try{return t+""}catch(e){}}return""}},2002:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){return function(){return t}}},3688:(t,e,n)=>{"use strict";n.d(e,{Z:()=>c});var r=n(9581),i=n(9651),a=n(439),s=n(2957),o=Object.prototype,l=o.hasOwnProperty;const c=(0,r.Z)((function(t,e){t=Object(t);var n=-1,r=e.length,c=r>2?e[2]:void 0;for(c&&(0,a.Z)(e[0],e[1],c)&&(r=1);++n<r;)for(var u=e[n],h=(0,s.Z)(u),d=-1,p=h.length;++d<p;){var f=h[d],m=t[f];(void 0===m||(0,i.Z)(m,o[f])&&!l.call(t,f))&&(t[f]=u[f])}return t}))},9651:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t,e){return t===e||t!=t&&e!=e}},3445:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(8774),i=n(9811);const a=function(t,e){var n=[];return(0,i.Z)(t,(function(t,r,i){e(t,r,i)&&n.push(t)})),n};var s=n(4765),o=n(7771);const l=function(t,e){return((0,o.Z)(t)?r.Z:a)(t,(0,s.Z)(e,3))}},7961:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(626);const i=function(t){return(null==t?0:t.length)?(0,r.Z)(t,1):[]}},870:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(6579),i=n(9811),a=n(8882),s=n(7771);const o=function(t,e){return((0,s.Z)(t)?r.Z:i.Z)(t,(0,a.Z)(e))}},7452:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r=Object.prototype.hasOwnProperty;const i=function(t,e){return null!=t&&r.call(t,e)};var a=n(6174);const s=function(t,e){return null!=t&&(0,a.Z)(t,e,i)}},5487:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});const r=function(t,e){return null!=t&&e in Object(t)};var i=n(6174);const a=function(t,e){return null!=t&&(0,i.Z)(t,e,r)}},9203:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){return t}},9169:(t,e,n)=>{"use strict";n.d(e,{Z:()=>c});var r=n(3589),i=n(8533);const a=function(t){return(0,i.Z)(t)&&"[object Arguments]"==(0,r.Z)(t)};var s=Object.prototype,o=s.hasOwnProperty,l=s.propertyIsEnumerable;const c=a(function(){return arguments}())?a:function(t){return(0,i.Z)(t)&&o.call(t,"callee")&&!l.call(t,"callee")}},7771:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=Array.isArray},585:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(3234),i=n(1656);const a=function(t){return null!=t&&(0,i.Z)(t.length)&&!(0,r.Z)(t)}},836:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(585),i=n(8533);const a=function(t){return(0,i.Z)(t)&&(0,r.Z)(t)}},7008:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(6092);const i=function(){return!1};var a="object"==typeof exports&&exports&&!exports.nodeType&&exports,s=a&&"object"==typeof module&&module&&!module.nodeType&&module,o=s&&s.exports===a?r.Z.Buffer:void 0;const l=(o?o.isBuffer:void 0)||i},9697:(t,e,n)=>{"use strict";n.d(e,{Z:()=>d});var r=n(9473),i=n(3970),a=n(9169),s=n(7771),o=n(585),l=n(7008),c=n(2764),u=n(8843),h=Object.prototype.hasOwnProperty;const d=function(t){if(null==t)return!0;if((0,o.Z)(t)&&((0,s.Z)(t)||"string"==typeof t||"function"==typeof t.splice||(0,l.Z)(t)||(0,u.Z)(t)||(0,a.Z)(t)))return!t.length;var e=(0,i.Z)(t);if("[object Map]"==e||"[object Set]"==e)return!t.size;if((0,c.Z)(t))return!(0,r.Z)(t).length;for(var n in t)if(h.call(t,n))return!1;return!0}},3234:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(3589),i=n(7226);const a=function(t){if(!(0,i.Z)(t))return!1;var e=(0,r.Z)(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},1656:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},7226:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},8533:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){return null!=t&&"object"==typeof t}},7514:(t,e,n)=>{"use strict";n.d(e,{Z:()=>h});var r=n(3589),i=n(2513),a=n(8533),s=Function.prototype,o=Object.prototype,l=s.toString,c=o.hasOwnProperty,u=l.call(Object);const h=function(t){if(!(0,a.Z)(t)||"[object Object]"!=(0,r.Z)(t))return!1;var e=(0,i.Z)(t);if(null===e)return!0;var n=c.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&l.call(n)==u}},2714:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(3589),i=n(8533);const a=function(t){return"symbol"==typeof t||(0,i.Z)(t)&&"[object Symbol]"==(0,r.Z)(t)}},8843:(t,e,n)=>{"use strict";n.d(e,{Z:()=>h});var r=n(3589),i=n(1656),a=n(8533),s={};s["[object Float32Array]"]=s["[object Float64Array]"]=s["[object Int8Array]"]=s["[object Int16Array]"]=s["[object Int32Array]"]=s["[object Uint8Array]"]=s["[object Uint8ClampedArray]"]=s["[object Uint16Array]"]=s["[object Uint32Array]"]=!0,s["[object Arguments]"]=s["[object Array]"]=s["[object ArrayBuffer]"]=s["[object Boolean]"]=s["[object DataView]"]=s["[object Date]"]=s["[object Error]"]=s["[object Function]"]=s["[object Map]"]=s["[object Number]"]=s["[object Object]"]=s["[object RegExp]"]=s["[object Set]"]=s["[object String]"]=s["[object WeakMap]"]=!1;const o=function(t){return(0,a.Z)(t)&&(0,i.Z)(t.length)&&!!s[(0,r.Z)(t)]};var l=n(1162),c=n(8351),u=c.Z&&c.Z.isTypedArray;const h=u?(0,l.Z)(u):o},9360:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(t){return void 0===t}},7179:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r=n(7668),i=n(9473),a=n(585);const s=function(t){return(0,a.Z)(t)?(0,r.Z)(t):(0,i.Z)(t)}},2957:(t,e,n)=>{"use strict";n.d(e,{Z:()=>u});var r=n(7668),i=n(7226),a=n(2764);const s=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e};var o=Object.prototype.hasOwnProperty;const l=function(t){if(!(0,i.Z)(t))return s(t);var e=(0,a.Z)(t),n=[];for(var r in t)("constructor"!=r||!e&&o.call(t,r))&&n.push(r);return n};var c=n(585);const u=function(t){return(0,c.Z)(t)?(0,r.Z)(t,!0):l(t)}},3836:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(4073),i=n(4765),a=n(1018),s=n(7771);const o=function(t,e){return((0,s.Z)(t)?r.Z:a.Z)(t,(0,i.Z)(e,3))}},2454:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(7834);function i(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var s=t.apply(this,r);return n.cache=a.set(i,s)||a,s};return n.cache=new(i.Cache||r.Z),n}i.Cache=r.Z;const a=i},1666:(t,e,n)=>{"use strict";n.d(e,{Z:()=>g});var r=n(3317),i=n(2954),a=n(2823),s=n(6009),o=n(7226),l=n(2281);const c=function(t,e,n,r){if(!(0,o.Z)(t))return t;for(var c=-1,u=(e=(0,a.Z)(e,t)).length,h=u-1,d=t;null!=d&&++c<u;){var p=(0,l.Z)(e[c]),f=n;if("__proto__"===p||"constructor"===p||"prototype"===p)return t;if(c!=h){var m=d[p];void 0===(f=r?r(m,p,d):void 0)&&(f=(0,o.Z)(m)?m:(0,s.Z)(e[c+1])?[]:{})}(0,i.Z)(d,p,f),d=d[p]}return t};const u=function(t,e,n){for(var i=-1,s=e.length,o={};++i<s;){var l=e[i],u=(0,r.Z)(t,l);n(u,l)&&c(o,(0,a.Z)(l,t),u)}return o};var h=n(5487);const d=function(t,e){return u(t,e,(function(e,n){return(0,h.Z)(t,n)}))};var p=n(7961),f=n(1211),m=n(7227);const g=function(t){return(0,m.Z)((0,f.Z)(t,void 0,p.Z),t+"")}((function(t,e){return null==t?{}:d(t,e)}))},4379:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=Math.ceil,i=Math.max;const a=function(t,e,n,a){for(var s=-1,o=i(r((e-t)/(n||1)),0),l=Array(o);o--;)l[a?o:++s]=t,t+=n;return l};var s=n(439),o=n(4099);const l=function(t){return function(e,n,r){return r&&"number"!=typeof r&&(0,s.Z)(e,n,r)&&(n=r=void 0),e=(0,o.Z)(e),void 0===n?(n=e,e=0):n=(0,o.Z)(n),r=void 0===r?e<n?1:-1:(0,o.Z)(r),a(e,n,r,t)}}()},2344:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});const r=function(t,e,n,r){var i=-1,a=null==t?0:t.length;for(r&&a&&(n=t[++i]);++i<a;)n=e(n,t[i],i,t);return n};var i=n(9811),a=n(4765);const s=function(t,e,n,r,i){return i(t,(function(t,i,a){n=r?(r=!1,t):e(n,t,i,a)})),n};var o=n(7771);const l=function(t,e,n){var l=(0,o.Z)(t)?r:s,c=arguments.length<3;return l(t,(0,a.Z)(e,4),n,c,i.Z)}},532:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r=function(){return[]}},4099:(t,e,n)=>{"use strict";n.d(e,{Z:()=>m});var r=/\s/;const i=function(t){for(var e=t.length;e--&&r.test(t.charAt(e)););return e};var a=/^\s+/;const s=function(t){return t?t.slice(0,i(t)+1).replace(a,""):t};var o=n(7226),l=n(2714),c=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,h=/^0o[0-7]+$/i,d=parseInt;const p=function(t){if("number"==typeof t)return t;if((0,l.Z)(t))return NaN;if((0,o.Z)(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=(0,o.Z)(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=s(t);var n=u.test(t);return n||h.test(t)?d(t.slice(2),n?2:8):c.test(t)?NaN:+t};var f=1/0;const m=function(t){return t?(t=p(t))===f||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},751:(t,e,n)=>{"use strict";n.d(e,{Z:()=>u});var r=n(7685),i=n(4073),a=n(7771),s=n(2714),o=r.Z?r.Z.prototype:void 0,l=o?o.toString:void 0;const c=function t(e){if("string"==typeof e)return e;if((0,a.Z)(e))return(0,i.Z)(e,t)+"";if((0,s.Z)(e))return l?l.call(e):"";var n=e+"";return"0"==n&&1/e==-Infinity?"-0":n};const u=function(t){return null==t?"":c(t)}},6749:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var r=n(751),i=0;const a=function(t){var e=++i;return(0,r.Z)(t)+e}},4148:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r=n(4073);const i=function(t,e){return(0,r.Z)(e,(function(e){return t[e]}))};var a=n(7179);const s=function(t){return null==t?[]:i(t,(0,a.Z)(t))}}}]); \ No newline at end of file diff --git a/assets/js/1329.f911dbaf.js.LICENSE.txt b/assets/js/8929.afff4b8b.js.LICENSE.txt similarity index 100% rename from assets/js/1329.f911dbaf.js.LICENSE.txt rename to assets/js/8929.afff4b8b.js.LICENSE.txt diff --git a/assets/js/92188087.1139471b.js b/assets/js/92188087.fe2e4f83.js similarity index 62% rename from assets/js/92188087.1139471b.js rename to assets/js/92188087.fe2e4f83.js index b9f7994f..a3aa4030 100644 --- a/assets/js/92188087.1139471b.js +++ b/assets/js/92188087.fe2e4f83.js @@ -1 +1 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[537],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=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 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 i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=p(n),m=o,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||a;return n?r.createElement(f,i(i({ref:t},c),{},{components:n})):r.createElement(f,i({ref:t},c))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:o,i[1]=s;for(var p=2;p<a;p++)i[p]=n[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},4228:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>p});var r=n(7462),o=(n(7294),n(3905));const a={},i="REST API",s={unversionedId:"extensions/rest",id:"extensions/rest",title:"REST API",description:"The Credo REST API provides simple RESTful endpoints for Credo methods, to allow you stand up an agent for communication over the internet instantly. You simply provide your agent configuration. The REST endpoints allow you to interact with your agent over HTTP and WebSockets.",source:"@site/guides/extensions/rest.md",sourceDirName:"extensions",slug:"/extensions/rest",permalink:"/guides/0.5/extensions/rest",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Extensions",permalink:"/guides/0.5/extensions/"},next:{title:"React Hooks",permalink:"/guides/0.5/extensions/react-hooks"}},l={},p=[{value:"Quick Setup",id:"quick-setup",level:2},{value:"Directly on computer",id:"directly-on-computer",level:3},{value:"Configuration",id:"configuration",level:3}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"rest-api"},"REST API"),(0,o.kt)("p",null,"The Credo REST API provides simple RESTful endpoints for Credo methods, to allow you stand up an agent for communication over the internet instantly. You simply provide your agent configuration. The REST endpoints allow you to interact with your agent over HTTP and WebSockets."),(0,o.kt)("p",null,"The Credo REST API is the most convenient way for self-sovereign identity (SSI) developers to interact with SSI agents."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u2b50 ",(0,o.kt)("strong",{parentName:"li"},"Endpoints")," to create connections, issue credentials, and request proofs."),(0,o.kt)("li",{parentName:"ul"},"\ud83d\udcbb ",(0,o.kt)("strong",{parentName:"li"},"CLI")," that makes it super easy to start an instance of the REST API."),(0,o.kt)("li",{parentName:"ul"},"\ud83c\udf10 ",(0,o.kt)("strong",{parentName:"li"},"Interoperable")," with all major Aries implementations.")),(0,o.kt)("admonition",{type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"The ",(0,o.kt)("inlineCode",{parentName:"p"},"@aries-framework/rest")," package has not been updated to work with the latest version (",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"0.4.x")),") of ",(0,o.kt)("inlineCode",{parentName:"p"},"@aries-framework/core"),". The documentation in this section is for version ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"0.9.x"))," of the ",(0,o.kt)("inlineCode",{parentName:"p"},"@aries-framework/rest")," package, that works with ",(0,o.kt)("inlineCode",{parentName:"p"},"@aries-framework/core")," version ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"0.2.x")),". Extension packages (such as REST API) are versioned separately from the core packages.")),(0,o.kt)("h2",{id:"quick-setup"},"Quick Setup"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"This guide assumes you have followed the install guides for the framework (See ",(0,o.kt)("a",{parentName:"p",href:"../../getting-started/index.md"},"Getting Started")," section) for your platform and a valid ",(0,o.kt)("a",{parentName:"p",href:"https://nodejs.org"},"Node.js")," project setup.")),(0,o.kt)("p",null,"Using the CLI is the easiest way to get started with REST API."),(0,o.kt)("p",null,"You can do this directly on your machine."),(0,o.kt)("h3",{id:"directly-on-computer"},"Directly on computer"),(0,o.kt)("p",null,"After installing and confirming that Libindy is installed, simply run:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-sh"},'npx -p @aries-framework/rest afj-rest start \\\n --label "Credo Rest" \\\n --wallet-id "walletId" \\\n --wallet-key "walletKey" \\\n --endpoint http://localhost:5000 \\\n --admin-port 3000 \\\n --outbound-transport http \\\n --inbound-transport http 5000\n')),(0,o.kt)("p",null,"The REST API provides an OpenAPI schema that can easily be viewed using the SwaggerUI that is provided with the server. The endpoint documentation can be viewed at the ",(0,o.kt)("inlineCode",{parentName:"p"},"/docs")," endpoint (e.g. ",(0,o.kt)("a",{parentName:"p",href:"http://localhost:3000/docs"},"http://localhost:3000/docs"),")."),(0,o.kt)("h3",{id:"configuration"},"Configuration"),(0,o.kt)("p",null,"To find out all available configuration options from the CLI, you can run the CLI command with ",(0,o.kt)("inlineCode",{parentName:"p"},"--help"),". This will print a full list of all available options."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-sh"},"npx -p @aries-framework/rest afj-rest start --help\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[537],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=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 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 i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=p(n),m=o,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||a;return n?r.createElement(f,i(i({ref:t},c),{},{components:n})):r.createElement(f,i({ref:t},c))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:o,i[1]=s;for(var p=2;p<a;p++)i[p]=n[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},4228:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>p});var r=n(7462),o=(n(7294),n(3905));const a={},i="REST API",s={unversionedId:"extensions/rest",id:"extensions/rest",title:"REST API",description:"The Credo REST API provides simple RESTful endpoints for Credo methods, to allow you stand up an agent for communication over the internet instantly. You simply provide your agent configuration. The REST endpoints allow you to interact with your agent over HTTP and WebSockets.",source:"@site/guides/extensions/rest.md",sourceDirName:"extensions",slug:"/extensions/rest",permalink:"/guides/0.5/extensions/rest",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Extensions",permalink:"/guides/0.5/extensions/"},next:{title:"React Hooks",permalink:"/guides/0.5/extensions/react-hooks"}},l={},p=[{value:"Quick Setup",id:"quick-setup",level:2},{value:"Directly on computer",id:"directly-on-computer",level:3},{value:"Configuration",id:"configuration",level:3}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"rest-api"},"REST API"),(0,o.kt)("p",null,"The Credo REST API provides simple RESTful endpoints for Credo methods, to allow you stand up an agent for communication over the internet instantly. You simply provide your agent configuration. The REST endpoints allow you to interact with your agent over HTTP and WebSockets."),(0,o.kt)("p",null,"The Credo REST API is the most convenient way for self-sovereign identity (SSI) developers to interact with SSI agents."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u2b50 ",(0,o.kt)("strong",{parentName:"li"},"Endpoints")," to create connections, issue credentials, and request proofs."),(0,o.kt)("li",{parentName:"ul"},"\ud83d\udcbb ",(0,o.kt)("strong",{parentName:"li"},"CLI")," that makes it super easy to start an instance of the REST API."),(0,o.kt)("li",{parentName:"ul"},"\ud83c\udf10 ",(0,o.kt)("strong",{parentName:"li"},"Interoperable")," with all major Aries implementations.")),(0,o.kt)("admonition",{type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"The ",(0,o.kt)("inlineCode",{parentName:"p"},"@credo-ts/rest")," package has not been updated to work with the latest version (",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"0.4.x")),") of ",(0,o.kt)("inlineCode",{parentName:"p"},"@credo-ts/core"),". The documentation in this section is for version ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"0.9.x"))," of the ",(0,o.kt)("inlineCode",{parentName:"p"},"@credo-ts/rest")," package, that works with ",(0,o.kt)("inlineCode",{parentName:"p"},"@credo-ts/core")," version ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"0.2.x")),". Extension packages (such as REST API) are versioned separately from the core packages.")),(0,o.kt)("h2",{id:"quick-setup"},"Quick Setup"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"This guide assumes you have followed the install guides for the framework (See ",(0,o.kt)("a",{parentName:"p",href:"../../getting-started/index.md"},"Getting Started")," section) for your platform and a valid ",(0,o.kt)("a",{parentName:"p",href:"https://nodejs.org"},"Node.js")," project setup.")),(0,o.kt)("p",null,"Using the CLI is the easiest way to get started with REST API."),(0,o.kt)("p",null,"You can do this directly on your machine."),(0,o.kt)("h3",{id:"directly-on-computer"},"Directly on computer"),(0,o.kt)("p",null,"After installing and confirming that Libindy is installed, simply run:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-sh"},'npx -p @credo-ts/rest credo-rest start \\\n --label "Credo Rest" \\\n --wallet-id "walletId" \\\n --wallet-key "walletKey" \\\n --endpoint http://localhost:5000 \\\n --admin-port 3000 \\\n --outbound-transport http \\\n --inbound-transport http 5000\n')),(0,o.kt)("p",null,"The REST API provides an OpenAPI schema that can easily be viewed using the SwaggerUI that is provided with the server. The endpoint documentation can be viewed at the ",(0,o.kt)("inlineCode",{parentName:"p"},"/docs")," endpoint (e.g. ",(0,o.kt)("a",{parentName:"p",href:"http://localhost:3000/docs"},"http://localhost:3000/docs"),")."),(0,o.kt)("h3",{id:"configuration"},"Configuration"),(0,o.kt)("p",null,"To find out all available configuration options from the CLI, you can run the CLI command with ",(0,o.kt)("inlineCode",{parentName:"p"},"--help"),". This will print a full list of all available options."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-sh"},"npx -p @credo-ts/rest afj-rest start --help\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.613f1d9b.js b/assets/js/935f2afb.613f1d9b.js deleted file mode 100644 index 3d1d6338..00000000 --- a/assets/js/935f2afb.613f1d9b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"v0.5.x","banner":"unreleased","badge":true,"noIndex":false,"className":"docs-version-current","isLast":false,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Intro","href":"/guides/0.5/","docId":"index"},{"type":"category","label":"Getting started","items":[{"type":"link","label":"Prerequisites","href":"/guides/0.5/getting-started/prerequisites","docId":"getting-started/prerequisites"},{"type":"category","label":"Agent Setup","items":[{"type":"link","label":"Aries Askar","href":"/guides/0.5/getting-started/set-up/aries-askar","docId":"getting-started/set-up/aries-askar"},{"type":"category","label":"Indy SDK","items":[{"type":"link","label":"Linux","href":"/guides/0.5/getting-started/set-up/indy-sdk/linux","docId":"getting-started/set-up/indy-sdk/linux"},{"type":"link","label":"Windows","href":"/guides/0.5/getting-started/set-up/indy-sdk/windows","docId":"getting-started/set-up/indy-sdk/windows"},{"type":"link","label":"macOS (Intel)","href":"/guides/0.5/getting-started/set-up/indy-sdk/macos-intel","docId":"getting-started/set-up/indy-sdk/macos-intel"},{"type":"link","label":"macOS (ARM)","href":"/guides/0.5/getting-started/set-up/indy-sdk/macos-arm","docId":"getting-started/set-up/indy-sdk/macos-arm"},{"type":"link","label":"React Native","href":"/guides/0.5/getting-started/set-up/indy-sdk/react-native","docId":"getting-started/set-up/indy-sdk/react-native"}],"collapsed":true,"collapsible":true,"href":"/guides/0.5/getting-started/set-up/indy-sdk/"},{"type":"link","label":"AnonCreds RS","href":"/guides/0.5/getting-started/set-up/anoncreds-rs","docId":"getting-started/set-up/anoncreds-rs"},{"type":"link","label":"Indy VDR","href":"/guides/0.5/getting-started/set-up/indy-vdr","docId":"getting-started/set-up/indy-vdr"},{"type":"link","label":"cheqd","href":"/guides/0.5/getting-started/set-up/cheqd/","docId":"getting-started/set-up/cheqd/index"}],"collapsed":true,"collapsible":true,"href":"/guides/0.5/getting-started/set-up/"}],"collapsed":true,"collapsible":true,"href":"/guides/0.5/getting-started/"},{"type":"category","label":"Concepts","items":[{"type":"link","label":"Agents","href":"/guides/0.5/concepts/agents","docId":"concepts/agents"},{"type":"link","label":"DIDs and DIDComm","href":"/guides/0.5/concepts/did-and-didcomm","docId":"concepts/did-and-didcomm"},{"type":"link","label":"Platform and Environment","href":"/guides/0.5/concepts/platform-and-environment","docId":"concepts/platform-and-environment"}],"collapsed":true,"collapsible":true,"href":"/guides/0.5/concepts/"},{"type":"category","label":"Tutorials","items":[{"type":"category","label":"Agent Config","items":[{"type":"link","label":"Logging","href":"/guides/0.5/tutorials/agent-config/logging","docId":"tutorials/agent-config/logging"}],"collapsed":true,"collapsible":true,"href":"/guides/0.5/tutorials/agent-config/"},{"type":"link","label":"Create a connection","href":"/guides/0.5/tutorials/create-a-connection","docId":"tutorials/create-a-connection"},{"type":"link","label":"Cheqd Did Module","href":"/guides/0.5/tutorials/cheqd/","docId":"tutorials/cheqd/index"},{"type":"link","label":"Registering a schema and credential definition on an AnonCreds Registry","href":"/guides/0.5/tutorials/registering-schema-and-credential-definition","docId":"tutorials/registering-schema-and-credential-definition"},{"type":"link","label":"Issue a credential","href":"/guides/0.5/tutorials/issue-a-credential","docId":"tutorials/issue-a-credential"},{"type":"link","label":"Mediation","href":"/guides/0.5/tutorials/mediation","docId":"tutorials/mediation"},{"type":"category","label":"Using PostgreSQL with the Indy SDK","items":[{"type":"link","label":"Postgres Setup for Linux","href":"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/linux","docId":"tutorials/indy-sdk-postgres-database-nodejs/linux"},{"type":"link","label":"Postgres Setup for macOS","href":"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/macos","docId":"tutorials/indy-sdk-postgres-database-nodejs/macos"},{"type":"link","label":"Postgres Setup for windows","href":"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/windows","docId":"tutorials/indy-sdk-postgres-database-nodejs/windows"}],"collapsed":true,"collapsible":true,"href":"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/"}],"collapsed":true,"collapsible":true,"href":"/guides/0.5/tutorials/"},{"type":"category","label":"Updating","items":[{"type":"link","label":"Update Assistant","href":"/guides/0.5/updating/update-assistant","docId":"updating/update-assistant"},{"type":"link","label":"Migrating from an Indy SDK Wallet to Aries Askar","href":"/guides/0.5/updating/update-indy-sdk-to-askar","docId":"updating/update-indy-sdk-to-askar"},{"type":"link","label":"Migrating from Credo 0.1.0 to 0.2.x","href":"/guides/0.5/updating/versions/0.1-to-0.2","docId":"updating/versions/0.1-to-0.2"},{"type":"link","label":"Migrating from Credo 0.2.x to 0.3.x","href":"/guides/0.5/updating/versions/0.2-to-0.3","docId":"updating/versions/0.2-to-0.3"},{"type":"link","label":"Migrating from Credo 0.3.x to 0.4.x","href":"/guides/0.5/updating/versions/0.3-to-0.4","docId":"updating/versions/0.3-to-0.4"}],"collapsed":true,"collapsible":true,"href":"/guides/0.5/updating/"},{"type":"link","label":"The Credo Ecosystem","href":"/guides/0.5/ecosystem/","docId":"ecosystem/index"},{"type":"category","label":"Extensions","items":[{"type":"link","label":"REST API","href":"/guides/0.5/extensions/rest","docId":"extensions/rest"},{"type":"link","label":"React Hooks","href":"/guides/0.5/extensions/react-hooks","docId":"extensions/react-hooks"},{"type":"link","label":"Redux Store","href":"/guides/0.5/extensions/redux-store","docId":"extensions/redux-store"},{"type":"link","label":"Push Notifications","href":"/guides/0.5/extensions/push-notifications","docId":"extensions/push-notifications"}],"collapsed":true,"collapsible":true,"href":"/guides/0.5/extensions/"}]},"docs":{"concepts/agents":{"id":"concepts/agents","title":"Agents","description":"When working with any Credo implementation, you will interact with an Credo","sidebar":"tutorialSidebar"},"concepts/did-and-didcomm":{"id":"concepts/did-and-didcomm","title":"DIDs and DIDComm","description":"DIDs","sidebar":"tutorialSidebar"},"concepts/index":{"id":"concepts/index","title":"Concepts","description":"In this section we will discuss the general concepts that are used inside the","sidebar":"tutorialSidebar"},"concepts/platform-and-environment":{"id":"concepts/platform-and-environment","title":"Platform and Environment","description":"Credo is developed to support a Node.JS and React Native environment. With this it is entirely possible to build an entire SSI ecosystem with Credo. This would use Node.JS as an issuer as a verifier, and uses React Native as a holder.","sidebar":"tutorialSidebar"},"ecosystem/index":{"id":"ecosystem/index","title":"The Credo Ecosystem","description":"The Credo ecosystem includes various components that are spread across multiple repositories. In this section we\'ll go over what these components are and how the relate to one another.","sidebar":"tutorialSidebar"},"extensions/index":{"id":"extensions/index","title":"Extensions","description":"Credo Extensions is an extensions repository to Credo. It hosts libraries built on top of Credo that don\'t necessarily belong to the core of the project.","sidebar":"tutorialSidebar"},"extensions/push-notifications":{"id":"extensions/push-notifications","title":"Push Notifications","description":"The Push Notifications plugin package provides a way for you to register your APNs and Firebase push notification token at an agent, allowing you to use push notifications directly from Credo.","sidebar":"tutorialSidebar"},"extensions/react-hooks":{"id":"extensions/react-hooks","title":"React Hooks","description":"The React Hooks package exposes useful React hooks that allow you to easily interact with Credo from a React client application.","sidebar":"tutorialSidebar"},"extensions/redux-store":{"id":"extensions/redux-store","title":"Redux Store","description":"The Redux Store is an implementation of state management that can be used to build React & React Native SSI clients using Credo.","sidebar":"tutorialSidebar"},"extensions/rest":{"id":"extensions/rest","title":"REST API","description":"The Credo REST API provides simple RESTful endpoints for Credo methods, to allow you stand up an agent for communication over the internet instantly. You simply provide your agent configuration. The REST endpoints allow you to interact with your agent over HTTP and WebSockets.","sidebar":"tutorialSidebar"},"getting-started/index":{"id":"getting-started/index","title":"Getting started","description":"In this section we will go over everything you need to get started on a technical level. First there are some general prerequisites for Node.JS and React Native. Credo works for creating both server-side applications (commonly but not always for creating issuer and verifier agents) and mobile applications (commonly holder agents).","sidebar":"tutorialSidebar"},"getting-started/prerequisites":{"id":"getting-started/prerequisites","title":"Prerequisites","description":"To work with Credo we need to install some dependencies and set-up our Node.JS environment. Even when creating a mobile app in React Native, we need Node.JS installed. We will go over the specific installation process for each platform. Go ahead and pick your system of choice to get started!","sidebar":"tutorialSidebar"},"getting-started/set-up/anoncreds-rs":{"id":"getting-started/set-up/anoncreds-rs","title":"AnonCreds RS","description":"AnonCreds RS is a direct implementation of the AnonCreds V1.0 specification that provides functionality like; creating a schema object, creating a credential definition object, creating a credential, verifying a proof presentation and much more.","sidebar":"tutorialSidebar"},"getting-started/set-up/aries-askar":{"id":"getting-started/set-up/aries-askar","title":"Aries Askar","description":"Aries Askar provides secure, encrypted storage and cryptographic support for encrypting, decrypting, signing and verifying data. It also provides both the Wallet and StorageService implementations for the agent.","sidebar":"tutorialSidebar"},"getting-started/set-up/cheqd/index":{"id":"getting-started/set-up/cheqd/index","title":"cheqd","description":"cheqd is a blockchain network, built in the Cosmos ecosystem for Self-Sovereign Identity (SSI). The cheqd Network leverages the cheqd DID method and enables DID-Linked Resources to be written to the network, associated with a DID and controlled using the verification methods in the DID Document.","sidebar":"tutorialSidebar"},"getting-started/set-up/index":{"id":"getting-started/set-up/index","title":"Agent Setup","description":"This guide assumes you have followed the Prerequisites, and you have a valid","sidebar":"tutorialSidebar"},"getting-started/set-up/indy-sdk/index":{"id":"getting-started/set-up/indy-sdk/index","title":"Indy SDK","description":"Indy SDK provides a distributed ledger based foundation for self-sovereign identity. It can provide the Wallet and StorageService implementations for the agent, as well as a way to interact with Indy ledgers and an implementation of the legacy (v0.1) AnonCreds Specification","sidebar":"tutorialSidebar"},"getting-started/set-up/indy-sdk/linux":{"id":"getting-started/set-up/indy-sdk/linux","title":"Linux","description":"To install Indy SDK on Linux, a couple of dependencies are required. This guide covers the installation for the more popular Linux distributions.","sidebar":"tutorialSidebar"},"getting-started/set-up/indy-sdk/macos-arm":{"id":"getting-started/set-up/indy-sdk/macos-arm","title":"macOS (ARM)","description":"To install Indy SDK on macOS, a couple of dependencies are required. This guide covers the installation of the Indy SDK for macs with an ARM processor. For installing the Indy SDK on Intel based macs, please refer to the Indy SDK macOS (Intel) guide.","sidebar":"tutorialSidebar"},"getting-started/set-up/indy-sdk/macos-intel":{"id":"getting-started/set-up/indy-sdk/macos-intel","title":"macOS (Intel)","description":"To install Indy SDK on macOS a couple of dependencies are required. This guide covers the installation of the Indy SDK for macs with an Intel processor. For installing the Indy SDK on ARM based macs, please refer to the Indy SDK macOS (ARM) guide.","sidebar":"tutorialSidebar"},"getting-started/set-up/indy-sdk/react-native":{"id":"getting-started/set-up/indy-sdk/react-native","title":"React Native","description":"The setup of Indy SDK for React Native is rather different than Node.JS. We do not have to install dependencies on the host-platform, but for the build target. For React Native this would be the Indy SDK for Android & iOS. This guide covers both the Android and iOS setup, as in most React Native projects you will need both.","sidebar":"tutorialSidebar"},"getting-started/set-up/indy-sdk/windows":{"id":"getting-started/set-up/indy-sdk/windows","title":"Windows","description":"To install Indy SDK on Windows, you can download the pre-built binary from the Sovrin repository.","sidebar":"tutorialSidebar"},"getting-started/set-up/indy-vdr":{"id":"getting-started/set-up/indy-vdr","title":"Indy VDR","description":"Hyperledger Indy VDR, Verifiable Data Registry, can be used to connect to one or more Indy Node ledger pools given sets of genesis transactions. Methods are provided to construct ledger requests and send them to the validators, collecting the results and ensuring that there is a consensus between the nodes. In the context of Credo, we mainly leverage it to register, and resolve, schemas, credential definitions and DIDs.","sidebar":"tutorialSidebar"},"index":{"id":"index","title":"Intro","description":"Welcome, to the Credo community!","sidebar":"tutorialSidebar"},"tutorials/agent-config/index":{"id":"tutorials/agent-config/index","title":"Agent Config","description":"The Credo agent is very extensible. These are all the configuration options with a short description:","sidebar":"tutorialSidebar"},"tutorials/agent-config/logging":{"id":"tutorials/agent-config/logging","title":"Logging","description":"Using the Default ConsoleLogger","sidebar":"tutorialSidebar"},"tutorials/cheqd/index":{"id":"tutorials/cheqd/index","title":"Cheqd Did Module","description":"In this tutorial we will see how to use the cheqd modules in detail","sidebar":"tutorialSidebar"},"tutorials/create-a-connection":{"id":"tutorials/create-a-connection","title":"Create a connection","description":"In this tutorial we will create a connection as Acme Corp with Bob. We will","sidebar":"tutorialSidebar"},"tutorials/index":{"id":"tutorials/index","title":"Tutorials","description":"In this section we will explain some features that everyone will use. This","sidebar":"tutorialSidebar"},"tutorials/indy-sdk-postgres-database-nodejs/index":{"id":"tutorials/indy-sdk-postgres-database-nodejs/index","title":"Using PostgreSQL as Database for Indy SDK in Node.js","description":"By default the Indy SDK will use an SQLite database for storage. In mobile environments this is sufficient and allows us to keep storage local to the device, but in server environments we oftentimes want a more scalable storage solution. By leveraging the PostgreSQL plugin for Indy SDK we can use PostgreSQL as a storage solution instead of SQLite.","sidebar":"tutorialSidebar"},"tutorials/indy-sdk-postgres-database-nodejs/linux":{"id":"tutorials/indy-sdk-postgres-database-nodejs/linux","title":"Postgres Setup for Linux","description":"Prerequisites","sidebar":"tutorialSidebar"},"tutorials/indy-sdk-postgres-database-nodejs/macos":{"id":"tutorials/indy-sdk-postgres-database-nodejs/macos","title":"Postgres Setup for macOS","description":"Prerequisites","sidebar":"tutorialSidebar"},"tutorials/indy-sdk-postgres-database-nodejs/windows":{"id":"tutorials/indy-sdk-postgres-database-nodejs/windows","title":"Postgres Setup for windows","description":"Build Environment Prerequisites","sidebar":"tutorialSidebar"},"tutorials/issue-a-credential":{"id":"tutorials/issue-a-credential","title":"Issue a credential","description":"In this tutorial we will issue a credential from the Issuer to a Holder. We will start with setting up both their agents with the minimal configuration required to follow this tutorial. It is assumed that there is a connection between the Issuer and the Holder and the Issuer also has a registered schema and credential definition. After initializing the Issuer will send a credential to the holder, and will then accept this credential and automatically store it in their wallet.","sidebar":"tutorialSidebar"},"tutorials/mediation":{"id":"tutorials/mediation","title":"Mediation","description":"This section assumes that you have:","sidebar":"tutorialSidebar"},"tutorials/registering-schema-and-credential-definition":{"id":"tutorials/registering-schema-and-credential-definition","title":"Registering a schema and credential definition on an AnonCreds Registry","description":"In this tutorial we will register a schema and credential definition on an AnonCredsRegistry e.g. Hyperledger Indy ledger indy-vdr, cheqd.","sidebar":"tutorialSidebar"},"updating/index":{"id":"updating/index","title":"Updating Credo","description":"This section will cover everything you need to know about updating Credo to a newer version.","sidebar":"tutorialSidebar"},"updating/update-assistant":{"id":"updating/update-assistant","title":"Update Assistant","description":"The Update Assistant helps you update the storage objects from Credo to newer versions. This documents describes the different ways you can leverage the Update Assistant from fully managed to more manual approaches.","sidebar":"tutorialSidebar"},"updating/update-indy-sdk-to-askar":{"id":"updating/update-indy-sdk-to-askar","title":"Migrating from an Indy SDK Wallet to Aries Askar","description":"This documentation explains the process of migrating your Indy SDK wallet to Aries Askar.","sidebar":"tutorialSidebar"},"updating/versions/0.1-to-0.2":{"id":"updating/versions/0.1-to-0.2","title":"Migrating from Credo 0.1.0 to 0.2.x","description":"This document describes everything you need to know for updating Credo 0.1.0 to 0.2.x. If you\'re not aware of how updating in Credo works make sure to first read the guide on Updating Credo.","sidebar":"tutorialSidebar"},"updating/versions/0.2-to-0.3":{"id":"updating/versions/0.2-to-0.3","title":"Migrating from Credo 0.2.x to 0.3.x","description":"This document describes everything you need to know for updating Credo 0.2.x to 0.3.x. If you\'re not aware of how updating in Credo works make sure to first read the guide on Updating Credo.","sidebar":"tutorialSidebar"},"updating/versions/0.3-to-0.4":{"id":"updating/versions/0.3-to-0.4","title":"Migrating from Credo 0.3.x to 0.4.x","description":"This document describes everything you need to know for updating Credo 0.3.x to 0.4.x. If you\'re not aware of how updating in Credo works make sure to first read the guide on Updating Credo.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.678d7a53.js b/assets/js/935f2afb.678d7a53.js new file mode 100644 index 00000000..d849bcd5 --- /dev/null +++ b/assets/js/935f2afb.678d7a53.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"v0.5.x","banner":"unreleased","badge":true,"noIndex":false,"className":"docs-version-current","isLast":false,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Intro","href":"/guides/0.5/","docId":"index"},{"type":"category","label":"Getting started","items":[{"type":"link","label":"Prerequisites","href":"/guides/0.5/getting-started/prerequisites","docId":"getting-started/prerequisites"},{"type":"category","label":"Agent Setup","items":[{"type":"link","label":"Aries Askar","href":"/guides/0.5/getting-started/set-up/aries-askar","docId":"getting-started/set-up/aries-askar"},{"type":"link","label":"AnonCreds","href":"/guides/0.5/getting-started/set-up/anoncreds","docId":"getting-started/set-up/anoncreds"},{"type":"link","label":"Indy VDR","href":"/guides/0.5/getting-started/set-up/indy-vdr","docId":"getting-started/set-up/indy-vdr"},{"type":"link","label":"cheqd","href":"/guides/0.5/getting-started/set-up/cheqd/","docId":"getting-started/set-up/cheqd/index"}],"collapsed":true,"collapsible":true,"href":"/guides/0.5/getting-started/set-up/"}],"collapsed":true,"collapsible":true,"href":"/guides/0.5/getting-started/"},{"type":"category","label":"Concepts","items":[{"type":"link","label":"Agents","href":"/guides/0.5/concepts/agents","docId":"concepts/agents"},{"type":"link","label":"DIDs and DIDComm","href":"/guides/0.5/concepts/did-and-didcomm","docId":"concepts/did-and-didcomm"},{"type":"link","label":"Platform and Environment","href":"/guides/0.5/concepts/platform-and-environment","docId":"concepts/platform-and-environment"}],"collapsed":true,"collapsible":true,"href":"/guides/0.5/concepts/"},{"type":"category","label":"Features","items":[{"type":"link","label":"Hyperledger Aries and Aries Interop Profile","href":"/guides/0.5/features/aries","docId":"features/aries"},{"type":"link","label":"OpenID for Verifiable Credentials","href":"/guides/0.5/features/openid4vc","docId":"features/openid4vc"},{"type":"link","label":"Decentralized Identifiers","href":"/guides/0.5/features/dids","docId":"features/dids"},{"type":"link","label":"Verifiable Credentials","href":"/guides/0.5/features/credentials","docId":"features/credentials"}],"collapsed":true,"collapsible":true,"href":"/guides/0.5/features/"},{"type":"category","label":"Tutorials","items":[{"type":"category","label":"Agent Config","items":[{"type":"link","label":"Logging","href":"/guides/0.5/tutorials/agent-config/logging","docId":"tutorials/agent-config/logging"}],"collapsed":true,"collapsible":true,"href":"/guides/0.5/tutorials/agent-config/"},{"type":"link","label":"Create a connection","href":"/guides/0.5/tutorials/create-a-connection","docId":"tutorials/create-a-connection"},{"type":"link","label":"Cheqd Did Module","href":"/guides/0.5/tutorials/cheqd/","docId":"tutorials/cheqd/index"},{"type":"link","label":"Registering a schema and credential definition on an AnonCreds Registry","href":"/guides/0.5/tutorials/registering-schema-and-credential-definition","docId":"tutorials/registering-schema-and-credential-definition"},{"type":"link","label":"Issue a credential","href":"/guides/0.5/tutorials/issue-a-credential","docId":"tutorials/issue-a-credential"},{"type":"link","label":"Mediation","href":"/guides/0.5/tutorials/mediation","docId":"tutorials/mediation"}],"collapsed":true,"collapsible":true,"href":"/guides/0.5/tutorials/"},{"type":"category","label":"Updating","items":[{"type":"link","label":"Update Assistant","href":"/guides/0.5/updating/update-assistant","docId":"updating/update-assistant"},{"type":"link","label":"Migrating from an Indy SDK Wallet to Aries Askar","href":"/guides/0.5/updating/update-indy-sdk-to-askar","docId":"updating/update-indy-sdk-to-askar"},{"type":"link","label":"Migrating from Credo 0.1.0 to 0.2.x","href":"/guides/0.5/updating/versions/0.1-to-0.2","docId":"updating/versions/0.1-to-0.2"},{"type":"link","label":"Migrating from Credo 0.2.x to 0.3.x","href":"/guides/0.5/updating/versions/0.2-to-0.3","docId":"updating/versions/0.2-to-0.3"},{"type":"link","label":"Migrating from Credo 0.3.x to 0.4.x","href":"/guides/0.5/updating/versions/0.3-to-0.4","docId":"updating/versions/0.3-to-0.4"}],"collapsed":true,"collapsible":true,"href":"/guides/0.5/updating/"},{"type":"link","label":"The Credo Ecosystem","href":"/guides/0.5/ecosystem/","docId":"ecosystem/index"},{"type":"category","label":"Extensions","items":[{"type":"link","label":"REST API","href":"/guides/0.5/extensions/rest","docId":"extensions/rest"},{"type":"link","label":"React Hooks","href":"/guides/0.5/extensions/react-hooks","docId":"extensions/react-hooks"},{"type":"link","label":"Redux Store","href":"/guides/0.5/extensions/redux-store","docId":"extensions/redux-store"},{"type":"link","label":"Push Notifications","href":"/guides/0.5/extensions/push-notifications","docId":"extensions/push-notifications"}],"collapsed":true,"collapsible":true,"href":"/guides/0.5/extensions/"}]},"docs":{"concepts/agents":{"id":"concepts/agents","title":"Agents","description":"When working with any Credo implementation, you will interact with an Credo","sidebar":"tutorialSidebar"},"concepts/did-and-didcomm":{"id":"concepts/did-and-didcomm","title":"DIDs and DIDComm","description":"DIDs","sidebar":"tutorialSidebar"},"concepts/index":{"id":"concepts/index","title":"Concepts","description":"In this section we will discuss the general concepts that are used inside the","sidebar":"tutorialSidebar"},"concepts/platform-and-environment":{"id":"concepts/platform-and-environment","title":"Platform and Environment","description":"Credo is developed to support a Node.JS and React Native environment. With this it is entirely possible to build an entire SSI ecosystem with Credo. This would use Node.JS as an issuer as a verifier, and uses React Native as a holder.","sidebar":"tutorialSidebar"},"ecosystem/index":{"id":"ecosystem/index","title":"The Credo Ecosystem","description":"The Credo ecosystem includes various components that are spread across multiple repositories. In this section we\'ll go over what these components are and how the relate to one another.","sidebar":"tutorialSidebar"},"extensions/index":{"id":"extensions/index","title":"Extensions","description":"Credo Extensions is an extensions repository to Credo. It hosts libraries built on top of Credo that don\'t necessarily belong to the core of the project.","sidebar":"tutorialSidebar"},"extensions/push-notifications":{"id":"extensions/push-notifications","title":"Push Notifications","description":"The Push Notifications plugin package provides a way for you to register your APNs and Firebase push notification token at an agent, allowing you to use push notifications directly from Credo.","sidebar":"tutorialSidebar"},"extensions/react-hooks":{"id":"extensions/react-hooks","title":"React Hooks","description":"The React Hooks package exposes useful React hooks that allow you to easily interact with Credo from a React client application.","sidebar":"tutorialSidebar"},"extensions/redux-store":{"id":"extensions/redux-store","title":"Redux Store","description":"The Redux Store is an implementation of state management that can be used to build React & React Native SSI clients using Credo.","sidebar":"tutorialSidebar"},"extensions/rest":{"id":"extensions/rest","title":"REST API","description":"The Credo REST API provides simple RESTful endpoints for Credo methods, to allow you stand up an agent for communication over the internet instantly. You simply provide your agent configuration. The REST endpoints allow you to interact with your agent over HTTP and WebSockets.","sidebar":"tutorialSidebar"},"features/aries":{"id":"features/aries","title":"Hyperledger Aries and Aries Interop Profile","description":"Initially, Credo was built as an Hyperledger Aries framework, focusing on implementing the Aries RFCs and supporting the Aries Interop Profile.","sidebar":"tutorialSidebar"},"features/credentials":{"id":"features/credentials","title":"Verifiable Credentials","description":"One of the main features of Credo is the issuance and verification of Verifiable Credentials.","sidebar":"tutorialSidebar"},"features/dids":{"id":"features/dids","title":"Decentralized Identifiers","description":"Decentralized identifiers are a core components of Credo, and used everywhere in the framework.","sidebar":"tutorialSidebar"},"features/index":{"id":"features/index","title":"Supported Features","description":"This section tries to list all the standards and features that are supported by Credo.","sidebar":"tutorialSidebar"},"features/openid4vc":{"id":"features/openid4vc","title":"OpenID for Verifiable Credentials","description":"Since Credo 0.4, support was added to receive credentials using OpenID for Verifiable Credential Issuance, and since 0.5 support was added for all the other OpenID for Verifiable Credential flows.","sidebar":"tutorialSidebar"},"getting-started/index":{"id":"getting-started/index","title":"Getting started","description":"In this section we will go over everything you need to get started on a technical level. First there are some general prerequisites for Node.JS and React Native. Credo works for creating both server-side applications (commonly but not always for creating issuer and verifier agents) and mobile applications (commonly holder agents).","sidebar":"tutorialSidebar"},"getting-started/prerequisites":{"id":"getting-started/prerequisites","title":"Prerequisites","description":"To work with Credo we need to install some dependencies and set-up our Node.JS environment. Even when creating a mobile app in React Native, we need Node.JS installed. We will go over the specific installation process for each platform. Go ahead and pick your system of choice to get started!","sidebar":"tutorialSidebar"},"getting-started/set-up/anoncreds":{"id":"getting-started/set-up/anoncreds","title":"AnonCreds","description":"The AnonCreds module provides functionality for issuing and verifying AnonCreds credentials in Credo. The AnonCreds implementation is based on AnonCreds RS, a direct implementation of the AnonCreds V1.0 specification that provides functionality like; creating a schema object, creating a credential definition object, creating a credential, verifying a proof presentation and much more.","sidebar":"tutorialSidebar"},"getting-started/set-up/aries-askar":{"id":"getting-started/set-up/aries-askar","title":"Aries Askar","description":"Aries Askar provides secure, encrypted storage and cryptographic support for encrypting, decrypting, signing and verifying data. It also provides both the Wallet and StorageService implementations for the agent.","sidebar":"tutorialSidebar"},"getting-started/set-up/cheqd/index":{"id":"getting-started/set-up/cheqd/index","title":"cheqd","description":"cheqd is a blockchain network, built in the Cosmos ecosystem for Self-Sovereign Identity (SSI). The cheqd Network leverages the cheqd DID method and enables DID-Linked Resources to be written to the network, associated with a DID and controlled using the verification methods in the DID Document.","sidebar":"tutorialSidebar"},"getting-started/set-up/index":{"id":"getting-started/set-up/index","title":"Agent Setup","description":"This guide assumes you have followed the Prerequisites, and you have a valid","sidebar":"tutorialSidebar"},"getting-started/set-up/indy-vdr":{"id":"getting-started/set-up/indy-vdr","title":"Indy VDR","description":"Hyperledger Indy VDR, Verifiable Data Registry, can be used to connect to one or more Indy Node ledger pools given sets of genesis transactions. Methods are provided to construct ledger requests and send them to the validators, collecting the results and ensuring that there is a consensus between the nodes. In the context of Credo, we mainly leverage it to register, and resolve, schemas, credential definitions and DIDs.","sidebar":"tutorialSidebar"},"index":{"id":"index","title":"Intro","description":"Welcome, to the Credo community!","sidebar":"tutorialSidebar"},"tutorials/agent-config/index":{"id":"tutorials/agent-config/index","title":"Agent Config","description":"The Credo agent is very extensible. These are all the configuration options with a short description:","sidebar":"tutorialSidebar"},"tutorials/agent-config/logging":{"id":"tutorials/agent-config/logging","title":"Logging","description":"Using the Default ConsoleLogger","sidebar":"tutorialSidebar"},"tutorials/cheqd/index":{"id":"tutorials/cheqd/index","title":"Cheqd Did Module","description":"In this tutorial we will see how to use the cheqd modules in detail","sidebar":"tutorialSidebar"},"tutorials/create-a-connection":{"id":"tutorials/create-a-connection","title":"Create a connection","description":"In this tutorial we will create a connection as Acme Corp with Bob. We will","sidebar":"tutorialSidebar"},"tutorials/index":{"id":"tutorials/index","title":"Tutorials","description":"In this section we will explain some features that everyone will use. This","sidebar":"tutorialSidebar"},"tutorials/issue-a-credential":{"id":"tutorials/issue-a-credential","title":"Issue a credential","description":"In this tutorial we will issue a credential from the Issuer to a Holder. We will start with setting up both their agents with the minimal configuration required to follow this tutorial. It is assumed that there is a connection between the Issuer and the Holder and the Issuer also has a registered schema and credential definition. After initializing the Issuer will send a credential to the holder, and will then accept this credential and automatically store it in their wallet.","sidebar":"tutorialSidebar"},"tutorials/mediation":{"id":"tutorials/mediation","title":"Mediation","description":"This section assumes that you have:","sidebar":"tutorialSidebar"},"tutorials/registering-schema-and-credential-definition":{"id":"tutorials/registering-schema-and-credential-definition","title":"Registering a schema and credential definition on an AnonCreds Registry","description":"In this tutorial we will register a schema and credential definition on an AnonCredsRegistry e.g. Hyperledger Indy ledger indy-vdr, cheqd.","sidebar":"tutorialSidebar"},"updating/index":{"id":"updating/index","title":"Updating Credo","description":"This section will cover everything you need to know about updating Credo to a newer version.","sidebar":"tutorialSidebar"},"updating/update-assistant":{"id":"updating/update-assistant","title":"Update Assistant","description":"The Update Assistant helps you update the storage objects from Credo to newer versions. This documents describes the different ways you can leverage the Update Assistant from fully managed to more manual approaches.","sidebar":"tutorialSidebar"},"updating/update-indy-sdk-to-askar":{"id":"updating/update-indy-sdk-to-askar","title":"Migrating from an Indy SDK Wallet to Aries Askar","description":"This documentation explains the process of migrating your Indy SDK wallet to Aries Askar.","sidebar":"tutorialSidebar"},"updating/versions/0.1-to-0.2":{"id":"updating/versions/0.1-to-0.2","title":"Migrating from Credo 0.1.0 to 0.2.x","description":"This document describes everything you need to know for updating Credo 0.1.0 to 0.2.x. If you\'re not aware of how updating in Credo works make sure to first read the guide on Updating Credo.","sidebar":"tutorialSidebar"},"updating/versions/0.2-to-0.3":{"id":"updating/versions/0.2-to-0.3","title":"Migrating from Credo 0.2.x to 0.3.x","description":"This document describes everything you need to know for updating Credo 0.2.x to 0.3.x. If you\'re not aware of how updating in Credo works make sure to first read the guide on Updating Credo.","sidebar":"tutorialSidebar"},"updating/versions/0.3-to-0.4":{"id":"updating/versions/0.3-to-0.4","title":"Migrating from Credo 0.3.x to 0.4.x","description":"This document describes everything you need to know for updating Credo 0.3.x to 0.4.x. If you\'re not aware of how updating in Credo works make sure to first read the guide on Updating Credo.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/95261082.8797c649.js b/assets/js/95261082.e337adff.js similarity index 67% rename from assets/js/95261082.8797c649.js rename to assets/js/95261082.e337adff.js index ed27d549..f5d4fc24 100644 --- a/assets/js/95261082.8797c649.js +++ b/assets/js/95261082.e337adff.js @@ -1 +1 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[2086],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var u=a.createContext({}),l=function(e){var t=a.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=l(e.components);return a.createElement(u.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,u=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=l(n),f=r,m=p["".concat(u,".").concat(f)]||p[f]||d[f]||o;return n?a.createElement(m,i(i({ref:t},c),{},{components:n})):a.createElement(m,i({ref:t},c))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=f;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[p]="string"==typeof e?e:r,i[1]=s;for(var l=2;l<o;l++)i[l]=n[l];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}f.displayName="MDXCreateElement"},5162:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(7294),r=n(6010);const o={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:n,className:i}=e;return a.createElement("div",{role:"tabpanel",className:(0,r.Z)(o.tabItem,i),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>w});var a=n(7462),r=n(7294),o=n(6010),i=n(2466),s=n(6550),u=n(1980),l=n(7392),c=n(12);function p(e){return function(e){return r.Children.map(e,(e=>{if((0,r.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:r}}=e;return{value:t,label:n,attributes:a,default:r}}))}function d(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??p(n);return function(e){const t=(0,l.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function f(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function m(e){let{queryString:t=!1,groupId:n}=e;const a=(0,s.k6)(),o=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,u._X)(o),(0,r.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(a.location.search);t.set(o,e),a.replace({...a.location,search:t.toString()})}),[o,a])]}function h(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,o=d(e),[i,s]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!f({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:o}))),[u,l]=m({queryString:n,groupId:a}),[p,h]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,o]=(0,c.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&o.set(e)}),[n,o])]}({groupId:a}),b=(()=>{const e=u??p;return f({value:e,tabValues:o})?e:null})();(0,r.useLayoutEffect)((()=>{b&&s(b)}),[b]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!f({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);s(e),l(e),h(e)}),[l,h,o]),tabValues:o}}var b=n(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function v(e){let{className:t,block:n,selectedValue:s,selectValue:u,tabValues:l}=e;const c=[],{blockElementScrollPositionUntilNextRender:p}=(0,i.o5)(),d=e=>{const t=e.currentTarget,n=c.indexOf(t),a=l[n].value;a!==s&&(p(t),u(a))},f=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;t=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;t=c[n]??c[c.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":n},t)},l.map((e=>{let{value:t,label:n,attributes:i}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:s===t?0:-1,"aria-selected":s===t,key:t,ref:e=>c.push(e),onKeyDown:f,onClick:d},i,{className:(0,o.Z)("tabs__item",g.tabItem,i?.className,{"tabs__item--active":s===t})}),n??t)})))}function y(e){let{lazy:t,children:n,selectedValue:a}=e;if(n=Array.isArray(n)?n:[n],t){const e=n.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},n.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function k(e){const t=h(e);return r.createElement("div",{className:(0,o.Z)("tabs-container",g.tabList)},r.createElement(v,(0,a.Z)({},e,t)),r.createElement(y,(0,a.Z)({},e,t)))}function w(e){const t=(0,b.Z)();return r.createElement(k,(0,a.Z)({key:String(t)},e))}},3418:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>m,frontMatter:()=>s,metadata:()=>l,toc:()=>p});var a=n(7462),r=(n(7294),n(3905)),o=n(4866),i=n(5162);const s={},u="Push Notifications",l={unversionedId:"extensions/push-notifications",id:"extensions/push-notifications",title:"Push Notifications",description:"The Push Notifications plugin package provides a way for you to register your APNs and Firebase push notification token at an agent, allowing you to use push notifications directly from Credo.",source:"@site/guides/extensions/push-notifications.md",sourceDirName:"extensions",slug:"/extensions/push-notifications",permalink:"/guides/0.5/extensions/push-notifications",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Redux Store",permalink:"/guides/0.5/extensions/redux-store"}},c={},p=[{value:"Installation",id:"installation",level:2},{value:"npm",id:"npm",level:2},{value:"Yarn",id:"yarn",level:2},{value:"Usage",id:"usage",level:2}],d={toc:p},f="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(f,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"push-notifications"},"Push Notifications"),(0,r.kt)("p",null,"The Push Notifications plugin package provides a way for you to register your APNs and Firebase push notification token at an agent, allowing you to use push notifications directly from Credo."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"This document is for version ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"0.5.x"))," of the ",(0,r.kt)("inlineCode",{parentName:"p"},"@aries-framework/push-notifications")," package, that works with ",(0,r.kt)("inlineCode",{parentName:"p"},"@aries-framework/core")," version ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"0.4.x")),". Extension packages (such as Push Notifications) are versioned separately from the core packages.")),(0,r.kt)("h2",{id:"installation"},"Installation"),(0,r.kt)("p",null,"To add the Push Notifications plugin package to your existing project simply run:"),(0,r.kt)(o.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"npm",value:"tab1",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"npm i @aries-framework/push-notifications\n"))),(0,r.kt)(i.Z,{label:"Yarn",value:"tab2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"yarn add @aries-framework/push-notifications\n"))),(0,r.kt)(i.Z,{label:"Usage",value:"tab3",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-ts"},"import { PushNotificationsApnsModule, PushNotificationsFcmModule } from '@aries-framework/push-notifications'\nimport { } from '@aries-framework/core'\n\nconst agent = new Agent({\n /** agent config... */,\n // Register the modules\n modules: {\n pushNotificationsApns: new PushNotificationsApnsModule(),\n pushNotificationsFcm: new PushNotificationsFcmModule(),\n },\n }\n})\n\nawait agent.initialize()\n\n/* -- iOS -- */\n\n// To send apns device info to another agent you have to acquire the device token and send it.\nawait agent.modules.pushNotificationsApns.sendDeviceInfo(\n 'a-valid-connection-id'\n { deviceToken: '123' },\n)\n\n// To get the device info and the used service back from the other agent\nawait agent.modules.pushNotificationsApns.getDeviceInfo('a-valid-connection')\n\n/* -- fcm / Android -- */\n\n// To send fcm, primarily Android, device info to another agent you have to acquire the device token and send it.\nawait agent.modules.pushNotificationsFcm.sendDeviceInfo(\n 'a-valid-connection-id'\n { deviceToken: '123' },\n)\n\n// To get the device info and the used service back from the other agent\nawait agent.modules.pushNotificationsFcm.getDeviceInfo('a-valid-connection')\n\n")))))}m.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[2086],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var u=a.createContext({}),l=function(e){var t=a.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=l(e.components);return a.createElement(u.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,u=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=l(n),f=r,m=d["".concat(u,".").concat(f)]||d[f]||p[f]||o;return n?a.createElement(m,i(i({ref:t},c),{},{components:n})):a.createElement(m,i({ref:t},c))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=f;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[d]="string"==typeof e?e:r,i[1]=s;for(var l=2;l<o;l++)i[l]=n[l];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}f.displayName="MDXCreateElement"},5162:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(7294),r=n(6010);const o={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:n,className:i}=e;return a.createElement("div",{role:"tabpanel",className:(0,r.Z)(o.tabItem,i),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>w});var a=n(7462),r=n(7294),o=n(6010),i=n(2466),s=n(6550),u=n(1980),l=n(7392),c=n(12);function d(e){return function(e){return r.Children.map(e,(e=>{if((0,r.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:r}}=e;return{value:t,label:n,attributes:a,default:r}}))}function p(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??d(n);return function(e){const t=(0,l.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function f(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function m(e){let{queryString:t=!1,groupId:n}=e;const a=(0,s.k6)(),o=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,u._X)(o),(0,r.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(a.location.search);t.set(o,e),a.replace({...a.location,search:t.toString()})}),[o,a])]}function h(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,o=p(e),[i,s]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!f({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:o}))),[u,l]=m({queryString:n,groupId:a}),[d,h]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,o]=(0,c.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&o.set(e)}),[n,o])]}({groupId:a}),b=(()=>{const e=u??d;return f({value:e,tabValues:o})?e:null})();(0,r.useLayoutEffect)((()=>{b&&s(b)}),[b]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!f({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);s(e),l(e),h(e)}),[l,h,o]),tabValues:o}}var b=n(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function v(e){let{className:t,block:n,selectedValue:s,selectValue:u,tabValues:l}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,i.o5)(),p=e=>{const t=e.currentTarget,n=c.indexOf(t),a=l[n].value;a!==s&&(d(t),u(a))},f=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;t=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;t=c[n]??c[c.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":n},t)},l.map((e=>{let{value:t,label:n,attributes:i}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:s===t?0:-1,"aria-selected":s===t,key:t,ref:e=>c.push(e),onKeyDown:f,onClick:p},i,{className:(0,o.Z)("tabs__item",g.tabItem,i?.className,{"tabs__item--active":s===t})}),n??t)})))}function y(e){let{lazy:t,children:n,selectedValue:a}=e;if(n=Array.isArray(n)?n:[n],t){const e=n.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},n.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function k(e){const t=h(e);return r.createElement("div",{className:(0,o.Z)("tabs-container",g.tabList)},r.createElement(v,(0,a.Z)({},e,t)),r.createElement(y,(0,a.Z)({},e,t)))}function w(e){const t=(0,b.Z)();return r.createElement(k,(0,a.Z)({key:String(t)},e))}},3418:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>m,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var a=n(7462),r=(n(7294),n(3905)),o=n(4866),i=n(5162);const s={},u="Push Notifications",l={unversionedId:"extensions/push-notifications",id:"extensions/push-notifications",title:"Push Notifications",description:"The Push Notifications plugin package provides a way for you to register your APNs and Firebase push notification token at an agent, allowing you to use push notifications directly from Credo.",source:"@site/guides/extensions/push-notifications.md",sourceDirName:"extensions",slug:"/extensions/push-notifications",permalink:"/guides/0.5/extensions/push-notifications",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Redux Store",permalink:"/guides/0.5/extensions/redux-store"}},c={},d=[{value:"Installation",id:"installation",level:2},{value:"npm",id:"npm",level:2},{value:"Yarn",id:"yarn",level:2},{value:"Usage",id:"usage",level:2}],p={toc:d},f="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(f,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"push-notifications"},"Push Notifications"),(0,r.kt)("p",null,"The Push Notifications plugin package provides a way for you to register your APNs and Firebase push notification token at an agent, allowing you to use push notifications directly from Credo."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"This document is for version ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"0.5.x"))," of the ",(0,r.kt)("inlineCode",{parentName:"p"},"@credo-ts/push-notifications")," package, that works with ",(0,r.kt)("inlineCode",{parentName:"p"},"@credo-ts/core")," version ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"0.4.x")),". Extension packages (such as Push Notifications) are versioned separately from the core packages.")),(0,r.kt)("h2",{id:"installation"},"Installation"),(0,r.kt)("p",null,"To add the Push Notifications plugin package to your existing project simply run:"),(0,r.kt)(o.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"npm",value:"tab1",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"npm i @credo-ts/push-notifications\n"))),(0,r.kt)(i.Z,{label:"Yarn",value:"tab2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"yarn add @credo-ts/push-notifications\n"))),(0,r.kt)(i.Z,{label:"Usage",value:"tab3",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-ts"},"import { PushNotificationsApnsModule, PushNotificationsFcmModule } from '@credo-ts/push-notifications'\nimport { } from '@credo-ts/core'\n\nconst agent = new Agent({\n /** agent config... */,\n // Register the modules\n modules: {\n pushNotificationsApns: new PushNotificationsApnsModule(),\n pushNotificationsFcm: new PushNotificationsFcmModule(),\n },\n }\n})\n\nawait agent.initialize()\n\n/* -- iOS -- */\n\n// To send apns device info to another agent you have to acquire the device token and send it.\nawait agent.modules.pushNotificationsApns.sendDeviceInfo(\n 'a-valid-connection-id'\n { deviceToken: '123' },\n)\n\n// To get the device info and the used service back from the other agent\nawait agent.modules.pushNotificationsApns.getDeviceInfo('a-valid-connection')\n\n/* -- fcm / Android -- */\n\n// To send fcm, primarily Android, device info to another agent you have to acquire the device token and send it.\nawait agent.modules.pushNotificationsFcm.sendDeviceInfo(\n 'a-valid-connection-id'\n { deviceToken: '123' },\n)\n\n// To get the device info and the used service back from the other agent\nawait agent.modules.pushNotificationsFcm.getDeviceInfo('a-valid-connection')\n\n")))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a2a3716e.5be21072.js b/assets/js/a2a3716e.67147bbd.js similarity index 69% rename from assets/js/a2a3716e.5be21072.js rename to assets/js/a2a3716e.67147bbd.js index ac21ae36..16d6008f 100644 --- a/assets/js/a2a3716e.5be21072.js +++ b/assets/js/a2a3716e.67147bbd.js @@ -1 +1 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[644],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var n=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r,n,i={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},m="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),m=s(r),d=i,f=m["".concat(l,".").concat(d)]||m[d]||p[d]||a;return r?n.createElement(f,o(o({ref:t},u),{},{components:r})):n.createElement(f,o({ref:t},u))}));function f(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,o=new Array(a);o[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[m]="string"==typeof e?e:i,o[1]=c;for(var s=2;s<a;s++)o[s]=r[s];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},2991:(e,t,r)=>{r.d(t,{Z:()=>g});var n=r(7294),i=r(6010),a=r(3438),o=r(9960),c=r(3919),l=r(5999);const s={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){let{href:t,children:r}=e;return n.createElement(o.Z,{href:t,className:(0,i.Z)("card padding--lg",s.cardContainer)},r)}function m(e){let{href:t,icon:r,title:a,description:o}=e;return n.createElement(u,{href:t},n.createElement("h2",{className:(0,i.Z)("text--truncate",s.cardTitle),title:a},r," ",a),o&&n.createElement("p",{className:(0,i.Z)("text--truncate",s.cardDescription),title:o},o))}function p(e){let{item:t}=e;const r=(0,a.Wl)(t);return r?n.createElement(m,{href:r,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function d(e){let{item:t}=e;const r=(0,c.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",i=(0,a.xz)(t.docId??void 0);return n.createElement(m,{href:t.href,icon:r,title:t.label,description:i?.description})}function f(e){let{item:t}=e;switch(t.type){case"link":return n.createElement(d,{item:t});case"category":return n.createElement(p,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function y(e){let{className:t}=e;const r=(0,a.jA)();return n.createElement(g,{items:r.items,className:t})}function g(e){const{items:t,className:r}=e;if(!t)return n.createElement(y,e);const o=(0,a.MN)(t);return n.createElement("section",{className:(0,i.Z)("row",r)},o.map(((e,t)=>n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e})))))}},4789:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>c,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var n=r(7462),i=(r(7294),r(3905)),a=r(2991);const o={},c="Tutorials",l={unversionedId:"tutorials/index",id:"tutorials/index",title:"Tutorials",description:"In this section we will explain some features that everyone will use. This",source:"@site/guides/tutorials/index.md",sourceDirName:"tutorials",slug:"/tutorials/",permalink:"/guides/0.5/tutorials/",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Platform and Environment",permalink:"/guides/0.5/concepts/platform-and-environment"},next:{title:"Agent Config",permalink:"/guides/0.5/tutorials/agent-config/"}},s={},u=[],m={toc:u},p="wrapper";function d(e){let{components:t,...r}=e;return(0,i.kt)(p,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"tutorials"},"Tutorials"),(0,i.kt)("p",null,"In this section we will explain some features that everyone will use. This\nincludes setting up your Aries agent, creating a connection between Aries\nagents, issuing a credential and verifying a proof."),(0,i.kt)(a.Z,{mdxType:"DocCardList"}))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[644],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var n=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r,n,i={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),p=s(r),m=i,f=p["".concat(l,".").concat(m)]||p[m]||d[m]||a;return r?n.createElement(f,o(o({ref:t},u),{},{components:r})):n.createElement(f,o({ref:t},u))}));function f(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,o=new Array(a);o[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[p]="string"==typeof e?e:i,o[1]=c;for(var s=2;s<a;s++)o[s]=r[s];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},2991:(e,t,r)=>{r.d(t,{Z:()=>g});var n=r(7294),i=r(6010),a=r(3438),o=r(9960),c=r(3919),l=r(5999);const s={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){let{href:t,children:r}=e;return n.createElement(o.Z,{href:t,className:(0,i.Z)("card padding--lg",s.cardContainer)},r)}function p(e){let{href:t,icon:r,title:a,description:o}=e;return n.createElement(u,{href:t},n.createElement("h2",{className:(0,i.Z)("text--truncate",s.cardTitle),title:a},r," ",a),o&&n.createElement("p",{className:(0,i.Z)("text--truncate",s.cardDescription),title:o},o))}function d(e){let{item:t}=e;const r=(0,a.Wl)(t);return r?n.createElement(p,{href:r,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function m(e){let{item:t}=e;const r=(0,c.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",i=(0,a.xz)(t.docId??void 0);return n.createElement(p,{href:t.href,icon:r,title:t.label,description:i?.description})}function f(e){let{item:t}=e;switch(t.type){case"link":return n.createElement(m,{item:t});case"category":return n.createElement(d,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function y(e){let{className:t}=e;const r=(0,a.jA)();return n.createElement(g,{items:r.items,className:t})}function g(e){const{items:t,className:r}=e;if(!t)return n.createElement(y,e);const o=(0,a.MN)(t);return n.createElement("section",{className:(0,i.Z)("row",r)},o.map(((e,t)=>n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e})))))}},4789:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>c,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var n=r(7462),i=(r(7294),r(3905)),a=r(2991);const o={},c="Tutorials",l={unversionedId:"tutorials/index",id:"tutorials/index",title:"Tutorials",description:"In this section we will explain some features that everyone will use. This",source:"@site/guides/tutorials/index.md",sourceDirName:"tutorials",slug:"/tutorials/",permalink:"/guides/0.5/tutorials/",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Verifiable Credentials",permalink:"/guides/0.5/features/credentials"},next:{title:"Agent Config",permalink:"/guides/0.5/tutorials/agent-config/"}},s={},u=[],p={toc:u},d="wrapper";function m(e){let{components:t,...r}=e;return(0,i.kt)(d,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"tutorials"},"Tutorials"),(0,i.kt)("p",null,"In this section we will explain some features that everyone will use. This\nincludes setting up your Aries agent, creating a connection between Aries\nagents, issuing a credential and verifying a proof."),(0,i.kt)(a.Z,{mdxType:"DocCardList"}))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a69e7b9a.0f39abaa.js b/assets/js/a69e7b9a.cd4652af.js similarity index 90% rename from assets/js/a69e7b9a.0f39abaa.js rename to assets/js/a69e7b9a.cd4652af.js index 38dc8f28..0856fa82 100644 --- a/assets/js/a69e7b9a.0f39abaa.js +++ b/assets/js/a69e7b9a.cd4652af.js @@ -1 +1 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[4365],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=n.createContext({}),i=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},c=function(e){var t=i(e.components);return n.createElement(u.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=i(r),m=a,f=d["".concat(u,".").concat(m)]||d[m]||p[m]||o;return r?n.createElement(f,l(l({ref:t},c),{},{components:r})):n.createElement(f,l({ref:t},c))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=m;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[d]="string"==typeof e?e:a,l[1]=s;for(var i=2;i<o;i++)l[i]=r[i];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},5162:(e,t,r)=>{r.d(t,{Z:()=>l});var n=r(7294),a=r(6010);const o={tabItem:"tabItem_Ymn6"};function l(e){let{children:t,hidden:r,className:l}=e;return n.createElement("div",{role:"tabpanel",className:(0,a.Z)(o.tabItem,l),hidden:r},t)}},4866:(e,t,r)=>{r.d(t,{Z:()=>x});var n=r(7462),a=r(7294),o=r(6010),l=r(2466),s=r(6550),u=r(1980),i=r(7392),c=r(12);function d(e){return function(e){return a.Children.map(e,(e=>{if((0,a.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:r,attributes:n,default:a}}=e;return{value:t,label:r,attributes:n,default:a}}))}function p(e){const{values:t,children:r}=e;return(0,a.useMemo)((()=>{const e=t??d(r);return function(e){const t=(0,i.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,r])}function m(e){let{value:t,tabValues:r}=e;return r.some((e=>e.value===t))}function f(e){let{queryString:t=!1,groupId:r}=e;const n=(0,s.k6)(),o=function(e){let{queryString:t=!1,groupId:r}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!r)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:t,groupId:r});return[(0,u._X)(o),(0,a.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(n.location.search);t.set(o,e),n.replace({...n.location,search:t.toString()})}),[o,n])]}function b(e){const{defaultValue:t,queryString:r=!1,groupId:n}=e,o=p(e),[l,s]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!m({value:t,tabValues:r}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=r.find((e=>e.default))??r[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:o}))),[u,i]=f({queryString:r,groupId:n}),[d,b]=function(e){let{groupId:t}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,o]=(0,c.Nk)(r);return[n,(0,a.useCallback)((e=>{r&&o.set(e)}),[r,o])]}({groupId:n}),h=(()=>{const e=u??d;return m({value:e,tabValues:o})?e:null})();(0,a.useLayoutEffect)((()=>{h&&s(h)}),[h]);return{selectedValue:l,selectValue:(0,a.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);s(e),i(e),b(e)}),[i,b,o]),tabValues:o}}var h=r(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function v(e){let{className:t,block:r,selectedValue:s,selectValue:u,tabValues:i}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,l.o5)(),p=e=>{const t=e.currentTarget,r=c.indexOf(t),n=i[r].value;n!==s&&(d(t),u(n))},m=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const r=c.indexOf(e.currentTarget)+1;t=c[r]??c[0];break}case"ArrowLeft":{const r=c.indexOf(e.currentTarget)-1;t=c[r]??c[c.length-1];break}}t?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":r},t)},i.map((e=>{let{value:t,label:r,attributes:l}=e;return a.createElement("li",(0,n.Z)({role:"tab",tabIndex:s===t?0:-1,"aria-selected":s===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:p},l,{className:(0,o.Z)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":s===t})}),r??t)})))}function y(e){let{lazy:t,children:r,selectedValue:n}=e;if(r=Array.isArray(r)?r:[r],t){const e=r.find((e=>e.props.value===n));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},r.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function k(e){const t=b(e);return a.createElement("div",{className:(0,o.Z)("tabs-container",g.tabList)},a.createElement(v,(0,n.Z)({},e,t)),a.createElement(y,(0,n.Z)({},e,t)))}function x(e){const t=(0,h.Z)();return a.createElement(k,(0,n.Z)({key:String(t)},e))}},6935:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>f,frontMatter:()=>s,metadata:()=>i,toc:()=>d});var n=r(7462),a=(r(7294),r(3905)),o=r(4866),l=r(5162);const s={},u="Redux Store",i={unversionedId:"extensions/redux-store",id:"extensions/redux-store",title:"Redux Store",description:"The Redux Store is an implementation of state management that can be used to build React & React Native SSI clients using Credo.",source:"@site/guides/extensions/redux-store.md",sourceDirName:"extensions",slug:"/extensions/redux-store",permalink:"/guides/0.5/extensions/redux-store",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"React Hooks",permalink:"/guides/0.5/extensions/react-hooks"},next:{title:"Push Notifications",permalink:"/guides/0.5/extensions/push-notifications"}},c={},d=[{value:"Installation",id:"installation",level:2},{value:"npm",id:"npm",level:2},{value:"Yarn",id:"yarn",level:2}],p={toc:d},m="wrapper";function f(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"redux-store"},"Redux Store"),(0,a.kt)("p",null,"The Redux Store is an implementation of state management that can be used to build React & React Native SSI clients using Credo."),(0,a.kt)("p",null,"The Redux Store allows you to integrate state management for the most important parts of using Credo in a client application (mediation, connections, credentials and proofs), allowing you to sync UI state with the state of the agent as it interacts with other agents through the framework."),(0,a.kt)("admonition",{type:"note"},(0,a.kt)("p",{parentName:"admonition"},"This document is for version ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("inlineCode",{parentName:"strong"},"0.4.x"))," of the ",(0,a.kt)("inlineCode",{parentName:"p"},"@aries-framework/redux-store")," package, that works with ",(0,a.kt)("inlineCode",{parentName:"p"},"@aries-framework/core")," version ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("inlineCode",{parentName:"strong"},"0.4.x")),". Extension packages (such as Redux Store) are versioned separately from the core packages.")),(0,a.kt)("h2",{id:"installation"},"Installation"),(0,a.kt)("p",null,"To add the Redux Store package to your existing project simply run:"),(0,a.kt)(o.Z,{mdxType:"Tabs"},(0,a.kt)(l.Z,{label:"npm",value:"tab1",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},"npm i @aries-framework/redux-store\n"))),(0,a.kt)(l.Z,{label:"Yarn",value:"tab2",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},"yarn add @aries-framework/redux-store\n")))))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[4365],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=n.createContext({}),i=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},c=function(e){var t=i(e.components);return n.createElement(u.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=i(r),m=a,f=d["".concat(u,".").concat(m)]||d[m]||p[m]||o;return r?n.createElement(f,l(l({ref:t},c),{},{components:r})):n.createElement(f,l({ref:t},c))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=m;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[d]="string"==typeof e?e:a,l[1]=s;for(var i=2;i<o;i++)l[i]=r[i];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},5162:(e,t,r)=>{r.d(t,{Z:()=>l});var n=r(7294),a=r(6010);const o={tabItem:"tabItem_Ymn6"};function l(e){let{children:t,hidden:r,className:l}=e;return n.createElement("div",{role:"tabpanel",className:(0,a.Z)(o.tabItem,l),hidden:r},t)}},4866:(e,t,r)=>{r.d(t,{Z:()=>x});var n=r(7462),a=r(7294),o=r(6010),l=r(2466),s=r(6550),u=r(1980),i=r(7392),c=r(12);function d(e){return function(e){return a.Children.map(e,(e=>{if((0,a.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:r,attributes:n,default:a}}=e;return{value:t,label:r,attributes:n,default:a}}))}function p(e){const{values:t,children:r}=e;return(0,a.useMemo)((()=>{const e=t??d(r);return function(e){const t=(0,i.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,r])}function m(e){let{value:t,tabValues:r}=e;return r.some((e=>e.value===t))}function f(e){let{queryString:t=!1,groupId:r}=e;const n=(0,s.k6)(),o=function(e){let{queryString:t=!1,groupId:r}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!r)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:t,groupId:r});return[(0,u._X)(o),(0,a.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(n.location.search);t.set(o,e),n.replace({...n.location,search:t.toString()})}),[o,n])]}function b(e){const{defaultValue:t,queryString:r=!1,groupId:n}=e,o=p(e),[l,s]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!m({value:t,tabValues:r}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=r.find((e=>e.default))??r[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:o}))),[u,i]=f({queryString:r,groupId:n}),[d,b]=function(e){let{groupId:t}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,o]=(0,c.Nk)(r);return[n,(0,a.useCallback)((e=>{r&&o.set(e)}),[r,o])]}({groupId:n}),h=(()=>{const e=u??d;return m({value:e,tabValues:o})?e:null})();(0,a.useLayoutEffect)((()=>{h&&s(h)}),[h]);return{selectedValue:l,selectValue:(0,a.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);s(e),i(e),b(e)}),[i,b,o]),tabValues:o}}var h=r(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function v(e){let{className:t,block:r,selectedValue:s,selectValue:u,tabValues:i}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,l.o5)(),p=e=>{const t=e.currentTarget,r=c.indexOf(t),n=i[r].value;n!==s&&(d(t),u(n))},m=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const r=c.indexOf(e.currentTarget)+1;t=c[r]??c[0];break}case"ArrowLeft":{const r=c.indexOf(e.currentTarget)-1;t=c[r]??c[c.length-1];break}}t?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":r},t)},i.map((e=>{let{value:t,label:r,attributes:l}=e;return a.createElement("li",(0,n.Z)({role:"tab",tabIndex:s===t?0:-1,"aria-selected":s===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:p},l,{className:(0,o.Z)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":s===t})}),r??t)})))}function y(e){let{lazy:t,children:r,selectedValue:n}=e;if(r=Array.isArray(r)?r:[r],t){const e=r.find((e=>e.props.value===n));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},r.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function k(e){const t=b(e);return a.createElement("div",{className:(0,o.Z)("tabs-container",g.tabList)},a.createElement(v,(0,n.Z)({},e,t)),a.createElement(y,(0,n.Z)({},e,t)))}function x(e){const t=(0,h.Z)();return a.createElement(k,(0,n.Z)({key:String(t)},e))}},6935:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>f,frontMatter:()=>s,metadata:()=>i,toc:()=>d});var n=r(7462),a=(r(7294),r(3905)),o=r(4866),l=r(5162);const s={},u="Redux Store",i={unversionedId:"extensions/redux-store",id:"extensions/redux-store",title:"Redux Store",description:"The Redux Store is an implementation of state management that can be used to build React & React Native SSI clients using Credo.",source:"@site/guides/extensions/redux-store.md",sourceDirName:"extensions",slug:"/extensions/redux-store",permalink:"/guides/0.5/extensions/redux-store",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"React Hooks",permalink:"/guides/0.5/extensions/react-hooks"},next:{title:"Push Notifications",permalink:"/guides/0.5/extensions/push-notifications"}},c={},d=[{value:"Installation",id:"installation",level:2},{value:"npm",id:"npm",level:2},{value:"Yarn",id:"yarn",level:2}],p={toc:d},m="wrapper";function f(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"redux-store"},"Redux Store"),(0,a.kt)("p",null,"The Redux Store is an implementation of state management that can be used to build React & React Native SSI clients using Credo."),(0,a.kt)("p",null,"The Redux Store allows you to integrate state management for the most important parts of using Credo in a client application (mediation, connections, credentials and proofs), allowing you to sync UI state with the state of the agent as it interacts with other agents through the framework."),(0,a.kt)("admonition",{type:"note"},(0,a.kt)("p",{parentName:"admonition"},"This document is for version ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("inlineCode",{parentName:"strong"},"0.4.x"))," of the ",(0,a.kt)("inlineCode",{parentName:"p"},"@credo-ts/redux-store")," package, that works with ",(0,a.kt)("inlineCode",{parentName:"p"},"@credo-ts/core")," version ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("inlineCode",{parentName:"strong"},"0.4.x")),". Extension packages (such as Redux Store) are versioned separately from the core packages.")),(0,a.kt)("h2",{id:"installation"},"Installation"),(0,a.kt)("p",null,"To add the Redux Store package to your existing project simply run:"),(0,a.kt)(o.Z,{mdxType:"Tabs"},(0,a.kt)(l.Z,{label:"npm",value:"tab1",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},"npm i @credo-ts/redux-store\n"))),(0,a.kt)(l.Z,{label:"Yarn",value:"tab2",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},"yarn add @credo-ts/redux-store\n")))))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/af9716ba.6fba4a51.js b/assets/js/af9716ba.6fba4a51.js deleted file mode 100644 index 5277ecb9..00000000 --- a/assets/js/af9716ba.6fba4a51.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[7543],{3905:(e,n,t)=>{t.d(n,{Zo:()=>d,kt:()=>f});var r=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(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 s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function i(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=r.createContext({}),u=function(e){var n=r.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},d=function(e){var n=u(e.components);return r.createElement(l.Provider,{value:n},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},m=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=u(t),m=a,f=p["".concat(l,".").concat(m)]||p[m]||c[m]||o;return t?r.createElement(f,s(s({ref:n},d),{},{components:t})):r.createElement(f,s({ref:n},d))}));function f(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var o=t.length,s=new Array(o);s[0]=m;var i={};for(var l in n)hasOwnProperty.call(n,l)&&(i[l]=n[l]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var u=2;u<o;u++)s[u]=t[u];return r.createElement.apply(null,s)}return r.createElement.apply(null,t)}m.displayName="MDXCreateElement"},5162:(e,n,t)=>{t.d(n,{Z:()=>s});var r=t(7294),a=t(6010);const o={tabItem:"tabItem_Ymn6"};function s(e){let{children:n,hidden:t,className:s}=e;return r.createElement("div",{role:"tabpanel",className:(0,a.Z)(o.tabItem,s),hidden:t},n)}},4866:(e,n,t)=>{t.d(n,{Z:()=>N});var r=t(7462),a=t(7294),o=t(6010),s=t(2466),i=t(6550),l=t(1980),u=t(7392),d=t(12);function p(e){return function(e){return a.Children.map(e,(e=>{if((0,a.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:a}}=e;return{value:n,label:t,attributes:r,default:a}}))}function c(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??p(t);return function(e){const n=(0,u.l)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function f(e){let{queryString:n=!1,groupId:t}=e;const r=(0,i.k6)(),o=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l._X)(o),(0,a.useCallback)((e=>{if(!o)return;const n=new URLSearchParams(r.location.search);n.set(o,e),r.replace({...r.location,search:n.toString()})}),[o,r])]}function h(e){const{defaultValue:n,queryString:t=!1,groupId:r}=e,o=c(e),[s,i]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:o}))),[l,u]=f({queryString:t,groupId:r}),[p,h]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,o]=(0,d.Nk)(t);return[r,(0,a.useCallback)((e=>{t&&o.set(e)}),[t,o])]}({groupId:r}),g=(()=>{const e=l??p;return m({value:e,tabValues:o})?e:null})();(0,a.useLayoutEffect)((()=>{g&&i(g)}),[g]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);i(e),u(e),h(e)}),[u,h,o]),tabValues:o}}var g=t(2389);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function k(e){let{className:n,block:t,selectedValue:i,selectValue:l,tabValues:u}=e;const d=[],{blockElementScrollPositionUntilNextRender:p}=(0,s.o5)(),c=e=>{const n=e.currentTarget,t=d.indexOf(n),r=u[t].value;r!==i&&(p(n),l(r))},m=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=d.indexOf(e.currentTarget)+1;n=d[t]??d[0];break}case"ArrowLeft":{const t=d.indexOf(e.currentTarget)-1;n=d[t]??d[d.length-1];break}}n?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":t},n)},u.map((e=>{let{value:n,label:t,attributes:s}=e;return a.createElement("li",(0,r.Z)({role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,key:n,ref:e=>d.push(e),onKeyDown:m,onClick:c},s,{className:(0,o.Z)("tabs__item",b.tabItem,s?.className,{"tabs__item--active":i===n})}),t??n)})))}function y(e){let{lazy:n,children:t,selectedValue:r}=e;if(t=Array.isArray(t)?t:[t],n){const e=t.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},t.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r}))))}function v(e){const n=h(e);return a.createElement("div",{className:(0,o.Z)("tabs-container",b.tabList)},a.createElement(k,(0,r.Z)({},e,n)),a.createElement(y,(0,r.Z)({},e,n)))}function N(e){const n=(0,g.Z)();return a.createElement(v,(0,r.Z)({key:String(n)},e))}},9511:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>f,frontMatter:()=>i,metadata:()=>u,toc:()=>p});var r=t(7462),a=(t(7294),t(3905)),o=t(4866),s=t(5162);const i={},l="AnonCreds RS",u={unversionedId:"getting-started/set-up/anoncreds-rs",id:"getting-started/set-up/anoncreds-rs",title:"AnonCreds RS",description:"AnonCreds RS is a direct implementation of the AnonCreds V1.0 specification that provides functionality like; creating a schema object, creating a credential definition object, creating a credential, verifying a proof presentation and much more.",source:"@site/guides/getting-started/set-up/anoncreds-rs.md",sourceDirName:"getting-started/set-up",slug:"/getting-started/set-up/anoncreds-rs",permalink:"/guides/0.5/getting-started/set-up/anoncreds-rs",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"React Native",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/react-native"},next:{title:"Indy VDR",permalink:"/guides/0.5/getting-started/set-up/indy-vdr"}},d={},p=[{value:"Installing AnonCreds RS",id:"installing-anoncreds-rs",level:3},{value:"Adding AnonCreds RS to the agent",id:"adding-anoncreds-rs-to-the-agent",level:3},{value:"Configuration",id:"configuration",level:3},{value:"Supported Node.JS versions for AnonCreds RS",id:"supported-nodejs-versions-for-anoncreds-rs",level:3}],c={toc:p},m="wrapper";function f(e){let{components:n,...t}=e;return(0,a.kt)(m,(0,r.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"anoncreds-rs"},"AnonCreds RS"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/anoncreds-rs"},"AnonCreds RS")," is a direct implementation of the ",(0,a.kt)("a",{parentName:"p",href:"https://hyperledger.github.io/anoncreds-spec/"},"AnonCreds V1.0 specification")," that provides functionality like; creating a schema object, creating a credential definition object, creating a credential, verifying a proof presentation and much more."),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"Support for the AnonCreds RS library in Credo is currently experimental. We recommend new projects to use AnonCreds RS from the start, and also to migrate existing projects to AnonCreds, from the Indy Sdk. However, projects may experience some issues. If you encounter any issues, please ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/openwallet-foundation/credo-ts/issues/new"},"open an issue"),"."),(0,a.kt)("p",{parentName:"admonition"},"Currently, there are few limitations to using AnonCreds RS."),(0,a.kt)("ul",{parentName:"admonition"},(0,a.kt)("li",{parentName:"ul"},"When running in Node.JS, only Node.JS 18 is supported for now. See ",(0,a.kt)("a",{parentName:"li",href:"#supported-nodejs-versions-for-anoncreds-rs"},"Supported Node.JS versions for AnonCreds RS")),(0,a.kt)("li",{parentName:"ul"},"Install scripts rely on bash command substitution to get the proper binaries for each system architecture and platform. Therefore, if you are under Windows, you must configure ",(0,a.kt)("inlineCode",{parentName:"li"},"npm")," or ",(0,a.kt)("inlineCode",{parentName:"li"},"yarn")," to use a bash-compliant shell (e.g. ",(0,a.kt)("inlineCode",{parentName:"li"},'npm config set script-shell "C:\\\\Program Files\\\\git\\\\bin\\\\bash.exe"'),")"))),(0,a.kt)("h3",{id:"installing-anoncreds-rs"},"Installing AnonCreds RS"),(0,a.kt)("p",null,"When using Credo with AnonCreds RS, there are a few extra dependencies that need to be installed. We need to install ",(0,a.kt)("inlineCode",{parentName:"p"},"@hyperledger/anoncreds")," package, which contains the interfaces, and ",(0,a.kt)("inlineCode",{parentName:"p"},"@hyperledger/anoncreds-rs")," package which is an implementation which depends on a wrapper of anoncreds-rs. Secondly, we need to add native bindings for the specific platform ",(0,a.kt)("inlineCode",{parentName:"p"},"@hyperledger/anoncreds-<platform>"),". Currently there are bindings for Node.JS, as ",(0,a.kt)("inlineCode",{parentName:"p"},"@hyperledger/anoncreds-nodejs"),", and React Native as ",(0,a.kt)("inlineCode",{parentName:"p"},"@hyperlegder/anoncreds-react-native"),"."),(0,a.kt)(o.Z,{mdxType:"Tabs"},(0,a.kt)(s.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @aries-framework/anoncreds@^0.4.0 @aries-framework/anoncreds-rs@^0.4.0 @hyperledger/anoncreds-nodejs@^0.1.0\n"))),(0,a.kt)(s.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @aries-framework/anoncreds@^0.4.0 @aries-framework/anoncreds-rs@^0.4.0 @hyperledger/anoncreds-react-native@^0.1.0\n")))),(0,a.kt)("h3",{id:"adding-anoncreds-rs-to-the-agent"},"Adding AnonCreds RS to the agent"),(0,a.kt)("p",null,"After installing the dependencies, we should register both the ",(0,a.kt)("inlineCode",{parentName:"p"},"AnonCreds")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"AnonCredsRs")," module on the agent."),(0,a.kt)(o.Z,{mdxType:"Tabs"},(0,a.kt)(s.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-anoncreds-rs.ts section-1",showLineNumbers:!0,"set-up-anoncreds-rs.ts":!0,"section-1":!0},""))),(0,a.kt)(s.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-anoncreds-rs-rn.ts section-1",showLineNumbers:!0,"set-up-anoncreds-rs-rn.ts":!0,"section-1":!0},"")))),(0,a.kt)("h3",{id:"configuration"},"Configuration"),(0,a.kt)("p",null,"As you can see, the AnonCreds module takes a list of registry modules. These modules will be used to resolve the AnonCreds objects. We recommend ",(0,a.kt)("a",{parentName:"p",href:"./indy-vdr"},"Indy VDR")," as an AnonCreds registry for Hyperledger Indy networks, but ",(0,a.kt)("a",{parentName:"p",href:"./indy-sdk"},"Indy SDK")," can also be used."),(0,a.kt)("h3",{id:"supported-nodejs-versions-for-anoncreds-rs"},"Supported Node.JS versions for AnonCreds RS"),(0,a.kt)("p",null,"Due to an issue in ",(0,a.kt)("inlineCode",{parentName:"p"},"ref-napi")," (which is used in the Node.JS bindings for AnonCreds RS), performance for AnonCreds RS in Node.JS is not as expected. A patched version for ",(0,a.kt)("inlineCode",{parentName:"p"},"ref-napi")," has been published that fixes this issue, but this only works in Node.JS 18+."),(0,a.kt)("p",null,"To use AnonCreds RS in Node.JS, make sure you're using Node.JS 18 and patch the ",(0,a.kt)("inlineCode",{parentName:"p"},"ref-napi")," package to point towards ",(0,a.kt)("inlineCode",{parentName:"p"},"@2060.io/ref-napi")," in your ",(0,a.kt)("inlineCode",{parentName:"p"},"package.json"),":"),(0,a.kt)(o.Z,{mdxType:"Tabs"},(0,a.kt)(s.Z,{label:"NPM",value:"tab1",mdxType:"TabItem"},(0,a.kt)("p",null,"Using ",(0,a.kt)("a",{parentName:"p",href:"https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides"},"NPM ",(0,a.kt)("inlineCode",{parentName:"a"},"overrides"))," we can point the ",(0,a.kt)("inlineCode",{parentName:"p"},"ref-napi")," package to ",(0,a.kt)("inlineCode",{parentName:"p"},"@2060.io/ref-napi"),"."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "overrides": {\n "ref-napi": "npm:@2060.io/ref-napi"\n }\n}\n'))),(0,a.kt)(s.Z,{label:"Yarn",value:"tab2",mdxType:"TabItem"},(0,a.kt)("p",null,"Using ",(0,a.kt)("a",{parentName:"p",href:"https://classic.yarnpkg.com/lang/en/docs/selective-version-resolutions/"},"Yarn ",(0,a.kt)("inlineCode",{parentName:"a"},"resolutions"))," we can point the ",(0,a.kt)("inlineCode",{parentName:"p"},"ref-napi")," package to ",(0,a.kt)("inlineCode",{parentName:"p"},"@2060.io/ref-napi"),"."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "resolutions": {\n "ref-napi": "npm:@2060.io/ref-napi"\n }\n}\n')))),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"See the following issues for more information on the performance botleneck"),(0,a.kt)("ul",{parentName:"admonition"},(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/hyperledger/aries-askar/issues/76"},"https://github.com/hyperledger/aries-askar/issues/76")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/node-ffi-napi/ref-napi/issues/72"},"https://github.com/node-ffi-napi/ref-napi/issues/72")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/node-ffi-napi/ref-napi/pull/73"},"https://github.com/node-ffi-napi/ref-napi/pull/73")))))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/afc41633.e23d3e1a.js b/assets/js/afc41633.e23d3e1a.js deleted file mode 100644 index fcd8db43..00000000 --- a/assets/js/afc41633.e23d3e1a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[7831],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>b});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(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 i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function u(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},l=Object.keys(e);for(r=0;r<l.length;r++)n=l[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)n=l[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var o=r.createContext({}),s=function(e){var t=r.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=s(e.components);return r.createElement(o.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,o=e.parentName,c=u(e,["components","mdxType","originalType","parentName"]),d=s(n),m=a,b=d["".concat(o,".").concat(m)]||d[m]||p[m]||l;return n?r.createElement(b,i(i({ref:t},c),{},{components:n})):r.createElement(b,i({ref:t},c))}));function b(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,i=new Array(l);i[0]=m;var u={};for(var o in t)hasOwnProperty.call(t,o)&&(u[o]=t[o]);u.originalType=e,u[d]="string"==typeof e?e:a,i[1]=u;for(var s=2;s<l;s++)i[s]=n[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},5162:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(7294),a=n(6010);const l={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:n,className:i}=e;return r.createElement("div",{role:"tabpanel",className:(0,a.Z)(l.tabItem,i),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>w});var r=n(7462),a=n(7294),l=n(6010),i=n(2466),u=n(6550),o=n(1980),s=n(7392),c=n(12);function d(e){return function(e){return a.Children.map(e,(e=>{if((0,a.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:a}}=e;return{value:t,label:n,attributes:r,default:a}}))}function p(e){const{values:t,children:n}=e;return(0,a.useMemo)((()=>{const e=t??d(n);return function(e){const t=(0,s.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function b(e){let{queryString:t=!1,groupId:n}=e;const r=(0,u.k6)(),l=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o._X)(l),(0,a.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(r.location.search);t.set(l,e),r.replace({...r.location,search:t.toString()})}),[l,r])]}function h(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,l=p(e),[i,u]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:l}))),[o,s]=b({queryString:n,groupId:r}),[d,h]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,l]=(0,c.Nk)(n);return[r,(0,a.useCallback)((e=>{n&&l.set(e)}),[n,l])]}({groupId:r}),f=(()=>{const e=o??d;return m({value:e,tabValues:l})?e:null})();(0,a.useLayoutEffect)((()=>{f&&u(f)}),[f]);return{selectedValue:i,selectValue:(0,a.useCallback)((e=>{if(!m({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);u(e),s(e),h(e)}),[s,h,l]),tabValues:l}}var f=n(2389);const y={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(e){let{className:t,block:n,selectedValue:u,selectValue:o,tabValues:s}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,i.o5)(),p=e=>{const t=e.currentTarget,n=c.indexOf(t),r=s[n].value;r!==u&&(d(t),o(r))},m=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;t=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;t=c[n]??c[c.length-1];break}}t?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":n},t)},s.map((e=>{let{value:t,label:n,attributes:i}=e;return a.createElement("li",(0,r.Z)({role:"tab",tabIndex:u===t?0:-1,"aria-selected":u===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:p},i,{className:(0,l.Z)("tabs__item",y.tabItem,i?.className,{"tabs__item--active":u===t})}),n??t)})))}function v(e){let{lazy:t,children:n,selectedValue:r}=e;if(n=Array.isArray(n)?n:[n],t){const e=n.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},n.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==r}))))}function k(e){const t=h(e);return a.createElement("div",{className:(0,l.Z)("tabs-container",y.tabList)},a.createElement(g,(0,r.Z)({},e,t)),a.createElement(v,(0,r.Z)({},e,t)))}function w(e){const t=(0,f.Z)();return a.createElement(k,(0,r.Z)({key:String(t)},e))}},9244:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>b,frontMatter:()=>u,metadata:()=>s,toc:()=>d});var r=n(7462),a=(n(7294),n(3905)),l=n(4866),i=n(5162);const u={},o="Linux",s={unversionedId:"getting-started/set-up/indy-sdk/linux",id:"getting-started/set-up/indy-sdk/linux",title:"Linux",description:"To install Indy SDK on Linux, a couple of dependencies are required. This guide covers the installation for the more popular Linux distributions.",source:"@site/guides/getting-started/set-up/indy-sdk/linux.md",sourceDirName:"getting-started/set-up/indy-sdk",slug:"/getting-started/set-up/indy-sdk/linux",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/linux",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Indy SDK",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/"},next:{title:"Windows",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/windows"}},c={},d=[{value:"Libsodium",id:"libsodium",level:3},{value:"Arch Linux",id:"arch-linux",level:4},{value:"Debian",id:"debian",level:4},{value:"Red Hat",id:"red-hat",level:4},{value:"Libzmq",id:"libzmq",level:3},{value:"Arch Linux",id:"arch-linux-1",level:4},{value:"Debian",id:"debian-1",level:4},{value:"Red Hat",id:"red-hat-1",level:4},{value:"Indy SDK",id:"indy-sdk",level:3},{value:"Confirm installation",id:"confirm-installation",level:3}],p={toc:d},m="wrapper";function b(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"linux"},"Linux"),(0,a.kt)("p",null,"To install ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-sdk"},"Indy SDK")," on Linux, a couple of dependencies are required. This guide covers the installation for the more popular Linux distributions."),(0,a.kt)("h3",{id:"libsodium"},"Libsodium"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/jedisct1/libsodium"},"Libsodium")," is used by the Indy SDK for encryption, decryption, hashing and signing."),(0,a.kt)(l.Z,{mdxType:"Tabs"},(0,a.kt)(i.Z,{label:"Arch Linux",value:"tab1",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"pacman -S libsodium\n"))),(0,a.kt)(i.Z,{label:"Debian",value:"tab2",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"apt-get install libsodium-dev\n"))),(0,a.kt)(i.Z,{label:"Red Hat",value:"tab3",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"yum install libsodium libsodium-devel\n")))),(0,a.kt)("h3",{id:"libzmq"},"Libzmq"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/zeromq/libzmq"},"Libzmq")," is a lightweight messaging queue used by the Indy SDK."),(0,a.kt)(l.Z,{mdxType:"Tabs"},(0,a.kt)(i.Z,{label:"Arch Linux",value:"tab1",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"pacman -S zeromq\n"))),(0,a.kt)(i.Z,{label:"Debian",value:"tab2",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"apt-get install libzmq3-dev\n"))),(0,a.kt)(i.Z,{label:"Red Hat",value:"tab3",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"yum install libsodium zeromq-devel\n")))),(0,a.kt)("h3",{id:"indy-sdk"},"Indy SDK"),(0,a.kt)("p",null,"All the steps mentioned here are distribution independent. As the Indy SDK doesn't provide binaries for many releases, we will build it from source. This does mean that some additional requirements are necessary, like\n",(0,a.kt)("a",{parentName:"p",href:"https://www.rust-lang.org"},"Rust"),"."),(0,a.kt)("p",null,"Downloading ",(0,a.kt)("a",{parentName:"p",href:"https://www.rust-lang.org"},"Rust")," is as easy as executing the\nfollowing command:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n")),(0,a.kt)("p",null,"This will install ",(0,a.kt)("a",{parentName:"p",href:"https://rustup.rs"},"Rustup")," which is the installer for\n",(0,a.kt)("a",{parentName:"p",href:"https://rust-lang.org"},"Rust"),"."),(0,a.kt)("p",null,"With ",(0,a.kt)("a",{parentName:"p",href:"https://rust-lang.org"},"Rust"),", we can now build the\nIndy SDK from source."),(0,a.kt)("p",null,"First, clone the repository in a temporary directory:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"git clone https://github.com/hyperledger/indy-sdk\n")),(0,a.kt)("p",null,"Secondly, go to the correct directory"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"cd indy-sdk/libindy\n")),(0,a.kt)("p",null,"Third, build the library"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"cargo build --release\n")),(0,a.kt)("p",null,"Lastly, move the library to the correct location"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"sudo mv target/release/libindy.so /usr/lib/libindy.so\n")),(0,a.kt)("h3",{id:"confirm-installation"},"Confirm installation"),(0,a.kt)("p",null,"To see whether the Indy SDK is correctly installed on your system, run the following command and it should not error."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"npx -p @aries-framework/node@^0.3 is-indy-installed\n")))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bd5be9ae.ade28b3f.js b/assets/js/bd5be9ae.2f888633.js similarity index 54% rename from assets/js/bd5be9ae.ade28b3f.js rename to assets/js/bd5be9ae.2f888633.js index 80c6ced1..379865f3 100644 --- a/assets/js/bd5be9ae.ade28b3f.js +++ b/assets/js/bd5be9ae.2f888633.js @@ -1 +1 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[1993],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function s(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=n.createContext({}),u=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=u(a),m=r,h=d["".concat(l,".").concat(m)]||d[m]||p[m]||i;return a?n.createElement(h,o(o({ref:t},c),{},{components:a})):n.createElement(h,o({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:r,o[1]=s;for(var u=2;u<i;u++)o[u]=a[u];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}m.displayName="MDXCreateElement"},5162:(e,t,a)=>{a.d(t,{Z:()=>o});var n=a(7294),r=a(6010);const i={tabItem:"tabItem_Ymn6"};function o(e){let{children:t,hidden:a,className:o}=e;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(i.tabItem,o),hidden:a},t)}},4866:(e,t,a)=>{a.d(t,{Z:()=>N});var n=a(7462),r=a(7294),i=a(6010),o=a(2466),s=a(6550),l=a(1980),u=a(7392),c=a(12);function d(e){return function(e){return r.Children.map(e,(e=>{if((0,r.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:a,attributes:n,default:r}}=e;return{value:t,label:a,attributes:n,default:r}}))}function p(e){const{values:t,children:a}=e;return(0,r.useMemo)((()=>{const e=t??d(a);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,a])}function m(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function h(e){let{queryString:t=!1,groupId:a}=e;const n=(0,s.k6)(),i=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,l._X)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(n.location.search);t.set(i,e),n.replace({...n.location,search:t.toString()})}),[i,n])]}function f(e){const{defaultValue:t,queryString:a=!1,groupId:n}=e,i=p(e),[o,s]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!m({value:t,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=a.find((e=>e.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:i}))),[l,u]=h({queryString:a,groupId:n}),[d,f]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,i]=(0,c.Nk)(a);return[n,(0,r.useCallback)((e=>{a&&i.set(e)}),[a,i])]}({groupId:n}),g=(()=>{const e=l??d;return m({value:e,tabValues:i})?e:null})();(0,r.useLayoutEffect)((()=>{g&&s(g)}),[g]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);s(e),u(e),f(e)}),[u,f,i]),tabValues:i}}var g=a(2389);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function k(e){let{className:t,block:a,selectedValue:s,selectValue:l,tabValues:u}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,o.o5)(),p=e=>{const t=e.currentTarget,a=c.indexOf(t),n=u[a].value;n!==s&&(d(t),l(n))},m=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const a=c.indexOf(e.currentTarget)+1;t=c[a]??c[0];break}case"ArrowLeft":{const a=c.indexOf(e.currentTarget)-1;t=c[a]??c[c.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":a},t)},u.map((e=>{let{value:t,label:a,attributes:o}=e;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:s===t?0:-1,"aria-selected":s===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:p},o,{className:(0,i.Z)("tabs__item",b.tabItem,o?.className,{"tabs__item--active":s===t})}),a??t)})))}function v(e){let{lazy:t,children:a,selectedValue:n}=e;if(a=Array.isArray(a)?a:[a],t){const e=a.find((e=>e.props.value===n));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},a.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function y(e){const t=f(e);return r.createElement("div",{className:(0,i.Z)("tabs-container",b.tabList)},r.createElement(k,(0,n.Z)({},e,t)),r.createElement(v,(0,n.Z)({},e,t)))}function N(e){const t=(0,g.Z)();return r.createElement(y,(0,n.Z)({key:String(t)},e))}},2347:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>u,toc:()=>d});var n=a(7462),r=(a(7294),a(3905)),i=a(4866),o=a(5162);const s={},l="Issue a credential",u={unversionedId:"tutorials/issue-a-credential",id:"tutorials/issue-a-credential",title:"Issue a credential",description:"In this tutorial we will issue a credential from the Issuer to a Holder. We will start with setting up both their agents with the minimal configuration required to follow this tutorial. It is assumed that there is a connection between the Issuer and the Holder and the Issuer also has a registered schema and credential definition. After initializing the Issuer will send a credential to the holder, and will then accept this credential and automatically store it in their wallet.",source:"@site/guides/tutorials/issue-a-credential.md",sourceDirName:"tutorials",slug:"/tutorials/issue-a-credential",permalink:"/guides/0.5/tutorials/issue-a-credential",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Registering a schema and credential definition on an AnonCreds Registry",permalink:"/guides/0.5/tutorials/registering-schema-and-credential-definition"},next:{title:"Mediation",permalink:"/guides/0.5/tutorials/mediation"}},c={},d=[{value:"1. Setting up the agents",id:"1-setting-up-the-agents",level:3},{value:"Issuer",id:"issuer",level:4},{value:"Holder",id:"holder",level:4},{value:"3. Listening for incoming credentials",id:"3-listening-for-incoming-credentials",level:3},{value:"4. Issuing a credential",id:"4-issuing-a-credential",level:3},{value:"Useful resources",id:"useful-resources",level:3}],p={toc:d},m="wrapper";function h(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"issue-a-credential"},"Issue a credential"),(0,r.kt)("p",null,"In this tutorial we will issue a credential from the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," to a ",(0,r.kt)("em",{parentName:"p"},"Holder"),". We will start with setting up both their agents with the minimal configuration required to follow this tutorial. It is assumed that there is a connection between the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," and the ",(0,r.kt)("em",{parentName:"p"},"Holder")," and the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," also has a registered schema and credential definition. After initializing the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," will send a credential to the ",(0,r.kt)("em",{parentName:"p"},"holder"),", and will then accept this credential and automatically store it in their wallet."),(0,r.kt)("p",null,(0,r.kt)("em",{parentName:"p"},"Using ",(0,r.kt)("a",{parentName:"em",href:"https://anoncreds-wg.github.io/anoncreds-spec/"},"AnonCreds")," and the ",(0,r.kt)("a",{parentName:"em",href:"https://github.com/hyperledger/aries-rfcs/blob/main/features/0453-issue-credential-v2/README.md"},"Issue Credential V2 Protocol")," or the ",(0,r.kt)("a",{parentName:"em",href:"https://github.com/hyperledger/aries-rfcs/blob/main/features/0036-issue-credential/README.md"},"Issue Credential V1 Protocol"),".")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"This section assumes that"),(0,r.kt)("ol",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ol"},"You have ",(0,r.kt)("a",{parentName:"li",href:"../getting-started"},"set-up your develoment environment"),"."),(0,r.kt)("li",{parentName:"ol"},"You have basic knowledge of the required fields in the ",(0,r.kt)("a",{parentName:"li",href:"./agent-config"},"Agent Config")),(0,r.kt)("li",{parentName:"ol"},"You have completed the ",(0,r.kt)("a",{parentName:"li",href:"./create-a-connection"},"Create a Connection tutorial")),(0,r.kt)("li",{parentName:"ol"},"You have a registered schema and credential definition. This can be done by following the ",(0,r.kt)("a",{parentName:"li",href:"./registering-schema-and-credential-definition"},"Registering on a AnonCreds Registry")))),(0,r.kt)("h3",{id:"1-setting-up-the-agents"},"1. Setting up the agents"),(0,r.kt)("p",null,"First for both agents we must setup and initialize an agent to work with. Depending on your target, ",(0,r.kt)("a",{parentName:"p",href:"../getting-started/installation/react-native"},"React Native")," or ",(0,r.kt)("a",{parentName:"p",href:"../getting-started/installation/react-native"},"Node.js"),", it might vary."),(0,r.kt)("p",null,"In this tutorial the ",(0,r.kt)("em",{parentName:"p"},"Holder")," will be in a ",(0,r.kt)("a",{parentName:"p",href:"../getting-started/installation/nodejs"},"Node.js environment")," and the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," also in a ",(0,r.kt)("a",{parentName:"p",href:"../getting-started/installation/nodejs"},"Node.js environment"),"."),(0,r.kt)("h4",{id:"issuer"},"Issuer"),(0,r.kt)("p",null,"For the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," the setup is commonly not the same as the ",(0,r.kt)("em",{parentName:"p"},"Holder"),". In the example they both live in a server environment, meaning they do not need a mediator. More commonly, the ",(0,r.kt)("em",{parentName:"p"},"Holder")," is in a mobile environment where a mediator is required for receiving DIDComm messages."),(0,r.kt)("p",null,"It is also very important for the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," to have a public DID, for the binding with a credential definition, amongst other things. For this demo we will use ",(0,r.kt)("a",{parentName:"p",href:"http://test.bcovrin.vonx.io"},"BCovrin Test"),". If you want to follow this tutorial, you have to register a public DID ",(0,r.kt)("a",{parentName:"p",href:"http://test.bcovrin.vonx.io"},"here")," via the Wallet seed field (this must be the same as the seed inside the config under the key ",(0,r.kt)("a",{parentName:"p",href:"./agent-config#publicdidseed"},(0,r.kt)("inlineCode",{parentName:"a"},"publicDidSeed")),")."),(0,r.kt)("p",null,"In order to reach the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," we have to add a list of ",(0,r.kt)("a",{parentName:"p",href:"./agent-config#endpoints"},(0,r.kt)("inlineCode",{parentName:"a"},"endpoints"))," of the agent that exposes the ",(0,r.kt)("inlineCode",{parentName:"p"},"inboundTransport")," to the public. In the example below we add an ",(0,r.kt)("inlineCode",{parentName:"p"},"inboundTransport")," and use port ",(0,r.kt)("inlineCode",{parentName:"p"},"3002"),". For development purposes it is recommended to use a tunneling service for this, like ",(0,r.kt)("a",{parentName:"p",href:"https://ngrok.com"},"Ngrok"),". Ngrok will allow you to reach your locally exposed endpoint from the public. If a tunneling service is used, make sure to use the ",(0,r.kt)("inlineCode",{parentName:"p"},"HTTPS")," variant as mobile environments, by default, do not accept ",(0,r.kt)("inlineCode",{parentName:"p"},"HTTP")," anymore."),(0,r.kt)("p",null,"To install ",(0,r.kt)("a",{parentName:"p",href:"https://ngrok.com"},"Ngrok")," and expose the port to the public the following commands can be used:"),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"yarn",value:"tab1",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-console"},"yarn global add ngrok\n\nngrok http <PORT>\n"))),(0,r.kt)(o.Z,{label:"npm",value:"tab2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-console"},"npm install --global ngrok\n\nngrok http <PORT>\n")))),(0,r.kt)("admonition",{type:"issuer"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers issue-a-credential.ts section-1",showLineNumbers:!0,"issue-a-credential.ts":!0,"section-1":!0},""))),(0,r.kt)("h4",{id:"holder"},"Holder"),(0,r.kt)("p",null,"For the ",(0,r.kt)("em",{parentName:"p"},"Holder")," we need to setup a basic agent with a wallet, mediator, outbound transport and a ledger."),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"If you want to follow this tutorial in a mobile environment:"),(0,r.kt)("ol",{parentName:"blockquote"},(0,r.kt)("li",{parentName:"ol"},"Use the ",(0,r.kt)("inlineCode",{parentName:"li"},"agentDependencies")," from ",(0,r.kt)("inlineCode",{parentName:"li"},"@aries-framework/react-native")),(0,r.kt)("li",{parentName:"ol"},"It is very important to note that mobile agents do not support HTTP by default. It is recommended to do everything over HTTPS, but for development HTTP can be enabled for ",(0,r.kt)("a",{parentName:"li",href:"https://stackoverflow.com/questions/30731785/how-do-i-load-an-http-url-with-app-transport-security-enabled-in-ios-9"},"iOS")," and ",(0,r.kt)("a",{parentName:"li",href:"https://stackoverflow.com/questions/51902629/how-to-allow-all-network-connection-types-http-and-https-in-android-9-pie"},"Android"),"."))),(0,r.kt)("admonition",{type:"holder"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers issue-a-credential.ts section-2",showLineNumbers:!0,"issue-a-credential.ts":!0,"section-2":!0},""))),(0,r.kt)("h3",{id:"3-listening-for-incoming-credentials"},"3. Listening for incoming credentials"),(0,r.kt)("p",null,"When we want to accept a credential, we have to listen to incoming credentials and handle accordingly. In this example we do not have any user interaction, but is likely that your application would have a user-interface which would display the credential. When receiving a credential offer you can get the values from ",(0,r.kt)("inlineCode",{parentName:"p"},"credentialExchangeRecord.credentialAttributes"),"."),(0,r.kt)("admonition",{type:"holder"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers issue-a-credential.ts section-3",showLineNumbers:!0,"issue-a-credential.ts":!0,"section-3":!0},""))),(0,r.kt)("h3",{id:"4-issuing-a-credential"},"4. Issuing a credential"),(0,r.kt)("p",null,"Now that everything is setup on both sides, the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," can now offer a credential to the ",(0,r.kt)("em",{parentName:"p"},"Holder"),"."),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"In this example we do not instantiate a connection and assume that there is one. Please refer to this guide ",(0,r.kt)("a",{parentName:"p",href:"./create-a-connection"},"Create a connection")," to get a connection and connectionId.")),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Indy",value:"tab1",mdxType:"TabItem"},(0,r.kt)("admonition",{type:"issuer"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers issue-a-credential.ts section-4",showLineNumbers:!0,"issue-a-credential.ts":!0,"section-4":!0},"")))),(0,r.kt)(o.Z,{label:"AnonCreds",value:"tab2",mdxType:"TabItem"},(0,r.kt)("admonition",{type:"issuer"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers issue-a-credential.ts section-5",showLineNumbers:!0,"issue-a-credential.ts":!0,"section-5":!0},""))))),(0,r.kt)("h3",{id:"useful-resources"},"Useful resources"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://anoncreds-wg.github.io/anoncreds-spec/"},"AnonCreds")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/hyperledger/aries-rfcs/blob/main/features/0036-issue-credential/README.md"},"Issue Credential V1 Protocol")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/hyperledger/aries-rfcs/blob/main/features/0453-issue-credential-v2/README.md"},"Issue Credential V2 Protocol"))))}h.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[1993],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,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 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 o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),u=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={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,i=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=u(n),m=r,h=d["".concat(l,".").concat(m)]||d[m]||p[m]||i;return n?a.createElement(h,o(o({ref:t},c),{},{components:n})):a.createElement(h,o({ref:t},c))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:r,o[1]=s;for(var u=2;u<i;u++)o[u]=n[u];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},5162:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(7294),r=n(6010);const i={tabItem:"tabItem_Ymn6"};function o(e){let{children:t,hidden:n,className:o}=e;return a.createElement("div",{role:"tabpanel",className:(0,r.Z)(i.tabItem,o),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>N});var a=n(7462),r=n(7294),i=n(6010),o=n(2466),s=n(6550),l=n(1980),u=n(7392),c=n(12);function d(e){return function(e){return r.Children.map(e,(e=>{if((0,r.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:r}}=e;return{value:t,label:n,attributes:a,default:r}}))}function p(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??d(n);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function h(e){let{queryString:t=!1,groupId:n}=e;const a=(0,s.k6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l._X)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(a.location.search);t.set(i,e),a.replace({...a.location,search:t.toString()})}),[i,a])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,i=p(e),[o,s]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:i}))),[l,u]=h({queryString:n,groupId:a}),[d,f]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,i]=(0,c.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:a}),g=(()=>{const e=l??d;return m({value:e,tabValues:i})?e:null})();(0,r.useLayoutEffect)((()=>{g&&s(g)}),[g]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);s(e),u(e),f(e)}),[u,f,i]),tabValues:i}}var g=n(2389);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function k(e){let{className:t,block:n,selectedValue:s,selectValue:l,tabValues:u}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,o.o5)(),p=e=>{const t=e.currentTarget,n=c.indexOf(t),a=u[n].value;a!==s&&(d(t),l(a))},m=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;t=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;t=c[n]??c[c.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":n},t)},u.map((e=>{let{value:t,label:n,attributes:o}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:s===t?0:-1,"aria-selected":s===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:p},o,{className:(0,i.Z)("tabs__item",b.tabItem,o?.className,{"tabs__item--active":s===t})}),n??t)})))}function v(e){let{lazy:t,children:n,selectedValue:a}=e;if(n=Array.isArray(n)?n:[n],t){const e=n.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},n.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function y(e){const t=f(e);return r.createElement("div",{className:(0,i.Z)("tabs-container",b.tabList)},r.createElement(k,(0,a.Z)({},e,t)),r.createElement(v,(0,a.Z)({},e,t)))}function N(e){const t=(0,g.Z)();return r.createElement(y,(0,a.Z)({key:String(t)},e))}},2347:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>u,toc:()=>d});var a=n(7462),r=(n(7294),n(3905)),i=n(4866),o=n(5162);const s={},l="Issue a credential",u={unversionedId:"tutorials/issue-a-credential",id:"tutorials/issue-a-credential",title:"Issue a credential",description:"In this tutorial we will issue a credential from the Issuer to a Holder. We will start with setting up both their agents with the minimal configuration required to follow this tutorial. It is assumed that there is a connection between the Issuer and the Holder and the Issuer also has a registered schema and credential definition. After initializing the Issuer will send a credential to the holder, and will then accept this credential and automatically store it in their wallet.",source:"@site/guides/tutorials/issue-a-credential.md",sourceDirName:"tutorials",slug:"/tutorials/issue-a-credential",permalink:"/guides/0.5/tutorials/issue-a-credential",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Registering a schema and credential definition on an AnonCreds Registry",permalink:"/guides/0.5/tutorials/registering-schema-and-credential-definition"},next:{title:"Mediation",permalink:"/guides/0.5/tutorials/mediation"}},c={},d=[{value:"1. Setting up the agents",id:"1-setting-up-the-agents",level:3},{value:"Issuer",id:"issuer",level:4},{value:"Holder",id:"holder",level:4},{value:"3. Listening for incoming credentials",id:"3-listening-for-incoming-credentials",level:3},{value:"4. Issuing a credential",id:"4-issuing-a-credential",level:3},{value:"Useful resources",id:"useful-resources",level:3}],p={toc:d},m="wrapper";function h(e){let{components:t,...n}=e;return(0,r.kt)(m,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"issue-a-credential"},"Issue a credential"),(0,r.kt)("p",null,"In this tutorial we will issue a credential from the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," to a ",(0,r.kt)("em",{parentName:"p"},"Holder"),". We will start with setting up both their agents with the minimal configuration required to follow this tutorial. It is assumed that there is a connection between the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," and the ",(0,r.kt)("em",{parentName:"p"},"Holder")," and the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," also has a registered schema and credential definition. After initializing the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," will send a credential to the ",(0,r.kt)("em",{parentName:"p"},"holder"),", and will then accept this credential and automatically store it in their wallet."),(0,r.kt)("p",null,(0,r.kt)("em",{parentName:"p"},"Using ",(0,r.kt)("a",{parentName:"em",href:"https://anoncreds-wg.github.io/anoncreds-spec/"},"AnonCreds")," and the ",(0,r.kt)("a",{parentName:"em",href:"https://github.com/hyperledger/aries-rfcs/blob/main/features/0453-issue-credential-v2/README.md"},"Issue Credential V2 Protocol")," or the ",(0,r.kt)("a",{parentName:"em",href:"https://github.com/hyperledger/aries-rfcs/blob/main/features/0036-issue-credential/README.md"},"Issue Credential V1 Protocol"),".")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"This section assumes that"),(0,r.kt)("ol",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ol"},"You have ",(0,r.kt)("a",{parentName:"li",href:"../getting-started"},"set-up your develoment environment"),"."),(0,r.kt)("li",{parentName:"ol"},"You have basic knowledge of the required fields in the ",(0,r.kt)("a",{parentName:"li",href:"./agent-config"},"Agent Config")),(0,r.kt)("li",{parentName:"ol"},"You have completed the ",(0,r.kt)("a",{parentName:"li",href:"./create-a-connection"},"Create a Connection tutorial")),(0,r.kt)("li",{parentName:"ol"},"You have a registered schema and credential definition. This can be done by following the ",(0,r.kt)("a",{parentName:"li",href:"./registering-schema-and-credential-definition"},"Registering on a AnonCreds Registry")))),(0,r.kt)("h3",{id:"1-setting-up-the-agents"},"1. Setting up the agents"),(0,r.kt)("p",null,"First for both agents we must setup and initialize an agent to work with. Depending on your target, ",(0,r.kt)("a",{parentName:"p",href:"../getting-started/installation/react-native"},"React Native")," or ",(0,r.kt)("a",{parentName:"p",href:"../getting-started/installation/react-native"},"Node.js"),", it might vary."),(0,r.kt)("p",null,"In this tutorial the ",(0,r.kt)("em",{parentName:"p"},"Holder")," will be in a ",(0,r.kt)("a",{parentName:"p",href:"../getting-started/installation/nodejs"},"Node.js environment")," and the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," also in a ",(0,r.kt)("a",{parentName:"p",href:"../getting-started/installation/nodejs"},"Node.js environment"),"."),(0,r.kt)("h4",{id:"issuer"},"Issuer"),(0,r.kt)("p",null,"For the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," the setup is commonly not the same as the ",(0,r.kt)("em",{parentName:"p"},"Holder"),". In the example they both live in a server environment, meaning they do not need a mediator. More commonly, the ",(0,r.kt)("em",{parentName:"p"},"Holder")," is in a mobile environment where a mediator is required for receiving DIDComm messages."),(0,r.kt)("p",null,"It is also very important for the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," to have a public DID, for the binding with a credential definition, amongst other things. For this demo we will use ",(0,r.kt)("a",{parentName:"p",href:"http://test.bcovrin.vonx.io"},"BCovrin Test"),". If you want to follow this tutorial, you have to register a public DID ",(0,r.kt)("a",{parentName:"p",href:"http://test.bcovrin.vonx.io"},"here")," via the Wallet seed field (this must be the same as the seed inside the config under the key ",(0,r.kt)("a",{parentName:"p",href:"./agent-config#publicdidseed"},(0,r.kt)("inlineCode",{parentName:"a"},"publicDidSeed")),")."),(0,r.kt)("p",null,"In order to reach the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," we have to add a list of ",(0,r.kt)("a",{parentName:"p",href:"./agent-config#endpoints"},(0,r.kt)("inlineCode",{parentName:"a"},"endpoints"))," of the agent that exposes the ",(0,r.kt)("inlineCode",{parentName:"p"},"inboundTransport")," to the public. In the example below we add an ",(0,r.kt)("inlineCode",{parentName:"p"},"inboundTransport")," and use port ",(0,r.kt)("inlineCode",{parentName:"p"},"3002"),". For development purposes it is recommended to use a tunneling service for this, like ",(0,r.kt)("a",{parentName:"p",href:"https://ngrok.com"},"Ngrok"),". Ngrok will allow you to reach your locally exposed endpoint from the public. If a tunneling service is used, make sure to use the ",(0,r.kt)("inlineCode",{parentName:"p"},"HTTPS")," variant as mobile environments, by default, do not accept ",(0,r.kt)("inlineCode",{parentName:"p"},"HTTP")," anymore."),(0,r.kt)("p",null,"To install ",(0,r.kt)("a",{parentName:"p",href:"https://ngrok.com"},"Ngrok")," and expose the port to the public the following commands can be used:"),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"yarn",value:"tab1",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-console"},"yarn global add ngrok\n\nngrok http <PORT>\n"))),(0,r.kt)(o.Z,{label:"npm",value:"tab2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-console"},"npm install --global ngrok\n\nngrok http <PORT>\n")))),(0,r.kt)("admonition",{type:"issuer"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers issue-a-credential.ts section-1",showLineNumbers:!0,"issue-a-credential.ts":!0,"section-1":!0},""))),(0,r.kt)("h4",{id:"holder"},"Holder"),(0,r.kt)("p",null,"For the ",(0,r.kt)("em",{parentName:"p"},"Holder")," we need to setup a basic agent with a wallet, mediator, outbound transport and a ledger."),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"If you want to follow this tutorial in a mobile environment:"),(0,r.kt)("ol",{parentName:"blockquote"},(0,r.kt)("li",{parentName:"ol"},"Use the ",(0,r.kt)("inlineCode",{parentName:"li"},"agentDependencies")," from ",(0,r.kt)("inlineCode",{parentName:"li"},"@credo-ts/react-native")),(0,r.kt)("li",{parentName:"ol"},"It is very important to note that mobile agents do not support HTTP by default. It is recommended to do everything over HTTPS, but for development HTTP can be enabled for ",(0,r.kt)("a",{parentName:"li",href:"https://stackoverflow.com/questions/30731785/how-do-i-load-an-http-url-with-app-transport-security-enabled-in-ios-9"},"iOS")," and ",(0,r.kt)("a",{parentName:"li",href:"https://stackoverflow.com/questions/51902629/how-to-allow-all-network-connection-types-http-and-https-in-android-9-pie"},"Android"),"."))),(0,r.kt)("admonition",{type:"holder"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers issue-a-credential.ts section-2",showLineNumbers:!0,"issue-a-credential.ts":!0,"section-2":!0},""))),(0,r.kt)("h3",{id:"3-listening-for-incoming-credentials"},"3. Listening for incoming credentials"),(0,r.kt)("p",null,"When we want to accept a credential, we have to listen to incoming credentials and handle accordingly. In this example we do not have any user interaction, but is likely that your application would have a user-interface which would display the credential. When receiving a credential offer you can get the values from ",(0,r.kt)("inlineCode",{parentName:"p"},"credentialExchangeRecord.credentialAttributes"),"."),(0,r.kt)("admonition",{type:"holder"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers issue-a-credential.ts section-3",showLineNumbers:!0,"issue-a-credential.ts":!0,"section-3":!0},""))),(0,r.kt)("h3",{id:"4-issuing-a-credential"},"4. Issuing a credential"),(0,r.kt)("p",null,"Now that everything is setup on both sides, the ",(0,r.kt)("em",{parentName:"p"},"Issuer")," can now offer a credential to the ",(0,r.kt)("em",{parentName:"p"},"Holder"),"."),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"In this example we do not instantiate a connection and assume that there is one. Please refer to this guide ",(0,r.kt)("a",{parentName:"p",href:"./create-a-connection"},"Create a connection")," to get a connection and connectionId.")),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Indy",value:"tab1",mdxType:"TabItem"},(0,r.kt)("admonition",{type:"issuer"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers issue-a-credential.ts section-4",showLineNumbers:!0,"issue-a-credential.ts":!0,"section-4":!0},"")))),(0,r.kt)(o.Z,{label:"AnonCreds",value:"tab2",mdxType:"TabItem"},(0,r.kt)("admonition",{type:"issuer"},(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers issue-a-credential.ts section-5",showLineNumbers:!0,"issue-a-credential.ts":!0,"section-5":!0},""))))),(0,r.kt)("h3",{id:"useful-resources"},"Useful resources"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://anoncreds-wg.github.io/anoncreds-spec/"},"AnonCreds")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/hyperledger/aries-rfcs/blob/main/features/0036-issue-credential/README.md"},"Issue Credential V1 Protocol")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/hyperledger/aries-rfcs/blob/main/features/0453-issue-credential-v2/README.md"},"Issue Credential V2 Protocol"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c5492fa7.668266bc.js b/assets/js/c5492fa7.668266bc.js deleted file mode 100644 index 1f45cbce..00000000 --- a/assets/js/c5492fa7.668266bc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[8041],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var r=n(7294);function s(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 r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){s(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,r,s=function(e,t){if(null==e)return{};var n,r,s={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(s[n]=e[n]);return s}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var n=e.components,s=e.mdxType,i=e.originalType,l=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),d=p(n),c=s,m=d["".concat(l,".").concat(c)]||d[c]||g[c]||i;return n?r.createElement(m,a(a({ref:t},u),{},{components:n})):r.createElement(m,a({ref:t},u))}));function m(e,t){var n=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var i=n.length,a=new Array(i);a[0]=c;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[d]="string"==typeof e?e:s,a[1]=o;for(var p=2;p<i;p++)a[p]=n[p];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}c.displayName="MDXCreateElement"},6870:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>g,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var r=n(7462),s=(n(7294),n(3905));const i={},a="Postgres Setup for Linux",o={unversionedId:"tutorials/indy-sdk-postgres-database-nodejs/linux",id:"tutorials/indy-sdk-postgres-database-nodejs/linux",title:"Postgres Setup for Linux",description:"Prerequisites",source:"@site/guides/tutorials/indy-sdk-postgres-database-nodejs/linux.md",sourceDirName:"tutorials/indy-sdk-postgres-database-nodejs",slug:"/tutorials/indy-sdk-postgres-database-nodejs/linux",permalink:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/linux",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Using PostgreSQL as Database for Indy SDK in Node.js",permalink:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/"},next:{title:"Postgres Setup for macOS",permalink:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/macos"}},l={},p=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Step 1: installing the dependencies using apt",id:"step-1-installing-the-dependencies-using-apt",level:2},{value:"Debian based (Ubuntu, Mint, Kali, Deepin, etc.)",id:"debian-based-ubuntu-mint-kali-deepin-etc",level:3},{value:"Step 2: Build Postgres plugin",id:"step-2-build-postgres-plugin",level:2},{value:"Step 2.1: Cloning the indy-sdk",id:"step-21-cloning-the-indy-sdk",level:3},{value:"Step 2.2: Building Postgres plugin",id:"step-22-building-postgres-plugin",level:3},{value:"Step 2.3: Moving the file",id:"step-23-moving-the-file",level:3}],u={toc:p},d="wrapper";function g(e){let{components:t,...n}=e;return(0,s.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"postgres-setup-for-linux"},"Postgres Setup for Linux"),(0,s.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"A system package manager (like APT, Pacman, etc.)"),(0,s.kt)("li",{parentName:"ul"},"Cargo (We have to build Postgres plugin from source)"),(0,s.kt)("li",{parentName:"ul"},"git (to clone a repo, could also be done with downloading the zip from the GitHub page)")),(0,s.kt)("h2",{id:"step-1-installing-the-dependencies-using-apt"},"Step 1: installing the dependencies using apt"),(0,s.kt)("h3",{id:"debian-based-ubuntu-mint-kali-deepin-etc"},"Debian based (Ubuntu, Mint, Kali, Deepin, etc.)"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sh"},"sudo apt install libzmq3-dev libsodium-dev libssl-dev\n")),(0,s.kt)("h2",{id:"step-2-build-postgres-plugin"},"Step 2: Build Postgres plugin"),(0,s.kt)("p",null,"Building Postgres plugin from the indy-sdk repo with cargo."),(0,s.kt)("h3",{id:"step-21-cloning-the-indy-sdk"},"Step 2.1: Cloning the indy-sdk"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sh"},"git clone https://github.com/hyperledger/indy-sdk.git\n\ncd indy-sdk/experimental/plugins/postgres_storage\n")),(0,s.kt)("h3",{id:"step-22-building-postgres-plugin"},"Step 2.2: Building Postgres plugin"),(0,s.kt)("p",null,"If this step throws any errors, it might be because you miss some packages. Step 1 of this guide provided the dependencies that are required, but it also assumed that you have some basic development packages installed. If you are missing some packages, you can install them with your package manager."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sh"},"pwd\n\n# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage\n\ncargo build --release\n")),(0,s.kt)("h3",{id:"step-23-moving-the-file"},"Step 2.3: Moving the file"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sh"},"pwd\n\n# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage\n\nsudo mv ./target/release/libindystrgpostgres.so /usr/local/lib/libindystrgpostgres.so\n")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c6c95224.f6f2277e.js b/assets/js/c6c95224.f6f2277e.js deleted file mode 100644 index dfa30003..00000000 --- a/assets/js/c6c95224.f6f2277e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[7572],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=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 r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var d=r.createContext({}),p=function(e){var t=r.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(d.Provider,{value:t},e.children)},u="mdxType",l={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,d=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=p(n),f=o,h=u["".concat(d,".").concat(f)]||u[f]||l[f]||i;return n?r.createElement(h,a(a({ref:t},c),{},{components:n})):r.createElement(h,a({ref:t},c))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=f;var s={};for(var d in t)hasOwnProperty.call(t,d)&&(s[d]=t[d]);s.originalType=e,s[u]="string"==typeof e?e:o,a[1]=s;for(var p=2;p<i;p++)a[p]=n[p];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}f.displayName="MDXCreateElement"},7946:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var r=n(7462),o=(n(7294),n(3905));const i={},a="React Native",s={unversionedId:"getting-started/set-up/indy-sdk/react-native",id:"getting-started/set-up/indy-sdk/react-native",title:"React Native",description:"The setup of Indy SDK for React Native is rather different than Node.JS. We do not have to install dependencies on the host-platform, but for the build target. For React Native this would be the Indy SDK for Android & iOS. This guide covers both the Android and iOS setup, as in most React Native projects you will need both.",source:"@site/guides/getting-started/set-up/indy-sdk/react-native.md",sourceDirName:"getting-started/set-up/indy-sdk",slug:"/getting-started/set-up/indy-sdk/react-native",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/react-native",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"macOS (ARM)",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/macos-arm"},next:{title:"AnonCreds RS",permalink:"/guides/0.5/getting-started/set-up/anoncreds-rs"}},d={},p=[{value:"Expo",id:"expo",level:2},{value:"Without Expo",id:"without-expo",level:2}],c={toc:p},u="wrapper";function l(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"react-native"},"React Native"),(0,o.kt)("p",null,"The setup of Indy SDK for React Native is rather different than Node.JS. We do not have to install dependencies on the host-platform, but for the build target. For React Native this would be the Indy SDK for Android & iOS. This guide covers both the Android and iOS setup, as in most React Native projects you will need both."),(0,o.kt)("h2",{id:"expo"},"Expo"),(0,o.kt)("p",null,"If you're using ",(0,o.kt)("a",{parentName:"p",href:"https://expo.dev"},"Expo"),", the recommended way to install the Indy SDK is by using the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/animo/indy-sdk-expo-plugin"},"Indy SDK Expo Plugin"),". This will correclty set-up your project with the Indy SDK using an ",(0,o.kt)("a",{parentName:"p",href:"https://docs.expo.dev/guides/config-plugins/"},"Expo Config Plugin")," for both iOS and Android."),(0,o.kt)("p",null,"Refer to the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/animo/indy-sdk-expo-plugin"},"Indy SDK Expo Plugin")," repository for installation instructions."),(0,o.kt)("h2",{id:"without-expo"},"Without Expo"),(0,o.kt)("p",null,"When not using Expo, you will need to set-up the Indy SDK for both Android and iOS using the ",(0,o.kt)("inlineCode",{parentName:"p"},"indy-sdk-react-native")," package directly. Refer to the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-sdk-react-native"},"Indy SDK React Native")," repository for installation instructions."))}l.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/da788397.738bc3cb.js b/assets/js/da788397.738bc3cb.js new file mode 100644 index 00000000..9ab7c91f --- /dev/null +++ b/assets/js/da788397.738bc3cb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[4281],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(7294);function a(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 r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(n),m=a,f=d["".concat(l,".").concat(m)]||d[m]||p[m]||o;return n?r.createElement(f,s(s({ref:t},c),{},{components:n})):r.createElement(f,s({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:a,s[1]=i;for(var u=2;u<o;u++)s[u]=n[u];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},5162:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(7294),a=n(6010);const o={tabItem:"tabItem_Ymn6"};function s(e){let{children:t,hidden:n,className:s}=e;return r.createElement("div",{role:"tabpanel",className:(0,a.Z)(o.tabItem,s),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>w});var r=n(7462),a=n(7294),o=n(6010),s=n(2466),i=n(6550),l=n(1980),u=n(7392),c=n(12);function d(e){return function(e){return a.Children.map(e,(e=>{if((0,a.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:a}}=e;return{value:t,label:n,attributes:r,default:a}}))}function p(e){const{values:t,children:n}=e;return(0,a.useMemo)((()=>{const e=t??d(n);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function f(e){let{queryString:t=!1,groupId:n}=e;const r=(0,i.k6)(),o=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l._X)(o),(0,a.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(r.location.search);t.set(o,e),r.replace({...r.location,search:t.toString()})}),[o,r])]}function g(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,o=p(e),[s,i]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:o}))),[l,u]=f({queryString:n,groupId:r}),[d,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,o]=(0,c.Nk)(n);return[r,(0,a.useCallback)((e=>{n&&o.set(e)}),[n,o])]}({groupId:r}),h=(()=>{const e=l??d;return m({value:e,tabValues:o})?e:null})();(0,a.useLayoutEffect)((()=>{h&&i(h)}),[h]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);i(e),u(e),g(e)}),[u,g,o]),tabValues:o}}var h=n(2389);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function y(e){let{className:t,block:n,selectedValue:i,selectValue:l,tabValues:u}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,s.o5)(),p=e=>{const t=e.currentTarget,n=c.indexOf(t),r=u[n].value;r!==i&&(d(t),l(r))},m=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;t=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;t=c[n]??c[c.length-1];break}}t?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":n},t)},u.map((e=>{let{value:t,label:n,attributes:s}=e;return a.createElement("li",(0,r.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:p},s,{className:(0,o.Z)("tabs__item",b.tabItem,s?.className,{"tabs__item--active":i===t})}),n??t)})))}function v(e){let{lazy:t,children:n,selectedValue:r}=e;if(n=Array.isArray(n)?n:[n],t){const e=n.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},n.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==r}))))}function k(e){const t=g(e);return a.createElement("div",{className:(0,o.Z)("tabs-container",b.tabList)},a.createElement(y,(0,r.Z)({},e,t)),a.createElement(v,(0,r.Z)({},e,t)))}function w(e){const t=(0,h.Z)();return a.createElement(k,(0,r.Z)({key:String(t)},e))}},3423:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>f,frontMatter:()=>i,metadata:()=>u,toc:()=>d});var r=n(7462),a=(n(7294),n(3905)),o=n(4866),s=n(5162);const i={},l="AnonCreds",u={unversionedId:"getting-started/set-up/anoncreds",id:"getting-started/set-up/anoncreds",title:"AnonCreds",description:"The AnonCreds module provides functionality for issuing and verifying AnonCreds credentials in Credo. The AnonCreds implementation is based on AnonCreds RS, a direct implementation of the AnonCreds V1.0 specification that provides functionality like; creating a schema object, creating a credential definition object, creating a credential, verifying a proof presentation and much more.",source:"@site/guides/getting-started/set-up/anoncreds.md",sourceDirName:"getting-started/set-up",slug:"/getting-started/set-up/anoncreds",permalink:"/guides/0.5/getting-started/set-up/anoncreds",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Aries Askar",permalink:"/guides/0.5/getting-started/set-up/aries-askar"},next:{title:"Indy VDR",permalink:"/guides/0.5/getting-started/set-up/indy-vdr"}},c={},d=[{value:"Installing",id:"installing",level:3},{value:"Adding AnonCreds to the agent",id:"adding-anoncreds-to-the-agent",level:3},{value:"Configuration",id:"configuration",level:3}],p={toc:d},m="wrapper";function f(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"anoncreds"},"AnonCreds"),(0,a.kt)("p",null,"The AnonCreds module provides functionality for issuing and verifying ",(0,a.kt)("a",{parentName:"p",href:"https://hyperledger.github.io/anoncreds-spec/"},"AnonCreds")," credentials in Credo. The AnonCreds implementation is based on ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/anoncreds-rs"},"AnonCreds RS"),", a direct implementation of the ",(0,a.kt)("a",{parentName:"p",href:"https://hyperledger.github.io/anoncreds-spec/"},"AnonCreds V1.0 specification")," that provides functionality like; creating a schema object, creating a credential definition object, creating a credential, verifying a proof presentation and much more."),(0,a.kt)("h3",{id:"installing"},"Installing"),(0,a.kt)("p",null,"When using Credo with AnonCreds, there are a few extra dependencies that need to be installed. We need to install ",(0,a.kt)("inlineCode",{parentName:"p"},"@credo-ts/anoncreds")," package, which contains the interfaces, and ",(0,a.kt)("inlineCode",{parentName:"p"},"@hyperledger/anoncreds-<platform>")," package which is an implementation which depends on a wrapper of anoncreds-rs. Currently there are bindings for Node.JS, as ",(0,a.kt)("inlineCode",{parentName:"p"},"@hyperledger/anoncreds-nodejs"),", and React Native as ",(0,a.kt)("inlineCode",{parentName:"p"},"@hyperlegder/anoncreds-react-native"),"."),(0,a.kt)(o.Z,{mdxType:"Tabs"},(0,a.kt)(s.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @credo-ts/anoncreds@^0.5.0 @hyperledger/anoncreds-nodejs@^0.2.0\n"))),(0,a.kt)(s.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @credo-ts/anoncreds@^0.5.0 @hyperledger/anoncreds-react-native@^0.2.0\n")))),(0,a.kt)("h3",{id:"adding-anoncreds-to-the-agent"},"Adding AnonCreds to the agent"),(0,a.kt)("p",null,"After installing the dependencies, we should register the ",(0,a.kt)("inlineCode",{parentName:"p"},"AnonCredsModule")," on the agent."),(0,a.kt)(o.Z,{mdxType:"Tabs"},(0,a.kt)(s.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-anoncreds.ts section-1",showLineNumbers:!0,"set-up-anoncreds.ts":!0,"section-1":!0},""))),(0,a.kt)(s.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-anoncreds-rn.ts section-1",showLineNumbers:!0,"set-up-anoncreds-rn.ts":!0,"section-1":!0},"")))),(0,a.kt)("h3",{id:"configuration"},"Configuration"),(0,a.kt)("p",null,"As you can see, the AnonCreds module takes a list of registry modules. These modules will be used to resolve the AnonCreds objects. ",(0,a.kt)("a",{parentName:"p",href:"./indy-vdr"},"Indy VDR")," can be used as an AnonCreds registry for Hyperledger Indy networks, and ",(0,a.kt)("a",{parentName:"p",href:"./cheqd"},"Cheqd")," can be used as an AnonCreds registry for Cheqd networks."))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/eeecf87c.255310e2.js b/assets/js/eeecf87c.255310e2.js deleted file mode 100644 index 3034cdb0..00000000 --- a/assets/js/eeecf87c.255310e2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[7547],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>f});var r=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 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 i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),p=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},l=function(e){var t=p(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),d=p(n),m=o,f=d["".concat(c,".").concat(m)]||d[m]||u[m]||a;return n?r.createElement(f,i(i({ref:t},l),{},{components:n})):r.createElement(f,i({ref:t},l))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=m;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[d]="string"==typeof e?e:o,i[1]=s;for(var p=2;p<a;p++)i[p]=n[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},3076:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>p});var r=n(7462),o=(n(7294),n(3905));const a={},i="Platform and Environment",s={unversionedId:"concepts/platform-and-environment",id:"concepts/platform-and-environment",title:"Platform and Environment",description:"Credo is developed to support a Node.JS and React Native environment. With this it is entirely possible to build an entire SSI ecosystem with Credo. This would use Node.JS as an issuer as a verifier, and uses React Native as a holder.",source:"@site/guides/concepts/platform-and-environment.md",sourceDirName:"concepts",slug:"/concepts/platform-and-environment",permalink:"/guides/0.5/concepts/platform-and-environment",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"DIDs and DIDComm",permalink:"/guides/0.5/concepts/did-and-didcomm"},next:{title:"Tutorials",permalink:"/guides/0.5/tutorials/"}},c={},p=[],l={toc:p},d="wrapper";function u(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"platform-and-environment"},"Platform and Environment"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/openwallet-foundation/credo-ts"},"Credo")," is developed to support a ",(0,o.kt)("a",{parentName:"p",href:"https://nodejs.org"},"Node.JS")," and ",(0,o.kt)("a",{parentName:"p",href:"https://reactnative.dev"},"React Native")," environment. With this it is entirely possible to build an entire SSI ecosystem with Credo. This would use Node.JS as an issuer as a verifier, and uses React Native as a holder."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/eeecf87c.4f538e64.js b/assets/js/eeecf87c.4f538e64.js new file mode 100644 index 00000000..64b352d3 --- /dev/null +++ b/assets/js/eeecf87c.4f538e64.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[7547],{3905:(e,t,r)=>{r.d(t,{Zo:()=>l,kt:()=>f});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),p=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},l=function(e){var t=p(e.components);return n.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),d=p(r),m=o,f=d["".concat(c,".").concat(m)]||d[m]||u[m]||a;return r?n.createElement(f,i(i({ref:t},l),{},{components:r})):n.createElement(f,i({ref:t},l))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[d]="string"==typeof e?e:o,i[1]=s;for(var p=2;p<a;p++)i[p]=r[p];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},3076:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));const a={},i="Platform and Environment",s={unversionedId:"concepts/platform-and-environment",id:"concepts/platform-and-environment",title:"Platform and Environment",description:"Credo is developed to support a Node.JS and React Native environment. With this it is entirely possible to build an entire SSI ecosystem with Credo. This would use Node.JS as an issuer as a verifier, and uses React Native as a holder.",source:"@site/guides/concepts/platform-and-environment.md",sourceDirName:"concepts",slug:"/concepts/platform-and-environment",permalink:"/guides/0.5/concepts/platform-and-environment",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"DIDs and DIDComm",permalink:"/guides/0.5/concepts/did-and-didcomm"},next:{title:"Supported Features",permalink:"/guides/0.5/features/"}},c={},p=[],l={toc:p},d="wrapper";function u(e){let{components:t,...r}=e;return(0,o.kt)(d,(0,n.Z)({},l,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"platform-and-environment"},"Platform and Environment"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/openwallet-foundation/credo-ts"},"Credo")," is developed to support a ",(0,o.kt)("a",{parentName:"p",href:"https://nodejs.org"},"Node.JS")," and ",(0,o.kt)("a",{parentName:"p",href:"https://reactnative.dev"},"React Native")," environment. With this it is entirely possible to build an entire SSI ecosystem with Credo. This would use Node.JS as an issuer as a verifier, and uses React Native as a holder."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f800d23c.1a67a51b.js b/assets/js/f800d23c.1a67a51b.js new file mode 100644 index 00000000..8b5885f9 --- /dev/null +++ b/assets/js/f800d23c.1a67a51b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[8251],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>g});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},s=Object.keys(e);for(a=0;a<s.length;a++)r=s[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a<s.length;a++)r=s[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),u=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,s=e.originalType,l=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=u(r),m=n,g=d["".concat(l,".").concat(m)]||d[m]||p[m]||s;return r?a.createElement(g,i(i({ref:t},c),{},{components:r})):a.createElement(g,i({ref:t},c))}));function g(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=r.length,i=new Array(s);i[0]=m;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[d]="string"==typeof e?e:n,i[1]=o;for(var u=2;u<s;u++)i[u]=r[u];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},5162:(e,t,r)=>{r.d(t,{Z:()=>i});var a=r(7294),n=r(6010);const s={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:r,className:i}=e;return a.createElement("div",{role:"tabpanel",className:(0,n.Z)(s.tabItem,i),hidden:r},t)}},4866:(e,t,r)=>{r.d(t,{Z:()=>w});var a=r(7462),n=r(7294),s=r(6010),i=r(2466),o=r(6550),l=r(1980),u=r(7392),c=r(12);function d(e){return function(e){return n.Children.map(e,(e=>{if((0,n.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:r,attributes:a,default:n}}=e;return{value:t,label:r,attributes:a,default:n}}))}function p(e){const{values:t,children:r}=e;return(0,n.useMemo)((()=>{const e=t??d(r);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,r])}function m(e){let{value:t,tabValues:r}=e;return r.some((e=>e.value===t))}function g(e){let{queryString:t=!1,groupId:r}=e;const a=(0,o.k6)(),s=function(e){let{queryString:t=!1,groupId:r}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!r)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:t,groupId:r});return[(0,l._X)(s),(0,n.useCallback)((e=>{if(!s)return;const t=new URLSearchParams(a.location.search);t.set(s,e),a.replace({...a.location,search:t.toString()})}),[s,a])]}function f(e){const{defaultValue:t,queryString:r=!1,groupId:a}=e,s=p(e),[i,o]=(0,n.useState)((()=>function(e){let{defaultValue:t,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!m({value:t,tabValues:r}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=r.find((e=>e.default))??r[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:s}))),[l,u]=g({queryString:r,groupId:a}),[d,f]=function(e){let{groupId:t}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,s]=(0,c.Nk)(r);return[a,(0,n.useCallback)((e=>{r&&s.set(e)}),[r,s])]}({groupId:a}),b=(()=>{const e=l??d;return m({value:e,tabValues:s})?e:null})();(0,n.useLayoutEffect)((()=>{b&&o(b)}),[b]);return{selectedValue:i,selectValue:(0,n.useCallback)((e=>{if(!m({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),f(e)}),[u,f,s]),tabValues:s}}var b=r(2389);const h={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function k(e){let{className:t,block:r,selectedValue:o,selectValue:l,tabValues:u}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,i.o5)(),p=e=>{const t=e.currentTarget,r=c.indexOf(t),a=u[r].value;a!==o&&(d(t),l(a))},m=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const r=c.indexOf(e.currentTarget)+1;t=c[r]??c[0];break}case"ArrowLeft":{const r=c.indexOf(e.currentTarget)-1;t=c[r]??c[c.length-1];break}}t?.focus()};return n.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.Z)("tabs",{"tabs--block":r},t)},u.map((e=>{let{value:t,label:r,attributes:i}=e;return n.createElement("li",(0,a.Z)({role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:p},i,{className:(0,s.Z)("tabs__item",h.tabItem,i?.className,{"tabs__item--active":o===t})}),r??t)})))}function y(e){let{lazy:t,children:r,selectedValue:a}=e;if(r=Array.isArray(r)?r:[r],t){const e=r.find((e=>e.props.value===a));return e?(0,n.cloneElement)(e,{className:"margin-top--md"}):null}return n.createElement("div",{className:"margin-top--md"},r.map(((e,t)=>(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function v(e){const t=f(e);return n.createElement("div",{className:(0,s.Z)("tabs-container",h.tabList)},n.createElement(k,(0,a.Z)({},e,t)),n.createElement(y,(0,a.Z)({},e,t)))}function w(e){const t=(0,b.Z)();return n.createElement(v,(0,a.Z)({key:String(t)},e))}},440:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>g,frontMatter:()=>o,metadata:()=>u,toc:()=>d});var a=r(7462),n=(r(7294),r(3905)),s=r(4866),i=r(5162);const o={},l="Aries Askar",u={unversionedId:"getting-started/set-up/aries-askar",id:"getting-started/set-up/aries-askar",title:"Aries Askar",description:"Aries Askar provides secure, encrypted storage and cryptographic support for encrypting, decrypting, signing and verifying data. It also provides both the Wallet and StorageService implementations for the agent.",source:"@site/guides/getting-started/set-up/aries-askar.md",sourceDirName:"getting-started/set-up",slug:"/getting-started/set-up/aries-askar",permalink:"/guides/0.5/getting-started/set-up/aries-askar",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Agent Setup",permalink:"/guides/0.5/getting-started/set-up/"},next:{title:"AnonCreds",permalink:"/guides/0.5/getting-started/set-up/anoncreds"}},c={},d=[{value:"Installing Aries Askar",id:"installing-aries-askar",level:3},{value:"Adding Aries Askar to the Agent",id:"adding-aries-askar-to-the-agent",level:3}],p={toc:d},m="wrapper";function g(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"aries-askar"},"Aries Askar"),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/aries-askar"},"Aries Askar")," provides secure, encrypted storage and cryptographic support for encrypting, decrypting, signing and verifying data. It also provides both the ",(0,n.kt)("inlineCode",{parentName:"p"},"Wallet")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"StorageService")," implementations for the agent."),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"If you're upgrading from the Indy SDK to Aries Askar, see ",(0,n.kt)("a",{parentName:"p",href:"../updating/update-indy-sdk-to-askar"},"Migrating from an Indy SDK Wallet to Aries Askar"))),(0,n.kt)("h3",{id:"installing-aries-askar"},"Installing Aries Askar"),(0,n.kt)("p",null,"When using Credo with Aries Askar, there are a few extra dependencies that need to be installed. We need to install the ",(0,n.kt)("inlineCode",{parentName:"p"},"@credo-ts/askar")," package, which implements the needed interfaces for the agent. Secondly, we need to add native bindings for the specific platform ",(0,n.kt)("inlineCode",{parentName:"p"},"@hyperledger/aries-askar-<platform>"),". Currently there are bindings for Node.JS, as ",(0,n.kt)("inlineCode",{parentName:"p"},"@hyperledger/aries-askar-nodejs"),", and React Native as ",(0,n.kt)("inlineCode",{parentName:"p"},"@hyperlegder/aries-askar-react-native"),"."),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(i.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @credo-ts/askar@^0.5.0 @hyperledger/aries-askar-nodejs@^0.2.0\n"))),(0,n.kt)(i.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @credo-ts/askar@^0.5.0 @hyperledger/aries-askar-react-native@^0.2.0\n")))),(0,n.kt)("h3",{id:"adding-aries-askar-to-the-agent"},"Adding Aries Askar to the Agent"),(0,n.kt)("p",null,"After installing the dependencies, we can register the Askar Module on the agent."),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(i.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-askar.ts section-1",showLineNumbers:!0,"set-up-askar.ts":!0,"section-1":!0},""))),(0,n.kt)(i.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-askar-rn.ts section-1",showLineNumbers:!0,"set-up-askar-rn.ts":!0,"section-1":!0},"")))))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f800d23c.fb13addf.js b/assets/js/f800d23c.fb13addf.js deleted file mode 100644 index 527e7e0f..00000000 --- a/assets/js/f800d23c.fb13addf.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[8251],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},s=Object.keys(e);for(a=0;a<s.length;a++)r=s[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a<s.length;a++)r=s[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),u=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,s=e.originalType,l=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),c=u(r),m=n,f=c["".concat(l,".").concat(m)]||c[m]||d[m]||s;return r?a.createElement(f,i(i({ref:t},p),{},{components:r})):a.createElement(f,i({ref:t},p))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=r.length,i=new Array(s);i[0]=m;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[c]="string"==typeof e?e:n,i[1]=o;for(var u=2;u<s;u++)i[u]=r[u];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},5162:(e,t,r)=>{r.d(t,{Z:()=>i});var a=r(7294),n=r(6010);const s={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:r,className:i}=e;return a.createElement("div",{role:"tabpanel",className:(0,n.Z)(s.tabItem,i),hidden:r},t)}},4866:(e,t,r)=>{r.d(t,{Z:()=>N});var a=r(7462),n=r(7294),s=r(6010),i=r(2466),o=r(6550),l=r(1980),u=r(7392),p=r(12);function c(e){return function(e){return n.Children.map(e,(e=>{if((0,n.isValidElement)(e)&&"value"in e.props)return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))}(e).map((e=>{let{props:{value:t,label:r,attributes:a,default:n}}=e;return{value:t,label:r,attributes:a,default:n}}))}function d(e){const{values:t,children:r}=e;return(0,n.useMemo)((()=>{const e=t??c(r);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,r])}function m(e){let{value:t,tabValues:r}=e;return r.some((e=>e.value===t))}function f(e){let{queryString:t=!1,groupId:r}=e;const a=(0,o.k6)(),s=function(e){let{queryString:t=!1,groupId:r}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!r)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:t,groupId:r});return[(0,l._X)(s),(0,n.useCallback)((e=>{if(!s)return;const t=new URLSearchParams(a.location.search);t.set(s,e),a.replace({...a.location,search:t.toString()})}),[s,a])]}function g(e){const{defaultValue:t,queryString:r=!1,groupId:a}=e,s=d(e),[i,o]=(0,n.useState)((()=>function(e){let{defaultValue:t,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!m({value:t,tabValues:r}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=r.find((e=>e.default))??r[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:s}))),[l,u]=f({queryString:r,groupId:a}),[c,g]=function(e){let{groupId:t}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,s]=(0,p.Nk)(r);return[a,(0,n.useCallback)((e=>{r&&s.set(e)}),[r,s])]}({groupId:a}),k=(()=>{const e=l??c;return m({value:e,tabValues:s})?e:null})();(0,n.useLayoutEffect)((()=>{k&&o(k)}),[k]);return{selectedValue:i,selectValue:(0,n.useCallback)((e=>{if(!m({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),g(e)}),[u,g,s]),tabValues:s}}var k=r(2389);const h={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function b(e){let{className:t,block:r,selectedValue:o,selectValue:l,tabValues:u}=e;const p=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.o5)(),d=e=>{const t=e.currentTarget,r=p.indexOf(t),a=u[r].value;a!==o&&(c(t),l(a))},m=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const r=p.indexOf(e.currentTarget)+1;t=p[r]??p[0];break}case"ArrowLeft":{const r=p.indexOf(e.currentTarget)-1;t=p[r]??p[p.length-1];break}}t?.focus()};return n.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.Z)("tabs",{"tabs--block":r},t)},u.map((e=>{let{value:t,label:r,attributes:i}=e;return n.createElement("li",(0,a.Z)({role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,key:t,ref:e=>p.push(e),onKeyDown:m,onClick:d},i,{className:(0,s.Z)("tabs__item",h.tabItem,i?.className,{"tabs__item--active":o===t})}),r??t)})))}function y(e){let{lazy:t,children:r,selectedValue:a}=e;if(r=Array.isArray(r)?r:[r],t){const e=r.find((e=>e.props.value===a));return e?(0,n.cloneElement)(e,{className:"margin-top--md"}):null}return n.createElement("div",{className:"margin-top--md"},r.map(((e,t)=>(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function v(e){const t=g(e);return n.createElement("div",{className:(0,s.Z)("tabs-container",h.tabList)},n.createElement(b,(0,a.Z)({},e,t)),n.createElement(y,(0,a.Z)({},e,t)))}function N(e){const t=(0,k.Z)();return n.createElement(v,(0,a.Z)({key:String(t)},e))}},440:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>f,frontMatter:()=>o,metadata:()=>u,toc:()=>c});var a=r(7462),n=(r(7294),r(3905)),s=r(4866),i=r(5162);const o={},l="Aries Askar",u={unversionedId:"getting-started/set-up/aries-askar",id:"getting-started/set-up/aries-askar",title:"Aries Askar",description:"Aries Askar provides secure, encrypted storage and cryptographic support for encrypting, decrypting, signing and verifying data. It also provides both the Wallet and StorageService implementations for the agent.",source:"@site/guides/getting-started/set-up/aries-askar.md",sourceDirName:"getting-started/set-up",slug:"/getting-started/set-up/aries-askar",permalink:"/guides/0.5/getting-started/set-up/aries-askar",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Agent Setup",permalink:"/guides/0.5/getting-started/set-up/"},next:{title:"Indy SDK",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/"}},p={},c=[{value:"Installing Aries Askar",id:"installing-aries-askar",level:3},{value:"Adding Aries Askar to the Agent",id:"adding-aries-askar-to-the-agent",level:3},{value:"Supported Node.JS versions for Aries Askar",id:"supported-nodejs-versions-for-aries-askar",level:3}],d={toc:c},m="wrapper";function f(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"aries-askar"},"Aries Askar"),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/aries-askar"},"Aries Askar")," provides secure, encrypted storage and cryptographic support for encrypting, decrypting, signing and verifying data. It also provides both the ",(0,n.kt)("inlineCode",{parentName:"p"},"Wallet")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"StorageService")," implementations for the agent."),(0,n.kt)("admonition",{type:"caution"},(0,n.kt)("p",{parentName:"admonition"},"Although Aries Askar is stable and already used in production in agents such as ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/aries-cloudagent-python"},"Aries Cloud Agent Python"),", support for Aries Askar in Credo is currently experimental. We recommend new projects to use Aries Askar from the start, and also to migrate existing projects to Aries Askar. However, projects may experience some issues. If you encounter any issues, please ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/openwallet-foundation/credo-ts/issues/new"},"open an issue"),"."),(0,n.kt)("p",{parentName:"admonition"},"Currently, there are few limitations to using Aries Askar."),(0,n.kt)("ul",{parentName:"admonition"},(0,n.kt)("li",{parentName:"ul"},"When running in Node.JS, only Node.JS 18 is supported for now. See ",(0,n.kt)("a",{parentName:"li",href:"#supported-nodejs-versions-for-aries-askar"},"Supported Node.JS versions for Aries Askar")),(0,n.kt)("li",{parentName:"ul"},"Install scripts rely on bash command substitution to get the proper binaries for each system architecture and platform. Therefore, if you are under Windows, you must configure ",(0,n.kt)("inlineCode",{parentName:"li"},"npm")," or ",(0,n.kt)("inlineCode",{parentName:"li"},"yarn")," to use a bash-compliant shell (e.g. ",(0,n.kt)("inlineCode",{parentName:"li"},'npm config set script-shell "C:\\\\Program Files\\\\git\\\\bin\\\\bash.exe"'),")"))),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"If you're upgrading from the Indy SDK to Aries Askar, see ",(0,n.kt)("a",{parentName:"p",href:"../updating/update-indy-sdk-to-askar"},"Migrating from an Indy SDK Wallet to Aries Askar"))),(0,n.kt)("h3",{id:"installing-aries-askar"},"Installing Aries Askar"),(0,n.kt)("p",null,"When using Credo with Aries Askar, there are a few extra dependencies that need to be installed. We need to install the ",(0,n.kt)("inlineCode",{parentName:"p"},"@aries-framework/askar")," package, which implements the needed interfaces for the agent. Secondly, we need to add native bindings for the specific platform ",(0,n.kt)("inlineCode",{parentName:"p"},"@hyperledger/aries-askar-<platform>"),". Currently there are bindings for Node.JS, as ",(0,n.kt)("inlineCode",{parentName:"p"},"@hyperledger/aries-askar-nodejs"),", and React Native as ",(0,n.kt)("inlineCode",{parentName:"p"},"@hyperlegder/aries-askar-react-native"),"."),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(i.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @aries-framework/askar@^0.4.0 @hyperledger/aries-askar-nodejs@^0.1.0\n"))),(0,n.kt)(i.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-console"},"yarn add @aries-framework/askar@^0.4.0 @hyperledger/aries-askar-react-native@^0.1.0\n")))),(0,n.kt)("h3",{id:"adding-aries-askar-to-the-agent"},"Adding Aries Askar to the Agent"),(0,n.kt)("p",null,"After installing the dependencies, we can register the Askar Module on the agent."),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(i.Z,{label:"Node.JS",value:"tab1",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-askar.ts section-1",showLineNumbers:!0,"set-up-askar.ts":!0,"section-1":!0},""))),(0,n.kt)(i.Z,{label:"React Native",value:"tab2",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-typescript",metastring:"showLineNumbers set-up-askar-rn.ts section-1",showLineNumbers:!0,"set-up-askar-rn.ts":!0,"section-1":!0},"")))),(0,n.kt)("h3",{id:"supported-nodejs-versions-for-aries-askar"},"Supported Node.JS versions for Aries Askar"),(0,n.kt)("p",null,"Due to an issue in ",(0,n.kt)("inlineCode",{parentName:"p"},"ref-napi")," (which is used in the Node.JS bindings for Aries Askar), performance for Aries Askar in Node.JS is not as expected. A patched version for ",(0,n.kt)("inlineCode",{parentName:"p"},"ref-napi")," has been published that fixes this issue, but this only works in Node.JS 18+."),(0,n.kt)("p",null,"To use Aries Askar in Node.JS, make sure you're using Node.JS 18 and patch the ",(0,n.kt)("inlineCode",{parentName:"p"},"ref-napi")," package to point towards ",(0,n.kt)("inlineCode",{parentName:"p"},"@2060.io/ref-napi")," in your ",(0,n.kt)("inlineCode",{parentName:"p"},"package.json"),":"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(i.Z,{label:"NPM",value:"tab1",mdxType:"TabItem"},(0,n.kt)("p",null,"Using ",(0,n.kt)("a",{parentName:"p",href:"https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides"},"NPM ",(0,n.kt)("inlineCode",{parentName:"a"},"overrides"))," we can point the ",(0,n.kt)("inlineCode",{parentName:"p"},"ref-napi")," package to ",(0,n.kt)("inlineCode",{parentName:"p"},"@2060.io/ref-napi"),"."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},'{\n "overrides": {\n "ref-napi": "npm:@2060.io/ref-napi"\n }\n}\n'))),(0,n.kt)(i.Z,{label:"Yarn",value:"tab2",mdxType:"TabItem"},(0,n.kt)("p",null,"Using ",(0,n.kt)("a",{parentName:"p",href:"https://classic.yarnpkg.com/lang/en/docs/selective-version-resolutions/"},"Yarn ",(0,n.kt)("inlineCode",{parentName:"a"},"resolutions"))," we can point the ",(0,n.kt)("inlineCode",{parentName:"p"},"ref-napi")," package to ",(0,n.kt)("inlineCode",{parentName:"p"},"@2060.io/ref-napi"),"."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},'{\n "resolutions": {\n "ref-napi": "npm:@2060.io/ref-napi"\n }\n}\n')))),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"See the following issues for more information on the performance bottleneck"),(0,n.kt)("ul",{parentName:"admonition"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/hyperledger/aries-askar/issues/76"},"https://github.com/hyperledger/aries-askar/issues/76")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/node-ffi-napi/ref-napi/issues/72"},"https://github.com/node-ffi-napi/ref-napi/issues/72")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/node-ffi-napi/ref-napi/pull/73"},"https://github.com/node-ffi-napi/ref-napi/pull/73")))))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f87d6b73.7207a02c.js b/assets/js/f87d6b73.7207a02c.js deleted file mode 100644 index beeae24a..00000000 --- a/assets/js/f87d6b73.7207a02c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[7083],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(7294);function a(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 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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),d=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=d(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=d(n),m=a,f=p["".concat(l,".").concat(m)]||p[m]||u[m]||i;return n?r.createElement(f,o(o({ref:t},c),{},{components:n})):r.createElement(f,o({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,o[1]=s;for(var d=2;d<i;d++)o[d]=n[d];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},8899:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var r=n(7462),a=(n(7294),n(3905));const i={},o="macOS (Intel)",s={unversionedId:"getting-started/set-up/indy-sdk/macos-intel",id:"getting-started/set-up/indy-sdk/macos-intel",title:"macOS (Intel)",description:"To install Indy SDK on macOS a couple of dependencies are required. This guide covers the installation of the Indy SDK for macs with an Intel processor. For installing the Indy SDK on ARM based macs, please refer to the Indy SDK macOS (ARM) guide.",source:"@site/guides/getting-started/set-up/indy-sdk/macos-intel.md",sourceDirName:"getting-started/set-up/indy-sdk",slug:"/getting-started/set-up/indy-sdk/macos-intel",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/macos-intel",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Windows",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/windows"},next:{title:"macOS (ARM)",permalink:"/guides/0.5/getting-started/set-up/indy-sdk/macos-arm"}},l={},d=[{value:"Indy SDK",id:"indy-sdk",level:3},{value:"Confirm installation",id:"confirm-installation",level:3}],c={toc:d},p="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"macos-intel"},"macOS (Intel)"),(0,a.kt)("p",null,"To install ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/hyperledger/indy-sdk"},"Indy SDK")," on macOS a couple of dependencies are required. This guide covers the installation of the Indy SDK for macs with an Intel processor. For installing the Indy SDK on ARM based macs, please refer to the ",(0,a.kt)("a",{parentName:"p",href:"./macos-arm"},"Indy SDK macOS (ARM)")," guide."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"This installation assumes that you have ",(0,a.kt)("a",{parentName:"p",href:"https://brew.sh"},"brew")," installed. If not, please install it via this command:"),(0,a.kt)("pre",{parentName:"admonition"},(0,a.kt)("code",{parentName:"pre"},'/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"\n'))),(0,a.kt)("h3",{id:"indy-sdk"},"Indy SDK"),(0,a.kt)("p",null,"The Indy SDK has not been distributed properly for macOS. We have made a ",(0,a.kt)("a",{parentName:"p",href:"https://docs.brew.sh/Taps"},"brew tap")," for ",(0,a.kt)("inlineCode",{parentName:"p"},"libindy")," and it will also install all of the required dependencies."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"brew install blu3beri/libindy/libindy\n")),(0,a.kt)("h3",{id:"confirm-installation"},"Confirm installation"),(0,a.kt)("p",null,"To see whether the Indy SDK is correctly installed on your system, run the following command and it should not error."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-console"},"npx -p @aries-framework/node@^0.3 is-indy-installed\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.3ea7c4b9.js b/assets/js/main.3ea7c4b9.js new file mode 100644 index 00000000..dd446e1d --- /dev/null +++ b/assets/js/main.3ea7c4b9.js @@ -0,0 +1,2 @@ +/*! For license information please see main.3ea7c4b9.js.LICENSE.txt */ +(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),i=n(7462),a=n(8356),o=n.n(a),s=n(6887);const l={"05113313":[()=>n.e(5062).then(n.t.bind(n,6524,19)),"~docs/default/version-0-3-metadata-prop-dd4.json",6524],"07ca6c5c":[()=>n.e(35).then(n.bind(n,6141)),"@site/versioned_docs/version-0.3/tutorials/postgres-database-nodejs/linux.md",6141],"08ca7335":[()=>Promise.all([n.e(532),n.e(7303)]).then(n.bind(n,929)),"@site/versioned_docs/version-0.3/tutorials/issue-a-credential.md",929],"09958099":[()=>n.e(2743).then(n.bind(n,2588)),"@site/versioned_docs/version-0.4/tutorials/cheqd/index.md",2588],"0a88801c":[()=>Promise.all([n.e(532),n.e(2215)]).then(n.bind(n,1824)),"@site/versioned_docs/version-0.4/getting-started/set-up/indy-sdk/index.md",1824],"0c824aea":[()=>Promise.all([n.e(532),n.e(1350)]).then(n.bind(n,7114)),"@site/guides/getting-started/set-up/cheqd/index.md",7114],"0d8c2653":[()=>n.e(4105).then(n.bind(n,3141)),"@site/versioned_docs/version-0.4/tutorials/indy-sdk-postgres-database-nodejs/windows.md",3141],"0e983491":[()=>n.e(8026).then(n.bind(n,5075)),"@site/versioned_docs/version-0.3/getting-started/installation/react-native/android.md",5075],"0ecb752f":[()=>n.e(7824).then(n.bind(n,7057)),"@site/guides/updating/update-indy-sdk-to-askar.md",7057],"0f95bd9e":[()=>n.e(7885).then(n.bind(n,6449)),"@site/guides/concepts/agents.md",6449],12357581:[()=>n.e(6657).then(n.bind(n,6511)),"@site/versioned_docs/version-0.3/concepts/did-and-didcomm.md",6511],"14973ffc":[()=>Promise.all([n.e(532),n.e(5554)]).then(n.bind(n,4814)),"@site/versioned_docs/version-0.4/extensions/redux-store.md",4814],"14e53ecf":[()=>Promise.all([n.e(532),n.e(1904)]).then(n.bind(n,3635)),"@site/guides/updating/versions/0.3-to-0.4.md",3635],17896441:[()=>Promise.all([n.e(532),n.e(8929),n.e(903),n.e(7918)]).then(n.bind(n,903)),"@theme/DocItem",903],"17b50570":[()=>n.e(9593).then(n.t.bind(n,6514,19)),"~docs/default/version-0-4-metadata-prop-a32.json",6514],"1bb97b5b":[()=>n.e(5252).then(n.bind(n,6907)),"@site/versioned_docs/version-0.3/extensions/rest/setup.md",6907],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,9963)),"@theme/DocPage",9963],"1c0f7eb0":[()=>Promise.all([n.e(532),n.e(6614)]).then(n.bind(n,3018)),"@site/versioned_docs/version-0.4/getting-started/set-up/index.md",3018],"1cc62cef":[()=>n.e(9626).then(n.bind(n,5627)),"@site/versioned_docs/version-0.4/ecosystem/index.md",5627],"1df93b7f":[()=>Promise.all([n.e(532),n.e(3237)]).then(n.bind(n,8391)),"@site/src/pages/index.tsx",8391],"1f391b9e":[()=>Promise.all([n.e(532),n.e(8929),n.e(3085)]).then(n.bind(n,4247)),"@theme/MDXPage",4247],"2003ac23":[()=>Promise.all([n.e(532),n.e(7529)]).then(n.bind(n,6314)),"@site/guides/concepts/index.md",6314],"207a1e16":[()=>n.e(6407).then(n.bind(n,4590)),"@site/versioned_docs/version-0.4/extensions/rest.md",4590],"224ce49c":[()=>n.e(8135).then(n.bind(n,7563)),"@site/versioned_docs/version-0.4/getting-started/set-up/indy-sdk/macos-intel.md",7563],"232d48ef":[()=>Promise.all([n.e(532),n.e(2959)]).then(n.bind(n,189)),"@site/versioned_docs/version-0.4/updating/index.md",189],"2332f431":[()=>Promise.all([n.e(532),n.e(82)]).then(n.bind(n,8278)),"@site/guides/getting-started/set-up/index.md",8278],"27320d50":[()=>Promise.all([n.e(532),n.e(8377)]).then(n.bind(n,7665)),"@site/versioned_docs/version-0.3/extensions/index.md",7665],"29b62a39":[()=>n.e(1498).then(n.bind(n,740)),"@site/guides/index.md",740],"2bf743db":[()=>n.e(5880).then(n.bind(n,4275)),"@site/versioned_docs/version-0.4/getting-started/set-up/indy-sdk/windows.md",4275],"2e77271a":[()=>Promise.all([n.e(532),n.e(7024)]).then(n.bind(n,7079)),"@site/versioned_docs/version-0.4/updating/versions/0.2-to-0.3.md",7079],"30ebf81b":[()=>Promise.all([n.e(532),n.e(1912)]).then(n.bind(n,2286)),"@site/versioned_docs/version-0.4/getting-started/prerequisites.md",2286],32456564:[()=>n.e(8937).then(n.bind(n,4462)),"@site/guides/updating/update-assistant.md",4462],"331e6edf":[()=>Promise.all([n.e(532),n.e(9196)]).then(n.bind(n,8856)),"@site/guides/updating/index.md",8856],"334d54c0":[()=>Promise.all([n.e(532),n.e(37)]).then(n.bind(n,1251)),"@site/versioned_docs/version-0.3/concepts/index.md",1251],"3483c478":[()=>n.e(3338).then(n.bind(n,6329)),"@site/versioned_docs/version-0.3/getting-started/installation/nodejs/index.md",6329],"34eb4307":[()=>n.e(7314).then(n.bind(n,684)),"@site/versioned_docs/version-0.4/index.md",684],"365d3941":[()=>Promise.all([n.e(532),n.e(6347)]).then(n.bind(n,8412)),"@site/guides/updating/versions/0.2-to-0.3.md",8412],"369c14e0":[()=>n.e(2913).then(n.bind(n,6998)),"@site/guides/features/openid4vc.md",6998],"36fa027f":[()=>n.e(241).then(n.bind(n,3844)),"@site/versioned_docs/version-0.3/getting-started/installation/index.md",3844],"393be207":[()=>n.e(7414).then(n.bind(n,3123)),"@site/src/pages/markdown-page.md",3123],"394d7bf2":[()=>Promise.all([n.e(532),n.e(8368)]).then(n.bind(n,3172)),"@site/guides/getting-started/set-up/indy-vdr.md",3172],"41c1fec5":[()=>n.e(8796).then(n.bind(n,5669)),"@site/guides/features/dids.md",5669],"4359f0b8":[()=>n.e(3143).then(n.bind(n,480)),"@site/versioned_docs/version-0.3/getting-started/installation/nodejs/apple-intel.md",480],"43e7938e":[()=>Promise.all([n.e(532),n.e(5846)]).then(n.bind(n,6230)),"@site/versioned_docs/version-0.4/tutorials/issue-a-credential.md",6230],"466eb4b6":[()=>n.e(4354).then(n.bind(n,5772)),"@site/guides/tutorials/registering-schema-and-credential-definition.md",5772],"470c56a2":[()=>Promise.all([n.e(532),n.e(9474)]).then(n.bind(n,8354)),"@site/versioned_docs/version-0.3/updating/versions/0.2-to-0.3.md",8354],"4a99cab5":[()=>Promise.all([n.e(532),n.e(4378)]).then(n.bind(n,2655)),"@site/versioned_docs/version-0.4/getting-started/set-up/cheqd/index.md",2655],"4e1c6ae4":[()=>n.e(7873).then(n.bind(n,3865)),"@site/versioned_docs/version-0.3/tutorials/agent-config/index.md",3865],"4ee9ed1d":[()=>n.e(9567).then(n.bind(n,5175)),"@site/versioned_docs/version-0.3/getting-started/installation/react-native/index.md",5175],"514aaf1d":[()=>n.e(2050).then(n.bind(n,9138)),"@site/guides/features/aries.md",9138],"52db191f":[()=>n.e(6059).then(n.bind(n,7242)),"@site/versioned_docs/version-0.4/tutorials/agent-config/index.md",7242],"58e9d200":[()=>n.e(6974).then(n.bind(n,8463)),"@site/versioned_docs/version-0.4/updating/update-indy-sdk-to-askar.md",8463],"5a512b94":[()=>Promise.all([n.e(532),n.e(4602)]).then(n.bind(n,1548)),"@site/versioned_docs/version-0.4/getting-started/set-up/aries-askar.md",1548],"5d1c397c":[()=>n.e(6840).then(n.bind(n,6770)),"@site/guides/tutorials/agent-config/logging.md",6770],"5d8cec60":[()=>Promise.all([n.e(532),n.e(6751)]).then(n.bind(n,1156)),"@site/guides/extensions/index.md",1156],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],60053357:[()=>n.e(6266).then(n.bind(n,7147)),"@site/guides/tutorials/mediation.md",7147],"636a146f":[()=>n.e(5313).then(n.bind(n,3097)),"@site/guides/ecosystem/index.md",3097],"6414033c":[()=>Promise.all([n.e(532),n.e(4226)]).then(n.bind(n,7574)),"@site/guides/features/index.md",7574],"655fc6f5":[()=>n.e(2562).then(n.bind(n,7731)),"@site/versioned_docs/version-0.3/getting-started/installation/nodejs/windows.md",7731],"65c86d7b":[()=>Promise.all([n.e(532),n.e(6295)]).then(n.bind(n,9234)),"@site/guides/updating/versions/0.1-to-0.2.md",9234],"67da112e":[()=>n.e(5666).then(n.bind(n,7625)),"@site/guides/tutorials/agent-config/index.md",7625],"69f8e48e":[()=>n.e(9047).then(n.bind(n,3474)),"@site/versioned_docs/version-0.3/extensions/react-hooks/index.md",3474],"6c6797b5":[()=>n.e(1229).then(n.bind(n,749)),"@site/versioned_docs/version-0.4/concepts/did-and-didcomm.md",749],"6d44cf95":[()=>Promise.all([n.e(532),n.e(7798)]).then(n.bind(n,160)),"@site/versioned_docs/version-0.4/tutorials/index.md",160],"6d708c3d":[()=>Promise.all([n.e(532),n.e(3666)]).then(n.bind(n,7342)),"@site/versioned_docs/version-0.4/getting-started/index.md",7342],"6df87a7d":[()=>Promise.all([n.e(532),n.e(7844)]).then(n.bind(n,4766)),"@site/versioned_docs/version-0.3/getting-started/index.md",4766],"6e4808e6":[()=>Promise.all([n.e(532),n.e(1271)]).then(n.bind(n,1752)),"@site/guides/extensions/react-hooks.md",1752],"70f061b3":[()=>n.e(3531).then(n.t.bind(n,5745,19)),"/home/runner/work/credo-ts-docs/credo-ts-docs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],"7138c4a2":[()=>n.e(6718).then(n.bind(n,8937)),"@site/versioned_docs/version-0.3/extensions/rest/index.md",8937],"74ce5ee1":[()=>n.e(1454).then(n.bind(n,4474)),"@site/versioned_docs/version-0.3/concepts/agents.md",4474],"7697e6e6":[()=>n.e(7867).then(n.bind(n,5064)),"@site/guides/features/credentials.md",5064],"76f8726c":[()=>n.e(8440).then(n.bind(n,708)),"@site/guides/tutorials/cheqd/index.md",708],"7852f2cc":[()=>n.e(9910).then(n.bind(n,4813)),"@site/versioned_docs/version-0.4/tutorials/indy-sdk-postgres-database-nodejs/macos.md",4813],"7bb6402a":[()=>n.e(8980).then(n.bind(n,9050)),"@site/versioned_docs/version-0.3/tutorials/agent-config/logging.md",9050],"7d0a541a":[()=>Promise.all([n.e(532),n.e(397)]).then(n.bind(n,4689)),"@site/versioned_docs/version-0.4/concepts/index.md",4689],"7d25e484":[()=>Promise.all([n.e(532),n.e(6696)]).then(n.bind(n,8505)),"@site/versioned_docs/version-0.3/extensions/push-notifications/setup.md",8505],"862058fd":[()=>n.e(8709).then(n.bind(n,8286)),"@site/versioned_docs/version-0.4/tutorials/mediation.md",8286],"8b37bb4b":[()=>Promise.all([n.e(532),n.e(4565)]).then(n.bind(n,3624)),"@site/versioned_docs/version-0.4/getting-started/set-up/indy-vdr.md",3624],"8b5bb00b":[()=>Promise.all([n.e(532),n.e(8417)]).then(n.bind(n,8610)),"@site/versioned_docs/version-0.4/updating/versions/0.1-to-0.2.md",8610],"8c506fba":[()=>n.e(8866).then(n.bind(n,7709)),"@site/versioned_docs/version-0.3/getting-started/prerequisites/index.md",7709],"91053f61":[()=>n.e(4809).then(n.bind(n,4634)),"@site/versioned_docs/version-0.3/index.md",4634],92188087:[()=>n.e(537).then(n.bind(n,4228)),"@site/guides/extensions/rest.md",4228],"926eb7a7":[()=>n.e(792).then(n.bind(n,1026)),"@site/versioned_docs/version-0.3/tutorials/postgres-database-nodejs/index.md",1026],"93020ce9":[()=>n.e(3859).then(n.bind(n,8658)),"@site/versioned_docs/version-0.3/extensions/redux-store/index.md",8658],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"9436892d":[()=>n.e(5260).then(n.bind(n,1593)),"@site/versioned_docs/version-0.3/extensions/push-notifications/index.md",1593],95261082:[()=>Promise.all([n.e(532),n.e(2086)]).then(n.bind(n,3418)),"@site/guides/extensions/push-notifications.md",3418],"96bb78d2":[()=>Promise.all([n.e(532),n.e(7988)]).then(n.bind(n,1131)),"@site/versioned_docs/version-0.3/extensions/redux-store/setup.md",1131],"996925d9":[()=>Promise.all([n.e(532),n.e(3901)]).then(n.bind(n,1089)),"@site/guides/getting-started/prerequisites.md",1089],"997e3d85":[()=>Promise.all([n.e(532),n.e(2680)]).then(n.bind(n,3583)),"@site/versioned_docs/version-0.4/extensions/index.md",3583],"9cd8fd3e":[()=>n.e(8399).then(n.bind(n,7438)),"@site/versioned_docs/version-0.3/getting-started/installation/nodejs/apple-arm.md",7438],"9edc454f":[()=>n.e(7854).then(n.bind(n,4797)),"@site/versioned_docs/version-0.4/getting-started/set-up/indy-sdk/react-native.md",4797],a1dc5557:[()=>n.e(8230).then(n.bind(n,4087)),"@site/versioned_docs/version-0.4/tutorials/indy-sdk-postgres-database-nodejs/index.md",4087],a2a3716e:[()=>Promise.all([n.e(532),n.e(644)]).then(n.bind(n,4789)),"@site/guides/tutorials/index.md",4789],a690f229:[()=>n.e(9841).then(n.bind(n,8211)),"@site/versioned_docs/version-0.4/updating/update-assistant.md",8211],a69e7b9a:[()=>Promise.all([n.e(532),n.e(4365)]).then(n.bind(n,6935)),"@site/guides/extensions/redux-store.md",6935],a9c79318:[()=>Promise.all([n.e(532),n.e(6625)]).then(n.bind(n,534)),"@site/versioned_docs/version-0.3/getting-started/set-up/index.md",534],acdd3ecd:[()=>n.e(1317).then(n.bind(n,8693)),"@site/versioned_docs/version-0.3/ecosystem/index.md",8693],b1d5f389:[()=>Promise.all([n.e(532),n.e(9843)]).then(n.bind(n,6457)),"@site/versioned_docs/version-0.4/extensions/react-hooks.md",6457],b56c3f57:[()=>Promise.all([n.e(532),n.e(7610)]).then(n.bind(n,9387)),"@site/versioned_docs/version-0.3/tutorials/index.md",9387],bcace162:[()=>Promise.all([n.e(532),n.e(752)]).then(n.bind(n,8150)),"@site/versioned_docs/version-0.4/extensions/push-notifications.md",8150],bd127040:[()=>Promise.all([n.e(532),n.e(6142)]).then(n.bind(n,1e3)),"@site/versioned_docs/version-0.3/getting-started/installation/nodejs/linux.md",1e3],bd5be9ae:[()=>Promise.all([n.e(532),n.e(1993)]).then(n.bind(n,2347)),"@site/guides/tutorials/issue-a-credential.md",2347],bf52c953:[()=>n.e(4220).then(n.bind(n,9083)),"@site/versioned_docs/version-0.3/concepts/platform-and-environment.md",9083],c2afb9af:[()=>Promise.all([n.e(532),n.e(1389)]).then(n.bind(n,5331)),"@site/versioned_docs/version-0.3/extensions/react-hooks/setup.md",5331],c5cd793e:[()=>n.e(8925).then(n.bind(n,2290)),"@site/versioned_docs/version-0.4/tutorials/registering-schema-and-credential-definition.md",2290],c970593d:[()=>Promise.all([n.e(532),n.e(703)]).then(n.bind(n,4933)),"@site/versioned_docs/version-0.3/updating/index.md",4933],ca99fa15:[()=>n.e(3080).then(n.bind(n,8626)),"@site/guides/concepts/did-and-didcomm.md",8626],d1089d1d:[()=>n.e(1270).then(n.bind(n,3147)),"@site/versioned_docs/version-0.3/tutorials/postgres-database-nodejs/macos.md",3147],d26e5579:[()=>Promise.all([n.e(532),n.e(9080)]).then(n.bind(n,9533)),"@site/versioned_docs/version-0.4/getting-started/set-up/indy-sdk/linux.md",9533],d42e1e6c:[()=>Promise.all([n.e(532),n.e(2226)]).then(n.bind(n,8433)),"@site/versioned_docs/version-0.3/tutorials/create-a-connection.md",8433],d68982b8:[()=>n.e(7608).then(n.bind(n,8161)),"@site/versioned_docs/version-0.3/getting-started/installation/react-native/ios.md",8161],da788397:[()=>Promise.all([n.e(532),n.e(4281)]).then(n.bind(n,3423)),"@site/guides/getting-started/set-up/anoncreds.md",3423],daf4660b:[()=>Promise.all([n.e(532),n.e(8692)]).then(n.bind(n,1618)),"@site/versioned_docs/version-0.3/updating/versions/0.1-to-0.2.md",1618],dc62edf2:[()=>Promise.all([n.e(532),n.e(4827)]).then(n.bind(n,695)),"@site/guides/getting-started/index.md",695],debd89ec:[()=>n.e(4767).then(n.bind(n,9494)),"@site/versioned_docs/version-0.4/tutorials/agent-config/logging.md",9494],e38b62c8:[()=>n.e(7162).then(n.bind(n,1289)),"@site/versioned_docs/version-0.4/concepts/platform-and-environment.md",1289],e4252094:[()=>n.e(1776).then(n.t.bind(n,3769,19)),"/home/runner/work/credo-ts-docs/credo-ts-docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],e5a09f30:[()=>Promise.all([n.e(532),n.e(2254)]).then(n.bind(n,3570)),"@site/versioned_docs/version-0.4/getting-started/set-up/anoncreds-rs.md",3570],e5f12b68:[()=>n.e(4656).then(n.bind(n,1971)),"@site/versioned_docs/version-0.3/updating/update-assistant.md",1971],ece13197:[()=>n.e(9852).then(n.bind(n,1920)),"@site/versioned_docs/version-0.4/concepts/agents.md",1920],ee7869b6:[()=>n.e(7240).then(n.bind(n,3944)),"@site/versioned_docs/version-0.4/getting-started/set-up/indy-sdk/macos-arm.md",3944],ee898636:[()=>Promise.all([n.e(532),n.e(9233)]).then(n.bind(n,2757)),"@site/versioned_docs/version-0.4/tutorials/create-a-connection.md",2757],eeecf87c:[()=>n.e(7547).then(n.bind(n,3076)),"@site/guides/concepts/platform-and-environment.md",3076],ef7acecf:[()=>Promise.all([n.e(532),n.e(2925)]).then(n.bind(n,2960)),"@site/guides/tutorials/create-a-connection.md",2960],f30d32a5:[()=>n.e(2637).then(n.bind(n,2736)),"@site/versioned_docs/version-0.4/tutorials/indy-sdk-postgres-database-nodejs/linux.md",2736],f3933b6b:[()=>n.e(911).then(n.bind(n,1033)),"@site/versioned_docs/version-0.3/tutorials/postgres-database-nodejs/windows.md",1033],f800d23c:[()=>Promise.all([n.e(532),n.e(8251)]).then(n.bind(n,440)),"@site/guides/getting-started/set-up/aries-askar.md",440],fd1a8f62:[()=>Promise.all([n.e(532),n.e(77)]).then(n.bind(n,9522)),"@site/versioned_docs/version-0.4/updating/versions/0.3-to-0.4.md",9522]};function u(e){let{error:t,retry:n,pastDelay:i}=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"))):i?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 p(e,t){if("*"===e)return o()({loading:u,loader:()=>n.e(4972).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 a=s[`${e}-${t}`],p={},f=[],m=[],g=(0,c.Z)(a);return Object.entries(g).forEach((e=>{let[t,n]=e;const r=l[n];r&&(p[t]=r[0],f.push(r[1]),m.push(r[2]))})),o().Map({loading:u,loader:p,modules:f,webpack:()=>m,render(t,n){const o=JSON.parse(JSON.stringify(a));Object.entries(t).forEach((t=>{let[n,r]=t;const i=r.default;if(!i)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 i&&"function"!=typeof i||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{i[e]=r[e]}));let a=o;const s=n.split(".");s.slice(0,-1).forEach((e=>{a=a[e]})),a[s[s.length-1]]=i}));const s=o.__comp;delete o.__comp;const l=o.__context;return delete o.__context,r.createElement(d.z,{value:l},r.createElement(s,(0,i.Z)({},o,n)))}})}const f=[{path:"/markdown-page",component:p("/markdown-page","ff5"),exact:!0},{path:"/guides/0.3",component:p("/guides/0.3","769"),routes:[{path:"/guides/0.3",component:p("/guides/0.3","c55"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/concepts",component:p("/guides/0.3/concepts","8ed"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/concepts/agents",component:p("/guides/0.3/concepts/agents","26a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/concepts/did-and-didcomm",component:p("/guides/0.3/concepts/did-and-didcomm","cae"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/concepts/platform-and-environment",component:p("/guides/0.3/concepts/platform-and-environment","c83"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/ecosystem",component:p("/guides/0.3/ecosystem","6e2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions",component:p("/guides/0.3/extensions","89d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions/push-notifications",component:p("/guides/0.3/extensions/push-notifications","83d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions/push-notifications/setup",component:p("/guides/0.3/extensions/push-notifications/setup","4e7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions/react-hooks",component:p("/guides/0.3/extensions/react-hooks","27a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions/react-hooks/setup",component:p("/guides/0.3/extensions/react-hooks/setup","042"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions/redux-store",component:p("/guides/0.3/extensions/redux-store","17e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions/redux-store/setup",component:p("/guides/0.3/extensions/redux-store/setup","e20"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions/rest",component:p("/guides/0.3/extensions/rest","f47"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions/rest/setup",component:p("/guides/0.3/extensions/rest/setup","856"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started",component:p("/guides/0.3/getting-started","09e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation",component:p("/guides/0.3/getting-started/installation","210"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation/nodejs",component:p("/guides/0.3/getting-started/installation/nodejs","d46"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation/nodejs/apple-arm",component:p("/guides/0.3/getting-started/installation/nodejs/apple-arm","fbf"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation/nodejs/apple-intel",component:p("/guides/0.3/getting-started/installation/nodejs/apple-intel","c05"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation/nodejs/linux",component:p("/guides/0.3/getting-started/installation/nodejs/linux","d0a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation/nodejs/windows",component:p("/guides/0.3/getting-started/installation/nodejs/windows","834"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation/react-native",component:p("/guides/0.3/getting-started/installation/react-native","839"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation/react-native/android",component:p("/guides/0.3/getting-started/installation/react-native/android","550"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation/react-native/ios",component:p("/guides/0.3/getting-started/installation/react-native/ios","655"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/prerequisites",component:p("/guides/0.3/getting-started/prerequisites","840"),exact:!0},{path:"/guides/0.3/getting-started/set-up",component:p("/guides/0.3/getting-started/set-up","662"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials",component:p("/guides/0.3/tutorials","8f3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials/agent-config",component:p("/guides/0.3/tutorials/agent-config","16e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials/agent-config/logging",component:p("/guides/0.3/tutorials/agent-config/logging","c89"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials/create-a-connection",component:p("/guides/0.3/tutorials/create-a-connection","14a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials/issue-a-credential",component:p("/guides/0.3/tutorials/issue-a-credential","b7f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials/postgres-database-nodejs",component:p("/guides/0.3/tutorials/postgres-database-nodejs","7e2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials/postgres-database-nodejs/linux",component:p("/guides/0.3/tutorials/postgres-database-nodejs/linux","33b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials/postgres-database-nodejs/macos",component:p("/guides/0.3/tutorials/postgres-database-nodejs/macos","af5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials/postgres-database-nodejs/windows",component:p("/guides/0.3/tutorials/postgres-database-nodejs/windows","b05"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/updating",component:p("/guides/0.3/updating","4bd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/updating/update-assistant",component:p("/guides/0.3/updating/update-assistant","33c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/updating/versions/0.1-to-0.2",component:p("/guides/0.3/updating/versions/0.1-to-0.2","714"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/updating/versions/0.2-to-0.3",component:p("/guides/0.3/updating/versions/0.2-to-0.3","0d2"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/guides/0.5",component:p("/guides/0.5","cb2"),routes:[{path:"/guides/0.5",component:p("/guides/0.5","b60"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/concepts",component:p("/guides/0.5/concepts","159"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/concepts/agents",component:p("/guides/0.5/concepts/agents","754"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/concepts/did-and-didcomm",component:p("/guides/0.5/concepts/did-and-didcomm","192"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/concepts/platform-and-environment",component:p("/guides/0.5/concepts/platform-and-environment","de1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/ecosystem",component:p("/guides/0.5/ecosystem","64b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/extensions",component:p("/guides/0.5/extensions","28e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/extensions/push-notifications",component:p("/guides/0.5/extensions/push-notifications","1cf"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/extensions/react-hooks",component:p("/guides/0.5/extensions/react-hooks","f82"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/extensions/redux-store",component:p("/guides/0.5/extensions/redux-store","866"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/extensions/rest",component:p("/guides/0.5/extensions/rest","bc3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/features",component:p("/guides/0.5/features","b55"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/features/aries",component:p("/guides/0.5/features/aries","26b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/features/credentials",component:p("/guides/0.5/features/credentials","ef6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/features/dids",component:p("/guides/0.5/features/dids","b9a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/features/openid4vc",component:p("/guides/0.5/features/openid4vc","e47"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started",component:p("/guides/0.5/getting-started","701"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/prerequisites",component:p("/guides/0.5/getting-started/prerequisites","b2b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/set-up",component:p("/guides/0.5/getting-started/set-up","d4e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/set-up/anoncreds",component:p("/guides/0.5/getting-started/set-up/anoncreds","b3a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/set-up/aries-askar",component:p("/guides/0.5/getting-started/set-up/aries-askar","9a1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/set-up/cheqd",component:p("/guides/0.5/getting-started/set-up/cheqd","de9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/set-up/indy-vdr",component:p("/guides/0.5/getting-started/set-up/indy-vdr","a60"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials",component:p("/guides/0.5/tutorials","cde"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/agent-config",component:p("/guides/0.5/tutorials/agent-config","73c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/agent-config/logging",component:p("/guides/0.5/tutorials/agent-config/logging","980"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/cheqd",component:p("/guides/0.5/tutorials/cheqd","c33"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/create-a-connection",component:p("/guides/0.5/tutorials/create-a-connection","354"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/issue-a-credential",component:p("/guides/0.5/tutorials/issue-a-credential","491"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/mediation",component:p("/guides/0.5/tutorials/mediation","eec"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/registering-schema-and-credential-definition",component:p("/guides/0.5/tutorials/registering-schema-and-credential-definition","a59"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/updating",component:p("/guides/0.5/updating","416"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/updating/update-assistant",component:p("/guides/0.5/updating/update-assistant","d63"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/updating/update-indy-sdk-to-askar",component:p("/guides/0.5/updating/update-indy-sdk-to-askar","454"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/updating/versions/0.1-to-0.2",component:p("/guides/0.5/updating/versions/0.1-to-0.2","0fb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/updating/versions/0.2-to-0.3",component:p("/guides/0.5/updating/versions/0.2-to-0.3","88f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/updating/versions/0.3-to-0.4",component:p("/guides/0.5/updating/versions/0.3-to-0.4","4cf"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/guides",component:p("/guides","f79"),routes:[{path:"/guides",component:p("/guides","21c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/concepts",component:p("/guides/concepts","67d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/concepts/agents",component:p("/guides/concepts/agents","589"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/concepts/did-and-didcomm",component:p("/guides/concepts/did-and-didcomm","e8f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/concepts/platform-and-environment",component:p("/guides/concepts/platform-and-environment","c7f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/ecosystem",component:p("/guides/ecosystem","72b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/extensions",component:p("/guides/extensions","38d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/extensions/push-notifications",component:p("/guides/extensions/push-notifications","090"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/extensions/react-hooks",component:p("/guides/extensions/react-hooks","b5b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/extensions/redux-store",component:p("/guides/extensions/redux-store","3cd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/extensions/rest",component:p("/guides/extensions/rest","8d9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started",component:p("/guides/getting-started","9dc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/prerequisites",component:p("/guides/getting-started/prerequisites","085"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up",component:p("/guides/getting-started/set-up","5ac"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/anoncreds-rs",component:p("/guides/getting-started/set-up/anoncreds-rs","c2f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/aries-askar",component:p("/guides/getting-started/set-up/aries-askar","99d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/cheqd",component:p("/guides/getting-started/set-up/cheqd","26b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/indy-sdk",component:p("/guides/getting-started/set-up/indy-sdk","c87"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/indy-sdk/linux",component:p("/guides/getting-started/set-up/indy-sdk/linux","c90"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/indy-sdk/macos-arm",component:p("/guides/getting-started/set-up/indy-sdk/macos-arm","fbc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/indy-sdk/macos-intel",component:p("/guides/getting-started/set-up/indy-sdk/macos-intel","013"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/indy-sdk/react-native",component:p("/guides/getting-started/set-up/indy-sdk/react-native","4a0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/indy-sdk/windows",component:p("/guides/getting-started/set-up/indy-sdk/windows","de3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/indy-vdr",component:p("/guides/getting-started/set-up/indy-vdr","523"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials",component:p("/guides/tutorials","765"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/agent-config",component:p("/guides/tutorials/agent-config","9f9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/agent-config/logging",component:p("/guides/tutorials/agent-config/logging","b62"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/cheqd",component:p("/guides/tutorials/cheqd","f6c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/create-a-connection",component:p("/guides/tutorials/create-a-connection","382"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/indy-sdk-postgres-database-nodejs",component:p("/guides/tutorials/indy-sdk-postgres-database-nodejs","5d0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/indy-sdk-postgres-database-nodejs/linux",component:p("/guides/tutorials/indy-sdk-postgres-database-nodejs/linux","dc1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/indy-sdk-postgres-database-nodejs/macos",component:p("/guides/tutorials/indy-sdk-postgres-database-nodejs/macos","651"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/indy-sdk-postgres-database-nodejs/windows",component:p("/guides/tutorials/indy-sdk-postgres-database-nodejs/windows","6d4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/issue-a-credential",component:p("/guides/tutorials/issue-a-credential","e6e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/mediation",component:p("/guides/tutorials/mediation","e0b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/registering-schema-and-credential-definition",component:p("/guides/tutorials/registering-schema-and-credential-definition","5d1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/updating",component:p("/guides/updating","914"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/updating/update-assistant",component:p("/guides/updating/update-assistant","a9e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/updating/update-indy-sdk-to-askar",component:p("/guides/updating/update-indy-sdk-to-askar","9b6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/updating/versions/0.1-to-0.2",component:p("/guides/updating/versions/0.1-to-0.2","722"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/updating/versions/0.2-to-0.3",component:p("/guides/updating/versions/0.2-to-0.3","4a1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/updating/versions/0.3-to-0.4",component:p("/guides/updating/versions/0.3-to-0.4","ff2"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/",component:p("/","3b7"),exact:!0},{path:"*",component:p("*")}]},8965:(e,t,n)=>{var r,i;!function(){var a,o,s,l,u,c,d,p,f,m,g,h,v,b,y,w,k,S,E,x,_,O,P,C,T,I,A,L,R,N,j=function(e){var t=new j.Builder;return t.pipeline.add(j.trimmer,j.stopWordFilter,j.stemmer),t.searchPipeline.add(j.stemmer),e.call(t,t),t.build()};j.version="2.3.9",j.utils={},j.utils.warn=(a=this,function(e){a.console&&console.warn&&console.warn(e)}),j.utils.asString=function(e){return null==e?"":e.toString()},j.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r<n.length;r++){var i=n[r],a=e[i];if(Array.isArray(a))t[i]=a.slice();else{if("string"!=typeof a&&"number"!=typeof a&&"boolean"!=typeof a)throw new TypeError("clone is not deep and does not support nested objects");t[i]=a}}return t},j.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},j.FieldRef.joiner="/",j.FieldRef.fromString=function(e){var t=e.indexOf(j.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),r=e.slice(t+1);return new j.FieldRef(r,n,e)},j.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+j.FieldRef.joiner+this.docRef),this._stringValue},j.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},j.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},j.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},j.Set.prototype.contains=function(e){return!!this.elements[e]},j.Set.prototype.intersect=function(e){var t,n,r,i=[];if(e===j.Set.complete)return this;if(e===j.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),r=Object.keys(t.elements);for(var a=0;a<r.length;a++){var o=r[a];o in n.elements&&i.push(o)}return new j.Set(i)},j.Set.prototype.union=function(e){return e===j.Set.complete?j.Set.complete:e===j.Set.empty?this:new j.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},j.idf=function(e,t){var n=0;for(var r in e)"_index"!=r&&(n+=Object.keys(e[r]).length);var i=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(i))},j.Token=function(e,t){this.str=e||"",this.metadata=t||{}},j.Token.prototype.toString=function(){return this.str},j.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},j.Token.prototype.clone=function(e){return e=e||function(e){return e},new j.Token(e(this.str,this.metadata),this.metadata)},j.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new j.Token(j.utils.asString(e).toLowerCase(),j.utils.clone(t))}));for(var n=e.toString().toLowerCase(),r=n.length,i=[],a=0,o=0;a<=r;a++){var s=a-o;if(n.charAt(a).match(j.tokenizer.separator)||a==r){if(s>0){var l=j.utils.clone(t)||{};l.position=[o,s],l.index=i.length,i.push(new j.Token(n.slice(o,a),l))}o=a+1}}return i},j.tokenizer.separator=/[\s\-]+/,j.Pipeline=function(){this._stack=[]},j.Pipeline.registeredFunctions=Object.create(null),j.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&j.utils.warn("Overwriting existing registered function: "+t),e.label=t,j.Pipeline.registeredFunctions[e.label]=e},j.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||j.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},j.Pipeline.load=function(e){var t=new j.Pipeline;return e.forEach((function(e){var n=j.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},j.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){j.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},j.Pipeline.prototype.after=function(e,t){j.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)},j.Pipeline.prototype.before=function(e,t){j.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},j.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},j.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var r=this._stack[n],i=[],a=0;a<e.length;a++){var o=r(e[a],a,e);if(null!=o&&""!==o)if(Array.isArray(o))for(var s=0;s<o.length;s++)i.push(o[s]);else i.push(o)}e=i}return e},j.Pipeline.prototype.runString=function(e,t){var n=new j.Token(e,t);return this.run([n]).map((function(e){return e.toString()}))},j.Pipeline.prototype.reset=function(){this._stack=[]},j.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return j.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},j.Vector=function(e){this._magnitude=0,this.elements=e||[]},j.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,r=n-t,i=Math.floor(r/2),a=this.elements[2*i];r>1&&(a<e&&(t=i),a>e&&(n=i),a!=e);)r=n-t,i=t+Math.floor(r/2),a=this.elements[2*i];return a==e||a>e?2*i:a<e?2*(i+1):void 0},j.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw"duplicate index"}))},j.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var r=this.positionForIndex(e);this.elements[r]==e?this.elements[r+1]=n(this.elements[r+1],t):this.elements.splice(r,0,e,t)},j.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var r=this.elements[n];e+=r*r}return this._magnitude=Math.sqrt(e)},j.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,r=e.elements,i=n.length,a=r.length,o=0,s=0,l=0,u=0;l<i&&u<a;)(o=n[l])<(s=r[u])?l+=2:o>s?u+=2:o==s&&(t+=n[l+1]*r[u+1],l+=2,u+=2);return t},j.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},j.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},j.Vector.prototype.toJSON=function(){return this.elements},j.stemmer=(o={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},s={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},d="^("+(u="[^aeiou][^aeiouy]*")+")?"+(c=(l="[aeiouy]")+"[aeiou]*")+u+"("+c+")?$",p="^("+u+")?"+c+u+c+u,f="^("+u+")?"+l,m=new RegExp("^("+u+")?"+c+u),g=new RegExp(p),h=new RegExp(d),v=new RegExp(f),b=/^(.+?)(ss|i)es$/,y=/^(.+?)([^s])s$/,w=/^(.+?)eed$/,k=/^(.+?)(ed|ing)$/,S=/.$/,E=/(at|bl|iz)$/,x=new RegExp("([^aeiouylsz])\\1$"),_=new RegExp("^"+u+l+"[^aeiouwxy]$"),O=/^(.+?[^aeiou])y$/,P=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,C=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,T=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,I=/^(.+?)(s|t)(ion)$/,A=/^(.+?)e$/,L=/ll$/,R=new RegExp("^"+u+l+"[^aeiouwxy]$"),N=function(e){var t,n,r,i,a,l,u;if(e.length<3)return e;if("y"==(r=e.substr(0,1))&&(e=r.toUpperCase()+e.substr(1)),a=y,(i=b).test(e)?e=e.replace(i,"$1$2"):a.test(e)&&(e=e.replace(a,"$1$2")),a=k,(i=w).test(e)){var c=i.exec(e);(i=m).test(c[1])&&(i=S,e=e.replace(i,""))}else a.test(e)&&(t=(c=a.exec(e))[1],(a=v).test(t)&&(l=x,u=_,(a=E).test(e=t)?e+="e":l.test(e)?(i=S,e=e.replace(i,"")):u.test(e)&&(e+="e")));return(i=O).test(e)&&(e=(t=(c=i.exec(e))[1])+"i"),(i=P).test(e)&&(t=(c=i.exec(e))[1],n=c[2],(i=m).test(t)&&(e=t+o[n])),(i=C).test(e)&&(t=(c=i.exec(e))[1],n=c[2],(i=m).test(t)&&(e=t+s[n])),a=I,(i=T).test(e)?(t=(c=i.exec(e))[1],(i=g).test(t)&&(e=t)):a.test(e)&&(t=(c=a.exec(e))[1]+c[2],(a=g).test(t)&&(e=t)),(i=A).test(e)&&(t=(c=i.exec(e))[1],a=h,l=R,((i=g).test(t)||a.test(t)&&!l.test(t))&&(e=t)),a=g,(i=L).test(e)&&a.test(e)&&(i=S,e=e.replace(i,"")),"y"==r&&(e=r.toLowerCase()+e.substr(1)),e},function(e){return e.update(N)}),j.Pipeline.registerFunction(j.stemmer,"stemmer"),j.generateStopWordFilter=function(e){var t=e.reduce((function(e,t){return e[t]=t,e}),{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},j.stopWordFilter=j.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),j.Pipeline.registerFunction(j.stopWordFilter,"stopWordFilter"),j.trimmer=function(e){return e.update((function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")}))},j.Pipeline.registerFunction(j.trimmer,"trimmer"),j.TokenSet=function(){this.final=!1,this.edges={},this.id=j.TokenSet._nextId,j.TokenSet._nextId+=1},j.TokenSet._nextId=1,j.TokenSet.fromArray=function(e){for(var t=new j.TokenSet.Builder,n=0,r=e.length;n<r;n++)t.insert(e[n]);return t.finish(),t.root},j.TokenSet.fromClause=function(e){return"editDistance"in e?j.TokenSet.fromFuzzyString(e.term,e.editDistance):j.TokenSet.fromString(e.term)},j.TokenSet.fromFuzzyString=function(e,t){for(var n=new j.TokenSet,r=[{node:n,editsRemaining:t,str:e}];r.length;){var i=r.pop();if(i.str.length>0){var a,o=i.str.charAt(0);o in i.node.edges?a=i.node.edges[o]:(a=new j.TokenSet,i.node.edges[o]=a),1==i.str.length&&(a.final=!0),r.push({node:a,editsRemaining:i.editsRemaining,str:i.str.slice(1)})}if(0!=i.editsRemaining){if("*"in i.node.edges)var s=i.node.edges["*"];else{s=new j.TokenSet;i.node.edges["*"]=s}if(0==i.str.length&&(s.final=!0),r.push({node:s,editsRemaining:i.editsRemaining-1,str:i.str}),i.str.length>1&&r.push({node:i.node,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)}),1==i.str.length&&(i.node.final=!0),i.str.length>=1){if("*"in i.node.edges)var l=i.node.edges["*"];else{l=new j.TokenSet;i.node.edges["*"]=l}1==i.str.length&&(l.final=!0),r.push({node:l,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)})}if(i.str.length>1){var u,c=i.str.charAt(0),d=i.str.charAt(1);d in i.node.edges?u=i.node.edges[d]:(u=new j.TokenSet,i.node.edges[d]=u),1==i.str.length&&(u.final=!0),r.push({node:u,editsRemaining:i.editsRemaining-1,str:c+i.str.slice(2)})}}}return n},j.TokenSet.fromString=function(e){for(var t=new j.TokenSet,n=t,r=0,i=e.length;r<i;r++){var a=e[r],o=r==i-1;if("*"==a)t.edges[a]=t,t.final=o;else{var s=new j.TokenSet;s.final=o,t.edges[a]=s,t=s}}return n},j.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),r=Object.keys(n.node.edges),i=r.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var a=0;a<i;a++){var o=r[a];t.push({prefix:n.prefix.concat(o),node:n.node.edges[o]})}}return e},j.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,r=0;r<n;r++){var i=t[r];e=e+i+this.edges[i].id}return e},j.TokenSet.prototype.intersect=function(e){for(var t=new j.TokenSet,n=void 0,r=[{qNode:e,output:t,node:this}];r.length;){n=r.pop();for(var i=Object.keys(n.qNode.edges),a=i.length,o=Object.keys(n.node.edges),s=o.length,l=0;l<a;l++)for(var u=i[l],c=0;c<s;c++){var d=o[c];if(d==u||"*"==u){var p=n.node.edges[d],f=n.qNode.edges[u],m=p.final&&f.final,g=void 0;d in n.output.edges?(g=n.output.edges[d]).final=g.final||m:((g=new j.TokenSet).final=m,n.output.edges[d]=g),r.push({qNode:f,output:g,node:p})}}}return t},j.TokenSet.Builder=function(){this.previousWord="",this.root=new j.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},j.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var r=0;r<e.length&&r<this.previousWord.length&&e[r]==this.previousWord[r];r++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(r=n;r<e.length;r++){var i=new j.TokenSet,a=e[r];t.edges[a]=i,this.uncheckedNodes.push({parent:t,char:a,child:i}),t=i}t.final=!0,this.previousWord=e},j.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},j.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=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()}},j.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},j.Index.prototype.search=function(e){return this.query((function(t){new j.QueryParser(e,t).parse()}))},j.Index.prototype.query=function(e){for(var t=new j.Query(this.fields),n=Object.create(null),r=Object.create(null),i=Object.create(null),a=Object.create(null),o=Object.create(null),s=0;s<this.fields.length;s++)r[this.fields[s]]=new j.Vector;e.call(t,t);for(s=0;s<t.clauses.length;s++){var l=t.clauses[s],u=null,c=j.Set.empty;u=l.usePipeline?this.pipeline.runString(l.term,{fields:l.fields}):[l.term];for(var d=0;d<u.length;d++){var p=u[d];l.term=p;var f=j.TokenSet.fromClause(l),m=this.tokenSet.intersect(f).toArray();if(0===m.length&&l.presence===j.Query.presence.REQUIRED){for(var g=0;g<l.fields.length;g++){a[A=l.fields[g]]=j.Set.empty}break}for(var h=0;h<m.length;h++){var v=m[h],b=this.invertedIndex[v],y=b._index;for(g=0;g<l.fields.length;g++){var w=b[A=l.fields[g]],k=Object.keys(w),S=v+"/"+A,E=new j.Set(k);if(l.presence==j.Query.presence.REQUIRED&&(c=c.union(E),void 0===a[A]&&(a[A]=j.Set.complete)),l.presence!=j.Query.presence.PROHIBITED){if(r[A].upsert(y,l.boost,(function(e,t){return e+t})),!i[S]){for(var x=0;x<k.length;x++){var _,O=k[x],P=new j.FieldRef(O,A),C=w[O];void 0===(_=n[P])?n[P]=new j.MatchData(v,A,C):_.add(v,A,C)}i[S]=!0}}else void 0===o[A]&&(o[A]=j.Set.empty),o[A]=o[A].union(E)}}}if(l.presence===j.Query.presence.REQUIRED)for(g=0;g<l.fields.length;g++){a[A=l.fields[g]]=a[A].intersect(c)}}var T=j.Set.complete,I=j.Set.empty;for(s=0;s<this.fields.length;s++){var A;a[A=this.fields[s]]&&(T=T.intersect(a[A])),o[A]&&(I=I.union(o[A]))}var L=Object.keys(n),R=[],N=Object.create(null);if(t.isNegated()){L=Object.keys(this.fieldVectors);for(s=0;s<L.length;s++){P=L[s];var D=j.FieldRef.fromString(P);n[P]=new j.MatchData}}for(s=0;s<L.length;s++){var M=(D=j.FieldRef.fromString(L[s])).docRef;if(T.contains(M)&&!I.contains(M)){var F,B=this.fieldVectors[D],z=r[D.fieldName].similarity(B);if(void 0!==(F=N[M]))F.score+=z,F.matchData.combine(n[D]);else{var U={ref:M,score:z,matchData:n[D]};N[M]=U,R.push(U)}}}return R.sort((function(e,t){return t.score-e.score}))},j.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map((function(e){return[e,this.invertedIndex[e]]}),this),t=Object.keys(this.fieldVectors).map((function(e){return[e,this.fieldVectors[e].toJSON()]}),this);return{version:j.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},j.Index.load=function(e){var t={},n={},r=e.fieldVectors,i=Object.create(null),a=e.invertedIndex,o=new j.TokenSet.Builder,s=j.Pipeline.load(e.pipeline);e.version!=j.version&&j.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+j.version+"' does not match serialized index '"+e.version+"'");for(var l=0;l<r.length;l++){var u=(d=r[l])[0],c=d[1];n[u]=new j.Vector(c)}for(l=0;l<a.length;l++){var d,p=(d=a[l])[0],f=d[1];o.insert(p),i[p]=f}return o.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=i,t.tokenSet=o.root,t.pipeline=s,new j.Index(t)},j.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=j.tokenizer,this.pipeline=new j.Pipeline,this.searchPipeline=new j.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},j.Builder.prototype.ref=function(e){this._ref=e},j.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},j.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},j.Builder.prototype.k1=function(e){this._k1=e},j.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 i=0;i<r.length;i++){var a=r[i],o=this._fields[a].extractor,s=this._fields[a].isLiteral??!1,l=o?o(e):e[a],u=s?[l]:this.tokenizer(l,{fields:[a]}),c=s?u:this.pipeline.run(u),d=new j.FieldRef(n,a),p=Object.create(null);this.fieldTermFrequencies[d]=p,this.fieldLengths[d]=0,this.fieldLengths[d]+=c.length;for(var f=0;f<c.length;f++){var m=c[f];if(null==p[m]&&(p[m]=0),p[m]+=1,null==this.invertedIndex[m]){var g=Object.create(null);g._index=this.termIndex,this.termIndex+=1;for(var h=0;h<r.length;h++)g[r[h]]=Object.create(null);this.invertedIndex[m]=g}null==this.invertedIndex[m][a][n]&&(this.invertedIndex[m][a][n]=Object.create(null));for(var v=0;v<this.metadataWhitelist.length;v++){var b=this.metadataWhitelist[v],y=m.metadata[b];null==this.invertedIndex[m][a][n][b]&&(this.invertedIndex[m][a][n][b]=[]),this.invertedIndex[m][a][n][b].push(y)}}}},j.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},r={},i=0;i<t;i++){var a=j.FieldRef.fromString(e[i]),o=a.fieldName;r[o]||(r[o]=0),r[o]+=1,n[o]||(n[o]=0),n[o]+=this.fieldLengths[a]}var s=Object.keys(this._fields);for(i=0;i<s.length;i++){var l=s[i];n[l]=n[l]/r[l]}this.averageFieldLength=n},j.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,r=Object.create(null),i=0;i<n;i++){for(var a=j.FieldRef.fromString(t[i]),o=a.fieldName,s=this.fieldLengths[a],l=new j.Vector,u=this.fieldTermFrequencies[a],c=Object.keys(u),d=c.length,p=this._fields[o].boost||1,f=this._documents[a.docRef].boost||1,m=0;m<d;m++){var g,h,v,b=c[m],y=u[b],w=this.invertedIndex[b]._index;void 0===r[b]?(g=j.idf(this.invertedIndex[b],this.documentCount),r[b]=g):g=r[b],h=g*((this._k1+1)*y)/(this._k1*(1-this._b+this._b*(s/this.averageFieldLength[o]))+y),h*=p,h*=f,v=Math.round(1e3*h)/1e3,l.insert(w,v)}e[a]=l}this.fieldVectors=e},j.Builder.prototype.createTokenSet=function(){this.tokenSet=j.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},j.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new j.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},j.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},j.MatchData=function(e,t,n){for(var r=Object.create(null),i=Object.keys(n||{}),a=0;a<i.length;a++){var o=i[a];r[o]=n[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=r)},j.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var r=t[n],i=Object.keys(e.metadata[r]);null==this.metadata[r]&&(this.metadata[r]=Object.create(null));for(var a=0;a<i.length;a++){var o=i[a],s=Object.keys(e.metadata[r][o]);null==this.metadata[r][o]&&(this.metadata[r][o]=Object.create(null));for(var l=0;l<s.length;l++){var u=s[l];null==this.metadata[r][o][u]?this.metadata[r][o][u]=e.metadata[r][o][u]:this.metadata[r][o][u]=this.metadata[r][o][u].concat(e.metadata[r][o][u])}}}},j.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=n);if(t in this.metadata[e])for(var r=Object.keys(n),i=0;i<r.length;i++){var a=r[i];a in this.metadata[e][t]?this.metadata[e][t][a]=this.metadata[e][t][a].concat(n[a]):this.metadata[e][t][a]=n[a]}else this.metadata[e][t]=n},j.Query=function(e){this.clauses=[],this.allFields=e},j.Query.wildcard=new String("*"),j.Query.wildcard.NONE=0,j.Query.wildcard.LEADING=1,j.Query.wildcard.TRAILING=2,j.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},j.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=j.Query.wildcard.NONE),e.wildcard&j.Query.wildcard.LEADING&&e.term.charAt(0)!=j.Query.wildcard&&(e.term="*"+e.term),e.wildcard&j.Query.wildcard.TRAILING&&e.term.slice(-1)!=j.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=j.Query.presence.OPTIONAL),this.clauses.push(e),this},j.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=j.Query.presence.PROHIBITED)return!1;return!0},j.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,j.utils.clone(t))}),this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},j.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},j.QueryParseError.prototype=new Error,j.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},j.QueryLexer.prototype.run=function(){for(var e=j.QueryLexer.lexText;e;)e=e(this)},j.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,r=0;r<this.escapeCharPositions.length;r++)n=this.escapeCharPositions[r],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},j.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},j.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},j.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return j.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},j.QueryLexer.prototype.width=function(){return this.pos-this.start},j.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},j.QueryLexer.prototype.backup=function(){this.pos-=1},j.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=j.QueryLexer.EOS&&this.backup()},j.QueryLexer.prototype.more=function(){return this.pos<this.length},j.QueryLexer.EOS="EOS",j.QueryLexer.FIELD="FIELD",j.QueryLexer.TERM="TERM",j.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",j.QueryLexer.BOOST="BOOST",j.QueryLexer.PRESENCE="PRESENCE",j.QueryLexer.lexField=function(e){return e.backup(),e.emit(j.QueryLexer.FIELD),e.ignore(),j.QueryLexer.lexText},j.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(j.QueryLexer.TERM)),e.ignore(),e.more())return j.QueryLexer.lexText},j.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(j.QueryLexer.EDIT_DISTANCE),j.QueryLexer.lexText},j.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(j.QueryLexer.BOOST),j.QueryLexer.lexText},j.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(j.QueryLexer.TERM)},j.QueryLexer.termSeparator=j.tokenizer.separator,j.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==j.QueryLexer.EOS)return j.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return j.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(j.QueryLexer.TERM),j.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(j.QueryLexer.TERM),j.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(j.QueryLexer.PRESENCE),j.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(j.QueryLexer.PRESENCE),j.QueryLexer.lexText;if(t.match(j.QueryLexer.termSeparator))return j.QueryLexer.lexTerm}else e.escapeCharacter()}},j.QueryParser=function(e,t){this.lexer=new j.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},j.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=j.QueryParser.parseClause;e;)e=e(this);return this.query},j.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},j.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},j.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},j.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case j.QueryLexer.PRESENCE:return j.QueryParser.parsePresence;case j.QueryLexer.FIELD:return j.QueryParser.parseField;case j.QueryLexer.TERM:return j.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 j.QueryParseError(n,t.start,t.end)}},j.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=j.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=j.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new j.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new j.QueryParseError(n,t.start,t.end)}switch(r.type){case j.QueryLexer.FIELD:return j.QueryParser.parseField;case j.QueryLexer.TERM:return j.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new j.QueryParseError(n,r.start,r.end)}}},j.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 j.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var i=e.peekLexeme();if(null==i){r="expecting term, found nothing";throw new j.QueryParseError(r,t.start,t.end)}if(i.type===j.QueryLexer.TERM)return j.QueryParser.parseTerm;r="expecting term, found '"+i.type+"'";throw new j.QueryParseError(r,i.start,i.end)}},j.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 j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new j.QueryParseError(r,n.start,n.end)}else e.nextClause()}},j.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 j.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var i=e.peekLexeme();if(null!=i)switch(i.type){case j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+i.type+"'";throw new j.QueryParseError(r,i.start,i.end)}else e.nextClause()}},j.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 j.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var i=e.peekLexeme();if(null!=i)switch(i.type){case j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+i.type+"'";throw new j.QueryParseError(r,i.start,i.end)}else e.nextClause()}},void 0===(i="function"==typeof(r=function(){return j})?r.call(t,n,t,e):r)||(e.exports=i)}()},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>i,t:()=>a});var r=n(7294);const i=r.createContext(!1);function a(e){let{children:t}=e;const[n,a]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{a(!0)}),[]),r.createElement(i.Provider,{value:n},t)}},9383:(e,t,n)=>{"use strict";var r=n(7294),i=n(3935),a=n(3727),o=n(405),s=n(412);const l=[n(2497),n(3310),n(8320),n(2295)];var u=n(723),c=n(6550),d=n(8790);function p(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var f=n(7462),m=n(5742),g=n(2263),h=n(4996),v=n(6668),b=n(1944),y=n(4711),w=n(9727),k=n(3320),S=n(197);function E(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,g.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:i}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:i})})),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,g.Z)(),i=function(){const{siteConfig:{url:e}}=(0,g.Z)(),{pathname:t}=(0,c.TH)();return e+(0,h.Z)(t)}(),a=t?`${n}${t}`:i;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:a}),r.createElement("link",{rel:"canonical",href:a}))}function _(){const{i18n:{currentLocale:e}}=(0,g.Z)(),{metadata:t,image:n}=(0,v.L)();return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(b.d,{image:n}),r.createElement(x,null),r.createElement(E,null),r.createElement(S.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,f.Z)({key:t},e))))))}const O=new Map;function P(e){if(O.has(e.pathname))return{...e,pathname:O.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return O.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return O.set(e.pathname,t),{...e,pathname:t}}var C=n(8934),T=n(8940);function I(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const i=l.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>i.forEach((e=>e?.()))}const A=function(e){let{children:t,location:n,previousLocation:i}=e;return(0,r.useLayoutEffect)((()=>{i!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,i=t.hash===n.hash,a=t.search===n.search;if(r&&i&&!a)return;const{hash:o}=t;if(o){const e=decodeURIComponent(o.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:i}),I("onRouteDidUpdate",{previousLocation:i,location:n}))}),[i,n]),t};function L(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 R extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.Z.canUseDOM?I("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=I("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),L(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(A,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const N=R,j="docusaurus-base-url-issue-banner-container",D="docusaurus-base-url-issue-banner",M="docusaurus-base-url-issue-banner-suggestion-container",F="__DOCUSAURUS_INSERT_BASEURL_BANNER";function B(e){return`\nwindow['${F}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${F}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${j}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${D}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseurl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${M}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${M}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function z(){const{siteConfig:{baseUrl:e}}=(0,g.Z)();return(0,r.useLayoutEffect)((()=>{window[F]=!1}),[]),r.createElement(r.Fragment,null,!s.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,B(e))),r.createElement("div",{id:j}))}function U(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,g.Z)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(z,null):null}function q(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:i,localeConfigs:a}}=(0,g.Z)(),o=(0,h.Z)(e),{htmlLang:s,direction:l}=a[i];return r.createElement(m.Z,null,r.createElement("html",{lang:s,dir:l}),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:o}))}var $=n(4763);function H(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement($.Z,null,r.createElement(T.M,null,r.createElement(C.t,null,r.createElement(p,null,r.createElement(q,null),r.createElement(_,null),r.createElement(U,null),r.createElement(N,{location:P(t)},e)))))}var G=n(6887);const Q=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 i=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;i?.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 V=n(9670);const Z=new Set,W=new Set,K=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,Y={prefetch(e){if(!(e=>!K()&&!W.has(e)&&!Z.has(e))(e))return!1;Z.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(G).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,V.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Q(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!K()&&!W.has(e))(e)&&(W.add(e),L(e))},X=Object.freeze(Y);if(s.Z.canUseDOM){window.docusaurus=X;const e=i.hydrate;L(window.location.pathname).then((()=>{e(r.createElement(o.B6,null,r.createElement(a.VK,null,r.createElement(H,null))),document.getElementById("__docusaurus"))}))}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(7294),i=n(6809);const a=JSON.parse('{"@cmfcmf/docusaurus-search-local":{"default":{"titleBoost":10,"contentBoost":1,"parentCategoriesBoost":2,"indexDocSidebarParentCategories":3}},"docusaurus-plugin-content-docs":{"default":{"path":"/guides","versions":[{"name":"current","label":"v0.5.x","isLast":false,"path":"/guides/0.5","mainDocId":"index","docs":[{"id":"concepts/agents","path":"/guides/0.5/concepts/agents","sidebar":"tutorialSidebar"},{"id":"concepts/did-and-didcomm","path":"/guides/0.5/concepts/did-and-didcomm","sidebar":"tutorialSidebar"},{"id":"concepts/index","path":"/guides/0.5/concepts/","sidebar":"tutorialSidebar"},{"id":"concepts/platform-and-environment","path":"/guides/0.5/concepts/platform-and-environment","sidebar":"tutorialSidebar"},{"id":"ecosystem/index","path":"/guides/0.5/ecosystem/","sidebar":"tutorialSidebar"},{"id":"extensions/index","path":"/guides/0.5/extensions/","sidebar":"tutorialSidebar"},{"id":"extensions/push-notifications","path":"/guides/0.5/extensions/push-notifications","sidebar":"tutorialSidebar"},{"id":"extensions/react-hooks","path":"/guides/0.5/extensions/react-hooks","sidebar":"tutorialSidebar"},{"id":"extensions/redux-store","path":"/guides/0.5/extensions/redux-store","sidebar":"tutorialSidebar"},{"id":"extensions/rest","path":"/guides/0.5/extensions/rest","sidebar":"tutorialSidebar"},{"id":"features/aries","path":"/guides/0.5/features/aries","sidebar":"tutorialSidebar"},{"id":"features/credentials","path":"/guides/0.5/features/credentials","sidebar":"tutorialSidebar"},{"id":"features/dids","path":"/guides/0.5/features/dids","sidebar":"tutorialSidebar"},{"id":"features/index","path":"/guides/0.5/features/","sidebar":"tutorialSidebar"},{"id":"features/openid4vc","path":"/guides/0.5/features/openid4vc","sidebar":"tutorialSidebar"},{"id":"getting-started/index","path":"/guides/0.5/getting-started/","sidebar":"tutorialSidebar"},{"id":"getting-started/prerequisites","path":"/guides/0.5/getting-started/prerequisites","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/anoncreds","path":"/guides/0.5/getting-started/set-up/anoncreds","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/aries-askar","path":"/guides/0.5/getting-started/set-up/aries-askar","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/cheqd/index","path":"/guides/0.5/getting-started/set-up/cheqd/","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/index","path":"/guides/0.5/getting-started/set-up/","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-vdr","path":"/guides/0.5/getting-started/set-up/indy-vdr","sidebar":"tutorialSidebar"},{"id":"index","path":"/guides/0.5/","sidebar":"tutorialSidebar"},{"id":"tutorials/agent-config/index","path":"/guides/0.5/tutorials/agent-config/","sidebar":"tutorialSidebar"},{"id":"tutorials/agent-config/logging","path":"/guides/0.5/tutorials/agent-config/logging","sidebar":"tutorialSidebar"},{"id":"tutorials/cheqd/index","path":"/guides/0.5/tutorials/cheqd/","sidebar":"tutorialSidebar"},{"id":"tutorials/create-a-connection","path":"/guides/0.5/tutorials/create-a-connection","sidebar":"tutorialSidebar"},{"id":"tutorials/index","path":"/guides/0.5/tutorials/","sidebar":"tutorialSidebar"},{"id":"tutorials/issue-a-credential","path":"/guides/0.5/tutorials/issue-a-credential","sidebar":"tutorialSidebar"},{"id":"tutorials/mediation","path":"/guides/0.5/tutorials/mediation","sidebar":"tutorialSidebar"},{"id":"tutorials/registering-schema-and-credential-definition","path":"/guides/0.5/tutorials/registering-schema-and-credential-definition","sidebar":"tutorialSidebar"},{"id":"updating/index","path":"/guides/0.5/updating/","sidebar":"tutorialSidebar"},{"id":"updating/update-assistant","path":"/guides/0.5/updating/update-assistant","sidebar":"tutorialSidebar"},{"id":"updating/update-indy-sdk-to-askar","path":"/guides/0.5/updating/update-indy-sdk-to-askar","sidebar":"tutorialSidebar"},{"id":"updating/versions/0.1-to-0.2","path":"/guides/0.5/updating/versions/0.1-to-0.2","sidebar":"tutorialSidebar"},{"id":"updating/versions/0.2-to-0.3","path":"/guides/0.5/updating/versions/0.2-to-0.3","sidebar":"tutorialSidebar"},{"id":"updating/versions/0.3-to-0.4","path":"/guides/0.5/updating/versions/0.3-to-0.4","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/guides/0.5/","label":"index"}}}},{"name":"0.4","label":"v0.4.x","isLast":true,"path":"/guides","mainDocId":"index","docs":[{"id":"concepts/agents","path":"/guides/concepts/agents","sidebar":"tutorialSidebar"},{"id":"concepts/did-and-didcomm","path":"/guides/concepts/did-and-didcomm","sidebar":"tutorialSidebar"},{"id":"concepts/index","path":"/guides/concepts/","sidebar":"tutorialSidebar"},{"id":"concepts/platform-and-environment","path":"/guides/concepts/platform-and-environment","sidebar":"tutorialSidebar"},{"id":"ecosystem/index","path":"/guides/ecosystem/","sidebar":"tutorialSidebar"},{"id":"extensions/index","path":"/guides/extensions/","sidebar":"tutorialSidebar"},{"id":"extensions/push-notifications","path":"/guides/extensions/push-notifications","sidebar":"tutorialSidebar"},{"id":"extensions/react-hooks","path":"/guides/extensions/react-hooks","sidebar":"tutorialSidebar"},{"id":"extensions/redux-store","path":"/guides/extensions/redux-store","sidebar":"tutorialSidebar"},{"id":"extensions/rest","path":"/guides/extensions/rest","sidebar":"tutorialSidebar"},{"id":"getting-started/index","path":"/guides/getting-started/","sidebar":"tutorialSidebar"},{"id":"getting-started/prerequisites","path":"/guides/getting-started/prerequisites","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/anoncreds-rs","path":"/guides/getting-started/set-up/anoncreds-rs","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/aries-askar","path":"/guides/getting-started/set-up/aries-askar","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/cheqd/index","path":"/guides/getting-started/set-up/cheqd/","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/index","path":"/guides/getting-started/set-up/","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/index","path":"/guides/getting-started/set-up/indy-sdk/","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/linux","path":"/guides/getting-started/set-up/indy-sdk/linux","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/macos-arm","path":"/guides/getting-started/set-up/indy-sdk/macos-arm","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/macos-intel","path":"/guides/getting-started/set-up/indy-sdk/macos-intel","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/react-native","path":"/guides/getting-started/set-up/indy-sdk/react-native","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/windows","path":"/guides/getting-started/set-up/indy-sdk/windows","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-vdr","path":"/guides/getting-started/set-up/indy-vdr","sidebar":"tutorialSidebar"},{"id":"index","path":"/guides/","sidebar":"tutorialSidebar"},{"id":"tutorials/agent-config/index","path":"/guides/tutorials/agent-config/","sidebar":"tutorialSidebar"},{"id":"tutorials/agent-config/logging","path":"/guides/tutorials/agent-config/logging","sidebar":"tutorialSidebar"},{"id":"tutorials/cheqd/index","path":"/guides/tutorials/cheqd/","sidebar":"tutorialSidebar"},{"id":"tutorials/create-a-connection","path":"/guides/tutorials/create-a-connection","sidebar":"tutorialSidebar"},{"id":"tutorials/index","path":"/guides/tutorials/","sidebar":"tutorialSidebar"},{"id":"tutorials/indy-sdk-postgres-database-nodejs/index","path":"/guides/tutorials/indy-sdk-postgres-database-nodejs/","sidebar":"tutorialSidebar"},{"id":"tutorials/indy-sdk-postgres-database-nodejs/linux","path":"/guides/tutorials/indy-sdk-postgres-database-nodejs/linux","sidebar":"tutorialSidebar"},{"id":"tutorials/indy-sdk-postgres-database-nodejs/macos","path":"/guides/tutorials/indy-sdk-postgres-database-nodejs/macos","sidebar":"tutorialSidebar"},{"id":"tutorials/indy-sdk-postgres-database-nodejs/windows","path":"/guides/tutorials/indy-sdk-postgres-database-nodejs/windows","sidebar":"tutorialSidebar"},{"id":"tutorials/issue-a-credential","path":"/guides/tutorials/issue-a-credential","sidebar":"tutorialSidebar"},{"id":"tutorials/mediation","path":"/guides/tutorials/mediation","sidebar":"tutorialSidebar"},{"id":"tutorials/registering-schema-and-credential-definition","path":"/guides/tutorials/registering-schema-and-credential-definition","sidebar":"tutorialSidebar"},{"id":"updating/index","path":"/guides/updating/","sidebar":"tutorialSidebar"},{"id":"updating/update-assistant","path":"/guides/updating/update-assistant","sidebar":"tutorialSidebar"},{"id":"updating/update-indy-sdk-to-askar","path":"/guides/updating/update-indy-sdk-to-askar","sidebar":"tutorialSidebar"},{"id":"updating/versions/0.1-to-0.2","path":"/guides/updating/versions/0.1-to-0.2","sidebar":"tutorialSidebar"},{"id":"updating/versions/0.2-to-0.3","path":"/guides/updating/versions/0.2-to-0.3","sidebar":"tutorialSidebar"},{"id":"updating/versions/0.3-to-0.4","path":"/guides/updating/versions/0.3-to-0.4","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/guides/","label":"index"}}}},{"name":"0.3","label":"v0.3.x","isLast":false,"path":"/guides/0.3","mainDocId":"index","docs":[{"id":"concepts/agents","path":"/guides/0.3/concepts/agents","sidebar":"tutorialSidebar"},{"id":"concepts/did-and-didcomm","path":"/guides/0.3/concepts/did-and-didcomm","sidebar":"tutorialSidebar"},{"id":"concepts/index","path":"/guides/0.3/concepts/","sidebar":"tutorialSidebar"},{"id":"concepts/platform-and-environment","path":"/guides/0.3/concepts/platform-and-environment","sidebar":"tutorialSidebar"},{"id":"ecosystem/index","path":"/guides/0.3/ecosystem/","sidebar":"tutorialSidebar"},{"id":"extensions/index","path":"/guides/0.3/extensions/","sidebar":"tutorialSidebar"},{"id":"extensions/push-notifications/index","path":"/guides/0.3/extensions/push-notifications/","sidebar":"tutorialSidebar"},{"id":"extensions/push-notifications/setup","path":"/guides/0.3/extensions/push-notifications/setup","sidebar":"tutorialSidebar"},{"id":"extensions/react-hooks/index","path":"/guides/0.3/extensions/react-hooks/","sidebar":"tutorialSidebar"},{"id":"extensions/react-hooks/setup","path":"/guides/0.3/extensions/react-hooks/setup","sidebar":"tutorialSidebar"},{"id":"extensions/redux-store/index","path":"/guides/0.3/extensions/redux-store/","sidebar":"tutorialSidebar"},{"id":"extensions/redux-store/setup","path":"/guides/0.3/extensions/redux-store/setup","sidebar":"tutorialSidebar"},{"id":"extensions/rest/index","path":"/guides/0.3/extensions/rest/","sidebar":"tutorialSidebar"},{"id":"extensions/rest/setup","path":"/guides/0.3/extensions/rest/setup","sidebar":"tutorialSidebar"},{"id":"getting-started/index","path":"/guides/0.3/getting-started/","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/index","path":"/guides/0.3/getting-started/installation/","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/nodejs/apple-arm","path":"/guides/0.3/getting-started/installation/nodejs/apple-arm","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/nodejs/apple-intel","path":"/guides/0.3/getting-started/installation/nodejs/apple-intel","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/nodejs/index","path":"/guides/0.3/getting-started/installation/nodejs/","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/nodejs/linux","path":"/guides/0.3/getting-started/installation/nodejs/linux","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/nodejs/windows","path":"/guides/0.3/getting-started/installation/nodejs/windows","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/react-native/android","path":"/guides/0.3/getting-started/installation/react-native/android","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/react-native/index","path":"/guides/0.3/getting-started/installation/react-native/","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/react-native/ios","path":"/guides/0.3/getting-started/installation/react-native/ios","sidebar":"tutorialSidebar"},{"id":"getting-started/prerequisites/index","path":"/guides/0.3/getting-started/prerequisites/"},{"id":"getting-started/set-up/index","path":"/guides/0.3/getting-started/set-up/","sidebar":"tutorialSidebar"},{"id":"index","path":"/guides/0.3/","sidebar":"tutorialSidebar"},{"id":"tutorials/agent-config/index","path":"/guides/0.3/tutorials/agent-config/","sidebar":"tutorialSidebar"},{"id":"tutorials/agent-config/logging","path":"/guides/0.3/tutorials/agent-config/logging","sidebar":"tutorialSidebar"},{"id":"tutorials/create-a-connection","path":"/guides/0.3/tutorials/create-a-connection","sidebar":"tutorialSidebar"},{"id":"tutorials/index","path":"/guides/0.3/tutorials/","sidebar":"tutorialSidebar"},{"id":"tutorials/issue-a-credential","path":"/guides/0.3/tutorials/issue-a-credential","sidebar":"tutorialSidebar"},{"id":"tutorials/postgres-database-nodejs/index","path":"/guides/0.3/tutorials/postgres-database-nodejs/","sidebar":"tutorialSidebar"},{"id":"tutorials/postgres-database-nodejs/linux","path":"/guides/0.3/tutorials/postgres-database-nodejs/linux","sidebar":"tutorialSidebar"},{"id":"tutorials/postgres-database-nodejs/macos","path":"/guides/0.3/tutorials/postgres-database-nodejs/macos","sidebar":"tutorialSidebar"},{"id":"tutorials/postgres-database-nodejs/windows","path":"/guides/0.3/tutorials/postgres-database-nodejs/windows","sidebar":"tutorialSidebar"},{"id":"updating/index","path":"/guides/0.3/updating/","sidebar":"tutorialSidebar"},{"id":"updating/update-assistant","path":"/guides/0.3/updating/update-assistant","sidebar":"tutorialSidebar"},{"id":"updating/versions/0.1-to-0.2","path":"/guides/0.3/updating/versions/0.1-to-0.2","sidebar":"tutorialSidebar"},{"id":"updating/versions/0.2-to-0.3","path":"/guides/0.3/updating/versions/0.2-to-0.3","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/guides/0.3/","label":"index"}}}}],"breadcrumbs":true}}}'),o=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(7529);const l=JSON.parse('{"docusaurusVersion":"2.3.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.3.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.3.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.3.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.3.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.3.1"},"@cmfcmf/docusaurus-search-local":{"type":"package","name":"@cmfcmf/docusaurus-search-local","version":"0.10.0"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"2.3.1"}}}'),u={siteConfig:i.default,siteMetadata:l,globalData:a,i18n:o,codeTranslations:s},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:()=>c});var r=n(7294),i=n(412),a=n(5742),o=n(7003);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"50vh",width:"100%",fontSize:"20px"}},r.createElement("h1",null,"This page crashed."),r.createElement("p",null,t.message),r.createElement("button",{type:"button",onClick:n},"Try again"))}function l(e){let{error:t,tryAgain:n}=e;return r.createElement(c,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(a.Z,null,r.createElement("title",null,"Page Error")),r.createElement(o.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const u=e=>r.createElement(l,e);class c extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){i.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??u)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,i={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:()=>a});var r=n(7294),i=n(405);function a(e){return r.createElement(i.ql,e)}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7462),i=n(7294),a=n(3727),o=n(8780),s=n(2263),l=n(3919),u=n(412);const c=i.createContext({collectLink:()=>{}});var d=n(4996);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:g,"data-noBrokenLinkCheck":h,autoAddBaseUrl:v=!0,...b}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,s.Z)(),{withBaseUrl:k}=(0,d.C)(),S=(0,i.useContext)(c),E=(0,i.useRef)(null);(0,i.useImperativeHandle)(t,(()=>E.current));const x=p||f;const _=(0,l.Z)(x),O=x?.replace("pathname://","");let P=void 0!==O?(C=O,v&&(e=>e.startsWith("/"))(C)?k(C):C):void 0;var C;P&&_&&(P=(0,o.applyTrailingSlash)(P,{trailingSlash:y,baseUrl:w}));const T=(0,i.useRef)(!1),I=n?a.OL:a.rU,A=u.Z.canUseIntersectionObserver,L=(0,i.useRef)(),R=()=>{T.current||null==P||(window.docusaurus.preload(P),T.current=!0)};(0,i.useEffect)((()=>(!A&&_&&null!=P&&window.docusaurus.prefetch(P),()=>{A&&L.current&&L.current.disconnect()})),[L,P,A,_]);const N=P?.startsWith("#")??!1,j=!P||!_||N;return j||h||S.collectLink(P),j?i.createElement("a",(0,r.Z)({ref:E,href:P},x&&!_&&{target:"_blank",rel:"noopener noreferrer"},b)):i.createElement(I,(0,r.Z)({},b,{onMouseEnter:R,onTouchStart:R,innerRef:e=>{E.current=e,A&&e&&_&&(L.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(L.current.unobserve(e),L.current.disconnect(),null!=P&&window.docusaurus.prefetch(P))}))})),L.current.observe(e))},to:P},n&&{isActive:g,activeClassName:m}))}const f=i.forwardRef(p)},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l,I:()=>s});var r=n(7294);function i(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 a=n(7529);function o(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 a[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return i(o({message:n,id:r}),t)}function l(e){let{children:t,id:n,values:a}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const s=o({message:t,id:n});return r.createElement(r.Fragment,null,i(s,a))}},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 i(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>i,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>o,Z:()=>s});var r=n(7294),i=n(2263),a=n(3919);function o(){const{siteConfig:{baseUrl:e,url:t}}=(0,i.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:i=!1,absolute:o=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,a.b)(n))return n;if(i)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return o?e+s:s}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=o();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),i=n(8940);function a(){return(0,r.useContext)(i._)}},8084:(e,t,n)=>{"use strict";n.d(t,{OD:()=>a,eZ:()=>o});var r=n(2263),i=n(9935);function a(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 o(e,t,n){void 0===t&&(t=i.m),void 0===n&&(n={});const r=a(e),o=r?.[t];if(!o&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return o}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),i=n(8934);function a(){return(0,r.useContext)(i._)}},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function i(e){const t={};return function e(n,i){Object.entries(n).forEach((n=>{let[a,o]=n;const s=i?`${i}.${a}`:a;r(o)?e(o,s):t[s]=o}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>i,z:()=>a});var r=n(7294);const i=r.createContext(null);function a(e){let{children:t,value:n}=e;const a=r.useContext(i),o=(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:a,value:n})),[a,n]);return r.createElement(i.Provider,{value:o},t)}},4104:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>g,gA:()=>d,WS:()=>p,_r:()=>u,Jo:()=>h,zh:()=>c,yW:()=>m,gB:()=>f});var r=n(6550),i=n(8084);const a=e=>e.versions.find((e=>e.isLast));function o(e,t){const n=a(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function s(e,t){const n=o(e,t),i=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:i,alternateDocVersions:i?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(i.id):{}}}const l={},u=()=>(0,i.OD)("docusaurus-plugin-content-docs")??l,c=e=>(0,i.eZ)("docusaurus-plugin-content-docs",e,{failfast:!0});function d(e){void 0===e&&(e={});const t=u(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const i=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})})),a=i?{pluginId:i[0],pluginData:i[1]}:void 0;if(!a&&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 a}(t,n,e)}function p(e){void 0===e&&(e={});const t=d(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:o(t.pluginData,n)}}function f(e){return c(e).versions}function m(e){const t=c(e);return a(t)}function g(e){const t=c(e),{pathname:n}=(0,r.TH)();return s(t,n)}function h(e){const t=c(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=a(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(4865),i=n.n(r);i().configure({showSpinner:!1});const a={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{i().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){i().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(7410),i=n(6809);!function(e){const{themeConfig:{prism:t}}=i.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294);const i={iconExternalLink:"iconExternalLink_nPIU"};function a(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:i.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"}))}},7003:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ua});var r=n(7294),i=n(6010),a=n(4763),o=n(1944),s=n(7462),l=n(6550),u=n(5999),c=n(5936);const d="docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(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 g(e){const t=e.children??m,{containerRef:n,onClick:i}=f();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,s.Z)({},e,{href:`#${d}`,onClick:i}),t))}var h=n(5281),v=n(9727);const b={skipToContent:"skipToContent_fXgn"};function y(){return r.createElement(g,{className:b.skipToContent})}var w=n(6668),k=n(9689);function S(e){let{width:t=21,height:n=21,color:i="currentColor",strokeWidth:a=1.2,className:o,...l}=e;return r.createElement("svg",(0,s.Z)({viewBox:"0 0 15 15",width:t,height:n},l),r.createElement("g",{stroke:i,strokeWidth:a},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const E={closeButton:"closeButton_CVFx"};function x(e){return r.createElement("button",(0,s.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,i.Z)("clean-btn close",E.closeButton,e.className)}),r.createElement(S,{width:14,height:14,strokeWidth:3.1}))}const _={content:"content_knG7"};function O(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,s.Z)({},e,{className:(0,i.Z)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const P={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function C(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:i,textColor:a,isCloseable:o}=e;return r.createElement("div",{className:P.announcementBar,style:{backgroundColor:i,color:a},role:"banner"},o&&r.createElement("div",{className:P.announcementBarPlaceholder}),r.createElement(O,{className:P.announcementBarContent}),o&&r.createElement(x,{onClick:n,className:P.announcementBarClose}))}var T=n(3163),I=n(2466);var A=n(902),L=n(3102);const R=r.createContext(null);function N(e){let{children:t}=e;const n=function(){const e=(0,T.e)(),t=(0,L.HY)(),[n,i]=(0,r.useState)(!1),a=null!==t.component,o=(0,A.D9)(a);return(0,r.useEffect)((()=>{a&&!o&&i(!0)}),[a,o]),(0,r.useEffect)((()=>{a?e.shown||i(!0):i(!1)}),[e.shown,a]),(0,r.useMemo)((()=>[n,i]),[n])}();return r.createElement(R.Provider,{value:n},t)}function j(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function D(){const e=(0,r.useContext)(R);if(!e)throw new A.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,i=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,L.HY)();return(0,r.useMemo)((()=>({shown:t,hide:i,content:j(a)})),[i,a,t])}function M(e){let{header:t,primaryMenu:n,secondaryMenu:a}=e;const{shown:o}=D();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,i.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},a)))}var F=n(2949),B=n(2389);function z(e){return r.createElement("svg",(0,s.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 U(e){return r.createElement("svg",(0,s.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 q={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function $(e){let{className:t,value:n,onChange:a}=e;const o=(0,B.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"===n?(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,i.Z)(q.toggle,t)},r.createElement("button",{className:(0,i.Z)("clean-btn",q.toggleButton,!o&&q.toggleButtonDisabled),type:"button",onClick:()=>a("dark"===n?"light":"dark"),disabled:!o,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(z,{className:(0,i.Z)(q.toggleIcon,q.lightToggleIcon)}),r.createElement(U,{className:(0,i.Z)(q.toggleIcon,q.darkToggleIcon)})))}const H=r.memo($);function G(e){let{className:t}=e;const n=(0,w.L)().colorMode.disableSwitch,{colorMode:i,setColorMode:a}=(0,F.I)();return n?null:r.createElement(H,{className:t,value:i,onChange:a})}var Q=n(1327);function V(){return r.createElement(Q.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Z(){const e=(0,T.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(S,{color:"var(--ifm-color-emphasis-600)"}))}function W(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(V,null),r.createElement(G,{className:"margin-right--md"}),r.createElement(Z,null))}var K=n(9960),Y=n(4996),X=n(3919);function J(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var ee=n(9471);function te(e){let{activeBasePath:t,activeBaseRegex:n,to:i,href:a,label:o,html:l,isDropdownLink:u,prependBaseUrlToHref:c,...d}=e;const p=(0,Y.Z)(i),f=(0,Y.Z)(t),m=(0,Y.Z)(a,{forcePrependBaseUrl:!0}),g=o&&a&&!(0,X.Z)(a),h=l?{dangerouslySetInnerHTML:{__html:l}}:{children:r.createElement(r.Fragment,null,o,g&&r.createElement(ee.Z,u&&{width:12,height:12}))};return a?r.createElement(K.Z,(0,s.Z)({href:c?m:a},d,h)):r.createElement(K.Z,(0,s.Z)({to:p,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?J(n,t.pathname):t.pathname.startsWith(f)},d,h))}function ne(e){let{className:t,isDropdownItem:n=!1,...a}=e;const o=r.createElement(te,(0,s.Z)({className:(0,i.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},a));return n?r.createElement("li",null,o):o}function re(e){let{className:t,isDropdownItem:n,...a}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(te,(0,s.Z)({className:(0,i.Z)("menu__link",t)},a)))}function ie(e){let{mobile:t=!1,position:n,...i}=e;const a=t?re:ne;return r.createElement(a,(0,s.Z)({},i,{activeClassName:i.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ae=n(6043),oe=n(8596),se=n(2263);function le(e,t){return e.some((e=>function(e,t){return!!(0,oe.Mg)(e.to,t)||!!J(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ue(e){let{items:t,position:n,className:a,onClick:o,...l}=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.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[u]),r.createElement("div",{ref:u,className:(0,i.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c})},r.createElement(te,(0,s.Z)({"aria-haspopup":"true","aria-expanded":c,role:"button",href:l.to?void 0:"#",className:(0,i.Z)("navbar__link",a)},l,{onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))}}),l.children??l.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,n)=>r.createElement(Pi,(0,s.Z)({isDropdownItem:!0,onKeyDown:e=>{if(n===t.length-1&&"Tab"===e.key){e.preventDefault(),d(!1);const t=u.current.nextElementSibling;if(t){(t instanceof HTMLAnchorElement?t:t.querySelector("a")).focus()}}},activeClassName:"dropdown__link--active"},e,{key:n}))))))}function ce(e){let{items:t,className:n,position:a,onClick:o,...u}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,l.TH)();return t.replace(e,"/")}(),d=le(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ae.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),r.createElement("li",{className:(0,i.Z)("menu__list-item",{"menu__list-item--collapsed":p})},r.createElement(te,(0,s.Z)({role:"button",className:(0,i.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},u,{onClick:e=>{e.preventDefault(),f()}}),u.children??u.label),r.createElement(ae.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p},t.map(((e,t)=>r.createElement(Pi,(0,s.Z)({mobile:!0,isDropdownItem:!0,onClick:o,activeClassName:"menu__link--active"},e,{key:t}))))))}function de(e){let{mobile:t=!1,...n}=e;const i=t?ce:ue;return r.createElement(i,n)}var pe=n(4711);function fe(e){let{width:t=20,height:n=20,...i}=e;return r.createElement("svg",(0,s.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},i),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_nlXk";var ge=n(3935);function he(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 ve(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function be(e,t,n){var r,i=t.initialState;return{getState:function(){return i},dispatch:function(r,a){var o=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?he(Object(n),!0).forEach((function(t){ve(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):he(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},i);i=e(i,{type:r,props:t,payload:a}),n({state:i,prevState:o})},pendingRequests:(r=[],{add:function(e){return r.push(e),e.finally((function(){r=r.filter((function(t){return t!==e}))}))},cancelAll:function(){r.forEach((function(e){return e.cancel()}))},isEmpty:function(){return 0===r.length}})}}function ye(e){return e.reduce((function(e,t){return e.concat(t)}),[])}function we(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 ke(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?we(Object(n),!0).forEach((function(t){Se(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):we(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Se(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ee(e){return 0===e.collections.length?0:e.collections.reduce((function(e,t){return e+t.items.length}),0)}var xe=0;function _e(){return"autocomplete-".concat(xe++)}var Oe=function(){};function Pe(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 Ce(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pe(Object(n),!0).forEach((function(t){Te(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Te(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ie(e){return function(e){if(Array.isArray(e))return Ae(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Ae(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ae(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ae(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Le(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 Re(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Le(Object(n),!0).forEach((function(t){Ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Le(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function je(e,t){var n,r="undefined"!=typeof window?window:{},i=e.plugins||[];return Re(Re({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultActiveItemId:null,stallThreshold:300,environment:r,shouldPanelOpen:function(e){return Ee(e.state)>0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:_e(),plugins:i,initialState:Re({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),i.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),i.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),i.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(Ie(i.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var n=[];return Promise.resolve(e(t)).then((function(e){return Array.isArray(e),Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t={getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:Oe,onResolve:Oe};Object.keys(t).forEach((function(e){t[e].__default=!0}));var r=Ce(Ce({},t),e);return Promise.resolve(r)})))}))}(e,n)}))).then((function(e){return ye(e)})).then((function(e){return e.map((function(e){return Re(Re({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))},onResolve:function(n){e.onResolve(n),t.forEach((function(e){var t;return null===(t=e.onResolve)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:Re({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}function De(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 Me(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?De(Object(n),!0).forEach((function(t){Fe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):De(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Fe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Be(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 ze(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Be(Object(n),!0).forEach((function(t){Ue(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Be(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ue(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function qe(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 $e(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?qe(Object(n),!0).forEach((function(t){He(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):qe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function He(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ge(e){return function(e){if(Array.isArray(e))return Qe(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Qe(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Qe(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Qe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Ve(e){return Boolean(e.execute)}function Ze(e,t,n){if(i=e,Boolean(null==i?void 0:i.execute)){var r="algolia"===e.requesterId?Object.assign.apply(Object,[{}].concat(Ge(Object.keys(n.context).map((function(e){var t;return null===(t=n.context[e])||void 0===t?void 0:t.__algoliaSearchParameters}))))):{};return $e($e({},e),{},{requests:e.queries.map((function(n){return{query:"algolia"===e.requesterId?$e($e({},n),{},{params:$e($e({},r),n.params)}):n,sourceId:t,transformResponse:e.transformResponse}}))})}var i;return{items:e,sourceId:t}}function We(e){var t=e.reduce((function(e,t){if(!Ve(t))return e.push(t),e;var n=t.searchClient,r=t.execute,i=t.requesterId,a=t.requests,o=e.find((function(e){return Ve(t)&&Ve(e)&&e.searchClient===n&&Boolean(i)&&e.requesterId===i}));if(o){var s;(s=o.items).push.apply(s,Ge(a))}else{var l={execute:r,requesterId:i,items:a,searchClient:n};e.push(l)}return e}),[]).map((function(e){if(!Ve(e))return Promise.resolve(e);var t=e,n=t.execute,r=t.items;return n({searchClient:t.searchClient,requests:r})}));return Promise.all(t).then((function(e){return ye(e)}))}function Ke(e,t,n){return t.map((function(t){var r=e.filter((function(e){return e.sourceId===t.sourceId})),i=r.map((function(e){return e.items})),a=r[0].transformResponse,o=a?a(function(e){var t=e.map((function(e){var t;return ze(ze({},e),{},{hits:null===(t=e.hits)||void 0===t?void 0:t.map((function(t){return ze(ze({},t),{},{__autocomplete_indexName:e.index,__autocomplete_queryID:e.queryID})}))})}));return{results:t,hits:t.map((function(e){return e.hits})).filter(Boolean),facetHits:t.map((function(e){var t;return null===(t=e.facetHits)||void 0===t?void 0:t.map((function(e){return{label:e.value,count:e.count,_highlightResult:{label:{value:e.highlighted}}}}))})).filter(Boolean)}}(i)):i;return t.onResolve({source:t,results:i,items:o,state:n.getState()}),Array.isArray(o),o.every(Boolean),'The `getItems` function from source "'.concat(t.sourceId,'" must return an array of items but returned ').concat(JSON.stringify(void 0),".\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems"),{source:t,items:o}}))}function Ye(e,t){var n=t;return{then:function(t,r){return Ye(e.then(et(t,n,e),et(r,n,e)),n)},catch:function(t){return Ye(e.catch(et(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),Ye(e.finally(et(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===n.isCanceled}}}function Xe(e){return Ye(new Promise((function(t,n){return e(t,n)})),{isCanceled:!1,onCancelList:[]})}function Je(e){return Ye(e,{isCanceled:!1,onCancelList:[]})}function et(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}function tt(e){var t=function(e){var t=e.collections.map((function(e){return e.items.length})).reduce((function(e,t,n){var r=(e[n-1]||0)+t;return e.push(r),e}),[]).reduce((function(t,n){return n<=e.activeItemId?t+1:t}),0);return e.collections[t]}(e);if(!t)return null;var n=t.items[function(e){for(var t=e.state,n=e.collection,r=!1,i=0,a=0;!1===r;){var o=t.collections[i];if(o===n){r=!0;break}a+=o.items.length,i++}return t.activeItemId-a}({state:e,collection:t})],r=t.source;return{item:n,itemInputValue:r.getItemInputValue({item:n,state:e}),itemUrl:r.getItemUrl({item:n,state:e}),source:r}}Xe.resolve=function(e){return Je(Promise.resolve(e))},Xe.reject=function(e){return Je(Promise.reject(e))};var nt=["event","nextState","props","query","refresh","store"];function rt(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 it(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?rt(Object(n),!0).forEach((function(t){at(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):rt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function at(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ot(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var st,lt,ut,ct=null,dt=(st=-1,lt=-1,ut=void 0,function(e){var t=++st;return Promise.resolve(e).then((function(e){return ut&&t<lt?ut:(lt=t,ut=e,e)}))});function pt(e){var t=e.event,n=e.nextState,r=void 0===n?{}:n,i=e.props,a=e.query,o=e.refresh,s=e.store,l=ot(e,nt);ct&&i.environment.clearTimeout(ct);var u=l.setCollections,c=l.setIsOpen,d=l.setQuery,p=l.setActiveItemId,f=l.setStatus;if(d(a),p(i.defaultActiveItemId),!a&&!1===i.openOnFocus){var m,g=s.getState().collections.map((function(e){return it(it({},e),{},{items:[]})}));f("idle"),u(g),c(null!==(m=r.isOpen)&&void 0!==m?m:i.shouldPanelOpen({state:s.getState()}));var h=Je(dt(g).then((function(){return Promise.resolve()})));return s.pendingRequests.add(h)}f("loading"),ct=i.environment.setTimeout((function(){f("stalled")}),i.stallThreshold);var v=Je(dt(i.getSources(it({query:a,refresh:o,state:s.getState()},l)).then((function(e){return Promise.all(e.map((function(e){return Promise.resolve(e.getItems(it({query:a,refresh:o,state:s.getState()},l))).then((function(t){return Ze(t,e.sourceId,s.getState())}))}))).then(We).then((function(t){return Ke(t,e,s)})).then((function(e){return function(e){var t=e.collections,n=e.props,r=e.state,i=t.reduce((function(e,t){return Me(Me({},e),{},Fe({},t.source.sourceId,Me(Me({},t.source),{},{getItems:function(){return ye(t.items)}})))}),{}),a=n.plugins.reduce((function(e,t){return t.reshape?t.reshape(e):e}),{sourcesBySourceId:i,state:r}).sourcesBySourceId;return ye(n.reshape({sourcesBySourceId:a,sources:Object.values(a),state:r})).filter(Boolean).map((function(e){return{source:e,items:e.getItems()}}))}({collections:e,props:i,state:s.getState()})}))})))).then((function(e){var n;f("idle"),u(e);var d=i.shouldPanelOpen({state:s.getState()});c(null!==(n=r.isOpen)&&void 0!==n?n:i.openOnFocus&&!a&&d||d);var p=tt(s.getState());if(null!==s.getState().activeItemId&&p){var m=p.item,g=p.itemInputValue,h=p.itemUrl,v=p.source;v.onActive(it({event:t,item:m,itemInputValue:g,itemUrl:h,refresh:o,source:v,state:s.getState()},l))}})).finally((function(){f("idle"),ct&&i.environment.clearTimeout(ct)}));return s.pendingRequests.add(v)}var ft=["event","props","refresh","store"];function mt(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 gt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?mt(Object(n),!0).forEach((function(t){ht(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):mt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ht(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function vt(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var bt=/((gt|sm)-|galaxy nexus)|samsung[- ]/i;var yt=["props","refresh","store"],wt=["inputElement","formElement","panelElement"],kt=["inputElement"],St=["inputElement","maxLength"],Et=["sourceIndex"],xt=["sourceIndex"],_t=["item","source","sourceIndex"];function Ot(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 Pt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ot(Object(n),!0).forEach((function(t){Ct(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ot(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ct(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Tt(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function It(e){var t=e.props,n=e.refresh,r=e.store,i=Tt(e,yt),a=function(e,t){return void 0!==t?"".concat(e,"-").concat(t):e};return{getEnvironmentProps:function(e){var n=e.inputElement,i=e.formElement,a=e.panelElement;function o(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[i,a].some((function(t){return n=t,r=e.target,n===r||n.contains(r);var n,r}))&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return Pt({onTouchStart:o,onMouseDown:o,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},Tt(e,wt))},getRootProps:function(e){return Pt({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){e.inputElement;return Pt({action:"",noValidate:!0,role:"search",onSubmit:function(a){var o;a.preventDefault(),t.onSubmit(Pt({event:a,refresh:n,state:r.getState()},i)),r.dispatch("submit",null),null===(o=e.inputElement)||void 0===o||o.blur()},onReset:function(a){var o;a.preventDefault(),t.onReset(Pt({event:a,refresh:n,state:r.getState()},i)),r.dispatch("reset",null),null===(o=e.inputElement)||void 0===o||o.focus()}},Tt(e,kt))},getLabelProps:function(e){var n=e||{},r=n.sourceIndex,i=Tt(n,Et);return Pt({htmlFor:"".concat(a(t.id,r),"-input"),id:"".concat(a(t.id,r),"-label")},i)},getInputProps:function(e){var a;function o(e){(t.openOnFocus||Boolean(r.getState().query))&&pt(Pt({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},i)),r.dispatch("focus",null)}var s=e||{},l=(s.inputElement,s.maxLength),u=void 0===l?512:l,c=Tt(s,St),d=tt(r.getState()),p=function(e){return Boolean(e&&e.match(bt))}((null===(a=t.environment.navigator)||void 0===a?void 0:a.userAgent)||""),f=null!=d&&d.itemUrl&&!p?"go":"search";return Pt({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?"".concat(t.id,"-item-").concat(r.getState().activeItemId):void 0,"aria-controls":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:r.getState().completion||r.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:f,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:u,type:"search",onChange:function(e){pt(Pt({event:e,props:t,query:e.currentTarget.value.slice(0,u),refresh:n,store:r},i))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,i=e.store,a=vt(e,ft);if("ArrowUp"===t.key||"ArrowDown"===t.key){var o=function(){var e=n.environment.document.getElementById("".concat(n.id,"-item-").concat(i.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},s=function(){var e=tt(i.getState());if(null!==i.getState().activeItemId&&e){var n=e.item,o=e.itemInputValue,s=e.itemUrl,l=e.source;l.onActive(gt({event:t,item:n,itemInputValue:o,itemUrl:s,refresh:r,source:l,state:i.getState()},a))}};t.preventDefault(),!1===i.getState().isOpen&&(n.openOnFocus||Boolean(i.getState().query))?pt(gt({event:t,props:n,query:i.getState().query,refresh:r,store:i},a)).then((function(){i.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),s(),setTimeout(o,0)})):(i.dispatch(t.key,{}),s(),o())}else if("Escape"===t.key)t.preventDefault(),i.dispatch(t.key,null),i.pendingRequests.cancelAll();else if("Tab"===t.key)i.dispatch("blur",null),i.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===i.getState().activeItemId||i.getState().collections.every((function(e){return 0===e.items.length})))return void(n.debug||i.pendingRequests.cancelAll());t.preventDefault();var l=tt(i.getState()),u=l.item,c=l.itemInputValue,d=l.itemUrl,p=l.source;if(t.metaKey||t.ctrlKey)void 0!==d&&(p.onSelect(gt({event:t,item:u,itemInputValue:c,itemUrl:d,refresh:r,source:p,state:i.getState()},a)),n.navigator.navigateNewTab({itemUrl:d,item:u,state:i.getState()}));else if(t.shiftKey)void 0!==d&&(p.onSelect(gt({event:t,item:u,itemInputValue:c,itemUrl:d,refresh:r,source:p,state:i.getState()},a)),n.navigator.navigateNewWindow({itemUrl:d,item:u,state:i.getState()}));else if(t.altKey);else{if(void 0!==d)return p.onSelect(gt({event:t,item:u,itemInputValue:c,itemUrl:d,refresh:r,source:p,state:i.getState()},a)),void n.navigator.navigate({itemUrl:d,item:u,state:i.getState()});pt(gt({event:t,nextState:{isOpen:!1},props:n,query:c,refresh:r,store:i},a)).then((function(){p.onSelect(gt({event:t,item:u,itemInputValue:c,itemUrl:d,refresh:r,source:p,state:i.getState()},a))}))}}}(Pt({event:e,props:t,refresh:n,store:r},i))},onFocus:o,onBlur:Oe,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||o(n)}},c)},getPanelProps:function(e){return Pt({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){var n=e||{},r=n.sourceIndex,i=Tt(n,xt);return Pt({role:"listbox","aria-labelledby":"".concat(a(t.id,r),"-label"),id:"".concat(a(t.id,r),"-list")},i)},getItemProps:function(e){var o=e.item,s=e.source,l=e.sourceIndex,u=Tt(e,_t);return Pt({id:"".concat(a(t.id,l),"-item-").concat(o.__autocomplete_id),role:"option","aria-selected":r.getState().activeItemId===o.__autocomplete_id,onMouseMove:function(e){if(o.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",o.__autocomplete_id);var t=tt(r.getState());if(null!==r.getState().activeItemId&&t){var a=t.item,s=t.itemInputValue,l=t.itemUrl,u=t.source;u.onActive(Pt({event:e,item:a,itemInputValue:s,itemUrl:l,refresh:n,source:u,state:r.getState()},i))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var a=s.getItemInputValue({item:o,state:r.getState()}),l=s.getItemUrl({item:o,state:r.getState()});(l?Promise.resolve():pt(Pt({event:e,nextState:{isOpen:!1},props:t,query:a,refresh:n,store:r},i))).then((function(){s.onSelect(Pt({event:e,item:o,itemInputValue:a,itemUrl:l,refresh:n,source:s,state:r.getState()},i))}))}},u)}}}var At="1.8.3",Lt=[{segment:"autocomplete-core",version:At}];function Rt(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 Nt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Rt(Object(n),!0).forEach((function(t){jt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Rt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function jt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Dt(e){var t,n,r,i,a=e.plugins,o=e.options,s=null===(t=((null===(n=o.__autocomplete_metadata)||void 0===n?void 0:n.userAgents)||[])[0])||void 0===t?void 0:t.segment,l=s?jt({},s,Object.keys((null===(r=o.__autocomplete_metadata)||void 0===r?void 0:r.options)||{})):{};return{plugins:a.map((function(e){return{name:e.name,options:Object.keys(e.__autocomplete_pluginOptions||[])}})),options:Nt({"autocomplete-core":Object.keys(o)},l),ua:Lt.concat((null===(i=o.__autocomplete_metadata)||void 0===i?void 0:i.userAgents)||[])}}function Mt(e){var t,n=e.state;return!1===n.isOpen||null===n.activeItemId?null:(null===(t=tt(n))||void 0===t?void 0:t.itemInputValue)||null}function Ft(e,t,n,r){if(!n)return null;if(e<0&&(null===t||null!==r&&0===t))return n+e;var i=(null===t?-1:t)+e;return i<=-1||i>=n?null===r?null:0:i}function Bt(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 zt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Bt(Object(n),!0).forEach((function(t){Ut(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Bt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ut(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var qt=function(e,t){switch(t.type){case"setActiveItemId":case"mousemove":return zt(zt({},e),{},{activeItemId:t.payload});case"setQuery":return zt(zt({},e),{},{query:t.payload,completion:null});case"setCollections":return zt(zt({},e),{},{collections:t.payload});case"setIsOpen":return zt(zt({},e),{},{isOpen:t.payload});case"setStatus":return zt(zt({},e),{},{status:t.payload});case"setContext":return zt(zt({},e),{},{context:zt(zt({},e.context),t.payload)});case"ArrowDown":var n=zt(zt({},e),{},{activeItemId:t.payload.hasOwnProperty("nextActiveItemId")?t.payload.nextActiveItemId:Ft(1,e.activeItemId,Ee(e),t.props.defaultActiveItemId)});return zt(zt({},n),{},{completion:Mt({state:n})});case"ArrowUp":var r=zt(zt({},e),{},{activeItemId:Ft(-1,e.activeItemId,Ee(e),t.props.defaultActiveItemId)});return zt(zt({},r),{},{completion:Mt({state:r})});case"Escape":return e.isOpen?zt(zt({},e),{},{activeItemId:null,isOpen:!1,completion:null}):zt(zt({},e),{},{activeItemId:null,query:"",status:"idle",collections:[]});case"submit":return zt(zt({},e),{},{activeItemId:null,isOpen:!1,status:"idle"});case"reset":return zt(zt({},e),{},{activeItemId:!0===t.props.openOnFocus?t.props.defaultActiveItemId:null,status:"idle",query:""});case"focus":return zt(zt({},e),{},{activeItemId:t.props.defaultActiveItemId,isOpen:(t.props.openOnFocus||Boolean(e.query))&&t.props.shouldPanelOpen({state:e})});case"blur":return t.props.debug?e:zt(zt({},e),{},{isOpen:!1,activeItemId:null});case"mouseleave":return zt(zt({},e),{},{activeItemId:t.props.defaultActiveItemId});default:return"The reducer action ".concat(JSON.stringify(t.type)," is not supported."),e}};function $t(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 Ht(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$t(Object(n),!0).forEach((function(t){Gt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$t(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Gt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Qt(e){var t=[],n=je(e,t),r=be(qt,n,(function(e){var t=e.prevState,r=e.state;n.onStateChange(Ht({prevState:t,state:r,refresh:o,navigator:n.navigator},i))})),i=function(e){var t=e.store;return{setActiveItemId:function(e){t.dispatch("setActiveItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var n=0,r=e.map((function(e){return ke(ke({},e),{},{items:ye(e.items).map((function(e){return ke(ke({},e),{},{__autocomplete_id:n++})}))})}));t.dispatch("setCollections",r)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:r}),a=It(Ht({props:n,refresh:o,store:r,navigator:n.navigator},i));function o(){return pt(Ht({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,navigator:n.navigator,query:r.getState().query,refresh:o,store:r},i))}return n.plugins.forEach((function(e){var r;return null===(r=e.subscribe)||void 0===r?void 0:r.call(e,Ht(Ht({},i),{},{navigator:n.navigator,refresh:o,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})},onResolve:function(e){t.push({onResolve:e})}}))})),function(e){var t,n,r=e.metadata,i=e.environment;if(null===(t=i.navigator)||void 0===t||null===(n=t.userAgent)||void 0===n?void 0:n.includes("Algolia Crawler")){var a=i.document.createElement("meta"),o=i.document.querySelector("head");a.name="algolia:metadata",setTimeout((function(){a.content=JSON.stringify(r),o.appendChild(a)}),0)}}({metadata:Dt({plugins:n.plugins,options:e}),environment:n.environment}),Ht(Ht({refresh:o,navigator:n.navigator},a),i)}function Vt(e){return{current:e}}function Zt(e,t){var n=void 0;return function(){for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];n&&clearTimeout(n),n=setTimeout((function(){return e.apply(void 0,i)}),t)}}var Wt=function(e,t,n,r){var i;t[0]=0;for(var a=1;a<t.length;a++){var o=t[a++],s=t[a]?(t[0]|=o?1:2,n[t[a++]]):t[++a];3===o?r[0]=s:4===o?r[1]=Object.assign(r[1]||{},s):5===o?(r[1]=r[1]||{})[t[++a]]=s:6===o?r[1][t[++a]]+=s+"":o?(i=e.apply(s,Wt(e,s,n,["",null])),r.push(i),s[0]?t[0]|=2:(t[a-2]=0,t[a]=i)):r.push(s)}return r},Kt=new Map;function Yt(e){var t=Kt.get(this);return t||(t=new Map,Kt.set(this,t)),(t=Wt(this,t.get(e)||(t.set(e,t=function(e){for(var t,n,r=1,i="",a="",o=[0],s=function(e){1===r&&(e||(i=i.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?o.push(0,e,i):3===r&&(e||i)?(o.push(3,e,i),r=2):2===r&&"..."===i&&e?o.push(4,e,0):2===r&&i&&!e?o.push(5,0,!0,i):r>=5&&((i||!e&&5===r)&&(o.push(r,0,i,n),r=6),e&&(o.push(r,e,0,n),r=6)),i=""},l=0;l<e.length;l++){l&&(1===r&&s(),s(l));for(var u=0;u<e[l].length;u++)t=e[l][u],1===r?"<"===t?(s(),o=[o],r=3):i+=t:4===r?"--"===i&&">"===t?(r=1,i=""):i=t+i[0]:a?t===a?a="":i+=t:'"'===t||"'"===t?a=t:">"===t?(s(),r=1):r&&("="===t?(r=5,n=i,i=""):"/"===t&&(r<5||">"===e[l][u+1])?(s(),3===r&&(o=o[0]),r=o,(o=o[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(s(),r=2):i+=t),3===r&&"!--"===i&&(r=4,o=o[0])}return s(),o}(e)),t),arguments,[])).length>1?t:t[0]}var Xt=function(e){var t=e.environment,n=t.document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","aa-SubmitIcon"),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("width","20"),n.setAttribute("height","20"),n.setAttribute("fill","currentColor");var r=t.document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d","M16.041 15.856c-0.034 0.026-0.067 0.055-0.099 0.087s-0.060 0.064-0.087 0.099c-1.258 1.213-2.969 1.958-4.855 1.958-1.933 0-3.682-0.782-4.95-2.050s-2.050-3.017-2.050-4.95 0.782-3.682 2.050-4.95 3.017-2.050 4.95-2.050 3.682 0.782 4.95 2.050 2.050 3.017 2.050 4.95c0 1.886-0.745 3.597-1.959 4.856zM21.707 20.293l-3.675-3.675c1.231-1.54 1.968-3.493 1.968-5.618 0-2.485-1.008-4.736-2.636-6.364s-3.879-2.636-6.364-2.636-4.736 1.008-6.364 2.636-2.636 3.879-2.636 6.364 1.008 4.736 2.636 6.364 3.879 2.636 6.364 2.636c2.125 0 4.078-0.737 5.618-1.968l3.675 3.675c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414z"),n.appendChild(r),n},Jt=function(e){var t=e.environment,n=t.document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","aa-ClearIcon"),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("width","18"),n.setAttribute("height","18"),n.setAttribute("fill","currentColor");var r=t.document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d","M5.293 6.707l5.293 5.293-5.293 5.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0l5.293-5.293 5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-5.293-5.293 5.293-5.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5.293 5.293-5.293-5.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414z"),n.appendChild(r),n},en=function(e){var t=e.environment.document.createElementNS("http://www.w3.org/2000/svg","svg");return t.setAttribute("class","aa-LoadingIcon"),t.setAttribute("viewBox","0 0 100 100"),t.setAttribute("width","20"),t.setAttribute("height","20"),t.innerHTML='<circle\n cx="50"\n cy="50"\n fill="none"\n r="35"\n stroke="currentColor"\n stroke-dasharray="164.93361431346415 56.97787143782138"\n stroke-width="6"\n>\n <animateTransform\n attributeName="transform"\n type="rotate"\n repeatCount="indefinite"\n dur="1s"\n values="0 50 50;90 50 50;180 50 50;360 50 50"\n keyTimes="0;0.40;0.65;1"\n />\n</circle>',t},tn=["ontouchstart","ontouchend","ontouchmove","ontouchcancel"];function nn(e,t,n){e[t]=null===n?"":"number"!=typeof n?n:n+"px"}function rn(e){this._listeners[e.type](e)}function an(e,t,n){var r,i,a=e[t];if("style"===t)if("string"==typeof n)e.style=n;else if(null===n)e.style="";else for(t in n)a&&n[t]===a[t]||nn(e.style,t,n[t]);else"o"===t[0]&&"n"===t[1]?(r=t!==(t=t.replace(/Capture$/,"")),((i=t.toLowerCase())in e||tn.includes(i))&&(t=i),t=t.slice(2),e._listeners||(e._listeners={}),e._listeners[t]=n,n?a||e.addEventListener(t,rn,r):e.removeEventListener(t,rn,r)):"list"!==t&&"tagName"!==t&&"form"!==t&&"type"!==t&&"size"!==t&&"download"!==t&&"href"!==t&&t in e?e[t]=null==n?"":n:"function"!=typeof n&&"dangerouslySetInnerHTML"!==t&&(null==n||!1===n&&!/^ar/.test(t)?e.removeAttribute(t):e.setAttribute(t,n))}function on(e){return"onChange"===e?"onInput":e}function sn(e,t){for(var n in t)an(e,on(n),t[n])}function ln(e,t){for(var n in t)"o"===n[0]&&"n"===n[1]||an(e,on(n),t[n])}var un=["children"];function cn(e){return function(e){if(Array.isArray(e))return dn(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return dn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return dn(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function dn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function pn(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function fn(e){return function(t,n){var r=n.children,i=void 0===r?[]:r,a=pn(n,un),o=e.document.createElement(t);return sn(o,a),o.append.apply(o,cn(i)),o}}var mn=["autocompleteScopeApi","environment","classNames","getInputProps","getInputPropsCore","isDetached","state"];function gn(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 hn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?gn(Object(n),!0).forEach((function(t){vn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):gn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function vn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function bn(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var yn=function(e){var t=e.autocompleteScopeApi,n=e.environment,r=(e.classNames,e.getInputProps),i=e.getInputPropsCore,a=e.isDetached,o=e.state,s=bn(e,mn),l=fn(n)("input",s),u=r(hn({state:o,props:i({inputElement:l}),inputElement:l},t));return sn(l,hn(hn({},u),{},{onKeyDown:function(e){a&&"Tab"===e.key||u.onKeyDown(e)}})),l};function wn(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 kn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?wn(Object(n),!0).forEach((function(t){Sn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):wn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Sn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var En,xn,_n,On,Pn,Cn,Tn,In={},An=[],Ln=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function Rn(e,t){for(var n in t)e[n]=t[n];return e}function Nn(e){var t=e.parentNode;t&&t.removeChild(e)}function jn(e,t,n){var r,i,a,o={};for(a in t)"key"==a?r=t[a]:"ref"==a?i=t[a]:o[a]=t[a];if(arguments.length>2&&(o.children=arguments.length>3?En.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(a in e.defaultProps)void 0===o[a]&&(o[a]=e.defaultProps[a]);return Dn(e,o,r,i,null)}function Dn(e,t,n,r,i){var a={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==i?++_n:i};return null==i&&null!=xn.vnode&&xn.vnode(a),a}function Mn(e){return e.children}function Fn(e,t){this.props=e,this.context=t}function Bn(e,t){if(null==t)return e.__?Bn(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return"function"==typeof e.type?Bn(e):null}function zn(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return zn(e)}}function Un(e){(!e.__d&&(e.__d=!0)&&On.push(e)&&!qn.__r++||Pn!==xn.debounceRendering)&&((Pn=xn.debounceRendering)||Cn)(qn)}function qn(){var e,t,n,r,i,a,o,s;for(On.sort(Tn);e=On.shift();)e.__d&&(t=On.length,r=void 0,i=void 0,o=(a=(n=e).__v).__e,(s=n.__P)&&(r=[],(i=Rn({},a)).__v=a.__v+1,Yn(s,a,i,n.__n,void 0!==s.ownerSVGElement,null!=a.__h?[o]:null,r,null==o?Bn(a):o,a.__h),Xn(r,a),a.__e!=o&&zn(a)),On.length>t&&On.sort(Tn));qn.__r=0}function $n(e,t,n,r,i,a,o,s,l,u){var c,d,p,f,m,g,h,v=r&&r.__k||An,b=v.length;for(n.__k=[],c=0;c<t.length;c++)if(null!=(f=n.__k[c]=null==(f=t[c])||"boolean"==typeof f||"function"==typeof f?null:"string"==typeof f||"number"==typeof f||"bigint"==typeof f?Dn(null,f,null,null,f):Array.isArray(f)?Dn(Mn,{children:f},null,null,null):f.__b>0?Dn(f.type,f.props,f.key,f.ref?f.ref:null,f.__v):f)){if(f.__=n,f.__b=n.__b+1,null===(p=v[c])||p&&f.key==p.key&&f.type===p.type)v[c]=void 0;else for(d=0;d<b;d++){if((p=v[d])&&f.key==p.key&&f.type===p.type){v[d]=void 0;break}p=null}Yn(e,f,p=p||In,i,a,o,s,l,u),m=f.__e,(d=f.ref)&&p.ref!=d&&(h||(h=[]),p.ref&&h.push(p.ref,null,f),h.push(d,f.__c||m,f)),null!=m?(null==g&&(g=m),"function"==typeof f.type&&f.__k===p.__k?f.__d=l=Hn(f,l,e):l=Gn(e,f,p,v,m,l),"function"==typeof n.type&&(n.__d=l)):l&&p.__e==l&&l.parentNode!=e&&(l=Bn(p))}for(n.__e=g,c=b;c--;)null!=v[c]&&("function"==typeof n.type&&null!=v[c].__e&&v[c].__e==n.__d&&(n.__d=Qn(r).nextSibling),tr(v[c],v[c]));if(h)for(c=0;c<h.length;c++)er(h[c],h[++c],h[++c])}function Hn(e,t,n){for(var r,i=e.__k,a=0;i&&a<i.length;a++)(r=i[a])&&(r.__=e,t="function"==typeof r.type?Hn(r,t,n):Gn(n,r,r,i,r.__e,t));return t}function Gn(e,t,n,r,i,a){var o,s,l;if(void 0!==t.__d)o=t.__d,t.__d=void 0;else if(null==n||i!=a||null==i.parentNode)e:if(null==a||a.parentNode!==e)e.appendChild(i),o=null;else{for(s=a,l=0;(s=s.nextSibling)&&l<r.length;l+=1)if(s==i)break e;e.insertBefore(i,a),o=a}return void 0!==o?o:i.nextSibling}function Qn(e){var t,n,r;if(null==e.type||"string"==typeof e.type)return e.__e;if(e.__k)for(t=e.__k.length-1;t>=0;t--)if((n=e.__k[t])&&(r=Qn(n)))return r;return null}function Vn(e,t,n){"-"===t[0]?e.setProperty(t,null==n?"":n):e[t]=null==n?"":"number"!=typeof n||Ln.test(t)?n:n+"px"}function Zn(e,t,n,r,i){var a;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||Vn(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||Vn(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])a=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+a]=n,n?r||e.addEventListener(t,a?Kn:Wn,a):e.removeEventListener(t,a?Kn:Wn,a);else if("dangerouslySetInnerHTML"!==t){if(i)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!==t&&"height"!==t&&"href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null==n||!1===n&&"-"!==t[4]?e.removeAttribute(t):e.setAttribute(t,n))}}function Wn(e){return this.l[e.type+!1](xn.event?xn.event(e):e)}function Kn(e){return this.l[e.type+!0](xn.event?xn.event(e):e)}function Yn(e,t,n,r,i,a,o,s,l){var u,c,d,p,f,m,g,h,v,b,y,w,k,S,E,x=t.type;if(void 0!==t.constructor)return null;null!=n.__h&&(l=n.__h,s=t.__e=n.__e,t.__h=null,a=[s]),(u=xn.__b)&&u(t);try{e:if("function"==typeof x){if(h=t.props,v=(u=x.contextType)&&r[u.__c],b=u?v?v.props.value:u.__:r,n.__c?g=(c=t.__c=n.__c).__=c.__E:("prototype"in x&&x.prototype.render?t.__c=c=new x(h,b):(t.__c=c=new Fn(h,b),c.constructor=x,c.render=nr),v&&v.sub(c),c.props=h,c.state||(c.state={}),c.context=b,c.__n=r,d=c.__d=!0,c.__h=[],c._sb=[]),null==c.__s&&(c.__s=c.state),null!=x.getDerivedStateFromProps&&(c.__s==c.state&&(c.__s=Rn({},c.__s)),Rn(c.__s,x.getDerivedStateFromProps(h,c.__s))),p=c.props,f=c.state,c.__v=t,d)null==x.getDerivedStateFromProps&&null!=c.componentWillMount&&c.componentWillMount(),null!=c.componentDidMount&&c.__h.push(c.componentDidMount);else{if(null==x.getDerivedStateFromProps&&h!==p&&null!=c.componentWillReceiveProps&&c.componentWillReceiveProps(h,b),!c.__e&&null!=c.shouldComponentUpdate&&!1===c.shouldComponentUpdate(h,c.__s,b)||t.__v===n.__v){for(t.__v!==n.__v&&(c.props=h,c.state=c.__s,c.__d=!1),c.__e=!1,t.__e=n.__e,t.__k=n.__k,t.__k.forEach((function(e){e&&(e.__=t)})),y=0;y<c._sb.length;y++)c.__h.push(c._sb[y]);c._sb=[],c.__h.length&&o.push(c);break e}null!=c.componentWillUpdate&&c.componentWillUpdate(h,c.__s,b),null!=c.componentDidUpdate&&c.__h.push((function(){c.componentDidUpdate(p,f,m)}))}if(c.context=b,c.props=h,c.__P=e,w=xn.__r,k=0,"prototype"in x&&x.prototype.render){for(c.state=c.__s,c.__d=!1,w&&w(t),u=c.render(c.props,c.state,c.context),S=0;S<c._sb.length;S++)c.__h.push(c._sb[S]);c._sb=[]}else do{c.__d=!1,w&&w(t),u=c.render(c.props,c.state,c.context),c.state=c.__s}while(c.__d&&++k<25);c.state=c.__s,null!=c.getChildContext&&(r=Rn(Rn({},r),c.getChildContext())),d||null==c.getSnapshotBeforeUpdate||(m=c.getSnapshotBeforeUpdate(p,f)),E=null!=u&&u.type===Mn&&null==u.key?u.props.children:u,$n(e,Array.isArray(E)?E:[E],t,n,r,i,a,o,s,l),c.base=t.__e,t.__h=null,c.__h.length&&o.push(c),g&&(c.__E=c.__=null),c.__e=!1}else null==a&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=Jn(n.__e,t,n,r,i,a,o,l);(u=xn.diffed)&&u(t)}catch(e){t.__v=null,(l||null!=a)&&(t.__e=s,t.__h=!!l,a[a.indexOf(s)]=null),xn.__e(e,t,n)}}function Xn(e,t){xn.__c&&xn.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){xn.__e(e,t.__v)}}))}function Jn(e,t,n,r,i,a,o,s){var l,u,c,d=n.props,p=t.props,f=t.type,m=0;if("svg"===f&&(i=!0),null!=a)for(;m<a.length;m++)if((l=a[m])&&"setAttribute"in l==!!f&&(f?l.localName===f:3===l.nodeType)){e=l,a[m]=null;break}if(null==e){if(null===f)return document.createTextNode(p);e=i?document.createElementNS("http://www.w3.org/2000/svg",f):document.createElement(f,p.is&&p),a=null,s=!1}if(null===f)d===p||s&&e.data===p||(e.data=p);else{if(a=a&&En.call(e.childNodes),u=(d=n.props||In).dangerouslySetInnerHTML,c=p.dangerouslySetInnerHTML,!s){if(null!=a)for(d={},m=0;m<e.attributes.length;m++)d[e.attributes[m].name]=e.attributes[m].value;(c||u)&&(c&&(u&&c.__html==u.__html||c.__html===e.innerHTML)||(e.innerHTML=c&&c.__html||""))}if(function(e,t,n,r,i){var a;for(a in n)"children"===a||"key"===a||a in t||Zn(e,a,null,n[a],r);for(a in t)i&&"function"!=typeof t[a]||"children"===a||"key"===a||"value"===a||"checked"===a||n[a]===t[a]||Zn(e,a,t[a],n[a],r)}(e,p,d,i,s),c)t.__k=[];else if(m=t.props.children,$n(e,Array.isArray(m)?m:[m],t,n,r,i&&"foreignObject"!==f,a,o,a?a[0]:n.__k&&Bn(n,0),s),null!=a)for(m=a.length;m--;)null!=a[m]&&Nn(a[m]);s||("value"in p&&void 0!==(m=p.value)&&(m!==e.value||"progress"===f&&!m||"option"===f&&m!==d.value)&&Zn(e,"value",m,d.value,!1),"checked"in p&&void 0!==(m=p.checked)&&m!==e.checked&&Zn(e,"checked",m,d.checked,!1))}return e}function er(e,t,n){try{"function"==typeof e?e(t):e.current=t}catch(e){xn.__e(e,n)}}function tr(e,t,n){var r,i;if(xn.unmount&&xn.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.__e||er(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){xn.__e(e,t)}r.base=r.__P=null,e.__c=void 0}if(r=e.__k)for(i=0;i<r.length;i++)r[i]&&tr(r[i],t,n||"function"!=typeof e.type);n||null==e.__e||Nn(e.__e),e.__=e.__e=e.__d=void 0}function nr(e,t,n){return this.constructor(e,n)}function rr(e,t,n){var r,i,a;xn.__&&xn.__(e,t),i=(r="function"==typeof n)?null:n&&n.__k||t.__k,a=[],Yn(t,e=(!r&&n||t).__k=jn(Mn,null,[e]),i||In,In,void 0!==t.ownerSVGElement,!r&&n?[n]:i?null:t.firstChild?En.call(t.childNodes):null,a,!r&&n?n:i?i.__e:t.firstChild,r),Xn(a,e)}function ir(e,t){return t.reduce((function(e,t){return e&&e[t]}),e)}En=An.slice,xn={__e:function(e,t,n,r){for(var i,a,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((a=i.constructor)&&null!=a.getDerivedStateFromError&&(i.setState(a.getDerivedStateFromError(e)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(e,r||{}),o=i.__d),o)return i.__E=i}catch(t){e=t}throw e}},_n=0,Fn.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=Rn({},this.state),"function"==typeof e&&(e=e(Rn({},n),this.props)),e&&Rn(n,e),null!=e&&this.__v&&(t&&this._sb.push(t),Un(this))},Fn.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Un(this))},Fn.prototype.render=Mn,On=[],Cn="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Tn=function(e,t){return e.__v.__b-t.__v.__b},qn.__r=0;var ar="__aa-highlight__",or="__/aa-highlight__";function sr(e){var t=e.highlightedValue.split(ar),n=t.shift(),r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return{get:function(){return e},add:function(t){var n=e[e.length-1];(null==n?void 0:n.isHighlighted)===t.isHighlighted?e[e.length-1]={value:n.value+t.value,isHighlighted:n.isHighlighted}:e.push(t)}}}(n?[{value:n,isHighlighted:!1}]:[]);return t.forEach((function(e){var t=e.split(or);r.add({value:t[0],isHighlighted:!0}),""!==t[1]&&r.add({value:t[1],isHighlighted:!1})})),r.get()}function lr(e){return function(e){if(Array.isArray(e))return ur(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return ur(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ur(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ur(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function cr(e){var t=e.hit,n=e.attribute,r=Array.isArray(n)?n:[n],i=ir(t,["_highlightResult"].concat(lr(r),["value"]));return"string"!=typeof i&&(i=ir(t,r)||""),sr({highlightedValue:i})}function dr(e){var t=e.createElement,n=e.Fragment;function r(e){var r=e.hit,i=e.attribute,a=e.tagName,o=void 0===a?"mark":a;return t(n,{},cr({hit:r,attribute:i}).map((function(e,n){return e.isHighlighted?t(o,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="Highlight",r}var pr={"&":"&","<":"<",">":">",""":'"',"'":"'"},fr=new RegExp(/\w/i),mr=/&(amp|quot|lt|gt|#39);/g,gr=RegExp(mr.source);function hr(e,t){var n,r,i,a=e[t],o=(null===(n=e[t+1])||void 0===n?void 0:n.isHighlighted)||!0,s=(null===(r=e[t-1])||void 0===r?void 0:r.isHighlighted)||!0;return fr.test((i=a.value)&&gr.test(i)?i.replace(mr,(function(e){return pr[e]})):i)||s!==o?a.isHighlighted:s}function vr(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 br(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?vr(Object(n),!0).forEach((function(t){yr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):vr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function yr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function wr(e){return e.some((function(e){return e.isHighlighted}))?e.map((function(t,n){return br(br({},t),{},{isHighlighted:!hr(e,n)})})):e.map((function(e){return br(br({},e),{},{isHighlighted:!1})}))}function kr(e){var t=e.createElement,n=e.Fragment;function r(e){var r,i=e.hit,a=e.attribute,o=e.tagName,s=void 0===o?"mark":o;return t(n,{},(r={hit:i,attribute:a},wr(cr(r))).map((function(e,n){return e.isHighlighted?t(s,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="ReverseHighlight",r}function Sr(e){return function(e){if(Array.isArray(e))return Er(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Er(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Er(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Er(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function xr(e){var t=e.hit,n=e.attribute,r=Array.isArray(n)?n:[n],i=ir(t,["_snippetResult"].concat(Sr(r),["value"]));return"string"!=typeof i&&(i=ir(t,r)||""),sr({highlightedValue:i})}function _r(e){var t=e.createElement,n=e.Fragment;function r(e){var r,i=e.hit,a=e.attribute,o=e.tagName,s=void 0===o?"mark":o;return t(n,{},(r={hit:i,attribute:a},wr(xr(r))).map((function(e,n){return e.isHighlighted?t(s,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="ReverseSnippet",r}function Or(e){var t=e.createElement,n=e.Fragment;function r(e){var r=e.hit,i=e.attribute,a=e.tagName,o=void 0===a?"mark":a;return t(n,{},xr({hit:r,attribute:i}).map((function(e,n){return e.isHighlighted?t(o,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="Snippet",r}function Pr(e,t){if("string"==typeof t){var n=e.document.querySelector(t);return"The element ".concat(JSON.stringify(t)," is not in the document."),n}return t}function Cr(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.reduce((function(e,t){return Object.keys(t).forEach((function(n){var r=e[n],i=t[n];r!==i&&(e[n]=[r,i].filter(Boolean).join(" "))})),e}),{})}var Tr=["classNames","container","getEnvironmentProps","getFormProps","getInputProps","getItemProps","getLabelProps","getListProps","getPanelProps","getRootProps","panelContainer","panelPlacement","render","renderNoResults","renderer","detachedMediaQuery","components","translations"];function Ir(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 Ar(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ir(Object(n),!0).forEach((function(t){Lr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ir(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Lr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Rr(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var Nr={clearButton:"aa-ClearButton",detachedCancelButton:"aa-DetachedCancelButton",detachedContainer:"aa-DetachedContainer",detachedFormContainer:"aa-DetachedFormContainer",detachedOverlay:"aa-DetachedOverlay",detachedSearchButton:"aa-DetachedSearchButton",detachedSearchButtonIcon:"aa-DetachedSearchButtonIcon",detachedSearchButtonPlaceholder:"aa-DetachedSearchButtonPlaceholder",detachedSearchButtonQuery:"aa-DetachedSearchButtonQuery",form:"aa-Form",input:"aa-Input",inputWrapper:"aa-InputWrapper",inputWrapperPrefix:"aa-InputWrapperPrefix",inputWrapperSuffix:"aa-InputWrapperSuffix",item:"aa-Item",label:"aa-Label",list:"aa-List",loadingIndicator:"aa-LoadingIndicator",panel:"aa-Panel",panelLayout:"aa-PanelLayout aa-Panel--scrollable",root:"aa-Autocomplete",source:"aa-Source",sourceFooter:"aa-SourceFooter",sourceHeader:"aa-SourceHeader",sourceNoResults:"aa-SourceNoResults",submitButton:"aa-SubmitButton"},jr=function(e,t){var n=e.children;(0,e.render)(n,t)},Dr={createElement:jn,Fragment:Mn,render:rr};function Mr(e){var t=e.panelPlacement,n=e.container,r=e.form,i=e.environment,a=n.getBoundingClientRect(),o=(i.pageYOffset||i.document.documentElement.scrollTop||i.document.body.scrollTop||0)+a.top+a.height;switch(t){case"start":return{top:o,left:a.left};case"end":return{top:o,right:i.document.documentElement.clientWidth-(a.left+a.width)};case"full-width":return{top:o,left:0,right:0,width:"unset",maxWidth:"unset"};case"input-wrapper-width":var s=r.getBoundingClientRect();return{top:o,left:s.left,right:i.document.documentElement.clientWidth-(s.left+s.width),width:"unset",maxWidth:"unset"};default:throw new Error("[Autocomplete] The `panelPlacement` value ".concat(JSON.stringify(t)," is not valid."))}}function Fr(){return Fr=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Fr.apply(this,arguments)}function Br(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 zr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Br(Object(n),!0).forEach((function(t){Ur(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Br(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ur(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var qr=[{segment:"autocomplete-js",version:At}];function $r(e){return function(e){if(Array.isArray(e))return Hr(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Hr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Hr(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Hr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Gr(e){return Gr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Gr(e)}var Qr=function(e){return e&&"object"===Gr(e)&&"[object Object]"===Object.prototype.toString.call(e)};function Vr(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.reduce((function(e,t){return Object.keys(t).forEach((function(n){var r=e[n],i=t[n];Array.isArray(r)&&Array.isArray(i)?e[n]=r.concat.apply(r,$r(i)):Qr(r)&&Qr(i)?e[n]=Vr(r,i):e[n]=i})),e}),{})}function Zr(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 Wr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Zr(Object(n),!0).forEach((function(t){Kr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Zr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Kr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Yr(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,a=[],o=!0,s=!1;try{for(n=n.call(e);!(o=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);o=!0);}catch(l){s=!0,i=l}finally{try{o||null==n.return||n.return()}finally{if(s)throw i}}return a}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Xr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Xr(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Xr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Jr=["components"];function ei(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function ti(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 ni(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ti(Object(n),!0).forEach((function(t){ri(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ti(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ri(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ii(e){var t,n=function(){var e=[],t=[];function n(n){e.push(n);var r=n();t.push(r)}return{runEffect:n,cleanupEffects:function(){var e=t;t=[],e.forEach((function(e){e()}))},runEffects:function(){var t=e;e=[],t.forEach((function(e){n(e)}))}}}(),r=n.runEffect,i=n.cleanupEffects,a=n.runEffects,o=(t=[],{reactive:function(e){var n=e(),r={_fn:e,_ref:{current:n},get value(){return this._ref.current},set value(e){this._ref.current=e}};return t.push(r),r},runReactives:function(){t.forEach((function(e){e._ref.current=e._fn()}))}}),s=o.reactive,l=o.runReactives,u=Vt(!1),c=Vt(e),d=Vt(void 0),p=s((function(){return function(e){var t,n=e.classNames,r=e.container,i=e.getEnvironmentProps,a=e.getFormProps,o=e.getInputProps,s=e.getItemProps,l=e.getLabelProps,u=e.getListProps,c=e.getPanelProps,d=e.getRootProps,p=e.panelContainer,f=e.panelPlacement,m=e.render,g=e.renderNoResults,h=e.renderer,v=e.detachedMediaQuery,b=e.components,y=e.translations,w=Rr(e,Tr),k="undefined"!=typeof window?window:{},S=Pr(k,r);S.tagName;var E=Ar(Ar({},Dr),h),x={Highlight:dr(E),ReverseHighlight:kr(E),ReverseSnippet:_r(E),Snippet:Or(E)};return{renderer:{classNames:Cr(Nr,null!=n?n:{}),container:S,getEnvironmentProps:null!=i?i:function(e){return e.props},getFormProps:null!=a?a:function(e){return e.props},getInputProps:null!=o?o:function(e){return e.props},getItemProps:null!=s?s:function(e){return e.props},getLabelProps:null!=l?l:function(e){return e.props},getListProps:null!=u?u:function(e){return e.props},getPanelProps:null!=c?c:function(e){return e.props},getRootProps:null!=d?d:function(e){return e.props},panelContainer:p?Pr(k,p):k.document.body,panelPlacement:null!=f?f:"input-wrapper-width",render:null!=m?m:jr,renderNoResults:g,renderer:E,detachedMediaQuery:null!=v?v:getComputedStyle(k.document.documentElement).getPropertyValue("--aa-detached-media-query"),components:Ar(Ar({},x),b),translations:Ar(Ar({},{clearButtonTitle:"Clear",detachedCancelButtonText:"Cancel",submitButtonTitle:"Submit"}),y)},core:Ar(Ar({},w),{},{id:null!==(t=w.id)&&void 0!==t?t:_e(),environment:k})}}(c.current)})),f=s((function(){return p.value.core.environment.matchMedia(p.value.renderer.detachedMediaQuery).matches})),m=s((function(){return Qt(ni(ni({},p.value.core),{},{onStateChange:function(e){var t,n,r;u.current=e.state.collections.some((function(e){return e.source.templates.noResults})),null===(t=d.current)||void 0===t||t.call(d,e),null===(n=(r=p.value.core).onStateChange)||void 0===n||n.call(r,e)},shouldPanelOpen:c.current.shouldPanelOpen||function(e){var t=e.state;if(f.value)return!0;var n=Ee(t)>0;if(!p.value.core.openOnFocus&&!t.query)return n;var r=Boolean(u.current||p.value.renderer.renderNoResults);return!n&&r||n},__autocomplete_metadata:{userAgents:qr,options:e}}))})),g=Vt(ni({collections:[],completion:null,context:{},isOpen:!1,query:"",activeItemId:null,status:"idle"},p.value.core.initialState)),h={getEnvironmentProps:p.value.renderer.getEnvironmentProps,getFormProps:p.value.renderer.getFormProps,getInputProps:p.value.renderer.getInputProps,getItemProps:p.value.renderer.getItemProps,getLabelProps:p.value.renderer.getLabelProps,getListProps:p.value.renderer.getListProps,getPanelProps:p.value.renderer.getPanelProps,getRootProps:p.value.renderer.getRootProps},v={setActiveItemId:m.value.setActiveItemId,setQuery:m.value.setQuery,setCollections:m.value.setCollections,setIsOpen:m.value.setIsOpen,setStatus:m.value.setStatus,setContext:m.value.setContext,refresh:m.value.refresh,navigator:m.value.navigator},b=s((function(){return Yt.bind(p.value.renderer.renderer.createElement)})),y=s((function(){return function(e){var t=e.autocomplete,n=e.autocompleteScopeApi,r=e.classNames,i=e.environment,a=e.isDetached,o=e.placeholder,s=void 0===o?"Search":o,l=e.propGetters,u=e.setIsModalOpen,c=e.state,d=e.translations,p=fn(i),f=l.getRootProps(kn({state:c,props:t.getRootProps({})},n)),m=p("div",kn({class:r.root},f)),g=p("div",{class:r.detachedContainer,onMouseDown:function(e){e.stopPropagation()}}),h=p("div",{class:r.detachedOverlay,children:[g],onMouseDown:function(){u(!1),t.setIsOpen(!1)}}),v=l.getLabelProps(kn({state:c,props:t.getLabelProps({})},n)),b=p("button",{class:r.submitButton,type:"submit",title:d.submitButtonTitle,children:[Xt({environment:i})]}),y=p("label",kn({class:r.label,children:[b]},v)),w=p("button",{class:r.clearButton,type:"reset",title:d.clearButtonTitle,children:[Jt({environment:i})]}),k=p("div",{class:r.loadingIndicator,children:[en({environment:i})]}),S=yn({class:r.input,environment:i,state:c,getInputProps:l.getInputProps,getInputPropsCore:t.getInputProps,autocompleteScopeApi:n,isDetached:a}),E=p("div",{class:r.inputWrapperPrefix,children:[y,k]}),x=p("div",{class:r.inputWrapperSuffix,children:[w]}),_=p("div",{class:r.inputWrapper,children:[S]}),O=l.getFormProps(kn({state:c,props:t.getFormProps({inputElement:S})},n)),P=p("form",kn({class:r.form,children:[E,_,x]},O)),C=l.getPanelProps(kn({state:c,props:t.getPanelProps({})},n)),T=p("div",kn({class:r.panel},C)),I=p("div",{class:r.detachedSearchButtonQuery,textContent:c.query}),A=p("div",{class:r.detachedSearchButtonPlaceholder,hidden:Boolean(c.query),textContent:s});if(a){var L=p("div",{class:r.detachedSearchButtonIcon,children:[Xt({environment:i})]}),R=p("button",{type:"button",class:r.detachedSearchButton,onClick:function(){u(!0)},children:[L,A,I]}),N=p("button",{type:"button",class:r.detachedCancelButton,textContent:d.detachedCancelButtonText,onTouchStart:function(e){e.stopPropagation()},onClick:function(){t.setIsOpen(!1),u(!1)}}),j=p("div",{class:r.detachedFormContainer,children:[P,N]});g.appendChild(j),m.appendChild(R)}else m.appendChild(P);return{detachedContainer:g,detachedOverlay:h,detachedSearchButtonQuery:I,detachedSearchButtonPlaceholder:A,inputWrapper:_,input:S,root:m,form:P,label:y,submitButton:b,clearButton:w,loadingIndicator:k,panel:T}}({autocomplete:m.value,autocompleteScopeApi:v,classNames:p.value.renderer.classNames,environment:p.value.core.environment,isDetached:f.value,placeholder:p.value.core.placeholder,propGetters:h,setIsModalOpen:E,state:g.current,translations:p.value.renderer.translations})}));function w(){sn(y.value.panel,{style:f.value?{}:Mr({panelPlacement:p.value.renderer.panelPlacement,container:y.value.root,form:y.value.form,environment:p.value.core.environment})})}function k(e){g.current=e;var t={autocomplete:m.value,autocompleteScopeApi:v,classNames:p.value.renderer.classNames,components:p.value.renderer.components,container:p.value.renderer.container,html:b.value,dom:y.value,panelContainer:f.value?y.value.detachedContainer:p.value.renderer.panelContainer,propGetters:h,state:g.current,renderer:p.value.renderer.renderer},n=!Ee(e)&&!u.current&&p.value.renderer.renderNoResults||p.value.renderer.render;!function(e){var t=e.autocomplete,n=e.autocompleteScopeApi,r=e.dom,i=e.propGetters,a=e.state;ln(r.root,i.getRootProps(zr({state:a,props:t.getRootProps({})},n))),ln(r.input,i.getInputProps(zr({state:a,props:t.getInputProps({inputElement:r.input}),inputElement:r.input},n))),sn(r.label,{hidden:"stalled"===a.status}),sn(r.loadingIndicator,{hidden:"stalled"!==a.status}),sn(r.clearButton,{hidden:!a.query}),sn(r.detachedSearchButtonQuery,{textContent:a.query}),sn(r.detachedSearchButtonPlaceholder,{hidden:Boolean(a.query)})}(t),function(e,t){var n=t.autocomplete,r=t.autocompleteScopeApi,i=t.classNames,a=t.html,o=t.dom,s=t.panelContainer,l=t.propGetters,u=t.state,c=t.components,d=t.renderer;if(u.isOpen){s.contains(o.panel)||"loading"===u.status||s.appendChild(o.panel),o.panel.classList.toggle("aa-Panel--stalled","stalled"===u.status);var p=u.collections.filter((function(e){var t=e.source,n=e.items;return t.templates.noResults||n.length>0})).map((function(e,t){var o=e.source,s=e.items;return d.createElement("section",{key:t,className:i.source,"data-autocomplete-source-id":o.sourceId},o.templates.header&&d.createElement("div",{className:i.sourceHeader},o.templates.header({components:c,createElement:d.createElement,Fragment:d.Fragment,items:s,source:o,state:u,html:a})),o.templates.noResults&&0===s.length?d.createElement("div",{className:i.sourceNoResults},o.templates.noResults({components:c,createElement:d.createElement,Fragment:d.Fragment,source:o,state:u,html:a})):d.createElement("ul",Fr({className:i.list},l.getListProps(zr({state:u,props:n.getListProps({sourceIndex:t})},r))),s.map((function(e){var s=n.getItemProps({item:e,source:o,sourceIndex:t});return d.createElement("li",Fr({key:s.id,className:i.item},l.getItemProps(zr({state:u,props:s},r))),o.templates.item({components:c,createElement:d.createElement,Fragment:d.Fragment,item:e,state:u,html:a}))}))),o.templates.footer&&d.createElement("div",{className:i.sourceFooter},o.templates.footer({components:c,createElement:d.createElement,Fragment:d.Fragment,items:s,source:o,state:u,html:a})))})),f=d.createElement(d.Fragment,null,d.createElement("div",{className:i.panelLayout},p),d.createElement("div",{className:"aa-GradientBottom"})),m=p.reduce((function(e,t){return e[t.props["data-autocomplete-source-id"]]=t,e}),{});e(zr(zr({children:f,state:u,sections:p,elements:m},d),{},{components:c,html:a},r),o.panel)}else s.contains(o.panel)&&s.removeChild(o.panel)}(n,t)}function S(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i();var t,n,r=p.value.renderer,o=r.components,s=ei(r,Jr);c.current=Vr(s,p.value.core,{components:(t=o,n=function(e){return!e.value.hasOwnProperty("__autocomplete_componentName")},Object.entries(t).reduce((function(e,t){var r=Yr(t,2),i=r[0],a=r[1];return n({key:i,value:a})?Wr(Wr({},e),{},Kr({},i,a)):e}),{})),initialState:g.current},e),l(),a(),m.value.refresh().then((function(){k(g.current)}))}function E(e){requestAnimationFrame((function(){var t=p.value.core.environment.document.body.contains(y.value.detachedOverlay);e!==t&&(e?(p.value.core.environment.document.body.appendChild(y.value.detachedOverlay),p.value.core.environment.document.body.classList.add("aa-Detached"),y.value.input.focus()):(p.value.core.environment.document.body.removeChild(y.value.detachedOverlay),p.value.core.environment.document.body.classList.remove("aa-Detached")))}))}return r((function(){var e=m.value.getEnvironmentProps({formElement:y.value.form,panelElement:y.value.panel,inputElement:y.value.input});return sn(p.value.core.environment,e),function(){sn(p.value.core.environment,Object.keys(e).reduce((function(e,t){return ni(ni({},e),{},ri({},t,void 0))}),{}))}})),r((function(){var e=f.value?p.value.core.environment.document.body:p.value.renderer.panelContainer,t=f.value?y.value.detachedOverlay:y.value.panel;return f.value&&g.current.isOpen&&E(!0),k(g.current),function(){e.contains(t)&&e.removeChild(t)}})),r((function(){var e=p.value.renderer.container;return e.appendChild(y.value.root),function(){e.removeChild(y.value.root)}})),r((function(){var e=Zt((function(e){k(e.state)}),0);return d.current=function(t){var n=t.state,r=t.prevState;(f.value&&r.isOpen!==n.isOpen&&E(n.isOpen),f.value||!n.isOpen||r.isOpen||w(),n.query!==r.query)&&p.value.core.environment.document.querySelectorAll(".aa-Panel--scrollable").forEach((function(e){0!==e.scrollTop&&(e.scrollTop=0)}));e({state:n})},function(){d.current=void 0}})),r((function(){var e=Zt((function(){var e=f.value;f.value=p.value.core.environment.matchMedia(p.value.renderer.detachedMediaQuery).matches,e!==f.value?S({}):requestAnimationFrame(w)}),20);return p.value.core.environment.addEventListener("resize",e),function(){p.value.core.environment.removeEventListener("resize",e)}})),r((function(){if(!f.value)return function(){};function e(e){y.value.detachedContainer.classList.toggle("aa-DetachedContainer--modal",e)}function t(t){e(t.matches)}var n=p.value.core.environment.matchMedia(getComputedStyle(p.value.core.environment.document.documentElement).getPropertyValue("--aa-detached-modal-media-query"));e(n.matches);var r=Boolean(n.addEventListener);return r?n.addEventListener("change",t):n.addListener(t),function(){r?n.removeEventListener("change",t):n.removeListener(t)}})),r((function(){return requestAnimationFrame(w),function(){}})),ni(ni({},v),{},{update:S,destroy:function(){i()}})}var ai=n(5742);n(9414);const oi=n(8965);oi.tokenizer.separator=/[\s\-]+/;const si=oi,li=(n(8965),e=>oi.tokenizer(e).map((e=>e.str))),ui=si;var ci=n(813),di=n.n(ci);function pi(){const e=(0,l.TH)(),t=(0,l.k6)(),{siteConfig:{baseUrl:n}}=(0,se.Z)(),[i,a]=(0,r.useState)({terms:[],isDocsOrBlog:!1});return(0,r.useEffect)((()=>{if(!e.state?.cmfcmfhighlight||0===e.state.cmfcmfhighlight.terms.length)return;a(e.state.cmfcmfhighlight);const{cmfcmfhighlight:n,...r}=e.state;t.replace({...e,state:r})}),[e.state?.cmfcmfhighlight,t,e]),(0,r.useEffect)((()=>{if(0===i.terms.length)return;const e=i.isDocsOrBlog?document.getElementsByTagName("article")[0]:document.getElementsByTagName("main")[0];if(!e)return;const t=new(di())(e),n={ignoreJoiners:!0};return t.mark(i.terms,n),()=>t.unmark(n)}),[i,n]),null}var fi=n(8084),mi=n(3320);const gi=!0;function hi(e){let{document:t}=e;const[n,r]=t.sectionRoute.split("#");let i=n;return r&&(i+="#"+r),i}const vi={documents:[],index:ui((function(){this.ref("id"),this.field("title"),this.field("content")}))};const bi=()=>{const e=(0,B.Z)(),[t,n]=(0,r.useState)((()=>!!e&&"dark"===document.documentElement.getAttribute("data-theme")));(0,r.useEffect)((()=>{const e=new MutationObserver((()=>{n("dark"===document.documentElement.getAttribute("data-theme"))}));return e.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),()=>e.disconnect()}),[]);const{siteConfig:{baseUrl:i}}=(0,se.Z)(),{titleBoost:a,contentBoost:o,parentCategoriesBoost:s,indexDocSidebarParentCategories:c}=(0,fi.eZ)("@cmfcmf/docusaurus-search-local"),d=(0,l.k6)(),{tags:p}=(0,mi._q)(),f=(0,r.useRef)(p);(0,r.useEffect)((()=>{f.current=p}),[p]);const m=(0,r.useRef)({}),g=async e=>{const t=m.current[e];switch(t?.state){case"ready":return t;case void 0:{const t=[];m.current[e]={state:"loading",callbacks:t};const n=await async function(e,t){if(gi){let r;try{const n=await fetch(`${e}search-index-${t}.json`);if(!n.ok)return vi;r=await n.json()}catch(n){return vi}return{documents:r.documents,index:ui.Index.load(r.index)}}return Promise.resolve(vi)}(i,e);return t.forEach((e=>e(n))),m.current[e]={state:"ready",...n}}case"loading":return new Promise((e=>{t.callbacks.push(e)}))}},h=(0,u.I)({message:"cmfcmf/d-s-l.searchBar.placeholder",description:"Placeholder shown in the searchbar"}),v=(0,r.useRef)(null),b=(0,r.useRef)(null);return(0,r.useEffect)((()=>{if(v.current)return b.current=ii({container:v.current,placeholder:h,renderer:{createElement:r.createElement,Fragment:r.Fragment},render(e,t){let{children:n}=e;(0,ge.render)(n,t)},navigator:{navigate(e){let{item:t,itemUrl:n}=e;d.push(n,{cmfcmfhighlight:{terms:t.terms,isDocsOrBlog:"docs"===t.document.type||"blog"===t.document.type}})}},detachedMediaQuery:"",defaultActiveItemId:0,translations:{clearButtonTitle:(0,u.I)({message:"cmfcmf/d-s-l.searchBar.clearButtonTitle",description:"Title of the button to clear the current search input"}),detachedCancelButtonText:(0,u.I)({message:"cmfcmf/d-s-l.searchBar.detachedCancelButtonText",description:"Text of the button to close the detached search window"}),submitButtonTitle:(0,u.I)({message:"cmfcmf/d-s-l.searchBar.submitButtonTitle",description:"Title of the button to submit a new search"})},getSources(e){let{query:t}=e;return[{sourceId:"search-results",templates:{item(e){let{item:t}=e;const n=hi(t);return r.createElement("a",{href:n,className:"aa-ItemLink",onClick:e=>{e.preventDefault(),d.push(n,{cmfcmfhighlight:{terms:t.terms,isDocsOrBlog:"docs"===t.document.type||"blog"===t.document.type}})}},r.createElement("div",{className:"aa-ItemContent"},r.createElement("div",{className:"aa-ItemContentBody"},r.createElement("div",{className:"aa-ItemContentTitle"},t.document.sectionTitle),t.document.pageTitle!==t.document.sectionTitle&&r.createElement("div",{className:"aa-ItemContentDescription"},t.document.pageTitle))),r.createElement("div",{className:"aa-ItemActions"},r.createElement("button",{className:"aa-ItemActionButton aa-DesktopOnly aa-ActiveOnly",type:"button",title:"Select"},r.createElement("svg",{viewBox:"0 0 24 24",width:"20",height:"20",fill:"currentColor"},r.createElement("path",{d:"M18.984 6.984h2.016v6h-15.188l3.609 3.609-1.406 1.406-6-6 6-6 1.406 1.406-3.609 3.609h13.172v-4.031z"})))))},noResults:()=>r.createElement("div",{className:"aa-ItemContent"},r.createElement("div",{className:"aa-ItemContentBody"},gi?(0,u.I)({message:"cmfcmf/d-s-l.searchBar.noResults",description:"message shown if no results are found"}):"The search index is only available when you run docusaurus build!"))},getItemUrl(e){let{item:t}=e;return hi(t)},async getItems(){const e=f.current,n=await Promise.all(e.map((e=>g(e)))),r=li(t);return n.flatMap((e=>{let{index:t,documents:n}=e;return t.query((e=>{e.term(r,{fields:["title"],boost:a}),e.term(r,{fields:["title"],boost:a,wildcard:ui.Query.wildcard.TRAILING}),e.term(r,{fields:["content"],boost:o}),e.term(r,{fields:["content"],boost:o,wildcard:ui.Query.wildcard.TRAILING}),c&&(e.term(r,{fields:["sidebarParentCategories"],boost:s}),e.term(r,{fields:["sidebarParentCategories"],boost:s,wildcard:ui.Query.wildcard.TRAILING}))})).slice(0,8).map((e=>({document:n.find((t=>t.id.toString()===e.ref)),score:e.score,terms:r})))})).sort(((e,t)=>t.score-e.score)).slice(0,8)}}]}}),()=>b.current?.destroy()}),[]),r.createElement(r.Fragment,null,r.createElement(ai.Z,null,r.createElement("body",{"data-theme":t?"dark":"light"})),r.createElement(pi,null),r.createElement("div",{className:"dsla-search-wrapper"},r.createElement("div",{className:"dsla-search-field",ref:v,"data-tags":p.join(",")})))},yi={searchBox:"searchBox_ZlJk"};function wi(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,i.Z)(n,yi.searchBox)},t)}var ki=n(4104),Si=n(3438);var Ei=n(373);const xi=e=>e.docs.find((t=>t.id===e.mainDocId));const _i={default:ie,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:i,...a}=e;const{i18n:{currentLocale:o,locales:c,localeConfigs:d}}=(0,se.Z)(),p=(0,pe.l)(),{search:f,hash:m}=(0,l.TH)(),g=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===o?t?"menu__link--active":"dropdown__link--active":""}})),...i],h=t?(0,u.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[o].label;return r.createElement(de,(0,s.Z)({},a,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(fe,{className:me}),h),items:g}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(wi,{className:n},r.createElement(bi,null))},dropdown:de,html:function(e){let{value:t,className:n,mobile:a=!1,isDropdownItem:o=!1}=e;const s=o?"li":"div";return r.createElement(s,{className:(0,i.Z)({navbar__item:!a&&!o,"menu__list-item":a},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:i,...a}=e;const{activeDoc:o}=(0,ki.Iw)(i),l=(0,Si.vY)(t,i);return null===l?null:r.createElement(ie,(0,s.Z)({exact:!0},a,{isActive:()=>o?.path===l.path||!!o?.sidebar&&o.sidebar===l.sidebar,label:n??l.id,to:l.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:i,...a}=e;const{activeDoc:o}=(0,ki.Iw)(i),l=(0,Si.oz)(t,i).link;if(!l)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(ie,(0,s.Z)({exact:!0},a,{isActive:()=>o?.sidebar===t,label:n??l.label,to:l.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:i,...a}=e;const o=(0,Si.lO)(i)[0],l=t??o.label,u=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return r.createElement(ie,(0,s.Z)({},a,{label:l,to:u}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:i,dropdownItemsBefore:a,dropdownItemsAfter:o,...c}=e;const{search:d,hash:p}=(0,l.TH)(),f=(0,ki.Iw)(n),m=(0,ki.gB)(n),{savePreferredVersionName:g}=(0,Ei.J)(n),h=m.map((e=>{const t=f.alternateDocVersions[e.name]??xi(e);return{label:e.label,to:`${t.path}${d}${p}`,isActive:()=>e===f.activeVersion,onClick:()=>g(e.name)}})),v=[...a,...h,...o],b=(0,Si.lO)(n)[0],y=t&&v.length>1?(0,u.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):b.label,w=t&&v.length>1?void 0:xi(b).path;return v.length<=1?r.createElement(ie,(0,s.Z)({},c,{mobile:t,label:y,to:w,isActive:i?()=>!1:void 0})):r.createElement(de,(0,s.Z)({},c,{mobile:t,label:y,to:w,items:v,isActive:i?()=>!1:void 0}))}},Oi=_i;function Pi(e){let{type:t,...n}=e;const i=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Oi[i];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(a,n)}function Ci(){const e=(0,T.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(Pi,(0,s.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Ti(e){return r.createElement("button",(0,s.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 Ii(){const e=0===(0,w.L)().navbar.items.length,t=D();return r.createElement(r.Fragment,null,!e&&r.createElement(Ti,{onClick:()=>t.hide()}),t.content)}function Ai(){const e=(0,T.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(M,{header:r.createElement(W,null),primaryMenu:r.createElement(Ci,null),secondaryMenu:r.createElement(Ii,null)}):null}const Li={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Ri(e){return r.createElement("div",(0,s.Z)({role:"presentation"},e,{className:(0,i.Z)("navbar-sidebar__backdrop",e.className)}))}function Ni(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,w.L)(),o=(0,T.e)(),{navbarRef:s,isNavbarVisible:l}=function(e){const[t,n]=(0,r.useState)(e),i=(0,r.useRef)(!1),a=(0,r.useRef)(0),o=(0,r.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,I.RF)(((t,r)=>{let{scrollY:o}=t;if(!e)return;if(o<a.current)return void n(!0);if(i.current)return void(i.current=!1);const s=r?.scrollY,l=document.documentElement.scrollHeight-a.current,u=window.innerHeight;s&&o>=s?n(!1):o+u<l&&n(!0)})),(0,c.S)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return i.current=!0,void n(!1);n(!0)})),{navbarRef:o,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:s,"aria-label":(0,u.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,i.Z)("navbar","navbar--fixed-top",n&&[Li.navbarHideable,!l&&Li.navbarHidden],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":o.shown})},t,r.createElement(Ri,{onClick:o.toggle}),r.createElement(Ai,null))}const ji="right";function Di(e){let{width:t=30,height:n=30,className:i,...a}=e;return r.createElement("svg",(0,s.Z)({className:i,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},a),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function Mi(){const{toggle:e,shown:t}=(0,T.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(Di,null))}const Fi={colorModeToggle:"colorModeToggle_DEke"};function Bi(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(Pi,(0,s.Z)({},e,{key:t})))))}function zi(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 Ui(){const e=(0,T.e)(),t=(0,w.L)().navbar.items,[n,i]=function(e){function t(e){return"left"===(e.position??ji)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return r.createElement(zi,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(Mi,null),r.createElement(V,null),r.createElement(Bi,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(Bi,{items:i}),r.createElement(G,{className:Fi.colorModeToggle}),!a&&r.createElement(wi,null,r.createElement(bi,null)))})}function qi(){return r.createElement(Ni,null,r.createElement(Ui,null))}function $i(e){let{item:t}=e;const{to:n,href:i,label:a,prependBaseUrlToHref:o,...l}=t,u=(0,Y.Z)(n),c=(0,Y.Z)(i,{forcePrependBaseUrl:!0});return r.createElement(K.Z,(0,s.Z)({className:"footer__link-item"},i?{href:o?c:i}:{to:u},l),a,i&&!(0,X.Z)(i)&&r.createElement(ee.Z,null))}function Hi(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($i,{item:t}))}function Gi(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(Hi,{key:t,item:e})))))}function Qi(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(Gi,{key:t,column:e}))))}function Vi(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function Zi(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement($i,{item:t})}function Wi(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(Zi,{item:e}),t.length!==n+1&&r.createElement(Vi,null))))))}function Ki(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(Qi,{columns:t}):r.createElement(Wi,{links:t})}var Yi=n(941);const Xi={footerLogoLink:"footerLogoLink_BH7S"};function Ji(e){let{logo:t}=e;const{withBaseUrl:n}=(0,Y.C)(),a={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(Yi.Z,{className:(0,i.Z)("footer__logo",t.className),alt:t.alt,sources:a,width:t.width,height:t.height,style:t.style})}function ea(e){let{logo:t}=e;return t.href?r.createElement(K.Z,{href:t.href,className:Xi.footerLogoLink,target:t.target},r.createElement(Ji,{logo:t})):r.createElement(Ji,{logo:t})}function ta(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function na(e){let{style:t,links:n,logo:a,copyright:o}=e;return r.createElement("footer",{className:(0,i.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(a||o)&&r.createElement("div",{className:"footer__bottom text--center"},a&&r.createElement("div",{className:"margin-bottom--sm"},a),o)))}function ra(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:i,style:a}=e;return r.createElement(na,{style:a,links:n&&n.length>0&&r.createElement(Ki,{links:n}),logo:i&&r.createElement(ea,{logo:i}),copyright:t&&r.createElement(ta,{copyright:t})})}const ia=r.memo(ra),aa=(0,A.Qc)([F.S,k.pl,I.OC,Ei.L5,o.VC,function(e){let{children:t}=e;return r.createElement(L.n2,null,r.createElement(T.M,null,r.createElement(N,null,t)))}]);function oa(e){let{children:t}=e;return r.createElement(aa,null,t)}function sa(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("p",null,t.message),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},r.createElement(u.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again when the page crashed"},"Try again"))))))}const la={mainWrapper:"mainWrapper_z2l0"};function ua(e){const{children:t,noFooter:n,wrapperClassName:s,title:l,description:u}=e;return(0,v.t)(),r.createElement(oa,null,r.createElement(o.d,{title:l,description:u}),r.createElement(y,null),r.createElement(C,null),r.createElement(qi,null),r.createElement("div",{id:d,className:(0,i.Z)(h.k.wrapper.main,la.mainWrapper,s)},r.createElement(a.Z,{fallback:e=>r.createElement(sa,e)},t)),!n&&r.createElement(ia,null))}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),i=n(7294),a=n(9960),o=n(4996),s=n(2263),l=n(6668),u=n(941);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,o.Z)(t.src),dark:(0,o.Z)(t.srcDark||t.src)},s=i.createElement(u.Z,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?i.createElement("div",{className:r},s):s}function d(e){const{siteConfig:{title:t}}=(0,s.Z)(),{navbar:{title:n,logo:u}}=(0,l.L)(),{imageClassName:d,titleClassName:p,...f}=e,m=(0,o.Z)(u?.href||"/"),g=n?"":t,h=u?.alt??g;return i.createElement(a.Z,(0,r.Z)({to:m},f,u?.target&&{target:u.target}),u&&i.createElement(c,{logo:u,alt:h,imageClassName:d}),null!=n&&i.createElement("b",{className:p},n))}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),i=n(5742);function a(e){let{locale:t,version:n,tag:a}=e;const o=t;return r.createElement(i.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),a&&r.createElement("meta",{name:"docusaurus_tag",content:a}),o&&r.createElement("meta",{name:"docsearch:language",content:o}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),a&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:a}))}},941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),i=n(7294),a=n(6010),o=n(2389),s=n(2949);const l={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function u(e){const t=(0,o.Z)(),{colorMode:n}=(0,s.I)(),{sources:u,className:c,alt:d,...p}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return i.createElement(i.Fragment,null,f.map((e=>i.createElement("img",(0,r.Z)({key:e,src:u[e],alt:d,className:(0,a.Z)(l.themedImage,l[`themedImage--${e}`],c)},p)))))}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>s,z:()=>g});var r=n(7462),i=n(7294),a=n(412);const o="ease-in-out";function s(e){let{initialState:t}=e;const[n,r]=(0,i.useState)(t??!1),a=(0,i.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:a}}const l={display:"none",overflow:"hidden",height:"0px"},u={display:"block",overflow:"visible",height:"auto"};function c(e,t){const n=t?l:u;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function d(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const a=(0,i.useRef)(!1);(0,i.useEffect)((()=>{const e=t.current;function i(){const t=e.scrollHeight,n=r?.duration??function(e){const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${r?.easing??o}`,height:`${t}px`}}function s(){const t=i();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return c(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=l.height,e.style.overflow=l.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function p(e){if(!a.Z.canUseDOM)return e?l:u}function f(e){let{as:t="div",collapsed:n,children:r,animation:a,onCollapseTransitionEnd:o,className:s,disableSSRStyle:l}=e;const u=(0,i.useRef)(null);return d({collapsibleRef:u,collapsed:n,animation:a}),i.createElement(t,{ref:u,style:l?void 0:p(n),onTransitionEnd:e=>{"height"===e.propertyName&&(c(u.current,n),o?.(n))},className:s},r)}function m(e){let{collapsed:t,...n}=e;const[a,o]=(0,i.useState)(!t),[s,l]=(0,i.useState)(t);return(0,i.useLayoutEffect)((()=>{t||o(!0)}),[t]),(0,i.useLayoutEffect)((()=>{a&&l(t)}),[a,t]),a?i.createElement(f,(0,r.Z)({},n,{collapsed:s})):null}function g(e){let{lazy:t,...n}=e;const r=t?m:f;return i.createElement(r,n)}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>f});var r=n(7294),i=n(2389),a=n(12),o=n(902),s=n(6668);const l=(0,a.WA)("docusaurus.announcement.dismiss"),u=(0,a.WA)("docusaurus.announcement.id"),c=()=>"true"===l.get(),d=e=>l.set(String(e)),p=r.createContext(null);function f(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.L)(),t=(0,i.Z)(),[n,a]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{a(c())}),[]);const o=(0,r.useCallback)((()=>{d(!0),a(!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()||a(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:o})),[e,n,o])}();return r.createElement(p.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(p);if(!e)throw new o.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>h,S:()=>g});var r=n(7294),i=n(412),a=n(902),o=n(12),s=n(6668);const l=r.createContext(void 0),u="theme",c=(0,o.WA)(u),d={light:"light",dark:"dark"},p=e=>e===d.dark?d.dark:d.light,f=e=>i.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e),m=e=>{c.set(p(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.L)(),[i,a]=(0,r.useState)(f(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const o=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:i=!0}=r;t?(a(t),i&&m(t)):(a(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",p(i))}),[i]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&o(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,o]);const l=(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||l.current?l.current=window.matchMedia("print").matches:o(null)};return e.addListener(r),()=>e.removeListener(r)}),[o,t,n]),(0,r.useMemo)((()=>({colorMode:i,setColorMode:o,get isDarkTheme(){return i===d.dark},setLightTheme(){o(d.light)},setDarkTheme(){o(d.dark)}})),[i,o])}();return r.createElement(l.Provider,{value:n},t)}function h(){const e=(0,r.useContext)(l);if(null==e)throw new a.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>b,L5:()=>h,Oh:()=>y});var r=n(7294),i=n(4104),a=n(9935),o=n(6668),s=n(3438),l=n(902),u=n(12);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()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const f=r.createContext(null);function m(){const e=(0,i._r)(),t=(0,o.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,s]=(0,r.useState)((()=>p(n)));(0,r.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function i(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,i(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[a,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=m();return r.createElement(f.Provider,{value:n},t)}function h(e){let{children:t}=e;return s.cE?r.createElement(g,null,t):r.createElement(r.Fragment,null,t)}function v(){const e=(0,r.useContext)(f);if(!e)throw new l.i6("DocsPreferredVersionContextProvider");return e}function b(e){void 0===e&&(e=a.m);const t=(0,i.zh)(e),[n,o]=v(),{preferredVersionName:s}=n[e];return{preferredVersion:t.versions.find((e=>e.name===s))??null,savePreferredVersionName:(0,r.useCallback)((t=>{o.savePreferredVersion(e,t)}),[o,e])}}function y(){const e=(0,i._r)(),[t]=v();function n(n){const r=e[n],{preferredVersionName:i}=t[n];return r.versions.find((e=>e.name===i))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>l,b:()=>s});var r=n(7294),i=n(902);const a=Symbol("EmptyContext"),o=r.createContext(a);function s(e){let{children:t,name:n,items:i}=e;const a=(0,r.useMemo)((()=>n&&i?{name:n,items:i}:null),[n,i]);return r.createElement(o.Provider,{value:a},t)}function l(){const e=(0,r.useContext)(o);if(e===a)throw new i.i6("DocsSidebarProvider");return e}},4477:(e,t,n)=>{"use strict";n.d(t,{E:()=>s,q:()=>o});var r=n(7294),i=n(902);const a=r.createContext(null);function o(e){let{children:t,version:n}=e;return r.createElement(a.Provider,{value:n},t)}function s(){const e=(0,r.useContext)(a);if(null===e)throw new i.i6("DocsVersionProvider");return e}},3163:(e,t,n)=>{"use strict";n.d(t,{M:()=>d,e:()=>p});var r=n(7294),i=n(3102),a=n(7524),o=n(1980),s=n(6668),l=n(902);const u=r.createContext(void 0);function c(){const e=function(){const e=(0,i.HY)(),{items:t}=(0,s.L)().navbar;return 0===t.length&&!e.component}(),t=(0,a.i)(),n=!e&&"mobile"===t,[l,u]=(0,r.useState)(!1);(0,o.Rb)((()=>{if(l)return u(!1),!1}));const c=(0,r.useCallback)((()=>{u((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&u(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:l})),[e,n,c,l])}function d(e){let{children:t}=e;const n=c();return r.createElement(u.Provider,{value:n},t)}function p(){const e=r.useContext(u);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>s,Zo:()=>l,n2:()=>o});var r=n(7294),i=n(902);const a=r.createContext(null);function o(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(a.Provider,{value:n},t)}function s(){const e=(0,r.useContext)(a);if(!e)throw new i.i6("NavbarSecondaryMenuContentProvider");return e[0]}function l(e){let{component:t,props:n}=e;const o=(0,r.useContext)(a);if(!o)throw new i.i6("NavbarSecondaryMenuContentProvider");const[,s]=o,l=(0,i.Ql)(n);return(0,r.useEffect)((()=>{s({component:t,props:l})}),[s,t,l]),(0,r.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>i,t:()=>a});var r=n(7294);const i="navigation-with-keyboard";function a(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(i),"mousedown"===e.type&&document.body.classList.remove(i)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(i),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(7294),i=n(412);const a={desktop:"desktop",mobile:"mobile",ssr:"ssr"},o=996;function s(){return i.Z.canUseDOM?window.innerWidth>o?a.desktop:a.mobile:a.ssr}const l=!1;function u(){const[e,t]=(0,r.useState)((()=>l?"ssr":s()));return(0,r.useEffect)((()=>{function e(){t(s())}const n=l?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},5281:(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:{}}},3438:(e,t,n)=>{"use strict";n.d(t,{MN:()=>_,Wl:()=>m,_F:()=>b,cE:()=>p,hI:()=>x,jA:()=>g,lO:()=>k,oz:()=>S,s1:()=>w,vY:()=>E,xz:()=>f});var r=n(7294),i=n(6550),a=n(8790),o=n(4104),s=n(373),l=n(4477),u=n(1116),c=n(7392),d=n(8596);const p=!!o._r;function f(e){const t=(0,l.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function m(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=m(t);if(e)return e}}}function g(){const{pathname:e}=(0,i.TH)(),t=(0,u.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=y({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const h=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),v=(e,t)=>e.some((e=>b(e,t)));function b(e,t){return"link"===e.type?h(e.href,t):"category"===e.type&&(h(e.href,t)||v(e.items,t))}function y(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const i=[];return function e(t){for(const a of t)if("category"===a.type&&((0,d.Mg)(a.href,n)||e(a.items))||"link"===a.type&&(0,d.Mg)(a.href,n)){return r&&"category"!==a.type||i.unshift(a),!0}return!1}(t),i}function w(){const e=(0,u.V)(),{pathname:t}=(0,i.TH)(),n=(0,o.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?y({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,o.Iw)(e),{preferredVersion:n}=(0,s.J)(e),i=(0,o.yW)(e);return(0,r.useMemo)((()=>(0,c.j)([t,n,i].filter(Boolean))),[t,n,i])}function S(e,t){const n=k(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(", ")}".\n Available sidebar ids are:\n - ${Object.keys(t).join("\n- ")}`);return r[1]}),[e,n])}function E(e,t){const n=k(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(`DocNavbarItem: 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- ${(0,c.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function x(e){let{route:t,versionMetadata:n}=e;const r=(0,i.TH)(),o=t.routes,s=o.find((e=>(0,i.LX)(r.pathname,e)));if(!s)return null;const l=s.sidebar,u=l?n.docsSidebars[l]:void 0;return{docElement:(0,a.H)(o),sidebarName:l,sidebarItems:u}}function _(e){return e.filter((e=>"category"!==e.type||!!m(e)))}},1980:(e,t,n)=>{"use strict";n.d(t,{Rb:()=>s,_X:()=>l});var r=n(7294),i=n(6550),a=n(1688),o=n(902);function s(e){!function(e){const t=(0,i.k6)(),n=(0,o.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function l(e){return function(e){const t=(0,i.k6)();return(0,a.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}},7392:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function i(e){return Array.from(new Set(e))}n.d(t,{j:()=>i,l:()=>r})},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>p,d:()=>c,VC:()=>f});var r=n(7294),i=n(6010),a=n(5742),o=n(226);function s(){const e=r.useContext(o._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var l=n(4996),u=n(2263);function c(e){let{title:t,description:n,keywords:i,image:o,children:s}=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,l.C)(),p=o?d(o,{absolute:!0}):void 0;return r.createElement(a.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}),i&&r.createElement("meta",{name:"keywords",content:Array.isArray(i)?i.join(","):i}),p&&r.createElement("meta",{property:"og:image",content:p}),p&&r.createElement("meta",{name:"twitter:image",content:p}),s)}const d=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const o=r.useContext(d),s=(0,i.Z)(o,t);return r.createElement(d.Provider,{value:s},r.createElement(a.Z,null,r.createElement("html",{className:s})),n)}function f(e){let{children:t}=e;const n=s(),a=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const o=`plugin-id-${n.plugin.id}`;return r.createElement(p,{className:(0,i.Z)(a,o)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>o,Qc:()=>u,Ql:()=>l,i6:()=>s,zX:()=>a});var r=n(7294);const i=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function a(e){const t=(0,r.useRef)(e);return i((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function o(e){const t=(0,r.useRef)();return i((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function l(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))}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>o,Ns:()=>s});var r=n(7294),i=n(723),a=n(2263);function o(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,a.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 i(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(i).flatMap((e=>e.routes??[])))}(n)}({routes:i.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>l,RF:()=>d,o5:()=>p});var r=n(7294),i=n(412),a=n(2389),o=n(902);const s=r.createContext(void 0);function l(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(s.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ScrollControllerProvider");return e}const c=()=>i.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),i=(0,r.useRef)(c()),a=(0,o.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();a(e,i.current),i.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function p(){const e=u(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),i=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,r.useLayoutEffect)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:i}}function f(){const e=(0,r.useRef)(null),t=(0,a.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 i=document.documentElement.scrollTop;(n&&i>e||!n&&i<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(i-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>o,_q:()=>l,os:()=>s});var r=n(4104),i=n(2263),a=n(373);const o="default";function s(e,t){return`docs-${e}-${t}`}function l(){const{i18n:e}=(0,i.Z)(),t=(0,r._r)(),n=(0,r.WS)(),l=(0,a.Oh)();const u=[o,...Object.keys(t).map((function(e){const r=n?.activePlugin.pluginId===e?n.activeVersion:void 0,i=l[e],a=t[e].versions.find((e=>e.isLast));return s(e,(r??i??a).name)}))];return{locale:e.currentLocale,tags:u}}},12:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>d,WA:()=>c});var r=n(7294),i=n(1688);const a="localStorage";function o(e){let{key:t,oldValue:n,newValue:r,storage:i}=e;if(n===r)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,i),window.dispatchEvent(a)}function s(e){if(void 0===e&&(e=a),"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,l||(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),l=!0),null}var t}let l=!1;const u={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(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=s(t?.persistence);return null===n?u:{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),o({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),o({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),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?u:c(e,t))).current(),a=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,i.useSyncExternalStore)(a,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>a});var r=n(2263),i=n(6550);function a(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:a}}=(0,r.Z)(),{pathname:o}=(0,i.TH)(),s=a===n?e:e.replace(`/${a}/`,"/"),l=o.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:i}=e;return`${i?t:""}${function(e){return e===n?`${s}`:`${s}${e}/`}(r)}${l}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>o});var r=n(7294),i=n(6550),a=n(902);function o(e){const t=(0,i.TH)(),n=(0,a.D9)(t),o=(0,a.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&o({location:t,previousLocation:n})}),[o,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>i});var r=n(2263);function i(){return(0,r.Z)().siteConfig.themeConfig}},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[i]=e.split(/[#?]/),a="/"===i||i===r?i:(o=i,n?function(e){return e.endsWith("/")?e:`${e}/`}(o):function(e){return e.endsWith("/")?e.slice(0,-1):e}(o));var o;return e.replace(i,a)}},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.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="post-content";var i=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(i).default}})},6010:(e,t,n)=>{"use strict";function r(e){var t,n,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(i&&(i+=" "),i+=n);else for(t in e)e[t]&&(i&&(i+=" "),i+=t);return i}n.d(t,{Z:()=>i});const i=function(){for(var e,t,n=0,i="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(i&&(i+=" "),i+=t);return i}},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>O,ob:()=>f,PP:()=>C,Ep:()=>p});var r=n(7462);function i(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,i=e.length;r<i;n+=1,r+=1)e[n]=e[r];e.pop()}const o=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],o=t&&t.split("/")||[],s=e&&i(e),l=t&&i(t),u=s||l;if(e&&i(e)?o=r:r.length&&(o.pop(),o=o.concat(r)),!o.length)return"/";if(o.length){var c=o[o.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,p=o.length;p>=0;p--){var f=o[p];"."===f?a(o,p):".."===f?(a(o,p),d++):d&&(a(o,p),d--)}if(!u)for(;d--;d)o.unshift("..");!u||""===o[0]||o[0]&&i(o[0])||o.unshift("");var m=o.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var s=n(8776);function l(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 p(e){var t=e.pathname,n=e.search,r=e.hash,i=t||"/";return n&&"?"!==n&&(i+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(i+="#"===r.charAt(0)?r:"#"+r),i}function f(e,t,n,i){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",i=t.indexOf("#");-1!==i&&(r=t.substr(i),t=t.substr(0,i));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.Z)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(a.key=n),i?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=o(a.pathname,i.pathname)):a.pathname=i.pathname:a.pathname||(a.pathname="/"),a}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,i){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,i):i(!0):i(!1!==a)}else i(!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;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var g=!("undefined"==typeof window||!window.document||!window.document.createElement);function h(e,t){t(window.confirm(e))}var v="popstate",b="hashchange";function y(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),g||(0,s.Z)(!1);var t,n=window.history,i=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,a=!(-1===window.navigator.userAgent.indexOf("Trident")),o=e,u=o.forceRefresh,w=void 0!==u&&u,k=o.getUserConfirmation,S=void 0===k?h:k,E=o.keyLength,x=void 0===E?6:E,_=e.basename?d(l(e.basename)):"";function O(e){var t=e||{},n=t.key,r=t.state,i=window.location,a=i.pathname+i.search+i.hash;return _&&(a=c(a,_)),f(a,r,n)}function P(){return Math.random().toString(36).substr(2,x)}var C=m();function T(e){(0,r.Z)(U,e),U.length=n.length,C.notifyListeners(U.location,U.action)}function I(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||R(O(e.state))}function A(){R(O(y()))}var L=!1;function R(e){if(L)L=!1,T();else{C.confirmTransitionTo(e,"POP",S,(function(t){t?T({action:"POP",location:e}):function(e){var t=U.location,n=j.indexOf(t.key);-1===n&&(n=0);var r=j.indexOf(e.key);-1===r&&(r=0);var i=n-r;i&&(L=!0,M(i))}(e)}))}}var N=O(y()),j=[N.key];function D(e){return _+p(e)}function M(e){n.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?(window.addEventListener(v,I),a&&window.addEventListener(b,A)):0===F&&(window.removeEventListener(v,I),a&&window.removeEventListener(b,A))}var z=!1;var U={length:n.length,action:"POP",location:N,createHref:D,push:function(e,t){var r="PUSH",a=f(e,t,P(),U.location);C.confirmTransitionTo(a,r,S,(function(e){if(e){var t=D(a),o=a.key,s=a.state;if(i)if(n.pushState({key:o,state:s},null,t),w)window.location.href=t;else{var l=j.indexOf(U.location.key),u=j.slice(0,l+1);u.push(a.key),j=u,T({action:r,location:a})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,P(),U.location);C.confirmTransitionTo(a,r,S,(function(e){if(e){var t=D(a),o=a.key,s=a.state;if(i)if(n.replaceState({key:o,state:s},null,t),w)window.location.replace(t);else{var l=j.indexOf(U.location.key);-1!==l&&(j[l]=a.key),T({action:r,location:a})}else window.location.replace(t)}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=C.setPrompt(e);return z||(B(1),z=!0),function(){return z&&(z=!1,B(-1)),t()}},listen:function(e){var t=C.appendListener(e);return B(1),function(){B(-1),t()}}};return U}var k="hashchange",S={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+u(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:u,decodePath:l},slash:{encodePath:l,decodePath:l}};function E(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function x(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function _(e){window.location.replace(E(window.location.href)+"#"+e)}function O(e){void 0===e&&(e={}),g||(0,s.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),i=n.getUserConfirmation,a=void 0===i?h:i,o=n.hashType,u=void 0===o?"slash":o,v=e.basename?d(l(e.basename)):"",b=S[u],y=b.encodePath,w=b.decodePath;function O(){var e=w(x());return v&&(e=c(e,v)),f(e)}var P=m();function C(e){(0,r.Z)(z,e),z.length=t.length,P.notifyListeners(z.location,z.action)}var T=!1,I=null;function A(){var e,t,n=x(),r=y(n);if(n!==r)_(r);else{var i=O(),o=z.location;if(!T&&(t=i,(e=o).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(I===p(i))return;I=null,function(e){if(T)T=!1,C();else{var t="POP";P.confirmTransitionTo(e,t,a,(function(n){n?C({action:t,location:e}):function(e){var t=z.location,n=j.lastIndexOf(p(t));-1===n&&(n=0);var r=j.lastIndexOf(p(e));-1===r&&(r=0);var i=n-r;i&&(T=!0,D(i))}(e)}))}}(i)}}var L=x(),R=y(L);L!==R&&_(R);var N=O(),j=[p(N)];function D(e){t.go(e)}var M=0;function F(e){1===(M+=e)&&1===e?window.addEventListener(k,A):0===M&&window.removeEventListener(k,A)}var B=!1;var z={length:t.length,action:"POP",location:N,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=E(window.location.href)),n+"#"+y(v+p(e))},push:function(e,t){var n="PUSH",r=f(e,void 0,void 0,z.location);P.confirmTransitionTo(r,n,a,(function(e){if(e){var t=p(r),i=y(v+t);if(x()!==i){I=t,function(e){window.location.hash=e}(i);var a=j.lastIndexOf(p(z.location)),o=j.slice(0,a+1);o.push(t),j=o,C({action:n,location:r})}else C()}}))},replace:function(e,t){var n="REPLACE",r=f(e,void 0,void 0,z.location);P.confirmTransitionTo(r,n,a,(function(e){if(e){var t=p(r),i=y(v+t);x()!==i&&(I=t,_(i));var a=j.indexOf(p(z.location));-1!==a&&(j[a]=t),C({action:n,location:r})}}))},go:D,goBack:function(){D(-1)},goForward:function(){D(1)},block:function(e){void 0===e&&(e=!1);var t=P.setPrompt(e);return B||(F(1),B=!0),function(){return B&&(B=!1,F(-1)),t()}},listen:function(e){var t=P.appendListener(e);return F(1),function(){F(-1),t()}}};return z}function P(e,t,n){return Math.min(Math.max(e,t),n)}function C(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,i=t.initialEntries,a=void 0===i?["/"]:i,o=t.initialIndex,s=void 0===o?0:o,l=t.keyLength,u=void 0===l?6:l,c=m();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function g(){return Math.random().toString(36).substr(2,u)}var h=P(s,0,a.length-1),v=a.map((function(e){return f(e,void 0,"string"==typeof e?g():e.key||g())})),b=p;function y(e){var t=P(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:v.length,action:"POP",location:v[h],index:h,entries:v,createHref:b,push:function(e,t){var r="PUSH",i=f(e,t,g(),w.location);c.confirmTransitionTo(i,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,i):n.push(i),d({action:r,location:i,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",i=f(e,t,g(),w.location);c.confirmTransitionTo(i,r,n,(function(e){e&&(w.entries[w.index]=i,d({action:r,location:i}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(9864),i={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?o:s[e.$$typeof]||i}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=o;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var i=f(n);i&&i!==m&&e(t,i,r)}var o=c(n);d&&(o=o.concat(d(n)));for(var s=l(t),g=l(n),h=0;h<o.length;++h){var v=o[h];if(!(a[v]||r&&r[v]||g&&g[v]||s&&s[v])){var b=p(n,v);try{u(t,v,b)}catch(y){}}}}return t}},1143:e=>{"use strict";e.exports=function(e,t,n,r,i,a,o,s){if(!e){var l;if(void 0===t)l=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,i,a,o,s],c=0;(l=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},813:function(e){e.exports=function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){function e(n){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=i,this.iframesTimeout=a}return n(e,[{key:"getContexts",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach((function(t){var n=e.filter((function(e){return e.contains(t)})).length>0;-1!==e.indexOf(t)||n||e.push(t)})),e}},{key:"getIframeContents",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var i=e.contentWindow;if(r=i.document,!i||!r)throw new Error("iframe inaccessible")}catch(a){n()}r&&t(r)}},{key:"isIframeBlank",value:function(e){var t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}},{key:"observeIframeLoad",value:function(e,t,n){var r=this,i=!1,a=null,o=function o(){if(!i){i=!0,clearTimeout(a);try{r.isIframeBlank(e)||(e.removeEventListener("load",o),r.getIframeContents(e,t,n))}catch(s){n()}}};e.addEventListener("load",o),a=setTimeout(o,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,n){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(r){n()}}},{key:"waitForIframes",value:function(e,t){var n=this,r=0;this.forEachIframe(e,(function(){return!0}),(function(e){r++,n.waitForIframes(e.querySelector("html"),(function(){--r||t()}))}),(function(e){e||t()}))}},{key:"forEachIframe",value:function(t,n,r){var i=this,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},o=t.querySelectorAll("iframe"),s=o.length,l=0;o=Array.prototype.slice.call(o);var u=function(){--s<=0&&a(l)};s||u(),o.forEach((function(t){e.matches(t,i.exclude)?u():i.onIframeReady(t,(function(e){n(t)&&(l++,r(e)),u()}),u)}))}},{key:"createIterator",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:"getIteratorNode",value:function(e){var t=e.previousNode();return{prevNode:t,node:(null===t||e.nextNode())&&e.nextNode()}}},{key:"checkIframeFilter",value:function(e,t,n,r){var i=!1,a=!1;return r.forEach((function(e,t){e.val===n&&(i=t,a=e.handled)})),this.compareNodeIframe(e,t,n)?(!1!==i||a?!1===i||a||(r[i].handled=!0):r.push({val:n,handled:!0}),!0):(!1===i&&r.push({val:n,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,n,r){var i=this;e.forEach((function(e){e.handled||i.getIframeContents(e.val,(function(e){i.createInstanceOnIframe(e).forEachNode(t,n,r)}))}))}},{key:"iterateThroughNodes",value:function(e,t,n,r,i){for(var a=this,o=this.createIterator(t,e,r),s=[],l=[],u=void 0,c=void 0,d=function(){var e=a.getIteratorNode(o);return c=e.prevNode,u=e.node};d();)this.iframes&&this.forEachIframe(t,(function(e){return a.checkIframeFilter(u,c,e,s)}),(function(t){a.createInstanceOnIframe(t).forEachNode(e,(function(e){return l.push(e)}),r)})),l.push(u);l.forEach((function(e){n(e)})),this.iframes&&this.handleOpenIframes(s,e,n,r),i()}},{key:"forEachNode",value:function(e,t,n){var r=this,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},a=this.getContexts(),o=a.length;o||i(),a.forEach((function(a){var s=function(){r.iterateThroughNodes(e,a,t,n,(function(){--o<=0&&i()}))};r.iframes?r.waitForIframes(a,s):s()}))}}],[{key:"matches",value:function(e,t){var n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var i=!1;return n.every((function(t){return!r.call(e,t)||(i=!0,!1)})),i}return!1}}]),e}(),a=function(){function a(e){t(this,a),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf("MSIE")>-1||n.indexOf("Trident")>-1)&&(this.ie=!0)}return n(a,[{key:"log",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&"object"===(void 0===r?"undefined":e(r))&&"function"==typeof r[n]&&r[n]("mark.js: "+t)}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e)}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var i in t)if(t.hasOwnProperty(i)){var a=t[i],o="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(i):this.escapeStr(i),s="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(a):this.escapeStr(a);""!==o&&""!==s&&(e=e.replace(new RegExp("("+this.escapeStr(o)+"|"+this.escapeStr(s)+")","gm"+n),r+"("+this.processSynomyms(o)+"|"+this.processSynomyms(s)+")"+r))}return e}},{key:"processSynomyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,(function(e){return"\\"===e.charAt(0)?"?":"\x01"}))).replace(/(?:\\)*\*/g,(function(e){return"\\"===e.charAt(0)?"*":"\x02"}))}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,(function(e,t,n){var r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"}))}},{key:"createJoinersRegExp",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105","A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010d","C\xc7\u0106\u010c","d\u0111\u010f","D\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119","E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012b","I\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142","L\u0141","n\xf1\u0148\u0144","N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014d","O\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159","R\u0158","s\u0161\u015b\u0219\u015f","S\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163","T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016b","U\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xff","Y\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017a","Z\u017d\u017b\u0179"]:["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010dC\xc7\u0106\u010c","d\u0111\u010fD\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012bI\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142L\u0141","n\xf1\u0148\u0144N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014dO\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159R\u0158","s\u0161\u015b\u0219\u015fS\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016bU\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xffY\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017aZ\u017d\u017b\u0179"],r=[];return e.split("").forEach((function(i){n.every((function(n){if(-1!==n.indexOf(i)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp("["+n+"]","gm"+t),"["+n+"]"),r.push(n)}return!0}))})),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,n="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xa1\xbf",r=this.opt.accuracy,i="string"==typeof r?r:r.value,a="string"==typeof r?[]:r.limiters,o="";switch(a.forEach((function(e){o+="|"+t.escapeStr(e)})),i){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(o="\\s"+(o||this.escapeStr(n)))+"]*"+e+"[^"+o+"]*)";case"exactly":return"(^|\\s"+o+")("+e+")(?=$|\\s"+o+")"}}},{key:"getSeparatedKeywords",value:function(e){var t=this,n=[];return e.forEach((function(e){t.opt.separateWordSearch?e.split(" ").forEach((function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)})):e.trim()&&-1===n.indexOf(e)&&n.push(e)})),{keywords:n.sort((function(e,t){return t.length-e.length})),length:n.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort((function(e,t){return e.start-t.start})).forEach((function(e){var i=t.callNoMatchOnInvalidRanges(e,r),a=i.start,o=i.end;i.valid&&(e.start=a,e.length=o-a,n.push(e),r=o)})),n}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var n=void 0,r=void 0,i=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?i=!0:(this.log("Ignoring invalid or overlapping range: "+JSON.stringify(e)),this.opt.noMatch(e))):(this.log("Ignoring invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:n,end:r,valid:i}}},{key:"checkWhitespaceRanges",value:function(e,t,n){var r=void 0,i=!0,a=n.length,o=t-a,s=parseInt(e.start,10)-o;return(r=(s=s>a?a:s)+parseInt(e.length,10))>a&&(r=a,this.log("End range automatically set to the max value of "+a)),s<0||r-s<0||s>a||r>a?(i=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===n.substring(s,r).replace(/\s+/g,"")&&(i=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:s,end:r,valid:i}}},{key:"getTextNodes",value:function(e){var t=this,n="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,(function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})}),(function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),(function(){e({value:n,nodes:r})}))}},{key:"matchesExclude",value:function(e){return i.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,n){var r=this.opt.element?this.opt.element:"mark",i=e.splitText(t),a=i.splitText(n-t),o=document.createElement(r);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=i.textContent,i.parentNode.replaceChild(o,i),a}},{key:"wrapRangeInMappedTextNode",value:function(e,t,n,r,i){var a=this;e.nodes.every((function(o,s){var l=e.nodes[s+1];if(void 0===l||l.start>t){if(!r(o.node))return!1;var u=t-o.start,c=(n>o.end?o.end:n)-o.start,d=e.value.substr(0,o.start),p=e.value.substr(c+o.start);if(o.node=a.wrapRangeInTextNode(o.node,u,c),e.value=d+p,e.nodes.forEach((function(t,n){n>=s&&(e.nodes[n].start>0&&n!==s&&(e.nodes[n].start-=c),e.nodes[n].end-=c)})),n-=c,i(o.node.previousSibling,o.start),!(n>o.end))return!1;t=o.end}return!0}))}},{key:"wrapMatches",value:function(e,t,n,r,i){var a=this,o=0===t?0:t+1;this.getTextNodes((function(t){t.nodes.forEach((function(t){t=t.node;for(var i=void 0;null!==(i=e.exec(t.textContent))&&""!==i[o];)if(n(i[o],t)){var s=i.index;if(0!==o)for(var l=1;l<o;l++)s+=i[l].length;t=a.wrapRangeInTextNode(t,s,s+i[o].length),r(t.previousSibling),e.lastIndex=0}})),i()}))}},{key:"wrapMatchesAcrossElements",value:function(e,t,n,r,i){var a=this,o=0===t?0:t+1;this.getTextNodes((function(t){for(var s=void 0;null!==(s=e.exec(t.value))&&""!==s[o];){var l=s.index;if(0!==o)for(var u=1;u<o;u++)l+=s[u].length;var c=l+s[o].length;a.wrapRangeInMappedTextNode(t,l,c,(function(e){return n(s[o],e)}),(function(t,n){e.lastIndex=n,r(t)}))}i()}))}},{key:"wrapRangeFromIndex",value:function(e,t,n,r){var i=this;this.getTextNodes((function(a){var o=a.value.length;e.forEach((function(e,r){var s=i.checkWhitespaceRanges(e,o,a.value),l=s.start,u=s.end;s.valid&&i.wrapRangeInMappedTextNode(a,l,u,(function(n){return t(n,e,a.value.substring(l,u),r)}),(function(t){n(t,e)}))})),r()}))}},{key:"unwrapMatches",value:function(e){for(var t=e.parentNode,n=document.createDocumentFragment();e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}},{key:"normalizeTextNode",value:function(e){if(e){if(3===e.nodeType)for(;e.nextSibling&&3===e.nextSibling.nodeType;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}},{key:"markRegExp",value:function(e,t){var n=this;this.opt=t,this.log('Searching with expression "'+e+'"');var r=0,i="wrapMatches",a=function(e){r++,n.opt.each(e)};this.opt.acrossElements&&(i="wrapMatchesAcrossElements"),this[i](e,this.opt.ignoreGroups,(function(e,t){return n.opt.filter(t,e,r)}),a,(function(){0===r&&n.opt.noMatch(e),n.opt.done(r)}))}},{key:"mark",value:function(e,t){var n=this;this.opt=t;var r=0,i="wrapMatches",a=this.getSeparatedKeywords("string"==typeof e?[e]:e),o=a.keywords,s=a.length,l=this.opt.caseSensitive?"":"i",u=function e(t){var a=new RegExp(n.createRegExp(t),"gm"+l),u=0;n.log('Searching with expression "'+a+'"'),n[i](a,1,(function(e,i){return n.opt.filter(i,t,r,u)}),(function(e){u++,r++,n.opt.each(e)}),(function(){0===u&&n.opt.noMatch(t),o[s-1]===t?n.opt.done(r):e(o[o.indexOf(t)+1])}))};this.opt.acrossElements&&(i="wrapMatchesAcrossElements"),0===s?this.opt.done(r):u(o[0])}},{key:"markRanges",value:function(e,t){var n=this;this.opt=t;var r=0,i=this.checkRanges(e);i&&i.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(i)),this.wrapRangeFromIndex(i,(function(e,t,r,i){return n.opt.filter(e,t,r,i)}),(function(e,t){r++,n.opt.each(e,t)}),(function(){n.opt.done(r)}))):this.opt.done(r)}},{key:"unmark",value:function(e){var t=this;this.opt=e;var n=this.opt.element?this.opt.element:"*";n+="[data-markjs]",this.opt.className&&(n+="."+this.opt.className),this.log('Removal selector "'+n+'"'),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,(function(e){t.unwrapMatches(e)}),(function(e){var r=i.matches(e,n),a=t.matchesExclude(e);return!r||a?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),this.opt.done)}},{key:"opt",set:function(e){this._opt=r({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:function(){},noMatch:function(){},filter:function(){return!0},done:function(){},debug:!1,log:window.console},e)},get:function(){return this._opt}},{key:"iterator",get:function(){return new i(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}}]),a}();function o(e){var t=this,n=new a(e);return this.mark=function(e,r){return n.mark(e,r),t},this.markRegExp=function(e,r){return n.markRegExp(e,r),t},this.markRanges=function(e,r){return n.markRanges(e,r),t},this.unmark=function(e){return n.unmark(e),t},this}return o}()},9414:(e,t,n)=>{"use strict";n.r(t)},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,i;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:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function i(e,t,n){return e<t?t:e>n?n:e}function a(e){return 100*(-1+e)}function o(e,t,n){var i;return(i="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,i}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=i(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),u=a.querySelector(r.barSelector),c=r.speed,d=r.easing;return a.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(u,o(e,c,d)),1===e?(l(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){l(a,{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)*i(Math.random()*t,.1,.95)),t=i(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 i,o=t.querySelector(r.barSelector),s=e?"-100":a(n.status||0),u=document.querySelector(r.parent);return l(o,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(i=t.querySelector(r.spinnerSelector))&&f(i),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&&f(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 s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=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,i=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);i--;)if((r=e[i]+a)in n)return r;return t}function i(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=i(t),e.style[t]=n}return function(e,t){var n,r,i=arguments;if(2==i.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,i[1],i[2])}}();function u(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(i="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=i)},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(i){return!1}}()?Object.assign:function(e,i){for(var a,o,s=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),l=1;l<arguments.length;l++){for(var u in a=Object(arguments[l]))n.call(a,u)&&(s[u]=a[u]);if(t){o=t(a);for(var c=0;c<o.length;c++)r.call(a,o[c])&&(s[o[c]]=a[o[c]])}}return s}},7410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof i?new i(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var i,a;switch(n=n||{},r.util.type(t)){case"Object":if(a=r.util.objId(t),n[a])return n[a];for(var o in i={},n[a]=i,t)t.hasOwnProperty(o)&&(i[o]=e(t[o],n));return i;case"Array":return a=r.util.objId(t),n[a]?n[a]:(i=[],n[a]=i,t.forEach((function(t,r){i[r]=e(t,n)})),i);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var i=e.classList;if(i.contains(t))return!0;if(i.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var i in t)n[i]=t[i];return n},insertBefore:function(e,t,n,i){var a=(i=i||r.languages)[e],o={};for(var s in a)if(a.hasOwnProperty(s)){if(s==t)for(var l in n)n.hasOwnProperty(l)&&(o[l]=n[l]);n.hasOwnProperty(s)||(o[s]=a[s])}var u=i[e];return i[e]=o,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=o)})),o},DFS:function e(t,n,i,a){a=a||{};var o=r.util.objId;for(var s in t)if(t.hasOwnProperty(s)){n.call(t,s,t[s],i||s);var l=t[s],u=r.util.type(l);"Object"!==u||a[o(l)]?"Array"!==u||a[o(l)]||(a[o(l)]=!0,e(l,n,s,a)):(a[o(l)]=!0,e(l,n,null,a))}}},plugins:{},highlight:function(e,t,n){var a={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",a),a.tokens=r.tokenize(a.code,a.grammar),r.hooks.run("after-tokenize",a),i.stringify(r.util.encode(a.tokens),a.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var i=new s;return l(i,i.head,e),o(e,i,t,i.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(i)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var i,a=0;i=n[a++];)i(t)}},Token:i};function i(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function a(e,t,n,r){e.lastIndex=t;var i=e.exec(n);if(i&&r&&i[1]){var a=i[1].length;i.index+=a,i[0]=i[0].slice(a)}return i}function o(e,t,n,s,c,d){for(var p in n)if(n.hasOwnProperty(p)&&n[p]){var f=n[p];f=Array.isArray(f)?f:[f];for(var m=0;m<f.length;++m){if(d&&d.cause==p+","+m)return;var g=f[m],h=g.inside,v=!!g.lookbehind,b=!!g.greedy,y=g.alias;if(b&&!g.pattern.global){var w=g.pattern.toString().match(/[imsuy]*$/)[0];g.pattern=RegExp(g.pattern.source,w+"g")}for(var k=g.pattern||g,S=s.next,E=c;S!==t.tail&&!(d&&E>=d.reach);E+=S.value.length,S=S.next){var x=S.value;if(t.length>e.length)return;if(!(x instanceof i)){var _,O=1;if(b){if(!(_=a(k,E,e,v))||_.index>=e.length)break;var P=_.index,C=_.index+_[0].length,T=E;for(T+=S.value.length;P>=T;)T+=(S=S.next).value.length;if(E=T-=S.value.length,S.value instanceof i)continue;for(var I=S;I!==t.tail&&(T<C||"string"==typeof I.value);I=I.next)O++,T+=I.value.length;O--,x=e.slice(E,T),_.index-=E}else if(!(_=a(k,0,x,v)))continue;P=_.index;var A=_[0],L=x.slice(0,P),R=x.slice(P+A.length),N=E+x.length;d&&N>d.reach&&(d.reach=N);var j=S.prev;if(L&&(j=l(t,j,L),E+=L.length),u(t,j,O),S=l(t,j,new i(p,h?r.tokenize(A,h):A,y,A)),R&&l(t,S,R),O>1){var D={cause:p+","+m,reach:N};o(e,t,n,S.prev,E,D),d&&D.reach>d.reach&&(d.reach=D.reach)}}}}}}function s(){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 l(e,t,n){var r=t.next,i={value:n,prev:t,next:r};return t.next=i,r.prev=i,e.length++,i}function u(e,t,n){for(var r=t.next,i=0;i<n&&r!==e.tail;i++)r=r.next;t.next=r,r.prev=t,e.length-=i}return i.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var i="";return t.forEach((function(t){i+=e(t,n)})),i}var a={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},o=t.alias;o&&(Array.isArray(o)?Array.prototype.push.apply(a.classes,o):a.classes.push(o)),r.hooks.run("wrap",a);var s="";for(var l in a.attributes)s+=" "+l+'="'+(a.attributes[l]||"").replace(/"/g,""")+'"';return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+s+">"+a.content+"</"+a.tag+">"},r}(),i=r;r.default=r,i.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\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:/<!\[CDATA\[[\s\S]*?\]\]>/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]},i.languages.markup.tag.inside["attr-value"].inside.entity=i.languages.markup.entity,i.languages.markup.doctype.inside["internal-subset"].inside=i.languages.markup,i.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(i.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:i.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:i.languages[t]};var a={};a[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},i.languages.insertBefore("markup","cdata",a)}}),Object.defineProperty(i.languages.markup.tag,"addAttribute",{value:function(e,t){i.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:i.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),i.languages.html=i.languages.markup,i.languages.mathml=i.languages.markup,i.languages.svg=i.languages.markup,i.languages.xml=i.languages.extend("markup",{}),i.languages.ssml=i.languages.xml,i.languages.atom=i.languages.xml,i.languages.rss=i.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 i=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],a=r.variable[1].inside,o=0;o<i.length;o++)a[i[o]]=e.languages.bash[i[o]];e.languages.shell=e.languages.bash}(i),i.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},i.languages.c=i.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|[?:~]|[-+*/%&|^!=<>]=?/}),i.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),i.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},i.languages.c.string],char:i.languages.c.char,comment:i.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:i.languages.c}}}}),i.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 i.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(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/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+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/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"])}(i),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"))}(i),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},i={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:i,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:i})}(i),i.languages.javascript=i.languages.extend("clike",{"class-name":[i.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}|\?\?=?|\?\.?|[~:]/}),i.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,i.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:i.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:i.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:i.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:i.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:i.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),i.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:i.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"}}),i.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),i.languages.markup&&(i.languages.markup.tag.addInlined("script","javascript"),i.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")),i.languages.js=i.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}(i),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",i=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),a=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function o(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+i+"|"+a+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:o(/\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:o(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:o(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:o(a),lookbehind:!0,greedy:!0},number:{pattern:o(/[+-]?(?: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}(i),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,i=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),a=/\|?[ \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("^"+i+a+"(?:"+i+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+i+a+")(?:"+i+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+i+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+i+"$"),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__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\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(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.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<r;n++){var i=t[n];if("code"===i.type){var a=i.content[1],o=i.content[3];if(a&&o&&"code-language"===a.type&&"code-block"===o.type&&"string"==typeof a.content){var s=a.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),l="language-"+(s=(/[a-z][\w-]*/i.exec(s)||[""])[0].toLowerCase());o.alias?"string"==typeof o.alias?o.alias=[o.alias,l]:o.alias.push(l):o.alias=[l]}}else e(i.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,i=t.classes.length;r<i;r++){var a=t.classes[r],u=/language-(.+)/.exec(a);if(u){n=u[1];break}}var c,d=e.languages[n];if(d)t.content=e.highlight((c=t.content,c.replace(o,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),l(n);var r=s[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var p="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=p,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(p);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var o=RegExp(e.languages.markup.tag.pattern.source,"gi"),s={amp:"&",lt:"<",gt:">",quot:'"'},l=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(i),i.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:i.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+/},i.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;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var i=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var a=p(/^\($/,/^\)$/);if(-1===a)continue;for(;n<a;n++){var o=c(0);"variable"===o.type&&(f(o,"variable-input"),i.push(o.content))}n=a+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,f(c(0),"property-mutation"),i.length>0)){var s=p(/^\{$/,/^\}$/);if(-1===s)continue;for(var l=n;l<s;l++){var u=t[l];"variable"===u.type&&i.indexOf(u.content)>=0&&f(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return!1}return!0}function p(e,r){for(var i=1,a=n;a<t.length;a++){var o=t[a],s=o.content;if("punctuation"===o.type&&"string"==typeof s)if(e.test(s))i++;else if(r.test(s)&&0===--i)return a}return-1}function f(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),i.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\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,i=r.inside["interpolation-punctuation"],a=r.pattern.source;function o(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 s(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function l(t,n,r){var i={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",i),i.tokens=e.tokenize(i.code,i.grammar),e.hooks.run("after-tokenize",i),i.tokens}function u(t){var n={};n["interpolation-punctuation"]=i;var a=e.tokenize(t,n);if(3===a.length){var o=[1,1];o.push.apply(o,l(a[1],e.languages.javascript,"javascript")),a.splice.apply(a,o)}return new e.Token("interpolation",a,r.alias,t)}function c(t,n,r){var i=e.tokenize(t,{interpolation:{pattern:RegExp(a),lookbehind:!0}}),o=0,c={},d=l(i.map((function(e){if("string"==typeof e)return e;for(var n,i=e.content;-1!==t.indexOf(n=s(o++,r)););return c[n]=i,n})).join(""),n,r),p=Object.keys(c);return o=0,function e(t){for(var n=0;n<t.length;n++){if(o>=p.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var i=p[o],a="string"==typeof r?r:r.content,s=a.indexOf(i);if(-1!==s){++o;var l=a.substring(0,s),d=u(c[i]),f=a.substring(s+i.length),m=[];if(l&&m.push(l),m.push(d),f){var g=[f];e(g),m.push.apply(m,g)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var h=r.content;Array.isArray(h)?e(h):e([h])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[o("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),o("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),o("svg",/\bsvg/.source),o("markdown",/\b(?:markdown|md)/.source),o("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),o("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,i=n.length;r<i;r++){var a=n[r];if("string"!=typeof a){var o=a.content;if(Array.isArray(o))if("template-string"===a.type){var s=o[1];if(3===o.length&&"string"!=typeof s&&"embedded-code"===s.type){var l=p(s),u=s.alias,d=Array.isArray(u)?u[0]:u,f=e.languages[d];if(!f)continue;o[1]=c(l,f,d)}}else t(o);else"string"!=typeof o&&t([o])}}}(t.tokens)}))}(i),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,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}(i),function(e){function t(e,t){return RegExp(e.replace(/<ID>/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*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\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*)#?<ID>/.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<n.length;r++){var i=n[r],a=e.languages.javascript[i];"RegExp"===e.util.type(a)&&(a=e.languages.javascript[i]={pattern:a});var o=a.inside||{};a.inside=o,o["maybe-class-name"]=/^[A-Z][\s\S]*/}}(i),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,i=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function a(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return i})),RegExp(e,t)}i=a(i).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=a(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<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:a(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var o=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(o).join(""):""},s=function(t){for(var n=[],r=0;r<t.length;r++){var i=t[r],a=!1;if("string"!=typeof i&&("tag"===i.type&&i.content[0]&&"tag"===i.content[0].type?"</"===i.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===o(i.content[0].content[1])&&n.pop():"/>"===i.content[i.content.length-1].content||n.push({tagName:o(i.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===i.type&&"{"===i.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===i.type&&"}"===i.content?n[n.length-1].openedBraces--:a=!0),(a||"string"==typeof i)&&n.length>0&&0===n[n.length-1].openedBraces){var l=o(i);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(l+=o(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(l=o(t[r-1])+l,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",l,null,l)}i.content&&"string"!=typeof i.content&&s(i.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||s(e.tokens)}))}(i),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],i=[];/^\w+$/.test(n)||i.push(/\w+/.exec(n)[0]),"diff"===n&&i.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:i,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})}(i),i.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},i.languages.go=i.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/}),i.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete i.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,i,a){if(n.language===r){var o=n.tokenStack=[];n.code=n.code.replace(i,(function(e){if("function"==typeof a&&!a(e))return e;for(var i,s=o.length;-1!==n.code.indexOf(i=t(r,s));)++s;return o[s]=e,i})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var i=0,a=Object.keys(n.tokenStack);!function o(s){for(var l=0;l<s.length&&!(i>=a.length);l++){var u=s[l];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=a[i],d=n.tokenStack[c],p="string"==typeof u?u:u.content,f=t(r,c),m=p.indexOf(f);if(m>-1){++i;var g=p.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),v=p.substring(m+f.length),b=[];g&&b.push.apply(b,o([g])),b.push(h),v&&b.push.apply(b,o([v])),"string"==typeof u?s.splice.apply(s,[l,1].concat(b)):u.content=b}}else u.content&&o(u.content)}return s}(n.tokens)}}}})}(i),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}(i),i.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"}},i.languages.webmanifest=i.languages.json,i.languages.less=i.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:/[+\-*\/]/}),i.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),i.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:/[:;(){}]/},i.languages.objectivec=i.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 i.languages.objectivec["class-name"],i.languages.objc=i.languages.objectivec,i.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/},i.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:/[{}[\];(),.:]/},i.languages.python["string-interpolation"].inside.interpolation.inside.rest=i.languages.python,i.languages.py=i.languages.python,i.languages.reason=i.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/}),i.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 i.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}})}(i),i.languages.scss=i.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]+\}/}}}),i.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}]}),i.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),i.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}}),i.languages.scss.atrule.inside.rest=i.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:/[{}()\[\];:.]/}}(i),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}(i),i.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 a=i},9901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),i=n(9642),a=new Set;function o(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];i(r,e,t).load((e=>{if(!(e in r.languages))return void(o.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),a.add(e)}))}o.silent=!1,e.exports=o},6726:(e,t,n)=>{var r={"./":2885};function i(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}i.keys=function(){return Object.keys(r)},i.resolve=a,e.exports=i,i.id=6726},6500:(e,t,n)=>{var r={"./":2885};function i(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}i.keys=function(){return Object.keys(r)},i.resolve=a,e.exports=i,i.id=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function i(r,a){if(!(r in n)){a.push(r);var o=a.indexOf(r);if(o<a.length-1)throw new Error("Circular dependency: "+a.slice(o).join(" -> "));var s={},l=e[r];if(l){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in s))for(var o in i(t,a),s[t]=!0,n[t])s[o]=!0}t(l.require,u),t(l.optional,u),t(l.modify,u)}n[r]=s,a.pop()}}return function(e){var t=n[e];return t||(i(e,r),t=n[e]),t}}function i(e){for(var t in e)return!0;return!1}return function(a,o,s){var l=function(e){var t={};for(var n in e){var r=e[n];for(var i in r)if("meta"!=i){var a=r[i];t[i]="string"==typeof a?{title:a}:a}}return t}(a),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var i in n={},e){var a=e[i];t(a&&a.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+i+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+i+" because it is a component.");n[t]=i}))}return n[r]||r}}(l);o=o.map(u),s=(s||[]).map(u);var c=n(o),d=n(s);o.forEach((function e(n){var r=l[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var p,f=r(l),m=c;i(m);){for(var g in p={},m){var h=l[g];t(h&&h.modify,(function(e){e in d&&(p[e]=!0)}))}for(var v in d)if(!(v in c))for(var b in f(v))if(b in c){p[v]=!0;break}for(var y in m=p)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,i){var a=i?i.series:void 0,o=i?i.parallel:e,s={},l={};function u(e){if(e in s)return s[e];l[e]=!0;var i,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)i=r(e);else{var p=o(c.map((function(e){var t=u(e);return delete l[e],t})));a?i=a(p,(function(){return r(e)})):r(e)}return s[e]=i}for(var c in n)u(c);var d=[];for(var p in l)d.push(s[p]);return o(d)}(f,c,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function i(){}function a(){}a.resetWarningCache=i,e.exports=function(){function e(e,t,n,i,a,o){if(o!==r){var s=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 s.name="Invariant Violation",s}}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:a,resetWarningCache:i};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),i=n(7418),a=n(3840);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(o(227));var s=new Set,l={};function u(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(l[e]=t,e=0;e<t.length;e++)s.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),p=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,f=Object.prototype.hasOwnProperty,m={},g={};function h(e,t,n,r,i,a,o){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=o}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){v[e]=new h(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];v[t]=new h(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){v[e]=new h(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){v[e]=new h(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){v[e]=new h(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){v[e]=new h(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){v[e]=new h(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){v[e]=new h(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){v[e]=new h(e,5,!1,e.toLowerCase(),null,!1,!1)}));var b=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var i=v.hasOwnProperty(t)?v[t]:null;(null!==i?0===i.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,i,r)&&(n=null),r||null===i?function(e){return!!f.call(g,e)||!f.call(m,e)&&(p.test(e)?g[e]=!0:(m[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):i.mustUseProperty?e[i.propertyName]=null===n?3!==i.type&&"":n:(t=i.attributeName,r=i.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(i=i.type)||4===i&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new h(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new h(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(b,y);v[t]=new h(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){v[e]=new h(e,1,!1,e.toLowerCase(),null,!1,!1)})),v.xlinkHref=new h("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){v[e]=new h(e,1,!1,e.toLowerCase(),null,!0,!0)}));var k=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,S=60103,E=60106,x=60107,_=60108,O=60114,P=60109,C=60110,T=60112,I=60113,A=60120,L=60115,R=60116,N=60121,j=60128,D=60129,M=60130,F=60131;if("function"==typeof Symbol&&Symbol.for){var B=Symbol.for;S=B("react.element"),E=B("react.portal"),x=B("react.fragment"),_=B("react.strict_mode"),O=B("react.profiler"),P=B("react.provider"),C=B("react.context"),T=B("react.forward_ref"),I=B("react.suspense"),A=B("react.suspense_list"),L=B("react.memo"),R=B("react.lazy"),N=B("react.block"),B("react.scope"),j=B("react.opaque.id"),D=B("react.debug_trace_mode"),M=B("react.offscreen"),F=B("react.legacy_hidden")}var z,U="function"==typeof Symbol&&Symbol.iterator;function q(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=U&&e[U]||e["@@iterator"])?e:null}function $(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var H=!1;function G(e,t){if(!e||H)return"";H=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(l){var r=l}Reflect.construct(e,[],t)}else{try{t.call()}catch(l){r=l}e.call(t.prototype)}else{try{throw Error()}catch(l){r=l}e()}}catch(l){if(l&&r&&"string"==typeof l.stack){for(var i=l.stack.split("\n"),a=r.stack.split("\n"),o=i.length-1,s=a.length-1;1<=o&&0<=s&&i[o]!==a[s];)s--;for(;1<=o&&0<=s;o--,s--)if(i[o]!==a[s]){if(1!==o||1!==s)do{if(o--,0>--s||i[o]!==a[s])return"\n"+i[o].replace(" at new "," at ")}while(1<=o&&0<=s);break}}}finally{H=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?$(e):""}function Q(e){switch(e.tag){case 5:return $(e.type);case 16:return $("Lazy");case 13:return $("Suspense");case 19:return $("SuspenseList");case 0:case 2:case 15:return e=G(e.type,!1);case 11:return e=G(e.type.render,!1);case 22:return e=G(e.type._render,!1);case 1:return e=G(e.type,!0);default:return""}}function V(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case x:return"Fragment";case E:return"Portal";case O:return"Profiler";case _:return"StrictMode";case I:return"Suspense";case A:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case C:return(e.displayName||"Context")+".Consumer";case P:return(e._context.displayName||"Context")+".Provider";case T:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case L:return V(e.type);case N:return V(e._render);case R:t=e._payload,e=e._init;try{return V(e(t))}catch(n){}}return null}function Z(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function W(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function K(e){e._valueTracker||(e._valueTracker=function(e){var t=W(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var i=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Y(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=W(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function X(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return i({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=Z(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=Z(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ie(e,t.type,n):t.hasOwnProperty("defaultValue")&&ie(e,t.type,Z(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ie(e,t,n){"number"===t&&X(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function ae(e,t){return e=i({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function oe(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t["$"+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty("$"+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=""+Z(n),t=null,i=0;i<e.length;i++){if(e[i].value===n)return e[i].selected=!0,void(r&&(e[i].defaultSelected=!0));null!==t||e[i].disabled||(t=e[i])}null!==t&&(t.selected=!0)}}function se(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(o(91));return i({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function le(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(o(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(o(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:Z(n)}}function ue(e,t){var n=Z(t.value),r=Z(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ce(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function pe(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function fe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?pe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var me,ge,he=(ge=function(e,t){if(e.namespaceURI!==de.svg||"innerHTML"in e)e.innerHTML=t;else{for((me=me||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=me.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ge(e,t)}))}:ge);function ve(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var be={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ye=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||be.hasOwnProperty(e)&&be[e]?(""+t).trim():t+"px"}function ke(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),i=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}Object.keys(be).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),be[t]=be[e]}))}));var Se=i({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Ee(e,t){if(t){if(Se[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(o(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(o(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(o(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(o(62))}}function xe(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function _e(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Oe=null,Pe=null,Ce=null;function Te(e){if(e=ni(e)){if("function"!=typeof Oe)throw Error(o(280));var t=e.stateNode;t&&(t=ii(t),Oe(e.stateNode,e.type,t))}}function Ie(e){Pe?Ce?Ce.push(e):Ce=[e]:Pe=e}function Ae(){if(Pe){var e=Pe,t=Ce;if(Ce=Pe=null,Te(e),t)for(e=0;e<t.length;e++)Te(t[e])}}function Le(e,t){return e(t)}function Re(e,t,n,r,i){return e(t,n,r,i)}function Ne(){}var je=Le,De=!1,Me=!1;function Fe(){null===Pe&&null===Ce||(Ne(),Ae())}function Be(e,t){var n=e.stateNode;if(null===n)return null;var r=ii(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(o(231,t,typeof n));return n}var ze=!1;if(d)try{var Ue={};Object.defineProperty(Ue,"passive",{get:function(){ze=!0}}),window.addEventListener("test",Ue,Ue),window.removeEventListener("test",Ue,Ue)}catch(ge){ze=!1}function qe(e,t,n,r,i,a,o,s,l){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var $e=!1,He=null,Ge=!1,Qe=null,Ve={onError:function(e){$e=!0,He=e}};function Ze(e,t,n,r,i,a,o,s,l){$e=!1,He=null,qe.apply(Ve,arguments)}function We(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ke(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Ye(e){if(We(e)!==e)throw Error(o(188))}function Xe(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=We(e)))throw Error(o(188));return t!==e?null:e}for(var n=e,r=t;;){var i=n.return;if(null===i)break;var a=i.alternate;if(null===a){if(null!==(r=i.return)){n=r;continue}break}if(i.child===a.child){for(a=i.child;a;){if(a===n)return Ye(i),e;if(a===r)return Ye(i),t;a=a.sibling}throw Error(o(188))}if(n.return!==r.return)n=i,r=a;else{for(var s=!1,l=i.child;l;){if(l===n){s=!0,n=i,r=a;break}if(l===r){s=!0,r=i,n=a;break}l=l.sibling}if(!s){for(l=a.child;l;){if(l===n){s=!0,n=a,r=i;break}if(l===r){s=!0,r=a,n=i;break}l=l.sibling}if(!s)throw Error(o(189))}}if(n.alternate!==r)throw Error(o(190))}if(3!==n.tag)throw Error(o(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,rt,it=!1,at=[],ot=null,st=null,lt=null,ut=new Map,ct=new Map,dt=[],pt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function ft(e,t,n,r,i){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:i,targetContainers:[r]}}function mt(e,t){switch(e){case"focusin":case"focusout":ot=null;break;case"dragenter":case"dragleave":st=null;break;case"mouseover":case"mouseout":lt=null;break;case"pointerover":case"pointerout":ut.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ct.delete(t.pointerId)}}function gt(e,t,n,r,i,a){return null===e||e.nativeEvent!==a?(e=ft(t,n,r,i,a),null!==t&&(null!==(t=ni(t))&&tt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==i&&-1===t.indexOf(i)&&t.push(i),e)}function ht(e){var t=ti(e.target);if(null!==t){var n=We(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ke(n)))return e.blockedOn=t,void rt(e.lanePriority,(function(){a.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function vt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=ni(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function bt(e,t,n){vt(e)&&n.delete(t)}function yt(){for(it=!1;0<at.length;){var e=at[0];if(null!==e.blockedOn){null!==(e=ni(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&at.shift()}null!==ot&&vt(ot)&&(ot=null),null!==st&&vt(st)&&(st=null),null!==lt&&vt(lt)&&(lt=null),ut.forEach(bt),ct.forEach(bt)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,it||(it=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,yt)))}function kt(e){function t(t){return wt(t,e)}if(0<at.length){wt(at[0],e);for(var n=1;n<at.length;n++){var r=at[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==ot&&wt(ot,e),null!==st&&wt(st,e),null!==lt&&wt(lt,e),ut.forEach(t),ct.forEach(t),n=0;n<dt.length;n++)(r=dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<dt.length&&null===(n=dt[0]).blockedOn;)ht(n),null===n.blockedOn&&dt.shift()}function St(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Et={animationend:St("Animation","AnimationEnd"),animationiteration:St("Animation","AnimationIteration"),animationstart:St("Animation","AnimationStart"),transitionend:St("Transition","TransitionEnd")},xt={},_t={};function Ot(e){if(xt[e])return xt[e];if(!Et[e])return e;var t,n=Et[e];for(t in n)if(n.hasOwnProperty(t)&&t in _t)return xt[e]=n[t];return e}d&&(_t=document.createElement("div").style,"AnimationEvent"in window||(delete Et.animationend.animation,delete Et.animationiteration.animation,delete Et.animationstart.animation),"TransitionEvent"in window||delete Et.transitionend.transition);var Pt=Ot("animationend"),Ct=Ot("animationiteration"),Tt=Ot("animationstart"),It=Ot("transitionend"),At=new Map,Lt=new Map,Rt=["abort","abort",Pt,"animationEnd",Ct,"animationIteration",Tt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",It,"transitionEnd","waiting","waiting"];function Nt(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],i=e[n+1];i="on"+(i[0].toUpperCase()+i.slice(1)),Lt.set(r,t),At.set(r,i),u(i,[r])}}(0,a.unstable_now)();var jt=8;function Dt(e){if(0!=(1&e))return jt=15,1;if(0!=(2&e))return jt=14,2;if(0!=(4&e))return jt=13,4;var t=24&e;return 0!==t?(jt=12,t):0!=(32&e)?(jt=11,32):0!==(t=192&e)?(jt=10,t):0!=(256&e)?(jt=9,256):0!==(t=3584&e)?(jt=8,t):0!=(4096&e)?(jt=7,4096):0!==(t=4186112&e)?(jt=6,t):0!==(t=62914560&e)?(jt=5,t):67108864&e?(jt=4,67108864):0!=(134217728&e)?(jt=3,134217728):0!==(t=805306368&e)?(jt=2,t):0!=(1073741824&e)?(jt=1,1073741824):(jt=8,e)}function Mt(e,t){var n=e.pendingLanes;if(0===n)return jt=0;var r=0,i=0,a=e.expiredLanes,o=e.suspendedLanes,s=e.pingedLanes;if(0!==a)r=a,i=jt=15;else if(0!==(a=134217727&n)){var l=a&~o;0!==l?(r=Dt(l),i=jt):0!==(s&=a)&&(r=Dt(s),i=jt)}else 0!==(a=n&~o)?(r=Dt(a),i=jt):0!==s&&(r=Dt(s),i=jt);if(0===r)return 0;if(r=n&((0>(r=31-$t(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&o)){if(Dt(t),i<=jt)return t;jt=i}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)i=1<<(n=31-$t(t)),r|=e[n],t&=~i;return r}function Ft(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function Bt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=zt(24&~t))?Bt(10,t):e;case 10:return 0===(e=zt(192&~t))?Bt(8,t):e;case 8:return 0===(e=zt(3584&~t))&&(0===(e=zt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=zt(805306368&~t))&&(t=268435456),t}throw Error(o(358,e))}function zt(e){return e&-e}function Ut(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function qt(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-$t(t)]=n}var $t=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Ht(e)/Gt|0)|0},Ht=Math.log,Gt=Math.LN2;var Qt=a.unstable_UserBlockingPriority,Vt=a.unstable_runWithPriority,Zt=!0;function Wt(e,t,n,r){De||Ne();var i=Yt,a=De;De=!0;try{Re(i,e,t,n,r)}finally{(De=a)||Fe()}}function Kt(e,t,n,r){Vt(Qt,Yt.bind(null,e,t,n,r))}function Yt(e,t,n,r){var i;if(Zt)if((i=0==(4&t))&&0<at.length&&-1<pt.indexOf(e))e=ft(null,e,t,n,r),at.push(e);else{var a=Xt(e,t,n,r);if(null===a)i&&mt(e,r);else{if(i){if(-1<pt.indexOf(e))return e=ft(a,e,t,n,r),void at.push(e);if(function(e,t,n,r,i){switch(t){case"focusin":return ot=gt(ot,e,t,n,r,i),!0;case"dragenter":return st=gt(st,e,t,n,r,i),!0;case"mouseover":return lt=gt(lt,e,t,n,r,i),!0;case"pointerover":var a=i.pointerId;return ut.set(a,gt(ut.get(a)||null,e,t,n,r,i)),!0;case"gotpointercapture":return a=i.pointerId,ct.set(a,gt(ct.get(a)||null,e,t,n,r,i)),!0}return!1}(a,e,t,n,r))return;mt(e,r)}Nr(e,t,r,null,n)}}}function Xt(e,t,n,r){var i=_e(r);if(null!==(i=ti(i))){var a=We(i);if(null===a)i=null;else{var o=a.tag;if(13===o){if(null!==(i=Ke(a)))return i;i=null}else if(3===o){if(a.stateNode.hydrate)return 3===a.tag?a.stateNode.containerInfo:null;i=null}else a!==i&&(i=null)}}return Nr(e,t,r,i,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,r=n.length,i="value"in Jt?Jt.value:Jt.textContent,a=i.length;for(e=0;e<r&&n[e]===i[e];e++);var o=r-e;for(t=1;t<=o&&n[r-t]===i[a-t];t++);return tn=i.slice(e,1<t?1-t:void 0)}function rn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function on(){return!1}function sn(e){function t(t,n,r,i,a){for(var o in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=i,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(o)&&(t=e[o],this[o]=t?t(i):i[o]);return this.isDefaultPrevented=(null!=i.defaultPrevented?i.defaultPrevented:!1===i.returnValue)?an:on,this.isPropagationStopped=on,this}return i(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var ln,un,cn,dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},pn=sn(dn),fn=i({},dn,{view:0,detail:0}),mn=sn(fn),gn=i({},fn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Pn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==cn&&(cn&&"mousemove"===e.type?(ln=e.screenX-cn.screenX,un=e.screenY-cn.screenY):un=ln=0,cn=e),ln)},movementY:function(e){return"movementY"in e?e.movementY:un}}),hn=sn(gn),vn=sn(i({},gn,{dataTransfer:0})),bn=sn(i({},fn,{relatedTarget:0})),yn=sn(i({},dn,{animationName:0,elapsedTime:0,pseudoElement:0})),wn=i({},dn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),kn=sn(wn),Sn=sn(i({},dn,{data:0})),En={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},_n={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function On(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=_n[e])&&!!t[e]}function Pn(){return On}var Cn=i({},fn,{key:function(e){if(e.key){var t=En[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Pn,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Tn=sn(Cn),In=sn(i({},gn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),An=sn(i({},fn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Pn})),Ln=sn(i({},dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Rn=i({},gn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Nn=sn(Rn),jn=[9,13,27,32],Dn=d&&"CompositionEvent"in window,Mn=null;d&&"documentMode"in document&&(Mn=document.documentMode);var Fn=d&&"TextEvent"in window&&!Mn,Bn=d&&(!Dn||Mn&&8<Mn&&11>=Mn),zn=String.fromCharCode(32),Un=!1;function qn(e,t){switch(e){case"keyup":return-1!==jn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function $n(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Hn=!1;var Gn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Qn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Gn[e.type]:"textarea"===t}function Vn(e,t,n,r){Ie(r),0<(t=Dr(t,"onChange")).length&&(n=new pn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Zn=null,Wn=null;function Kn(e){Cr(e,0)}function Yn(e){if(Y(ri(e)))return e}function Xn(e,t){if("change"===e)return t}var Jn=!1;if(d){var er;if(d){var tr="oninput"in document;if(!tr){var nr=document.createElement("div");nr.setAttribute("oninput","return;"),tr="function"==typeof nr.oninput}er=tr}else er=!1;Jn=er&&(!document.documentMode||9<document.documentMode)}function rr(){Zn&&(Zn.detachEvent("onpropertychange",ir),Wn=Zn=null)}function ir(e){if("value"===e.propertyName&&Yn(Wn)){var t=[];if(Vn(t,Wn,e,_e(e)),e=Kn,De)e(t);else{De=!0;try{Le(e,t)}finally{De=!1,Fe()}}}}function ar(e,t,n){"focusin"===e?(rr(),Wn=n,(Zn=t).attachEvent("onpropertychange",ir)):"focusout"===e&&rr()}function or(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Yn(Wn)}function sr(e,t){if("click"===e)return Yn(t)}function lr(e,t){if("input"===e||"change"===e)return Yn(t)}var ur="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},cr=Object.prototype.hasOwnProperty;function dr(e,t){if(ur(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!cr.call(t,n[r])||!ur(e[n[r]],t[n[r]]))return!1;return!0}function pr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function fr(e,t){var n,r=pr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=pr(r)}}function mr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?mr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function gr(){for(var e=window,t=X();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=X((e=t.contentWindow).document)}return t}function hr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var vr=d&&"documentMode"in document&&11>=document.documentMode,br=null,yr=null,wr=null,kr=!1;function Sr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;kr||null==br||br!==X(r)||("selectionStart"in(r=br)&&hr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},wr&&dr(wr,r)||(wr=r,0<(r=Dr(yr,"onSelect")).length&&(t=new pn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=br)))}Nt("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Nt("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Nt(Rt,2);for(var Er="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),xr=0;xr<Er.length;xr++)Lt.set(Er[xr],0);c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),u("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),u("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),u("onBeforeInput",["compositionend","keypress","textInput","paste"]),u("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var _r="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Or=new Set("cancel close invalid load scroll toggle".split(" ").concat(_r));function Pr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,i,a,s,l,u){if(Ze.apply(this,arguments),$e){if(!$e)throw Error(o(198));var c=He;$e=!1,He=null,Ge||(Ge=!0,Qe=c)}}(r,t,void 0,e),e.currentTarget=null}function Cr(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],i=r.event;r=r.listeners;e:{var a=void 0;if(t)for(var o=r.length-1;0<=o;o--){var s=r[o],l=s.instance,u=s.currentTarget;if(s=s.listener,l!==a&&i.isPropagationStopped())break e;Pr(i,s,u),a=l}else for(o=0;o<r.length;o++){if(l=(s=r[o]).instance,u=s.currentTarget,s=s.listener,l!==a&&i.isPropagationStopped())break e;Pr(i,s,u),a=l}}}if(Ge)throw e=Qe,Ge=!1,Qe=null,e}function Tr(e,t){var n=ai(t),r=e+"__bubble";n.has(r)||(Rr(t,e,2,!1),n.add(r))}var Ir="_reactListening"+Math.random().toString(36).slice(2);function Ar(e){e[Ir]||(e[Ir]=!0,s.forEach((function(t){Or.has(t)||Lr(t,!1,e,null),Lr(t,!0,e,null)})))}function Lr(e,t,n,r){var i=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,a=n;if("selectionchange"===e&&9!==n.nodeType&&(a=n.ownerDocument),null!==r&&!t&&Or.has(e)){if("scroll"!==e)return;i|=2,a=r}var o=ai(a),s=e+"__"+(t?"capture":"bubble");o.has(s)||(t&&(i|=4),Rr(a,e,i,t),o.add(s))}function Rr(e,t,n,r){var i=Lt.get(t);switch(void 0===i?2:i){case 0:i=Wt;break;case 1:i=Kt;break;default:i=Yt}n=i.bind(null,t,n,e),i=void 0,!ze||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(i=!0),r?void 0!==i?e.addEventListener(t,n,{capture:!0,passive:i}):e.addEventListener(t,n,!0):void 0!==i?e.addEventListener(t,n,{passive:i}):e.addEventListener(t,n,!1)}function Nr(e,t,n,r,i){var a=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var o=r.tag;if(3===o||4===o){var s=r.stateNode.containerInfo;if(s===i||8===s.nodeType&&s.parentNode===i)break;if(4===o)for(o=r.return;null!==o;){var l=o.tag;if((3===l||4===l)&&((l=o.stateNode.containerInfo)===i||8===l.nodeType&&l.parentNode===i))return;o=o.return}for(;null!==s;){if(null===(o=ti(s)))return;if(5===(l=o.tag)||6===l){r=a=o;continue e}s=s.parentNode}}r=r.return}!function(e,t,n){if(Me)return e(t,n);Me=!0;try{return je(e,t,n)}finally{Me=!1,Fe()}}((function(){var r=a,i=_e(n),o=[];e:{var s=At.get(e);if(void 0!==s){var l=pn,u=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":l=Tn;break;case"focusin":u="focus",l=bn;break;case"focusout":u="blur",l=bn;break;case"beforeblur":case"afterblur":l=bn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":l=hn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":l=vn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":l=An;break;case Pt:case Ct:case Tt:l=yn;break;case It:l=Ln;break;case"scroll":l=mn;break;case"wheel":l=Nn;break;case"copy":case"cut":case"paste":l=kn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":l=In}var c=0!=(4&t),d=!c&&"scroll"===e,p=c?null!==s?s+"Capture":null:s;c=[];for(var f,m=r;null!==m;){var g=(f=m).stateNode;if(5===f.tag&&null!==g&&(f=g,null!==p&&(null!=(g=Be(m,p))&&c.push(jr(m,g,f)))),d)break;m=m.return}0<c.length&&(s=new l(s,u,null,n,i),o.push({event:s,listeners:c}))}}if(0==(7&t)){if(l="mouseout"===e||"pointerout"===e,(!(s="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(u=n.relatedTarget||n.fromElement)||!ti(u)&&!u[Jr])&&(l||s)&&(s=i.window===i?i:(s=i.ownerDocument)?s.defaultView||s.parentWindow:window,l?(l=r,null!==(u=(u=n.relatedTarget||n.toElement)?ti(u):null)&&(u!==(d=We(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(l=null,u=r),l!==u)){if(c=hn,g="onMouseLeave",p="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(c=In,g="onPointerLeave",p="onPointerEnter",m="pointer"),d=null==l?s:ri(l),f=null==u?s:ri(u),(s=new c(g,m+"leave",l,n,i)).target=d,s.relatedTarget=f,g=null,ti(i)===r&&((c=new c(p,m+"enter",u,n,i)).target=f,c.relatedTarget=d,g=c),d=g,l&&u)e:{for(p=u,m=0,f=c=l;f;f=Mr(f))m++;for(f=0,g=p;g;g=Mr(g))f++;for(;0<m-f;)c=Mr(c),m--;for(;0<f-m;)p=Mr(p),f--;for(;m--;){if(c===p||null!==p&&c===p.alternate)break e;c=Mr(c),p=Mr(p)}c=null}else c=null;null!==l&&Fr(o,s,l,c,!1),null!==u&&null!==d&&Fr(o,d,u,c,!0)}if("select"===(l=(s=r?ri(r):window).nodeName&&s.nodeName.toLowerCase())||"input"===l&&"file"===s.type)var h=Xn;else if(Qn(s))if(Jn)h=lr;else{h=or;var v=ar}else(l=s.nodeName)&&"input"===l.toLowerCase()&&("checkbox"===s.type||"radio"===s.type)&&(h=sr);switch(h&&(h=h(e,r))?Vn(o,h,n,i):(v&&v(e,s,r),"focusout"===e&&(v=s._wrapperState)&&v.controlled&&"number"===s.type&&ie(s,"number",s.value)),v=r?ri(r):window,e){case"focusin":(Qn(v)||"true"===v.contentEditable)&&(br=v,yr=r,wr=null);break;case"focusout":wr=yr=br=null;break;case"mousedown":kr=!0;break;case"contextmenu":case"mouseup":case"dragend":kr=!1,Sr(o,n,i);break;case"selectionchange":if(vr)break;case"keydown":case"keyup":Sr(o,n,i)}var b;if(Dn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Hn?qn(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(Bn&&"ko"!==n.locale&&(Hn||"onCompositionStart"!==y?"onCompositionEnd"===y&&Hn&&(b=nn()):(en="value"in(Jt=i)?Jt.value:Jt.textContent,Hn=!0)),0<(v=Dr(r,y)).length&&(y=new Sn(y,e,null,n,i),o.push({event:y,listeners:v}),b?y.data=b:null!==(b=$n(n))&&(y.data=b))),(b=Fn?function(e,t){switch(e){case"compositionend":return $n(t);case"keypress":return 32!==t.which?null:(Un=!0,zn);case"textInput":return(e=t.data)===zn&&Un?null:e;default:return null}}(e,n):function(e,t){if(Hn)return"compositionend"===e||!Dn&&qn(e,t)?(e=nn(),tn=en=Jt=null,Hn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Bn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Dr(r,"onBeforeInput")).length&&(i=new Sn("onBeforeInput","beforeinput",null,n,i),o.push({event:i,listeners:r}),i.data=b))}Cr(o,t)}))}function jr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Dr(e,t){for(var n=t+"Capture",r=[];null!==e;){var i=e,a=i.stateNode;5===i.tag&&null!==a&&(i=a,null!=(a=Be(e,n))&&r.unshift(jr(e,a,i)),null!=(a=Be(e,t))&&r.push(jr(e,a,i))),e=e.return}return r}function Mr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Fr(e,t,n,r,i){for(var a=t._reactName,o=[];null!==n&&n!==r;){var s=n,l=s.alternate,u=s.stateNode;if(null!==l&&l===r)break;5===s.tag&&null!==u&&(s=u,i?null!=(l=Be(n,a))&&o.unshift(jr(n,l,s)):i||null!=(l=Be(n,a))&&o.push(jr(n,l,s))),n=n.return}0!==o.length&&e.push({event:t,listeners:o})}function Br(){}var zr=null,Ur=null;function qr(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function $r(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Hr="function"==typeof setTimeout?setTimeout:void 0,Gr="function"==typeof clearTimeout?clearTimeout:void 0;function Qr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Vr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Zr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Wr=0;var Kr=Math.random().toString(36).slice(2),Yr="__reactFiber$"+Kr,Xr="__reactProps$"+Kr,Jr="__reactContainer$"+Kr,ei="__reactEvents$"+Kr;function ti(e){var t=e[Yr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jr]||n[Yr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Zr(e);null!==e;){if(n=e[Yr])return n;e=Zr(e)}return t}n=(e=n).parentNode}return null}function ni(e){return!(e=e[Yr]||e[Jr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ri(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(o(33))}function ii(e){return e[Xr]||null}function ai(e){var t=e[ei];return void 0===t&&(t=e[ei]=new Set),t}var oi=[],si=-1;function li(e){return{current:e}}function ui(e){0>si||(e.current=oi[si],oi[si]=null,si--)}function ci(e,t){si++,oi[si]=e.current,e.current=t}var di={},pi=li(di),fi=li(!1),mi=di;function gi(e,t){var n=e.type.contextTypes;if(!n)return di;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i,a={};for(i in n)a[i]=t[i];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function hi(e){return null!=(e=e.childContextTypes)}function vi(){ui(fi),ui(pi)}function bi(e,t,n){if(pi.current!==di)throw Error(o(168));ci(pi,t),ci(fi,n)}function yi(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in e))throw Error(o(108,V(t)||"Unknown",a));return i({},n,r)}function wi(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||di,mi=pi.current,ci(pi,e),ci(fi,fi.current),!0}function ki(e,t,n){var r=e.stateNode;if(!r)throw Error(o(169));n?(e=yi(e,t,mi),r.__reactInternalMemoizedMergedChildContext=e,ui(fi),ui(pi),ci(pi,e)):ui(fi),ci(fi,n)}var Si=null,Ei=null,xi=a.unstable_runWithPriority,_i=a.unstable_scheduleCallback,Oi=a.unstable_cancelCallback,Pi=a.unstable_shouldYield,Ci=a.unstable_requestPaint,Ti=a.unstable_now,Ii=a.unstable_getCurrentPriorityLevel,Ai=a.unstable_ImmediatePriority,Li=a.unstable_UserBlockingPriority,Ri=a.unstable_NormalPriority,Ni=a.unstable_LowPriority,ji=a.unstable_IdlePriority,Di={},Mi=void 0!==Ci?Ci:function(){},Fi=null,Bi=null,zi=!1,Ui=Ti(),qi=1e4>Ui?Ti:function(){return Ti()-Ui};function $i(){switch(Ii()){case Ai:return 99;case Li:return 98;case Ri:return 97;case Ni:return 96;case ji:return 95;default:throw Error(o(332))}}function Hi(e){switch(e){case 99:return Ai;case 98:return Li;case 97:return Ri;case 96:return Ni;case 95:return ji;default:throw Error(o(332))}}function Gi(e,t){return e=Hi(e),xi(e,t)}function Qi(e,t,n){return e=Hi(e),_i(e,t,n)}function Vi(){if(null!==Bi){var e=Bi;Bi=null,Oi(e)}Zi()}function Zi(){if(!zi&&null!==Fi){zi=!0;var e=0;try{var t=Fi;Gi(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Fi=null}catch(n){throw null!==Fi&&(Fi=Fi.slice(e+1)),_i(Ai,Vi),n}finally{zi=!1}}}var Wi=k.ReactCurrentBatchConfig;function Ki(e,t){if(e&&e.defaultProps){for(var n in t=i({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Yi=li(null),Xi=null,Ji=null,ea=null;function ta(){ea=Ji=Xi=null}function na(e){var t=Yi.current;ui(Yi),e.type._context._currentValue=t}function ra(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ia(e,t){Xi=e,ea=Ji=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Do=!0),e.firstContext=null)}function aa(e,t){if(ea!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(ea=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ji){if(null===Xi)throw Error(o(308));Ji=t,Xi.dependencies={lanes:0,firstContext:t,responders:null}}else Ji=Ji.next=t;return e._currentValue}var oa=!1;function sa(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function la(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function ua(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function ca(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function da(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var i=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var o={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===a?i=a=o:a=a.next=o,n=n.next}while(null!==n);null===a?i=a=t:a=a.next=t}else i=a=t;return n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function pa(e,t,n,r){var a=e.updateQueue;oa=!1;var o=a.firstBaseUpdate,s=a.lastBaseUpdate,l=a.shared.pending;if(null!==l){a.shared.pending=null;var u=l,c=u.next;u.next=null,null===s?o=c:s.next=c,s=u;var d=e.alternate;if(null!==d){var p=(d=d.updateQueue).lastBaseUpdate;p!==s&&(null===p?d.firstBaseUpdate=c:p.next=c,d.lastBaseUpdate=u)}}if(null!==o){for(p=a.baseState,s=0,d=c=u=null;;){l=o.lane;var f=o.eventTime;if((r&l)===l){null!==d&&(d=d.next={eventTime:f,lane:0,tag:o.tag,payload:o.payload,callback:o.callback,next:null});e:{var m=e,g=o;switch(l=t,f=n,g.tag){case 1:if("function"==typeof(m=g.payload)){p=m.call(f,p,l);break e}p=m;break e;case 3:m.flags=-4097&m.flags|64;case 0:if(null==(l="function"==typeof(m=g.payload)?m.call(f,p,l):m))break e;p=i({},p,l);break e;case 2:oa=!0}}null!==o.callback&&(e.flags|=32,null===(l=a.effects)?a.effects=[o]:l.push(o))}else f={eventTime:f,lane:l,tag:o.tag,payload:o.payload,callback:o.callback,next:null},null===d?(c=d=f,u=p):d=d.next=f,s|=l;if(null===(o=o.next)){if(null===(l=a.shared.pending))break;o=l.next,l.next=null,a.lastBaseUpdate=l,a.shared.pending=null}}null===d&&(u=p),a.baseState=u,a.firstBaseUpdate=c,a.lastBaseUpdate=d,Us|=s,e.lanes=s,e.memoizedState=p}}function fa(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],i=r.callback;if(null!==i){if(r.callback=null,r=n,"function"!=typeof i)throw Error(o(191,i));i.call(r)}}}var ma=(new r.Component).refs;function ga(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:i({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var ha={isMounted:function(e){return!!(e=e._reactInternals)&&We(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=pl(),i=fl(e),a=ua(r,i);a.payload=t,null!=n&&(a.callback=n),ca(e,a),ml(e,i,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=pl(),i=fl(e),a=ua(r,i);a.tag=1,a.payload=t,null!=n&&(a.callback=n),ca(e,a),ml(e,i,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=pl(),r=fl(e),i=ua(n,r);i.tag=2,null!=t&&(i.callback=t),ca(e,i),ml(e,r,n)}};function va(e,t,n,r,i,a,o){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,o):!t.prototype||!t.prototype.isPureReactComponent||(!dr(n,r)||!dr(i,a))}function ba(e,t,n){var r=!1,i=di,a=t.contextType;return"object"==typeof a&&null!==a?a=aa(a):(i=hi(t)?mi:pi.current,a=(r=null!=(r=t.contextTypes))?gi(e,i):di),t=new t(n,a),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=ha,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=i,e.__reactInternalMemoizedMaskedChildContext=a),t}function ya(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&ha.enqueueReplaceState(t,t.state,null)}function wa(e,t,n,r){var i=e.stateNode;i.props=n,i.state=e.memoizedState,i.refs=ma,sa(e);var a=t.contextType;"object"==typeof a&&null!==a?i.context=aa(a):(a=hi(t)?mi:pi.current,i.context=gi(e,a)),pa(e,n,i,r),i.state=e.memoizedState,"function"==typeof(a=t.getDerivedStateFromProps)&&(ga(e,t,a,n),i.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof i.getSnapshotBeforeUpdate||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||(t=i.state,"function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount(),t!==i.state&&ha.enqueueReplaceState(i,i.state,null),pa(e,n,i,r),i.state=e.memoizedState),"function"==typeof i.componentDidMount&&(e.flags|=4)}var ka=Array.isArray;function Sa(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(o(309));var r=n.stateNode}if(!r)throw Error(o(147,e));var i=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===i?t.ref:(t=function(e){var t=r.refs;t===ma&&(t=r.refs={}),null===e?delete t[i]:t[i]=e},t._stringRef=i,t)}if("string"!=typeof e)throw Error(o(284));if(!n._owner)throw Error(o(290,e))}return e}function Ea(e,t){if("textarea"!==e.type)throw Error(o(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function xa(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function i(e,t){return(e=Ql(e,t)).index=0,e.sibling=null,e}function a(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function s(t){return e&&null===t.alternate&&(t.flags=2),t}function l(e,t,n,r){return null===t||6!==t.tag?((t=Kl(n,e.mode,r)).return=e,t):((t=i(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=i(t,n.props)).ref=Sa(e,t,n),r.return=e,r):((r=Vl(n.type,n.key,n.props,null,e.mode,r)).ref=Sa(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Yl(n,e.mode,r)).return=e,t):((t=i(t,n.children||[])).return=e,t)}function d(e,t,n,r,a){return null===t||7!==t.tag?((t=Zl(n,e.mode,r,a)).return=e,t):((t=i(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Kl(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case S:return(n=Vl(t.type,t.key,t.props,null,e.mode,n)).ref=Sa(e,null,t),n.return=e,n;case E:return(t=Yl(t,e.mode,n)).return=e,t}if(ka(t)||q(t))return(t=Zl(t,e.mode,n,null)).return=e,t;Ea(e,t)}return null}function f(e,t,n,r){var i=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==i?null:l(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case S:return n.key===i?n.type===x?d(e,t,n.props.children,r,i):u(e,t,n,r):null;case E:return n.key===i?c(e,t,n,r):null}if(ka(n)||q(n))return null!==i?null:d(e,t,n,r,null);Ea(e,n)}return null}function m(e,t,n,r,i){if("string"==typeof r||"number"==typeof r)return l(t,e=e.get(n)||null,""+r,i);if("object"==typeof r&&null!==r){switch(r.$$typeof){case S:return e=e.get(null===r.key?n:r.key)||null,r.type===x?d(t,e,r.props.children,i,r.key):u(t,e,r,i);case E:return c(t,e=e.get(null===r.key?n:r.key)||null,r,i)}if(ka(r)||q(r))return d(t,e=e.get(n)||null,r,i,null);Ea(t,r)}return null}function g(i,o,s,l){for(var u=null,c=null,d=o,g=o=0,h=null;null!==d&&g<s.length;g++){d.index>g?(h=d,d=null):h=d.sibling;var v=f(i,d,s[g],l);if(null===v){null===d&&(d=h);break}e&&d&&null===v.alternate&&t(i,d),o=a(v,o,g),null===c?u=v:c.sibling=v,c=v,d=h}if(g===s.length)return n(i,d),u;if(null===d){for(;g<s.length;g++)null!==(d=p(i,s[g],l))&&(o=a(d,o,g),null===c?u=d:c.sibling=d,c=d);return u}for(d=r(i,d);g<s.length;g++)null!==(h=m(d,i,g,s[g],l))&&(e&&null!==h.alternate&&d.delete(null===h.key?g:h.key),o=a(h,o,g),null===c?u=h:c.sibling=h,c=h);return e&&d.forEach((function(e){return t(i,e)})),u}function h(i,s,l,u){var c=q(l);if("function"!=typeof c)throw Error(o(150));if(null==(l=c.call(l)))throw Error(o(151));for(var d=c=null,g=s,h=s=0,v=null,b=l.next();null!==g&&!b.done;h++,b=l.next()){g.index>h?(v=g,g=null):v=g.sibling;var y=f(i,g,b.value,u);if(null===y){null===g&&(g=v);break}e&&g&&null===y.alternate&&t(i,g),s=a(y,s,h),null===d?c=y:d.sibling=y,d=y,g=v}if(b.done)return n(i,g),c;if(null===g){for(;!b.done;h++,b=l.next())null!==(b=p(i,b.value,u))&&(s=a(b,s,h),null===d?c=b:d.sibling=b,d=b);return c}for(g=r(i,g);!b.done;h++,b=l.next())null!==(b=m(g,i,h,b.value,u))&&(e&&null!==b.alternate&&g.delete(null===b.key?h:b.key),s=a(b,s,h),null===d?c=b:d.sibling=b,d=b);return e&&g.forEach((function(e){return t(i,e)})),c}return function(e,r,a,l){var u="object"==typeof a&&null!==a&&a.type===x&&null===a.key;u&&(a=a.props.children);var c="object"==typeof a&&null!==a;if(c)switch(a.$$typeof){case S:e:{for(c=a.key,u=r;null!==u;){if(u.key===c){if(7===u.tag){if(a.type===x){n(e,u.sibling),(r=i(u,a.props.children)).return=e,e=r;break e}}else if(u.elementType===a.type){n(e,u.sibling),(r=i(u,a.props)).ref=Sa(e,u,a),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}a.type===x?((r=Zl(a.props.children,e.mode,l,a.key)).return=e,e=r):((l=Vl(a.type,a.key,a.props,null,e.mode,l)).ref=Sa(e,r,a),l.return=e,e=l)}return s(e);case E:e:{for(u=a.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===a.containerInfo&&r.stateNode.implementation===a.implementation){n(e,r.sibling),(r=i(r,a.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Yl(a,e.mode,l)).return=e,e=r}return s(e)}if("string"==typeof a||"number"==typeof a)return a=""+a,null!==r&&6===r.tag?(n(e,r.sibling),(r=i(r,a)).return=e,e=r):(n(e,r),(r=Kl(a,e.mode,l)).return=e,e=r),s(e);if(ka(a))return g(e,r,a,l);if(q(a))return h(e,r,a,l);if(c&&Ea(e,a),void 0===a&&!u)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(o(152,V(e.type)||"Component"))}return n(e,r)}}var _a=xa(!0),Oa=xa(!1),Pa={},Ca=li(Pa),Ta=li(Pa),Ia=li(Pa);function Aa(e){if(e===Pa)throw Error(o(174));return e}function La(e,t){switch(ci(Ia,t),ci(Ta,e),ci(Ca,Pa),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:fe(null,"");break;default:t=fe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ui(Ca),ci(Ca,t)}function Ra(){ui(Ca),ui(Ta),ui(Ia)}function Na(e){Aa(Ia.current);var t=Aa(Ca.current),n=fe(t,e.type);t!==n&&(ci(Ta,e),ci(Ca,n))}function ja(e){Ta.current===e&&(ui(Ca),ui(Ta))}var Da=li(0);function Ma(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Fa=null,Ba=null,za=!1;function Ua(e,t){var n=Hl(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function qa(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function $a(e){if(za){var t=Ba;if(t){var n=t;if(!qa(e,t)){if(!(t=Vr(n.nextSibling))||!qa(e,t))return e.flags=-1025&e.flags|2,za=!1,void(Fa=e);Ua(Fa,n)}Fa=e,Ba=Vr(t.firstChild)}else e.flags=-1025&e.flags|2,za=!1,Fa=e}}function Ha(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Fa=e}function Ga(e){if(e!==Fa)return!1;if(!za)return Ha(e),za=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!$r(t,e.memoizedProps))for(t=Ba;t;)Ua(e,t),t=Vr(t.nextSibling);if(Ha(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(o(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){Ba=Vr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}Ba=null}}else Ba=Fa?Vr(e.stateNode.nextSibling):null;return!0}function Qa(){Ba=Fa=null,za=!1}var Va=[];function Za(){for(var e=0;e<Va.length;e++)Va[e]._workInProgressVersionPrimary=null;Va.length=0}var Wa=k.ReactCurrentDispatcher,Ka=k.ReactCurrentBatchConfig,Ya=0,Xa=null,Ja=null,eo=null,to=!1,no=!1;function ro(){throw Error(o(321))}function io(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ur(e[n],t[n]))return!1;return!0}function ao(e,t,n,r,i,a){if(Ya=a,Xa=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Wa.current=null===e||null===e.memoizedState?Lo:Ro,e=n(r,i),no){a=0;do{if(no=!1,!(25>a))throw Error(o(301));a+=1,eo=Ja=null,t.updateQueue=null,Wa.current=No,e=n(r,i)}while(no)}if(Wa.current=Ao,t=null!==Ja&&null!==Ja.next,Ya=0,eo=Ja=Xa=null,to=!1,t)throw Error(o(300));return e}function oo(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===eo?Xa.memoizedState=eo=e:eo=eo.next=e,eo}function so(){if(null===Ja){var e=Xa.alternate;e=null!==e?e.memoizedState:null}else e=Ja.next;var t=null===eo?Xa.memoizedState:eo.next;if(null!==t)eo=t,Ja=e;else{if(null===e)throw Error(o(310));e={memoizedState:(Ja=e).memoizedState,baseState:Ja.baseState,baseQueue:Ja.baseQueue,queue:Ja.queue,next:null},null===eo?Xa.memoizedState=eo=e:eo=eo.next=e}return eo}function lo(e,t){return"function"==typeof t?t(e):t}function uo(e){var t=so(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=Ja,i=r.baseQueue,a=n.pending;if(null!==a){if(null!==i){var s=i.next;i.next=a.next,a.next=s}r.baseQueue=i=a,n.pending=null}if(null!==i){i=i.next,r=r.baseState;var l=s=a=null,u=i;do{var c=u.lane;if((Ya&c)===c)null!==l&&(l=l.next={lane:0,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),r=u.eagerReducer===e?u.eagerState:e(r,u.action);else{var d={lane:c,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null};null===l?(s=l=d,a=r):l=l.next=d,Xa.lanes|=c,Us|=c}u=u.next}while(null!==u&&u!==i);null===l?a=r:l.next=s,ur(r,t.memoizedState)||(Do=!0),t.memoizedState=r,t.baseState=a,t.baseQueue=l,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function co(e){var t=so(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=n.dispatch,i=n.pending,a=t.memoizedState;if(null!==i){n.pending=null;var s=i=i.next;do{a=e(a,s.action),s=s.next}while(s!==i);ur(a,t.memoizedState)||(Do=!0),t.memoizedState=a,null===t.baseQueue&&(t.baseState=a),n.lastRenderedState=a}return[a,r]}function po(e,t,n){var r=t._getVersion;r=r(t._source);var i=t._workInProgressVersionPrimary;if(null!==i?e=i===r:(e=e.mutableReadLanes,(e=(Ya&e)===e)&&(t._workInProgressVersionPrimary=r,Va.push(t))),e)return n(t._source);throw Va.push(t),Error(o(350))}function fo(e,t,n,r){var i=Rs;if(null===i)throw Error(o(349));var a=t._getVersion,s=a(t._source),l=Wa.current,u=l.useState((function(){return po(i,t,n)})),c=u[1],d=u[0];u=eo;var p=e.memoizedState,f=p.refs,m=f.getSnapshot,g=p.source;p=p.subscribe;var h=Xa;return e.memoizedState={refs:f,source:t,subscribe:r},l.useEffect((function(){f.getSnapshot=n,f.setSnapshot=c;var e=a(t._source);if(!ur(s,e)){e=n(t._source),ur(d,e)||(c(e),e=fl(h),i.mutableReadLanes|=e&i.pendingLanes),e=i.mutableReadLanes,i.entangledLanes|=e;for(var r=i.entanglements,o=e;0<o;){var l=31-$t(o),u=1<<l;r[l]|=e,o&=~u}}}),[n,t,r]),l.useEffect((function(){return r(t._source,(function(){var e=f.getSnapshot,n=f.setSnapshot;try{n(e(t._source));var r=fl(h);i.mutableReadLanes|=r&i.pendingLanes}catch(a){n((function(){throw a}))}}))}),[t,r]),ur(m,n)&&ur(g,t)&&ur(p,r)||((e={pending:null,dispatch:null,lastRenderedReducer:lo,lastRenderedState:d}).dispatch=c=Io.bind(null,Xa,e),u.queue=e,u.baseQueue=null,d=po(i,t,n),u.memoizedState=u.baseState=d),d}function mo(e,t,n){return fo(so(),e,t,n)}function go(e){var t=oo();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:lo,lastRenderedState:e}).dispatch=Io.bind(null,Xa,e),[t.memoizedState,e]}function ho(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Xa.updateQueue)?(t={lastEffect:null},Xa.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function vo(e){return e={current:e},oo().memoizedState=e}function bo(){return so().memoizedState}function yo(e,t,n,r){var i=oo();Xa.flags|=e,i.memoizedState=ho(1|t,n,void 0,void 0===r?null:r)}function wo(e,t,n,r){var i=so();r=void 0===r?null:r;var a=void 0;if(null!==Ja){var o=Ja.memoizedState;if(a=o.destroy,null!==r&&io(r,o.deps))return void ho(t,n,a,r)}Xa.flags|=e,i.memoizedState=ho(1|t,n,a,r)}function ko(e,t){return yo(516,4,e,t)}function So(e,t){return wo(516,4,e,t)}function Eo(e,t){return wo(4,2,e,t)}function xo(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function _o(e,t,n){return n=null!=n?n.concat([e]):null,wo(4,2,xo.bind(null,t,e),n)}function Oo(){}function Po(e,t){var n=so();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&io(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Co(e,t){var n=so();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&io(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function To(e,t){var n=$i();Gi(98>n?98:n,(function(){e(!0)})),Gi(97<n?97:n,(function(){var n=Ka.transition;Ka.transition=1;try{e(!1),t()}finally{Ka.transition=n}}))}function Io(e,t,n){var r=pl(),i=fl(e),a={lane:i,action:n,eagerReducer:null,eagerState:null,next:null},o=t.pending;if(null===o?a.next=a:(a.next=o.next,o.next=a),t.pending=a,o=e.alternate,e===Xa||null!==o&&o===Xa)no=to=!0;else{if(0===e.lanes&&(null===o||0===o.lanes)&&null!==(o=t.lastRenderedReducer))try{var s=t.lastRenderedState,l=o(s,n);if(a.eagerReducer=o,a.eagerState=l,ur(l,s))return}catch(u){}ml(e,i,r)}}var Ao={readContext:aa,useCallback:ro,useContext:ro,useEffect:ro,useImperativeHandle:ro,useLayoutEffect:ro,useMemo:ro,useReducer:ro,useRef:ro,useState:ro,useDebugValue:ro,useDeferredValue:ro,useTransition:ro,useMutableSource:ro,useOpaqueIdentifier:ro,unstable_isNewReconciler:!1},Lo={readContext:aa,useCallback:function(e,t){return oo().memoizedState=[e,void 0===t?null:t],e},useContext:aa,useEffect:ko,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,yo(4,2,xo.bind(null,t,e),n)},useLayoutEffect:function(e,t){return yo(4,2,e,t)},useMemo:function(e,t){var n=oo();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=oo();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Io.bind(null,Xa,e),[r.memoizedState,e]},useRef:vo,useState:go,useDebugValue:Oo,useDeferredValue:function(e){var t=go(e),n=t[0],r=t[1];return ko((function(){var t=Ka.transition;Ka.transition=1;try{r(e)}finally{Ka.transition=t}}),[e]),n},useTransition:function(){var e=go(!1),t=e[0];return vo(e=To.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=oo();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},fo(r,e,t,n)},useOpaqueIdentifier:function(){if(za){var e=!1,t=function(e){return{$$typeof:j,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Wr++).toString(36))),Error(o(355))})),n=go(t)[1];return 0==(2&Xa.mode)&&(Xa.flags|=516,ho(5,(function(){n("r:"+(Wr++).toString(36))}),void 0,null)),t}return go(t="r:"+(Wr++).toString(36)),t},unstable_isNewReconciler:!1},Ro={readContext:aa,useCallback:Po,useContext:aa,useEffect:So,useImperativeHandle:_o,useLayoutEffect:Eo,useMemo:Co,useReducer:uo,useRef:bo,useState:function(){return uo(lo)},useDebugValue:Oo,useDeferredValue:function(e){var t=uo(lo),n=t[0],r=t[1];return So((function(){var t=Ka.transition;Ka.transition=1;try{r(e)}finally{Ka.transition=t}}),[e]),n},useTransition:function(){var e=uo(lo)[0];return[bo().current,e]},useMutableSource:mo,useOpaqueIdentifier:function(){return uo(lo)[0]},unstable_isNewReconciler:!1},No={readContext:aa,useCallback:Po,useContext:aa,useEffect:So,useImperativeHandle:_o,useLayoutEffect:Eo,useMemo:Co,useReducer:co,useRef:bo,useState:function(){return co(lo)},useDebugValue:Oo,useDeferredValue:function(e){var t=co(lo),n=t[0],r=t[1];return So((function(){var t=Ka.transition;Ka.transition=1;try{r(e)}finally{Ka.transition=t}}),[e]),n},useTransition:function(){var e=co(lo)[0];return[bo().current,e]},useMutableSource:mo,useOpaqueIdentifier:function(){return co(lo)[0]},unstable_isNewReconciler:!1},jo=k.ReactCurrentOwner,Do=!1;function Mo(e,t,n,r){t.child=null===e?Oa(t,null,n,r):_a(t,e.child,n,r)}function Fo(e,t,n,r,i){n=n.render;var a=t.ref;return ia(t,i),r=ao(e,t,n,r,a,i),null===e||Do?(t.flags|=1,Mo(e,t,r,i),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~i,as(e,t,i))}function Bo(e,t,n,r,i,a){if(null===e){var o=n.type;return"function"!=typeof o||Gl(o)||void 0!==o.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Vl(n.type,null,r,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,zo(e,t,o,r,i,a))}return o=e.child,0==(i&a)&&(i=o.memoizedProps,(n=null!==(n=n.compare)?n:dr)(i,r)&&e.ref===t.ref)?as(e,t,a):(t.flags|=1,(e=Ql(o,r)).ref=t.ref,e.return=t,t.child=e)}function zo(e,t,n,r,i,a){if(null!==e&&dr(e.memoizedProps,r)&&e.ref===t.ref){if(Do=!1,0==(a&i))return t.lanes=e.lanes,as(e,t,a);0!=(16384&e.flags)&&(Do=!0)}return $o(e,t,n,r,a)}function Uo(e,t,n){var r=t.pendingProps,i=r.children,a=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},Sl(t,n);else{if(0==(1073741824&n))return e=null!==a?a.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},Sl(t,e),null;t.memoizedState={baseLanes:0},Sl(t,null!==a?a.baseLanes:n)}else null!==a?(r=a.baseLanes|n,t.memoizedState=null):r=n,Sl(t,r);return Mo(e,t,i,n),t.child}function qo(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function $o(e,t,n,r,i){var a=hi(n)?mi:pi.current;return a=gi(t,a),ia(t,i),n=ao(e,t,n,r,a,i),null===e||Do?(t.flags|=1,Mo(e,t,n,i),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~i,as(e,t,i))}function Ho(e,t,n,r,i){if(hi(n)){var a=!0;wi(t)}else a=!1;if(ia(t,i),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),ba(t,n,r),wa(t,n,r,i),r=!0;else if(null===e){var o=t.stateNode,s=t.memoizedProps;o.props=s;var l=o.context,u=n.contextType;"object"==typeof u&&null!==u?u=aa(u):u=gi(t,u=hi(n)?mi:pi.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof o.getSnapshotBeforeUpdate;d||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(s!==r||l!==u)&&ya(t,o,r,u),oa=!1;var p=t.memoizedState;o.state=p,pa(t,r,o,i),l=t.memoizedState,s!==r||p!==l||fi.current||oa?("function"==typeof c&&(ga(t,n,c,r),l=t.memoizedState),(s=oa||va(t,n,s,r,p,l,u))?(d||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||("function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount()),"function"==typeof o.componentDidMount&&(t.flags|=4)):("function"==typeof o.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=l),o.props=r,o.state=l,o.context=u,r=s):("function"==typeof o.componentDidMount&&(t.flags|=4),r=!1)}else{o=t.stateNode,la(e,t),s=t.memoizedProps,u=t.type===t.elementType?s:Ki(t.type,s),o.props=u,d=t.pendingProps,p=o.context,"object"==typeof(l=n.contextType)&&null!==l?l=aa(l):l=gi(t,l=hi(n)?mi:pi.current);var f=n.getDerivedStateFromProps;(c="function"==typeof f||"function"==typeof o.getSnapshotBeforeUpdate)||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(s!==d||p!==l)&&ya(t,o,r,l),oa=!1,p=t.memoizedState,o.state=p,pa(t,r,o,i);var m=t.memoizedState;s!==d||p!==m||fi.current||oa?("function"==typeof f&&(ga(t,n,f,r),m=t.memoizedState),(u=oa||va(t,n,u,r,p,m,l))?(c||"function"!=typeof o.UNSAFE_componentWillUpdate&&"function"!=typeof o.componentWillUpdate||("function"==typeof o.componentWillUpdate&&o.componentWillUpdate(r,m,l),"function"==typeof o.UNSAFE_componentWillUpdate&&o.UNSAFE_componentWillUpdate(r,m,l)),"function"==typeof o.componentDidUpdate&&(t.flags|=4),"function"==typeof o.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof o.componentDidUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=m),o.props=r,o.state=m,o.context=l,r=u):("function"!=typeof o.componentDidUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=256),r=!1)}return Go(e,t,n,r,a,i)}function Go(e,t,n,r,i,a){qo(e,t);var o=0!=(64&t.flags);if(!r&&!o)return i&&ki(t,n,!1),as(e,t,a);r=t.stateNode,jo.current=t;var s=o&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&o?(t.child=_a(t,e.child,null,a),t.child=_a(t,null,s,a)):Mo(e,t,s,a),t.memoizedState=r.state,i&&ki(t,n,!0),t.child}function Qo(e){var t=e.stateNode;t.pendingContext?bi(0,t.pendingContext,t.pendingContext!==t.context):t.context&&bi(0,t.context,!1),La(e,t.containerInfo)}var Vo,Zo,Wo,Ko,Yo={dehydrated:null,retryLane:0};function Xo(e,t,n){var r,i=t.pendingProps,a=Da.current,o=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&a)),r?(o=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===i.fallback||!0===i.unstable_avoidThisFallback||(a|=1),ci(Da,1&a),null===e?(void 0!==i.fallback&&$a(t),e=i.children,a=i.fallback,o?(e=Jo(t,e,a,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Yo,e):"number"==typeof i.unstable_expectedLoadTime?(e=Jo(t,e,a,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Yo,t.lanes=33554432,e):((n=Wl({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,o?(i=ts(e,t,i.children,i.fallback,n),o=t.child,a=e.child.memoizedState,o.memoizedState=null===a?{baseLanes:n}:{baseLanes:a.baseLanes|n},o.childLanes=e.childLanes&~n,t.memoizedState=Yo,i):(n=es(e,t,i.children,n),t.memoizedState=null,n))}function Jo(e,t,n,r){var i=e.mode,a=e.child;return t={mode:"hidden",children:t},0==(2&i)&&null!==a?(a.childLanes=0,a.pendingProps=t):a=Wl(t,i,0,null),n=Zl(n,i,r,null),a.return=e,n.return=e,a.sibling=n,e.child=a,n}function es(e,t,n,r){var i=e.child;return e=i.sibling,n=Ql(i,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function ts(e,t,n,r,i){var a=t.mode,o=e.child;e=o.sibling;var s={mode:"hidden",children:n};return 0==(2&a)&&t.child!==o?((n=t.child).childLanes=0,n.pendingProps=s,null!==(o=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=o,o.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Ql(o,s),null!==e?r=Ql(e,r):(r=Zl(r,a,i,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function ns(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ra(e.return,t)}function rs(e,t,n,r,i,a){var o=e.memoizedState;null===o?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:i,lastEffect:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=i,o.lastEffect=a)}function is(e,t,n){var r=t.pendingProps,i=r.revealOrder,a=r.tail;if(Mo(e,t,r.children,n),0!=(2&(r=Da.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&ns(e,n);else if(19===e.tag)ns(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ci(Da,r),0==(2&t.mode))t.memoizedState=null;else switch(i){case"forwards":for(n=t.child,i=null;null!==n;)null!==(e=n.alternate)&&null===Ma(e)&&(i=n),n=n.sibling;null===(n=i)?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),rs(t,!1,i,n,a,t.lastEffect);break;case"backwards":for(n=null,i=t.child,t.child=null;null!==i;){if(null!==(e=i.alternate)&&null===Ma(e)){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}rs(t,!0,n,null,a,t.lastEffect);break;case"together":rs(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function as(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Us|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(o(153));if(null!==t.child){for(n=Ql(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Ql(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function os(e,t){if(!za)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ss(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return hi(t.type)&&vi(),null;case 3:return Ra(),ui(fi),ui(pi),Za(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Ga(t)?t.flags|=4:r.hydrate||(t.flags|=256)),Zo(t),null;case 5:ja(t);var a=Aa(Ia.current);if(n=t.type,null!==e&&null!=t.stateNode)Wo(e,t,n,r,a),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(o(166));return null}if(e=Aa(Ca.current),Ga(t)){r=t.stateNode,n=t.type;var s=t.memoizedProps;switch(r[Yr]=t,r[Xr]=s,n){case"dialog":Tr("cancel",r),Tr("close",r);break;case"iframe":case"object":case"embed":Tr("load",r);break;case"video":case"audio":for(e=0;e<_r.length;e++)Tr(_r[e],r);break;case"source":Tr("error",r);break;case"img":case"image":case"link":Tr("error",r),Tr("load",r);break;case"details":Tr("toggle",r);break;case"input":ee(r,s),Tr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!s.multiple},Tr("invalid",r);break;case"textarea":le(r,s),Tr("invalid",r)}for(var u in Ee(n,s),e=null,s)s.hasOwnProperty(u)&&(a=s[u],"children"===u?"string"==typeof a?r.textContent!==a&&(e=["children",a]):"number"==typeof a&&r.textContent!==""+a&&(e=["children",""+a]):l.hasOwnProperty(u)&&null!=a&&"onScroll"===u&&Tr("scroll",r));switch(n){case"input":K(r),re(r,s,!0);break;case"textarea":K(r),ce(r);break;case"select":case"option":break;default:"function"==typeof s.onClick&&(r.onclick=Br)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(u=9===a.nodeType?a:a.ownerDocument,e===de.html&&(e=pe(n)),e===de.html?"script"===n?((e=u.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),"select"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[Yr]=t,e[Xr]=r,Vo(e,t,!1,!1),t.stateNode=e,u=xe(n,r),n){case"dialog":Tr("cancel",e),Tr("close",e),a=r;break;case"iframe":case"object":case"embed":Tr("load",e),a=r;break;case"video":case"audio":for(a=0;a<_r.length;a++)Tr(_r[a],e);a=r;break;case"source":Tr("error",e),a=r;break;case"img":case"image":case"link":Tr("error",e),Tr("load",e),a=r;break;case"details":Tr("toggle",e),a=r;break;case"input":ee(e,r),a=J(e,r),Tr("invalid",e);break;case"option":a=ae(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},a=i({},r,{value:void 0}),Tr("invalid",e);break;case"textarea":le(e,r),a=se(e,r),Tr("invalid",e);break;default:a=r}Ee(n,a);var c=a;for(s in c)if(c.hasOwnProperty(s)){var d=c[s];"style"===s?ke(e,d):"dangerouslySetInnerHTML"===s?null!=(d=d?d.__html:void 0)&&he(e,d):"children"===s?"string"==typeof d?("textarea"!==n||""!==d)&&ve(e,d):"number"==typeof d&&ve(e,""+d):"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&"autoFocus"!==s&&(l.hasOwnProperty(s)?null!=d&&"onScroll"===s&&Tr("scroll",e):null!=d&&w(e,s,d,u))}switch(n){case"input":K(e),re(e,r,!1);break;case"textarea":K(e),ce(e);break;case"option":null!=r.value&&e.setAttribute("value",""+Z(r.value));break;case"select":e.multiple=!!r.multiple,null!=(s=r.value)?oe(e,!!r.multiple,s,!1):null!=r.defaultValue&&oe(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof a.onClick&&(e.onclick=Br)}qr(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Ko(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(o(166));n=Aa(Ia.current),Aa(Ca.current),Ga(t)?(r=t.stateNode,n=t.memoizedProps,r[Yr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Yr]=t,t.stateNode=r)}return null;case 13:return ui(Da),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Ga(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Da.current)?0===Fs&&(Fs=3):(0!==Fs&&3!==Fs||(Fs=4),null===Rs||0==(134217727&Us)&&0==(134217727&qs)||bl(Rs,js))),(r||n)&&(t.flags|=4),null);case 4:return Ra(),Zo(t),null===e&&Ar(t.stateNode.containerInfo),null;case 10:return na(t),null;case 19:if(ui(Da),null===(r=t.memoizedState))return null;if(s=0!=(64&t.flags),null===(u=r.rendering))if(s)os(r,!1);else{if(0!==Fs||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(u=Ma(e))){for(t.flags|=64,os(r,!1),null!==(s=u.updateQueue)&&(t.updateQueue=s,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(s=n).flags&=2,s.nextEffect=null,s.firstEffect=null,s.lastEffect=null,null===(u=s.alternate)?(s.childLanes=0,s.lanes=e,s.child=null,s.memoizedProps=null,s.memoizedState=null,s.updateQueue=null,s.dependencies=null,s.stateNode=null):(s.childLanes=u.childLanes,s.lanes=u.lanes,s.child=u.child,s.memoizedProps=u.memoizedProps,s.memoizedState=u.memoizedState,s.updateQueue=u.updateQueue,s.type=u.type,e=u.dependencies,s.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ci(Da,1&Da.current|2),t.child}e=e.sibling}null!==r.tail&&qi()>Qs&&(t.flags|=64,s=!0,os(r,!1),t.lanes=33554432)}else{if(!s)if(null!==(e=Ma(u))){if(t.flags|=64,s=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),os(r,!0),null===r.tail&&"hidden"===r.tailMode&&!u.alternate&&!za)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*qi()-r.renderingStartTime>Qs&&1073741824!==n&&(t.flags|=64,s=!0,os(r,!1),t.lanes=33554432);r.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=r.last)?n.sibling=u:t.child=u,r.last=u)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=qi(),n.sibling=null,t=Da.current,ci(Da,s?1&t|2:1&t),n):null;case 23:case 24:return El(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(o(156,t.tag))}function ls(e){switch(e.tag){case 1:hi(e.type)&&vi();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Ra(),ui(fi),ui(pi),Za(),0!=(64&(t=e.flags)))throw Error(o(285));return e.flags=-4097&t|64,e;case 5:return ja(e),null;case 13:return ui(Da),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ui(Da),null;case 4:return Ra(),null;case 10:return na(e),null;case 23:case 24:return El(),null;default:return null}}function us(e,t){try{var n="",r=t;do{n+=Q(r),r=r.return}while(r);var i=n}catch(a){i="\nError generating stack: "+a.message+"\n"+a.stack}return{value:e,source:t,stack:i}}function cs(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Vo=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Zo=function(){},Wo=function(e,t,n,r){var a=e.memoizedProps;if(a!==r){e=t.stateNode,Aa(Ca.current);var o,s=null;switch(n){case"input":a=J(e,a),r=J(e,r),s=[];break;case"option":a=ae(e,a),r=ae(e,r),s=[];break;case"select":a=i({},a,{value:void 0}),r=i({},r,{value:void 0}),s=[];break;case"textarea":a=se(e,a),r=se(e,r),s=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(e.onclick=Br)}for(d in Ee(n,r),n=null,a)if(!r.hasOwnProperty(d)&&a.hasOwnProperty(d)&&null!=a[d])if("style"===d){var u=a[d];for(o in u)u.hasOwnProperty(o)&&(n||(n={}),n[o]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(l.hasOwnProperty(d)?s||(s=[]):(s=s||[]).push(d,null));for(d in r){var c=r[d];if(u=null!=a?a[d]:void 0,r.hasOwnProperty(d)&&c!==u&&(null!=c||null!=u))if("style"===d)if(u){for(o in u)!u.hasOwnProperty(o)||c&&c.hasOwnProperty(o)||(n||(n={}),n[o]="");for(o in c)c.hasOwnProperty(o)&&u[o]!==c[o]&&(n||(n={}),n[o]=c[o])}else n||(s||(s=[]),s.push(d,n)),n=c;else"dangerouslySetInnerHTML"===d?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(s=s||[]).push(d,c)):"children"===d?"string"!=typeof c&&"number"!=typeof c||(s=s||[]).push(d,""+c):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(l.hasOwnProperty(d)?(null!=c&&"onScroll"===d&&Tr("scroll",e),s||u===c||(s=[])):"object"==typeof c&&null!==c&&c.$$typeof===j?c.toString():(s=s||[]).push(d,c))}n&&(s=s||[]).push("style",n);var d=s;(t.updateQueue=d)&&(t.flags|=4)}},Ko=function(e,t,n,r){n!==r&&(t.flags|=4)};var ds="function"==typeof WeakMap?WeakMap:Map;function ps(e,t,n){(n=ua(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Ks||(Ks=!0,Ys=r),cs(0,t)},n}function fs(e,t,n){(n=ua(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var i=t.value;n.payload=function(){return cs(0,t),r(i)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Xs?Xs=new Set([this]):Xs.add(this),cs(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ms="function"==typeof WeakSet?WeakSet:Set;function gs(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zl(e,n)}else t.current=null}function hs(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ki(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Qr(t.stateNode.containerInfo))}throw Error(o(163))}function vs(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var i=e;r=i.next,0!=(4&(i=i.tag))&&0!=(1&i)&&(Ml(n,e),Dl(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Ki(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&fa(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}fa(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&qr(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&kt(n)))))}throw Error(o(163))}function bs(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var i=n.memoizedProps.style;i=null!=i&&i.hasOwnProperty("display")?i.display:null,r.style.display=we("display",i)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function ys(e,t){if(Ei&&"function"==typeof Ei.onCommitFiberUnmount)try{Ei.onCommitFiberUnmount(Si,t)}catch(a){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,i=r.destroy;if(r=r.tag,void 0!==i)if(0!=(4&r))Ml(t,n);else{r=t;try{i()}catch(a){zl(r,a)}}n=n.next}while(n!==e)}break;case 1:if(gs(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(a){zl(t,a)}break;case 5:gs(t);break;case 4:_s(e,t)}}function ws(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function ks(e){return 5===e.tag||3===e.tag||4===e.tag}function Ss(e){e:{for(var t=e.return;null!==t;){if(ks(t))break e;t=t.return}throw Error(o(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(o(161))}16&n.flags&&(ve(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||ks(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?Es(e,n,t):xs(e,n,t)}function Es(e,t,n){var r=e.tag,i=5===r||6===r;if(i)e=i?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Br));else if(4!==r&&null!==(e=e.child))for(Es(e,t,n),e=e.sibling;null!==e;)Es(e,t,n),e=e.sibling}function xs(e,t,n){var r=e.tag,i=5===r||6===r;if(i)e=i?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(xs(e,t,n),e=e.sibling;null!==e;)xs(e,t,n),e=e.sibling}function _s(e,t){for(var n,r,i=t,a=!1;;){if(!a){a=i.return;e:for(;;){if(null===a)throw Error(o(160));switch(n=a.stateNode,a.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}a=a.return}a=!0}if(5===i.tag||6===i.tag){e:for(var s=e,l=i,u=l;;)if(ys(s,u),null!==u.child&&4!==u.tag)u.child.return=u,u=u.child;else{if(u===l)break e;for(;null===u.sibling;){if(null===u.return||u.return===l)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}r?(s=n,l=i.stateNode,8===s.nodeType?s.parentNode.removeChild(l):s.removeChild(l)):n.removeChild(i.stateNode)}else if(4===i.tag){if(null!==i.child){n=i.stateNode.containerInfo,r=!0,i.child.return=i,i=i.child;continue}}else if(ys(e,i),null!==i.child){i.child.return=i,i=i.child;continue}if(i===t)break;for(;null===i.sibling;){if(null===i.return||i.return===t)return;4===(i=i.return).tag&&(a=!1)}i.sibling.return=i.return,i=i.sibling}}function Os(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var i=null!==e?e.memoizedProps:r;e=t.type;var a=t.updateQueue;if(t.updateQueue=null,null!==a){for(n[Xr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),xe(e,i),t=xe(e,r),i=0;i<a.length;i+=2){var s=a[i],l=a[i+1];"style"===s?ke(n,l):"dangerouslySetInnerHTML"===s?he(n,l):"children"===s?ve(n,l):w(n,s,l,t)}switch(e){case"input":ne(n,r);break;case"textarea":ue(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(a=r.value)?oe(n,!!r.multiple,a,!1):e!==!!r.multiple&&(null!=r.defaultValue?oe(n,!!r.multiple,r.defaultValue,!0):oe(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(o(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,kt(n.containerInfo)));case 13:return null!==t.memoizedState&&(Gs=qi(),bs(t.child,!0)),void Ps(t);case 19:return void Ps(t);case 23:case 24:return void bs(t,null!==t.memoizedState)}throw Error(o(163))}function Ps(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ms),t.forEach((function(t){var r=ql.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Cs(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Ts=Math.ceil,Is=k.ReactCurrentDispatcher,As=k.ReactCurrentOwner,Ls=0,Rs=null,Ns=null,js=0,Ds=0,Ms=li(0),Fs=0,Bs=null,zs=0,Us=0,qs=0,$s=0,Hs=null,Gs=0,Qs=1/0;function Vs(){Qs=qi()+500}var Zs,Ws=null,Ks=!1,Ys=null,Xs=null,Js=!1,el=null,tl=90,nl=[],rl=[],il=null,al=0,ol=null,sl=-1,ll=0,ul=0,cl=null,dl=!1;function pl(){return 0!=(48&Ls)?qi():-1!==sl?sl:sl=qi()}function fl(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===$i()?1:2;if(0===ll&&(ll=zs),0!==Wi.transition){0!==ul&&(ul=null!==Hs?Hs.pendingLanes:0),e=ll;var t=4186112&~ul;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=$i(),0!=(4&Ls)&&98===e?e=Bt(12,ll):e=Bt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ll),e}function ml(e,t,n){if(50<al)throw al=0,ol=null,Error(o(185));if(null===(e=gl(e,t)))return null;qt(e,t,n),e===Rs&&(qs|=t,4===Fs&&bl(e,js));var r=$i();1===t?0!=(8&Ls)&&0==(48&Ls)?yl(e):(hl(e,n),0===Ls&&(Vs(),Vi())):(0==(4&Ls)||98!==r&&99!==r||(null===il?il=new Set([e]):il.add(e)),hl(e,n)),Hs=e}function gl(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function hl(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,i=e.pingedLanes,a=e.expirationTimes,s=e.pendingLanes;0<s;){var l=31-$t(s),u=1<<l,c=a[l];if(-1===c){if(0==(u&r)||0!=(u&i)){c=t,Dt(u);var d=jt;a[l]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=u);s&=~u}if(r=Mt(e,e===Rs?js:0),t=jt,0===r)null!==n&&(n!==Di&&Oi(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Di&&Oi(n)}15===t?(n=yl.bind(null,e),null===Fi?(Fi=[n],Bi=_i(Ai,Zi)):Fi.push(n),n=Di):14===t?n=Qi(99,yl.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(o(358,e))}}(t),n=Qi(n,vl.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function vl(e){if(sl=-1,ul=ll=0,0!=(48&Ls))throw Error(o(327));var t=e.callbackNode;if(jl()&&e.callbackNode!==t)return null;var n=Mt(e,e===Rs?js:0);if(0===n)return null;var r=n,i=Ls;Ls|=16;var a=Ol();for(Rs===e&&js===r||(Vs(),xl(e,r));;)try{Tl();break}catch(l){_l(e,l)}if(ta(),Is.current=a,Ls=i,null!==Ns?r=0:(Rs=null,js=0,r=Fs),0!=(zs&qs))xl(e,0);else if(0!==r){if(2===r&&(Ls|=64,e.hydrate&&(e.hydrate=!1,Qr(e.containerInfo)),0!==(n=Ft(e))&&(r=Pl(e,n))),1===r)throw t=Bs,xl(e,0),bl(e,n),hl(e,qi()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(o(345));case 2:case 5:Ll(e);break;case 3:if(bl(e,n),(62914560&n)===n&&10<(r=Gs+500-qi())){if(0!==Mt(e,0))break;if(((i=e.suspendedLanes)&n)!==n){pl(),e.pingedLanes|=e.suspendedLanes&i;break}e.timeoutHandle=Hr(Ll.bind(null,e),r);break}Ll(e);break;case 4:if(bl(e,n),(4186112&n)===n)break;for(r=e.eventTimes,i=-1;0<n;){var s=31-$t(n);a=1<<s,(s=r[s])>i&&(i=s),n&=~a}if(n=i,10<(n=(120>(n=qi()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Ts(n/1960))-n)){e.timeoutHandle=Hr(Ll.bind(null,e),n);break}Ll(e);break;default:throw Error(o(329))}}return hl(e,qi()),e.callbackNode===t?vl.bind(null,e):null}function bl(e,t){for(t&=~$s,t&=~qs,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-$t(t),r=1<<n;e[n]=-1,t&=~r}}function yl(e){if(0!=(48&Ls))throw Error(o(327));if(jl(),e===Rs&&0!=(e.expiredLanes&js)){var t=js,n=Pl(e,t);0!=(zs&qs)&&(n=Pl(e,t=Mt(e,t)))}else n=Pl(e,t=Mt(e,0));if(0!==e.tag&&2===n&&(Ls|=64,e.hydrate&&(e.hydrate=!1,Qr(e.containerInfo)),0!==(t=Ft(e))&&(n=Pl(e,t))),1===n)throw n=Bs,xl(e,0),bl(e,t),hl(e,qi()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Ll(e),hl(e,qi()),null}function wl(e,t){var n=Ls;Ls|=1;try{return e(t)}finally{0===(Ls=n)&&(Vs(),Vi())}}function kl(e,t){var n=Ls;Ls&=-2,Ls|=8;try{return e(t)}finally{0===(Ls=n)&&(Vs(),Vi())}}function Sl(e,t){ci(Ms,Ds),Ds|=t,zs|=t}function El(){Ds=Ms.current,ui(Ms)}function xl(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Gr(n)),null!==Ns)for(n=Ns.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&vi();break;case 3:Ra(),ui(fi),ui(pi),Za();break;case 5:ja(r);break;case 4:Ra();break;case 13:case 19:ui(Da);break;case 10:na(r);break;case 23:case 24:El()}n=n.return}Rs=e,Ns=Ql(e.current,null),js=Ds=zs=t,Fs=0,Bs=null,$s=qs=Us=0}function _l(e,t){for(;;){var n=Ns;try{if(ta(),Wa.current=Ao,to){for(var r=Xa.memoizedState;null!==r;){var i=r.queue;null!==i&&(i.pending=null),r=r.next}to=!1}if(Ya=0,eo=Ja=Xa=null,no=!1,As.current=null,null===n||null===n.return){Fs=1,Bs=t,Ns=null;break}e:{var a=e,o=n.return,s=n,l=t;if(t=js,s.flags|=2048,s.firstEffect=s.lastEffect=null,null!==l&&"object"==typeof l&&"function"==typeof l.then){var u=l;if(0==(2&s.mode)){var c=s.alternate;c?(s.updateQueue=c.updateQueue,s.memoizedState=c.memoizedState,s.lanes=c.lanes):(s.updateQueue=null,s.memoizedState=null)}var d=0!=(1&Da.current),p=o;do{var f;if(f=13===p.tag){var m=p.memoizedState;if(null!==m)f=null!==m.dehydrated;else{var g=p.memoizedProps;f=void 0!==g.fallback&&(!0!==g.unstable_avoidThisFallback||!d)}}if(f){var h=p.updateQueue;if(null===h){var v=new Set;v.add(u),p.updateQueue=v}else h.add(u);if(0==(2&p.mode)){if(p.flags|=64,s.flags|=16384,s.flags&=-2981,1===s.tag)if(null===s.alternate)s.tag=17;else{var b=ua(-1,1);b.tag=2,ca(s,b)}s.lanes|=1;break e}l=void 0,s=t;var y=a.pingCache;if(null===y?(y=a.pingCache=new ds,l=new Set,y.set(u,l)):void 0===(l=y.get(u))&&(l=new Set,y.set(u,l)),!l.has(s)){l.add(s);var w=Ul.bind(null,a,u,s);u.then(w,w)}p.flags|=4096,p.lanes=t;break e}p=p.return}while(null!==p);l=Error((V(s.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Fs&&(Fs=2),l=us(l,s),p=o;do{switch(p.tag){case 3:a=l,p.flags|=4096,t&=-t,p.lanes|=t,da(p,ps(0,a,t));break e;case 1:a=l;var k=p.type,S=p.stateNode;if(0==(64&p.flags)&&("function"==typeof k.getDerivedStateFromError||null!==S&&"function"==typeof S.componentDidCatch&&(null===Xs||!Xs.has(S)))){p.flags|=4096,t&=-t,p.lanes|=t,da(p,fs(p,a,t));break e}}p=p.return}while(null!==p)}Al(n)}catch(E){t=E,Ns===n&&null!==n&&(Ns=n=n.return);continue}break}}function Ol(){var e=Is.current;return Is.current=Ao,null===e?Ao:e}function Pl(e,t){var n=Ls;Ls|=16;var r=Ol();for(Rs===e&&js===t||xl(e,t);;)try{Cl();break}catch(i){_l(e,i)}if(ta(),Ls=n,Is.current=r,null!==Ns)throw Error(o(261));return Rs=null,js=0,Fs}function Cl(){for(;null!==Ns;)Il(Ns)}function Tl(){for(;null!==Ns&&!Pi();)Il(Ns)}function Il(e){var t=Zs(e.alternate,e,Ds);e.memoizedProps=e.pendingProps,null===t?Al(e):Ns=t,As.current=null}function Al(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ss(n,t,Ds)))return void(Ns=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Ds)||0==(4&n.mode)){for(var r=0,i=n.child;null!==i;)r|=i.lanes|i.childLanes,i=i.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=ls(t)))return n.flags&=2047,void(Ns=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Ns=t);Ns=t=e}while(null!==t);0===Fs&&(Fs=5)}function Ll(e){var t=$i();return Gi(99,Rl.bind(null,e,t)),null}function Rl(e,t){do{jl()}while(null!==el);if(0!=(48&Ls))throw Error(o(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(o(177));e.callbackNode=null;var r=n.lanes|n.childLanes,i=r,a=e.pendingLanes&~i;e.pendingLanes=i,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=i,e.mutableReadLanes&=i,e.entangledLanes&=i,i=e.entanglements;for(var s=e.eventTimes,l=e.expirationTimes;0<a;){var u=31-$t(a),c=1<<u;i[u]=0,s[u]=-1,l[u]=-1,a&=~c}if(null!==il&&0==(24&r)&&il.has(e)&&il.delete(e),e===Rs&&(Ns=Rs=null,js=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(i=Ls,Ls|=32,As.current=null,zr=Zt,hr(s=gr())){if("selectionStart"in s)l={start:s.selectionStart,end:s.selectionEnd};else e:if(l=(l=s.ownerDocument)&&l.defaultView||window,(c=l.getSelection&&l.getSelection())&&0!==c.rangeCount){l=c.anchorNode,a=c.anchorOffset,u=c.focusNode,c=c.focusOffset;try{l.nodeType,u.nodeType}catch(O){l=null;break e}var d=0,p=-1,f=-1,m=0,g=0,h=s,v=null;t:for(;;){for(var b;h!==l||0!==a&&3!==h.nodeType||(p=d+a),h!==u||0!==c&&3!==h.nodeType||(f=d+c),3===h.nodeType&&(d+=h.nodeValue.length),null!==(b=h.firstChild);)v=h,h=b;for(;;){if(h===s)break t;if(v===l&&++m===a&&(p=d),v===u&&++g===c&&(f=d),null!==(b=h.nextSibling))break;v=(h=v).parentNode}h=b}l=-1===p||-1===f?null:{start:p,end:f}}else l=null;l=l||{start:0,end:0}}else l=null;Ur={focusedElem:s,selectionRange:l},Zt=!1,cl=null,dl=!1,Ws=r;do{try{Nl()}catch(O){if(null===Ws)throw Error(o(330));zl(Ws,O),Ws=Ws.nextEffect}}while(null!==Ws);cl=null,Ws=r;do{try{for(s=e;null!==Ws;){var y=Ws.flags;if(16&y&&ve(Ws.stateNode,""),128&y){var w=Ws.alternate;if(null!==w){var k=w.ref;null!==k&&("function"==typeof k?k(null):k.current=null)}}switch(1038&y){case 2:Ss(Ws),Ws.flags&=-3;break;case 6:Ss(Ws),Ws.flags&=-3,Os(Ws.alternate,Ws);break;case 1024:Ws.flags&=-1025;break;case 1028:Ws.flags&=-1025,Os(Ws.alternate,Ws);break;case 4:Os(Ws.alternate,Ws);break;case 8:_s(s,l=Ws);var S=l.alternate;ws(l),null!==S&&ws(S)}Ws=Ws.nextEffect}}catch(O){if(null===Ws)throw Error(o(330));zl(Ws,O),Ws=Ws.nextEffect}}while(null!==Ws);if(k=Ur,w=gr(),y=k.focusedElem,s=k.selectionRange,w!==y&&y&&y.ownerDocument&&mr(y.ownerDocument.documentElement,y)){null!==s&&hr(y)&&(w=s.start,void 0===(k=s.end)&&(k=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(k,y.value.length)):(k=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(k=k.getSelection(),l=y.textContent.length,S=Math.min(s.start,l),s=void 0===s.end?S:Math.min(s.end,l),!k.extend&&S>s&&(l=s,s=S,S=l),l=fr(y,S),a=fr(y,s),l&&a&&(1!==k.rangeCount||k.anchorNode!==l.node||k.anchorOffset!==l.offset||k.focusNode!==a.node||k.focusOffset!==a.offset)&&((w=w.createRange()).setStart(l.node,l.offset),k.removeAllRanges(),S>s?(k.addRange(w),k.extend(a.node,a.offset)):(w.setEnd(a.node,a.offset),k.addRange(w))))),w=[];for(k=y;k=k.parentNode;)1===k.nodeType&&w.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(k=w[y]).element.scrollLeft=k.left,k.element.scrollTop=k.top}Zt=!!zr,Ur=zr=null,e.current=n,Ws=r;do{try{for(y=e;null!==Ws;){var E=Ws.flags;if(36&E&&vs(y,Ws.alternate,Ws),128&E){w=void 0;var x=Ws.ref;if(null!==x){var _=Ws.stateNode;Ws.tag,w=_,"function"==typeof x?x(w):x.current=w}}Ws=Ws.nextEffect}}catch(O){if(null===Ws)throw Error(o(330));zl(Ws,O),Ws=Ws.nextEffect}}while(null!==Ws);Ws=null,Mi(),Ls=i}else e.current=n;if(Js)Js=!1,el=e,tl=t;else for(Ws=r;null!==Ws;)t=Ws.nextEffect,Ws.nextEffect=null,8&Ws.flags&&((E=Ws).sibling=null,E.stateNode=null),Ws=t;if(0===(r=e.pendingLanes)&&(Xs=null),1===r?e===ol?al++:(al=0,ol=e):al=0,n=n.stateNode,Ei&&"function"==typeof Ei.onCommitFiberRoot)try{Ei.onCommitFiberRoot(Si,n,void 0,64==(64&n.current.flags))}catch(O){}if(hl(e,qi()),Ks)throw Ks=!1,e=Ys,Ys=null,e;return 0!=(8&Ls)||Vi(),null}function Nl(){for(;null!==Ws;){var e=Ws.alternate;dl||null===cl||(0!=(8&Ws.flags)?Je(Ws,cl)&&(dl=!0):13===Ws.tag&&Cs(e,Ws)&&Je(Ws,cl)&&(dl=!0));var t=Ws.flags;0!=(256&t)&&hs(e,Ws),0==(512&t)||Js||(Js=!0,Qi(97,(function(){return jl(),null}))),Ws=Ws.nextEffect}}function jl(){if(90!==tl){var e=97<tl?97:tl;return tl=90,Gi(e,Fl)}return!1}function Dl(e,t){nl.push(t,e),Js||(Js=!0,Qi(97,(function(){return jl(),null})))}function Ml(e,t){rl.push(t,e),Js||(Js=!0,Qi(97,(function(){return jl(),null})))}function Fl(){if(null===el)return!1;var e=el;if(el=null,0!=(48&Ls))throw Error(o(331));var t=Ls;Ls|=32;var n=rl;rl=[];for(var r=0;r<n.length;r+=2){var i=n[r],a=n[r+1],s=i.destroy;if(i.destroy=void 0,"function"==typeof s)try{s()}catch(u){if(null===a)throw Error(o(330));zl(a,u)}}for(n=nl,nl=[],r=0;r<n.length;r+=2){i=n[r],a=n[r+1];try{var l=i.create;i.destroy=l()}catch(u){if(null===a)throw Error(o(330));zl(a,u)}}for(l=e.current.firstEffect;null!==l;)e=l.nextEffect,l.nextEffect=null,8&l.flags&&(l.sibling=null,l.stateNode=null),l=e;return Ls=t,Vi(),!0}function Bl(e,t,n){ca(e,t=ps(0,t=us(n,t),1)),t=pl(),null!==(e=gl(e,1))&&(qt(e,1,t),hl(e,t))}function zl(e,t){if(3===e.tag)Bl(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Bl(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Xs||!Xs.has(r))){var i=fs(n,e=us(t,e),1);if(ca(n,i),i=pl(),null!==(n=gl(n,1)))qt(n,1,i),hl(n,i);else if("function"==typeof r.componentDidCatch&&(null===Xs||!Xs.has(r)))try{r.componentDidCatch(t,e)}catch(a){}break}}n=n.return}}function Ul(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=pl(),e.pingedLanes|=e.suspendedLanes&n,Rs===e&&(js&n)===n&&(4===Fs||3===Fs&&(62914560&js)===js&&500>qi()-Gs?xl(e,0):$s|=n),hl(e,t)}function ql(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===$i()?1:2:(0===ll&&(ll=zs),0===(t=zt(62914560&~ll))&&(t=4194304))),n=pl(),null!==(e=gl(e,t))&&(qt(e,t,n),hl(e,n))}function $l(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Hl(e,t,n,r){return new $l(e,t,n,r)}function Gl(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Ql(e,t){var n=e.alternate;return null===n?((n=Hl(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Vl(e,t,n,r,i,a){var s=2;if(r=e,"function"==typeof e)Gl(e)&&(s=1);else if("string"==typeof e)s=5;else e:switch(e){case x:return Zl(n.children,i,a,t);case D:s=8,i|=16;break;case _:s=8,i|=1;break;case O:return(e=Hl(12,n,t,8|i)).elementType=O,e.type=O,e.lanes=a,e;case I:return(e=Hl(13,n,t,i)).type=I,e.elementType=I,e.lanes=a,e;case A:return(e=Hl(19,n,t,i)).elementType=A,e.lanes=a,e;case M:return Wl(n,i,a,t);case F:return(e=Hl(24,n,t,i)).elementType=F,e.lanes=a,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case P:s=10;break e;case C:s=9;break e;case T:s=11;break e;case L:s=14;break e;case R:s=16,r=null;break e;case N:s=22;break e}throw Error(o(130,null==e?e:typeof e,""))}return(t=Hl(s,n,t,i)).elementType=e,t.type=r,t.lanes=a,t}function Zl(e,t,n,r){return(e=Hl(7,e,r,t)).lanes=n,e}function Wl(e,t,n,r){return(e=Hl(23,e,r,t)).elementType=M,e.lanes=n,e}function Kl(e,t,n){return(e=Hl(6,e,null,t)).lanes=n,e}function Yl(e,t,n){return(t=Hl(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Xl(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=Ut(0),this.expirationTimes=Ut(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ut(0),this.mutableSourceEagerHydrationData=null}function Jl(e,t,n,r){var i=t.current,a=pl(),s=fl(i);e:if(n){t:{if(We(n=n._reactInternals)!==n||1!==n.tag)throw Error(o(170));var l=n;do{switch(l.tag){case 3:l=l.stateNode.context;break t;case 1:if(hi(l.type)){l=l.stateNode.__reactInternalMemoizedMergedChildContext;break t}}l=l.return}while(null!==l);throw Error(o(171))}if(1===n.tag){var u=n.type;if(hi(u)){n=yi(n,u,l);break e}}n=l}else n=di;return null===t.context?t.context=n:t.pendingContext=n,(t=ua(a,s)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),ca(i,t),ml(i,s,a),s}function eu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function nu(e,t){tu(e,t),(e=e.alternate)&&tu(e,t)}function ru(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Xl(e,t,null!=n&&!0===n.hydrate),t=Hl(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,sa(t),e[Jr]=n.current,Ar(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var i=(t=r[e])._getVersion;i=i(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,i]:n.mutableSourceEagerHydrationData.push(t,i)}this._internalRoot=n}function iu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function au(e,t,n,r,i){var a=n._reactRootContainer;if(a){var o=a._internalRoot;if("function"==typeof i){var s=i;i=function(){var e=eu(o);s.call(e)}}Jl(t,o,e,i)}else{if(a=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new ru(e,0,t?{hydrate:!0}:void 0)}(n,r),o=a._internalRoot,"function"==typeof i){var l=i;i=function(){var e=eu(o);l.call(e)}}kl((function(){Jl(t,o,e,i)}))}return eu(o)}function ou(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!iu(t))throw Error(o(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:E,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Zs=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||fi.current)Do=!0;else{if(0==(n&r)){switch(Do=!1,t.tag){case 3:Qo(t),Qa();break;case 5:Na(t);break;case 1:hi(t.type)&&wi(t);break;case 4:La(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var i=t.type._context;ci(Yi,i._currentValue),i._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Xo(e,t,n):(ci(Da,1&Da.current),null!==(t=as(e,t,n))?t.sibling:null);ci(Da,1&Da.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return is(e,t,n);t.flags|=64}if(null!==(i=t.memoizedState)&&(i.rendering=null,i.tail=null,i.lastEffect=null),ci(Da,Da.current),r)break;return null;case 23:case 24:return t.lanes=0,Uo(e,t,n)}return as(e,t,n)}Do=0!=(16384&e.flags)}else Do=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,i=gi(t,pi.current),ia(t,n),i=ao(null,t,r,e,i,n),t.flags|=1,"object"==typeof i&&null!==i&&"function"==typeof i.render&&void 0===i.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,hi(r)){var a=!0;wi(t)}else a=!1;t.memoizedState=null!==i.state&&void 0!==i.state?i.state:null,sa(t);var s=r.getDerivedStateFromProps;"function"==typeof s&&ga(t,r,s,e),i.updater=ha,t.stateNode=i,i._reactInternals=t,wa(t,r,e,n),t=Go(null,t,r,!0,a,n)}else t.tag=0,Mo(null,t,i,n),t=t.child;return t;case 16:i=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,i=(a=i._init)(i._payload),t.type=i,a=t.tag=function(e){if("function"==typeof e)return Gl(e)?1:0;if(null!=e){if((e=e.$$typeof)===T)return 11;if(e===L)return 14}return 2}(i),e=Ki(i,e),a){case 0:t=$o(null,t,i,e,n);break e;case 1:t=Ho(null,t,i,e,n);break e;case 11:t=Fo(null,t,i,e,n);break e;case 14:t=Bo(null,t,i,Ki(i.type,e),r,n);break e}throw Error(o(306,i,""))}return t;case 0:return r=t.type,i=t.pendingProps,$o(e,t,r,i=t.elementType===r?i:Ki(r,i),n);case 1:return r=t.type,i=t.pendingProps,Ho(e,t,r,i=t.elementType===r?i:Ki(r,i),n);case 3:if(Qo(t),r=t.updateQueue,null===e||null===r)throw Error(o(282));if(r=t.pendingProps,i=null!==(i=t.memoizedState)?i.element:null,la(e,t),pa(t,r,null,n),(r=t.memoizedState.element)===i)Qa(),t=as(e,t,n);else{if((a=(i=t.stateNode).hydrate)&&(Ba=Vr(t.stateNode.containerInfo.firstChild),Fa=t,a=za=!0),a){if(null!=(e=i.mutableSourceEagerHydrationData))for(i=0;i<e.length;i+=2)(a=e[i])._workInProgressVersionPrimary=e[i+1],Va.push(a);for(n=Oa(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Mo(e,t,r,n),Qa();t=t.child}return t;case 5:return Na(t),null===e&&$a(t),r=t.type,i=t.pendingProps,a=null!==e?e.memoizedProps:null,s=i.children,$r(r,i)?s=null:null!==a&&$r(r,a)&&(t.flags|=16),qo(e,t),Mo(e,t,s,n),t.child;case 6:return null===e&&$a(t),null;case 13:return Xo(e,t,n);case 4:return La(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=_a(t,null,r,n):Mo(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,Fo(e,t,r,i=t.elementType===r?i:Ki(r,i),n);case 7:return Mo(e,t,t.pendingProps,n),t.child;case 8:case 12:return Mo(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,i=t.pendingProps,s=t.memoizedProps,a=i.value;var l=t.type._context;if(ci(Yi,l._currentValue),l._currentValue=a,null!==s)if(l=s.value,0===(a=ur(l,a)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(l,a):1073741823))){if(s.children===i.children&&!fi.current){t=as(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var u=l.dependencies;if(null!==u){s=l.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&a)){1===l.tag&&((c=ua(-1,n&-n)).tag=2,ca(l,c)),l.lanes|=n,null!==(c=l.alternate)&&(c.lanes|=n),ra(l.return,n),u.lanes|=n;break}c=c.next}}else s=10===l.tag&&l.type===t.type?null:l.child;if(null!==s)s.return=l;else for(s=l;null!==s;){if(s===t){s=null;break}if(null!==(l=s.sibling)){l.return=s.return,s=l;break}s=s.return}l=s}Mo(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=(a=t.pendingProps).children,ia(t,n),r=r(i=aa(i,a.unstable_observedBits)),t.flags|=1,Mo(e,t,r,n),t.child;case 14:return a=Ki(i=t.type,t.pendingProps),Bo(e,t,i,a=Ki(i.type,a),r,n);case 15:return zo(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:Ki(r,i),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,hi(r)?(e=!0,wi(t)):e=!1,ia(t,n),ba(t,r,i),wa(t,r,i,n),Go(null,t,r,!0,e,n);case 19:return is(e,t,n);case 23:case 24:return Uo(e,t,n)}throw Error(o(156,t.tag))},ru.prototype.render=function(e){Jl(e,this._internalRoot,null,null)},ru.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Jl(null,e,null,(function(){t[Jr]=null}))},et=function(e){13===e.tag&&(ml(e,4,pl()),nu(e,4))},tt=function(e){13===e.tag&&(ml(e,67108864,pl()),nu(e,67108864))},nt=function(e){if(13===e.tag){var t=pl(),n=fl(e);ml(e,n,t),nu(e,n)}},rt=function(e,t){return t()},Oe=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var i=ii(r);if(!i)throw Error(o(90));Y(r),ne(r,i)}}}break;case"textarea":ue(e,n);break;case"select":null!=(t=n.value)&&oe(e,!!n.multiple,t,!1)}},Le=wl,Re=function(e,t,n,r,i){var a=Ls;Ls|=4;try{return Gi(98,e.bind(null,t,n,r,i))}finally{0===(Ls=a)&&(Vs(),Vi())}},Ne=function(){0==(49&Ls)&&(function(){if(null!==il){var e=il;il=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,hl(e,qi())}))}Vi()}(),jl())},je=function(e,t){var n=Ls;Ls|=2;try{return e(t)}finally{0===(Ls=n)&&(Vs(),Vi())}};var su={Events:[ni,ri,ii,Ie,Ae,jl,{current:!1}]},lu={findFiberByHostInstance:ti,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},uu={bundleType:lu.bundleType,version:lu.version,rendererPackageName:lu.rendererPackageName,rendererConfig:lu.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:k.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Xe(e))?null:e.stateNode},findFiberByHostInstance:lu.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cu=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cu.isDisabled&&cu.supportsFiber)try{Si=cu.inject(uu),Ei=cu}catch(ge){}}t.hydrate=function(e,t,n){if(!iu(t))throw Error(o(200));return au(null,e,t,!0,n)},t.render=function(e,t,n){if(!iu(t))throw Error(o(200));return au(null,e,t,!1,n)}},3935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(4448)},9590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,i="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,o){if(e===o)return!0;if(e&&o&&"object"==typeof e&&"object"==typeof o){if(e.constructor!==o.constructor)return!1;var s,l,u,c;if(Array.isArray(e)){if((s=e.length)!=o.length)return!1;for(l=s;0!=l--;)if(!a(e[l],o[l]))return!1;return!0}if(n&&e instanceof Map&&o instanceof Map){if(e.size!==o.size)return!1;for(c=e.entries();!(l=c.next()).done;)if(!o.has(l.value[0]))return!1;for(c=e.entries();!(l=c.next()).done;)if(!a(l.value[1],o.get(l.value[0])))return!1;return!0}if(r&&e instanceof Set&&o instanceof Set){if(e.size!==o.size)return!1;for(c=e.entries();!(l=c.next()).done;)if(!o.has(l.value[0]))return!1;return!0}if(i&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(o)){if((s=e.length)!=o.length)return!1;for(l=s;0!=l--;)if(e[l]!==o[l])return!1;return!0}if(e.constructor===RegExp)return e.source===o.source&&e.flags===o.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof o.valueOf)return e.valueOf()===o.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof o.toString)return e.toString()===o.toString();if((s=(u=Object.keys(e)).length)!==Object.keys(o).length)return!1;for(l=s;0!=l--;)if(!Object.prototype.hasOwnProperty.call(o,u[l]))return!1;if(t&&e instanceof Element)return!1;for(l=s;0!=l--;)if(("_owner"!==u[l]&&"__v"!==u[l]&&"__o"!==u[l]||!e.$$typeof)&&!a(e[u[l]],o[u[l]]))return!1;return!0}return e!=e&&o!=o}e.exports=function(e,t){try{return a(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>G,ql:()=>J});var r=n(7294),i=n(5697),a=n.n(i),o=n(9590),s=n.n(o),l=n(1143),u=n.n(l),c=n(6774),d=n.n(c);function p(){return p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function g(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)t.indexOf(n=a[r])>=0||(i[n]=e[n]);return i}var h={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},v={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},y={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(h).map((function(e){return h[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},S=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),E=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},x=function(e){var t=E(e,h.TITLE),n=E(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=E(e,"defaultTitle");return t||r||void 0},_=function(e){return E(e,"onChangeClientState")||function(){}},O=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return p({},e,t)}),{})},P=function(e,t){return t.filter((function(e){return void 0!==e[h.BASE]})).map((function(e){return e[h.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),i=0;i<r.length;i+=1){var a=r[i].toLowerCase();if(-1!==e.indexOf(a)&&n[a])return t.concat(n)}return t}),[])},C=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var i={};n.filter((function(e){for(var n,a=Object.keys(e),o=0;o<a.length;o+=1){var s=a[o],l=s.toLowerCase();-1===t.indexOf(l)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===l&&"stylesheet"===e[l].toLowerCase()||(n=l),-1===t.indexOf(s)||"innerHTML"!==s&&"cssText"!==s&&"itemprop"!==s||(n=s)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),i[n]||(i[n]={}),!r[n][u]&&(i[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var a=Object.keys(i),o=0;o<a.length;o+=1){var s=a[o],l=p({},r[s],i[s]);r[s]=l}return e}),[]).reverse()},T=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},I=function(e){return Array.isArray(e)?e.join(""):e},A=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},L=function(e,t){var n;return p({},e,((n={})[t]=void 0,n))},R=[h.NOSCRIPT,h.SCRIPT,h.STYLE],N=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},j=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},D=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},M=function(e,t){return t.map((function(t,n){var i,a=((i={key:n})["data-rh"]=!0,i);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?a.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:a[n]=t[e]})),r.createElement(e,a)}))},F=function(e,t,n){switch(e){case h.TITLE:return{toComponent:function(){return n=t.titleAttributes,(i={key:e=t.title})["data-rh"]=!0,a=D(n,i),[r.createElement(h.TITLE,a,e)];var e,n,i,a},toString:function(){return function(e,t,n,r){var i=j(n),a=I(t);return i?"<"+e+' data-rh="true" '+i+">"+N(a,r)+"</"+e+">":"<"+e+' data-rh="true">'+N(a,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return D(t)},toString:function(){return j(t)}};default:return{toComponent:function(){return M(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var i=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var i=void 0===r[t]?t:t+'="'+N(r[t],n)+'"';return e?e+" "+i:i}),""),a=r.innerHTML||r.cssText||"",o=-1===R.indexOf(e);return t+"<"+e+' data-rh="true" '+i+(o?"/>":">"+a+"</"+e+">")}),"")}(e,t,n)}}}},B=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,i=e.htmlAttributes,a=e.noscriptTags,o=e.styleTags,s=e.title,l=void 0===s?"":s,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,i=A(e.metaTags,y),a=A(t,v),o=A(n,b);return{priorityMethods:{toComponent:function(){return[].concat(M(h.META,i.priority),M(h.LINK,a.priority),M(h.SCRIPT,o.priority))},toString:function(){return F(h.META,i.priority,r)+" "+F(h.LINK,a.priority,r)+" "+F(h.SCRIPT,o.priority,r)}},metaTags:i.default,linkTags:a.default,scriptTags:o.default}}(e);f=m.priorityMethods,c=m.linkTags,d=m.metaTags,p=m.scriptTags}return{priority:f,base:F(h.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",i,r),link:F(h.LINK,c,r),meta:F(h.META,d,r),noscript:F(h.NOSCRIPT,a,r),script:F(h.SCRIPT,p,r),style:F(h.STYLE,o,r),title:F(h.TITLE,{title:l,titleAttributes:u},r)}},z=[],U=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=B({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},q=r.createContext({}),$=a().shape({setHelmet:a().func,helmetInstances:a().shape({get:a().func,add:a().func,remove:a().func})}),H="undefined"!=typeof document,G=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new U(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement(q.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);G.canUseDOM=H,G.propTypes={context:a().shape({helmet:a().shape()}),children:a().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var Q=function(e,t){var n,r=document.head||document.querySelector(h.HEAD),i=r.querySelectorAll(e+"[data-rh]"),a=[].slice.call(i),o=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&("innerHTML"===i?r.innerHTML=t.innerHTML:"cssText"===i?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(i,void 0===t[i]?"":t[i]));r.setAttribute("data-rh","true"),a.some((function(e,t){return n=t,r.isEqualNode(e)}))?a.splice(n,1):o.push(r)})),a.forEach((function(e){return e.parentNode.removeChild(e)})),o.forEach((function(e){return r.appendChild(e)})),{oldTags:a,newTags:o}},V=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),i=r?r.split(","):[],a=[].concat(i),o=Object.keys(t),s=0;s<o.length;s+=1){var l=o[s],u=t[l]||"";n.getAttribute(l)!==u&&n.setAttribute(l,u),-1===i.indexOf(l)&&i.push(l);var c=a.indexOf(l);-1!==c&&a.splice(c,1)}for(var d=a.length-1;d>=0;d-=1)n.removeAttribute(a[d]);i.length===a.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==o.join(",")&&n.setAttribute("data-rh",o.join(","))}},Z=function(e,t){var n=e.baseTag,r=e.htmlAttributes,i=e.linkTags,a=e.metaTags,o=e.noscriptTags,s=e.onChangeClientState,l=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;V(h.BODY,e.bodyAttributes),V(h.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=I(e)),V(h.TITLE,t)}(c,d);var p={baseTag:Q(h.BASE,n),linkTags:Q(h.LINK,i),metaTags:Q(h.META,a),noscriptTags:Q(h.NOSCRIPT,o),scriptTags:Q(h.SCRIPT,l),styleTags:Q(h.STYLE,u)},f={},m={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(m[e]=p[e].oldTags)})),t&&t(),s(e,f,m)},W=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,i=null,a=(e=n.helmetInstances.get().map((function(e){var t=p({},e.props);return delete t.context,t})),{baseTag:P(["href"],e),bodyAttributes:O("bodyAttributes",e),defer:E(e,"defer"),encode:E(e,"encodeSpecialCharacters"),htmlAttributes:O("htmlAttributes",e),linkTags:C(h.LINK,["rel","href"],e),metaTags:C(h.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:C(h.NOSCRIPT,["innerHTML"],e),onChangeClientState:_(e),scriptTags:C(h.SCRIPT,["src","innerHTML"],e),styleTags:C(h.STYLE,["cssText"],e),title:x(e),titleAttributes:O("titleAttributes",e),prioritizeSeoTags:T(e,"prioritizeSeoTags")});G.canUseDOM?(t=a,W&&cancelAnimationFrame(W),t.defer?W=requestAnimationFrame((function(){Z(t,(function(){W=null}))})):(Z(t),W=null)):B&&(i=B(a)),r(i)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);K.propTypes={context:$.isRequired},K.displayName="HelmetDispatcher";var Y=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!s()(L(this.props,"helmetData"),L(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case h.SCRIPT:case h.NOSCRIPT:return{innerHTML:t};case h.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,i=e.newProps,a=e.newChildProps,o=e.nestedChildren;switch(r.type){case h.TITLE:return p({},i,((t={})[r.type]=o,t.titleAttributes=p({},a),t));case h.BODY:return p({},i,{bodyAttributes:p({},a)});case h.HTML:return p({},i,{htmlAttributes:p({},a)});default:return p({},i,((n={})[r.type]=p({},a),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach((function(t){var r;n=p({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,i={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,a=r.children,o=g(r,Y),s=Object.keys(o).reduce((function(e,t){return e[S[t]||t]=o[t],e}),{}),l=e.type;switch("symbol"==typeof l?l=l.toString():n.warnOnInvalidChildren(e,a),l){case h.FRAGMENT:t=n.mapChildrenToProps(a,t);break;case h.LINK:case h.META:case h.NOSCRIPT:case h.SCRIPT:case h.STYLE:i=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:i,newChildProps:s,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:s,nestedChildren:a})}}})),this.mapArrayTypeChildrenToProps(i,t)},n.render=function(){var e=this.props,t=e.children,n=g(e,X),i=p({},n),a=n.helmetData;return t&&(i=this.mapChildrenToProps(t,i)),!a||a instanceof U||(a=new U(a.context,a.instances)),a?r.createElement(K,p({},i,{context:a.value,helmetData:void 0})):r.createElement(q.Consumer,null,(function(e){return r.createElement(K,p({},i,{context:e}))}))},t}(r.Component);J.propTypes={base:a().object,bodyAttributes:a().object,children:a().oneOfType([a().arrayOf(a().node),a().node]),defaultTitle:a().string,defer:a().bool,encodeSpecialCharacters:a().bool,htmlAttributes:a().object,link:a().arrayOf(a().object),meta:a().arrayOf(a().object),noscript:a().arrayOf(a().object),onChangeClientState:a().func,script:a().arrayOf(a().object),style:a().arrayOf(a().object),title:a().string,titleAttributes:a().object,titleTemplate:a().string,prioritizeSeoTags:a().bool,helmetData:a().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},9921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,i=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,o=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,g=n?Symbol.for("react.memo"):60115,h=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case a:case s:case o:case f:return e;default:switch(e=e&&e.$$typeof){case u:case p:case h:case g:case l:return e;default:return t}}case i:return t}}}function S(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=l,t.Element=r,t.ForwardRef=p,t.Fragment=a,t.Lazy=h,t.Memo=g,t.Portal=i,t.Profiler=s,t.StrictMode=o,t.Suspense=f,t.isAsyncMode=function(e){return S(e)||k(e)===c},t.isConcurrentMode=S,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===l},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===p},t.isFragment=function(e){return k(e)===a},t.isLazy=function(e){return k(e)===h},t.isMemo=function(e){return k(e)===g},t.isPortal=function(e){return k(e)===i},t.isProfiler=function(e){return k(e)===s},t.isStrictMode=function(e){return k(e)===o},t.isSuspense=function(e){return k(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===d||e===s||e===o||e===f||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===h||e.$$typeof===g||e.$$typeof===l||e.$$typeof===u||e.$$typeof===p||e.$$typeof===b||e.$$typeof===y||e.$$typeof===w||e.$$typeof===v)},t.typeOf=k},9864:(e,t,n)=>{"use strict";e.exports=n(9921)},8356:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function i(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function a(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(){return o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}var s=n(7294),l=n(5697),u=[],c=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function p(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var i=d(e[r]);i.loading?t.loading=!0:(t.loaded[r]=i.loaded,t.error=i.error),n.push(i.promise),i.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function f(e,t){return s.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=o({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),g=null;function h(){return g||(g=e(m.loader)),g.promise}return u.push(h),"function"==typeof m.webpack&&c.push((function(){if((0,m.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return h()})),p=d=function(t){function n(n){var r;return a(i(i(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),g=e(m.loader),r._loadModule()})),h(),r.state={error:g.error,pastDelay:!1,timedOut:!1,loading:g.loading,loaded:g.loaded},r}r(n,t),n.preload=function(){return h()};var o=n.prototype;return o.UNSAFE_componentWillMount=function(){this._loadModule()},o.componentDidMount=function(){this._mounted=!0},o._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),g.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:g.error,loaded:g.loaded,loading:g.loading}),e._clearTimeouts()};g.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},o.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},o._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},o.render=function(){return this.state.loading||this.state.error?s.createElement(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(s.Component),a(d,"contextTypes",{loadable:l.shape({report:l.func.isRequired})}),p}function g(e){return m(d,e)}g.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(p,e)};var h=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return s.Children.only(this.props.children)},t}(s.Component);function v(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return v(e)}))}a(h,"propTypes",{report:l.func.isRequired}),a(h,"childContextTypes",{loadable:l.shape({report:l.func.isRequired}).isRequired}),g.Capture=h,g.preloadAll=function(){return new Promise((function(e,t){v(u).then(e,t)}))},g.preloadReady=function(){return new Promise((function(e,t){v(c).then(e,e)}))},e.exports=g},8790:(e,t,n)=>{"use strict";n.d(t,{H:()=>s,f:()=>o});var r=n(6550),i=n(7462),a=n(7294);function o(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var i=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return i&&(n.push({route:e,match:i}),e.routes&&o(e.routes,t,n)),i})),n}function s(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?a.createElement(r.rs,n,e.map((function(e,n){return a.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,i.Z)({},n,{},t,{route:e})):a.createElement(e.component,(0,i.Z)({},n,t,{route:e}))}})}))):null}},3727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>y,VK:()=>c,rU:()=>h});var r=n(6550),i=n(5068),a=n(7294),o=n(9318),s=n(7462),l=n(3366),u=n(8776),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,o.lX)(t.props),t}return(0,i.Z)(t,e),t.prototype.render=function(){return a.createElement(r.F0,{history:this.history,children:this.props.children})},t}(a.Component);a.Component;var d=function(e,t){return"function"==typeof e?e(t):e},p=function(e,t){return"string"==typeof e?(0,o.ob)(e,null,null,t):e},f=function(e){return e},m=a.forwardRef;void 0===m&&(m=f);var g=m((function(e,t){var n=e.innerRef,r=e.navigate,i=e.onClick,o=(0,l.Z)(e,["innerRef","navigate","onClick"]),u=o.target,c=(0,s.Z)({},o,{onClick:function(e){try{i&&i(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=f!==m&&t||n,a.createElement("a",c)}));var h=m((function(e,t){var n=e.component,i=void 0===n?g:n,c=e.replace,h=e.to,v=e.innerRef,b=(0,l.Z)(e,["component","replace","to","innerRef"]);return a.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=e.history,r=p(d(h,e.location),e.location),l=r?n.createHref(r):"",g=(0,s.Z)({},b,{href:l,navigate:function(){var t=d(h,e.location),r=(0,o.Ep)(e.location)===(0,o.Ep)(p(t));(c||r?n.replace:n.push)(t)}});return f!==m?g.ref=t||v:g.innerRef=v,a.createElement(i,g)}))})),v=function(e){return e},b=a.forwardRef;void 0===b&&(b=v);var y=b((function(e,t){var n=e["aria-current"],i=void 0===n?"page":n,o=e.activeClassName,c=void 0===o?"active":o,f=e.activeStyle,m=e.className,g=e.exact,y=e.isActive,w=e.location,k=e.sensitive,S=e.strict,E=e.style,x=e.to,_=e.innerRef,O=(0,l.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return a.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,o=p(d(x,n),n),l=o.pathname,P=l&&l.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),C=P?(0,r.LX)(n.pathname,{path:P,exact:g,sensitive:k,strict:S}):null,T=!!(y?y(C,n):C),I="function"==typeof m?m(T):m,A="function"==typeof E?E(T):E;T&&(I=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(I,c),A=(0,s.Z)({},A,f));var L=(0,s.Z)({"aria-current":T&&i||null,className:I,style:A,to:o},O);return v!==b?L.ref=t||_:L.innerRef=_,a.createElement(h,L)}))}))},6550:(e,t,n)=>{"use strict";n.d(t,{AW:()=>x,F0:()=>y,LX:()=>E,TH:()=>R,k6:()=>L,rs:()=>I,s6:()=>b});var r=n(5068),i=n(7294),a=n(5697),o=n.n(a),s=n(9318),l=n(8776),u=n(7462),c=n(9658),d=n.n(c),p=(n(9864),n(3366)),f=(n(8679),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var g=i.createContext||function(e,t){var n,a,s="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[e]||0)+1}()+"__",l=function(e){function n(){for(var t,n,r,i=arguments.length,a=new Array(i),o=0;o<i;o++)a[o]=arguments[o];return(t=e.call.apply(e,[this].concat(a))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.Z)(n,e);var i=n.prototype;return i.getChildContext=function(){var e;return(e={})[s]=this.emitter,e},i.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,i=e.value;((a=r)===(o=i)?0!==a||1/a==1/o:a!=a&&o!=o)?n=0:(n="function"==typeof t?t(r,i):f,0!==(n|=0)&&this.emitter.set(e.value,n))}var a,o},i.render=function(){return this.props.children},n}(i.Component);l.childContextTypes=((n={})[s]=o().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var i=n.prototype;return i.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?f:t},i.componentDidMount=function(){this.context[s]&&this.context[s].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?f:e},i.componentWillUnmount=function(){this.context[s]&&this.context[s].off(this.onUpdate)},i.getValue=function(){return this.context[s]?this.context[s].get():e},i.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(i.Component);return u.contextTypes=((a={})[s]=o().object,a),{Provider:l,Consumer:u}},h=function(e){var t=g();return t.displayName=e,t},v=h("Router-History"),b=h("Router"),y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return i.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},i.createElement(v.Provider,{children:this.props.children||null,value:this.props.history}))},t}(i.Component);i.Component;i.Component;var w={},k=1e4,S=0;function E(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,i=n.exact,a=void 0!==i&&i,o=n.strict,s=void 0!==o&&o,l=n.sensitive,u=void 0!==l&&l;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var i=[],a={regexp:d()(e,i,t),keys:i};return S<k&&(r[e]=a,S++),a}(n,{end:a,strict:s,sensitive:u}),i=r.regexp,o=r.keys,l=i.exec(e);if(!l)return null;var c=l[0],p=l.slice(1),f=e===c;return a&&!f?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:f,params:o.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var x=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return i.createElement(b.Consumer,null,(function(t){t||(0,l.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?E(n.pathname,e.props):t.match,a=(0,u.Z)({},t,{location:n,match:r}),o=e.props,s=o.children,c=o.component,d=o.render;return Array.isArray(s)&&function(e){return 0===i.Children.count(e)}(s)&&(s=null),i.createElement(b.Provider,{value:a},a.match?s?"function"==typeof s?s(a):s:c?i.createElement(c,a):d?d(a):null:"function"==typeof s?s(a):null)}))},t}(i.Component);function _(e){return"/"===e.charAt(0)?e:"/"+e}function O(e,t){if(!e)return t;var n=_(e);return 0!==t.pathname.indexOf(n)?t:(0,u.Z)({},t,{pathname:t.pathname.substr(n.length)})}function P(e){return"string"==typeof e?e:(0,s.Ep)(e)}function C(e){return function(){(0,l.Z)(!1)}}function T(){}i.Component;var I=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return i.createElement(b.Consumer,null,(function(t){t||(0,l.Z)(!1);var n,r,a=e.props.location||t.location;return i.Children.forEach(e.props.children,(function(e){if(null==r&&i.isValidElement(e)){n=e;var o=e.props.path||e.props.from;r=o?E(a.pathname,(0,u.Z)({},e.props,{path:o})):t.match}})),r?i.cloneElement(n,{location:a,computedMatch:r}):null}))},t}(i.Component);var A=i.useContext;function L(){return A(v)}function R(){return A(b).location}},9658:(e,t,n)=>{var r=n(5826);e.exports=f,e.exports.parse=a,e.exports.compile=function(e,t){return s(a(e,t),t)},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=p;var i=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,o=0,s="",c=t&&t.delimiter||"/";null!=(n=i.exec(e));){var d=n[0],p=n[1],f=n.index;if(s+=e.slice(o,f),o=f+d.length,p)s+=p[1];else{var m=e[o],g=n[2],h=n[3],v=n[4],b=n[5],y=n[6],w=n[7];s&&(r.push(s),s="");var k=null!=g&&null!=m&&m!==g,S="+"===y||"*"===y,E="?"===y||"*"===y,x=n[2]||c,_=v||b;r.push({name:h||a++,prefix:g||"",delimiter:x,optional:E,repeat:S,partial:k,asterisk:!!w,pattern:_?u(_):w?".*":"[^"+l(x)+"]+?"})}}return o<e.length&&(s+=e.substr(o)),s&&r.push(s),r}function o(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function s(e,t){for(var n=new Array(e.length),i=0;i<e.length;i++)"object"==typeof e[i]&&(n[i]=new RegExp("^(?:"+e[i].pattern+")$",d(t)));return function(t,i){for(var a="",s=t||{},l=(i||{}).pretty?o:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,p=s[c.name];if(null==p){if(c.optional){c.partial&&(a+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(p)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var f=0;f<p.length;f++){if(d=l(p[f]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");a+=(0===f?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):l(p),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');a+=c.prefix+d}}else a+=c}return a}}function l(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function p(e,t,n){r(t)||(n=t||n,t=[]);for(var i=(n=n||{}).strict,a=!1!==n.end,o="",s=0;s<e.length;s++){var u=e[s];if("string"==typeof u)o+=l(u);else{var p=l(u.prefix),f="(?:"+u.pattern+")";t.push(u),u.repeat&&(f+="(?:"+p+f+")*"),o+=f=u.optional?u.partial?p+"("+f+")?":"(?:"+p+"("+f+"))?":p+"("+f+")"}}var m=l(n.delimiter||"/"),g=o.slice(-m.length)===m;return i||(o=(g?o.slice(0,-m.length):o)+"(?:"+m+"(?=$))?"),o+=a?"$":i&&g?"":"(?="+m+"|$)",c(new RegExp("^"+o,d(n)),t)}function f(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],i=0;i<e.length;i++)r.push(f(e[i],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(a(e,n),t,n)}(e,t,n)}},2408:(e,t,n)=>{"use strict";var r=n(7418),i=60103,a=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var o=60109,s=60110,l=60112;t.Suspense=60113;var u=60115,c=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;i=d("react.element"),a=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),o=d("react.provider"),s=d("react.context"),l=d("react.forward_ref"),t.Suspense=d("react.suspense"),u=d("react.memo"),c=d("react.lazy")}var p="function"==typeof Symbol&&Symbol.iterator;function f(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g={};function h(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}function v(){}function b(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}h.prototype.isReactComponent={},h.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(f(85));this.updater.enqueueSetState(this,e,t,"setState")},h.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=h.prototype;var y=b.prototype=new v;y.constructor=b,r(y,h.prototype),y.isPureReactComponent=!0;var w={current:null},k=Object.prototype.hasOwnProperty,S={key:!0,ref:!0,__self:!0,__source:!0};function E(e,t,n){var r,a={},o=null,s=null;if(null!=t)for(r in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(o=""+t.key),t)k.call(t,r)&&!S.hasOwnProperty(r)&&(a[r]=t[r]);var l=arguments.length-2;if(1===l)a.children=n;else if(1<l){for(var u=Array(l),c=0;c<l;c++)u[c]=arguments[c+2];a.children=u}if(e&&e.defaultProps)for(r in l=e.defaultProps)void 0===a[r]&&(a[r]=l[r]);return{$$typeof:i,type:e,key:o,ref:s,props:a,_owner:w.current}}function x(e){return"object"==typeof e&&null!==e&&e.$$typeof===i}var _=/\/+/g;function O(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function P(e,t,n,r,o){var s=typeof e;"undefined"!==s&&"boolean"!==s||(e=null);var l=!1;if(null===e)l=!0;else switch(s){case"string":case"number":l=!0;break;case"object":switch(e.$$typeof){case i:case a:l=!0}}if(l)return o=o(l=e),e=""===r?"."+O(l,0):r,Array.isArray(o)?(n="",null!=e&&(n=e.replace(_,"$&/")+"/"),P(o,t,n,"",(function(e){return e}))):null!=o&&(x(o)&&(o=function(e,t){return{$$typeof:i,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(o,n+(!o.key||l&&l.key===o.key?"":(""+o.key).replace(_,"$&/")+"/")+e)),t.push(o)),1;if(l=0,r=""===r?".":r+":",Array.isArray(e))for(var u=0;u<e.length;u++){var c=r+O(s=e[u],u);l+=P(s,t,n,c,o)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=p&&e[p]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(s=e.next()).done;)l+=P(s=s.value,t,n,c=r+O(s,u++),o);else if("object"===s)throw t=""+e,Error(f(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return l}function C(e,t,n){if(null==e)return e;var r=[],i=0;return P(e,r,"","",(function(e){return t.call(n,e,i++)})),r}function T(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var I={current:null};function A(){var e=I.current;if(null===e)throw Error(f(321));return e}var L={ReactCurrentDispatcher:I,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:C,forEach:function(e,t,n){C(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return C(e,(function(){t++})),t},toArray:function(e){return C(e,(function(e){return e}))||[]},only:function(e){if(!x(e))throw Error(f(143));return e}},t.Component=h,t.PureComponent=b,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=L,t.cloneElement=function(e,t,n){if(null==e)throw Error(f(267,e));var a=r({},e.props),o=e.key,s=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(s=t.ref,l=w.current),void 0!==t.key&&(o=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)k.call(t,c)&&!S.hasOwnProperty(c)&&(a[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)a.children=n;else if(1<c){u=Array(c);for(var d=0;d<c;d++)u[d]=arguments[d+2];a.children=u}return{$$typeof:i,type:e.type,key:o,ref:s,props:a,_owner:l}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:s,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:o,_context:e},e.Consumer=e},t.createElement=E,t.createFactory=function(e){var t=E.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:l,render:e}},t.isValidElement=x,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:T}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return A().useCallback(e,t)},t.useContext=function(e,t){return A().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return A().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return A().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return A().useLayoutEffect(e,t)},t.useMemo=function(e,t){return A().useMemo(e,t)},t.useReducer=function(e,t,n){return A().useReducer(e,t,n)},t.useRef=function(e){return A().useRef(e)},t.useState=function(e){return A().useState(e)},t.version="17.0.2"},7294:(e,t,n)=>{"use strict";e.exports=n(2408)},53:(e,t)=>{"use strict";var n,r,i,a;if("object"==typeof performance&&"function"==typeof performance.now){var o=performance;t.unstable_now=function(){return o.now()}}else{var s=Date,l=s.now();t.unstable_now=function(){return s.now()-l}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,d=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==u?setTimeout(n,0,e):(u=e,setTimeout(d,0))},r=function(e,t){c=setTimeout(e,t)},i=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},a=t.unstable_forceFrameRate=function(){}}else{var p=window.setTimeout,f=window.clearTimeout;if("undefined"!=typeof console){var m=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof m&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var g=!1,h=null,v=-1,b=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},a=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):b=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,k=w.port2;w.port1.onmessage=function(){if(null!==h){var e=t.unstable_now();y=e+b;try{h(!0,e)?k.postMessage(null):(g=!1,h=null)}catch(n){throw k.postMessage(null),n}}else g=!1},n=function(e){h=e,g||(g=!0,k.postMessage(null))},r=function(e,n){v=p((function(){e(t.unstable_now())}),n)},i=function(){f(v),v=-1}}function S(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,i=e[r];if(!(void 0!==i&&0<_(i,t)))break e;e[r]=t,e[n]=i,n=r}}function E(e){return void 0===(e=e[0])?null:e}function x(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,i=e.length;r<i;){var a=2*(r+1)-1,o=e[a],s=a+1,l=e[s];if(void 0!==o&&0>_(o,n))void 0!==l&&0>_(l,o)?(e[r]=l,e[s]=n,r=s):(e[r]=o,e[a]=n,r=a);else{if(!(void 0!==l&&0>_(l,n)))break e;e[r]=l,e[s]=n,r=s}}}return t}return null}function _(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var O=[],P=[],C=1,T=null,I=3,A=!1,L=!1,R=!1;function N(e){for(var t=E(P);null!==t;){if(null===t.callback)x(P);else{if(!(t.startTime<=e))break;x(P),t.sortIndex=t.expirationTime,S(O,t)}t=E(P)}}function j(e){if(R=!1,N(e),!L)if(null!==E(O))L=!0,n(D);else{var t=E(P);null!==t&&r(j,t.startTime-e)}}function D(e,n){L=!1,R&&(R=!1,i()),A=!0;var a=I;try{for(N(n),T=E(O);null!==T&&(!(T.expirationTime>n)||e&&!t.unstable_shouldYield());){var o=T.callback;if("function"==typeof o){T.callback=null,I=T.priorityLevel;var s=o(T.expirationTime<=n);n=t.unstable_now(),"function"==typeof s?T.callback=s:T===E(O)&&x(O),N(n)}else x(O);T=E(O)}if(null!==T)var l=!0;else{var u=E(P);null!==u&&r(j,u.startTime-n),l=!1}return l}finally{T=null,I=a,A=!1}}var M=a;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){L||A||(L=!0,n(D))},t.unstable_getCurrentPriorityLevel=function(){return I},t.unstable_getFirstCallbackNode=function(){return E(O)},t.unstable_next=function(e){switch(I){case 1:case 2:case 3:var t=3;break;default:t=I}var n=I;I=t;try{return e()}finally{I=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=M,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=I;I=e;try{return t()}finally{I=n}},t.unstable_scheduleCallback=function(e,a,o){var s=t.unstable_now();switch("object"==typeof o&&null!==o?o="number"==typeof(o=o.delay)&&0<o?s+o:s:o=s,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:C++,callback:a,priorityLevel:e,startTime:o,expirationTime:l=o+l,sortIndex:-1},o>s?(e.sortIndex=o,S(P,e),null===E(O)&&e===E(P)&&(R?i():R=!0,r(j,o-s))):(e.sortIndex=l,S(O,e),L||A||(L=!0,n(D))),e},t.unstable_wrapCallback=function(e){var t=I;return function(){var n=I;I=t;try{return e.apply(this,arguments)}finally{I=n}}}},3840:(e,t,n)=>{"use strict";e.exports=n(53)},6774:e=>{e.exports=function(e,t,n,r){var i=n?n.call(r,e,t):void 0;if(void 0!==i)return!!i;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var a=Object.keys(e),o=Object.keys(t);if(a.length!==o.length)return!1;for(var s=Object.prototype.hasOwnProperty.bind(t),l=0;l<a.length;l++){var u=a[l];if(!s(u))return!1;var c=e[u],d=t[u];if(!1===(i=n?n.call(r,c,d,u):void 0)||void 0===i&&c!==d)return!1}return!0}},3250:(e,t,n)=>{"use strict";var r=n(7294);var i="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},a=r.useState,o=r.useEffect,s=r.useLayoutEffect,l=r.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch(r){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=a({inst:{value:n,getSnapshot:t}}),i=r[0].inst,c=r[1];return s((function(){i.value=n,i.getSnapshot=t,u(i)&&c({inst:i})}),[e,n,t]),o((function(){return u(i)&&c({inst:i}),e((function(){u(i)&&c({inst:i})}))}),[e]),l(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:c},1688:(e,t,n)=>{"use strict";e.exports=n(3250)},6809:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Credo",tagline:"Everything you need to know about the Credo ecosystem.",url:"https://credo.js.org",baseUrl:"/",onBrokenLinks:"warn",onBrokenMarkdownLinks:"warn",favicon:"img/favicon.ico",themes:["@docusaurus/theme-mermaid"],organizationName:"openwallet-foundation",projectName:"credo-ts-docs",trailingSlash:!1,markdown:{mermaid:!0},presets:[["@docusaurus/preset-classic",{docs:{path:"guides",routeBasePath:"guides",sidebarPath:"/home/runner/work/credo-ts-docs/credo-ts-docs/sidebars.js",remarkPlugins:[null],admonitions:{tag:":::",keywords:["note","tip","info","caution","danger","issuer","verifier","holder","bob","acme"]},lastVersion:"0.4",versions:{current:{label:"v0.5.x",path:"0.5",banner:"unreleased"},.4:{label:"v0.4.x"},.3:{label:"v0.3.x"}}},theme:{customCss:"/home/runner/work/credo-ts-docs/credo-ts-docs/src/css/custom.css"}}]],themeConfig:{image:"img/credo-social-preview.png",navbar:{title:"Credo Docs",logo:{alt:"Credo Logo",src:"img/credo-logo.png"},items:[{type:"docsVersionDropdown",position:"right",dropdownItemsBefore:[],dropdownItemsAfter:[]},{to:"/guides",type:"doc",docId:"index",position:"left",label:"Guides"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Guides",items:[{label:"Concepts",to:"/guides/concepts"},{label:"Tutorials",to:"/guides/tutorials"}]},{title:"Community",items:[{label:"Discord",href:"https://discord.com/channels/1022962884864643214/1179453305856991263"},{label:"Mailing List",href:"https://lists.openwallet.foundation/g/credo-project"},{label:"Working Group Call Notes",href:"https://github.com/openwallet-foundation/credo-ts/wiki/Meeting-Information"}]},{title:"Repositories",items:[{label:"Credo",href:"https://github.com/openwallet-foundation/credo-ts"},{label:"Credo Extensions",href:"https://github.com/openwallet-foundation/credo-ts-ext"},{label:"Credo Docs (this site)",href:"https://github.com/openwallet-foundation/credo-ts-docs"}]}]},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3},mermaid:{theme:{dark:"dark",light:"default"},options:{}}},plugins:[["/home/runner/work/credo-ts-docs/credo-ts-docs/node_modules/@cmfcmf/docusaurus-search-local/lib/server/index.js",{indexDocs:!0,indexDocSidebarParentCategories:3,lunr:{tokenizerSeparator:{},b:.75,k1:1.2,titleBoost:10,contentBoost:1,parentCategoriesBoost:2}}]],baseUrlIssueBanner:!0,i18n:{defaultLocale:"en",path:"i18n",locales:["en"],localeConfigs:{}},onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1}},7462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},5068:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function i(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>i})},3366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}n.d(t,{Z:()=>r})},8776:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=!0,i="Invariant failed";function a(e,t){if(!e){if(r)throw new Error(i);var n="function"==typeof t?t():t,a=n?"".concat(i,": ").concat(n):i;throw new Error(a)}}},7529:e=>{"use strict";e.exports=JSON.parse('{"cmfcmf/d-s-l.searchBar.placeholder":"Search...","cmfcmf/d-s-l.searchBar.noResults":"No results found.","cmfcmf/d-s-l.searchBar.clearButtonTitle":"Clear","cmfcmf/d-s-l.searchBar.detachedCancelButtonText":"Cancel","cmfcmf/d-s-l.searchBar.submitButtonTitle":"Submit"}')},6887:e=>{"use strict";e.exports=JSON.parse('{"/markdown-page-ff5":{"__comp":"1f391b9e","__context":{"plugin":"70f061b3"},"content":"393be207"},"/guides/0.3-769":{"__comp":"1be78505","__context":{"plugin":"e4252094"},"versionMetadata":"05113313"},"/guides/0.3-c55":{"__comp":"17896441","content":"91053f61"},"/guides/0.3/concepts-8ed":{"__comp":"17896441","content":"334d54c0"},"/guides/0.3/concepts/agents-26a":{"__comp":"17896441","content":"74ce5ee1"},"/guides/0.3/concepts/did-and-didcomm-cae":{"__comp":"17896441","content":"12357581"},"/guides/0.3/concepts/platform-and-environment-c83":{"__comp":"17896441","content":"bf52c953"},"/guides/0.3/ecosystem-6e2":{"__comp":"17896441","content":"acdd3ecd"},"/guides/0.3/extensions-89d":{"__comp":"17896441","content":"27320d50"},"/guides/0.3/extensions/push-notifications-83d":{"__comp":"17896441","content":"9436892d"},"/guides/0.3/extensions/push-notifications/setup-4e7":{"__comp":"17896441","content":"7d25e484"},"/guides/0.3/extensions/react-hooks-27a":{"__comp":"17896441","content":"69f8e48e"},"/guides/0.3/extensions/react-hooks/setup-042":{"__comp":"17896441","content":"c2afb9af"},"/guides/0.3/extensions/redux-store-17e":{"__comp":"17896441","content":"93020ce9"},"/guides/0.3/extensions/redux-store/setup-e20":{"__comp":"17896441","content":"96bb78d2"},"/guides/0.3/extensions/rest-f47":{"__comp":"17896441","content":"7138c4a2"},"/guides/0.3/extensions/rest/setup-856":{"__comp":"17896441","content":"1bb97b5b"},"/guides/0.3/getting-started-09e":{"__comp":"17896441","content":"6df87a7d"},"/guides/0.3/getting-started/installation-210":{"__comp":"17896441","content":"36fa027f"},"/guides/0.3/getting-started/installation/nodejs-d46":{"__comp":"17896441","content":"3483c478"},"/guides/0.3/getting-started/installation/nodejs/apple-arm-fbf":{"__comp":"17896441","content":"9cd8fd3e"},"/guides/0.3/getting-started/installation/nodejs/apple-intel-c05":{"__comp":"17896441","content":"4359f0b8"},"/guides/0.3/getting-started/installation/nodejs/linux-d0a":{"__comp":"17896441","content":"bd127040"},"/guides/0.3/getting-started/installation/nodejs/windows-834":{"__comp":"17896441","content":"655fc6f5"},"/guides/0.3/getting-started/installation/react-native-839":{"__comp":"17896441","content":"4ee9ed1d"},"/guides/0.3/getting-started/installation/react-native/android-550":{"__comp":"17896441","content":"0e983491"},"/guides/0.3/getting-started/installation/react-native/ios-655":{"__comp":"17896441","content":"d68982b8"},"/guides/0.3/getting-started/prerequisites-840":{"__comp":"17896441","content":"8c506fba"},"/guides/0.3/getting-started/set-up-662":{"__comp":"17896441","content":"a9c79318"},"/guides/0.3/tutorials-8f3":{"__comp":"17896441","content":"b56c3f57"},"/guides/0.3/tutorials/agent-config-16e":{"__comp":"17896441","content":"4e1c6ae4"},"/guides/0.3/tutorials/agent-config/logging-c89":{"__comp":"17896441","content":"7bb6402a"},"/guides/0.3/tutorials/create-a-connection-14a":{"__comp":"17896441","content":"d42e1e6c"},"/guides/0.3/tutorials/issue-a-credential-b7f":{"__comp":"17896441","content":"08ca7335"},"/guides/0.3/tutorials/postgres-database-nodejs-7e2":{"__comp":"17896441","content":"926eb7a7"},"/guides/0.3/tutorials/postgres-database-nodejs/linux-33b":{"__comp":"17896441","content":"07ca6c5c"},"/guides/0.3/tutorials/postgres-database-nodejs/macos-af5":{"__comp":"17896441","content":"d1089d1d"},"/guides/0.3/tutorials/postgres-database-nodejs/windows-b05":{"__comp":"17896441","content":"f3933b6b"},"/guides/0.3/updating-4bd":{"__comp":"17896441","content":"c970593d"},"/guides/0.3/updating/update-assistant-33c":{"__comp":"17896441","content":"e5f12b68"},"/guides/0.3/updating/versions/0.1-to-0.2-714":{"__comp":"17896441","content":"daf4660b"},"/guides/0.3/updating/versions/0.2-to-0.3-0d2":{"__comp":"17896441","content":"470c56a2"},"/guides/0.5-cb2":{"__comp":"1be78505","__context":{"plugin":"e4252094"},"versionMetadata":"935f2afb"},"/guides/0.5-b60":{"__comp":"17896441","content":"29b62a39"},"/guides/0.5/concepts-159":{"__comp":"17896441","content":"2003ac23"},"/guides/0.5/concepts/agents-754":{"__comp":"17896441","content":"0f95bd9e"},"/guides/0.5/concepts/did-and-didcomm-192":{"__comp":"17896441","content":"ca99fa15"},"/guides/0.5/concepts/platform-and-environment-de1":{"__comp":"17896441","content":"eeecf87c"},"/guides/0.5/ecosystem-64b":{"__comp":"17896441","content":"636a146f"},"/guides/0.5/extensions-28e":{"__comp":"17896441","content":"5d8cec60"},"/guides/0.5/extensions/push-notifications-1cf":{"__comp":"17896441","content":"95261082"},"/guides/0.5/extensions/react-hooks-f82":{"__comp":"17896441","content":"6e4808e6"},"/guides/0.5/extensions/redux-store-866":{"__comp":"17896441","content":"a69e7b9a"},"/guides/0.5/extensions/rest-bc3":{"__comp":"17896441","content":"92188087"},"/guides/0.5/features-b55":{"__comp":"17896441","content":"6414033c"},"/guides/0.5/features/aries-26b":{"__comp":"17896441","content":"514aaf1d"},"/guides/0.5/features/credentials-ef6":{"__comp":"17896441","content":"7697e6e6"},"/guides/0.5/features/dids-b9a":{"__comp":"17896441","content":"41c1fec5"},"/guides/0.5/features/openid4vc-e47":{"__comp":"17896441","content":"369c14e0"},"/guides/0.5/getting-started-701":{"__comp":"17896441","content":"dc62edf2"},"/guides/0.5/getting-started/prerequisites-b2b":{"__comp":"17896441","content":"996925d9"},"/guides/0.5/getting-started/set-up-d4e":{"__comp":"17896441","content":"2332f431"},"/guides/0.5/getting-started/set-up/anoncreds-b3a":{"__comp":"17896441","content":"da788397"},"/guides/0.5/getting-started/set-up/aries-askar-9a1":{"__comp":"17896441","content":"f800d23c"},"/guides/0.5/getting-started/set-up/cheqd-de9":{"__comp":"17896441","content":"0c824aea"},"/guides/0.5/getting-started/set-up/indy-vdr-a60":{"__comp":"17896441","content":"394d7bf2"},"/guides/0.5/tutorials-cde":{"__comp":"17896441","content":"a2a3716e"},"/guides/0.5/tutorials/agent-config-73c":{"__comp":"17896441","content":"67da112e"},"/guides/0.5/tutorials/agent-config/logging-980":{"__comp":"17896441","content":"5d1c397c"},"/guides/0.5/tutorials/cheqd-c33":{"__comp":"17896441","content":"76f8726c"},"/guides/0.5/tutorials/create-a-connection-354":{"__comp":"17896441","content":"ef7acecf"},"/guides/0.5/tutorials/issue-a-credential-491":{"__comp":"17896441","content":"bd5be9ae"},"/guides/0.5/tutorials/mediation-eec":{"__comp":"17896441","content":"60053357"},"/guides/0.5/tutorials/registering-schema-and-credential-definition-a59":{"__comp":"17896441","content":"466eb4b6"},"/guides/0.5/updating-416":{"__comp":"17896441","content":"331e6edf"},"/guides/0.5/updating/update-assistant-d63":{"__comp":"17896441","content":"32456564"},"/guides/0.5/updating/update-indy-sdk-to-askar-454":{"__comp":"17896441","content":"0ecb752f"},"/guides/0.5/updating/versions/0.1-to-0.2-0fb":{"__comp":"17896441","content":"65c86d7b"},"/guides/0.5/updating/versions/0.2-to-0.3-88f":{"__comp":"17896441","content":"365d3941"},"/guides/0.5/updating/versions/0.3-to-0.4-4cf":{"__comp":"17896441","content":"14e53ecf"},"/guides-f79":{"__comp":"1be78505","__context":{"plugin":"e4252094"},"versionMetadata":"17b50570"},"/guides-21c":{"__comp":"17896441","content":"34eb4307"},"/guides/concepts-67d":{"__comp":"17896441","content":"7d0a541a"},"/guides/concepts/agents-589":{"__comp":"17896441","content":"ece13197"},"/guides/concepts/did-and-didcomm-e8f":{"__comp":"17896441","content":"6c6797b5"},"/guides/concepts/platform-and-environment-c7f":{"__comp":"17896441","content":"e38b62c8"},"/guides/ecosystem-72b":{"__comp":"17896441","content":"1cc62cef"},"/guides/extensions-38d":{"__comp":"17896441","content":"997e3d85"},"/guides/extensions/push-notifications-090":{"__comp":"17896441","content":"bcace162"},"/guides/extensions/react-hooks-b5b":{"__comp":"17896441","content":"b1d5f389"},"/guides/extensions/redux-store-3cd":{"__comp":"17896441","content":"14973ffc"},"/guides/extensions/rest-8d9":{"__comp":"17896441","content":"207a1e16"},"/guides/getting-started-9dc":{"__comp":"17896441","content":"6d708c3d"},"/guides/getting-started/prerequisites-085":{"__comp":"17896441","content":"30ebf81b"},"/guides/getting-started/set-up-5ac":{"__comp":"17896441","content":"1c0f7eb0"},"/guides/getting-started/set-up/anoncreds-rs-c2f":{"__comp":"17896441","content":"e5a09f30"},"/guides/getting-started/set-up/aries-askar-99d":{"__comp":"17896441","content":"5a512b94"},"/guides/getting-started/set-up/cheqd-26b":{"__comp":"17896441","content":"4a99cab5"},"/guides/getting-started/set-up/indy-sdk-c87":{"__comp":"17896441","content":"0a88801c"},"/guides/getting-started/set-up/indy-sdk/linux-c90":{"__comp":"17896441","content":"d26e5579"},"/guides/getting-started/set-up/indy-sdk/macos-arm-fbc":{"__comp":"17896441","content":"ee7869b6"},"/guides/getting-started/set-up/indy-sdk/macos-intel-013":{"__comp":"17896441","content":"224ce49c"},"/guides/getting-started/set-up/indy-sdk/react-native-4a0":{"__comp":"17896441","content":"9edc454f"},"/guides/getting-started/set-up/indy-sdk/windows-de3":{"__comp":"17896441","content":"2bf743db"},"/guides/getting-started/set-up/indy-vdr-523":{"__comp":"17896441","content":"8b37bb4b"},"/guides/tutorials-765":{"__comp":"17896441","content":"6d44cf95"},"/guides/tutorials/agent-config-9f9":{"__comp":"17896441","content":"52db191f"},"/guides/tutorials/agent-config/logging-b62":{"__comp":"17896441","content":"debd89ec"},"/guides/tutorials/cheqd-f6c":{"__comp":"17896441","content":"09958099"},"/guides/tutorials/create-a-connection-382":{"__comp":"17896441","content":"ee898636"},"/guides/tutorials/indy-sdk-postgres-database-nodejs-5d0":{"__comp":"17896441","content":"a1dc5557"},"/guides/tutorials/indy-sdk-postgres-database-nodejs/linux-dc1":{"__comp":"17896441","content":"f30d32a5"},"/guides/tutorials/indy-sdk-postgres-database-nodejs/macos-651":{"__comp":"17896441","content":"7852f2cc"},"/guides/tutorials/indy-sdk-postgres-database-nodejs/windows-6d4":{"__comp":"17896441","content":"0d8c2653"},"/guides/tutorials/issue-a-credential-e6e":{"__comp":"17896441","content":"43e7938e"},"/guides/tutorials/mediation-e0b":{"__comp":"17896441","content":"862058fd"},"/guides/tutorials/registering-schema-and-credential-definition-5d1":{"__comp":"17896441","content":"c5cd793e"},"/guides/updating-914":{"__comp":"17896441","content":"232d48ef"},"/guides/updating/update-assistant-a9e":{"__comp":"17896441","content":"a690f229"},"/guides/updating/update-indy-sdk-to-askar-9b6":{"__comp":"17896441","content":"58e9d200"},"/guides/updating/versions/0.1-to-0.2-722":{"__comp":"17896441","content":"8b5bb00b"},"/guides/updating/versions/0.2-to-0.3-4a1":{"__comp":"17896441","content":"2e77271a"},"/guides/updating/versions/0.3-to-0.4-ff2":{"__comp":"17896441","content":"fd1a8f62"},"/-3b7":{"__comp":"1df93b7f","__context":{"plugin":"70f061b3"},"config":"5e9f5e1a"}}')}},e=>{e.O(0,[532],(()=>{return t=9383,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.73a00492.js.LICENSE.txt b/assets/js/main.3ea7c4b9.js.LICENSE.txt similarity index 100% rename from assets/js/main.73a00492.js.LICENSE.txt rename to assets/js/main.3ea7c4b9.js.LICENSE.txt diff --git a/assets/js/main.73a00492.js b/assets/js/main.73a00492.js deleted file mode 100644 index de33ad91..00000000 --- a/assets/js/main.73a00492.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.73a00492.js.LICENSE.txt */ -(self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),i=n(7462),a=n(8356),o=n.n(a),s=n(6887);const l={"00c1cb92":[()=>n.e(2525).then(n.bind(n,471)),"@site/guides/tutorials/indy-sdk-postgres-database-nodejs/windows.md",471],"05113313":[()=>n.e(5062).then(n.t.bind(n,6524,19)),"~docs/default/version-0-3-metadata-prop-dd4.json",6524],"06d26907":[()=>n.e(4632).then(n.bind(n,4370)),"@site/guides/getting-started/set-up/indy-sdk/windows.md",4370],"07ca6c5c":[()=>n.e(35).then(n.bind(n,6141)),"@site/versioned_docs/version-0.3/tutorials/postgres-database-nodejs/linux.md",6141],"08ca7335":[()=>Promise.all([n.e(532),n.e(7303)]).then(n.bind(n,929)),"@site/versioned_docs/version-0.3/tutorials/issue-a-credential.md",929],"09958099":[()=>n.e(2743).then(n.bind(n,2588)),"@site/versioned_docs/version-0.4/tutorials/cheqd/index.md",2588],"0a88801c":[()=>Promise.all([n.e(532),n.e(2215)]).then(n.bind(n,1824)),"@site/versioned_docs/version-0.4/getting-started/set-up/indy-sdk/index.md",1824],"0c824aea":[()=>Promise.all([n.e(532),n.e(1350)]).then(n.bind(n,7114)),"@site/guides/getting-started/set-up/cheqd/index.md",7114],"0d8c2653":[()=>n.e(4105).then(n.bind(n,3141)),"@site/versioned_docs/version-0.4/tutorials/indy-sdk-postgres-database-nodejs/windows.md",3141],"0e983491":[()=>n.e(8026).then(n.bind(n,5075)),"@site/versioned_docs/version-0.3/getting-started/installation/react-native/android.md",5075],"0ecb752f":[()=>n.e(7824).then(n.bind(n,7057)),"@site/guides/updating/update-indy-sdk-to-askar.md",7057],"0f95bd9e":[()=>n.e(7885).then(n.bind(n,6449)),"@site/guides/concepts/agents.md",6449],12357581:[()=>n.e(6657).then(n.bind(n,6511)),"@site/versioned_docs/version-0.3/concepts/did-and-didcomm.md",6511],"14973ffc":[()=>Promise.all([n.e(532),n.e(5554)]).then(n.bind(n,4814)),"@site/versioned_docs/version-0.4/extensions/redux-store.md",4814],"14e53ecf":[()=>Promise.all([n.e(532),n.e(1904)]).then(n.bind(n,3635)),"@site/guides/updating/versions/0.3-to-0.4.md",3635],17896441:[()=>Promise.all([n.e(532),n.e(1329),n.e(903),n.e(7918)]).then(n.bind(n,903)),"@theme/DocItem",903],"17b50570":[()=>n.e(9593).then(n.t.bind(n,6514,19)),"~docs/default/version-0-4-metadata-prop-a32.json",6514],"1bb97b5b":[()=>n.e(5252).then(n.bind(n,6907)),"@site/versioned_docs/version-0.3/extensions/rest/setup.md",6907],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,9963)),"@theme/DocPage",9963],"1c0f7eb0":[()=>Promise.all([n.e(532),n.e(6614)]).then(n.bind(n,3018)),"@site/versioned_docs/version-0.4/getting-started/set-up/index.md",3018],"1cc62cef":[()=>n.e(9626).then(n.bind(n,5627)),"@site/versioned_docs/version-0.4/ecosystem/index.md",5627],"1df93b7f":[()=>Promise.all([n.e(532),n.e(3237)]).then(n.bind(n,8391)),"@site/src/pages/index.tsx",8391],"1f391b9e":[()=>Promise.all([n.e(532),n.e(1329),n.e(3085)]).then(n.bind(n,4247)),"@theme/MDXPage",4247],"2003ac23":[()=>Promise.all([n.e(532),n.e(7529)]).then(n.bind(n,6314)),"@site/guides/concepts/index.md",6314],"207a1e16":[()=>n.e(6407).then(n.bind(n,4590)),"@site/versioned_docs/version-0.4/extensions/rest.md",4590],"224ce49c":[()=>n.e(8135).then(n.bind(n,7563)),"@site/versioned_docs/version-0.4/getting-started/set-up/indy-sdk/macos-intel.md",7563],"232d48ef":[()=>Promise.all([n.e(532),n.e(2959)]).then(n.bind(n,189)),"@site/versioned_docs/version-0.4/updating/index.md",189],"2332f431":[()=>Promise.all([n.e(532),n.e(82)]).then(n.bind(n,8278)),"@site/guides/getting-started/set-up/index.md",8278],"27320d50":[()=>Promise.all([n.e(532),n.e(8377)]).then(n.bind(n,7665)),"@site/versioned_docs/version-0.3/extensions/index.md",7665],"29b62a39":[()=>n.e(1498).then(n.bind(n,740)),"@site/guides/index.md",740],"2bf743db":[()=>n.e(5880).then(n.bind(n,4275)),"@site/versioned_docs/version-0.4/getting-started/set-up/indy-sdk/windows.md",4275],"2e77271a":[()=>Promise.all([n.e(532),n.e(7024)]).then(n.bind(n,7079)),"@site/versioned_docs/version-0.4/updating/versions/0.2-to-0.3.md",7079],"30ebf81b":[()=>Promise.all([n.e(532),n.e(1912)]).then(n.bind(n,2286)),"@site/versioned_docs/version-0.4/getting-started/prerequisites.md",2286],32456564:[()=>n.e(8937).then(n.bind(n,4462)),"@site/guides/updating/update-assistant.md",4462],"331e6edf":[()=>Promise.all([n.e(532),n.e(9196)]).then(n.bind(n,8856)),"@site/guides/updating/index.md",8856],"334d54c0":[()=>Promise.all([n.e(532),n.e(37)]).then(n.bind(n,1251)),"@site/versioned_docs/version-0.3/concepts/index.md",1251],"3483c478":[()=>n.e(3338).then(n.bind(n,6329)),"@site/versioned_docs/version-0.3/getting-started/installation/nodejs/index.md",6329],"34eb4307":[()=>n.e(7314).then(n.bind(n,684)),"@site/versioned_docs/version-0.4/index.md",684],"365d3941":[()=>Promise.all([n.e(532),n.e(6347)]).then(n.bind(n,8412)),"@site/guides/updating/versions/0.2-to-0.3.md",8412],"36fa027f":[()=>n.e(241).then(n.bind(n,3844)),"@site/versioned_docs/version-0.3/getting-started/installation/index.md",3844],"393be207":[()=>n.e(7414).then(n.bind(n,3123)),"@site/src/pages/markdown-page.md",3123],"394d7bf2":[()=>Promise.all([n.e(532),n.e(8368)]).then(n.bind(n,3172)),"@site/guides/getting-started/set-up/indy-vdr.md",3172],"4359f0b8":[()=>n.e(3143).then(n.bind(n,480)),"@site/versioned_docs/version-0.3/getting-started/installation/nodejs/apple-intel.md",480],"43e7938e":[()=>Promise.all([n.e(532),n.e(5846)]).then(n.bind(n,6230)),"@site/versioned_docs/version-0.4/tutorials/issue-a-credential.md",6230],"466eb4b6":[()=>n.e(4354).then(n.bind(n,5772)),"@site/guides/tutorials/registering-schema-and-credential-definition.md",5772],"470c56a2":[()=>Promise.all([n.e(532),n.e(9474)]).then(n.bind(n,8354)),"@site/versioned_docs/version-0.3/updating/versions/0.2-to-0.3.md",8354],"4a99cab5":[()=>Promise.all([n.e(532),n.e(4378)]).then(n.bind(n,2655)),"@site/versioned_docs/version-0.4/getting-started/set-up/cheqd/index.md",2655],"4da4ce16":[()=>n.e(1119).then(n.bind(n,2061)),"@site/guides/getting-started/set-up/indy-sdk/macos-arm.md",2061],"4e1c6ae4":[()=>n.e(7873).then(n.bind(n,3865)),"@site/versioned_docs/version-0.3/tutorials/agent-config/index.md",3865],"4ee9ed1d":[()=>n.e(9567).then(n.bind(n,5175)),"@site/versioned_docs/version-0.3/getting-started/installation/react-native/index.md",5175],"52db191f":[()=>n.e(6059).then(n.bind(n,7242)),"@site/versioned_docs/version-0.4/tutorials/agent-config/index.md",7242],"58e9d200":[()=>n.e(6974).then(n.bind(n,8463)),"@site/versioned_docs/version-0.4/updating/update-indy-sdk-to-askar.md",8463],"5a512b94":[()=>Promise.all([n.e(532),n.e(4602)]).then(n.bind(n,1548)),"@site/versioned_docs/version-0.4/getting-started/set-up/aries-askar.md",1548],"5d1c397c":[()=>n.e(6840).then(n.bind(n,6770)),"@site/guides/tutorials/agent-config/logging.md",6770],"5d8cec60":[()=>Promise.all([n.e(532),n.e(6751)]).then(n.bind(n,1156)),"@site/guides/extensions/index.md",1156],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"5edc3d1c":[()=>n.e(1313).then(n.bind(n,4742)),"@site/guides/tutorials/indy-sdk-postgres-database-nodejs/index.md",4742],60053357:[()=>n.e(6266).then(n.bind(n,7147)),"@site/guides/tutorials/mediation.md",7147],"636a146f":[()=>n.e(5313).then(n.bind(n,3097)),"@site/guides/ecosystem/index.md",3097],"655fc6f5":[()=>n.e(2562).then(n.bind(n,7731)),"@site/versioned_docs/version-0.3/getting-started/installation/nodejs/windows.md",7731],"65c86d7b":[()=>Promise.all([n.e(532),n.e(6295)]).then(n.bind(n,9234)),"@site/guides/updating/versions/0.1-to-0.2.md",9234],"67da112e":[()=>n.e(5666).then(n.bind(n,7625)),"@site/guides/tutorials/agent-config/index.md",7625],"69f8e48e":[()=>n.e(9047).then(n.bind(n,3474)),"@site/versioned_docs/version-0.3/extensions/react-hooks/index.md",3474],"6c6797b5":[()=>n.e(1229).then(n.bind(n,749)),"@site/versioned_docs/version-0.4/concepts/did-and-didcomm.md",749],"6d44cf95":[()=>Promise.all([n.e(532),n.e(7798)]).then(n.bind(n,160)),"@site/versioned_docs/version-0.4/tutorials/index.md",160],"6d708c3d":[()=>Promise.all([n.e(532),n.e(3666)]).then(n.bind(n,7342)),"@site/versioned_docs/version-0.4/getting-started/index.md",7342],"6df87a7d":[()=>Promise.all([n.e(532),n.e(7844)]).then(n.bind(n,4766)),"@site/versioned_docs/version-0.3/getting-started/index.md",4766],"6e4808e6":[()=>Promise.all([n.e(532),n.e(1271)]).then(n.bind(n,1752)),"@site/guides/extensions/react-hooks.md",1752],"70f061b3":[()=>n.e(3531).then(n.t.bind(n,5745,19)),"/home/runner/work/credo-ts-docs/credo-ts-docs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],"7138c4a2":[()=>n.e(6718).then(n.bind(n,8937)),"@site/versioned_docs/version-0.3/extensions/rest/index.md",8937],"74ce5ee1":[()=>n.e(1454).then(n.bind(n,4474)),"@site/versioned_docs/version-0.3/concepts/agents.md",4474],"76f8726c":[()=>n.e(8440).then(n.bind(n,708)),"@site/guides/tutorials/cheqd/index.md",708],"7852f2cc":[()=>n.e(9910).then(n.bind(n,4813)),"@site/versioned_docs/version-0.4/tutorials/indy-sdk-postgres-database-nodejs/macos.md",4813],"79d2b703":[()=>Promise.all([n.e(532),n.e(7902)]).then(n.bind(n,9875)),"@site/guides/getting-started/set-up/indy-sdk/index.md",9875],"7bb6402a":[()=>n.e(8980).then(n.bind(n,9050)),"@site/versioned_docs/version-0.3/tutorials/agent-config/logging.md",9050],"7d0a541a":[()=>Promise.all([n.e(532),n.e(397)]).then(n.bind(n,4689)),"@site/versioned_docs/version-0.4/concepts/index.md",4689],"7d25e484":[()=>Promise.all([n.e(532),n.e(6696)]).then(n.bind(n,8505)),"@site/versioned_docs/version-0.3/extensions/push-notifications/setup.md",8505],"82aa0257":[()=>n.e(9989).then(n.bind(n,7306)),"@site/guides/tutorials/indy-sdk-postgres-database-nodejs/macos.md",7306],"862058fd":[()=>n.e(8709).then(n.bind(n,8286)),"@site/versioned_docs/version-0.4/tutorials/mediation.md",8286],"8b37bb4b":[()=>Promise.all([n.e(532),n.e(4565)]).then(n.bind(n,3624)),"@site/versioned_docs/version-0.4/getting-started/set-up/indy-vdr.md",3624],"8b5bb00b":[()=>Promise.all([n.e(532),n.e(8417)]).then(n.bind(n,8610)),"@site/versioned_docs/version-0.4/updating/versions/0.1-to-0.2.md",8610],"8c506fba":[()=>n.e(8866).then(n.bind(n,7709)),"@site/versioned_docs/version-0.3/getting-started/prerequisites/index.md",7709],"91053f61":[()=>n.e(4809).then(n.bind(n,4634)),"@site/versioned_docs/version-0.3/index.md",4634],92188087:[()=>n.e(537).then(n.bind(n,4228)),"@site/guides/extensions/rest.md",4228],"926eb7a7":[()=>n.e(792).then(n.bind(n,1026)),"@site/versioned_docs/version-0.3/tutorials/postgres-database-nodejs/index.md",1026],"93020ce9":[()=>n.e(3859).then(n.bind(n,8658)),"@site/versioned_docs/version-0.3/extensions/redux-store/index.md",8658],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"9436892d":[()=>n.e(5260).then(n.bind(n,1593)),"@site/versioned_docs/version-0.3/extensions/push-notifications/index.md",1593],95261082:[()=>Promise.all([n.e(532),n.e(2086)]).then(n.bind(n,3418)),"@site/guides/extensions/push-notifications.md",3418],"96bb78d2":[()=>Promise.all([n.e(532),n.e(7988)]).then(n.bind(n,1131)),"@site/versioned_docs/version-0.3/extensions/redux-store/setup.md",1131],"996925d9":[()=>Promise.all([n.e(532),n.e(3901)]).then(n.bind(n,1089)),"@site/guides/getting-started/prerequisites.md",1089],"997e3d85":[()=>Promise.all([n.e(532),n.e(2680)]).then(n.bind(n,3583)),"@site/versioned_docs/version-0.4/extensions/index.md",3583],"9cd8fd3e":[()=>n.e(8399).then(n.bind(n,7438)),"@site/versioned_docs/version-0.3/getting-started/installation/nodejs/apple-arm.md",7438],"9edc454f":[()=>n.e(7854).then(n.bind(n,4797)),"@site/versioned_docs/version-0.4/getting-started/set-up/indy-sdk/react-native.md",4797],a1dc5557:[()=>n.e(8230).then(n.bind(n,4087)),"@site/versioned_docs/version-0.4/tutorials/indy-sdk-postgres-database-nodejs/index.md",4087],a2a3716e:[()=>Promise.all([n.e(532),n.e(644)]).then(n.bind(n,4789)),"@site/guides/tutorials/index.md",4789],a690f229:[()=>n.e(9841).then(n.bind(n,8211)),"@site/versioned_docs/version-0.4/updating/update-assistant.md",8211],a69e7b9a:[()=>Promise.all([n.e(532),n.e(4365)]).then(n.bind(n,6935)),"@site/guides/extensions/redux-store.md",6935],a9c79318:[()=>Promise.all([n.e(532),n.e(6625)]).then(n.bind(n,534)),"@site/versioned_docs/version-0.3/getting-started/set-up/index.md",534],acdd3ecd:[()=>n.e(1317).then(n.bind(n,8693)),"@site/versioned_docs/version-0.3/ecosystem/index.md",8693],af9716ba:[()=>Promise.all([n.e(532),n.e(7543)]).then(n.bind(n,9511)),"@site/guides/getting-started/set-up/anoncreds-rs.md",9511],afc41633:[()=>Promise.all([n.e(532),n.e(7831)]).then(n.bind(n,9244)),"@site/guides/getting-started/set-up/indy-sdk/linux.md",9244],b1d5f389:[()=>Promise.all([n.e(532),n.e(9843)]).then(n.bind(n,6457)),"@site/versioned_docs/version-0.4/extensions/react-hooks.md",6457],b56c3f57:[()=>Promise.all([n.e(532),n.e(7610)]).then(n.bind(n,9387)),"@site/versioned_docs/version-0.3/tutorials/index.md",9387],bcace162:[()=>Promise.all([n.e(532),n.e(752)]).then(n.bind(n,8150)),"@site/versioned_docs/version-0.4/extensions/push-notifications.md",8150],bd127040:[()=>Promise.all([n.e(532),n.e(6142)]).then(n.bind(n,1e3)),"@site/versioned_docs/version-0.3/getting-started/installation/nodejs/linux.md",1e3],bd5be9ae:[()=>Promise.all([n.e(532),n.e(1993)]).then(n.bind(n,2347)),"@site/guides/tutorials/issue-a-credential.md",2347],bf52c953:[()=>n.e(4220).then(n.bind(n,9083)),"@site/versioned_docs/version-0.3/concepts/platform-and-environment.md",9083],c2afb9af:[()=>Promise.all([n.e(532),n.e(1389)]).then(n.bind(n,5331)),"@site/versioned_docs/version-0.3/extensions/react-hooks/setup.md",5331],c5492fa7:[()=>n.e(8041).then(n.bind(n,6870)),"@site/guides/tutorials/indy-sdk-postgres-database-nodejs/linux.md",6870],c5cd793e:[()=>n.e(8925).then(n.bind(n,2290)),"@site/versioned_docs/version-0.4/tutorials/registering-schema-and-credential-definition.md",2290],c6c95224:[()=>n.e(7572).then(n.bind(n,7946)),"@site/guides/getting-started/set-up/indy-sdk/react-native.md",7946],c970593d:[()=>Promise.all([n.e(532),n.e(703)]).then(n.bind(n,4933)),"@site/versioned_docs/version-0.3/updating/index.md",4933],ca99fa15:[()=>n.e(3080).then(n.bind(n,8626)),"@site/guides/concepts/did-and-didcomm.md",8626],d1089d1d:[()=>n.e(1270).then(n.bind(n,3147)),"@site/versioned_docs/version-0.3/tutorials/postgres-database-nodejs/macos.md",3147],d26e5579:[()=>Promise.all([n.e(532),n.e(9080)]).then(n.bind(n,9533)),"@site/versioned_docs/version-0.4/getting-started/set-up/indy-sdk/linux.md",9533],d42e1e6c:[()=>Promise.all([n.e(532),n.e(2226)]).then(n.bind(n,8433)),"@site/versioned_docs/version-0.3/tutorials/create-a-connection.md",8433],d68982b8:[()=>n.e(7608).then(n.bind(n,8161)),"@site/versioned_docs/version-0.3/getting-started/installation/react-native/ios.md",8161],daf4660b:[()=>Promise.all([n.e(532),n.e(8692)]).then(n.bind(n,1618)),"@site/versioned_docs/version-0.3/updating/versions/0.1-to-0.2.md",1618],dc62edf2:[()=>Promise.all([n.e(532),n.e(4827)]).then(n.bind(n,695)),"@site/guides/getting-started/index.md",695],debd89ec:[()=>n.e(4767).then(n.bind(n,9494)),"@site/versioned_docs/version-0.4/tutorials/agent-config/logging.md",9494],e38b62c8:[()=>n.e(7162).then(n.bind(n,1289)),"@site/versioned_docs/version-0.4/concepts/platform-and-environment.md",1289],e4252094:[()=>n.e(1776).then(n.t.bind(n,3769,19)),"/home/runner/work/credo-ts-docs/credo-ts-docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],e5a09f30:[()=>Promise.all([n.e(532),n.e(2254)]).then(n.bind(n,3570)),"@site/versioned_docs/version-0.4/getting-started/set-up/anoncreds-rs.md",3570],e5f12b68:[()=>n.e(4656).then(n.bind(n,1971)),"@site/versioned_docs/version-0.3/updating/update-assistant.md",1971],ece13197:[()=>n.e(9852).then(n.bind(n,1920)),"@site/versioned_docs/version-0.4/concepts/agents.md",1920],ee7869b6:[()=>n.e(7240).then(n.bind(n,3944)),"@site/versioned_docs/version-0.4/getting-started/set-up/indy-sdk/macos-arm.md",3944],ee898636:[()=>Promise.all([n.e(532),n.e(9233)]).then(n.bind(n,2757)),"@site/versioned_docs/version-0.4/tutorials/create-a-connection.md",2757],eeecf87c:[()=>n.e(7547).then(n.bind(n,3076)),"@site/guides/concepts/platform-and-environment.md",3076],ef7acecf:[()=>Promise.all([n.e(532),n.e(2925)]).then(n.bind(n,2960)),"@site/guides/tutorials/create-a-connection.md",2960],f30d32a5:[()=>n.e(2637).then(n.bind(n,2736)),"@site/versioned_docs/version-0.4/tutorials/indy-sdk-postgres-database-nodejs/linux.md",2736],f3933b6b:[()=>n.e(911).then(n.bind(n,1033)),"@site/versioned_docs/version-0.3/tutorials/postgres-database-nodejs/windows.md",1033],f800d23c:[()=>Promise.all([n.e(532),n.e(8251)]).then(n.bind(n,440)),"@site/guides/getting-started/set-up/aries-askar.md",440],f87d6b73:[()=>n.e(7083).then(n.bind(n,8899)),"@site/guides/getting-started/set-up/indy-sdk/macos-intel.md",8899],fd1a8f62:[()=>Promise.all([n.e(532),n.e(77)]).then(n.bind(n,9522)),"@site/versioned_docs/version-0.4/updating/versions/0.3-to-0.4.md",9522]};function u(e){let{error:t,retry:n,pastDelay:i}=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"))):i?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 p(e,t){if("*"===e)return o()({loading:u,loader:()=>n.e(4972).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 a=s[`${e}-${t}`],p={},f=[],m=[],g=(0,c.Z)(a);return Object.entries(g).forEach((e=>{let[t,n]=e;const r=l[n];r&&(p[t]=r[0],f.push(r[1]),m.push(r[2]))})),o().Map({loading:u,loader:p,modules:f,webpack:()=>m,render(t,n){const o=JSON.parse(JSON.stringify(a));Object.entries(t).forEach((t=>{let[n,r]=t;const i=r.default;if(!i)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 i&&"function"!=typeof i||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{i[e]=r[e]}));let a=o;const s=n.split(".");s.slice(0,-1).forEach((e=>{a=a[e]})),a[s[s.length-1]]=i}));const s=o.__comp;delete o.__comp;const l=o.__context;return delete o.__context,r.createElement(d.z,{value:l},r.createElement(s,(0,i.Z)({},o,n)))}})}const f=[{path:"/markdown-page",component:p("/markdown-page","ff5"),exact:!0},{path:"/guides/0.3",component:p("/guides/0.3","769"),routes:[{path:"/guides/0.3",component:p("/guides/0.3","c55"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/concepts",component:p("/guides/0.3/concepts","8ed"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/concepts/agents",component:p("/guides/0.3/concepts/agents","26a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/concepts/did-and-didcomm",component:p("/guides/0.3/concepts/did-and-didcomm","cae"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/concepts/platform-and-environment",component:p("/guides/0.3/concepts/platform-and-environment","c83"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/ecosystem",component:p("/guides/0.3/ecosystem","6e2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions",component:p("/guides/0.3/extensions","89d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions/push-notifications",component:p("/guides/0.3/extensions/push-notifications","83d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions/push-notifications/setup",component:p("/guides/0.3/extensions/push-notifications/setup","4e7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions/react-hooks",component:p("/guides/0.3/extensions/react-hooks","27a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions/react-hooks/setup",component:p("/guides/0.3/extensions/react-hooks/setup","042"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions/redux-store",component:p("/guides/0.3/extensions/redux-store","17e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions/redux-store/setup",component:p("/guides/0.3/extensions/redux-store/setup","e20"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions/rest",component:p("/guides/0.3/extensions/rest","f47"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/extensions/rest/setup",component:p("/guides/0.3/extensions/rest/setup","856"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started",component:p("/guides/0.3/getting-started","09e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation",component:p("/guides/0.3/getting-started/installation","210"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation/nodejs",component:p("/guides/0.3/getting-started/installation/nodejs","d46"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation/nodejs/apple-arm",component:p("/guides/0.3/getting-started/installation/nodejs/apple-arm","fbf"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation/nodejs/apple-intel",component:p("/guides/0.3/getting-started/installation/nodejs/apple-intel","c05"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation/nodejs/linux",component:p("/guides/0.3/getting-started/installation/nodejs/linux","d0a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation/nodejs/windows",component:p("/guides/0.3/getting-started/installation/nodejs/windows","834"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation/react-native",component:p("/guides/0.3/getting-started/installation/react-native","839"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation/react-native/android",component:p("/guides/0.3/getting-started/installation/react-native/android","550"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/installation/react-native/ios",component:p("/guides/0.3/getting-started/installation/react-native/ios","655"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/getting-started/prerequisites",component:p("/guides/0.3/getting-started/prerequisites","840"),exact:!0},{path:"/guides/0.3/getting-started/set-up",component:p("/guides/0.3/getting-started/set-up","662"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials",component:p("/guides/0.3/tutorials","8f3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials/agent-config",component:p("/guides/0.3/tutorials/agent-config","16e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials/agent-config/logging",component:p("/guides/0.3/tutorials/agent-config/logging","c89"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials/create-a-connection",component:p("/guides/0.3/tutorials/create-a-connection","14a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials/issue-a-credential",component:p("/guides/0.3/tutorials/issue-a-credential","b7f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials/postgres-database-nodejs",component:p("/guides/0.3/tutorials/postgres-database-nodejs","7e2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials/postgres-database-nodejs/linux",component:p("/guides/0.3/tutorials/postgres-database-nodejs/linux","33b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials/postgres-database-nodejs/macos",component:p("/guides/0.3/tutorials/postgres-database-nodejs/macos","af5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/tutorials/postgres-database-nodejs/windows",component:p("/guides/0.3/tutorials/postgres-database-nodejs/windows","b05"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/updating",component:p("/guides/0.3/updating","4bd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/updating/update-assistant",component:p("/guides/0.3/updating/update-assistant","33c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/updating/versions/0.1-to-0.2",component:p("/guides/0.3/updating/versions/0.1-to-0.2","714"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.3/updating/versions/0.2-to-0.3",component:p("/guides/0.3/updating/versions/0.2-to-0.3","0d2"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/guides/0.5",component:p("/guides/0.5","9eb"),routes:[{path:"/guides/0.5",component:p("/guides/0.5","b60"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/concepts",component:p("/guides/0.5/concepts","159"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/concepts/agents",component:p("/guides/0.5/concepts/agents","754"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/concepts/did-and-didcomm",component:p("/guides/0.5/concepts/did-and-didcomm","192"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/concepts/platform-and-environment",component:p("/guides/0.5/concepts/platform-and-environment","de1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/ecosystem",component:p("/guides/0.5/ecosystem","64b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/extensions",component:p("/guides/0.5/extensions","28e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/extensions/push-notifications",component:p("/guides/0.5/extensions/push-notifications","1cf"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/extensions/react-hooks",component:p("/guides/0.5/extensions/react-hooks","f82"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/extensions/redux-store",component:p("/guides/0.5/extensions/redux-store","866"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/extensions/rest",component:p("/guides/0.5/extensions/rest","bc3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started",component:p("/guides/0.5/getting-started","701"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/prerequisites",component:p("/guides/0.5/getting-started/prerequisites","b2b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/set-up",component:p("/guides/0.5/getting-started/set-up","d4e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/set-up/anoncreds-rs",component:p("/guides/0.5/getting-started/set-up/anoncreds-rs","fbd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/set-up/aries-askar",component:p("/guides/0.5/getting-started/set-up/aries-askar","9a1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/set-up/cheqd",component:p("/guides/0.5/getting-started/set-up/cheqd","de9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/set-up/indy-sdk",component:p("/guides/0.5/getting-started/set-up/indy-sdk","638"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/set-up/indy-sdk/linux",component:p("/guides/0.5/getting-started/set-up/indy-sdk/linux","838"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/set-up/indy-sdk/macos-arm",component:p("/guides/0.5/getting-started/set-up/indy-sdk/macos-arm","457"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/set-up/indy-sdk/macos-intel",component:p("/guides/0.5/getting-started/set-up/indy-sdk/macos-intel","042"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/set-up/indy-sdk/react-native",component:p("/guides/0.5/getting-started/set-up/indy-sdk/react-native","4f9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/set-up/indy-sdk/windows",component:p("/guides/0.5/getting-started/set-up/indy-sdk/windows","588"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/getting-started/set-up/indy-vdr",component:p("/guides/0.5/getting-started/set-up/indy-vdr","a60"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials",component:p("/guides/0.5/tutorials","cde"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/agent-config",component:p("/guides/0.5/tutorials/agent-config","73c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/agent-config/logging",component:p("/guides/0.5/tutorials/agent-config/logging","980"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/cheqd",component:p("/guides/0.5/tutorials/cheqd","c33"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/create-a-connection",component:p("/guides/0.5/tutorials/create-a-connection","354"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs",component:p("/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs","585"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/linux",component:p("/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/linux","aa7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/macos",component:p("/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/macos","aac"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/windows",component:p("/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/windows","177"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/issue-a-credential",component:p("/guides/0.5/tutorials/issue-a-credential","491"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/mediation",component:p("/guides/0.5/tutorials/mediation","eec"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/tutorials/registering-schema-and-credential-definition",component:p("/guides/0.5/tutorials/registering-schema-and-credential-definition","a59"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/updating",component:p("/guides/0.5/updating","416"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/updating/update-assistant",component:p("/guides/0.5/updating/update-assistant","d63"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/updating/update-indy-sdk-to-askar",component:p("/guides/0.5/updating/update-indy-sdk-to-askar","454"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/updating/versions/0.1-to-0.2",component:p("/guides/0.5/updating/versions/0.1-to-0.2","0fb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/updating/versions/0.2-to-0.3",component:p("/guides/0.5/updating/versions/0.2-to-0.3","88f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/0.5/updating/versions/0.3-to-0.4",component:p("/guides/0.5/updating/versions/0.3-to-0.4","4cf"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/guides",component:p("/guides","f79"),routes:[{path:"/guides",component:p("/guides","21c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/concepts",component:p("/guides/concepts","67d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/concepts/agents",component:p("/guides/concepts/agents","589"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/concepts/did-and-didcomm",component:p("/guides/concepts/did-and-didcomm","e8f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/concepts/platform-and-environment",component:p("/guides/concepts/platform-and-environment","c7f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/ecosystem",component:p("/guides/ecosystem","72b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/extensions",component:p("/guides/extensions","38d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/extensions/push-notifications",component:p("/guides/extensions/push-notifications","090"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/extensions/react-hooks",component:p("/guides/extensions/react-hooks","b5b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/extensions/redux-store",component:p("/guides/extensions/redux-store","3cd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/extensions/rest",component:p("/guides/extensions/rest","8d9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started",component:p("/guides/getting-started","9dc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/prerequisites",component:p("/guides/getting-started/prerequisites","085"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up",component:p("/guides/getting-started/set-up","5ac"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/anoncreds-rs",component:p("/guides/getting-started/set-up/anoncreds-rs","c2f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/aries-askar",component:p("/guides/getting-started/set-up/aries-askar","99d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/cheqd",component:p("/guides/getting-started/set-up/cheqd","26b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/indy-sdk",component:p("/guides/getting-started/set-up/indy-sdk","c87"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/indy-sdk/linux",component:p("/guides/getting-started/set-up/indy-sdk/linux","c90"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/indy-sdk/macos-arm",component:p("/guides/getting-started/set-up/indy-sdk/macos-arm","fbc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/indy-sdk/macos-intel",component:p("/guides/getting-started/set-up/indy-sdk/macos-intel","013"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/indy-sdk/react-native",component:p("/guides/getting-started/set-up/indy-sdk/react-native","4a0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/indy-sdk/windows",component:p("/guides/getting-started/set-up/indy-sdk/windows","de3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/getting-started/set-up/indy-vdr",component:p("/guides/getting-started/set-up/indy-vdr","523"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials",component:p("/guides/tutorials","765"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/agent-config",component:p("/guides/tutorials/agent-config","9f9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/agent-config/logging",component:p("/guides/tutorials/agent-config/logging","b62"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/cheqd",component:p("/guides/tutorials/cheqd","f6c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/create-a-connection",component:p("/guides/tutorials/create-a-connection","382"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/indy-sdk-postgres-database-nodejs",component:p("/guides/tutorials/indy-sdk-postgres-database-nodejs","5d0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/indy-sdk-postgres-database-nodejs/linux",component:p("/guides/tutorials/indy-sdk-postgres-database-nodejs/linux","dc1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/indy-sdk-postgres-database-nodejs/macos",component:p("/guides/tutorials/indy-sdk-postgres-database-nodejs/macos","651"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/indy-sdk-postgres-database-nodejs/windows",component:p("/guides/tutorials/indy-sdk-postgres-database-nodejs/windows","6d4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/issue-a-credential",component:p("/guides/tutorials/issue-a-credential","e6e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/mediation",component:p("/guides/tutorials/mediation","e0b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/tutorials/registering-schema-and-credential-definition",component:p("/guides/tutorials/registering-schema-and-credential-definition","5d1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/updating",component:p("/guides/updating","914"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/updating/update-assistant",component:p("/guides/updating/update-assistant","a9e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/updating/update-indy-sdk-to-askar",component:p("/guides/updating/update-indy-sdk-to-askar","9b6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/updating/versions/0.1-to-0.2",component:p("/guides/updating/versions/0.1-to-0.2","722"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/updating/versions/0.2-to-0.3",component:p("/guides/updating/versions/0.2-to-0.3","4a1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/guides/updating/versions/0.3-to-0.4",component:p("/guides/updating/versions/0.3-to-0.4","ff2"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/",component:p("/","3b7"),exact:!0},{path:"*",component:p("*")}]},8965:(e,t,n)=>{var r,i;!function(){var a,o,s,l,u,c,d,p,f,m,g,h,b,v,y,w,k,S,E,x,_,O,P,C,T,I,A,L,R,N,j=function(e){var t=new j.Builder;return t.pipeline.add(j.trimmer,j.stopWordFilter,j.stemmer),t.searchPipeline.add(j.stemmer),e.call(t,t),t.build()};j.version="2.3.9",j.utils={},j.utils.warn=(a=this,function(e){a.console&&console.warn&&console.warn(e)}),j.utils.asString=function(e){return null==e?"":e.toString()},j.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r<n.length;r++){var i=n[r],a=e[i];if(Array.isArray(a))t[i]=a.slice();else{if("string"!=typeof a&&"number"!=typeof a&&"boolean"!=typeof a)throw new TypeError("clone is not deep and does not support nested objects");t[i]=a}}return t},j.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},j.FieldRef.joiner="/",j.FieldRef.fromString=function(e){var t=e.indexOf(j.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),r=e.slice(t+1);return new j.FieldRef(r,n,e)},j.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+j.FieldRef.joiner+this.docRef),this._stringValue},j.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},j.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},j.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},j.Set.prototype.contains=function(e){return!!this.elements[e]},j.Set.prototype.intersect=function(e){var t,n,r,i=[];if(e===j.Set.complete)return this;if(e===j.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),r=Object.keys(t.elements);for(var a=0;a<r.length;a++){var o=r[a];o in n.elements&&i.push(o)}return new j.Set(i)},j.Set.prototype.union=function(e){return e===j.Set.complete?j.Set.complete:e===j.Set.empty?this:new j.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},j.idf=function(e,t){var n=0;for(var r in e)"_index"!=r&&(n+=Object.keys(e[r]).length);var i=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(i))},j.Token=function(e,t){this.str=e||"",this.metadata=t||{}},j.Token.prototype.toString=function(){return this.str},j.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},j.Token.prototype.clone=function(e){return e=e||function(e){return e},new j.Token(e(this.str,this.metadata),this.metadata)},j.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new j.Token(j.utils.asString(e).toLowerCase(),j.utils.clone(t))}));for(var n=e.toString().toLowerCase(),r=n.length,i=[],a=0,o=0;a<=r;a++){var s=a-o;if(n.charAt(a).match(j.tokenizer.separator)||a==r){if(s>0){var l=j.utils.clone(t)||{};l.position=[o,s],l.index=i.length,i.push(new j.Token(n.slice(o,a),l))}o=a+1}}return i},j.tokenizer.separator=/[\s\-]+/,j.Pipeline=function(){this._stack=[]},j.Pipeline.registeredFunctions=Object.create(null),j.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&j.utils.warn("Overwriting existing registered function: "+t),e.label=t,j.Pipeline.registeredFunctions[e.label]=e},j.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||j.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},j.Pipeline.load=function(e){var t=new j.Pipeline;return e.forEach((function(e){var n=j.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},j.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){j.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},j.Pipeline.prototype.after=function(e,t){j.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)},j.Pipeline.prototype.before=function(e,t){j.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},j.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},j.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var r=this._stack[n],i=[],a=0;a<e.length;a++){var o=r(e[a],a,e);if(null!=o&&""!==o)if(Array.isArray(o))for(var s=0;s<o.length;s++)i.push(o[s]);else i.push(o)}e=i}return e},j.Pipeline.prototype.runString=function(e,t){var n=new j.Token(e,t);return this.run([n]).map((function(e){return e.toString()}))},j.Pipeline.prototype.reset=function(){this._stack=[]},j.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return j.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},j.Vector=function(e){this._magnitude=0,this.elements=e||[]},j.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,r=n-t,i=Math.floor(r/2),a=this.elements[2*i];r>1&&(a<e&&(t=i),a>e&&(n=i),a!=e);)r=n-t,i=t+Math.floor(r/2),a=this.elements[2*i];return a==e||a>e?2*i:a<e?2*(i+1):void 0},j.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw"duplicate index"}))},j.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var r=this.positionForIndex(e);this.elements[r]==e?this.elements[r+1]=n(this.elements[r+1],t):this.elements.splice(r,0,e,t)},j.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var r=this.elements[n];e+=r*r}return this._magnitude=Math.sqrt(e)},j.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,r=e.elements,i=n.length,a=r.length,o=0,s=0,l=0,u=0;l<i&&u<a;)(o=n[l])<(s=r[u])?l+=2:o>s?u+=2:o==s&&(t+=n[l+1]*r[u+1],l+=2,u+=2);return t},j.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},j.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},j.Vector.prototype.toJSON=function(){return this.elements},j.stemmer=(o={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},s={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},d="^("+(u="[^aeiou][^aeiouy]*")+")?"+(c=(l="[aeiouy]")+"[aeiou]*")+u+"("+c+")?$",p="^("+u+")?"+c+u+c+u,f="^("+u+")?"+l,m=new RegExp("^("+u+")?"+c+u),g=new RegExp(p),h=new RegExp(d),b=new RegExp(f),v=/^(.+?)(ss|i)es$/,y=/^(.+?)([^s])s$/,w=/^(.+?)eed$/,k=/^(.+?)(ed|ing)$/,S=/.$/,E=/(at|bl|iz)$/,x=new RegExp("([^aeiouylsz])\\1$"),_=new RegExp("^"+u+l+"[^aeiouwxy]$"),O=/^(.+?[^aeiou])y$/,P=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,C=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,T=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,I=/^(.+?)(s|t)(ion)$/,A=/^(.+?)e$/,L=/ll$/,R=new RegExp("^"+u+l+"[^aeiouwxy]$"),N=function(e){var t,n,r,i,a,l,u;if(e.length<3)return e;if("y"==(r=e.substr(0,1))&&(e=r.toUpperCase()+e.substr(1)),a=y,(i=v).test(e)?e=e.replace(i,"$1$2"):a.test(e)&&(e=e.replace(a,"$1$2")),a=k,(i=w).test(e)){var c=i.exec(e);(i=m).test(c[1])&&(i=S,e=e.replace(i,""))}else a.test(e)&&(t=(c=a.exec(e))[1],(a=b).test(t)&&(l=x,u=_,(a=E).test(e=t)?e+="e":l.test(e)?(i=S,e=e.replace(i,"")):u.test(e)&&(e+="e")));return(i=O).test(e)&&(e=(t=(c=i.exec(e))[1])+"i"),(i=P).test(e)&&(t=(c=i.exec(e))[1],n=c[2],(i=m).test(t)&&(e=t+o[n])),(i=C).test(e)&&(t=(c=i.exec(e))[1],n=c[2],(i=m).test(t)&&(e=t+s[n])),a=I,(i=T).test(e)?(t=(c=i.exec(e))[1],(i=g).test(t)&&(e=t)):a.test(e)&&(t=(c=a.exec(e))[1]+c[2],(a=g).test(t)&&(e=t)),(i=A).test(e)&&(t=(c=i.exec(e))[1],a=h,l=R,((i=g).test(t)||a.test(t)&&!l.test(t))&&(e=t)),a=g,(i=L).test(e)&&a.test(e)&&(i=S,e=e.replace(i,"")),"y"==r&&(e=r.toLowerCase()+e.substr(1)),e},function(e){return e.update(N)}),j.Pipeline.registerFunction(j.stemmer,"stemmer"),j.generateStopWordFilter=function(e){var t=e.reduce((function(e,t){return e[t]=t,e}),{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},j.stopWordFilter=j.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),j.Pipeline.registerFunction(j.stopWordFilter,"stopWordFilter"),j.trimmer=function(e){return e.update((function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")}))},j.Pipeline.registerFunction(j.trimmer,"trimmer"),j.TokenSet=function(){this.final=!1,this.edges={},this.id=j.TokenSet._nextId,j.TokenSet._nextId+=1},j.TokenSet._nextId=1,j.TokenSet.fromArray=function(e){for(var t=new j.TokenSet.Builder,n=0,r=e.length;n<r;n++)t.insert(e[n]);return t.finish(),t.root},j.TokenSet.fromClause=function(e){return"editDistance"in e?j.TokenSet.fromFuzzyString(e.term,e.editDistance):j.TokenSet.fromString(e.term)},j.TokenSet.fromFuzzyString=function(e,t){for(var n=new j.TokenSet,r=[{node:n,editsRemaining:t,str:e}];r.length;){var i=r.pop();if(i.str.length>0){var a,o=i.str.charAt(0);o in i.node.edges?a=i.node.edges[o]:(a=new j.TokenSet,i.node.edges[o]=a),1==i.str.length&&(a.final=!0),r.push({node:a,editsRemaining:i.editsRemaining,str:i.str.slice(1)})}if(0!=i.editsRemaining){if("*"in i.node.edges)var s=i.node.edges["*"];else{s=new j.TokenSet;i.node.edges["*"]=s}if(0==i.str.length&&(s.final=!0),r.push({node:s,editsRemaining:i.editsRemaining-1,str:i.str}),i.str.length>1&&r.push({node:i.node,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)}),1==i.str.length&&(i.node.final=!0),i.str.length>=1){if("*"in i.node.edges)var l=i.node.edges["*"];else{l=new j.TokenSet;i.node.edges["*"]=l}1==i.str.length&&(l.final=!0),r.push({node:l,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)})}if(i.str.length>1){var u,c=i.str.charAt(0),d=i.str.charAt(1);d in i.node.edges?u=i.node.edges[d]:(u=new j.TokenSet,i.node.edges[d]=u),1==i.str.length&&(u.final=!0),r.push({node:u,editsRemaining:i.editsRemaining-1,str:c+i.str.slice(2)})}}}return n},j.TokenSet.fromString=function(e){for(var t=new j.TokenSet,n=t,r=0,i=e.length;r<i;r++){var a=e[r],o=r==i-1;if("*"==a)t.edges[a]=t,t.final=o;else{var s=new j.TokenSet;s.final=o,t.edges[a]=s,t=s}}return n},j.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),r=Object.keys(n.node.edges),i=r.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var a=0;a<i;a++){var o=r[a];t.push({prefix:n.prefix.concat(o),node:n.node.edges[o]})}}return e},j.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,r=0;r<n;r++){var i=t[r];e=e+i+this.edges[i].id}return e},j.TokenSet.prototype.intersect=function(e){for(var t=new j.TokenSet,n=void 0,r=[{qNode:e,output:t,node:this}];r.length;){n=r.pop();for(var i=Object.keys(n.qNode.edges),a=i.length,o=Object.keys(n.node.edges),s=o.length,l=0;l<a;l++)for(var u=i[l],c=0;c<s;c++){var d=o[c];if(d==u||"*"==u){var p=n.node.edges[d],f=n.qNode.edges[u],m=p.final&&f.final,g=void 0;d in n.output.edges?(g=n.output.edges[d]).final=g.final||m:((g=new j.TokenSet).final=m,n.output.edges[d]=g),r.push({qNode:f,output:g,node:p})}}}return t},j.TokenSet.Builder=function(){this.previousWord="",this.root=new j.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},j.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var r=0;r<e.length&&r<this.previousWord.length&&e[r]==this.previousWord[r];r++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(r=n;r<e.length;r++){var i=new j.TokenSet,a=e[r];t.edges[a]=i,this.uncheckedNodes.push({parent:t,char:a,child:i}),t=i}t.final=!0,this.previousWord=e},j.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},j.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=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()}},j.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},j.Index.prototype.search=function(e){return this.query((function(t){new j.QueryParser(e,t).parse()}))},j.Index.prototype.query=function(e){for(var t=new j.Query(this.fields),n=Object.create(null),r=Object.create(null),i=Object.create(null),a=Object.create(null),o=Object.create(null),s=0;s<this.fields.length;s++)r[this.fields[s]]=new j.Vector;e.call(t,t);for(s=0;s<t.clauses.length;s++){var l=t.clauses[s],u=null,c=j.Set.empty;u=l.usePipeline?this.pipeline.runString(l.term,{fields:l.fields}):[l.term];for(var d=0;d<u.length;d++){var p=u[d];l.term=p;var f=j.TokenSet.fromClause(l),m=this.tokenSet.intersect(f).toArray();if(0===m.length&&l.presence===j.Query.presence.REQUIRED){for(var g=0;g<l.fields.length;g++){a[A=l.fields[g]]=j.Set.empty}break}for(var h=0;h<m.length;h++){var b=m[h],v=this.invertedIndex[b],y=v._index;for(g=0;g<l.fields.length;g++){var w=v[A=l.fields[g]],k=Object.keys(w),S=b+"/"+A,E=new j.Set(k);if(l.presence==j.Query.presence.REQUIRED&&(c=c.union(E),void 0===a[A]&&(a[A]=j.Set.complete)),l.presence!=j.Query.presence.PROHIBITED){if(r[A].upsert(y,l.boost,(function(e,t){return e+t})),!i[S]){for(var x=0;x<k.length;x++){var _,O=k[x],P=new j.FieldRef(O,A),C=w[O];void 0===(_=n[P])?n[P]=new j.MatchData(b,A,C):_.add(b,A,C)}i[S]=!0}}else void 0===o[A]&&(o[A]=j.Set.empty),o[A]=o[A].union(E)}}}if(l.presence===j.Query.presence.REQUIRED)for(g=0;g<l.fields.length;g++){a[A=l.fields[g]]=a[A].intersect(c)}}var T=j.Set.complete,I=j.Set.empty;for(s=0;s<this.fields.length;s++){var A;a[A=this.fields[s]]&&(T=T.intersect(a[A])),o[A]&&(I=I.union(o[A]))}var L=Object.keys(n),R=[],N=Object.create(null);if(t.isNegated()){L=Object.keys(this.fieldVectors);for(s=0;s<L.length;s++){P=L[s];var D=j.FieldRef.fromString(P);n[P]=new j.MatchData}}for(s=0;s<L.length;s++){var M=(D=j.FieldRef.fromString(L[s])).docRef;if(T.contains(M)&&!I.contains(M)){var F,B=this.fieldVectors[D],z=r[D.fieldName].similarity(B);if(void 0!==(F=N[M]))F.score+=z,F.matchData.combine(n[D]);else{var U={ref:M,score:z,matchData:n[D]};N[M]=U,R.push(U)}}}return R.sort((function(e,t){return t.score-e.score}))},j.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map((function(e){return[e,this.invertedIndex[e]]}),this),t=Object.keys(this.fieldVectors).map((function(e){return[e,this.fieldVectors[e].toJSON()]}),this);return{version:j.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},j.Index.load=function(e){var t={},n={},r=e.fieldVectors,i=Object.create(null),a=e.invertedIndex,o=new j.TokenSet.Builder,s=j.Pipeline.load(e.pipeline);e.version!=j.version&&j.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+j.version+"' does not match serialized index '"+e.version+"'");for(var l=0;l<r.length;l++){var u=(d=r[l])[0],c=d[1];n[u]=new j.Vector(c)}for(l=0;l<a.length;l++){var d,p=(d=a[l])[0],f=d[1];o.insert(p),i[p]=f}return o.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=i,t.tokenSet=o.root,t.pipeline=s,new j.Index(t)},j.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=j.tokenizer,this.pipeline=new j.Pipeline,this.searchPipeline=new j.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},j.Builder.prototype.ref=function(e){this._ref=e},j.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},j.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},j.Builder.prototype.k1=function(e){this._k1=e},j.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 i=0;i<r.length;i++){var a=r[i],o=this._fields[a].extractor,s=this._fields[a].isLiteral??!1,l=o?o(e):e[a],u=s?[l]:this.tokenizer(l,{fields:[a]}),c=s?u:this.pipeline.run(u),d=new j.FieldRef(n,a),p=Object.create(null);this.fieldTermFrequencies[d]=p,this.fieldLengths[d]=0,this.fieldLengths[d]+=c.length;for(var f=0;f<c.length;f++){var m=c[f];if(null==p[m]&&(p[m]=0),p[m]+=1,null==this.invertedIndex[m]){var g=Object.create(null);g._index=this.termIndex,this.termIndex+=1;for(var h=0;h<r.length;h++)g[r[h]]=Object.create(null);this.invertedIndex[m]=g}null==this.invertedIndex[m][a][n]&&(this.invertedIndex[m][a][n]=Object.create(null));for(var b=0;b<this.metadataWhitelist.length;b++){var v=this.metadataWhitelist[b],y=m.metadata[v];null==this.invertedIndex[m][a][n][v]&&(this.invertedIndex[m][a][n][v]=[]),this.invertedIndex[m][a][n][v].push(y)}}}},j.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},r={},i=0;i<t;i++){var a=j.FieldRef.fromString(e[i]),o=a.fieldName;r[o]||(r[o]=0),r[o]+=1,n[o]||(n[o]=0),n[o]+=this.fieldLengths[a]}var s=Object.keys(this._fields);for(i=0;i<s.length;i++){var l=s[i];n[l]=n[l]/r[l]}this.averageFieldLength=n},j.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,r=Object.create(null),i=0;i<n;i++){for(var a=j.FieldRef.fromString(t[i]),o=a.fieldName,s=this.fieldLengths[a],l=new j.Vector,u=this.fieldTermFrequencies[a],c=Object.keys(u),d=c.length,p=this._fields[o].boost||1,f=this._documents[a.docRef].boost||1,m=0;m<d;m++){var g,h,b,v=c[m],y=u[v],w=this.invertedIndex[v]._index;void 0===r[v]?(g=j.idf(this.invertedIndex[v],this.documentCount),r[v]=g):g=r[v],h=g*((this._k1+1)*y)/(this._k1*(1-this._b+this._b*(s/this.averageFieldLength[o]))+y),h*=p,h*=f,b=Math.round(1e3*h)/1e3,l.insert(w,b)}e[a]=l}this.fieldVectors=e},j.Builder.prototype.createTokenSet=function(){this.tokenSet=j.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},j.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new j.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},j.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},j.MatchData=function(e,t,n){for(var r=Object.create(null),i=Object.keys(n||{}),a=0;a<i.length;a++){var o=i[a];r[o]=n[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=r)},j.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var r=t[n],i=Object.keys(e.metadata[r]);null==this.metadata[r]&&(this.metadata[r]=Object.create(null));for(var a=0;a<i.length;a++){var o=i[a],s=Object.keys(e.metadata[r][o]);null==this.metadata[r][o]&&(this.metadata[r][o]=Object.create(null));for(var l=0;l<s.length;l++){var u=s[l];null==this.metadata[r][o][u]?this.metadata[r][o][u]=e.metadata[r][o][u]:this.metadata[r][o][u]=this.metadata[r][o][u].concat(e.metadata[r][o][u])}}}},j.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=n);if(t in this.metadata[e])for(var r=Object.keys(n),i=0;i<r.length;i++){var a=r[i];a in this.metadata[e][t]?this.metadata[e][t][a]=this.metadata[e][t][a].concat(n[a]):this.metadata[e][t][a]=n[a]}else this.metadata[e][t]=n},j.Query=function(e){this.clauses=[],this.allFields=e},j.Query.wildcard=new String("*"),j.Query.wildcard.NONE=0,j.Query.wildcard.LEADING=1,j.Query.wildcard.TRAILING=2,j.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},j.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=j.Query.wildcard.NONE),e.wildcard&j.Query.wildcard.LEADING&&e.term.charAt(0)!=j.Query.wildcard&&(e.term="*"+e.term),e.wildcard&j.Query.wildcard.TRAILING&&e.term.slice(-1)!=j.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=j.Query.presence.OPTIONAL),this.clauses.push(e),this},j.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=j.Query.presence.PROHIBITED)return!1;return!0},j.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,j.utils.clone(t))}),this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},j.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},j.QueryParseError.prototype=new Error,j.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},j.QueryLexer.prototype.run=function(){for(var e=j.QueryLexer.lexText;e;)e=e(this)},j.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,r=0;r<this.escapeCharPositions.length;r++)n=this.escapeCharPositions[r],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},j.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},j.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},j.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return j.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},j.QueryLexer.prototype.width=function(){return this.pos-this.start},j.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},j.QueryLexer.prototype.backup=function(){this.pos-=1},j.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=j.QueryLexer.EOS&&this.backup()},j.QueryLexer.prototype.more=function(){return this.pos<this.length},j.QueryLexer.EOS="EOS",j.QueryLexer.FIELD="FIELD",j.QueryLexer.TERM="TERM",j.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",j.QueryLexer.BOOST="BOOST",j.QueryLexer.PRESENCE="PRESENCE",j.QueryLexer.lexField=function(e){return e.backup(),e.emit(j.QueryLexer.FIELD),e.ignore(),j.QueryLexer.lexText},j.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(j.QueryLexer.TERM)),e.ignore(),e.more())return j.QueryLexer.lexText},j.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(j.QueryLexer.EDIT_DISTANCE),j.QueryLexer.lexText},j.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(j.QueryLexer.BOOST),j.QueryLexer.lexText},j.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(j.QueryLexer.TERM)},j.QueryLexer.termSeparator=j.tokenizer.separator,j.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==j.QueryLexer.EOS)return j.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return j.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(j.QueryLexer.TERM),j.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(j.QueryLexer.TERM),j.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(j.QueryLexer.PRESENCE),j.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(j.QueryLexer.PRESENCE),j.QueryLexer.lexText;if(t.match(j.QueryLexer.termSeparator))return j.QueryLexer.lexTerm}else e.escapeCharacter()}},j.QueryParser=function(e,t){this.lexer=new j.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},j.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=j.QueryParser.parseClause;e;)e=e(this);return this.query},j.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},j.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},j.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},j.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case j.QueryLexer.PRESENCE:return j.QueryParser.parsePresence;case j.QueryLexer.FIELD:return j.QueryParser.parseField;case j.QueryLexer.TERM:return j.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 j.QueryParseError(n,t.start,t.end)}},j.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=j.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=j.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new j.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new j.QueryParseError(n,t.start,t.end)}switch(r.type){case j.QueryLexer.FIELD:return j.QueryParser.parseField;case j.QueryLexer.TERM:return j.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new j.QueryParseError(n,r.start,r.end)}}},j.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 j.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var i=e.peekLexeme();if(null==i){r="expecting term, found nothing";throw new j.QueryParseError(r,t.start,t.end)}if(i.type===j.QueryLexer.TERM)return j.QueryParser.parseTerm;r="expecting term, found '"+i.type+"'";throw new j.QueryParseError(r,i.start,i.end)}},j.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 j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new j.QueryParseError(r,n.start,n.end)}else e.nextClause()}},j.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 j.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var i=e.peekLexeme();if(null!=i)switch(i.type){case j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+i.type+"'";throw new j.QueryParseError(r,i.start,i.end)}else e.nextClause()}},j.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 j.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var i=e.peekLexeme();if(null!=i)switch(i.type){case j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+i.type+"'";throw new j.QueryParseError(r,i.start,i.end)}else e.nextClause()}},void 0===(i="function"==typeof(r=function(){return j})?r.call(t,n,t,e):r)||(e.exports=i)}()},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>i,t:()=>a});var r=n(7294);const i=r.createContext(!1);function a(e){let{children:t}=e;const[n,a]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{a(!0)}),[]),r.createElement(i.Provider,{value:n},t)}},9383:(e,t,n)=>{"use strict";var r=n(7294),i=n(3935),a=n(3727),o=n(405),s=n(412);const l=[n(2497),n(3310),n(8320),n(2295)];var u=n(723),c=n(6550),d=n(8790);function p(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var f=n(7462),m=n(5742),g=n(2263),h=n(4996),b=n(6668),v=n(1944),y=n(4711),w=n(9727),k=n(3320),S=n(197);function E(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,g.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:i}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:i})})),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,g.Z)(),i=function(){const{siteConfig:{url:e}}=(0,g.Z)(),{pathname:t}=(0,c.TH)();return e+(0,h.Z)(t)}(),a=t?`${n}${t}`:i;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:a}),r.createElement("link",{rel:"canonical",href:a}))}function _(){const{i18n:{currentLocale:e}}=(0,g.Z)(),{metadata:t,image:n}=(0,b.L)();return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(v.d,{image:n}),r.createElement(x,null),r.createElement(E,null),r.createElement(S.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,f.Z)({key:t},e))))))}const O=new Map;function P(e){if(O.has(e.pathname))return{...e,pathname:O.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return O.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return O.set(e.pathname,t),{...e,pathname:t}}var C=n(8934),T=n(8940);function I(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const i=l.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>i.forEach((e=>e?.()))}const A=function(e){let{children:t,location:n,previousLocation:i}=e;return(0,r.useLayoutEffect)((()=>{i!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,i=t.hash===n.hash,a=t.search===n.search;if(r&&i&&!a)return;const{hash:o}=t;if(o){const e=decodeURIComponent(o.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:i}),I("onRouteDidUpdate",{previousLocation:i,location:n}))}),[i,n]),t};function L(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 R extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.Z.canUseDOM?I("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=I("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),L(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(A,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const N=R,j="docusaurus-base-url-issue-banner-container",D="docusaurus-base-url-issue-banner",M="docusaurus-base-url-issue-banner-suggestion-container",F="__DOCUSAURUS_INSERT_BASEURL_BANNER";function B(e){return`\nwindow['${F}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${F}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${j}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${D}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseurl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${M}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${M}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function z(){const{siteConfig:{baseUrl:e}}=(0,g.Z)();return(0,r.useLayoutEffect)((()=>{window[F]=!1}),[]),r.createElement(r.Fragment,null,!s.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,B(e))),r.createElement("div",{id:j}))}function U(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,g.Z)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(z,null):null}function q(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:i,localeConfigs:a}}=(0,g.Z)(),o=(0,h.Z)(e),{htmlLang:s,direction:l}=a[i];return r.createElement(m.Z,null,r.createElement("html",{lang:s,dir:l}),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:o}))}var $=n(4763);function H(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement($.Z,null,r.createElement(T.M,null,r.createElement(C.t,null,r.createElement(p,null,r.createElement(q,null),r.createElement(_,null),r.createElement(U,null),r.createElement(N,{location:P(t)},e)))))}var G=n(6887);const Q=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 i=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;i?.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 V=n(9670);const Z=new Set,W=new Set,K=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,Y={prefetch(e){if(!(e=>!K()&&!W.has(e)&&!Z.has(e))(e))return!1;Z.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(G).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,V.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Q(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!K()&&!W.has(e))(e)&&(W.add(e),L(e))},X=Object.freeze(Y);if(s.Z.canUseDOM){window.docusaurus=X;const e=i.hydrate;L(window.location.pathname).then((()=>{e(r.createElement(o.B6,null,r.createElement(a.VK,null,r.createElement(H,null))),document.getElementById("__docusaurus"))}))}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(7294),i=n(6809);const a=JSON.parse('{"@cmfcmf/docusaurus-search-local":{"default":{"titleBoost":10,"contentBoost":1,"parentCategoriesBoost":2,"indexDocSidebarParentCategories":3}},"docusaurus-plugin-content-docs":{"default":{"path":"/guides","versions":[{"name":"current","label":"v0.5.x","isLast":false,"path":"/guides/0.5","mainDocId":"index","docs":[{"id":"concepts/agents","path":"/guides/0.5/concepts/agents","sidebar":"tutorialSidebar"},{"id":"concepts/did-and-didcomm","path":"/guides/0.5/concepts/did-and-didcomm","sidebar":"tutorialSidebar"},{"id":"concepts/index","path":"/guides/0.5/concepts/","sidebar":"tutorialSidebar"},{"id":"concepts/platform-and-environment","path":"/guides/0.5/concepts/platform-and-environment","sidebar":"tutorialSidebar"},{"id":"ecosystem/index","path":"/guides/0.5/ecosystem/","sidebar":"tutorialSidebar"},{"id":"extensions/index","path":"/guides/0.5/extensions/","sidebar":"tutorialSidebar"},{"id":"extensions/push-notifications","path":"/guides/0.5/extensions/push-notifications","sidebar":"tutorialSidebar"},{"id":"extensions/react-hooks","path":"/guides/0.5/extensions/react-hooks","sidebar":"tutorialSidebar"},{"id":"extensions/redux-store","path":"/guides/0.5/extensions/redux-store","sidebar":"tutorialSidebar"},{"id":"extensions/rest","path":"/guides/0.5/extensions/rest","sidebar":"tutorialSidebar"},{"id":"getting-started/index","path":"/guides/0.5/getting-started/","sidebar":"tutorialSidebar"},{"id":"getting-started/prerequisites","path":"/guides/0.5/getting-started/prerequisites","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/anoncreds-rs","path":"/guides/0.5/getting-started/set-up/anoncreds-rs","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/aries-askar","path":"/guides/0.5/getting-started/set-up/aries-askar","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/cheqd/index","path":"/guides/0.5/getting-started/set-up/cheqd/","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/index","path":"/guides/0.5/getting-started/set-up/","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/index","path":"/guides/0.5/getting-started/set-up/indy-sdk/","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/linux","path":"/guides/0.5/getting-started/set-up/indy-sdk/linux","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/macos-arm","path":"/guides/0.5/getting-started/set-up/indy-sdk/macos-arm","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/macos-intel","path":"/guides/0.5/getting-started/set-up/indy-sdk/macos-intel","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/react-native","path":"/guides/0.5/getting-started/set-up/indy-sdk/react-native","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/windows","path":"/guides/0.5/getting-started/set-up/indy-sdk/windows","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-vdr","path":"/guides/0.5/getting-started/set-up/indy-vdr","sidebar":"tutorialSidebar"},{"id":"index","path":"/guides/0.5/","sidebar":"tutorialSidebar"},{"id":"tutorials/agent-config/index","path":"/guides/0.5/tutorials/agent-config/","sidebar":"tutorialSidebar"},{"id":"tutorials/agent-config/logging","path":"/guides/0.5/tutorials/agent-config/logging","sidebar":"tutorialSidebar"},{"id":"tutorials/cheqd/index","path":"/guides/0.5/tutorials/cheqd/","sidebar":"tutorialSidebar"},{"id":"tutorials/create-a-connection","path":"/guides/0.5/tutorials/create-a-connection","sidebar":"tutorialSidebar"},{"id":"tutorials/index","path":"/guides/0.5/tutorials/","sidebar":"tutorialSidebar"},{"id":"tutorials/indy-sdk-postgres-database-nodejs/index","path":"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/","sidebar":"tutorialSidebar"},{"id":"tutorials/indy-sdk-postgres-database-nodejs/linux","path":"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/linux","sidebar":"tutorialSidebar"},{"id":"tutorials/indy-sdk-postgres-database-nodejs/macos","path":"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/macos","sidebar":"tutorialSidebar"},{"id":"tutorials/indy-sdk-postgres-database-nodejs/windows","path":"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/windows","sidebar":"tutorialSidebar"},{"id":"tutorials/issue-a-credential","path":"/guides/0.5/tutorials/issue-a-credential","sidebar":"tutorialSidebar"},{"id":"tutorials/mediation","path":"/guides/0.5/tutorials/mediation","sidebar":"tutorialSidebar"},{"id":"tutorials/registering-schema-and-credential-definition","path":"/guides/0.5/tutorials/registering-schema-and-credential-definition","sidebar":"tutorialSidebar"},{"id":"updating/index","path":"/guides/0.5/updating/","sidebar":"tutorialSidebar"},{"id":"updating/update-assistant","path":"/guides/0.5/updating/update-assistant","sidebar":"tutorialSidebar"},{"id":"updating/update-indy-sdk-to-askar","path":"/guides/0.5/updating/update-indy-sdk-to-askar","sidebar":"tutorialSidebar"},{"id":"updating/versions/0.1-to-0.2","path":"/guides/0.5/updating/versions/0.1-to-0.2","sidebar":"tutorialSidebar"},{"id":"updating/versions/0.2-to-0.3","path":"/guides/0.5/updating/versions/0.2-to-0.3","sidebar":"tutorialSidebar"},{"id":"updating/versions/0.3-to-0.4","path":"/guides/0.5/updating/versions/0.3-to-0.4","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/guides/0.5/","label":"index"}}}},{"name":"0.4","label":"v0.4.x","isLast":true,"path":"/guides","mainDocId":"index","docs":[{"id":"concepts/agents","path":"/guides/concepts/agents","sidebar":"tutorialSidebar"},{"id":"concepts/did-and-didcomm","path":"/guides/concepts/did-and-didcomm","sidebar":"tutorialSidebar"},{"id":"concepts/index","path":"/guides/concepts/","sidebar":"tutorialSidebar"},{"id":"concepts/platform-and-environment","path":"/guides/concepts/platform-and-environment","sidebar":"tutorialSidebar"},{"id":"ecosystem/index","path":"/guides/ecosystem/","sidebar":"tutorialSidebar"},{"id":"extensions/index","path":"/guides/extensions/","sidebar":"tutorialSidebar"},{"id":"extensions/push-notifications","path":"/guides/extensions/push-notifications","sidebar":"tutorialSidebar"},{"id":"extensions/react-hooks","path":"/guides/extensions/react-hooks","sidebar":"tutorialSidebar"},{"id":"extensions/redux-store","path":"/guides/extensions/redux-store","sidebar":"tutorialSidebar"},{"id":"extensions/rest","path":"/guides/extensions/rest","sidebar":"tutorialSidebar"},{"id":"getting-started/index","path":"/guides/getting-started/","sidebar":"tutorialSidebar"},{"id":"getting-started/prerequisites","path":"/guides/getting-started/prerequisites","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/anoncreds-rs","path":"/guides/getting-started/set-up/anoncreds-rs","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/aries-askar","path":"/guides/getting-started/set-up/aries-askar","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/cheqd/index","path":"/guides/getting-started/set-up/cheqd/","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/index","path":"/guides/getting-started/set-up/","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/index","path":"/guides/getting-started/set-up/indy-sdk/","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/linux","path":"/guides/getting-started/set-up/indy-sdk/linux","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/macos-arm","path":"/guides/getting-started/set-up/indy-sdk/macos-arm","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/macos-intel","path":"/guides/getting-started/set-up/indy-sdk/macos-intel","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/react-native","path":"/guides/getting-started/set-up/indy-sdk/react-native","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-sdk/windows","path":"/guides/getting-started/set-up/indy-sdk/windows","sidebar":"tutorialSidebar"},{"id":"getting-started/set-up/indy-vdr","path":"/guides/getting-started/set-up/indy-vdr","sidebar":"tutorialSidebar"},{"id":"index","path":"/guides/","sidebar":"tutorialSidebar"},{"id":"tutorials/agent-config/index","path":"/guides/tutorials/agent-config/","sidebar":"tutorialSidebar"},{"id":"tutorials/agent-config/logging","path":"/guides/tutorials/agent-config/logging","sidebar":"tutorialSidebar"},{"id":"tutorials/cheqd/index","path":"/guides/tutorials/cheqd/","sidebar":"tutorialSidebar"},{"id":"tutorials/create-a-connection","path":"/guides/tutorials/create-a-connection","sidebar":"tutorialSidebar"},{"id":"tutorials/index","path":"/guides/tutorials/","sidebar":"tutorialSidebar"},{"id":"tutorials/indy-sdk-postgres-database-nodejs/index","path":"/guides/tutorials/indy-sdk-postgres-database-nodejs/","sidebar":"tutorialSidebar"},{"id":"tutorials/indy-sdk-postgres-database-nodejs/linux","path":"/guides/tutorials/indy-sdk-postgres-database-nodejs/linux","sidebar":"tutorialSidebar"},{"id":"tutorials/indy-sdk-postgres-database-nodejs/macos","path":"/guides/tutorials/indy-sdk-postgres-database-nodejs/macos","sidebar":"tutorialSidebar"},{"id":"tutorials/indy-sdk-postgres-database-nodejs/windows","path":"/guides/tutorials/indy-sdk-postgres-database-nodejs/windows","sidebar":"tutorialSidebar"},{"id":"tutorials/issue-a-credential","path":"/guides/tutorials/issue-a-credential","sidebar":"tutorialSidebar"},{"id":"tutorials/mediation","path":"/guides/tutorials/mediation","sidebar":"tutorialSidebar"},{"id":"tutorials/registering-schema-and-credential-definition","path":"/guides/tutorials/registering-schema-and-credential-definition","sidebar":"tutorialSidebar"},{"id":"updating/index","path":"/guides/updating/","sidebar":"tutorialSidebar"},{"id":"updating/update-assistant","path":"/guides/updating/update-assistant","sidebar":"tutorialSidebar"},{"id":"updating/update-indy-sdk-to-askar","path":"/guides/updating/update-indy-sdk-to-askar","sidebar":"tutorialSidebar"},{"id":"updating/versions/0.1-to-0.2","path":"/guides/updating/versions/0.1-to-0.2","sidebar":"tutorialSidebar"},{"id":"updating/versions/0.2-to-0.3","path":"/guides/updating/versions/0.2-to-0.3","sidebar":"tutorialSidebar"},{"id":"updating/versions/0.3-to-0.4","path":"/guides/updating/versions/0.3-to-0.4","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/guides/","label":"index"}}}},{"name":"0.3","label":"v0.3.x","isLast":false,"path":"/guides/0.3","mainDocId":"index","docs":[{"id":"concepts/agents","path":"/guides/0.3/concepts/agents","sidebar":"tutorialSidebar"},{"id":"concepts/did-and-didcomm","path":"/guides/0.3/concepts/did-and-didcomm","sidebar":"tutorialSidebar"},{"id":"concepts/index","path":"/guides/0.3/concepts/","sidebar":"tutorialSidebar"},{"id":"concepts/platform-and-environment","path":"/guides/0.3/concepts/platform-and-environment","sidebar":"tutorialSidebar"},{"id":"ecosystem/index","path":"/guides/0.3/ecosystem/","sidebar":"tutorialSidebar"},{"id":"extensions/index","path":"/guides/0.3/extensions/","sidebar":"tutorialSidebar"},{"id":"extensions/push-notifications/index","path":"/guides/0.3/extensions/push-notifications/","sidebar":"tutorialSidebar"},{"id":"extensions/push-notifications/setup","path":"/guides/0.3/extensions/push-notifications/setup","sidebar":"tutorialSidebar"},{"id":"extensions/react-hooks/index","path":"/guides/0.3/extensions/react-hooks/","sidebar":"tutorialSidebar"},{"id":"extensions/react-hooks/setup","path":"/guides/0.3/extensions/react-hooks/setup","sidebar":"tutorialSidebar"},{"id":"extensions/redux-store/index","path":"/guides/0.3/extensions/redux-store/","sidebar":"tutorialSidebar"},{"id":"extensions/redux-store/setup","path":"/guides/0.3/extensions/redux-store/setup","sidebar":"tutorialSidebar"},{"id":"extensions/rest/index","path":"/guides/0.3/extensions/rest/","sidebar":"tutorialSidebar"},{"id":"extensions/rest/setup","path":"/guides/0.3/extensions/rest/setup","sidebar":"tutorialSidebar"},{"id":"getting-started/index","path":"/guides/0.3/getting-started/","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/index","path":"/guides/0.3/getting-started/installation/","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/nodejs/apple-arm","path":"/guides/0.3/getting-started/installation/nodejs/apple-arm","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/nodejs/apple-intel","path":"/guides/0.3/getting-started/installation/nodejs/apple-intel","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/nodejs/index","path":"/guides/0.3/getting-started/installation/nodejs/","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/nodejs/linux","path":"/guides/0.3/getting-started/installation/nodejs/linux","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/nodejs/windows","path":"/guides/0.3/getting-started/installation/nodejs/windows","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/react-native/android","path":"/guides/0.3/getting-started/installation/react-native/android","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/react-native/index","path":"/guides/0.3/getting-started/installation/react-native/","sidebar":"tutorialSidebar"},{"id":"getting-started/installation/react-native/ios","path":"/guides/0.3/getting-started/installation/react-native/ios","sidebar":"tutorialSidebar"},{"id":"getting-started/prerequisites/index","path":"/guides/0.3/getting-started/prerequisites/"},{"id":"getting-started/set-up/index","path":"/guides/0.3/getting-started/set-up/","sidebar":"tutorialSidebar"},{"id":"index","path":"/guides/0.3/","sidebar":"tutorialSidebar"},{"id":"tutorials/agent-config/index","path":"/guides/0.3/tutorials/agent-config/","sidebar":"tutorialSidebar"},{"id":"tutorials/agent-config/logging","path":"/guides/0.3/tutorials/agent-config/logging","sidebar":"tutorialSidebar"},{"id":"tutorials/create-a-connection","path":"/guides/0.3/tutorials/create-a-connection","sidebar":"tutorialSidebar"},{"id":"tutorials/index","path":"/guides/0.3/tutorials/","sidebar":"tutorialSidebar"},{"id":"tutorials/issue-a-credential","path":"/guides/0.3/tutorials/issue-a-credential","sidebar":"tutorialSidebar"},{"id":"tutorials/postgres-database-nodejs/index","path":"/guides/0.3/tutorials/postgres-database-nodejs/","sidebar":"tutorialSidebar"},{"id":"tutorials/postgres-database-nodejs/linux","path":"/guides/0.3/tutorials/postgres-database-nodejs/linux","sidebar":"tutorialSidebar"},{"id":"tutorials/postgres-database-nodejs/macos","path":"/guides/0.3/tutorials/postgres-database-nodejs/macos","sidebar":"tutorialSidebar"},{"id":"tutorials/postgres-database-nodejs/windows","path":"/guides/0.3/tutorials/postgres-database-nodejs/windows","sidebar":"tutorialSidebar"},{"id":"updating/index","path":"/guides/0.3/updating/","sidebar":"tutorialSidebar"},{"id":"updating/update-assistant","path":"/guides/0.3/updating/update-assistant","sidebar":"tutorialSidebar"},{"id":"updating/versions/0.1-to-0.2","path":"/guides/0.3/updating/versions/0.1-to-0.2","sidebar":"tutorialSidebar"},{"id":"updating/versions/0.2-to-0.3","path":"/guides/0.3/updating/versions/0.2-to-0.3","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/guides/0.3/","label":"index"}}}}],"breadcrumbs":true}}}'),o=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(7529);const l=JSON.parse('{"docusaurusVersion":"2.3.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.3.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.3.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.3.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.3.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.3.1"},"@cmfcmf/docusaurus-search-local":{"type":"package","name":"@cmfcmf/docusaurus-search-local","version":"0.10.0"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"2.3.1"}}}'),u={siteConfig:i.default,siteMetadata:l,globalData:a,i18n:o,codeTranslations:s},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:()=>c});var r=n(7294),i=n(412),a=n(5742),o=n(7003);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"50vh",width:"100%",fontSize:"20px"}},r.createElement("h1",null,"This page crashed."),r.createElement("p",null,t.message),r.createElement("button",{type:"button",onClick:n},"Try again"))}function l(e){let{error:t,tryAgain:n}=e;return r.createElement(c,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(a.Z,null,r.createElement("title",null,"Page Error")),r.createElement(o.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const u=e=>r.createElement(l,e);class c extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){i.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??u)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,i={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:()=>a});var r=n(7294),i=n(405);function a(e){return r.createElement(i.ql,e)}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7462),i=n(7294),a=n(3727),o=n(8780),s=n(2263),l=n(3919),u=n(412);const c=i.createContext({collectLink:()=>{}});var d=n(4996);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:g,"data-noBrokenLinkCheck":h,autoAddBaseUrl:b=!0,...v}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,s.Z)(),{withBaseUrl:k}=(0,d.C)(),S=(0,i.useContext)(c),E=(0,i.useRef)(null);(0,i.useImperativeHandle)(t,(()=>E.current));const x=p||f;const _=(0,l.Z)(x),O=x?.replace("pathname://","");let P=void 0!==O?(C=O,b&&(e=>e.startsWith("/"))(C)?k(C):C):void 0;var C;P&&_&&(P=(0,o.applyTrailingSlash)(P,{trailingSlash:y,baseUrl:w}));const T=(0,i.useRef)(!1),I=n?a.OL:a.rU,A=u.Z.canUseIntersectionObserver,L=(0,i.useRef)(),R=()=>{T.current||null==P||(window.docusaurus.preload(P),T.current=!0)};(0,i.useEffect)((()=>(!A&&_&&null!=P&&window.docusaurus.prefetch(P),()=>{A&&L.current&&L.current.disconnect()})),[L,P,A,_]);const N=P?.startsWith("#")??!1,j=!P||!_||N;return j||h||S.collectLink(P),j?i.createElement("a",(0,r.Z)({ref:E,href:P},x&&!_&&{target:"_blank",rel:"noopener noreferrer"},v)):i.createElement(I,(0,r.Z)({},v,{onMouseEnter:R,onTouchStart:R,innerRef:e=>{E.current=e,A&&e&&_&&(L.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(L.current.unobserve(e),L.current.disconnect(),null!=P&&window.docusaurus.prefetch(P))}))})),L.current.observe(e))},to:P},n&&{isActive:g,activeClassName:m}))}const f=i.forwardRef(p)},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l,I:()=>s});var r=n(7294);function i(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 a=n(7529);function o(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 a[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return i(o({message:n,id:r}),t)}function l(e){let{children:t,id:n,values:a}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const s=o({message:t,id:n});return r.createElement(r.Fragment,null,i(s,a))}},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 i(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>i,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>o,Z:()=>s});var r=n(7294),i=n(2263),a=n(3919);function o(){const{siteConfig:{baseUrl:e,url:t}}=(0,i.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:i=!1,absolute:o=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,a.b)(n))return n;if(i)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return o?e+s:s}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=o();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),i=n(8940);function a(){return(0,r.useContext)(i._)}},8084:(e,t,n)=>{"use strict";n.d(t,{OD:()=>a,eZ:()=>o});var r=n(2263),i=n(9935);function a(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 o(e,t,n){void 0===t&&(t=i.m),void 0===n&&(n={});const r=a(e),o=r?.[t];if(!o&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return o}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),i=n(8934);function a(){return(0,r.useContext)(i._)}},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function i(e){const t={};return function e(n,i){Object.entries(n).forEach((n=>{let[a,o]=n;const s=i?`${i}.${a}`:a;r(o)?e(o,s):t[s]=o}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>i,z:()=>a});var r=n(7294);const i=r.createContext(null);function a(e){let{children:t,value:n}=e;const a=r.useContext(i),o=(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:a,value:n})),[a,n]);return r.createElement(i.Provider,{value:o},t)}},4104:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>g,gA:()=>d,WS:()=>p,_r:()=>u,Jo:()=>h,zh:()=>c,yW:()=>m,gB:()=>f});var r=n(6550),i=n(8084);const a=e=>e.versions.find((e=>e.isLast));function o(e,t){const n=a(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function s(e,t){const n=o(e,t),i=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:i,alternateDocVersions:i?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(i.id):{}}}const l={},u=()=>(0,i.OD)("docusaurus-plugin-content-docs")??l,c=e=>(0,i.eZ)("docusaurus-plugin-content-docs",e,{failfast:!0});function d(e){void 0===e&&(e={});const t=u(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const i=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})})),a=i?{pluginId:i[0],pluginData:i[1]}:void 0;if(!a&&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 a}(t,n,e)}function p(e){void 0===e&&(e={});const t=d(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:o(t.pluginData,n)}}function f(e){return c(e).versions}function m(e){const t=c(e);return a(t)}function g(e){const t=c(e),{pathname:n}=(0,r.TH)();return s(t,n)}function h(e){const t=c(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=a(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(4865),i=n.n(r);i().configure({showSpinner:!1});const a={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{i().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){i().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(7410),i=n(6809);!function(e){const{themeConfig:{prism:t}}=i.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294);const i={iconExternalLink:"iconExternalLink_nPIU"};function a(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:i.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"}))}},7003:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ua});var r=n(7294),i=n(6010),a=n(4763),o=n(1944),s=n(7462),l=n(6550),u=n(5999),c=n(5936);const d="docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(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 g(e){const t=e.children??m,{containerRef:n,onClick:i}=f();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,s.Z)({},e,{href:`#${d}`,onClick:i}),t))}var h=n(5281),b=n(9727);const v={skipToContent:"skipToContent_fXgn"};function y(){return r.createElement(g,{className:v.skipToContent})}var w=n(6668),k=n(9689);function S(e){let{width:t=21,height:n=21,color:i="currentColor",strokeWidth:a=1.2,className:o,...l}=e;return r.createElement("svg",(0,s.Z)({viewBox:"0 0 15 15",width:t,height:n},l),r.createElement("g",{stroke:i,strokeWidth:a},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const E={closeButton:"closeButton_CVFx"};function x(e){return r.createElement("button",(0,s.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,i.Z)("clean-btn close",E.closeButton,e.className)}),r.createElement(S,{width:14,height:14,strokeWidth:3.1}))}const _={content:"content_knG7"};function O(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,s.Z)({},e,{className:(0,i.Z)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const P={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function C(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:i,textColor:a,isCloseable:o}=e;return r.createElement("div",{className:P.announcementBar,style:{backgroundColor:i,color:a},role:"banner"},o&&r.createElement("div",{className:P.announcementBarPlaceholder}),r.createElement(O,{className:P.announcementBarContent}),o&&r.createElement(x,{onClick:n,className:P.announcementBarClose}))}var T=n(3163),I=n(2466);var A=n(902),L=n(3102);const R=r.createContext(null);function N(e){let{children:t}=e;const n=function(){const e=(0,T.e)(),t=(0,L.HY)(),[n,i]=(0,r.useState)(!1),a=null!==t.component,o=(0,A.D9)(a);return(0,r.useEffect)((()=>{a&&!o&&i(!0)}),[a,o]),(0,r.useEffect)((()=>{a?e.shown||i(!0):i(!1)}),[e.shown,a]),(0,r.useMemo)((()=>[n,i]),[n])}();return r.createElement(R.Provider,{value:n},t)}function j(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function D(){const e=(0,r.useContext)(R);if(!e)throw new A.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,i=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,L.HY)();return(0,r.useMemo)((()=>({shown:t,hide:i,content:j(a)})),[i,a,t])}function M(e){let{header:t,primaryMenu:n,secondaryMenu:a}=e;const{shown:o}=D();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,i.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},a)))}var F=n(2949),B=n(2389);function z(e){return r.createElement("svg",(0,s.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 U(e){return r.createElement("svg",(0,s.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 q={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function $(e){let{className:t,value:n,onChange:a}=e;const o=(0,B.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"===n?(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,i.Z)(q.toggle,t)},r.createElement("button",{className:(0,i.Z)("clean-btn",q.toggleButton,!o&&q.toggleButtonDisabled),type:"button",onClick:()=>a("dark"===n?"light":"dark"),disabled:!o,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(z,{className:(0,i.Z)(q.toggleIcon,q.lightToggleIcon)}),r.createElement(U,{className:(0,i.Z)(q.toggleIcon,q.darkToggleIcon)})))}const H=r.memo($);function G(e){let{className:t}=e;const n=(0,w.L)().colorMode.disableSwitch,{colorMode:i,setColorMode:a}=(0,F.I)();return n?null:r.createElement(H,{className:t,value:i,onChange:a})}var Q=n(1327);function V(){return r.createElement(Q.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Z(){const e=(0,T.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(S,{color:"var(--ifm-color-emphasis-600)"}))}function W(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(V,null),r.createElement(G,{className:"margin-right--md"}),r.createElement(Z,null))}var K=n(9960),Y=n(4996),X=n(3919);function J(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var ee=n(9471);function te(e){let{activeBasePath:t,activeBaseRegex:n,to:i,href:a,label:o,html:l,isDropdownLink:u,prependBaseUrlToHref:c,...d}=e;const p=(0,Y.Z)(i),f=(0,Y.Z)(t),m=(0,Y.Z)(a,{forcePrependBaseUrl:!0}),g=o&&a&&!(0,X.Z)(a),h=l?{dangerouslySetInnerHTML:{__html:l}}:{children:r.createElement(r.Fragment,null,o,g&&r.createElement(ee.Z,u&&{width:12,height:12}))};return a?r.createElement(K.Z,(0,s.Z)({href:c?m:a},d,h)):r.createElement(K.Z,(0,s.Z)({to:p,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?J(n,t.pathname):t.pathname.startsWith(f)},d,h))}function ne(e){let{className:t,isDropdownItem:n=!1,...a}=e;const o=r.createElement(te,(0,s.Z)({className:(0,i.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},a));return n?r.createElement("li",null,o):o}function re(e){let{className:t,isDropdownItem:n,...a}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(te,(0,s.Z)({className:(0,i.Z)("menu__link",t)},a)))}function ie(e){let{mobile:t=!1,position:n,...i}=e;const a=t?re:ne;return r.createElement(a,(0,s.Z)({},i,{activeClassName:i.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ae=n(6043),oe=n(8596),se=n(2263);function le(e,t){return e.some((e=>function(e,t){return!!(0,oe.Mg)(e.to,t)||!!J(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ue(e){let{items:t,position:n,className:a,onClick:o,...l}=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.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[u]),r.createElement("div",{ref:u,className:(0,i.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c})},r.createElement(te,(0,s.Z)({"aria-haspopup":"true","aria-expanded":c,role:"button",href:l.to?void 0:"#",className:(0,i.Z)("navbar__link",a)},l,{onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))}}),l.children??l.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,n)=>r.createElement(Pi,(0,s.Z)({isDropdownItem:!0,onKeyDown:e=>{if(n===t.length-1&&"Tab"===e.key){e.preventDefault(),d(!1);const t=u.current.nextElementSibling;if(t){(t instanceof HTMLAnchorElement?t:t.querySelector("a")).focus()}}},activeClassName:"dropdown__link--active"},e,{key:n}))))))}function ce(e){let{items:t,className:n,position:a,onClick:o,...u}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,l.TH)();return t.replace(e,"/")}(),d=le(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ae.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),r.createElement("li",{className:(0,i.Z)("menu__list-item",{"menu__list-item--collapsed":p})},r.createElement(te,(0,s.Z)({role:"button",className:(0,i.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},u,{onClick:e=>{e.preventDefault(),f()}}),u.children??u.label),r.createElement(ae.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p},t.map(((e,t)=>r.createElement(Pi,(0,s.Z)({mobile:!0,isDropdownItem:!0,onClick:o,activeClassName:"menu__link--active"},e,{key:t}))))))}function de(e){let{mobile:t=!1,...n}=e;const i=t?ce:ue;return r.createElement(i,n)}var pe=n(4711);function fe(e){let{width:t=20,height:n=20,...i}=e;return r.createElement("svg",(0,s.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},i),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_nlXk";var ge=n(3935);function he(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 be(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ve(e,t,n){var r,i=t.initialState;return{getState:function(){return i},dispatch:function(r,a){var o=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?he(Object(n),!0).forEach((function(t){be(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):he(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},i);i=e(i,{type:r,props:t,payload:a}),n({state:i,prevState:o})},pendingRequests:(r=[],{add:function(e){return r.push(e),e.finally((function(){r=r.filter((function(t){return t!==e}))}))},cancelAll:function(){r.forEach((function(e){return e.cancel()}))},isEmpty:function(){return 0===r.length}})}}function ye(e){return e.reduce((function(e,t){return e.concat(t)}),[])}function we(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 ke(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?we(Object(n),!0).forEach((function(t){Se(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):we(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Se(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ee(e){return 0===e.collections.length?0:e.collections.reduce((function(e,t){return e+t.items.length}),0)}var xe=0;function _e(){return"autocomplete-".concat(xe++)}var Oe=function(){};function Pe(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 Ce(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pe(Object(n),!0).forEach((function(t){Te(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Te(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ie(e){return function(e){if(Array.isArray(e))return Ae(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Ae(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ae(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ae(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Le(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 Re(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Le(Object(n),!0).forEach((function(t){Ne(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Le(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function je(e,t){var n,r="undefined"!=typeof window?window:{},i=e.plugins||[];return Re(Re({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultActiveItemId:null,stallThreshold:300,environment:r,shouldPanelOpen:function(e){return Ee(e.state)>0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:_e(),plugins:i,initialState:Re({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),i.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),i.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),i.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(Ie(i.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var n=[];return Promise.resolve(e(t)).then((function(e){return Array.isArray(e),Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t={getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:Oe,onResolve:Oe};Object.keys(t).forEach((function(e){t[e].__default=!0}));var r=Ce(Ce({},t),e);return Promise.resolve(r)})))}))}(e,n)}))).then((function(e){return ye(e)})).then((function(e){return e.map((function(e){return Re(Re({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))},onResolve:function(n){e.onResolve(n),t.forEach((function(e){var t;return null===(t=e.onResolve)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:Re({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}function De(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 Me(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?De(Object(n),!0).forEach((function(t){Fe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):De(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Fe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Be(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 ze(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Be(Object(n),!0).forEach((function(t){Ue(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Be(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ue(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function qe(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 $e(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?qe(Object(n),!0).forEach((function(t){He(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):qe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function He(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ge(e){return function(e){if(Array.isArray(e))return Qe(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Qe(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Qe(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Qe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Ve(e){return Boolean(e.execute)}function Ze(e,t,n){if(i=e,Boolean(null==i?void 0:i.execute)){var r="algolia"===e.requesterId?Object.assign.apply(Object,[{}].concat(Ge(Object.keys(n.context).map((function(e){var t;return null===(t=n.context[e])||void 0===t?void 0:t.__algoliaSearchParameters}))))):{};return $e($e({},e),{},{requests:e.queries.map((function(n){return{query:"algolia"===e.requesterId?$e($e({},n),{},{params:$e($e({},r),n.params)}):n,sourceId:t,transformResponse:e.transformResponse}}))})}var i;return{items:e,sourceId:t}}function We(e){var t=e.reduce((function(e,t){if(!Ve(t))return e.push(t),e;var n=t.searchClient,r=t.execute,i=t.requesterId,a=t.requests,o=e.find((function(e){return Ve(t)&&Ve(e)&&e.searchClient===n&&Boolean(i)&&e.requesterId===i}));if(o){var s;(s=o.items).push.apply(s,Ge(a))}else{var l={execute:r,requesterId:i,items:a,searchClient:n};e.push(l)}return e}),[]).map((function(e){if(!Ve(e))return Promise.resolve(e);var t=e,n=t.execute,r=t.items;return n({searchClient:t.searchClient,requests:r})}));return Promise.all(t).then((function(e){return ye(e)}))}function Ke(e,t,n){return t.map((function(t){var r=e.filter((function(e){return e.sourceId===t.sourceId})),i=r.map((function(e){return e.items})),a=r[0].transformResponse,o=a?a(function(e){var t=e.map((function(e){var t;return ze(ze({},e),{},{hits:null===(t=e.hits)||void 0===t?void 0:t.map((function(t){return ze(ze({},t),{},{__autocomplete_indexName:e.index,__autocomplete_queryID:e.queryID})}))})}));return{results:t,hits:t.map((function(e){return e.hits})).filter(Boolean),facetHits:t.map((function(e){var t;return null===(t=e.facetHits)||void 0===t?void 0:t.map((function(e){return{label:e.value,count:e.count,_highlightResult:{label:{value:e.highlighted}}}}))})).filter(Boolean)}}(i)):i;return t.onResolve({source:t,results:i,items:o,state:n.getState()}),Array.isArray(o),o.every(Boolean),'The `getItems` function from source "'.concat(t.sourceId,'" must return an array of items but returned ').concat(JSON.stringify(void 0),".\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems"),{source:t,items:o}}))}function Ye(e,t){var n=t;return{then:function(t,r){return Ye(e.then(et(t,n,e),et(r,n,e)),n)},catch:function(t){return Ye(e.catch(et(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),Ye(e.finally(et(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===n.isCanceled}}}function Xe(e){return Ye(new Promise((function(t,n){return e(t,n)})),{isCanceled:!1,onCancelList:[]})}function Je(e){return Ye(e,{isCanceled:!1,onCancelList:[]})}function et(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}function tt(e){var t=function(e){var t=e.collections.map((function(e){return e.items.length})).reduce((function(e,t,n){var r=(e[n-1]||0)+t;return e.push(r),e}),[]).reduce((function(t,n){return n<=e.activeItemId?t+1:t}),0);return e.collections[t]}(e);if(!t)return null;var n=t.items[function(e){for(var t=e.state,n=e.collection,r=!1,i=0,a=0;!1===r;){var o=t.collections[i];if(o===n){r=!0;break}a+=o.items.length,i++}return t.activeItemId-a}({state:e,collection:t})],r=t.source;return{item:n,itemInputValue:r.getItemInputValue({item:n,state:e}),itemUrl:r.getItemUrl({item:n,state:e}),source:r}}Xe.resolve=function(e){return Je(Promise.resolve(e))},Xe.reject=function(e){return Je(Promise.reject(e))};var nt=["event","nextState","props","query","refresh","store"];function rt(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 it(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?rt(Object(n),!0).forEach((function(t){at(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):rt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function at(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ot(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var st,lt,ut,ct=null,dt=(st=-1,lt=-1,ut=void 0,function(e){var t=++st;return Promise.resolve(e).then((function(e){return ut&&t<lt?ut:(lt=t,ut=e,e)}))});function pt(e){var t=e.event,n=e.nextState,r=void 0===n?{}:n,i=e.props,a=e.query,o=e.refresh,s=e.store,l=ot(e,nt);ct&&i.environment.clearTimeout(ct);var u=l.setCollections,c=l.setIsOpen,d=l.setQuery,p=l.setActiveItemId,f=l.setStatus;if(d(a),p(i.defaultActiveItemId),!a&&!1===i.openOnFocus){var m,g=s.getState().collections.map((function(e){return it(it({},e),{},{items:[]})}));f("idle"),u(g),c(null!==(m=r.isOpen)&&void 0!==m?m:i.shouldPanelOpen({state:s.getState()}));var h=Je(dt(g).then((function(){return Promise.resolve()})));return s.pendingRequests.add(h)}f("loading"),ct=i.environment.setTimeout((function(){f("stalled")}),i.stallThreshold);var b=Je(dt(i.getSources(it({query:a,refresh:o,state:s.getState()},l)).then((function(e){return Promise.all(e.map((function(e){return Promise.resolve(e.getItems(it({query:a,refresh:o,state:s.getState()},l))).then((function(t){return Ze(t,e.sourceId,s.getState())}))}))).then(We).then((function(t){return Ke(t,e,s)})).then((function(e){return function(e){var t=e.collections,n=e.props,r=e.state,i=t.reduce((function(e,t){return Me(Me({},e),{},Fe({},t.source.sourceId,Me(Me({},t.source),{},{getItems:function(){return ye(t.items)}})))}),{}),a=n.plugins.reduce((function(e,t){return t.reshape?t.reshape(e):e}),{sourcesBySourceId:i,state:r}).sourcesBySourceId;return ye(n.reshape({sourcesBySourceId:a,sources:Object.values(a),state:r})).filter(Boolean).map((function(e){return{source:e,items:e.getItems()}}))}({collections:e,props:i,state:s.getState()})}))})))).then((function(e){var n;f("idle"),u(e);var d=i.shouldPanelOpen({state:s.getState()});c(null!==(n=r.isOpen)&&void 0!==n?n:i.openOnFocus&&!a&&d||d);var p=tt(s.getState());if(null!==s.getState().activeItemId&&p){var m=p.item,g=p.itemInputValue,h=p.itemUrl,b=p.source;b.onActive(it({event:t,item:m,itemInputValue:g,itemUrl:h,refresh:o,source:b,state:s.getState()},l))}})).finally((function(){f("idle"),ct&&i.environment.clearTimeout(ct)}));return s.pendingRequests.add(b)}var ft=["event","props","refresh","store"];function mt(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 gt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?mt(Object(n),!0).forEach((function(t){ht(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):mt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ht(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function bt(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var vt=/((gt|sm)-|galaxy nexus)|samsung[- ]/i;var yt=["props","refresh","store"],wt=["inputElement","formElement","panelElement"],kt=["inputElement"],St=["inputElement","maxLength"],Et=["sourceIndex"],xt=["sourceIndex"],_t=["item","source","sourceIndex"];function Ot(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 Pt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ot(Object(n),!0).forEach((function(t){Ct(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ot(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ct(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Tt(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function It(e){var t=e.props,n=e.refresh,r=e.store,i=Tt(e,yt),a=function(e,t){return void 0!==t?"".concat(e,"-").concat(t):e};return{getEnvironmentProps:function(e){var n=e.inputElement,i=e.formElement,a=e.panelElement;function o(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[i,a].some((function(t){return n=t,r=e.target,n===r||n.contains(r);var n,r}))&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return Pt({onTouchStart:o,onMouseDown:o,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},Tt(e,wt))},getRootProps:function(e){return Pt({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){e.inputElement;return Pt({action:"",noValidate:!0,role:"search",onSubmit:function(a){var o;a.preventDefault(),t.onSubmit(Pt({event:a,refresh:n,state:r.getState()},i)),r.dispatch("submit",null),null===(o=e.inputElement)||void 0===o||o.blur()},onReset:function(a){var o;a.preventDefault(),t.onReset(Pt({event:a,refresh:n,state:r.getState()},i)),r.dispatch("reset",null),null===(o=e.inputElement)||void 0===o||o.focus()}},Tt(e,kt))},getLabelProps:function(e){var n=e||{},r=n.sourceIndex,i=Tt(n,Et);return Pt({htmlFor:"".concat(a(t.id,r),"-input"),id:"".concat(a(t.id,r),"-label")},i)},getInputProps:function(e){var a;function o(e){(t.openOnFocus||Boolean(r.getState().query))&&pt(Pt({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},i)),r.dispatch("focus",null)}var s=e||{},l=(s.inputElement,s.maxLength),u=void 0===l?512:l,c=Tt(s,St),d=tt(r.getState()),p=function(e){return Boolean(e&&e.match(vt))}((null===(a=t.environment.navigator)||void 0===a?void 0:a.userAgent)||""),f=null!=d&&d.itemUrl&&!p?"go":"search";return Pt({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?"".concat(t.id,"-item-").concat(r.getState().activeItemId):void 0,"aria-controls":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:r.getState().completion||r.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:f,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:u,type:"search",onChange:function(e){pt(Pt({event:e,props:t,query:e.currentTarget.value.slice(0,u),refresh:n,store:r},i))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,i=e.store,a=bt(e,ft);if("ArrowUp"===t.key||"ArrowDown"===t.key){var o=function(){var e=n.environment.document.getElementById("".concat(n.id,"-item-").concat(i.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},s=function(){var e=tt(i.getState());if(null!==i.getState().activeItemId&&e){var n=e.item,o=e.itemInputValue,s=e.itemUrl,l=e.source;l.onActive(gt({event:t,item:n,itemInputValue:o,itemUrl:s,refresh:r,source:l,state:i.getState()},a))}};t.preventDefault(),!1===i.getState().isOpen&&(n.openOnFocus||Boolean(i.getState().query))?pt(gt({event:t,props:n,query:i.getState().query,refresh:r,store:i},a)).then((function(){i.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),s(),setTimeout(o,0)})):(i.dispatch(t.key,{}),s(),o())}else if("Escape"===t.key)t.preventDefault(),i.dispatch(t.key,null),i.pendingRequests.cancelAll();else if("Tab"===t.key)i.dispatch("blur",null),i.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===i.getState().activeItemId||i.getState().collections.every((function(e){return 0===e.items.length})))return void(n.debug||i.pendingRequests.cancelAll());t.preventDefault();var l=tt(i.getState()),u=l.item,c=l.itemInputValue,d=l.itemUrl,p=l.source;if(t.metaKey||t.ctrlKey)void 0!==d&&(p.onSelect(gt({event:t,item:u,itemInputValue:c,itemUrl:d,refresh:r,source:p,state:i.getState()},a)),n.navigator.navigateNewTab({itemUrl:d,item:u,state:i.getState()}));else if(t.shiftKey)void 0!==d&&(p.onSelect(gt({event:t,item:u,itemInputValue:c,itemUrl:d,refresh:r,source:p,state:i.getState()},a)),n.navigator.navigateNewWindow({itemUrl:d,item:u,state:i.getState()}));else if(t.altKey);else{if(void 0!==d)return p.onSelect(gt({event:t,item:u,itemInputValue:c,itemUrl:d,refresh:r,source:p,state:i.getState()},a)),void n.navigator.navigate({itemUrl:d,item:u,state:i.getState()});pt(gt({event:t,nextState:{isOpen:!1},props:n,query:c,refresh:r,store:i},a)).then((function(){p.onSelect(gt({event:t,item:u,itemInputValue:c,itemUrl:d,refresh:r,source:p,state:i.getState()},a))}))}}}(Pt({event:e,props:t,refresh:n,store:r},i))},onFocus:o,onBlur:Oe,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||o(n)}},c)},getPanelProps:function(e){return Pt({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){var n=e||{},r=n.sourceIndex,i=Tt(n,xt);return Pt({role:"listbox","aria-labelledby":"".concat(a(t.id,r),"-label"),id:"".concat(a(t.id,r),"-list")},i)},getItemProps:function(e){var o=e.item,s=e.source,l=e.sourceIndex,u=Tt(e,_t);return Pt({id:"".concat(a(t.id,l),"-item-").concat(o.__autocomplete_id),role:"option","aria-selected":r.getState().activeItemId===o.__autocomplete_id,onMouseMove:function(e){if(o.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",o.__autocomplete_id);var t=tt(r.getState());if(null!==r.getState().activeItemId&&t){var a=t.item,s=t.itemInputValue,l=t.itemUrl,u=t.source;u.onActive(Pt({event:e,item:a,itemInputValue:s,itemUrl:l,refresh:n,source:u,state:r.getState()},i))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var a=s.getItemInputValue({item:o,state:r.getState()}),l=s.getItemUrl({item:o,state:r.getState()});(l?Promise.resolve():pt(Pt({event:e,nextState:{isOpen:!1},props:t,query:a,refresh:n,store:r},i))).then((function(){s.onSelect(Pt({event:e,item:o,itemInputValue:a,itemUrl:l,refresh:n,source:s,state:r.getState()},i))}))}},u)}}}var At="1.8.3",Lt=[{segment:"autocomplete-core",version:At}];function Rt(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 Nt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Rt(Object(n),!0).forEach((function(t){jt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Rt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function jt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Dt(e){var t,n,r,i,a=e.plugins,o=e.options,s=null===(t=((null===(n=o.__autocomplete_metadata)||void 0===n?void 0:n.userAgents)||[])[0])||void 0===t?void 0:t.segment,l=s?jt({},s,Object.keys((null===(r=o.__autocomplete_metadata)||void 0===r?void 0:r.options)||{})):{};return{plugins:a.map((function(e){return{name:e.name,options:Object.keys(e.__autocomplete_pluginOptions||[])}})),options:Nt({"autocomplete-core":Object.keys(o)},l),ua:Lt.concat((null===(i=o.__autocomplete_metadata)||void 0===i?void 0:i.userAgents)||[])}}function Mt(e){var t,n=e.state;return!1===n.isOpen||null===n.activeItemId?null:(null===(t=tt(n))||void 0===t?void 0:t.itemInputValue)||null}function Ft(e,t,n,r){if(!n)return null;if(e<0&&(null===t||null!==r&&0===t))return n+e;var i=(null===t?-1:t)+e;return i<=-1||i>=n?null===r?null:0:i}function Bt(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 zt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Bt(Object(n),!0).forEach((function(t){Ut(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Bt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ut(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var qt=function(e,t){switch(t.type){case"setActiveItemId":case"mousemove":return zt(zt({},e),{},{activeItemId:t.payload});case"setQuery":return zt(zt({},e),{},{query:t.payload,completion:null});case"setCollections":return zt(zt({},e),{},{collections:t.payload});case"setIsOpen":return zt(zt({},e),{},{isOpen:t.payload});case"setStatus":return zt(zt({},e),{},{status:t.payload});case"setContext":return zt(zt({},e),{},{context:zt(zt({},e.context),t.payload)});case"ArrowDown":var n=zt(zt({},e),{},{activeItemId:t.payload.hasOwnProperty("nextActiveItemId")?t.payload.nextActiveItemId:Ft(1,e.activeItemId,Ee(e),t.props.defaultActiveItemId)});return zt(zt({},n),{},{completion:Mt({state:n})});case"ArrowUp":var r=zt(zt({},e),{},{activeItemId:Ft(-1,e.activeItemId,Ee(e),t.props.defaultActiveItemId)});return zt(zt({},r),{},{completion:Mt({state:r})});case"Escape":return e.isOpen?zt(zt({},e),{},{activeItemId:null,isOpen:!1,completion:null}):zt(zt({},e),{},{activeItemId:null,query:"",status:"idle",collections:[]});case"submit":return zt(zt({},e),{},{activeItemId:null,isOpen:!1,status:"idle"});case"reset":return zt(zt({},e),{},{activeItemId:!0===t.props.openOnFocus?t.props.defaultActiveItemId:null,status:"idle",query:""});case"focus":return zt(zt({},e),{},{activeItemId:t.props.defaultActiveItemId,isOpen:(t.props.openOnFocus||Boolean(e.query))&&t.props.shouldPanelOpen({state:e})});case"blur":return t.props.debug?e:zt(zt({},e),{},{isOpen:!1,activeItemId:null});case"mouseleave":return zt(zt({},e),{},{activeItemId:t.props.defaultActiveItemId});default:return"The reducer action ".concat(JSON.stringify(t.type)," is not supported."),e}};function $t(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 Ht(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$t(Object(n),!0).forEach((function(t){Gt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$t(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Gt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Qt(e){var t=[],n=je(e,t),r=ve(qt,n,(function(e){var t=e.prevState,r=e.state;n.onStateChange(Ht({prevState:t,state:r,refresh:o,navigator:n.navigator},i))})),i=function(e){var t=e.store;return{setActiveItemId:function(e){t.dispatch("setActiveItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var n=0,r=e.map((function(e){return ke(ke({},e),{},{items:ye(e.items).map((function(e){return ke(ke({},e),{},{__autocomplete_id:n++})}))})}));t.dispatch("setCollections",r)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:r}),a=It(Ht({props:n,refresh:o,store:r,navigator:n.navigator},i));function o(){return pt(Ht({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,navigator:n.navigator,query:r.getState().query,refresh:o,store:r},i))}return n.plugins.forEach((function(e){var r;return null===(r=e.subscribe)||void 0===r?void 0:r.call(e,Ht(Ht({},i),{},{navigator:n.navigator,refresh:o,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})},onResolve:function(e){t.push({onResolve:e})}}))})),function(e){var t,n,r=e.metadata,i=e.environment;if(null===(t=i.navigator)||void 0===t||null===(n=t.userAgent)||void 0===n?void 0:n.includes("Algolia Crawler")){var a=i.document.createElement("meta"),o=i.document.querySelector("head");a.name="algolia:metadata",setTimeout((function(){a.content=JSON.stringify(r),o.appendChild(a)}),0)}}({metadata:Dt({plugins:n.plugins,options:e}),environment:n.environment}),Ht(Ht({refresh:o,navigator:n.navigator},a),i)}function Vt(e){return{current:e}}function Zt(e,t){var n=void 0;return function(){for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];n&&clearTimeout(n),n=setTimeout((function(){return e.apply(void 0,i)}),t)}}var Wt=function(e,t,n,r){var i;t[0]=0;for(var a=1;a<t.length;a++){var o=t[a++],s=t[a]?(t[0]|=o?1:2,n[t[a++]]):t[++a];3===o?r[0]=s:4===o?r[1]=Object.assign(r[1]||{},s):5===o?(r[1]=r[1]||{})[t[++a]]=s:6===o?r[1][t[++a]]+=s+"":o?(i=e.apply(s,Wt(e,s,n,["",null])),r.push(i),s[0]?t[0]|=2:(t[a-2]=0,t[a]=i)):r.push(s)}return r},Kt=new Map;function Yt(e){var t=Kt.get(this);return t||(t=new Map,Kt.set(this,t)),(t=Wt(this,t.get(e)||(t.set(e,t=function(e){for(var t,n,r=1,i="",a="",o=[0],s=function(e){1===r&&(e||(i=i.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?o.push(0,e,i):3===r&&(e||i)?(o.push(3,e,i),r=2):2===r&&"..."===i&&e?o.push(4,e,0):2===r&&i&&!e?o.push(5,0,!0,i):r>=5&&((i||!e&&5===r)&&(o.push(r,0,i,n),r=6),e&&(o.push(r,e,0,n),r=6)),i=""},l=0;l<e.length;l++){l&&(1===r&&s(),s(l));for(var u=0;u<e[l].length;u++)t=e[l][u],1===r?"<"===t?(s(),o=[o],r=3):i+=t:4===r?"--"===i&&">"===t?(r=1,i=""):i=t+i[0]:a?t===a?a="":i+=t:'"'===t||"'"===t?a=t:">"===t?(s(),r=1):r&&("="===t?(r=5,n=i,i=""):"/"===t&&(r<5||">"===e[l][u+1])?(s(),3===r&&(o=o[0]),r=o,(o=o[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(s(),r=2):i+=t),3===r&&"!--"===i&&(r=4,o=o[0])}return s(),o}(e)),t),arguments,[])).length>1?t:t[0]}var Xt=function(e){var t=e.environment,n=t.document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","aa-SubmitIcon"),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("width","20"),n.setAttribute("height","20"),n.setAttribute("fill","currentColor");var r=t.document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d","M16.041 15.856c-0.034 0.026-0.067 0.055-0.099 0.087s-0.060 0.064-0.087 0.099c-1.258 1.213-2.969 1.958-4.855 1.958-1.933 0-3.682-0.782-4.95-2.050s-2.050-3.017-2.050-4.95 0.782-3.682 2.050-4.95 3.017-2.050 4.95-2.050 3.682 0.782 4.95 2.050 2.050 3.017 2.050 4.95c0 1.886-0.745 3.597-1.959 4.856zM21.707 20.293l-3.675-3.675c1.231-1.54 1.968-3.493 1.968-5.618 0-2.485-1.008-4.736-2.636-6.364s-3.879-2.636-6.364-2.636-4.736 1.008-6.364 2.636-2.636 3.879-2.636 6.364 1.008 4.736 2.636 6.364 3.879 2.636 6.364 2.636c2.125 0 4.078-0.737 5.618-1.968l3.675 3.675c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414z"),n.appendChild(r),n},Jt=function(e){var t=e.environment,n=t.document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","aa-ClearIcon"),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("width","18"),n.setAttribute("height","18"),n.setAttribute("fill","currentColor");var r=t.document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d","M5.293 6.707l5.293 5.293-5.293 5.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0l5.293-5.293 5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-5.293-5.293 5.293-5.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5.293 5.293-5.293-5.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414z"),n.appendChild(r),n},en=function(e){var t=e.environment.document.createElementNS("http://www.w3.org/2000/svg","svg");return t.setAttribute("class","aa-LoadingIcon"),t.setAttribute("viewBox","0 0 100 100"),t.setAttribute("width","20"),t.setAttribute("height","20"),t.innerHTML='<circle\n cx="50"\n cy="50"\n fill="none"\n r="35"\n stroke="currentColor"\n stroke-dasharray="164.93361431346415 56.97787143782138"\n stroke-width="6"\n>\n <animateTransform\n attributeName="transform"\n type="rotate"\n repeatCount="indefinite"\n dur="1s"\n values="0 50 50;90 50 50;180 50 50;360 50 50"\n keyTimes="0;0.40;0.65;1"\n />\n</circle>',t},tn=["ontouchstart","ontouchend","ontouchmove","ontouchcancel"];function nn(e,t,n){e[t]=null===n?"":"number"!=typeof n?n:n+"px"}function rn(e){this._listeners[e.type](e)}function an(e,t,n){var r,i,a=e[t];if("style"===t)if("string"==typeof n)e.style=n;else if(null===n)e.style="";else for(t in n)a&&n[t]===a[t]||nn(e.style,t,n[t]);else"o"===t[0]&&"n"===t[1]?(r=t!==(t=t.replace(/Capture$/,"")),((i=t.toLowerCase())in e||tn.includes(i))&&(t=i),t=t.slice(2),e._listeners||(e._listeners={}),e._listeners[t]=n,n?a||e.addEventListener(t,rn,r):e.removeEventListener(t,rn,r)):"list"!==t&&"tagName"!==t&&"form"!==t&&"type"!==t&&"size"!==t&&"download"!==t&&"href"!==t&&t in e?e[t]=null==n?"":n:"function"!=typeof n&&"dangerouslySetInnerHTML"!==t&&(null==n||!1===n&&!/^ar/.test(t)?e.removeAttribute(t):e.setAttribute(t,n))}function on(e){return"onChange"===e?"onInput":e}function sn(e,t){for(var n in t)an(e,on(n),t[n])}function ln(e,t){for(var n in t)"o"===n[0]&&"n"===n[1]||an(e,on(n),t[n])}var un=["children"];function cn(e){return function(e){if(Array.isArray(e))return dn(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return dn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return dn(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function dn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function pn(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function fn(e){return function(t,n){var r=n.children,i=void 0===r?[]:r,a=pn(n,un),o=e.document.createElement(t);return sn(o,a),o.append.apply(o,cn(i)),o}}var mn=["autocompleteScopeApi","environment","classNames","getInputProps","getInputPropsCore","isDetached","state"];function gn(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 hn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?gn(Object(n),!0).forEach((function(t){bn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):gn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function bn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function vn(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var yn=function(e){var t=e.autocompleteScopeApi,n=e.environment,r=(e.classNames,e.getInputProps),i=e.getInputPropsCore,a=e.isDetached,o=e.state,s=vn(e,mn),l=fn(n)("input",s),u=r(hn({state:o,props:i({inputElement:l}),inputElement:l},t));return sn(l,hn(hn({},u),{},{onKeyDown:function(e){a&&"Tab"===e.key||u.onKeyDown(e)}})),l};function wn(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 kn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?wn(Object(n),!0).forEach((function(t){Sn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):wn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Sn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var En,xn,_n,On,Pn,Cn,Tn,In={},An=[],Ln=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function Rn(e,t){for(var n in t)e[n]=t[n];return e}function Nn(e){var t=e.parentNode;t&&t.removeChild(e)}function jn(e,t,n){var r,i,a,o={};for(a in t)"key"==a?r=t[a]:"ref"==a?i=t[a]:o[a]=t[a];if(arguments.length>2&&(o.children=arguments.length>3?En.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(a in e.defaultProps)void 0===o[a]&&(o[a]=e.defaultProps[a]);return Dn(e,o,r,i,null)}function Dn(e,t,n,r,i){var a={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==i?++_n:i};return null==i&&null!=xn.vnode&&xn.vnode(a),a}function Mn(e){return e.children}function Fn(e,t){this.props=e,this.context=t}function Bn(e,t){if(null==t)return e.__?Bn(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return"function"==typeof e.type?Bn(e):null}function zn(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return zn(e)}}function Un(e){(!e.__d&&(e.__d=!0)&&On.push(e)&&!qn.__r++||Pn!==xn.debounceRendering)&&((Pn=xn.debounceRendering)||Cn)(qn)}function qn(){var e,t,n,r,i,a,o,s;for(On.sort(Tn);e=On.shift();)e.__d&&(t=On.length,r=void 0,i=void 0,o=(a=(n=e).__v).__e,(s=n.__P)&&(r=[],(i=Rn({},a)).__v=a.__v+1,Yn(s,a,i,n.__n,void 0!==s.ownerSVGElement,null!=a.__h?[o]:null,r,null==o?Bn(a):o,a.__h),Xn(r,a),a.__e!=o&&zn(a)),On.length>t&&On.sort(Tn));qn.__r=0}function $n(e,t,n,r,i,a,o,s,l,u){var c,d,p,f,m,g,h,b=r&&r.__k||An,v=b.length;for(n.__k=[],c=0;c<t.length;c++)if(null!=(f=n.__k[c]=null==(f=t[c])||"boolean"==typeof f||"function"==typeof f?null:"string"==typeof f||"number"==typeof f||"bigint"==typeof f?Dn(null,f,null,null,f):Array.isArray(f)?Dn(Mn,{children:f},null,null,null):f.__b>0?Dn(f.type,f.props,f.key,f.ref?f.ref:null,f.__v):f)){if(f.__=n,f.__b=n.__b+1,null===(p=b[c])||p&&f.key==p.key&&f.type===p.type)b[c]=void 0;else for(d=0;d<v;d++){if((p=b[d])&&f.key==p.key&&f.type===p.type){b[d]=void 0;break}p=null}Yn(e,f,p=p||In,i,a,o,s,l,u),m=f.__e,(d=f.ref)&&p.ref!=d&&(h||(h=[]),p.ref&&h.push(p.ref,null,f),h.push(d,f.__c||m,f)),null!=m?(null==g&&(g=m),"function"==typeof f.type&&f.__k===p.__k?f.__d=l=Hn(f,l,e):l=Gn(e,f,p,b,m,l),"function"==typeof n.type&&(n.__d=l)):l&&p.__e==l&&l.parentNode!=e&&(l=Bn(p))}for(n.__e=g,c=v;c--;)null!=b[c]&&("function"==typeof n.type&&null!=b[c].__e&&b[c].__e==n.__d&&(n.__d=Qn(r).nextSibling),tr(b[c],b[c]));if(h)for(c=0;c<h.length;c++)er(h[c],h[++c],h[++c])}function Hn(e,t,n){for(var r,i=e.__k,a=0;i&&a<i.length;a++)(r=i[a])&&(r.__=e,t="function"==typeof r.type?Hn(r,t,n):Gn(n,r,r,i,r.__e,t));return t}function Gn(e,t,n,r,i,a){var o,s,l;if(void 0!==t.__d)o=t.__d,t.__d=void 0;else if(null==n||i!=a||null==i.parentNode)e:if(null==a||a.parentNode!==e)e.appendChild(i),o=null;else{for(s=a,l=0;(s=s.nextSibling)&&l<r.length;l+=1)if(s==i)break e;e.insertBefore(i,a),o=a}return void 0!==o?o:i.nextSibling}function Qn(e){var t,n,r;if(null==e.type||"string"==typeof e.type)return e.__e;if(e.__k)for(t=e.__k.length-1;t>=0;t--)if((n=e.__k[t])&&(r=Qn(n)))return r;return null}function Vn(e,t,n){"-"===t[0]?e.setProperty(t,null==n?"":n):e[t]=null==n?"":"number"!=typeof n||Ln.test(t)?n:n+"px"}function Zn(e,t,n,r,i){var a;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||Vn(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||Vn(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])a=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+a]=n,n?r||e.addEventListener(t,a?Kn:Wn,a):e.removeEventListener(t,a?Kn:Wn,a);else if("dangerouslySetInnerHTML"!==t){if(i)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!==t&&"height"!==t&&"href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null==n||!1===n&&"-"!==t[4]?e.removeAttribute(t):e.setAttribute(t,n))}}function Wn(e){return this.l[e.type+!1](xn.event?xn.event(e):e)}function Kn(e){return this.l[e.type+!0](xn.event?xn.event(e):e)}function Yn(e,t,n,r,i,a,o,s,l){var u,c,d,p,f,m,g,h,b,v,y,w,k,S,E,x=t.type;if(void 0!==t.constructor)return null;null!=n.__h&&(l=n.__h,s=t.__e=n.__e,t.__h=null,a=[s]),(u=xn.__b)&&u(t);try{e:if("function"==typeof x){if(h=t.props,b=(u=x.contextType)&&r[u.__c],v=u?b?b.props.value:u.__:r,n.__c?g=(c=t.__c=n.__c).__=c.__E:("prototype"in x&&x.prototype.render?t.__c=c=new x(h,v):(t.__c=c=new Fn(h,v),c.constructor=x,c.render=nr),b&&b.sub(c),c.props=h,c.state||(c.state={}),c.context=v,c.__n=r,d=c.__d=!0,c.__h=[],c._sb=[]),null==c.__s&&(c.__s=c.state),null!=x.getDerivedStateFromProps&&(c.__s==c.state&&(c.__s=Rn({},c.__s)),Rn(c.__s,x.getDerivedStateFromProps(h,c.__s))),p=c.props,f=c.state,c.__v=t,d)null==x.getDerivedStateFromProps&&null!=c.componentWillMount&&c.componentWillMount(),null!=c.componentDidMount&&c.__h.push(c.componentDidMount);else{if(null==x.getDerivedStateFromProps&&h!==p&&null!=c.componentWillReceiveProps&&c.componentWillReceiveProps(h,v),!c.__e&&null!=c.shouldComponentUpdate&&!1===c.shouldComponentUpdate(h,c.__s,v)||t.__v===n.__v){for(t.__v!==n.__v&&(c.props=h,c.state=c.__s,c.__d=!1),c.__e=!1,t.__e=n.__e,t.__k=n.__k,t.__k.forEach((function(e){e&&(e.__=t)})),y=0;y<c._sb.length;y++)c.__h.push(c._sb[y]);c._sb=[],c.__h.length&&o.push(c);break e}null!=c.componentWillUpdate&&c.componentWillUpdate(h,c.__s,v),null!=c.componentDidUpdate&&c.__h.push((function(){c.componentDidUpdate(p,f,m)}))}if(c.context=v,c.props=h,c.__P=e,w=xn.__r,k=0,"prototype"in x&&x.prototype.render){for(c.state=c.__s,c.__d=!1,w&&w(t),u=c.render(c.props,c.state,c.context),S=0;S<c._sb.length;S++)c.__h.push(c._sb[S]);c._sb=[]}else do{c.__d=!1,w&&w(t),u=c.render(c.props,c.state,c.context),c.state=c.__s}while(c.__d&&++k<25);c.state=c.__s,null!=c.getChildContext&&(r=Rn(Rn({},r),c.getChildContext())),d||null==c.getSnapshotBeforeUpdate||(m=c.getSnapshotBeforeUpdate(p,f)),E=null!=u&&u.type===Mn&&null==u.key?u.props.children:u,$n(e,Array.isArray(E)?E:[E],t,n,r,i,a,o,s,l),c.base=t.__e,t.__h=null,c.__h.length&&o.push(c),g&&(c.__E=c.__=null),c.__e=!1}else null==a&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=Jn(n.__e,t,n,r,i,a,o,l);(u=xn.diffed)&&u(t)}catch(e){t.__v=null,(l||null!=a)&&(t.__e=s,t.__h=!!l,a[a.indexOf(s)]=null),xn.__e(e,t,n)}}function Xn(e,t){xn.__c&&xn.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){xn.__e(e,t.__v)}}))}function Jn(e,t,n,r,i,a,o,s){var l,u,c,d=n.props,p=t.props,f=t.type,m=0;if("svg"===f&&(i=!0),null!=a)for(;m<a.length;m++)if((l=a[m])&&"setAttribute"in l==!!f&&(f?l.localName===f:3===l.nodeType)){e=l,a[m]=null;break}if(null==e){if(null===f)return document.createTextNode(p);e=i?document.createElementNS("http://www.w3.org/2000/svg",f):document.createElement(f,p.is&&p),a=null,s=!1}if(null===f)d===p||s&&e.data===p||(e.data=p);else{if(a=a&&En.call(e.childNodes),u=(d=n.props||In).dangerouslySetInnerHTML,c=p.dangerouslySetInnerHTML,!s){if(null!=a)for(d={},m=0;m<e.attributes.length;m++)d[e.attributes[m].name]=e.attributes[m].value;(c||u)&&(c&&(u&&c.__html==u.__html||c.__html===e.innerHTML)||(e.innerHTML=c&&c.__html||""))}if(function(e,t,n,r,i){var a;for(a in n)"children"===a||"key"===a||a in t||Zn(e,a,null,n[a],r);for(a in t)i&&"function"!=typeof t[a]||"children"===a||"key"===a||"value"===a||"checked"===a||n[a]===t[a]||Zn(e,a,t[a],n[a],r)}(e,p,d,i,s),c)t.__k=[];else if(m=t.props.children,$n(e,Array.isArray(m)?m:[m],t,n,r,i&&"foreignObject"!==f,a,o,a?a[0]:n.__k&&Bn(n,0),s),null!=a)for(m=a.length;m--;)null!=a[m]&&Nn(a[m]);s||("value"in p&&void 0!==(m=p.value)&&(m!==e.value||"progress"===f&&!m||"option"===f&&m!==d.value)&&Zn(e,"value",m,d.value,!1),"checked"in p&&void 0!==(m=p.checked)&&m!==e.checked&&Zn(e,"checked",m,d.checked,!1))}return e}function er(e,t,n){try{"function"==typeof e?e(t):e.current=t}catch(e){xn.__e(e,n)}}function tr(e,t,n){var r,i;if(xn.unmount&&xn.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.__e||er(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){xn.__e(e,t)}r.base=r.__P=null,e.__c=void 0}if(r=e.__k)for(i=0;i<r.length;i++)r[i]&&tr(r[i],t,n||"function"!=typeof e.type);n||null==e.__e||Nn(e.__e),e.__=e.__e=e.__d=void 0}function nr(e,t,n){return this.constructor(e,n)}function rr(e,t,n){var r,i,a;xn.__&&xn.__(e,t),i=(r="function"==typeof n)?null:n&&n.__k||t.__k,a=[],Yn(t,e=(!r&&n||t).__k=jn(Mn,null,[e]),i||In,In,void 0!==t.ownerSVGElement,!r&&n?[n]:i?null:t.firstChild?En.call(t.childNodes):null,a,!r&&n?n:i?i.__e:t.firstChild,r),Xn(a,e)}function ir(e,t){return t.reduce((function(e,t){return e&&e[t]}),e)}En=An.slice,xn={__e:function(e,t,n,r){for(var i,a,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((a=i.constructor)&&null!=a.getDerivedStateFromError&&(i.setState(a.getDerivedStateFromError(e)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(e,r||{}),o=i.__d),o)return i.__E=i}catch(t){e=t}throw e}},_n=0,Fn.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=Rn({},this.state),"function"==typeof e&&(e=e(Rn({},n),this.props)),e&&Rn(n,e),null!=e&&this.__v&&(t&&this._sb.push(t),Un(this))},Fn.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Un(this))},Fn.prototype.render=Mn,On=[],Cn="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Tn=function(e,t){return e.__v.__b-t.__v.__b},qn.__r=0;var ar="__aa-highlight__",or="__/aa-highlight__";function sr(e){var t=e.highlightedValue.split(ar),n=t.shift(),r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return{get:function(){return e},add:function(t){var n=e[e.length-1];(null==n?void 0:n.isHighlighted)===t.isHighlighted?e[e.length-1]={value:n.value+t.value,isHighlighted:n.isHighlighted}:e.push(t)}}}(n?[{value:n,isHighlighted:!1}]:[]);return t.forEach((function(e){var t=e.split(or);r.add({value:t[0],isHighlighted:!0}),""!==t[1]&&r.add({value:t[1],isHighlighted:!1})})),r.get()}function lr(e){return function(e){if(Array.isArray(e))return ur(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return ur(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ur(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ur(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function cr(e){var t=e.hit,n=e.attribute,r=Array.isArray(n)?n:[n],i=ir(t,["_highlightResult"].concat(lr(r),["value"]));return"string"!=typeof i&&(i=ir(t,r)||""),sr({highlightedValue:i})}function dr(e){var t=e.createElement,n=e.Fragment;function r(e){var r=e.hit,i=e.attribute,a=e.tagName,o=void 0===a?"mark":a;return t(n,{},cr({hit:r,attribute:i}).map((function(e,n){return e.isHighlighted?t(o,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="Highlight",r}var pr={"&":"&","<":"<",">":">",""":'"',"'":"'"},fr=new RegExp(/\w/i),mr=/&(amp|quot|lt|gt|#39);/g,gr=RegExp(mr.source);function hr(e,t){var n,r,i,a=e[t],o=(null===(n=e[t+1])||void 0===n?void 0:n.isHighlighted)||!0,s=(null===(r=e[t-1])||void 0===r?void 0:r.isHighlighted)||!0;return fr.test((i=a.value)&&gr.test(i)?i.replace(mr,(function(e){return pr[e]})):i)||s!==o?a.isHighlighted:s}function br(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 vr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?br(Object(n),!0).forEach((function(t){yr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):br(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function yr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function wr(e){return e.some((function(e){return e.isHighlighted}))?e.map((function(t,n){return vr(vr({},t),{},{isHighlighted:!hr(e,n)})})):e.map((function(e){return vr(vr({},e),{},{isHighlighted:!1})}))}function kr(e){var t=e.createElement,n=e.Fragment;function r(e){var r,i=e.hit,a=e.attribute,o=e.tagName,s=void 0===o?"mark":o;return t(n,{},(r={hit:i,attribute:a},wr(cr(r))).map((function(e,n){return e.isHighlighted?t(s,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="ReverseHighlight",r}function Sr(e){return function(e){if(Array.isArray(e))return Er(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Er(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Er(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Er(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function xr(e){var t=e.hit,n=e.attribute,r=Array.isArray(n)?n:[n],i=ir(t,["_snippetResult"].concat(Sr(r),["value"]));return"string"!=typeof i&&(i=ir(t,r)||""),sr({highlightedValue:i})}function _r(e){var t=e.createElement,n=e.Fragment;function r(e){var r,i=e.hit,a=e.attribute,o=e.tagName,s=void 0===o?"mark":o;return t(n,{},(r={hit:i,attribute:a},wr(xr(r))).map((function(e,n){return e.isHighlighted?t(s,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="ReverseSnippet",r}function Or(e){var t=e.createElement,n=e.Fragment;function r(e){var r=e.hit,i=e.attribute,a=e.tagName,o=void 0===a?"mark":a;return t(n,{},xr({hit:r,attribute:i}).map((function(e,n){return e.isHighlighted?t(o,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="Snippet",r}function Pr(e,t){if("string"==typeof t){var n=e.document.querySelector(t);return"The element ".concat(JSON.stringify(t)," is not in the document."),n}return t}function Cr(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.reduce((function(e,t){return Object.keys(t).forEach((function(n){var r=e[n],i=t[n];r!==i&&(e[n]=[r,i].filter(Boolean).join(" "))})),e}),{})}var Tr=["classNames","container","getEnvironmentProps","getFormProps","getInputProps","getItemProps","getLabelProps","getListProps","getPanelProps","getRootProps","panelContainer","panelPlacement","render","renderNoResults","renderer","detachedMediaQuery","components","translations"];function Ir(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 Ar(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ir(Object(n),!0).forEach((function(t){Lr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ir(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Lr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Rr(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var Nr={clearButton:"aa-ClearButton",detachedCancelButton:"aa-DetachedCancelButton",detachedContainer:"aa-DetachedContainer",detachedFormContainer:"aa-DetachedFormContainer",detachedOverlay:"aa-DetachedOverlay",detachedSearchButton:"aa-DetachedSearchButton",detachedSearchButtonIcon:"aa-DetachedSearchButtonIcon",detachedSearchButtonPlaceholder:"aa-DetachedSearchButtonPlaceholder",detachedSearchButtonQuery:"aa-DetachedSearchButtonQuery",form:"aa-Form",input:"aa-Input",inputWrapper:"aa-InputWrapper",inputWrapperPrefix:"aa-InputWrapperPrefix",inputWrapperSuffix:"aa-InputWrapperSuffix",item:"aa-Item",label:"aa-Label",list:"aa-List",loadingIndicator:"aa-LoadingIndicator",panel:"aa-Panel",panelLayout:"aa-PanelLayout aa-Panel--scrollable",root:"aa-Autocomplete",source:"aa-Source",sourceFooter:"aa-SourceFooter",sourceHeader:"aa-SourceHeader",sourceNoResults:"aa-SourceNoResults",submitButton:"aa-SubmitButton"},jr=function(e,t){var n=e.children;(0,e.render)(n,t)},Dr={createElement:jn,Fragment:Mn,render:rr};function Mr(e){var t=e.panelPlacement,n=e.container,r=e.form,i=e.environment,a=n.getBoundingClientRect(),o=(i.pageYOffset||i.document.documentElement.scrollTop||i.document.body.scrollTop||0)+a.top+a.height;switch(t){case"start":return{top:o,left:a.left};case"end":return{top:o,right:i.document.documentElement.clientWidth-(a.left+a.width)};case"full-width":return{top:o,left:0,right:0,width:"unset",maxWidth:"unset"};case"input-wrapper-width":var s=r.getBoundingClientRect();return{top:o,left:s.left,right:i.document.documentElement.clientWidth-(s.left+s.width),width:"unset",maxWidth:"unset"};default:throw new Error("[Autocomplete] The `panelPlacement` value ".concat(JSON.stringify(t)," is not valid."))}}function Fr(){return Fr=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Fr.apply(this,arguments)}function Br(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 zr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Br(Object(n),!0).forEach((function(t){Ur(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Br(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ur(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var qr=[{segment:"autocomplete-js",version:At}];function $r(e){return function(e){if(Array.isArray(e))return Hr(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Hr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Hr(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Hr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Gr(e){return Gr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Gr(e)}var Qr=function(e){return e&&"object"===Gr(e)&&"[object Object]"===Object.prototype.toString.call(e)};function Vr(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.reduce((function(e,t){return Object.keys(t).forEach((function(n){var r=e[n],i=t[n];Array.isArray(r)&&Array.isArray(i)?e[n]=r.concat.apply(r,$r(i)):Qr(r)&&Qr(i)?e[n]=Vr(r,i):e[n]=i})),e}),{})}function Zr(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 Wr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Zr(Object(n),!0).forEach((function(t){Kr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Zr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Kr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Yr(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,a=[],o=!0,s=!1;try{for(n=n.call(e);!(o=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);o=!0);}catch(l){s=!0,i=l}finally{try{o||null==n.return||n.return()}finally{if(s)throw i}}return a}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Xr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Xr(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Xr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Jr=["components"];function ei(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function ti(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 ni(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ti(Object(n),!0).forEach((function(t){ri(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ti(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ri(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ii(e){var t,n=function(){var e=[],t=[];function n(n){e.push(n);var r=n();t.push(r)}return{runEffect:n,cleanupEffects:function(){var e=t;t=[],e.forEach((function(e){e()}))},runEffects:function(){var t=e;e=[],t.forEach((function(e){n(e)}))}}}(),r=n.runEffect,i=n.cleanupEffects,a=n.runEffects,o=(t=[],{reactive:function(e){var n=e(),r={_fn:e,_ref:{current:n},get value(){return this._ref.current},set value(e){this._ref.current=e}};return t.push(r),r},runReactives:function(){t.forEach((function(e){e._ref.current=e._fn()}))}}),s=o.reactive,l=o.runReactives,u=Vt(!1),c=Vt(e),d=Vt(void 0),p=s((function(){return function(e){var t,n=e.classNames,r=e.container,i=e.getEnvironmentProps,a=e.getFormProps,o=e.getInputProps,s=e.getItemProps,l=e.getLabelProps,u=e.getListProps,c=e.getPanelProps,d=e.getRootProps,p=e.panelContainer,f=e.panelPlacement,m=e.render,g=e.renderNoResults,h=e.renderer,b=e.detachedMediaQuery,v=e.components,y=e.translations,w=Rr(e,Tr),k="undefined"!=typeof window?window:{},S=Pr(k,r);S.tagName;var E=Ar(Ar({},Dr),h),x={Highlight:dr(E),ReverseHighlight:kr(E),ReverseSnippet:_r(E),Snippet:Or(E)};return{renderer:{classNames:Cr(Nr,null!=n?n:{}),container:S,getEnvironmentProps:null!=i?i:function(e){return e.props},getFormProps:null!=a?a:function(e){return e.props},getInputProps:null!=o?o:function(e){return e.props},getItemProps:null!=s?s:function(e){return e.props},getLabelProps:null!=l?l:function(e){return e.props},getListProps:null!=u?u:function(e){return e.props},getPanelProps:null!=c?c:function(e){return e.props},getRootProps:null!=d?d:function(e){return e.props},panelContainer:p?Pr(k,p):k.document.body,panelPlacement:null!=f?f:"input-wrapper-width",render:null!=m?m:jr,renderNoResults:g,renderer:E,detachedMediaQuery:null!=b?b:getComputedStyle(k.document.documentElement).getPropertyValue("--aa-detached-media-query"),components:Ar(Ar({},x),v),translations:Ar(Ar({},{clearButtonTitle:"Clear",detachedCancelButtonText:"Cancel",submitButtonTitle:"Submit"}),y)},core:Ar(Ar({},w),{},{id:null!==(t=w.id)&&void 0!==t?t:_e(),environment:k})}}(c.current)})),f=s((function(){return p.value.core.environment.matchMedia(p.value.renderer.detachedMediaQuery).matches})),m=s((function(){return Qt(ni(ni({},p.value.core),{},{onStateChange:function(e){var t,n,r;u.current=e.state.collections.some((function(e){return e.source.templates.noResults})),null===(t=d.current)||void 0===t||t.call(d,e),null===(n=(r=p.value.core).onStateChange)||void 0===n||n.call(r,e)},shouldPanelOpen:c.current.shouldPanelOpen||function(e){var t=e.state;if(f.value)return!0;var n=Ee(t)>0;if(!p.value.core.openOnFocus&&!t.query)return n;var r=Boolean(u.current||p.value.renderer.renderNoResults);return!n&&r||n},__autocomplete_metadata:{userAgents:qr,options:e}}))})),g=Vt(ni({collections:[],completion:null,context:{},isOpen:!1,query:"",activeItemId:null,status:"idle"},p.value.core.initialState)),h={getEnvironmentProps:p.value.renderer.getEnvironmentProps,getFormProps:p.value.renderer.getFormProps,getInputProps:p.value.renderer.getInputProps,getItemProps:p.value.renderer.getItemProps,getLabelProps:p.value.renderer.getLabelProps,getListProps:p.value.renderer.getListProps,getPanelProps:p.value.renderer.getPanelProps,getRootProps:p.value.renderer.getRootProps},b={setActiveItemId:m.value.setActiveItemId,setQuery:m.value.setQuery,setCollections:m.value.setCollections,setIsOpen:m.value.setIsOpen,setStatus:m.value.setStatus,setContext:m.value.setContext,refresh:m.value.refresh,navigator:m.value.navigator},v=s((function(){return Yt.bind(p.value.renderer.renderer.createElement)})),y=s((function(){return function(e){var t=e.autocomplete,n=e.autocompleteScopeApi,r=e.classNames,i=e.environment,a=e.isDetached,o=e.placeholder,s=void 0===o?"Search":o,l=e.propGetters,u=e.setIsModalOpen,c=e.state,d=e.translations,p=fn(i),f=l.getRootProps(kn({state:c,props:t.getRootProps({})},n)),m=p("div",kn({class:r.root},f)),g=p("div",{class:r.detachedContainer,onMouseDown:function(e){e.stopPropagation()}}),h=p("div",{class:r.detachedOverlay,children:[g],onMouseDown:function(){u(!1),t.setIsOpen(!1)}}),b=l.getLabelProps(kn({state:c,props:t.getLabelProps({})},n)),v=p("button",{class:r.submitButton,type:"submit",title:d.submitButtonTitle,children:[Xt({environment:i})]}),y=p("label",kn({class:r.label,children:[v]},b)),w=p("button",{class:r.clearButton,type:"reset",title:d.clearButtonTitle,children:[Jt({environment:i})]}),k=p("div",{class:r.loadingIndicator,children:[en({environment:i})]}),S=yn({class:r.input,environment:i,state:c,getInputProps:l.getInputProps,getInputPropsCore:t.getInputProps,autocompleteScopeApi:n,isDetached:a}),E=p("div",{class:r.inputWrapperPrefix,children:[y,k]}),x=p("div",{class:r.inputWrapperSuffix,children:[w]}),_=p("div",{class:r.inputWrapper,children:[S]}),O=l.getFormProps(kn({state:c,props:t.getFormProps({inputElement:S})},n)),P=p("form",kn({class:r.form,children:[E,_,x]},O)),C=l.getPanelProps(kn({state:c,props:t.getPanelProps({})},n)),T=p("div",kn({class:r.panel},C)),I=p("div",{class:r.detachedSearchButtonQuery,textContent:c.query}),A=p("div",{class:r.detachedSearchButtonPlaceholder,hidden:Boolean(c.query),textContent:s});if(a){var L=p("div",{class:r.detachedSearchButtonIcon,children:[Xt({environment:i})]}),R=p("button",{type:"button",class:r.detachedSearchButton,onClick:function(){u(!0)},children:[L,A,I]}),N=p("button",{type:"button",class:r.detachedCancelButton,textContent:d.detachedCancelButtonText,onTouchStart:function(e){e.stopPropagation()},onClick:function(){t.setIsOpen(!1),u(!1)}}),j=p("div",{class:r.detachedFormContainer,children:[P,N]});g.appendChild(j),m.appendChild(R)}else m.appendChild(P);return{detachedContainer:g,detachedOverlay:h,detachedSearchButtonQuery:I,detachedSearchButtonPlaceholder:A,inputWrapper:_,input:S,root:m,form:P,label:y,submitButton:v,clearButton:w,loadingIndicator:k,panel:T}}({autocomplete:m.value,autocompleteScopeApi:b,classNames:p.value.renderer.classNames,environment:p.value.core.environment,isDetached:f.value,placeholder:p.value.core.placeholder,propGetters:h,setIsModalOpen:E,state:g.current,translations:p.value.renderer.translations})}));function w(){sn(y.value.panel,{style:f.value?{}:Mr({panelPlacement:p.value.renderer.panelPlacement,container:y.value.root,form:y.value.form,environment:p.value.core.environment})})}function k(e){g.current=e;var t={autocomplete:m.value,autocompleteScopeApi:b,classNames:p.value.renderer.classNames,components:p.value.renderer.components,container:p.value.renderer.container,html:v.value,dom:y.value,panelContainer:f.value?y.value.detachedContainer:p.value.renderer.panelContainer,propGetters:h,state:g.current,renderer:p.value.renderer.renderer},n=!Ee(e)&&!u.current&&p.value.renderer.renderNoResults||p.value.renderer.render;!function(e){var t=e.autocomplete,n=e.autocompleteScopeApi,r=e.dom,i=e.propGetters,a=e.state;ln(r.root,i.getRootProps(zr({state:a,props:t.getRootProps({})},n))),ln(r.input,i.getInputProps(zr({state:a,props:t.getInputProps({inputElement:r.input}),inputElement:r.input},n))),sn(r.label,{hidden:"stalled"===a.status}),sn(r.loadingIndicator,{hidden:"stalled"!==a.status}),sn(r.clearButton,{hidden:!a.query}),sn(r.detachedSearchButtonQuery,{textContent:a.query}),sn(r.detachedSearchButtonPlaceholder,{hidden:Boolean(a.query)})}(t),function(e,t){var n=t.autocomplete,r=t.autocompleteScopeApi,i=t.classNames,a=t.html,o=t.dom,s=t.panelContainer,l=t.propGetters,u=t.state,c=t.components,d=t.renderer;if(u.isOpen){s.contains(o.panel)||"loading"===u.status||s.appendChild(o.panel),o.panel.classList.toggle("aa-Panel--stalled","stalled"===u.status);var p=u.collections.filter((function(e){var t=e.source,n=e.items;return t.templates.noResults||n.length>0})).map((function(e,t){var o=e.source,s=e.items;return d.createElement("section",{key:t,className:i.source,"data-autocomplete-source-id":o.sourceId},o.templates.header&&d.createElement("div",{className:i.sourceHeader},o.templates.header({components:c,createElement:d.createElement,Fragment:d.Fragment,items:s,source:o,state:u,html:a})),o.templates.noResults&&0===s.length?d.createElement("div",{className:i.sourceNoResults},o.templates.noResults({components:c,createElement:d.createElement,Fragment:d.Fragment,source:o,state:u,html:a})):d.createElement("ul",Fr({className:i.list},l.getListProps(zr({state:u,props:n.getListProps({sourceIndex:t})},r))),s.map((function(e){var s=n.getItemProps({item:e,source:o,sourceIndex:t});return d.createElement("li",Fr({key:s.id,className:i.item},l.getItemProps(zr({state:u,props:s},r))),o.templates.item({components:c,createElement:d.createElement,Fragment:d.Fragment,item:e,state:u,html:a}))}))),o.templates.footer&&d.createElement("div",{className:i.sourceFooter},o.templates.footer({components:c,createElement:d.createElement,Fragment:d.Fragment,items:s,source:o,state:u,html:a})))})),f=d.createElement(d.Fragment,null,d.createElement("div",{className:i.panelLayout},p),d.createElement("div",{className:"aa-GradientBottom"})),m=p.reduce((function(e,t){return e[t.props["data-autocomplete-source-id"]]=t,e}),{});e(zr(zr({children:f,state:u,sections:p,elements:m},d),{},{components:c,html:a},r),o.panel)}else s.contains(o.panel)&&s.removeChild(o.panel)}(n,t)}function S(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i();var t,n,r=p.value.renderer,o=r.components,s=ei(r,Jr);c.current=Vr(s,p.value.core,{components:(t=o,n=function(e){return!e.value.hasOwnProperty("__autocomplete_componentName")},Object.entries(t).reduce((function(e,t){var r=Yr(t,2),i=r[0],a=r[1];return n({key:i,value:a})?Wr(Wr({},e),{},Kr({},i,a)):e}),{})),initialState:g.current},e),l(),a(),m.value.refresh().then((function(){k(g.current)}))}function E(e){requestAnimationFrame((function(){var t=p.value.core.environment.document.body.contains(y.value.detachedOverlay);e!==t&&(e?(p.value.core.environment.document.body.appendChild(y.value.detachedOverlay),p.value.core.environment.document.body.classList.add("aa-Detached"),y.value.input.focus()):(p.value.core.environment.document.body.removeChild(y.value.detachedOverlay),p.value.core.environment.document.body.classList.remove("aa-Detached")))}))}return r((function(){var e=m.value.getEnvironmentProps({formElement:y.value.form,panelElement:y.value.panel,inputElement:y.value.input});return sn(p.value.core.environment,e),function(){sn(p.value.core.environment,Object.keys(e).reduce((function(e,t){return ni(ni({},e),{},ri({},t,void 0))}),{}))}})),r((function(){var e=f.value?p.value.core.environment.document.body:p.value.renderer.panelContainer,t=f.value?y.value.detachedOverlay:y.value.panel;return f.value&&g.current.isOpen&&E(!0),k(g.current),function(){e.contains(t)&&e.removeChild(t)}})),r((function(){var e=p.value.renderer.container;return e.appendChild(y.value.root),function(){e.removeChild(y.value.root)}})),r((function(){var e=Zt((function(e){k(e.state)}),0);return d.current=function(t){var n=t.state,r=t.prevState;(f.value&&r.isOpen!==n.isOpen&&E(n.isOpen),f.value||!n.isOpen||r.isOpen||w(),n.query!==r.query)&&p.value.core.environment.document.querySelectorAll(".aa-Panel--scrollable").forEach((function(e){0!==e.scrollTop&&(e.scrollTop=0)}));e({state:n})},function(){d.current=void 0}})),r((function(){var e=Zt((function(){var e=f.value;f.value=p.value.core.environment.matchMedia(p.value.renderer.detachedMediaQuery).matches,e!==f.value?S({}):requestAnimationFrame(w)}),20);return p.value.core.environment.addEventListener("resize",e),function(){p.value.core.environment.removeEventListener("resize",e)}})),r((function(){if(!f.value)return function(){};function e(e){y.value.detachedContainer.classList.toggle("aa-DetachedContainer--modal",e)}function t(t){e(t.matches)}var n=p.value.core.environment.matchMedia(getComputedStyle(p.value.core.environment.document.documentElement).getPropertyValue("--aa-detached-modal-media-query"));e(n.matches);var r=Boolean(n.addEventListener);return r?n.addEventListener("change",t):n.addListener(t),function(){r?n.removeEventListener("change",t):n.removeListener(t)}})),r((function(){return requestAnimationFrame(w),function(){}})),ni(ni({},b),{},{update:S,destroy:function(){i()}})}var ai=n(5742);n(9414);const oi=n(8965);oi.tokenizer.separator=/[\s\-]+/;const si=oi,li=(n(8965),e=>oi.tokenizer(e).map((e=>e.str))),ui=si;var ci=n(813),di=n.n(ci);function pi(){const e=(0,l.TH)(),t=(0,l.k6)(),{siteConfig:{baseUrl:n}}=(0,se.Z)(),[i,a]=(0,r.useState)({terms:[],isDocsOrBlog:!1});return(0,r.useEffect)((()=>{if(!e.state?.cmfcmfhighlight||0===e.state.cmfcmfhighlight.terms.length)return;a(e.state.cmfcmfhighlight);const{cmfcmfhighlight:n,...r}=e.state;t.replace({...e,state:r})}),[e.state?.cmfcmfhighlight,t,e]),(0,r.useEffect)((()=>{if(0===i.terms.length)return;const e=i.isDocsOrBlog?document.getElementsByTagName("article")[0]:document.getElementsByTagName("main")[0];if(!e)return;const t=new(di())(e),n={ignoreJoiners:!0};return t.mark(i.terms,n),()=>t.unmark(n)}),[i,n]),null}var fi=n(8084),mi=n(3320);const gi=!0;function hi(e){let{document:t}=e;const[n,r]=t.sectionRoute.split("#");let i=n;return r&&(i+="#"+r),i}const bi={documents:[],index:ui((function(){this.ref("id"),this.field("title"),this.field("content")}))};const vi=()=>{const e=(0,B.Z)(),[t,n]=(0,r.useState)((()=>!!e&&"dark"===document.documentElement.getAttribute("data-theme")));(0,r.useEffect)((()=>{const e=new MutationObserver((()=>{n("dark"===document.documentElement.getAttribute("data-theme"))}));return e.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),()=>e.disconnect()}),[]);const{siteConfig:{baseUrl:i}}=(0,se.Z)(),{titleBoost:a,contentBoost:o,parentCategoriesBoost:s,indexDocSidebarParentCategories:c}=(0,fi.eZ)("@cmfcmf/docusaurus-search-local"),d=(0,l.k6)(),{tags:p}=(0,mi._q)(),f=(0,r.useRef)(p);(0,r.useEffect)((()=>{f.current=p}),[p]);const m=(0,r.useRef)({}),g=async e=>{const t=m.current[e];switch(t?.state){case"ready":return t;case void 0:{const t=[];m.current[e]={state:"loading",callbacks:t};const n=await async function(e,t){if(gi){let r;try{const n=await fetch(`${e}search-index-${t}.json`);if(!n.ok)return bi;r=await n.json()}catch(n){return bi}return{documents:r.documents,index:ui.Index.load(r.index)}}return Promise.resolve(bi)}(i,e);return t.forEach((e=>e(n))),m.current[e]={state:"ready",...n}}case"loading":return new Promise((e=>{t.callbacks.push(e)}))}},h=(0,u.I)({message:"cmfcmf/d-s-l.searchBar.placeholder",description:"Placeholder shown in the searchbar"}),b=(0,r.useRef)(null),v=(0,r.useRef)(null);return(0,r.useEffect)((()=>{if(b.current)return v.current=ii({container:b.current,placeholder:h,renderer:{createElement:r.createElement,Fragment:r.Fragment},render(e,t){let{children:n}=e;(0,ge.render)(n,t)},navigator:{navigate(e){let{item:t,itemUrl:n}=e;d.push(n,{cmfcmfhighlight:{terms:t.terms,isDocsOrBlog:"docs"===t.document.type||"blog"===t.document.type}})}},detachedMediaQuery:"",defaultActiveItemId:0,translations:{clearButtonTitle:(0,u.I)({message:"cmfcmf/d-s-l.searchBar.clearButtonTitle",description:"Title of the button to clear the current search input"}),detachedCancelButtonText:(0,u.I)({message:"cmfcmf/d-s-l.searchBar.detachedCancelButtonText",description:"Text of the button to close the detached search window"}),submitButtonTitle:(0,u.I)({message:"cmfcmf/d-s-l.searchBar.submitButtonTitle",description:"Title of the button to submit a new search"})},getSources(e){let{query:t}=e;return[{sourceId:"search-results",templates:{item(e){let{item:t}=e;const n=hi(t);return r.createElement("a",{href:n,className:"aa-ItemLink",onClick:e=>{e.preventDefault(),d.push(n,{cmfcmfhighlight:{terms:t.terms,isDocsOrBlog:"docs"===t.document.type||"blog"===t.document.type}})}},r.createElement("div",{className:"aa-ItemContent"},r.createElement("div",{className:"aa-ItemContentBody"},r.createElement("div",{className:"aa-ItemContentTitle"},t.document.sectionTitle),t.document.pageTitle!==t.document.sectionTitle&&r.createElement("div",{className:"aa-ItemContentDescription"},t.document.pageTitle))),r.createElement("div",{className:"aa-ItemActions"},r.createElement("button",{className:"aa-ItemActionButton aa-DesktopOnly aa-ActiveOnly",type:"button",title:"Select"},r.createElement("svg",{viewBox:"0 0 24 24",width:"20",height:"20",fill:"currentColor"},r.createElement("path",{d:"M18.984 6.984h2.016v6h-15.188l3.609 3.609-1.406 1.406-6-6 6-6 1.406 1.406-3.609 3.609h13.172v-4.031z"})))))},noResults:()=>r.createElement("div",{className:"aa-ItemContent"},r.createElement("div",{className:"aa-ItemContentBody"},gi?(0,u.I)({message:"cmfcmf/d-s-l.searchBar.noResults",description:"message shown if no results are found"}):"The search index is only available when you run docusaurus build!"))},getItemUrl(e){let{item:t}=e;return hi(t)},async getItems(){const e=f.current,n=await Promise.all(e.map((e=>g(e)))),r=li(t);return n.flatMap((e=>{let{index:t,documents:n}=e;return t.query((e=>{e.term(r,{fields:["title"],boost:a}),e.term(r,{fields:["title"],boost:a,wildcard:ui.Query.wildcard.TRAILING}),e.term(r,{fields:["content"],boost:o}),e.term(r,{fields:["content"],boost:o,wildcard:ui.Query.wildcard.TRAILING}),c&&(e.term(r,{fields:["sidebarParentCategories"],boost:s}),e.term(r,{fields:["sidebarParentCategories"],boost:s,wildcard:ui.Query.wildcard.TRAILING}))})).slice(0,8).map((e=>({document:n.find((t=>t.id.toString()===e.ref)),score:e.score,terms:r})))})).sort(((e,t)=>t.score-e.score)).slice(0,8)}}]}}),()=>v.current?.destroy()}),[]),r.createElement(r.Fragment,null,r.createElement(ai.Z,null,r.createElement("body",{"data-theme":t?"dark":"light"})),r.createElement(pi,null),r.createElement("div",{className:"dsla-search-wrapper"},r.createElement("div",{className:"dsla-search-field",ref:b,"data-tags":p.join(",")})))},yi={searchBox:"searchBox_ZlJk"};function wi(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,i.Z)(n,yi.searchBox)},t)}var ki=n(4104),Si=n(3438);var Ei=n(373);const xi=e=>e.docs.find((t=>t.id===e.mainDocId));const _i={default:ie,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:i,...a}=e;const{i18n:{currentLocale:o,locales:c,localeConfigs:d}}=(0,se.Z)(),p=(0,pe.l)(),{search:f,hash:m}=(0,l.TH)(),g=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===o?t?"menu__link--active":"dropdown__link--active":""}})),...i],h=t?(0,u.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[o].label;return r.createElement(de,(0,s.Z)({},a,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(fe,{className:me}),h),items:g}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(wi,{className:n},r.createElement(vi,null))},dropdown:de,html:function(e){let{value:t,className:n,mobile:a=!1,isDropdownItem:o=!1}=e;const s=o?"li":"div";return r.createElement(s,{className:(0,i.Z)({navbar__item:!a&&!o,"menu__list-item":a},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:i,...a}=e;const{activeDoc:o}=(0,ki.Iw)(i),l=(0,Si.vY)(t,i);return null===l?null:r.createElement(ie,(0,s.Z)({exact:!0},a,{isActive:()=>o?.path===l.path||!!o?.sidebar&&o.sidebar===l.sidebar,label:n??l.id,to:l.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:i,...a}=e;const{activeDoc:o}=(0,ki.Iw)(i),l=(0,Si.oz)(t,i).link;if(!l)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(ie,(0,s.Z)({exact:!0},a,{isActive:()=>o?.sidebar===t,label:n??l.label,to:l.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:i,...a}=e;const o=(0,Si.lO)(i)[0],l=t??o.label,u=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return r.createElement(ie,(0,s.Z)({},a,{label:l,to:u}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:i,dropdownItemsBefore:a,dropdownItemsAfter:o,...c}=e;const{search:d,hash:p}=(0,l.TH)(),f=(0,ki.Iw)(n),m=(0,ki.gB)(n),{savePreferredVersionName:g}=(0,Ei.J)(n),h=m.map((e=>{const t=f.alternateDocVersions[e.name]??xi(e);return{label:e.label,to:`${t.path}${d}${p}`,isActive:()=>e===f.activeVersion,onClick:()=>g(e.name)}})),b=[...a,...h,...o],v=(0,Si.lO)(n)[0],y=t&&b.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,w=t&&b.length>1?void 0:xi(v).path;return b.length<=1?r.createElement(ie,(0,s.Z)({},c,{mobile:t,label:y,to:w,isActive:i?()=>!1:void 0})):r.createElement(de,(0,s.Z)({},c,{mobile:t,label:y,to:w,items:b,isActive:i?()=>!1:void 0}))}},Oi=_i;function Pi(e){let{type:t,...n}=e;const i=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Oi[i];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(a,n)}function Ci(){const e=(0,T.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(Pi,(0,s.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Ti(e){return r.createElement("button",(0,s.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 Ii(){const e=0===(0,w.L)().navbar.items.length,t=D();return r.createElement(r.Fragment,null,!e&&r.createElement(Ti,{onClick:()=>t.hide()}),t.content)}function Ai(){const e=(0,T.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(M,{header:r.createElement(W,null),primaryMenu:r.createElement(Ci,null),secondaryMenu:r.createElement(Ii,null)}):null}const Li={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Ri(e){return r.createElement("div",(0,s.Z)({role:"presentation"},e,{className:(0,i.Z)("navbar-sidebar__backdrop",e.className)}))}function Ni(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,w.L)(),o=(0,T.e)(),{navbarRef:s,isNavbarVisible:l}=function(e){const[t,n]=(0,r.useState)(e),i=(0,r.useRef)(!1),a=(0,r.useRef)(0),o=(0,r.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,I.RF)(((t,r)=>{let{scrollY:o}=t;if(!e)return;if(o<a.current)return void n(!0);if(i.current)return void(i.current=!1);const s=r?.scrollY,l=document.documentElement.scrollHeight-a.current,u=window.innerHeight;s&&o>=s?n(!1):o+u<l&&n(!0)})),(0,c.S)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return i.current=!0,void n(!1);n(!0)})),{navbarRef:o,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:s,"aria-label":(0,u.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,i.Z)("navbar","navbar--fixed-top",n&&[Li.navbarHideable,!l&&Li.navbarHidden],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":o.shown})},t,r.createElement(Ri,{onClick:o.toggle}),r.createElement(Ai,null))}const ji="right";function Di(e){let{width:t=30,height:n=30,className:i,...a}=e;return r.createElement("svg",(0,s.Z)({className:i,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},a),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function Mi(){const{toggle:e,shown:t}=(0,T.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(Di,null))}const Fi={colorModeToggle:"colorModeToggle_DEke"};function Bi(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(Pi,(0,s.Z)({},e,{key:t})))))}function zi(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 Ui(){const e=(0,T.e)(),t=(0,w.L)().navbar.items,[n,i]=function(e){function t(e){return"left"===(e.position??ji)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return r.createElement(zi,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(Mi,null),r.createElement(V,null),r.createElement(Bi,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(Bi,{items:i}),r.createElement(G,{className:Fi.colorModeToggle}),!a&&r.createElement(wi,null,r.createElement(vi,null)))})}function qi(){return r.createElement(Ni,null,r.createElement(Ui,null))}function $i(e){let{item:t}=e;const{to:n,href:i,label:a,prependBaseUrlToHref:o,...l}=t,u=(0,Y.Z)(n),c=(0,Y.Z)(i,{forcePrependBaseUrl:!0});return r.createElement(K.Z,(0,s.Z)({className:"footer__link-item"},i?{href:o?c:i}:{to:u},l),a,i&&!(0,X.Z)(i)&&r.createElement(ee.Z,null))}function Hi(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($i,{item:t}))}function Gi(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(Hi,{key:t,item:e})))))}function Qi(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(Gi,{key:t,column:e}))))}function Vi(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function Zi(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement($i,{item:t})}function Wi(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(Zi,{item:e}),t.length!==n+1&&r.createElement(Vi,null))))))}function Ki(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(Qi,{columns:t}):r.createElement(Wi,{links:t})}var Yi=n(941);const Xi={footerLogoLink:"footerLogoLink_BH7S"};function Ji(e){let{logo:t}=e;const{withBaseUrl:n}=(0,Y.C)(),a={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(Yi.Z,{className:(0,i.Z)("footer__logo",t.className),alt:t.alt,sources:a,width:t.width,height:t.height,style:t.style})}function ea(e){let{logo:t}=e;return t.href?r.createElement(K.Z,{href:t.href,className:Xi.footerLogoLink,target:t.target},r.createElement(Ji,{logo:t})):r.createElement(Ji,{logo:t})}function ta(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function na(e){let{style:t,links:n,logo:a,copyright:o}=e;return r.createElement("footer",{className:(0,i.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(a||o)&&r.createElement("div",{className:"footer__bottom text--center"},a&&r.createElement("div",{className:"margin-bottom--sm"},a),o)))}function ra(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:i,style:a}=e;return r.createElement(na,{style:a,links:n&&n.length>0&&r.createElement(Ki,{links:n}),logo:i&&r.createElement(ea,{logo:i}),copyright:t&&r.createElement(ta,{copyright:t})})}const ia=r.memo(ra),aa=(0,A.Qc)([F.S,k.pl,I.OC,Ei.L5,o.VC,function(e){let{children:t}=e;return r.createElement(L.n2,null,r.createElement(T.M,null,r.createElement(N,null,t)))}]);function oa(e){let{children:t}=e;return r.createElement(aa,null,t)}function sa(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("p",null,t.message),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},r.createElement(u.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again when the page crashed"},"Try again"))))))}const la={mainWrapper:"mainWrapper_z2l0"};function ua(e){const{children:t,noFooter:n,wrapperClassName:s,title:l,description:u}=e;return(0,b.t)(),r.createElement(oa,null,r.createElement(o.d,{title:l,description:u}),r.createElement(y,null),r.createElement(C,null),r.createElement(qi,null),r.createElement("div",{id:d,className:(0,i.Z)(h.k.wrapper.main,la.mainWrapper,s)},r.createElement(a.Z,{fallback:e=>r.createElement(sa,e)},t)),!n&&r.createElement(ia,null))}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),i=n(7294),a=n(9960),o=n(4996),s=n(2263),l=n(6668),u=n(941);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,o.Z)(t.src),dark:(0,o.Z)(t.srcDark||t.src)},s=i.createElement(u.Z,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?i.createElement("div",{className:r},s):s}function d(e){const{siteConfig:{title:t}}=(0,s.Z)(),{navbar:{title:n,logo:u}}=(0,l.L)(),{imageClassName:d,titleClassName:p,...f}=e,m=(0,o.Z)(u?.href||"/"),g=n?"":t,h=u?.alt??g;return i.createElement(a.Z,(0,r.Z)({to:m},f,u?.target&&{target:u.target}),u&&i.createElement(c,{logo:u,alt:h,imageClassName:d}),null!=n&&i.createElement("b",{className:p},n))}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),i=n(5742);function a(e){let{locale:t,version:n,tag:a}=e;const o=t;return r.createElement(i.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),a&&r.createElement("meta",{name:"docusaurus_tag",content:a}),o&&r.createElement("meta",{name:"docsearch:language",content:o}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),a&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:a}))}},941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),i=n(7294),a=n(6010),o=n(2389),s=n(2949);const l={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function u(e){const t=(0,o.Z)(),{colorMode:n}=(0,s.I)(),{sources:u,className:c,alt:d,...p}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return i.createElement(i.Fragment,null,f.map((e=>i.createElement("img",(0,r.Z)({key:e,src:u[e],alt:d,className:(0,a.Z)(l.themedImage,l[`themedImage--${e}`],c)},p)))))}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>s,z:()=>g});var r=n(7462),i=n(7294),a=n(412);const o="ease-in-out";function s(e){let{initialState:t}=e;const[n,r]=(0,i.useState)(t??!1),a=(0,i.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:a}}const l={display:"none",overflow:"hidden",height:"0px"},u={display:"block",overflow:"visible",height:"auto"};function c(e,t){const n=t?l:u;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function d(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const a=(0,i.useRef)(!1);(0,i.useEffect)((()=>{const e=t.current;function i(){const t=e.scrollHeight,n=r?.duration??function(e){const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${r?.easing??o}`,height:`${t}px`}}function s(){const t=i();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return c(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=l.height,e.style.overflow=l.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function p(e){if(!a.Z.canUseDOM)return e?l:u}function f(e){let{as:t="div",collapsed:n,children:r,animation:a,onCollapseTransitionEnd:o,className:s,disableSSRStyle:l}=e;const u=(0,i.useRef)(null);return d({collapsibleRef:u,collapsed:n,animation:a}),i.createElement(t,{ref:u,style:l?void 0:p(n),onTransitionEnd:e=>{"height"===e.propertyName&&(c(u.current,n),o?.(n))},className:s},r)}function m(e){let{collapsed:t,...n}=e;const[a,o]=(0,i.useState)(!t),[s,l]=(0,i.useState)(t);return(0,i.useLayoutEffect)((()=>{t||o(!0)}),[t]),(0,i.useLayoutEffect)((()=>{a&&l(t)}),[a,t]),a?i.createElement(f,(0,r.Z)({},n,{collapsed:s})):null}function g(e){let{lazy:t,...n}=e;const r=t?m:f;return i.createElement(r,n)}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>f});var r=n(7294),i=n(2389),a=n(12),o=n(902),s=n(6668);const l=(0,a.WA)("docusaurus.announcement.dismiss"),u=(0,a.WA)("docusaurus.announcement.id"),c=()=>"true"===l.get(),d=e=>l.set(String(e)),p=r.createContext(null);function f(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.L)(),t=(0,i.Z)(),[n,a]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{a(c())}),[]);const o=(0,r.useCallback)((()=>{d(!0),a(!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()||a(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:o})),[e,n,o])}();return r.createElement(p.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(p);if(!e)throw new o.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>h,S:()=>g});var r=n(7294),i=n(412),a=n(902),o=n(12),s=n(6668);const l=r.createContext(void 0),u="theme",c=(0,o.WA)(u),d={light:"light",dark:"dark"},p=e=>e===d.dark?d.dark:d.light,f=e=>i.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e),m=e=>{c.set(p(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.L)(),[i,a]=(0,r.useState)(f(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const o=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:i=!0}=r;t?(a(t),i&&m(t)):(a(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",p(i))}),[i]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&o(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,o]);const l=(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||l.current?l.current=window.matchMedia("print").matches:o(null)};return e.addListener(r),()=>e.removeListener(r)}),[o,t,n]),(0,r.useMemo)((()=>({colorMode:i,setColorMode:o,get isDarkTheme(){return i===d.dark},setLightTheme(){o(d.light)},setDarkTheme(){o(d.dark)}})),[i,o])}();return r.createElement(l.Provider,{value:n},t)}function h(){const e=(0,r.useContext)(l);if(null==e)throw new a.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>h,Oh:()=>y});var r=n(7294),i=n(4104),a=n(9935),o=n(6668),s=n(3438),l=n(902),u=n(12);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()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const f=r.createContext(null);function m(){const e=(0,i._r)(),t=(0,o.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,s]=(0,r.useState)((()=>p(n)));(0,r.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function i(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,i(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[a,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=m();return r.createElement(f.Provider,{value:n},t)}function h(e){let{children:t}=e;return s.cE?r.createElement(g,null,t):r.createElement(r.Fragment,null,t)}function b(){const e=(0,r.useContext)(f);if(!e)throw new l.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=a.m);const t=(0,i.zh)(e),[n,o]=b(),{preferredVersionName:s}=n[e];return{preferredVersion:t.versions.find((e=>e.name===s))??null,savePreferredVersionName:(0,r.useCallback)((t=>{o.savePreferredVersion(e,t)}),[o,e])}}function y(){const e=(0,i._r)(),[t]=b();function n(n){const r=e[n],{preferredVersionName:i}=t[n];return r.versions.find((e=>e.name===i))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>l,b:()=>s});var r=n(7294),i=n(902);const a=Symbol("EmptyContext"),o=r.createContext(a);function s(e){let{children:t,name:n,items:i}=e;const a=(0,r.useMemo)((()=>n&&i?{name:n,items:i}:null),[n,i]);return r.createElement(o.Provider,{value:a},t)}function l(){const e=(0,r.useContext)(o);if(e===a)throw new i.i6("DocsSidebarProvider");return e}},4477:(e,t,n)=>{"use strict";n.d(t,{E:()=>s,q:()=>o});var r=n(7294),i=n(902);const a=r.createContext(null);function o(e){let{children:t,version:n}=e;return r.createElement(a.Provider,{value:n},t)}function s(){const e=(0,r.useContext)(a);if(null===e)throw new i.i6("DocsVersionProvider");return e}},3163:(e,t,n)=>{"use strict";n.d(t,{M:()=>d,e:()=>p});var r=n(7294),i=n(3102),a=n(7524),o=n(1980),s=n(6668),l=n(902);const u=r.createContext(void 0);function c(){const e=function(){const e=(0,i.HY)(),{items:t}=(0,s.L)().navbar;return 0===t.length&&!e.component}(),t=(0,a.i)(),n=!e&&"mobile"===t,[l,u]=(0,r.useState)(!1);(0,o.Rb)((()=>{if(l)return u(!1),!1}));const c=(0,r.useCallback)((()=>{u((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&u(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:l})),[e,n,c,l])}function d(e){let{children:t}=e;const n=c();return r.createElement(u.Provider,{value:n},t)}function p(){const e=r.useContext(u);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>s,Zo:()=>l,n2:()=>o});var r=n(7294),i=n(902);const a=r.createContext(null);function o(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(a.Provider,{value:n},t)}function s(){const e=(0,r.useContext)(a);if(!e)throw new i.i6("NavbarSecondaryMenuContentProvider");return e[0]}function l(e){let{component:t,props:n}=e;const o=(0,r.useContext)(a);if(!o)throw new i.i6("NavbarSecondaryMenuContentProvider");const[,s]=o,l=(0,i.Ql)(n);return(0,r.useEffect)((()=>{s({component:t,props:l})}),[s,t,l]),(0,r.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>i,t:()=>a});var r=n(7294);const i="navigation-with-keyboard";function a(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(i),"mousedown"===e.type&&document.body.classList.remove(i)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(i),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(7294),i=n(412);const a={desktop:"desktop",mobile:"mobile",ssr:"ssr"},o=996;function s(){return i.Z.canUseDOM?window.innerWidth>o?a.desktop:a.mobile:a.ssr}const l=!1;function u(){const[e,t]=(0,r.useState)((()=>l?"ssr":s()));return(0,r.useEffect)((()=>{function e(){t(s())}const n=l?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},5281:(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:{}}},3438:(e,t,n)=>{"use strict";n.d(t,{MN:()=>_,Wl:()=>m,_F:()=>v,cE:()=>p,hI:()=>x,jA:()=>g,lO:()=>k,oz:()=>S,s1:()=>w,vY:()=>E,xz:()=>f});var r=n(7294),i=n(6550),a=n(8790),o=n(4104),s=n(373),l=n(4477),u=n(1116),c=n(7392),d=n(8596);const p=!!o._r;function f(e){const t=(0,l.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function m(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=m(t);if(e)return e}}}function g(){const{pathname:e}=(0,i.TH)(),t=(0,u.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=y({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const h=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),b=(e,t)=>e.some((e=>v(e,t)));function v(e,t){return"link"===e.type?h(e.href,t):"category"===e.type&&(h(e.href,t)||b(e.items,t))}function y(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const i=[];return function e(t){for(const a of t)if("category"===a.type&&((0,d.Mg)(a.href,n)||e(a.items))||"link"===a.type&&(0,d.Mg)(a.href,n)){return r&&"category"!==a.type||i.unshift(a),!0}return!1}(t),i}function w(){const e=(0,u.V)(),{pathname:t}=(0,i.TH)(),n=(0,o.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?y({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,o.Iw)(e),{preferredVersion:n}=(0,s.J)(e),i=(0,o.yW)(e);return(0,r.useMemo)((()=>(0,c.j)([t,n,i].filter(Boolean))),[t,n,i])}function S(e,t){const n=k(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(", ")}".\n Available sidebar ids are:\n - ${Object.keys(t).join("\n- ")}`);return r[1]}),[e,n])}function E(e,t){const n=k(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(`DocNavbarItem: 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- ${(0,c.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function x(e){let{route:t,versionMetadata:n}=e;const r=(0,i.TH)(),o=t.routes,s=o.find((e=>(0,i.LX)(r.pathname,e)));if(!s)return null;const l=s.sidebar,u=l?n.docsSidebars[l]:void 0;return{docElement:(0,a.H)(o),sidebarName:l,sidebarItems:u}}function _(e){return e.filter((e=>"category"!==e.type||!!m(e)))}},1980:(e,t,n)=>{"use strict";n.d(t,{Rb:()=>s,_X:()=>l});var r=n(7294),i=n(6550),a=n(1688),o=n(902);function s(e){!function(e){const t=(0,i.k6)(),n=(0,o.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function l(e){return function(e){const t=(0,i.k6)();return(0,a.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}},7392:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function i(e){return Array.from(new Set(e))}n.d(t,{j:()=>i,l:()=>r})},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>p,d:()=>c,VC:()=>f});var r=n(7294),i=n(6010),a=n(5742),o=n(226);function s(){const e=r.useContext(o._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var l=n(4996),u=n(2263);function c(e){let{title:t,description:n,keywords:i,image:o,children:s}=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,l.C)(),p=o?d(o,{absolute:!0}):void 0;return r.createElement(a.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}),i&&r.createElement("meta",{name:"keywords",content:Array.isArray(i)?i.join(","):i}),p&&r.createElement("meta",{property:"og:image",content:p}),p&&r.createElement("meta",{name:"twitter:image",content:p}),s)}const d=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const o=r.useContext(d),s=(0,i.Z)(o,t);return r.createElement(d.Provider,{value:s},r.createElement(a.Z,null,r.createElement("html",{className:s})),n)}function f(e){let{children:t}=e;const n=s(),a=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const o=`plugin-id-${n.plugin.id}`;return r.createElement(p,{className:(0,i.Z)(a,o)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>o,Qc:()=>u,Ql:()=>l,i6:()=>s,zX:()=>a});var r=n(7294);const i=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function a(e){const t=(0,r.useRef)(e);return i((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function o(e){const t=(0,r.useRef)();return i((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function l(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))}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>o,Ns:()=>s});var r=n(7294),i=n(723),a=n(2263);function o(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,a.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 i(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(i).flatMap((e=>e.routes??[])))}(n)}({routes:i.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>l,RF:()=>d,o5:()=>p});var r=n(7294),i=n(412),a=n(2389),o=n(902);const s=r.createContext(void 0);function l(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(s.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ScrollControllerProvider");return e}const c=()=>i.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),i=(0,r.useRef)(c()),a=(0,o.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();a(e,i.current),i.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function p(){const e=u(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),i=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,r.useLayoutEffect)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:i}}function f(){const e=(0,r.useRef)(null),t=(0,a.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 i=document.documentElement.scrollTop;(n&&i>e||!n&&i<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(i-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>o,_q:()=>l,os:()=>s});var r=n(4104),i=n(2263),a=n(373);const o="default";function s(e,t){return`docs-${e}-${t}`}function l(){const{i18n:e}=(0,i.Z)(),t=(0,r._r)(),n=(0,r.WS)(),l=(0,a.Oh)();const u=[o,...Object.keys(t).map((function(e){const r=n?.activePlugin.pluginId===e?n.activeVersion:void 0,i=l[e],a=t[e].versions.find((e=>e.isLast));return s(e,(r??i??a).name)}))];return{locale:e.currentLocale,tags:u}}},12:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>d,WA:()=>c});var r=n(7294),i=n(1688);const a="localStorage";function o(e){let{key:t,oldValue:n,newValue:r,storage:i}=e;if(n===r)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,i),window.dispatchEvent(a)}function s(e){if(void 0===e&&(e=a),"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,l||(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),l=!0),null}var t}let l=!1;const u={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(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=s(t?.persistence);return null===n?u:{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),o({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),o({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),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?u:c(e,t))).current(),a=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,i.useSyncExternalStore)(a,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>a});var r=n(2263),i=n(6550);function a(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:a}}=(0,r.Z)(),{pathname:o}=(0,i.TH)(),s=a===n?e:e.replace(`/${a}/`,"/"),l=o.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:i}=e;return`${i?t:""}${function(e){return e===n?`${s}`:`${s}${e}/`}(r)}${l}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>o});var r=n(7294),i=n(6550),a=n(902);function o(e){const t=(0,i.TH)(),n=(0,a.D9)(t),o=(0,a.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&o({location:t,previousLocation:n})}),[o,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>i});var r=n(2263);function i(){return(0,r.Z)().siteConfig.themeConfig}},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[i]=e.split(/[#?]/),a="/"===i||i===r?i:(o=i,n?function(e){return e.endsWith("/")?e:`${e}/`}(o):function(e){return e.endsWith("/")?e.slice(0,-1):e}(o));var o;return e.replace(i,a)}},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.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="post-content";var i=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(i).default}})},6010:(e,t,n)=>{"use strict";function r(e){var t,n,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(i&&(i+=" "),i+=n);else for(t in e)e[t]&&(i&&(i+=" "),i+=t);return i}n.d(t,{Z:()=>i});const i=function(){for(var e,t,n=0,i="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(i&&(i+=" "),i+=t);return i}},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>O,ob:()=>f,PP:()=>C,Ep:()=>p});var r=n(7462);function i(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,i=e.length;r<i;n+=1,r+=1)e[n]=e[r];e.pop()}const o=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],o=t&&t.split("/")||[],s=e&&i(e),l=t&&i(t),u=s||l;if(e&&i(e)?o=r:r.length&&(o.pop(),o=o.concat(r)),!o.length)return"/";if(o.length){var c=o[o.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,p=o.length;p>=0;p--){var f=o[p];"."===f?a(o,p):".."===f?(a(o,p),d++):d&&(a(o,p),d--)}if(!u)for(;d--;d)o.unshift("..");!u||""===o[0]||o[0]&&i(o[0])||o.unshift("");var m=o.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var s=n(8776);function l(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 p(e){var t=e.pathname,n=e.search,r=e.hash,i=t||"/";return n&&"?"!==n&&(i+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(i+="#"===r.charAt(0)?r:"#"+r),i}function f(e,t,n,i){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",i=t.indexOf("#");-1!==i&&(r=t.substr(i),t=t.substr(0,i));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.Z)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(a.key=n),i?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=o(a.pathname,i.pathname)):a.pathname=i.pathname:a.pathname||(a.pathname="/"),a}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,i){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,i):i(!0):i(!1!==a)}else i(!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;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var g=!("undefined"==typeof window||!window.document||!window.document.createElement);function h(e,t){t(window.confirm(e))}var b="popstate",v="hashchange";function y(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),g||(0,s.Z)(!1);var t,n=window.history,i=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,a=!(-1===window.navigator.userAgent.indexOf("Trident")),o=e,u=o.forceRefresh,w=void 0!==u&&u,k=o.getUserConfirmation,S=void 0===k?h:k,E=o.keyLength,x=void 0===E?6:E,_=e.basename?d(l(e.basename)):"";function O(e){var t=e||{},n=t.key,r=t.state,i=window.location,a=i.pathname+i.search+i.hash;return _&&(a=c(a,_)),f(a,r,n)}function P(){return Math.random().toString(36).substr(2,x)}var C=m();function T(e){(0,r.Z)(U,e),U.length=n.length,C.notifyListeners(U.location,U.action)}function I(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||R(O(e.state))}function A(){R(O(y()))}var L=!1;function R(e){if(L)L=!1,T();else{C.confirmTransitionTo(e,"POP",S,(function(t){t?T({action:"POP",location:e}):function(e){var t=U.location,n=j.indexOf(t.key);-1===n&&(n=0);var r=j.indexOf(e.key);-1===r&&(r=0);var i=n-r;i&&(L=!0,M(i))}(e)}))}}var N=O(y()),j=[N.key];function D(e){return _+p(e)}function M(e){n.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?(window.addEventListener(b,I),a&&window.addEventListener(v,A)):0===F&&(window.removeEventListener(b,I),a&&window.removeEventListener(v,A))}var z=!1;var U={length:n.length,action:"POP",location:N,createHref:D,push:function(e,t){var r="PUSH",a=f(e,t,P(),U.location);C.confirmTransitionTo(a,r,S,(function(e){if(e){var t=D(a),o=a.key,s=a.state;if(i)if(n.pushState({key:o,state:s},null,t),w)window.location.href=t;else{var l=j.indexOf(U.location.key),u=j.slice(0,l+1);u.push(a.key),j=u,T({action:r,location:a})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,P(),U.location);C.confirmTransitionTo(a,r,S,(function(e){if(e){var t=D(a),o=a.key,s=a.state;if(i)if(n.replaceState({key:o,state:s},null,t),w)window.location.replace(t);else{var l=j.indexOf(U.location.key);-1!==l&&(j[l]=a.key),T({action:r,location:a})}else window.location.replace(t)}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=C.setPrompt(e);return z||(B(1),z=!0),function(){return z&&(z=!1,B(-1)),t()}},listen:function(e){var t=C.appendListener(e);return B(1),function(){B(-1),t()}}};return U}var k="hashchange",S={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+u(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:u,decodePath:l},slash:{encodePath:l,decodePath:l}};function E(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function x(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function _(e){window.location.replace(E(window.location.href)+"#"+e)}function O(e){void 0===e&&(e={}),g||(0,s.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),i=n.getUserConfirmation,a=void 0===i?h:i,o=n.hashType,u=void 0===o?"slash":o,b=e.basename?d(l(e.basename)):"",v=S[u],y=v.encodePath,w=v.decodePath;function O(){var e=w(x());return b&&(e=c(e,b)),f(e)}var P=m();function C(e){(0,r.Z)(z,e),z.length=t.length,P.notifyListeners(z.location,z.action)}var T=!1,I=null;function A(){var e,t,n=x(),r=y(n);if(n!==r)_(r);else{var i=O(),o=z.location;if(!T&&(t=i,(e=o).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(I===p(i))return;I=null,function(e){if(T)T=!1,C();else{var t="POP";P.confirmTransitionTo(e,t,a,(function(n){n?C({action:t,location:e}):function(e){var t=z.location,n=j.lastIndexOf(p(t));-1===n&&(n=0);var r=j.lastIndexOf(p(e));-1===r&&(r=0);var i=n-r;i&&(T=!0,D(i))}(e)}))}}(i)}}var L=x(),R=y(L);L!==R&&_(R);var N=O(),j=[p(N)];function D(e){t.go(e)}var M=0;function F(e){1===(M+=e)&&1===e?window.addEventListener(k,A):0===M&&window.removeEventListener(k,A)}var B=!1;var z={length:t.length,action:"POP",location:N,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=E(window.location.href)),n+"#"+y(b+p(e))},push:function(e,t){var n="PUSH",r=f(e,void 0,void 0,z.location);P.confirmTransitionTo(r,n,a,(function(e){if(e){var t=p(r),i=y(b+t);if(x()!==i){I=t,function(e){window.location.hash=e}(i);var a=j.lastIndexOf(p(z.location)),o=j.slice(0,a+1);o.push(t),j=o,C({action:n,location:r})}else C()}}))},replace:function(e,t){var n="REPLACE",r=f(e,void 0,void 0,z.location);P.confirmTransitionTo(r,n,a,(function(e){if(e){var t=p(r),i=y(b+t);x()!==i&&(I=t,_(i));var a=j.indexOf(p(z.location));-1!==a&&(j[a]=t),C({action:n,location:r})}}))},go:D,goBack:function(){D(-1)},goForward:function(){D(1)},block:function(e){void 0===e&&(e=!1);var t=P.setPrompt(e);return B||(F(1),B=!0),function(){return B&&(B=!1,F(-1)),t()}},listen:function(e){var t=P.appendListener(e);return F(1),function(){F(-1),t()}}};return z}function P(e,t,n){return Math.min(Math.max(e,t),n)}function C(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,i=t.initialEntries,a=void 0===i?["/"]:i,o=t.initialIndex,s=void 0===o?0:o,l=t.keyLength,u=void 0===l?6:l,c=m();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function g(){return Math.random().toString(36).substr(2,u)}var h=P(s,0,a.length-1),b=a.map((function(e){return f(e,void 0,"string"==typeof e?g():e.key||g())})),v=p;function y(e){var t=P(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:b.length,action:"POP",location:b[h],index:h,entries:b,createHref:v,push:function(e,t){var r="PUSH",i=f(e,t,g(),w.location);c.confirmTransitionTo(i,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,i):n.push(i),d({action:r,location:i,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",i=f(e,t,g(),w.location);c.confirmTransitionTo(i,r,n,(function(e){e&&(w.entries[w.index]=i,d({action:r,location:i}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(9864),i={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?o:s[e.$$typeof]||i}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=o;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var i=f(n);i&&i!==m&&e(t,i,r)}var o=c(n);d&&(o=o.concat(d(n)));for(var s=l(t),g=l(n),h=0;h<o.length;++h){var b=o[h];if(!(a[b]||r&&r[b]||g&&g[b]||s&&s[b])){var v=p(n,b);try{u(t,b,v)}catch(y){}}}}return t}},1143:e=>{"use strict";e.exports=function(e,t,n,r,i,a,o,s){if(!e){var l;if(void 0===t)l=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,i,a,o,s],c=0;(l=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},813:function(e){e.exports=function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){function e(n){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=i,this.iframesTimeout=a}return n(e,[{key:"getContexts",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach((function(t){var n=e.filter((function(e){return e.contains(t)})).length>0;-1!==e.indexOf(t)||n||e.push(t)})),e}},{key:"getIframeContents",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var i=e.contentWindow;if(r=i.document,!i||!r)throw new Error("iframe inaccessible")}catch(a){n()}r&&t(r)}},{key:"isIframeBlank",value:function(e){var t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}},{key:"observeIframeLoad",value:function(e,t,n){var r=this,i=!1,a=null,o=function o(){if(!i){i=!0,clearTimeout(a);try{r.isIframeBlank(e)||(e.removeEventListener("load",o),r.getIframeContents(e,t,n))}catch(s){n()}}};e.addEventListener("load",o),a=setTimeout(o,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,n){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(r){n()}}},{key:"waitForIframes",value:function(e,t){var n=this,r=0;this.forEachIframe(e,(function(){return!0}),(function(e){r++,n.waitForIframes(e.querySelector("html"),(function(){--r||t()}))}),(function(e){e||t()}))}},{key:"forEachIframe",value:function(t,n,r){var i=this,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},o=t.querySelectorAll("iframe"),s=o.length,l=0;o=Array.prototype.slice.call(o);var u=function(){--s<=0&&a(l)};s||u(),o.forEach((function(t){e.matches(t,i.exclude)?u():i.onIframeReady(t,(function(e){n(t)&&(l++,r(e)),u()}),u)}))}},{key:"createIterator",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:"getIteratorNode",value:function(e){var t=e.previousNode();return{prevNode:t,node:(null===t||e.nextNode())&&e.nextNode()}}},{key:"checkIframeFilter",value:function(e,t,n,r){var i=!1,a=!1;return r.forEach((function(e,t){e.val===n&&(i=t,a=e.handled)})),this.compareNodeIframe(e,t,n)?(!1!==i||a?!1===i||a||(r[i].handled=!0):r.push({val:n,handled:!0}),!0):(!1===i&&r.push({val:n,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,n,r){var i=this;e.forEach((function(e){e.handled||i.getIframeContents(e.val,(function(e){i.createInstanceOnIframe(e).forEachNode(t,n,r)}))}))}},{key:"iterateThroughNodes",value:function(e,t,n,r,i){for(var a=this,o=this.createIterator(t,e,r),s=[],l=[],u=void 0,c=void 0,d=function(){var e=a.getIteratorNode(o);return c=e.prevNode,u=e.node};d();)this.iframes&&this.forEachIframe(t,(function(e){return a.checkIframeFilter(u,c,e,s)}),(function(t){a.createInstanceOnIframe(t).forEachNode(e,(function(e){return l.push(e)}),r)})),l.push(u);l.forEach((function(e){n(e)})),this.iframes&&this.handleOpenIframes(s,e,n,r),i()}},{key:"forEachNode",value:function(e,t,n){var r=this,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},a=this.getContexts(),o=a.length;o||i(),a.forEach((function(a){var s=function(){r.iterateThroughNodes(e,a,t,n,(function(){--o<=0&&i()}))};r.iframes?r.waitForIframes(a,s):s()}))}}],[{key:"matches",value:function(e,t){var n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var i=!1;return n.every((function(t){return!r.call(e,t)||(i=!0,!1)})),i}return!1}}]),e}(),a=function(){function a(e){t(this,a),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf("MSIE")>-1||n.indexOf("Trident")>-1)&&(this.ie=!0)}return n(a,[{key:"log",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&"object"===(void 0===r?"undefined":e(r))&&"function"==typeof r[n]&&r[n]("mark.js: "+t)}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e)}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var i in t)if(t.hasOwnProperty(i)){var a=t[i],o="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(i):this.escapeStr(i),s="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(a):this.escapeStr(a);""!==o&&""!==s&&(e=e.replace(new RegExp("("+this.escapeStr(o)+"|"+this.escapeStr(s)+")","gm"+n),r+"("+this.processSynomyms(o)+"|"+this.processSynomyms(s)+")"+r))}return e}},{key:"processSynomyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,(function(e){return"\\"===e.charAt(0)?"?":"\x01"}))).replace(/(?:\\)*\*/g,(function(e){return"\\"===e.charAt(0)?"*":"\x02"}))}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,(function(e,t,n){var r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"}))}},{key:"createJoinersRegExp",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105","A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010d","C\xc7\u0106\u010c","d\u0111\u010f","D\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119","E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012b","I\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142","L\u0141","n\xf1\u0148\u0144","N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014d","O\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159","R\u0158","s\u0161\u015b\u0219\u015f","S\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163","T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016b","U\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xff","Y\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017a","Z\u017d\u017b\u0179"]:["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010dC\xc7\u0106\u010c","d\u0111\u010fD\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012bI\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142L\u0141","n\xf1\u0148\u0144N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014dO\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159R\u0158","s\u0161\u015b\u0219\u015fS\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016bU\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xffY\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017aZ\u017d\u017b\u0179"],r=[];return e.split("").forEach((function(i){n.every((function(n){if(-1!==n.indexOf(i)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp("["+n+"]","gm"+t),"["+n+"]"),r.push(n)}return!0}))})),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,n="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xa1\xbf",r=this.opt.accuracy,i="string"==typeof r?r:r.value,a="string"==typeof r?[]:r.limiters,o="";switch(a.forEach((function(e){o+="|"+t.escapeStr(e)})),i){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(o="\\s"+(o||this.escapeStr(n)))+"]*"+e+"[^"+o+"]*)";case"exactly":return"(^|\\s"+o+")("+e+")(?=$|\\s"+o+")"}}},{key:"getSeparatedKeywords",value:function(e){var t=this,n=[];return e.forEach((function(e){t.opt.separateWordSearch?e.split(" ").forEach((function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)})):e.trim()&&-1===n.indexOf(e)&&n.push(e)})),{keywords:n.sort((function(e,t){return t.length-e.length})),length:n.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort((function(e,t){return e.start-t.start})).forEach((function(e){var i=t.callNoMatchOnInvalidRanges(e,r),a=i.start,o=i.end;i.valid&&(e.start=a,e.length=o-a,n.push(e),r=o)})),n}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var n=void 0,r=void 0,i=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?i=!0:(this.log("Ignoring invalid or overlapping range: "+JSON.stringify(e)),this.opt.noMatch(e))):(this.log("Ignoring invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:n,end:r,valid:i}}},{key:"checkWhitespaceRanges",value:function(e,t,n){var r=void 0,i=!0,a=n.length,o=t-a,s=parseInt(e.start,10)-o;return(r=(s=s>a?a:s)+parseInt(e.length,10))>a&&(r=a,this.log("End range automatically set to the max value of "+a)),s<0||r-s<0||s>a||r>a?(i=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===n.substring(s,r).replace(/\s+/g,"")&&(i=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:s,end:r,valid:i}}},{key:"getTextNodes",value:function(e){var t=this,n="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,(function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})}),(function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),(function(){e({value:n,nodes:r})}))}},{key:"matchesExclude",value:function(e){return i.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,n){var r=this.opt.element?this.opt.element:"mark",i=e.splitText(t),a=i.splitText(n-t),o=document.createElement(r);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=i.textContent,i.parentNode.replaceChild(o,i),a}},{key:"wrapRangeInMappedTextNode",value:function(e,t,n,r,i){var a=this;e.nodes.every((function(o,s){var l=e.nodes[s+1];if(void 0===l||l.start>t){if(!r(o.node))return!1;var u=t-o.start,c=(n>o.end?o.end:n)-o.start,d=e.value.substr(0,o.start),p=e.value.substr(c+o.start);if(o.node=a.wrapRangeInTextNode(o.node,u,c),e.value=d+p,e.nodes.forEach((function(t,n){n>=s&&(e.nodes[n].start>0&&n!==s&&(e.nodes[n].start-=c),e.nodes[n].end-=c)})),n-=c,i(o.node.previousSibling,o.start),!(n>o.end))return!1;t=o.end}return!0}))}},{key:"wrapMatches",value:function(e,t,n,r,i){var a=this,o=0===t?0:t+1;this.getTextNodes((function(t){t.nodes.forEach((function(t){t=t.node;for(var i=void 0;null!==(i=e.exec(t.textContent))&&""!==i[o];)if(n(i[o],t)){var s=i.index;if(0!==o)for(var l=1;l<o;l++)s+=i[l].length;t=a.wrapRangeInTextNode(t,s,s+i[o].length),r(t.previousSibling),e.lastIndex=0}})),i()}))}},{key:"wrapMatchesAcrossElements",value:function(e,t,n,r,i){var a=this,o=0===t?0:t+1;this.getTextNodes((function(t){for(var s=void 0;null!==(s=e.exec(t.value))&&""!==s[o];){var l=s.index;if(0!==o)for(var u=1;u<o;u++)l+=s[u].length;var c=l+s[o].length;a.wrapRangeInMappedTextNode(t,l,c,(function(e){return n(s[o],e)}),(function(t,n){e.lastIndex=n,r(t)}))}i()}))}},{key:"wrapRangeFromIndex",value:function(e,t,n,r){var i=this;this.getTextNodes((function(a){var o=a.value.length;e.forEach((function(e,r){var s=i.checkWhitespaceRanges(e,o,a.value),l=s.start,u=s.end;s.valid&&i.wrapRangeInMappedTextNode(a,l,u,(function(n){return t(n,e,a.value.substring(l,u),r)}),(function(t){n(t,e)}))})),r()}))}},{key:"unwrapMatches",value:function(e){for(var t=e.parentNode,n=document.createDocumentFragment();e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}},{key:"normalizeTextNode",value:function(e){if(e){if(3===e.nodeType)for(;e.nextSibling&&3===e.nextSibling.nodeType;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}},{key:"markRegExp",value:function(e,t){var n=this;this.opt=t,this.log('Searching with expression "'+e+'"');var r=0,i="wrapMatches",a=function(e){r++,n.opt.each(e)};this.opt.acrossElements&&(i="wrapMatchesAcrossElements"),this[i](e,this.opt.ignoreGroups,(function(e,t){return n.opt.filter(t,e,r)}),a,(function(){0===r&&n.opt.noMatch(e),n.opt.done(r)}))}},{key:"mark",value:function(e,t){var n=this;this.opt=t;var r=0,i="wrapMatches",a=this.getSeparatedKeywords("string"==typeof e?[e]:e),o=a.keywords,s=a.length,l=this.opt.caseSensitive?"":"i",u=function e(t){var a=new RegExp(n.createRegExp(t),"gm"+l),u=0;n.log('Searching with expression "'+a+'"'),n[i](a,1,(function(e,i){return n.opt.filter(i,t,r,u)}),(function(e){u++,r++,n.opt.each(e)}),(function(){0===u&&n.opt.noMatch(t),o[s-1]===t?n.opt.done(r):e(o[o.indexOf(t)+1])}))};this.opt.acrossElements&&(i="wrapMatchesAcrossElements"),0===s?this.opt.done(r):u(o[0])}},{key:"markRanges",value:function(e,t){var n=this;this.opt=t;var r=0,i=this.checkRanges(e);i&&i.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(i)),this.wrapRangeFromIndex(i,(function(e,t,r,i){return n.opt.filter(e,t,r,i)}),(function(e,t){r++,n.opt.each(e,t)}),(function(){n.opt.done(r)}))):this.opt.done(r)}},{key:"unmark",value:function(e){var t=this;this.opt=e;var n=this.opt.element?this.opt.element:"*";n+="[data-markjs]",this.opt.className&&(n+="."+this.opt.className),this.log('Removal selector "'+n+'"'),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,(function(e){t.unwrapMatches(e)}),(function(e){var r=i.matches(e,n),a=t.matchesExclude(e);return!r||a?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),this.opt.done)}},{key:"opt",set:function(e){this._opt=r({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:function(){},noMatch:function(){},filter:function(){return!0},done:function(){},debug:!1,log:window.console},e)},get:function(){return this._opt}},{key:"iterator",get:function(){return new i(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}}]),a}();function o(e){var t=this,n=new a(e);return this.mark=function(e,r){return n.mark(e,r),t},this.markRegExp=function(e,r){return n.markRegExp(e,r),t},this.markRanges=function(e,r){return n.markRanges(e,r),t},this.unmark=function(e){return n.unmark(e),t},this}return o}()},9414:(e,t,n)=>{"use strict";n.r(t)},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,i;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:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function i(e,t,n){return e<t?t:e>n?n:e}function a(e){return 100*(-1+e)}function o(e,t,n){var i;return(i="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,i}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=i(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),u=a.querySelector(r.barSelector),c=r.speed,d=r.easing;return a.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(u,o(e,c,d)),1===e?(l(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){l(a,{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)*i(Math.random()*t,.1,.95)),t=i(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 i,o=t.querySelector(r.barSelector),s=e?"-100":a(n.status||0),u=document.querySelector(r.parent);return l(o,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(i=t.querySelector(r.spinnerSelector))&&f(i),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&&f(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 s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=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,i=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);i--;)if((r=e[i]+a)in n)return r;return t}function i(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=i(t),e.style[t]=n}return function(e,t){var n,r,i=arguments;if(2==i.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,i[1],i[2])}}();function u(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(i="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=i)},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(i){return!1}}()?Object.assign:function(e,i){for(var a,o,s=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),l=1;l<arguments.length;l++){for(var u in a=Object(arguments[l]))n.call(a,u)&&(s[u]=a[u]);if(t){o=t(a);for(var c=0;c<o.length;c++)r.call(a,o[c])&&(s[o[c]]=a[o[c]])}}return s}},7410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof i?new i(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var i,a;switch(n=n||{},r.util.type(t)){case"Object":if(a=r.util.objId(t),n[a])return n[a];for(var o in i={},n[a]=i,t)t.hasOwnProperty(o)&&(i[o]=e(t[o],n));return i;case"Array":return a=r.util.objId(t),n[a]?n[a]:(i=[],n[a]=i,t.forEach((function(t,r){i[r]=e(t,n)})),i);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var i=e.classList;if(i.contains(t))return!0;if(i.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var i in t)n[i]=t[i];return n},insertBefore:function(e,t,n,i){var a=(i=i||r.languages)[e],o={};for(var s in a)if(a.hasOwnProperty(s)){if(s==t)for(var l in n)n.hasOwnProperty(l)&&(o[l]=n[l]);n.hasOwnProperty(s)||(o[s]=a[s])}var u=i[e];return i[e]=o,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=o)})),o},DFS:function e(t,n,i,a){a=a||{};var o=r.util.objId;for(var s in t)if(t.hasOwnProperty(s)){n.call(t,s,t[s],i||s);var l=t[s],u=r.util.type(l);"Object"!==u||a[o(l)]?"Array"!==u||a[o(l)]||(a[o(l)]=!0,e(l,n,s,a)):(a[o(l)]=!0,e(l,n,null,a))}}},plugins:{},highlight:function(e,t,n){var a={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",a),a.tokens=r.tokenize(a.code,a.grammar),r.hooks.run("after-tokenize",a),i.stringify(r.util.encode(a.tokens),a.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var i=new s;return l(i,i.head,e),o(e,i,t,i.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(i)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var i,a=0;i=n[a++];)i(t)}},Token:i};function i(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function a(e,t,n,r){e.lastIndex=t;var i=e.exec(n);if(i&&r&&i[1]){var a=i[1].length;i.index+=a,i[0]=i[0].slice(a)}return i}function o(e,t,n,s,c,d){for(var p in n)if(n.hasOwnProperty(p)&&n[p]){var f=n[p];f=Array.isArray(f)?f:[f];for(var m=0;m<f.length;++m){if(d&&d.cause==p+","+m)return;var g=f[m],h=g.inside,b=!!g.lookbehind,v=!!g.greedy,y=g.alias;if(v&&!g.pattern.global){var w=g.pattern.toString().match(/[imsuy]*$/)[0];g.pattern=RegExp(g.pattern.source,w+"g")}for(var k=g.pattern||g,S=s.next,E=c;S!==t.tail&&!(d&&E>=d.reach);E+=S.value.length,S=S.next){var x=S.value;if(t.length>e.length)return;if(!(x instanceof i)){var _,O=1;if(v){if(!(_=a(k,E,e,b))||_.index>=e.length)break;var P=_.index,C=_.index+_[0].length,T=E;for(T+=S.value.length;P>=T;)T+=(S=S.next).value.length;if(E=T-=S.value.length,S.value instanceof i)continue;for(var I=S;I!==t.tail&&(T<C||"string"==typeof I.value);I=I.next)O++,T+=I.value.length;O--,x=e.slice(E,T),_.index-=E}else if(!(_=a(k,0,x,b)))continue;P=_.index;var A=_[0],L=x.slice(0,P),R=x.slice(P+A.length),N=E+x.length;d&&N>d.reach&&(d.reach=N);var j=S.prev;if(L&&(j=l(t,j,L),E+=L.length),u(t,j,O),S=l(t,j,new i(p,h?r.tokenize(A,h):A,y,A)),R&&l(t,S,R),O>1){var D={cause:p+","+m,reach:N};o(e,t,n,S.prev,E,D),d&&D.reach>d.reach&&(d.reach=D.reach)}}}}}}function s(){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 l(e,t,n){var r=t.next,i={value:n,prev:t,next:r};return t.next=i,r.prev=i,e.length++,i}function u(e,t,n){for(var r=t.next,i=0;i<n&&r!==e.tail;i++)r=r.next;t.next=r,r.prev=t,e.length-=i}return i.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var i="";return t.forEach((function(t){i+=e(t,n)})),i}var a={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},o=t.alias;o&&(Array.isArray(o)?Array.prototype.push.apply(a.classes,o):a.classes.push(o)),r.hooks.run("wrap",a);var s="";for(var l in a.attributes)s+=" "+l+'="'+(a.attributes[l]||"").replace(/"/g,""")+'"';return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+s+">"+a.content+"</"+a.tag+">"},r}(),i=r;r.default=r,i.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\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:/<!\[CDATA\[[\s\S]*?\]\]>/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]},i.languages.markup.tag.inside["attr-value"].inside.entity=i.languages.markup.entity,i.languages.markup.doctype.inside["internal-subset"].inside=i.languages.markup,i.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(i.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:i.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:i.languages[t]};var a={};a[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},i.languages.insertBefore("markup","cdata",a)}}),Object.defineProperty(i.languages.markup.tag,"addAttribute",{value:function(e,t){i.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:i.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),i.languages.html=i.languages.markup,i.languages.mathml=i.languages.markup,i.languages.svg=i.languages.markup,i.languages.xml=i.languages.extend("markup",{}),i.languages.ssml=i.languages.xml,i.languages.atom=i.languages.xml,i.languages.rss=i.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 i=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],a=r.variable[1].inside,o=0;o<i.length;o++)a[i[o]]=e.languages.bash[i[o]];e.languages.shell=e.languages.bash}(i),i.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},i.languages.c=i.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|[?:~]|[-+*/%&|^!=<>]=?/}),i.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),i.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},i.languages.c.string],char:i.languages.c.char,comment:i.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:i.languages.c}}}}),i.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 i.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(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/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+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/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"])}(i),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"))}(i),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},i={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:i,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:i})}(i),i.languages.javascript=i.languages.extend("clike",{"class-name":[i.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}|\?\?=?|\?\.?|[~:]/}),i.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,i.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:i.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:i.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:i.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:i.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:i.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),i.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:i.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"}}),i.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),i.languages.markup&&(i.languages.markup.tag.addInlined("script","javascript"),i.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")),i.languages.js=i.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}(i),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",i=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),a=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function o(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+i+"|"+a+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:o(/\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:o(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:o(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:o(a),lookbehind:!0,greedy:!0},number:{pattern:o(/[+-]?(?: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}(i),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,i=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),a=/\|?[ \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("^"+i+a+"(?:"+i+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+i+a+")(?:"+i+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+i+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+i+"$"),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__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\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(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.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<r;n++){var i=t[n];if("code"===i.type){var a=i.content[1],o=i.content[3];if(a&&o&&"code-language"===a.type&&"code-block"===o.type&&"string"==typeof a.content){var s=a.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),l="language-"+(s=(/[a-z][\w-]*/i.exec(s)||[""])[0].toLowerCase());o.alias?"string"==typeof o.alias?o.alias=[o.alias,l]:o.alias.push(l):o.alias=[l]}}else e(i.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,i=t.classes.length;r<i;r++){var a=t.classes[r],u=/language-(.+)/.exec(a);if(u){n=u[1];break}}var c,d=e.languages[n];if(d)t.content=e.highlight((c=t.content,c.replace(o,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),l(n);var r=s[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var p="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=p,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(p);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var o=RegExp(e.languages.markup.tag.pattern.source,"gi"),s={amp:"&",lt:"<",gt:">",quot:'"'},l=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(i),i.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:i.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+/},i.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;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var i=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var a=p(/^\($/,/^\)$/);if(-1===a)continue;for(;n<a;n++){var o=c(0);"variable"===o.type&&(f(o,"variable-input"),i.push(o.content))}n=a+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,f(c(0),"property-mutation"),i.length>0)){var s=p(/^\{$/,/^\}$/);if(-1===s)continue;for(var l=n;l<s;l++){var u=t[l];"variable"===u.type&&i.indexOf(u.content)>=0&&f(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return!1}return!0}function p(e,r){for(var i=1,a=n;a<t.length;a++){var o=t[a],s=o.content;if("punctuation"===o.type&&"string"==typeof s)if(e.test(s))i++;else if(r.test(s)&&0===--i)return a}return-1}function f(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),i.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\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,i=r.inside["interpolation-punctuation"],a=r.pattern.source;function o(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 s(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function l(t,n,r){var i={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",i),i.tokens=e.tokenize(i.code,i.grammar),e.hooks.run("after-tokenize",i),i.tokens}function u(t){var n={};n["interpolation-punctuation"]=i;var a=e.tokenize(t,n);if(3===a.length){var o=[1,1];o.push.apply(o,l(a[1],e.languages.javascript,"javascript")),a.splice.apply(a,o)}return new e.Token("interpolation",a,r.alias,t)}function c(t,n,r){var i=e.tokenize(t,{interpolation:{pattern:RegExp(a),lookbehind:!0}}),o=0,c={},d=l(i.map((function(e){if("string"==typeof e)return e;for(var n,i=e.content;-1!==t.indexOf(n=s(o++,r)););return c[n]=i,n})).join(""),n,r),p=Object.keys(c);return o=0,function e(t){for(var n=0;n<t.length;n++){if(o>=p.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var i=p[o],a="string"==typeof r?r:r.content,s=a.indexOf(i);if(-1!==s){++o;var l=a.substring(0,s),d=u(c[i]),f=a.substring(s+i.length),m=[];if(l&&m.push(l),m.push(d),f){var g=[f];e(g),m.push.apply(m,g)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var h=r.content;Array.isArray(h)?e(h):e([h])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[o("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),o("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),o("svg",/\bsvg/.source),o("markdown",/\b(?:markdown|md)/.source),o("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),o("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,i=n.length;r<i;r++){var a=n[r];if("string"!=typeof a){var o=a.content;if(Array.isArray(o))if("template-string"===a.type){var s=o[1];if(3===o.length&&"string"!=typeof s&&"embedded-code"===s.type){var l=p(s),u=s.alias,d=Array.isArray(u)?u[0]:u,f=e.languages[d];if(!f)continue;o[1]=c(l,f,d)}}else t(o);else"string"!=typeof o&&t([o])}}}(t.tokens)}))}(i),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,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}(i),function(e){function t(e,t){return RegExp(e.replace(/<ID>/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*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\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*)#?<ID>/.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<n.length;r++){var i=n[r],a=e.languages.javascript[i];"RegExp"===e.util.type(a)&&(a=e.languages.javascript[i]={pattern:a});var o=a.inside||{};a.inside=o,o["maybe-class-name"]=/^[A-Z][\s\S]*/}}(i),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,i=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function a(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return i})),RegExp(e,t)}i=a(i).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=a(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<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:a(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var o=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(o).join(""):""},s=function(t){for(var n=[],r=0;r<t.length;r++){var i=t[r],a=!1;if("string"!=typeof i&&("tag"===i.type&&i.content[0]&&"tag"===i.content[0].type?"</"===i.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===o(i.content[0].content[1])&&n.pop():"/>"===i.content[i.content.length-1].content||n.push({tagName:o(i.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===i.type&&"{"===i.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===i.type&&"}"===i.content?n[n.length-1].openedBraces--:a=!0),(a||"string"==typeof i)&&n.length>0&&0===n[n.length-1].openedBraces){var l=o(i);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(l+=o(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(l=o(t[r-1])+l,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",l,null,l)}i.content&&"string"!=typeof i.content&&s(i.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||s(e.tokens)}))}(i),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],i=[];/^\w+$/.test(n)||i.push(/\w+/.exec(n)[0]),"diff"===n&&i.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:i,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})}(i),i.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},i.languages.go=i.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/}),i.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete i.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,i,a){if(n.language===r){var o=n.tokenStack=[];n.code=n.code.replace(i,(function(e){if("function"==typeof a&&!a(e))return e;for(var i,s=o.length;-1!==n.code.indexOf(i=t(r,s));)++s;return o[s]=e,i})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var i=0,a=Object.keys(n.tokenStack);!function o(s){for(var l=0;l<s.length&&!(i>=a.length);l++){var u=s[l];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=a[i],d=n.tokenStack[c],p="string"==typeof u?u:u.content,f=t(r,c),m=p.indexOf(f);if(m>-1){++i;var g=p.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),v=[];g&&v.push.apply(v,o([g])),v.push(h),b&&v.push.apply(v,o([b])),"string"==typeof u?s.splice.apply(s,[l,1].concat(v)):u.content=v}}else u.content&&o(u.content)}return s}(n.tokens)}}}})}(i),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}(i),i.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"}},i.languages.webmanifest=i.languages.json,i.languages.less=i.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:/[+\-*\/]/}),i.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),i.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:/[:;(){}]/},i.languages.objectivec=i.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 i.languages.objectivec["class-name"],i.languages.objc=i.languages.objectivec,i.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/},i.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:/[{}[\];(),.:]/},i.languages.python["string-interpolation"].inside.interpolation.inside.rest=i.languages.python,i.languages.py=i.languages.python,i.languages.reason=i.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/}),i.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 i.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}})}(i),i.languages.scss=i.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]+\}/}}}),i.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}]}),i.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),i.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}}),i.languages.scss.atrule.inside.rest=i.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:/[{}()\[\];:.]/}}(i),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}(i),i.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 a=i},9901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),i=n(9642),a=new Set;function o(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];i(r,e,t).load((e=>{if(!(e in r.languages))return void(o.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),a.add(e)}))}o.silent=!1,e.exports=o},6726:(e,t,n)=>{var r={"./":2885};function i(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}i.keys=function(){return Object.keys(r)},i.resolve=a,e.exports=i,i.id=6726},6500:(e,t,n)=>{var r={"./":2885};function i(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}i.keys=function(){return Object.keys(r)},i.resolve=a,e.exports=i,i.id=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function i(r,a){if(!(r in n)){a.push(r);var o=a.indexOf(r);if(o<a.length-1)throw new Error("Circular dependency: "+a.slice(o).join(" -> "));var s={},l=e[r];if(l){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in s))for(var o in i(t,a),s[t]=!0,n[t])s[o]=!0}t(l.require,u),t(l.optional,u),t(l.modify,u)}n[r]=s,a.pop()}}return function(e){var t=n[e];return t||(i(e,r),t=n[e]),t}}function i(e){for(var t in e)return!0;return!1}return function(a,o,s){var l=function(e){var t={};for(var n in e){var r=e[n];for(var i in r)if("meta"!=i){var a=r[i];t[i]="string"==typeof a?{title:a}:a}}return t}(a),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var i in n={},e){var a=e[i];t(a&&a.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+i+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+i+" because it is a component.");n[t]=i}))}return n[r]||r}}(l);o=o.map(u),s=(s||[]).map(u);var c=n(o),d=n(s);o.forEach((function e(n){var r=l[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var p,f=r(l),m=c;i(m);){for(var g in p={},m){var h=l[g];t(h&&h.modify,(function(e){e in d&&(p[e]=!0)}))}for(var b in d)if(!(b in c))for(var v in f(b))if(v in c){p[b]=!0;break}for(var y in m=p)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,i){var a=i?i.series:void 0,o=i?i.parallel:e,s={},l={};function u(e){if(e in s)return s[e];l[e]=!0;var i,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)i=r(e);else{var p=o(c.map((function(e){var t=u(e);return delete l[e],t})));a?i=a(p,(function(){return r(e)})):r(e)}return s[e]=i}for(var c in n)u(c);var d=[];for(var p in l)d.push(s[p]);return o(d)}(f,c,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function i(){}function a(){}a.resetWarningCache=i,e.exports=function(){function e(e,t,n,i,a,o){if(o!==r){var s=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 s.name="Invariant Violation",s}}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:a,resetWarningCache:i};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),i=n(7418),a=n(3840);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(o(227));var s=new Set,l={};function u(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(l[e]=t,e=0;e<t.length;e++)s.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),p=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,f=Object.prototype.hasOwnProperty,m={},g={};function h(e,t,n,r,i,a,o){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=o}var b={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){b[e]=new h(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];b[t]=new h(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){b[e]=new h(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){b[e]=new h(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){b[e]=new h(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){b[e]=new h(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){b[e]=new h(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){b[e]=new h(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){b[e]=new h(e,5,!1,e.toLowerCase(),null,!1,!1)}));var v=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var i=b.hasOwnProperty(t)?b[t]:null;(null!==i?0===i.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,i,r)&&(n=null),r||null===i?function(e){return!!f.call(g,e)||!f.call(m,e)&&(p.test(e)?g[e]=!0:(m[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):i.mustUseProperty?e[i.propertyName]=null===n?3!==i.type&&"":n:(t=i.attributeName,r=i.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(i=i.type)||4===i&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(v,y);b[t]=new h(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(v,y);b[t]=new h(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(v,y);b[t]=new h(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){b[e]=new h(e,1,!1,e.toLowerCase(),null,!1,!1)})),b.xlinkHref=new h("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){b[e]=new h(e,1,!1,e.toLowerCase(),null,!0,!0)}));var k=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,S=60103,E=60106,x=60107,_=60108,O=60114,P=60109,C=60110,T=60112,I=60113,A=60120,L=60115,R=60116,N=60121,j=60128,D=60129,M=60130,F=60131;if("function"==typeof Symbol&&Symbol.for){var B=Symbol.for;S=B("react.element"),E=B("react.portal"),x=B("react.fragment"),_=B("react.strict_mode"),O=B("react.profiler"),P=B("react.provider"),C=B("react.context"),T=B("react.forward_ref"),I=B("react.suspense"),A=B("react.suspense_list"),L=B("react.memo"),R=B("react.lazy"),N=B("react.block"),B("react.scope"),j=B("react.opaque.id"),D=B("react.debug_trace_mode"),M=B("react.offscreen"),F=B("react.legacy_hidden")}var z,U="function"==typeof Symbol&&Symbol.iterator;function q(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=U&&e[U]||e["@@iterator"])?e:null}function $(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var H=!1;function G(e,t){if(!e||H)return"";H=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(l){var r=l}Reflect.construct(e,[],t)}else{try{t.call()}catch(l){r=l}e.call(t.prototype)}else{try{throw Error()}catch(l){r=l}e()}}catch(l){if(l&&r&&"string"==typeof l.stack){for(var i=l.stack.split("\n"),a=r.stack.split("\n"),o=i.length-1,s=a.length-1;1<=o&&0<=s&&i[o]!==a[s];)s--;for(;1<=o&&0<=s;o--,s--)if(i[o]!==a[s]){if(1!==o||1!==s)do{if(o--,0>--s||i[o]!==a[s])return"\n"+i[o].replace(" at new "," at ")}while(1<=o&&0<=s);break}}}finally{H=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?$(e):""}function Q(e){switch(e.tag){case 5:return $(e.type);case 16:return $("Lazy");case 13:return $("Suspense");case 19:return $("SuspenseList");case 0:case 2:case 15:return e=G(e.type,!1);case 11:return e=G(e.type.render,!1);case 22:return e=G(e.type._render,!1);case 1:return e=G(e.type,!0);default:return""}}function V(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case x:return"Fragment";case E:return"Portal";case O:return"Profiler";case _:return"StrictMode";case I:return"Suspense";case A:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case C:return(e.displayName||"Context")+".Consumer";case P:return(e._context.displayName||"Context")+".Provider";case T:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case L:return V(e.type);case N:return V(e._render);case R:t=e._payload,e=e._init;try{return V(e(t))}catch(n){}}return null}function Z(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function W(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function K(e){e._valueTracker||(e._valueTracker=function(e){var t=W(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var i=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Y(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=W(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function X(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return i({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=Z(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=Z(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ie(e,t.type,n):t.hasOwnProperty("defaultValue")&&ie(e,t.type,Z(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ie(e,t,n){"number"===t&&X(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function ae(e,t){return e=i({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function oe(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t["$"+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty("$"+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=""+Z(n),t=null,i=0;i<e.length;i++){if(e[i].value===n)return e[i].selected=!0,void(r&&(e[i].defaultSelected=!0));null!==t||e[i].disabled||(t=e[i])}null!==t&&(t.selected=!0)}}function se(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(o(91));return i({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function le(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(o(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(o(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:Z(n)}}function ue(e,t){var n=Z(t.value),r=Z(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ce(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function pe(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function fe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?pe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var me,ge,he=(ge=function(e,t){if(e.namespaceURI!==de.svg||"innerHTML"in e)e.innerHTML=t;else{for((me=me||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=me.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ge(e,t)}))}:ge);function be(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var ve={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ye=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||ve.hasOwnProperty(e)&&ve[e]?(""+t).trim():t+"px"}function ke(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),i=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}Object.keys(ve).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ve[t]=ve[e]}))}));var Se=i({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Ee(e,t){if(t){if(Se[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(o(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(o(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(o(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(o(62))}}function xe(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function _e(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Oe=null,Pe=null,Ce=null;function Te(e){if(e=ni(e)){if("function"!=typeof Oe)throw Error(o(280));var t=e.stateNode;t&&(t=ii(t),Oe(e.stateNode,e.type,t))}}function Ie(e){Pe?Ce?Ce.push(e):Ce=[e]:Pe=e}function Ae(){if(Pe){var e=Pe,t=Ce;if(Ce=Pe=null,Te(e),t)for(e=0;e<t.length;e++)Te(t[e])}}function Le(e,t){return e(t)}function Re(e,t,n,r,i){return e(t,n,r,i)}function Ne(){}var je=Le,De=!1,Me=!1;function Fe(){null===Pe&&null===Ce||(Ne(),Ae())}function Be(e,t){var n=e.stateNode;if(null===n)return null;var r=ii(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(o(231,t,typeof n));return n}var ze=!1;if(d)try{var Ue={};Object.defineProperty(Ue,"passive",{get:function(){ze=!0}}),window.addEventListener("test",Ue,Ue),window.removeEventListener("test",Ue,Ue)}catch(ge){ze=!1}function qe(e,t,n,r,i,a,o,s,l){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var $e=!1,He=null,Ge=!1,Qe=null,Ve={onError:function(e){$e=!0,He=e}};function Ze(e,t,n,r,i,a,o,s,l){$e=!1,He=null,qe.apply(Ve,arguments)}function We(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ke(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Ye(e){if(We(e)!==e)throw Error(o(188))}function Xe(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=We(e)))throw Error(o(188));return t!==e?null:e}for(var n=e,r=t;;){var i=n.return;if(null===i)break;var a=i.alternate;if(null===a){if(null!==(r=i.return)){n=r;continue}break}if(i.child===a.child){for(a=i.child;a;){if(a===n)return Ye(i),e;if(a===r)return Ye(i),t;a=a.sibling}throw Error(o(188))}if(n.return!==r.return)n=i,r=a;else{for(var s=!1,l=i.child;l;){if(l===n){s=!0,n=i,r=a;break}if(l===r){s=!0,r=i,n=a;break}l=l.sibling}if(!s){for(l=a.child;l;){if(l===n){s=!0,n=a,r=i;break}if(l===r){s=!0,r=a,n=i;break}l=l.sibling}if(!s)throw Error(o(189))}}if(n.alternate!==r)throw Error(o(190))}if(3!==n.tag)throw Error(o(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,rt,it=!1,at=[],ot=null,st=null,lt=null,ut=new Map,ct=new Map,dt=[],pt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function ft(e,t,n,r,i){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:i,targetContainers:[r]}}function mt(e,t){switch(e){case"focusin":case"focusout":ot=null;break;case"dragenter":case"dragleave":st=null;break;case"mouseover":case"mouseout":lt=null;break;case"pointerover":case"pointerout":ut.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ct.delete(t.pointerId)}}function gt(e,t,n,r,i,a){return null===e||e.nativeEvent!==a?(e=ft(t,n,r,i,a),null!==t&&(null!==(t=ni(t))&&tt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==i&&-1===t.indexOf(i)&&t.push(i),e)}function ht(e){var t=ti(e.target);if(null!==t){var n=We(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ke(n)))return e.blockedOn=t,void rt(e.lanePriority,(function(){a.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function bt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=ni(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function vt(e,t,n){bt(e)&&n.delete(t)}function yt(){for(it=!1;0<at.length;){var e=at[0];if(null!==e.blockedOn){null!==(e=ni(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&at.shift()}null!==ot&&bt(ot)&&(ot=null),null!==st&&bt(st)&&(st=null),null!==lt&&bt(lt)&&(lt=null),ut.forEach(vt),ct.forEach(vt)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,it||(it=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,yt)))}function kt(e){function t(t){return wt(t,e)}if(0<at.length){wt(at[0],e);for(var n=1;n<at.length;n++){var r=at[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==ot&&wt(ot,e),null!==st&&wt(st,e),null!==lt&&wt(lt,e),ut.forEach(t),ct.forEach(t),n=0;n<dt.length;n++)(r=dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<dt.length&&null===(n=dt[0]).blockedOn;)ht(n),null===n.blockedOn&&dt.shift()}function St(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Et={animationend:St("Animation","AnimationEnd"),animationiteration:St("Animation","AnimationIteration"),animationstart:St("Animation","AnimationStart"),transitionend:St("Transition","TransitionEnd")},xt={},_t={};function Ot(e){if(xt[e])return xt[e];if(!Et[e])return e;var t,n=Et[e];for(t in n)if(n.hasOwnProperty(t)&&t in _t)return xt[e]=n[t];return e}d&&(_t=document.createElement("div").style,"AnimationEvent"in window||(delete Et.animationend.animation,delete Et.animationiteration.animation,delete Et.animationstart.animation),"TransitionEvent"in window||delete Et.transitionend.transition);var Pt=Ot("animationend"),Ct=Ot("animationiteration"),Tt=Ot("animationstart"),It=Ot("transitionend"),At=new Map,Lt=new Map,Rt=["abort","abort",Pt,"animationEnd",Ct,"animationIteration",Tt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",It,"transitionEnd","waiting","waiting"];function Nt(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],i=e[n+1];i="on"+(i[0].toUpperCase()+i.slice(1)),Lt.set(r,t),At.set(r,i),u(i,[r])}}(0,a.unstable_now)();var jt=8;function Dt(e){if(0!=(1&e))return jt=15,1;if(0!=(2&e))return jt=14,2;if(0!=(4&e))return jt=13,4;var t=24&e;return 0!==t?(jt=12,t):0!=(32&e)?(jt=11,32):0!==(t=192&e)?(jt=10,t):0!=(256&e)?(jt=9,256):0!==(t=3584&e)?(jt=8,t):0!=(4096&e)?(jt=7,4096):0!==(t=4186112&e)?(jt=6,t):0!==(t=62914560&e)?(jt=5,t):67108864&e?(jt=4,67108864):0!=(134217728&e)?(jt=3,134217728):0!==(t=805306368&e)?(jt=2,t):0!=(1073741824&e)?(jt=1,1073741824):(jt=8,e)}function Mt(e,t){var n=e.pendingLanes;if(0===n)return jt=0;var r=0,i=0,a=e.expiredLanes,o=e.suspendedLanes,s=e.pingedLanes;if(0!==a)r=a,i=jt=15;else if(0!==(a=134217727&n)){var l=a&~o;0!==l?(r=Dt(l),i=jt):0!==(s&=a)&&(r=Dt(s),i=jt)}else 0!==(a=n&~o)?(r=Dt(a),i=jt):0!==s&&(r=Dt(s),i=jt);if(0===r)return 0;if(r=n&((0>(r=31-$t(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&o)){if(Dt(t),i<=jt)return t;jt=i}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)i=1<<(n=31-$t(t)),r|=e[n],t&=~i;return r}function Ft(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function Bt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=zt(24&~t))?Bt(10,t):e;case 10:return 0===(e=zt(192&~t))?Bt(8,t):e;case 8:return 0===(e=zt(3584&~t))&&(0===(e=zt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=zt(805306368&~t))&&(t=268435456),t}throw Error(o(358,e))}function zt(e){return e&-e}function Ut(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function qt(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-$t(t)]=n}var $t=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Ht(e)/Gt|0)|0},Ht=Math.log,Gt=Math.LN2;var Qt=a.unstable_UserBlockingPriority,Vt=a.unstable_runWithPriority,Zt=!0;function Wt(e,t,n,r){De||Ne();var i=Yt,a=De;De=!0;try{Re(i,e,t,n,r)}finally{(De=a)||Fe()}}function Kt(e,t,n,r){Vt(Qt,Yt.bind(null,e,t,n,r))}function Yt(e,t,n,r){var i;if(Zt)if((i=0==(4&t))&&0<at.length&&-1<pt.indexOf(e))e=ft(null,e,t,n,r),at.push(e);else{var a=Xt(e,t,n,r);if(null===a)i&&mt(e,r);else{if(i){if(-1<pt.indexOf(e))return e=ft(a,e,t,n,r),void at.push(e);if(function(e,t,n,r,i){switch(t){case"focusin":return ot=gt(ot,e,t,n,r,i),!0;case"dragenter":return st=gt(st,e,t,n,r,i),!0;case"mouseover":return lt=gt(lt,e,t,n,r,i),!0;case"pointerover":var a=i.pointerId;return ut.set(a,gt(ut.get(a)||null,e,t,n,r,i)),!0;case"gotpointercapture":return a=i.pointerId,ct.set(a,gt(ct.get(a)||null,e,t,n,r,i)),!0}return!1}(a,e,t,n,r))return;mt(e,r)}Nr(e,t,r,null,n)}}}function Xt(e,t,n,r){var i=_e(r);if(null!==(i=ti(i))){var a=We(i);if(null===a)i=null;else{var o=a.tag;if(13===o){if(null!==(i=Ke(a)))return i;i=null}else if(3===o){if(a.stateNode.hydrate)return 3===a.tag?a.stateNode.containerInfo:null;i=null}else a!==i&&(i=null)}}return Nr(e,t,r,i,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,r=n.length,i="value"in Jt?Jt.value:Jt.textContent,a=i.length;for(e=0;e<r&&n[e]===i[e];e++);var o=r-e;for(t=1;t<=o&&n[r-t]===i[a-t];t++);return tn=i.slice(e,1<t?1-t:void 0)}function rn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function on(){return!1}function sn(e){function t(t,n,r,i,a){for(var o in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=i,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(o)&&(t=e[o],this[o]=t?t(i):i[o]);return this.isDefaultPrevented=(null!=i.defaultPrevented?i.defaultPrevented:!1===i.returnValue)?an:on,this.isPropagationStopped=on,this}return i(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var ln,un,cn,dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},pn=sn(dn),fn=i({},dn,{view:0,detail:0}),mn=sn(fn),gn=i({},fn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Pn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==cn&&(cn&&"mousemove"===e.type?(ln=e.screenX-cn.screenX,un=e.screenY-cn.screenY):un=ln=0,cn=e),ln)},movementY:function(e){return"movementY"in e?e.movementY:un}}),hn=sn(gn),bn=sn(i({},gn,{dataTransfer:0})),vn=sn(i({},fn,{relatedTarget:0})),yn=sn(i({},dn,{animationName:0,elapsedTime:0,pseudoElement:0})),wn=i({},dn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),kn=sn(wn),Sn=sn(i({},dn,{data:0})),En={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},_n={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function On(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=_n[e])&&!!t[e]}function Pn(){return On}var Cn=i({},fn,{key:function(e){if(e.key){var t=En[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Pn,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Tn=sn(Cn),In=sn(i({},gn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),An=sn(i({},fn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Pn})),Ln=sn(i({},dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Rn=i({},gn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Nn=sn(Rn),jn=[9,13,27,32],Dn=d&&"CompositionEvent"in window,Mn=null;d&&"documentMode"in document&&(Mn=document.documentMode);var Fn=d&&"TextEvent"in window&&!Mn,Bn=d&&(!Dn||Mn&&8<Mn&&11>=Mn),zn=String.fromCharCode(32),Un=!1;function qn(e,t){switch(e){case"keyup":return-1!==jn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function $n(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Hn=!1;var Gn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Qn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Gn[e.type]:"textarea"===t}function Vn(e,t,n,r){Ie(r),0<(t=Dr(t,"onChange")).length&&(n=new pn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Zn=null,Wn=null;function Kn(e){Cr(e,0)}function Yn(e){if(Y(ri(e)))return e}function Xn(e,t){if("change"===e)return t}var Jn=!1;if(d){var er;if(d){var tr="oninput"in document;if(!tr){var nr=document.createElement("div");nr.setAttribute("oninput","return;"),tr="function"==typeof nr.oninput}er=tr}else er=!1;Jn=er&&(!document.documentMode||9<document.documentMode)}function rr(){Zn&&(Zn.detachEvent("onpropertychange",ir),Wn=Zn=null)}function ir(e){if("value"===e.propertyName&&Yn(Wn)){var t=[];if(Vn(t,Wn,e,_e(e)),e=Kn,De)e(t);else{De=!0;try{Le(e,t)}finally{De=!1,Fe()}}}}function ar(e,t,n){"focusin"===e?(rr(),Wn=n,(Zn=t).attachEvent("onpropertychange",ir)):"focusout"===e&&rr()}function or(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Yn(Wn)}function sr(e,t){if("click"===e)return Yn(t)}function lr(e,t){if("input"===e||"change"===e)return Yn(t)}var ur="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},cr=Object.prototype.hasOwnProperty;function dr(e,t){if(ur(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!cr.call(t,n[r])||!ur(e[n[r]],t[n[r]]))return!1;return!0}function pr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function fr(e,t){var n,r=pr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=pr(r)}}function mr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?mr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function gr(){for(var e=window,t=X();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=X((e=t.contentWindow).document)}return t}function hr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var br=d&&"documentMode"in document&&11>=document.documentMode,vr=null,yr=null,wr=null,kr=!1;function Sr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;kr||null==vr||vr!==X(r)||("selectionStart"in(r=vr)&&hr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},wr&&dr(wr,r)||(wr=r,0<(r=Dr(yr,"onSelect")).length&&(t=new pn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=vr)))}Nt("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Nt("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Nt(Rt,2);for(var Er="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),xr=0;xr<Er.length;xr++)Lt.set(Er[xr],0);c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),u("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),u("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),u("onBeforeInput",["compositionend","keypress","textInput","paste"]),u("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var _r="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Or=new Set("cancel close invalid load scroll toggle".split(" ").concat(_r));function Pr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,i,a,s,l,u){if(Ze.apply(this,arguments),$e){if(!$e)throw Error(o(198));var c=He;$e=!1,He=null,Ge||(Ge=!0,Qe=c)}}(r,t,void 0,e),e.currentTarget=null}function Cr(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],i=r.event;r=r.listeners;e:{var a=void 0;if(t)for(var o=r.length-1;0<=o;o--){var s=r[o],l=s.instance,u=s.currentTarget;if(s=s.listener,l!==a&&i.isPropagationStopped())break e;Pr(i,s,u),a=l}else for(o=0;o<r.length;o++){if(l=(s=r[o]).instance,u=s.currentTarget,s=s.listener,l!==a&&i.isPropagationStopped())break e;Pr(i,s,u),a=l}}}if(Ge)throw e=Qe,Ge=!1,Qe=null,e}function Tr(e,t){var n=ai(t),r=e+"__bubble";n.has(r)||(Rr(t,e,2,!1),n.add(r))}var Ir="_reactListening"+Math.random().toString(36).slice(2);function Ar(e){e[Ir]||(e[Ir]=!0,s.forEach((function(t){Or.has(t)||Lr(t,!1,e,null),Lr(t,!0,e,null)})))}function Lr(e,t,n,r){var i=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,a=n;if("selectionchange"===e&&9!==n.nodeType&&(a=n.ownerDocument),null!==r&&!t&&Or.has(e)){if("scroll"!==e)return;i|=2,a=r}var o=ai(a),s=e+"__"+(t?"capture":"bubble");o.has(s)||(t&&(i|=4),Rr(a,e,i,t),o.add(s))}function Rr(e,t,n,r){var i=Lt.get(t);switch(void 0===i?2:i){case 0:i=Wt;break;case 1:i=Kt;break;default:i=Yt}n=i.bind(null,t,n,e),i=void 0,!ze||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(i=!0),r?void 0!==i?e.addEventListener(t,n,{capture:!0,passive:i}):e.addEventListener(t,n,!0):void 0!==i?e.addEventListener(t,n,{passive:i}):e.addEventListener(t,n,!1)}function Nr(e,t,n,r,i){var a=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var o=r.tag;if(3===o||4===o){var s=r.stateNode.containerInfo;if(s===i||8===s.nodeType&&s.parentNode===i)break;if(4===o)for(o=r.return;null!==o;){var l=o.tag;if((3===l||4===l)&&((l=o.stateNode.containerInfo)===i||8===l.nodeType&&l.parentNode===i))return;o=o.return}for(;null!==s;){if(null===(o=ti(s)))return;if(5===(l=o.tag)||6===l){r=a=o;continue e}s=s.parentNode}}r=r.return}!function(e,t,n){if(Me)return e(t,n);Me=!0;try{return je(e,t,n)}finally{Me=!1,Fe()}}((function(){var r=a,i=_e(n),o=[];e:{var s=At.get(e);if(void 0!==s){var l=pn,u=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":l=Tn;break;case"focusin":u="focus",l=vn;break;case"focusout":u="blur",l=vn;break;case"beforeblur":case"afterblur":l=vn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":l=hn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":l=bn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":l=An;break;case Pt:case Ct:case Tt:l=yn;break;case It:l=Ln;break;case"scroll":l=mn;break;case"wheel":l=Nn;break;case"copy":case"cut":case"paste":l=kn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":l=In}var c=0!=(4&t),d=!c&&"scroll"===e,p=c?null!==s?s+"Capture":null:s;c=[];for(var f,m=r;null!==m;){var g=(f=m).stateNode;if(5===f.tag&&null!==g&&(f=g,null!==p&&(null!=(g=Be(m,p))&&c.push(jr(m,g,f)))),d)break;m=m.return}0<c.length&&(s=new l(s,u,null,n,i),o.push({event:s,listeners:c}))}}if(0==(7&t)){if(l="mouseout"===e||"pointerout"===e,(!(s="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(u=n.relatedTarget||n.fromElement)||!ti(u)&&!u[Jr])&&(l||s)&&(s=i.window===i?i:(s=i.ownerDocument)?s.defaultView||s.parentWindow:window,l?(l=r,null!==(u=(u=n.relatedTarget||n.toElement)?ti(u):null)&&(u!==(d=We(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(l=null,u=r),l!==u)){if(c=hn,g="onMouseLeave",p="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(c=In,g="onPointerLeave",p="onPointerEnter",m="pointer"),d=null==l?s:ri(l),f=null==u?s:ri(u),(s=new c(g,m+"leave",l,n,i)).target=d,s.relatedTarget=f,g=null,ti(i)===r&&((c=new c(p,m+"enter",u,n,i)).target=f,c.relatedTarget=d,g=c),d=g,l&&u)e:{for(p=u,m=0,f=c=l;f;f=Mr(f))m++;for(f=0,g=p;g;g=Mr(g))f++;for(;0<m-f;)c=Mr(c),m--;for(;0<f-m;)p=Mr(p),f--;for(;m--;){if(c===p||null!==p&&c===p.alternate)break e;c=Mr(c),p=Mr(p)}c=null}else c=null;null!==l&&Fr(o,s,l,c,!1),null!==u&&null!==d&&Fr(o,d,u,c,!0)}if("select"===(l=(s=r?ri(r):window).nodeName&&s.nodeName.toLowerCase())||"input"===l&&"file"===s.type)var h=Xn;else if(Qn(s))if(Jn)h=lr;else{h=or;var b=ar}else(l=s.nodeName)&&"input"===l.toLowerCase()&&("checkbox"===s.type||"radio"===s.type)&&(h=sr);switch(h&&(h=h(e,r))?Vn(o,h,n,i):(b&&b(e,s,r),"focusout"===e&&(b=s._wrapperState)&&b.controlled&&"number"===s.type&&ie(s,"number",s.value)),b=r?ri(r):window,e){case"focusin":(Qn(b)||"true"===b.contentEditable)&&(vr=b,yr=r,wr=null);break;case"focusout":wr=yr=vr=null;break;case"mousedown":kr=!0;break;case"contextmenu":case"mouseup":case"dragend":kr=!1,Sr(o,n,i);break;case"selectionchange":if(br)break;case"keydown":case"keyup":Sr(o,n,i)}var v;if(Dn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Hn?qn(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(Bn&&"ko"!==n.locale&&(Hn||"onCompositionStart"!==y?"onCompositionEnd"===y&&Hn&&(v=nn()):(en="value"in(Jt=i)?Jt.value:Jt.textContent,Hn=!0)),0<(b=Dr(r,y)).length&&(y=new Sn(y,e,null,n,i),o.push({event:y,listeners:b}),v?y.data=v:null!==(v=$n(n))&&(y.data=v))),(v=Fn?function(e,t){switch(e){case"compositionend":return $n(t);case"keypress":return 32!==t.which?null:(Un=!0,zn);case"textInput":return(e=t.data)===zn&&Un?null:e;default:return null}}(e,n):function(e,t){if(Hn)return"compositionend"===e||!Dn&&qn(e,t)?(e=nn(),tn=en=Jt=null,Hn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Bn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Dr(r,"onBeforeInput")).length&&(i=new Sn("onBeforeInput","beforeinput",null,n,i),o.push({event:i,listeners:r}),i.data=v))}Cr(o,t)}))}function jr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Dr(e,t){for(var n=t+"Capture",r=[];null!==e;){var i=e,a=i.stateNode;5===i.tag&&null!==a&&(i=a,null!=(a=Be(e,n))&&r.unshift(jr(e,a,i)),null!=(a=Be(e,t))&&r.push(jr(e,a,i))),e=e.return}return r}function Mr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Fr(e,t,n,r,i){for(var a=t._reactName,o=[];null!==n&&n!==r;){var s=n,l=s.alternate,u=s.stateNode;if(null!==l&&l===r)break;5===s.tag&&null!==u&&(s=u,i?null!=(l=Be(n,a))&&o.unshift(jr(n,l,s)):i||null!=(l=Be(n,a))&&o.push(jr(n,l,s))),n=n.return}0!==o.length&&e.push({event:t,listeners:o})}function Br(){}var zr=null,Ur=null;function qr(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function $r(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Hr="function"==typeof setTimeout?setTimeout:void 0,Gr="function"==typeof clearTimeout?clearTimeout:void 0;function Qr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Vr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Zr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Wr=0;var Kr=Math.random().toString(36).slice(2),Yr="__reactFiber$"+Kr,Xr="__reactProps$"+Kr,Jr="__reactContainer$"+Kr,ei="__reactEvents$"+Kr;function ti(e){var t=e[Yr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jr]||n[Yr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Zr(e);null!==e;){if(n=e[Yr])return n;e=Zr(e)}return t}n=(e=n).parentNode}return null}function ni(e){return!(e=e[Yr]||e[Jr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ri(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(o(33))}function ii(e){return e[Xr]||null}function ai(e){var t=e[ei];return void 0===t&&(t=e[ei]=new Set),t}var oi=[],si=-1;function li(e){return{current:e}}function ui(e){0>si||(e.current=oi[si],oi[si]=null,si--)}function ci(e,t){si++,oi[si]=e.current,e.current=t}var di={},pi=li(di),fi=li(!1),mi=di;function gi(e,t){var n=e.type.contextTypes;if(!n)return di;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i,a={};for(i in n)a[i]=t[i];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function hi(e){return null!=(e=e.childContextTypes)}function bi(){ui(fi),ui(pi)}function vi(e,t,n){if(pi.current!==di)throw Error(o(168));ci(pi,t),ci(fi,n)}function yi(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in e))throw Error(o(108,V(t)||"Unknown",a));return i({},n,r)}function wi(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||di,mi=pi.current,ci(pi,e),ci(fi,fi.current),!0}function ki(e,t,n){var r=e.stateNode;if(!r)throw Error(o(169));n?(e=yi(e,t,mi),r.__reactInternalMemoizedMergedChildContext=e,ui(fi),ui(pi),ci(pi,e)):ui(fi),ci(fi,n)}var Si=null,Ei=null,xi=a.unstable_runWithPriority,_i=a.unstable_scheduleCallback,Oi=a.unstable_cancelCallback,Pi=a.unstable_shouldYield,Ci=a.unstable_requestPaint,Ti=a.unstable_now,Ii=a.unstable_getCurrentPriorityLevel,Ai=a.unstable_ImmediatePriority,Li=a.unstable_UserBlockingPriority,Ri=a.unstable_NormalPriority,Ni=a.unstable_LowPriority,ji=a.unstable_IdlePriority,Di={},Mi=void 0!==Ci?Ci:function(){},Fi=null,Bi=null,zi=!1,Ui=Ti(),qi=1e4>Ui?Ti:function(){return Ti()-Ui};function $i(){switch(Ii()){case Ai:return 99;case Li:return 98;case Ri:return 97;case Ni:return 96;case ji:return 95;default:throw Error(o(332))}}function Hi(e){switch(e){case 99:return Ai;case 98:return Li;case 97:return Ri;case 96:return Ni;case 95:return ji;default:throw Error(o(332))}}function Gi(e,t){return e=Hi(e),xi(e,t)}function Qi(e,t,n){return e=Hi(e),_i(e,t,n)}function Vi(){if(null!==Bi){var e=Bi;Bi=null,Oi(e)}Zi()}function Zi(){if(!zi&&null!==Fi){zi=!0;var e=0;try{var t=Fi;Gi(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Fi=null}catch(n){throw null!==Fi&&(Fi=Fi.slice(e+1)),_i(Ai,Vi),n}finally{zi=!1}}}var Wi=k.ReactCurrentBatchConfig;function Ki(e,t){if(e&&e.defaultProps){for(var n in t=i({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Yi=li(null),Xi=null,Ji=null,ea=null;function ta(){ea=Ji=Xi=null}function na(e){var t=Yi.current;ui(Yi),e.type._context._currentValue=t}function ra(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ia(e,t){Xi=e,ea=Ji=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Do=!0),e.firstContext=null)}function aa(e,t){if(ea!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(ea=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ji){if(null===Xi)throw Error(o(308));Ji=t,Xi.dependencies={lanes:0,firstContext:t,responders:null}}else Ji=Ji.next=t;return e._currentValue}var oa=!1;function sa(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function la(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function ua(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function ca(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function da(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var i=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var o={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===a?i=a=o:a=a.next=o,n=n.next}while(null!==n);null===a?i=a=t:a=a.next=t}else i=a=t;return n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function pa(e,t,n,r){var a=e.updateQueue;oa=!1;var o=a.firstBaseUpdate,s=a.lastBaseUpdate,l=a.shared.pending;if(null!==l){a.shared.pending=null;var u=l,c=u.next;u.next=null,null===s?o=c:s.next=c,s=u;var d=e.alternate;if(null!==d){var p=(d=d.updateQueue).lastBaseUpdate;p!==s&&(null===p?d.firstBaseUpdate=c:p.next=c,d.lastBaseUpdate=u)}}if(null!==o){for(p=a.baseState,s=0,d=c=u=null;;){l=o.lane;var f=o.eventTime;if((r&l)===l){null!==d&&(d=d.next={eventTime:f,lane:0,tag:o.tag,payload:o.payload,callback:o.callback,next:null});e:{var m=e,g=o;switch(l=t,f=n,g.tag){case 1:if("function"==typeof(m=g.payload)){p=m.call(f,p,l);break e}p=m;break e;case 3:m.flags=-4097&m.flags|64;case 0:if(null==(l="function"==typeof(m=g.payload)?m.call(f,p,l):m))break e;p=i({},p,l);break e;case 2:oa=!0}}null!==o.callback&&(e.flags|=32,null===(l=a.effects)?a.effects=[o]:l.push(o))}else f={eventTime:f,lane:l,tag:o.tag,payload:o.payload,callback:o.callback,next:null},null===d?(c=d=f,u=p):d=d.next=f,s|=l;if(null===(o=o.next)){if(null===(l=a.shared.pending))break;o=l.next,l.next=null,a.lastBaseUpdate=l,a.shared.pending=null}}null===d&&(u=p),a.baseState=u,a.firstBaseUpdate=c,a.lastBaseUpdate=d,Us|=s,e.lanes=s,e.memoizedState=p}}function fa(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],i=r.callback;if(null!==i){if(r.callback=null,r=n,"function"!=typeof i)throw Error(o(191,i));i.call(r)}}}var ma=(new r.Component).refs;function ga(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:i({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var ha={isMounted:function(e){return!!(e=e._reactInternals)&&We(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=pl(),i=fl(e),a=ua(r,i);a.payload=t,null!=n&&(a.callback=n),ca(e,a),ml(e,i,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=pl(),i=fl(e),a=ua(r,i);a.tag=1,a.payload=t,null!=n&&(a.callback=n),ca(e,a),ml(e,i,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=pl(),r=fl(e),i=ua(n,r);i.tag=2,null!=t&&(i.callback=t),ca(e,i),ml(e,r,n)}};function ba(e,t,n,r,i,a,o){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,o):!t.prototype||!t.prototype.isPureReactComponent||(!dr(n,r)||!dr(i,a))}function va(e,t,n){var r=!1,i=di,a=t.contextType;return"object"==typeof a&&null!==a?a=aa(a):(i=hi(t)?mi:pi.current,a=(r=null!=(r=t.contextTypes))?gi(e,i):di),t=new t(n,a),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=ha,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=i,e.__reactInternalMemoizedMaskedChildContext=a),t}function ya(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&ha.enqueueReplaceState(t,t.state,null)}function wa(e,t,n,r){var i=e.stateNode;i.props=n,i.state=e.memoizedState,i.refs=ma,sa(e);var a=t.contextType;"object"==typeof a&&null!==a?i.context=aa(a):(a=hi(t)?mi:pi.current,i.context=gi(e,a)),pa(e,n,i,r),i.state=e.memoizedState,"function"==typeof(a=t.getDerivedStateFromProps)&&(ga(e,t,a,n),i.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof i.getSnapshotBeforeUpdate||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||(t=i.state,"function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount(),t!==i.state&&ha.enqueueReplaceState(i,i.state,null),pa(e,n,i,r),i.state=e.memoizedState),"function"==typeof i.componentDidMount&&(e.flags|=4)}var ka=Array.isArray;function Sa(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(o(309));var r=n.stateNode}if(!r)throw Error(o(147,e));var i=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===i?t.ref:(t=function(e){var t=r.refs;t===ma&&(t=r.refs={}),null===e?delete t[i]:t[i]=e},t._stringRef=i,t)}if("string"!=typeof e)throw Error(o(284));if(!n._owner)throw Error(o(290,e))}return e}function Ea(e,t){if("textarea"!==e.type)throw Error(o(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function xa(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function i(e,t){return(e=Ql(e,t)).index=0,e.sibling=null,e}function a(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function s(t){return e&&null===t.alternate&&(t.flags=2),t}function l(e,t,n,r){return null===t||6!==t.tag?((t=Kl(n,e.mode,r)).return=e,t):((t=i(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=i(t,n.props)).ref=Sa(e,t,n),r.return=e,r):((r=Vl(n.type,n.key,n.props,null,e.mode,r)).ref=Sa(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Yl(n,e.mode,r)).return=e,t):((t=i(t,n.children||[])).return=e,t)}function d(e,t,n,r,a){return null===t||7!==t.tag?((t=Zl(n,e.mode,r,a)).return=e,t):((t=i(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Kl(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case S:return(n=Vl(t.type,t.key,t.props,null,e.mode,n)).ref=Sa(e,null,t),n.return=e,n;case E:return(t=Yl(t,e.mode,n)).return=e,t}if(ka(t)||q(t))return(t=Zl(t,e.mode,n,null)).return=e,t;Ea(e,t)}return null}function f(e,t,n,r){var i=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==i?null:l(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case S:return n.key===i?n.type===x?d(e,t,n.props.children,r,i):u(e,t,n,r):null;case E:return n.key===i?c(e,t,n,r):null}if(ka(n)||q(n))return null!==i?null:d(e,t,n,r,null);Ea(e,n)}return null}function m(e,t,n,r,i){if("string"==typeof r||"number"==typeof r)return l(t,e=e.get(n)||null,""+r,i);if("object"==typeof r&&null!==r){switch(r.$$typeof){case S:return e=e.get(null===r.key?n:r.key)||null,r.type===x?d(t,e,r.props.children,i,r.key):u(t,e,r,i);case E:return c(t,e=e.get(null===r.key?n:r.key)||null,r,i)}if(ka(r)||q(r))return d(t,e=e.get(n)||null,r,i,null);Ea(t,r)}return null}function g(i,o,s,l){for(var u=null,c=null,d=o,g=o=0,h=null;null!==d&&g<s.length;g++){d.index>g?(h=d,d=null):h=d.sibling;var b=f(i,d,s[g],l);if(null===b){null===d&&(d=h);break}e&&d&&null===b.alternate&&t(i,d),o=a(b,o,g),null===c?u=b:c.sibling=b,c=b,d=h}if(g===s.length)return n(i,d),u;if(null===d){for(;g<s.length;g++)null!==(d=p(i,s[g],l))&&(o=a(d,o,g),null===c?u=d:c.sibling=d,c=d);return u}for(d=r(i,d);g<s.length;g++)null!==(h=m(d,i,g,s[g],l))&&(e&&null!==h.alternate&&d.delete(null===h.key?g:h.key),o=a(h,o,g),null===c?u=h:c.sibling=h,c=h);return e&&d.forEach((function(e){return t(i,e)})),u}function h(i,s,l,u){var c=q(l);if("function"!=typeof c)throw Error(o(150));if(null==(l=c.call(l)))throw Error(o(151));for(var d=c=null,g=s,h=s=0,b=null,v=l.next();null!==g&&!v.done;h++,v=l.next()){g.index>h?(b=g,g=null):b=g.sibling;var y=f(i,g,v.value,u);if(null===y){null===g&&(g=b);break}e&&g&&null===y.alternate&&t(i,g),s=a(y,s,h),null===d?c=y:d.sibling=y,d=y,g=b}if(v.done)return n(i,g),c;if(null===g){for(;!v.done;h++,v=l.next())null!==(v=p(i,v.value,u))&&(s=a(v,s,h),null===d?c=v:d.sibling=v,d=v);return c}for(g=r(i,g);!v.done;h++,v=l.next())null!==(v=m(g,i,h,v.value,u))&&(e&&null!==v.alternate&&g.delete(null===v.key?h:v.key),s=a(v,s,h),null===d?c=v:d.sibling=v,d=v);return e&&g.forEach((function(e){return t(i,e)})),c}return function(e,r,a,l){var u="object"==typeof a&&null!==a&&a.type===x&&null===a.key;u&&(a=a.props.children);var c="object"==typeof a&&null!==a;if(c)switch(a.$$typeof){case S:e:{for(c=a.key,u=r;null!==u;){if(u.key===c){if(7===u.tag){if(a.type===x){n(e,u.sibling),(r=i(u,a.props.children)).return=e,e=r;break e}}else if(u.elementType===a.type){n(e,u.sibling),(r=i(u,a.props)).ref=Sa(e,u,a),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}a.type===x?((r=Zl(a.props.children,e.mode,l,a.key)).return=e,e=r):((l=Vl(a.type,a.key,a.props,null,e.mode,l)).ref=Sa(e,r,a),l.return=e,e=l)}return s(e);case E:e:{for(u=a.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===a.containerInfo&&r.stateNode.implementation===a.implementation){n(e,r.sibling),(r=i(r,a.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Yl(a,e.mode,l)).return=e,e=r}return s(e)}if("string"==typeof a||"number"==typeof a)return a=""+a,null!==r&&6===r.tag?(n(e,r.sibling),(r=i(r,a)).return=e,e=r):(n(e,r),(r=Kl(a,e.mode,l)).return=e,e=r),s(e);if(ka(a))return g(e,r,a,l);if(q(a))return h(e,r,a,l);if(c&&Ea(e,a),void 0===a&&!u)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(o(152,V(e.type)||"Component"))}return n(e,r)}}var _a=xa(!0),Oa=xa(!1),Pa={},Ca=li(Pa),Ta=li(Pa),Ia=li(Pa);function Aa(e){if(e===Pa)throw Error(o(174));return e}function La(e,t){switch(ci(Ia,t),ci(Ta,e),ci(Ca,Pa),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:fe(null,"");break;default:t=fe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ui(Ca),ci(Ca,t)}function Ra(){ui(Ca),ui(Ta),ui(Ia)}function Na(e){Aa(Ia.current);var t=Aa(Ca.current),n=fe(t,e.type);t!==n&&(ci(Ta,e),ci(Ca,n))}function ja(e){Ta.current===e&&(ui(Ca),ui(Ta))}var Da=li(0);function Ma(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Fa=null,Ba=null,za=!1;function Ua(e,t){var n=Hl(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function qa(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function $a(e){if(za){var t=Ba;if(t){var n=t;if(!qa(e,t)){if(!(t=Vr(n.nextSibling))||!qa(e,t))return e.flags=-1025&e.flags|2,za=!1,void(Fa=e);Ua(Fa,n)}Fa=e,Ba=Vr(t.firstChild)}else e.flags=-1025&e.flags|2,za=!1,Fa=e}}function Ha(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Fa=e}function Ga(e){if(e!==Fa)return!1;if(!za)return Ha(e),za=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!$r(t,e.memoizedProps))for(t=Ba;t;)Ua(e,t),t=Vr(t.nextSibling);if(Ha(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(o(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){Ba=Vr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}Ba=null}}else Ba=Fa?Vr(e.stateNode.nextSibling):null;return!0}function Qa(){Ba=Fa=null,za=!1}var Va=[];function Za(){for(var e=0;e<Va.length;e++)Va[e]._workInProgressVersionPrimary=null;Va.length=0}var Wa=k.ReactCurrentDispatcher,Ka=k.ReactCurrentBatchConfig,Ya=0,Xa=null,Ja=null,eo=null,to=!1,no=!1;function ro(){throw Error(o(321))}function io(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ur(e[n],t[n]))return!1;return!0}function ao(e,t,n,r,i,a){if(Ya=a,Xa=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Wa.current=null===e||null===e.memoizedState?Lo:Ro,e=n(r,i),no){a=0;do{if(no=!1,!(25>a))throw Error(o(301));a+=1,eo=Ja=null,t.updateQueue=null,Wa.current=No,e=n(r,i)}while(no)}if(Wa.current=Ao,t=null!==Ja&&null!==Ja.next,Ya=0,eo=Ja=Xa=null,to=!1,t)throw Error(o(300));return e}function oo(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===eo?Xa.memoizedState=eo=e:eo=eo.next=e,eo}function so(){if(null===Ja){var e=Xa.alternate;e=null!==e?e.memoizedState:null}else e=Ja.next;var t=null===eo?Xa.memoizedState:eo.next;if(null!==t)eo=t,Ja=e;else{if(null===e)throw Error(o(310));e={memoizedState:(Ja=e).memoizedState,baseState:Ja.baseState,baseQueue:Ja.baseQueue,queue:Ja.queue,next:null},null===eo?Xa.memoizedState=eo=e:eo=eo.next=e}return eo}function lo(e,t){return"function"==typeof t?t(e):t}function uo(e){var t=so(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=Ja,i=r.baseQueue,a=n.pending;if(null!==a){if(null!==i){var s=i.next;i.next=a.next,a.next=s}r.baseQueue=i=a,n.pending=null}if(null!==i){i=i.next,r=r.baseState;var l=s=a=null,u=i;do{var c=u.lane;if((Ya&c)===c)null!==l&&(l=l.next={lane:0,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),r=u.eagerReducer===e?u.eagerState:e(r,u.action);else{var d={lane:c,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null};null===l?(s=l=d,a=r):l=l.next=d,Xa.lanes|=c,Us|=c}u=u.next}while(null!==u&&u!==i);null===l?a=r:l.next=s,ur(r,t.memoizedState)||(Do=!0),t.memoizedState=r,t.baseState=a,t.baseQueue=l,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function co(e){var t=so(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=n.dispatch,i=n.pending,a=t.memoizedState;if(null!==i){n.pending=null;var s=i=i.next;do{a=e(a,s.action),s=s.next}while(s!==i);ur(a,t.memoizedState)||(Do=!0),t.memoizedState=a,null===t.baseQueue&&(t.baseState=a),n.lastRenderedState=a}return[a,r]}function po(e,t,n){var r=t._getVersion;r=r(t._source);var i=t._workInProgressVersionPrimary;if(null!==i?e=i===r:(e=e.mutableReadLanes,(e=(Ya&e)===e)&&(t._workInProgressVersionPrimary=r,Va.push(t))),e)return n(t._source);throw Va.push(t),Error(o(350))}function fo(e,t,n,r){var i=Rs;if(null===i)throw Error(o(349));var a=t._getVersion,s=a(t._source),l=Wa.current,u=l.useState((function(){return po(i,t,n)})),c=u[1],d=u[0];u=eo;var p=e.memoizedState,f=p.refs,m=f.getSnapshot,g=p.source;p=p.subscribe;var h=Xa;return e.memoizedState={refs:f,source:t,subscribe:r},l.useEffect((function(){f.getSnapshot=n,f.setSnapshot=c;var e=a(t._source);if(!ur(s,e)){e=n(t._source),ur(d,e)||(c(e),e=fl(h),i.mutableReadLanes|=e&i.pendingLanes),e=i.mutableReadLanes,i.entangledLanes|=e;for(var r=i.entanglements,o=e;0<o;){var l=31-$t(o),u=1<<l;r[l]|=e,o&=~u}}}),[n,t,r]),l.useEffect((function(){return r(t._source,(function(){var e=f.getSnapshot,n=f.setSnapshot;try{n(e(t._source));var r=fl(h);i.mutableReadLanes|=r&i.pendingLanes}catch(a){n((function(){throw a}))}}))}),[t,r]),ur(m,n)&&ur(g,t)&&ur(p,r)||((e={pending:null,dispatch:null,lastRenderedReducer:lo,lastRenderedState:d}).dispatch=c=Io.bind(null,Xa,e),u.queue=e,u.baseQueue=null,d=po(i,t,n),u.memoizedState=u.baseState=d),d}function mo(e,t,n){return fo(so(),e,t,n)}function go(e){var t=oo();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:lo,lastRenderedState:e}).dispatch=Io.bind(null,Xa,e),[t.memoizedState,e]}function ho(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Xa.updateQueue)?(t={lastEffect:null},Xa.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function bo(e){return e={current:e},oo().memoizedState=e}function vo(){return so().memoizedState}function yo(e,t,n,r){var i=oo();Xa.flags|=e,i.memoizedState=ho(1|t,n,void 0,void 0===r?null:r)}function wo(e,t,n,r){var i=so();r=void 0===r?null:r;var a=void 0;if(null!==Ja){var o=Ja.memoizedState;if(a=o.destroy,null!==r&&io(r,o.deps))return void ho(t,n,a,r)}Xa.flags|=e,i.memoizedState=ho(1|t,n,a,r)}function ko(e,t){return yo(516,4,e,t)}function So(e,t){return wo(516,4,e,t)}function Eo(e,t){return wo(4,2,e,t)}function xo(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function _o(e,t,n){return n=null!=n?n.concat([e]):null,wo(4,2,xo.bind(null,t,e),n)}function Oo(){}function Po(e,t){var n=so();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&io(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Co(e,t){var n=so();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&io(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function To(e,t){var n=$i();Gi(98>n?98:n,(function(){e(!0)})),Gi(97<n?97:n,(function(){var n=Ka.transition;Ka.transition=1;try{e(!1),t()}finally{Ka.transition=n}}))}function Io(e,t,n){var r=pl(),i=fl(e),a={lane:i,action:n,eagerReducer:null,eagerState:null,next:null},o=t.pending;if(null===o?a.next=a:(a.next=o.next,o.next=a),t.pending=a,o=e.alternate,e===Xa||null!==o&&o===Xa)no=to=!0;else{if(0===e.lanes&&(null===o||0===o.lanes)&&null!==(o=t.lastRenderedReducer))try{var s=t.lastRenderedState,l=o(s,n);if(a.eagerReducer=o,a.eagerState=l,ur(l,s))return}catch(u){}ml(e,i,r)}}var Ao={readContext:aa,useCallback:ro,useContext:ro,useEffect:ro,useImperativeHandle:ro,useLayoutEffect:ro,useMemo:ro,useReducer:ro,useRef:ro,useState:ro,useDebugValue:ro,useDeferredValue:ro,useTransition:ro,useMutableSource:ro,useOpaqueIdentifier:ro,unstable_isNewReconciler:!1},Lo={readContext:aa,useCallback:function(e,t){return oo().memoizedState=[e,void 0===t?null:t],e},useContext:aa,useEffect:ko,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,yo(4,2,xo.bind(null,t,e),n)},useLayoutEffect:function(e,t){return yo(4,2,e,t)},useMemo:function(e,t){var n=oo();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=oo();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Io.bind(null,Xa,e),[r.memoizedState,e]},useRef:bo,useState:go,useDebugValue:Oo,useDeferredValue:function(e){var t=go(e),n=t[0],r=t[1];return ko((function(){var t=Ka.transition;Ka.transition=1;try{r(e)}finally{Ka.transition=t}}),[e]),n},useTransition:function(){var e=go(!1),t=e[0];return bo(e=To.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=oo();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},fo(r,e,t,n)},useOpaqueIdentifier:function(){if(za){var e=!1,t=function(e){return{$$typeof:j,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Wr++).toString(36))),Error(o(355))})),n=go(t)[1];return 0==(2&Xa.mode)&&(Xa.flags|=516,ho(5,(function(){n("r:"+(Wr++).toString(36))}),void 0,null)),t}return go(t="r:"+(Wr++).toString(36)),t},unstable_isNewReconciler:!1},Ro={readContext:aa,useCallback:Po,useContext:aa,useEffect:So,useImperativeHandle:_o,useLayoutEffect:Eo,useMemo:Co,useReducer:uo,useRef:vo,useState:function(){return uo(lo)},useDebugValue:Oo,useDeferredValue:function(e){var t=uo(lo),n=t[0],r=t[1];return So((function(){var t=Ka.transition;Ka.transition=1;try{r(e)}finally{Ka.transition=t}}),[e]),n},useTransition:function(){var e=uo(lo)[0];return[vo().current,e]},useMutableSource:mo,useOpaqueIdentifier:function(){return uo(lo)[0]},unstable_isNewReconciler:!1},No={readContext:aa,useCallback:Po,useContext:aa,useEffect:So,useImperativeHandle:_o,useLayoutEffect:Eo,useMemo:Co,useReducer:co,useRef:vo,useState:function(){return co(lo)},useDebugValue:Oo,useDeferredValue:function(e){var t=co(lo),n=t[0],r=t[1];return So((function(){var t=Ka.transition;Ka.transition=1;try{r(e)}finally{Ka.transition=t}}),[e]),n},useTransition:function(){var e=co(lo)[0];return[vo().current,e]},useMutableSource:mo,useOpaqueIdentifier:function(){return co(lo)[0]},unstable_isNewReconciler:!1},jo=k.ReactCurrentOwner,Do=!1;function Mo(e,t,n,r){t.child=null===e?Oa(t,null,n,r):_a(t,e.child,n,r)}function Fo(e,t,n,r,i){n=n.render;var a=t.ref;return ia(t,i),r=ao(e,t,n,r,a,i),null===e||Do?(t.flags|=1,Mo(e,t,r,i),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~i,as(e,t,i))}function Bo(e,t,n,r,i,a){if(null===e){var o=n.type;return"function"!=typeof o||Gl(o)||void 0!==o.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Vl(n.type,null,r,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,zo(e,t,o,r,i,a))}return o=e.child,0==(i&a)&&(i=o.memoizedProps,(n=null!==(n=n.compare)?n:dr)(i,r)&&e.ref===t.ref)?as(e,t,a):(t.flags|=1,(e=Ql(o,r)).ref=t.ref,e.return=t,t.child=e)}function zo(e,t,n,r,i,a){if(null!==e&&dr(e.memoizedProps,r)&&e.ref===t.ref){if(Do=!1,0==(a&i))return t.lanes=e.lanes,as(e,t,a);0!=(16384&e.flags)&&(Do=!0)}return $o(e,t,n,r,a)}function Uo(e,t,n){var r=t.pendingProps,i=r.children,a=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},Sl(t,n);else{if(0==(1073741824&n))return e=null!==a?a.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},Sl(t,e),null;t.memoizedState={baseLanes:0},Sl(t,null!==a?a.baseLanes:n)}else null!==a?(r=a.baseLanes|n,t.memoizedState=null):r=n,Sl(t,r);return Mo(e,t,i,n),t.child}function qo(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function $o(e,t,n,r,i){var a=hi(n)?mi:pi.current;return a=gi(t,a),ia(t,i),n=ao(e,t,n,r,a,i),null===e||Do?(t.flags|=1,Mo(e,t,n,i),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~i,as(e,t,i))}function Ho(e,t,n,r,i){if(hi(n)){var a=!0;wi(t)}else a=!1;if(ia(t,i),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),va(t,n,r),wa(t,n,r,i),r=!0;else if(null===e){var o=t.stateNode,s=t.memoizedProps;o.props=s;var l=o.context,u=n.contextType;"object"==typeof u&&null!==u?u=aa(u):u=gi(t,u=hi(n)?mi:pi.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof o.getSnapshotBeforeUpdate;d||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(s!==r||l!==u)&&ya(t,o,r,u),oa=!1;var p=t.memoizedState;o.state=p,pa(t,r,o,i),l=t.memoizedState,s!==r||p!==l||fi.current||oa?("function"==typeof c&&(ga(t,n,c,r),l=t.memoizedState),(s=oa||ba(t,n,s,r,p,l,u))?(d||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||("function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount()),"function"==typeof o.componentDidMount&&(t.flags|=4)):("function"==typeof o.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=l),o.props=r,o.state=l,o.context=u,r=s):("function"==typeof o.componentDidMount&&(t.flags|=4),r=!1)}else{o=t.stateNode,la(e,t),s=t.memoizedProps,u=t.type===t.elementType?s:Ki(t.type,s),o.props=u,d=t.pendingProps,p=o.context,"object"==typeof(l=n.contextType)&&null!==l?l=aa(l):l=gi(t,l=hi(n)?mi:pi.current);var f=n.getDerivedStateFromProps;(c="function"==typeof f||"function"==typeof o.getSnapshotBeforeUpdate)||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(s!==d||p!==l)&&ya(t,o,r,l),oa=!1,p=t.memoizedState,o.state=p,pa(t,r,o,i);var m=t.memoizedState;s!==d||p!==m||fi.current||oa?("function"==typeof f&&(ga(t,n,f,r),m=t.memoizedState),(u=oa||ba(t,n,u,r,p,m,l))?(c||"function"!=typeof o.UNSAFE_componentWillUpdate&&"function"!=typeof o.componentWillUpdate||("function"==typeof o.componentWillUpdate&&o.componentWillUpdate(r,m,l),"function"==typeof o.UNSAFE_componentWillUpdate&&o.UNSAFE_componentWillUpdate(r,m,l)),"function"==typeof o.componentDidUpdate&&(t.flags|=4),"function"==typeof o.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof o.componentDidUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=m),o.props=r,o.state=m,o.context=l,r=u):("function"!=typeof o.componentDidUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=256),r=!1)}return Go(e,t,n,r,a,i)}function Go(e,t,n,r,i,a){qo(e,t);var o=0!=(64&t.flags);if(!r&&!o)return i&&ki(t,n,!1),as(e,t,a);r=t.stateNode,jo.current=t;var s=o&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&o?(t.child=_a(t,e.child,null,a),t.child=_a(t,null,s,a)):Mo(e,t,s,a),t.memoizedState=r.state,i&&ki(t,n,!0),t.child}function Qo(e){var t=e.stateNode;t.pendingContext?vi(0,t.pendingContext,t.pendingContext!==t.context):t.context&&vi(0,t.context,!1),La(e,t.containerInfo)}var Vo,Zo,Wo,Ko,Yo={dehydrated:null,retryLane:0};function Xo(e,t,n){var r,i=t.pendingProps,a=Da.current,o=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&a)),r?(o=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===i.fallback||!0===i.unstable_avoidThisFallback||(a|=1),ci(Da,1&a),null===e?(void 0!==i.fallback&&$a(t),e=i.children,a=i.fallback,o?(e=Jo(t,e,a,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Yo,e):"number"==typeof i.unstable_expectedLoadTime?(e=Jo(t,e,a,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Yo,t.lanes=33554432,e):((n=Wl({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,o?(i=ts(e,t,i.children,i.fallback,n),o=t.child,a=e.child.memoizedState,o.memoizedState=null===a?{baseLanes:n}:{baseLanes:a.baseLanes|n},o.childLanes=e.childLanes&~n,t.memoizedState=Yo,i):(n=es(e,t,i.children,n),t.memoizedState=null,n))}function Jo(e,t,n,r){var i=e.mode,a=e.child;return t={mode:"hidden",children:t},0==(2&i)&&null!==a?(a.childLanes=0,a.pendingProps=t):a=Wl(t,i,0,null),n=Zl(n,i,r,null),a.return=e,n.return=e,a.sibling=n,e.child=a,n}function es(e,t,n,r){var i=e.child;return e=i.sibling,n=Ql(i,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function ts(e,t,n,r,i){var a=t.mode,o=e.child;e=o.sibling;var s={mode:"hidden",children:n};return 0==(2&a)&&t.child!==o?((n=t.child).childLanes=0,n.pendingProps=s,null!==(o=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=o,o.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Ql(o,s),null!==e?r=Ql(e,r):(r=Zl(r,a,i,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function ns(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ra(e.return,t)}function rs(e,t,n,r,i,a){var o=e.memoizedState;null===o?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:i,lastEffect:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=i,o.lastEffect=a)}function is(e,t,n){var r=t.pendingProps,i=r.revealOrder,a=r.tail;if(Mo(e,t,r.children,n),0!=(2&(r=Da.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&ns(e,n);else if(19===e.tag)ns(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ci(Da,r),0==(2&t.mode))t.memoizedState=null;else switch(i){case"forwards":for(n=t.child,i=null;null!==n;)null!==(e=n.alternate)&&null===Ma(e)&&(i=n),n=n.sibling;null===(n=i)?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),rs(t,!1,i,n,a,t.lastEffect);break;case"backwards":for(n=null,i=t.child,t.child=null;null!==i;){if(null!==(e=i.alternate)&&null===Ma(e)){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}rs(t,!0,n,null,a,t.lastEffect);break;case"together":rs(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function as(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Us|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(o(153));if(null!==t.child){for(n=Ql(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Ql(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function os(e,t){if(!za)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ss(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return hi(t.type)&&bi(),null;case 3:return Ra(),ui(fi),ui(pi),Za(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Ga(t)?t.flags|=4:r.hydrate||(t.flags|=256)),Zo(t),null;case 5:ja(t);var a=Aa(Ia.current);if(n=t.type,null!==e&&null!=t.stateNode)Wo(e,t,n,r,a),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(o(166));return null}if(e=Aa(Ca.current),Ga(t)){r=t.stateNode,n=t.type;var s=t.memoizedProps;switch(r[Yr]=t,r[Xr]=s,n){case"dialog":Tr("cancel",r),Tr("close",r);break;case"iframe":case"object":case"embed":Tr("load",r);break;case"video":case"audio":for(e=0;e<_r.length;e++)Tr(_r[e],r);break;case"source":Tr("error",r);break;case"img":case"image":case"link":Tr("error",r),Tr("load",r);break;case"details":Tr("toggle",r);break;case"input":ee(r,s),Tr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!s.multiple},Tr("invalid",r);break;case"textarea":le(r,s),Tr("invalid",r)}for(var u in Ee(n,s),e=null,s)s.hasOwnProperty(u)&&(a=s[u],"children"===u?"string"==typeof a?r.textContent!==a&&(e=["children",a]):"number"==typeof a&&r.textContent!==""+a&&(e=["children",""+a]):l.hasOwnProperty(u)&&null!=a&&"onScroll"===u&&Tr("scroll",r));switch(n){case"input":K(r),re(r,s,!0);break;case"textarea":K(r),ce(r);break;case"select":case"option":break;default:"function"==typeof s.onClick&&(r.onclick=Br)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(u=9===a.nodeType?a:a.ownerDocument,e===de.html&&(e=pe(n)),e===de.html?"script"===n?((e=u.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),"select"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[Yr]=t,e[Xr]=r,Vo(e,t,!1,!1),t.stateNode=e,u=xe(n,r),n){case"dialog":Tr("cancel",e),Tr("close",e),a=r;break;case"iframe":case"object":case"embed":Tr("load",e),a=r;break;case"video":case"audio":for(a=0;a<_r.length;a++)Tr(_r[a],e);a=r;break;case"source":Tr("error",e),a=r;break;case"img":case"image":case"link":Tr("error",e),Tr("load",e),a=r;break;case"details":Tr("toggle",e),a=r;break;case"input":ee(e,r),a=J(e,r),Tr("invalid",e);break;case"option":a=ae(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},a=i({},r,{value:void 0}),Tr("invalid",e);break;case"textarea":le(e,r),a=se(e,r),Tr("invalid",e);break;default:a=r}Ee(n,a);var c=a;for(s in c)if(c.hasOwnProperty(s)){var d=c[s];"style"===s?ke(e,d):"dangerouslySetInnerHTML"===s?null!=(d=d?d.__html:void 0)&&he(e,d):"children"===s?"string"==typeof d?("textarea"!==n||""!==d)&&be(e,d):"number"==typeof d&&be(e,""+d):"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&"autoFocus"!==s&&(l.hasOwnProperty(s)?null!=d&&"onScroll"===s&&Tr("scroll",e):null!=d&&w(e,s,d,u))}switch(n){case"input":K(e),re(e,r,!1);break;case"textarea":K(e),ce(e);break;case"option":null!=r.value&&e.setAttribute("value",""+Z(r.value));break;case"select":e.multiple=!!r.multiple,null!=(s=r.value)?oe(e,!!r.multiple,s,!1):null!=r.defaultValue&&oe(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof a.onClick&&(e.onclick=Br)}qr(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Ko(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(o(166));n=Aa(Ia.current),Aa(Ca.current),Ga(t)?(r=t.stateNode,n=t.memoizedProps,r[Yr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Yr]=t,t.stateNode=r)}return null;case 13:return ui(Da),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Ga(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Da.current)?0===Fs&&(Fs=3):(0!==Fs&&3!==Fs||(Fs=4),null===Rs||0==(134217727&Us)&&0==(134217727&qs)||vl(Rs,js))),(r||n)&&(t.flags|=4),null);case 4:return Ra(),Zo(t),null===e&&Ar(t.stateNode.containerInfo),null;case 10:return na(t),null;case 19:if(ui(Da),null===(r=t.memoizedState))return null;if(s=0!=(64&t.flags),null===(u=r.rendering))if(s)os(r,!1);else{if(0!==Fs||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(u=Ma(e))){for(t.flags|=64,os(r,!1),null!==(s=u.updateQueue)&&(t.updateQueue=s,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(s=n).flags&=2,s.nextEffect=null,s.firstEffect=null,s.lastEffect=null,null===(u=s.alternate)?(s.childLanes=0,s.lanes=e,s.child=null,s.memoizedProps=null,s.memoizedState=null,s.updateQueue=null,s.dependencies=null,s.stateNode=null):(s.childLanes=u.childLanes,s.lanes=u.lanes,s.child=u.child,s.memoizedProps=u.memoizedProps,s.memoizedState=u.memoizedState,s.updateQueue=u.updateQueue,s.type=u.type,e=u.dependencies,s.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ci(Da,1&Da.current|2),t.child}e=e.sibling}null!==r.tail&&qi()>Qs&&(t.flags|=64,s=!0,os(r,!1),t.lanes=33554432)}else{if(!s)if(null!==(e=Ma(u))){if(t.flags|=64,s=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),os(r,!0),null===r.tail&&"hidden"===r.tailMode&&!u.alternate&&!za)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*qi()-r.renderingStartTime>Qs&&1073741824!==n&&(t.flags|=64,s=!0,os(r,!1),t.lanes=33554432);r.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=r.last)?n.sibling=u:t.child=u,r.last=u)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=qi(),n.sibling=null,t=Da.current,ci(Da,s?1&t|2:1&t),n):null;case 23:case 24:return El(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(o(156,t.tag))}function ls(e){switch(e.tag){case 1:hi(e.type)&&bi();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Ra(),ui(fi),ui(pi),Za(),0!=(64&(t=e.flags)))throw Error(o(285));return e.flags=-4097&t|64,e;case 5:return ja(e),null;case 13:return ui(Da),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ui(Da),null;case 4:return Ra(),null;case 10:return na(e),null;case 23:case 24:return El(),null;default:return null}}function us(e,t){try{var n="",r=t;do{n+=Q(r),r=r.return}while(r);var i=n}catch(a){i="\nError generating stack: "+a.message+"\n"+a.stack}return{value:e,source:t,stack:i}}function cs(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Vo=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Zo=function(){},Wo=function(e,t,n,r){var a=e.memoizedProps;if(a!==r){e=t.stateNode,Aa(Ca.current);var o,s=null;switch(n){case"input":a=J(e,a),r=J(e,r),s=[];break;case"option":a=ae(e,a),r=ae(e,r),s=[];break;case"select":a=i({},a,{value:void 0}),r=i({},r,{value:void 0}),s=[];break;case"textarea":a=se(e,a),r=se(e,r),s=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(e.onclick=Br)}for(d in Ee(n,r),n=null,a)if(!r.hasOwnProperty(d)&&a.hasOwnProperty(d)&&null!=a[d])if("style"===d){var u=a[d];for(o in u)u.hasOwnProperty(o)&&(n||(n={}),n[o]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(l.hasOwnProperty(d)?s||(s=[]):(s=s||[]).push(d,null));for(d in r){var c=r[d];if(u=null!=a?a[d]:void 0,r.hasOwnProperty(d)&&c!==u&&(null!=c||null!=u))if("style"===d)if(u){for(o in u)!u.hasOwnProperty(o)||c&&c.hasOwnProperty(o)||(n||(n={}),n[o]="");for(o in c)c.hasOwnProperty(o)&&u[o]!==c[o]&&(n||(n={}),n[o]=c[o])}else n||(s||(s=[]),s.push(d,n)),n=c;else"dangerouslySetInnerHTML"===d?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(s=s||[]).push(d,c)):"children"===d?"string"!=typeof c&&"number"!=typeof c||(s=s||[]).push(d,""+c):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(l.hasOwnProperty(d)?(null!=c&&"onScroll"===d&&Tr("scroll",e),s||u===c||(s=[])):"object"==typeof c&&null!==c&&c.$$typeof===j?c.toString():(s=s||[]).push(d,c))}n&&(s=s||[]).push("style",n);var d=s;(t.updateQueue=d)&&(t.flags|=4)}},Ko=function(e,t,n,r){n!==r&&(t.flags|=4)};var ds="function"==typeof WeakMap?WeakMap:Map;function ps(e,t,n){(n=ua(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Ks||(Ks=!0,Ys=r),cs(0,t)},n}function fs(e,t,n){(n=ua(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var i=t.value;n.payload=function(){return cs(0,t),r(i)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Xs?Xs=new Set([this]):Xs.add(this),cs(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ms="function"==typeof WeakSet?WeakSet:Set;function gs(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zl(e,n)}else t.current=null}function hs(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ki(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Qr(t.stateNode.containerInfo))}throw Error(o(163))}function bs(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var i=e;r=i.next,0!=(4&(i=i.tag))&&0!=(1&i)&&(Ml(n,e),Dl(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Ki(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&fa(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}fa(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&qr(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&kt(n)))))}throw Error(o(163))}function vs(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var i=n.memoizedProps.style;i=null!=i&&i.hasOwnProperty("display")?i.display:null,r.style.display=we("display",i)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function ys(e,t){if(Ei&&"function"==typeof Ei.onCommitFiberUnmount)try{Ei.onCommitFiberUnmount(Si,t)}catch(a){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,i=r.destroy;if(r=r.tag,void 0!==i)if(0!=(4&r))Ml(t,n);else{r=t;try{i()}catch(a){zl(r,a)}}n=n.next}while(n!==e)}break;case 1:if(gs(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(a){zl(t,a)}break;case 5:gs(t);break;case 4:_s(e,t)}}function ws(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function ks(e){return 5===e.tag||3===e.tag||4===e.tag}function Ss(e){e:{for(var t=e.return;null!==t;){if(ks(t))break e;t=t.return}throw Error(o(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(o(161))}16&n.flags&&(be(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||ks(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?Es(e,n,t):xs(e,n,t)}function Es(e,t,n){var r=e.tag,i=5===r||6===r;if(i)e=i?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Br));else if(4!==r&&null!==(e=e.child))for(Es(e,t,n),e=e.sibling;null!==e;)Es(e,t,n),e=e.sibling}function xs(e,t,n){var r=e.tag,i=5===r||6===r;if(i)e=i?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(xs(e,t,n),e=e.sibling;null!==e;)xs(e,t,n),e=e.sibling}function _s(e,t){for(var n,r,i=t,a=!1;;){if(!a){a=i.return;e:for(;;){if(null===a)throw Error(o(160));switch(n=a.stateNode,a.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}a=a.return}a=!0}if(5===i.tag||6===i.tag){e:for(var s=e,l=i,u=l;;)if(ys(s,u),null!==u.child&&4!==u.tag)u.child.return=u,u=u.child;else{if(u===l)break e;for(;null===u.sibling;){if(null===u.return||u.return===l)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}r?(s=n,l=i.stateNode,8===s.nodeType?s.parentNode.removeChild(l):s.removeChild(l)):n.removeChild(i.stateNode)}else if(4===i.tag){if(null!==i.child){n=i.stateNode.containerInfo,r=!0,i.child.return=i,i=i.child;continue}}else if(ys(e,i),null!==i.child){i.child.return=i,i=i.child;continue}if(i===t)break;for(;null===i.sibling;){if(null===i.return||i.return===t)return;4===(i=i.return).tag&&(a=!1)}i.sibling.return=i.return,i=i.sibling}}function Os(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var i=null!==e?e.memoizedProps:r;e=t.type;var a=t.updateQueue;if(t.updateQueue=null,null!==a){for(n[Xr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),xe(e,i),t=xe(e,r),i=0;i<a.length;i+=2){var s=a[i],l=a[i+1];"style"===s?ke(n,l):"dangerouslySetInnerHTML"===s?he(n,l):"children"===s?be(n,l):w(n,s,l,t)}switch(e){case"input":ne(n,r);break;case"textarea":ue(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(a=r.value)?oe(n,!!r.multiple,a,!1):e!==!!r.multiple&&(null!=r.defaultValue?oe(n,!!r.multiple,r.defaultValue,!0):oe(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(o(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,kt(n.containerInfo)));case 13:return null!==t.memoizedState&&(Gs=qi(),vs(t.child,!0)),void Ps(t);case 19:return void Ps(t);case 23:case 24:return void vs(t,null!==t.memoizedState)}throw Error(o(163))}function Ps(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ms),t.forEach((function(t){var r=ql.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Cs(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Ts=Math.ceil,Is=k.ReactCurrentDispatcher,As=k.ReactCurrentOwner,Ls=0,Rs=null,Ns=null,js=0,Ds=0,Ms=li(0),Fs=0,Bs=null,zs=0,Us=0,qs=0,$s=0,Hs=null,Gs=0,Qs=1/0;function Vs(){Qs=qi()+500}var Zs,Ws=null,Ks=!1,Ys=null,Xs=null,Js=!1,el=null,tl=90,nl=[],rl=[],il=null,al=0,ol=null,sl=-1,ll=0,ul=0,cl=null,dl=!1;function pl(){return 0!=(48&Ls)?qi():-1!==sl?sl:sl=qi()}function fl(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===$i()?1:2;if(0===ll&&(ll=zs),0!==Wi.transition){0!==ul&&(ul=null!==Hs?Hs.pendingLanes:0),e=ll;var t=4186112&~ul;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=$i(),0!=(4&Ls)&&98===e?e=Bt(12,ll):e=Bt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ll),e}function ml(e,t,n){if(50<al)throw al=0,ol=null,Error(o(185));if(null===(e=gl(e,t)))return null;qt(e,t,n),e===Rs&&(qs|=t,4===Fs&&vl(e,js));var r=$i();1===t?0!=(8&Ls)&&0==(48&Ls)?yl(e):(hl(e,n),0===Ls&&(Vs(),Vi())):(0==(4&Ls)||98!==r&&99!==r||(null===il?il=new Set([e]):il.add(e)),hl(e,n)),Hs=e}function gl(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function hl(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,i=e.pingedLanes,a=e.expirationTimes,s=e.pendingLanes;0<s;){var l=31-$t(s),u=1<<l,c=a[l];if(-1===c){if(0==(u&r)||0!=(u&i)){c=t,Dt(u);var d=jt;a[l]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=u);s&=~u}if(r=Mt(e,e===Rs?js:0),t=jt,0===r)null!==n&&(n!==Di&&Oi(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Di&&Oi(n)}15===t?(n=yl.bind(null,e),null===Fi?(Fi=[n],Bi=_i(Ai,Zi)):Fi.push(n),n=Di):14===t?n=Qi(99,yl.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(o(358,e))}}(t),n=Qi(n,bl.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function bl(e){if(sl=-1,ul=ll=0,0!=(48&Ls))throw Error(o(327));var t=e.callbackNode;if(jl()&&e.callbackNode!==t)return null;var n=Mt(e,e===Rs?js:0);if(0===n)return null;var r=n,i=Ls;Ls|=16;var a=Ol();for(Rs===e&&js===r||(Vs(),xl(e,r));;)try{Tl();break}catch(l){_l(e,l)}if(ta(),Is.current=a,Ls=i,null!==Ns?r=0:(Rs=null,js=0,r=Fs),0!=(zs&qs))xl(e,0);else if(0!==r){if(2===r&&(Ls|=64,e.hydrate&&(e.hydrate=!1,Qr(e.containerInfo)),0!==(n=Ft(e))&&(r=Pl(e,n))),1===r)throw t=Bs,xl(e,0),vl(e,n),hl(e,qi()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(o(345));case 2:case 5:Ll(e);break;case 3:if(vl(e,n),(62914560&n)===n&&10<(r=Gs+500-qi())){if(0!==Mt(e,0))break;if(((i=e.suspendedLanes)&n)!==n){pl(),e.pingedLanes|=e.suspendedLanes&i;break}e.timeoutHandle=Hr(Ll.bind(null,e),r);break}Ll(e);break;case 4:if(vl(e,n),(4186112&n)===n)break;for(r=e.eventTimes,i=-1;0<n;){var s=31-$t(n);a=1<<s,(s=r[s])>i&&(i=s),n&=~a}if(n=i,10<(n=(120>(n=qi()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Ts(n/1960))-n)){e.timeoutHandle=Hr(Ll.bind(null,e),n);break}Ll(e);break;default:throw Error(o(329))}}return hl(e,qi()),e.callbackNode===t?bl.bind(null,e):null}function vl(e,t){for(t&=~$s,t&=~qs,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-$t(t),r=1<<n;e[n]=-1,t&=~r}}function yl(e){if(0!=(48&Ls))throw Error(o(327));if(jl(),e===Rs&&0!=(e.expiredLanes&js)){var t=js,n=Pl(e,t);0!=(zs&qs)&&(n=Pl(e,t=Mt(e,t)))}else n=Pl(e,t=Mt(e,0));if(0!==e.tag&&2===n&&(Ls|=64,e.hydrate&&(e.hydrate=!1,Qr(e.containerInfo)),0!==(t=Ft(e))&&(n=Pl(e,t))),1===n)throw n=Bs,xl(e,0),vl(e,t),hl(e,qi()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Ll(e),hl(e,qi()),null}function wl(e,t){var n=Ls;Ls|=1;try{return e(t)}finally{0===(Ls=n)&&(Vs(),Vi())}}function kl(e,t){var n=Ls;Ls&=-2,Ls|=8;try{return e(t)}finally{0===(Ls=n)&&(Vs(),Vi())}}function Sl(e,t){ci(Ms,Ds),Ds|=t,zs|=t}function El(){Ds=Ms.current,ui(Ms)}function xl(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Gr(n)),null!==Ns)for(n=Ns.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&bi();break;case 3:Ra(),ui(fi),ui(pi),Za();break;case 5:ja(r);break;case 4:Ra();break;case 13:case 19:ui(Da);break;case 10:na(r);break;case 23:case 24:El()}n=n.return}Rs=e,Ns=Ql(e.current,null),js=Ds=zs=t,Fs=0,Bs=null,$s=qs=Us=0}function _l(e,t){for(;;){var n=Ns;try{if(ta(),Wa.current=Ao,to){for(var r=Xa.memoizedState;null!==r;){var i=r.queue;null!==i&&(i.pending=null),r=r.next}to=!1}if(Ya=0,eo=Ja=Xa=null,no=!1,As.current=null,null===n||null===n.return){Fs=1,Bs=t,Ns=null;break}e:{var a=e,o=n.return,s=n,l=t;if(t=js,s.flags|=2048,s.firstEffect=s.lastEffect=null,null!==l&&"object"==typeof l&&"function"==typeof l.then){var u=l;if(0==(2&s.mode)){var c=s.alternate;c?(s.updateQueue=c.updateQueue,s.memoizedState=c.memoizedState,s.lanes=c.lanes):(s.updateQueue=null,s.memoizedState=null)}var d=0!=(1&Da.current),p=o;do{var f;if(f=13===p.tag){var m=p.memoizedState;if(null!==m)f=null!==m.dehydrated;else{var g=p.memoizedProps;f=void 0!==g.fallback&&(!0!==g.unstable_avoidThisFallback||!d)}}if(f){var h=p.updateQueue;if(null===h){var b=new Set;b.add(u),p.updateQueue=b}else h.add(u);if(0==(2&p.mode)){if(p.flags|=64,s.flags|=16384,s.flags&=-2981,1===s.tag)if(null===s.alternate)s.tag=17;else{var v=ua(-1,1);v.tag=2,ca(s,v)}s.lanes|=1;break e}l=void 0,s=t;var y=a.pingCache;if(null===y?(y=a.pingCache=new ds,l=new Set,y.set(u,l)):void 0===(l=y.get(u))&&(l=new Set,y.set(u,l)),!l.has(s)){l.add(s);var w=Ul.bind(null,a,u,s);u.then(w,w)}p.flags|=4096,p.lanes=t;break e}p=p.return}while(null!==p);l=Error((V(s.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Fs&&(Fs=2),l=us(l,s),p=o;do{switch(p.tag){case 3:a=l,p.flags|=4096,t&=-t,p.lanes|=t,da(p,ps(0,a,t));break e;case 1:a=l;var k=p.type,S=p.stateNode;if(0==(64&p.flags)&&("function"==typeof k.getDerivedStateFromError||null!==S&&"function"==typeof S.componentDidCatch&&(null===Xs||!Xs.has(S)))){p.flags|=4096,t&=-t,p.lanes|=t,da(p,fs(p,a,t));break e}}p=p.return}while(null!==p)}Al(n)}catch(E){t=E,Ns===n&&null!==n&&(Ns=n=n.return);continue}break}}function Ol(){var e=Is.current;return Is.current=Ao,null===e?Ao:e}function Pl(e,t){var n=Ls;Ls|=16;var r=Ol();for(Rs===e&&js===t||xl(e,t);;)try{Cl();break}catch(i){_l(e,i)}if(ta(),Ls=n,Is.current=r,null!==Ns)throw Error(o(261));return Rs=null,js=0,Fs}function Cl(){for(;null!==Ns;)Il(Ns)}function Tl(){for(;null!==Ns&&!Pi();)Il(Ns)}function Il(e){var t=Zs(e.alternate,e,Ds);e.memoizedProps=e.pendingProps,null===t?Al(e):Ns=t,As.current=null}function Al(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ss(n,t,Ds)))return void(Ns=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Ds)||0==(4&n.mode)){for(var r=0,i=n.child;null!==i;)r|=i.lanes|i.childLanes,i=i.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=ls(t)))return n.flags&=2047,void(Ns=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Ns=t);Ns=t=e}while(null!==t);0===Fs&&(Fs=5)}function Ll(e){var t=$i();return Gi(99,Rl.bind(null,e,t)),null}function Rl(e,t){do{jl()}while(null!==el);if(0!=(48&Ls))throw Error(o(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(o(177));e.callbackNode=null;var r=n.lanes|n.childLanes,i=r,a=e.pendingLanes&~i;e.pendingLanes=i,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=i,e.mutableReadLanes&=i,e.entangledLanes&=i,i=e.entanglements;for(var s=e.eventTimes,l=e.expirationTimes;0<a;){var u=31-$t(a),c=1<<u;i[u]=0,s[u]=-1,l[u]=-1,a&=~c}if(null!==il&&0==(24&r)&&il.has(e)&&il.delete(e),e===Rs&&(Ns=Rs=null,js=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(i=Ls,Ls|=32,As.current=null,zr=Zt,hr(s=gr())){if("selectionStart"in s)l={start:s.selectionStart,end:s.selectionEnd};else e:if(l=(l=s.ownerDocument)&&l.defaultView||window,(c=l.getSelection&&l.getSelection())&&0!==c.rangeCount){l=c.anchorNode,a=c.anchorOffset,u=c.focusNode,c=c.focusOffset;try{l.nodeType,u.nodeType}catch(O){l=null;break e}var d=0,p=-1,f=-1,m=0,g=0,h=s,b=null;t:for(;;){for(var v;h!==l||0!==a&&3!==h.nodeType||(p=d+a),h!==u||0!==c&&3!==h.nodeType||(f=d+c),3===h.nodeType&&(d+=h.nodeValue.length),null!==(v=h.firstChild);)b=h,h=v;for(;;){if(h===s)break t;if(b===l&&++m===a&&(p=d),b===u&&++g===c&&(f=d),null!==(v=h.nextSibling))break;b=(h=b).parentNode}h=v}l=-1===p||-1===f?null:{start:p,end:f}}else l=null;l=l||{start:0,end:0}}else l=null;Ur={focusedElem:s,selectionRange:l},Zt=!1,cl=null,dl=!1,Ws=r;do{try{Nl()}catch(O){if(null===Ws)throw Error(o(330));zl(Ws,O),Ws=Ws.nextEffect}}while(null!==Ws);cl=null,Ws=r;do{try{for(s=e;null!==Ws;){var y=Ws.flags;if(16&y&&be(Ws.stateNode,""),128&y){var w=Ws.alternate;if(null!==w){var k=w.ref;null!==k&&("function"==typeof k?k(null):k.current=null)}}switch(1038&y){case 2:Ss(Ws),Ws.flags&=-3;break;case 6:Ss(Ws),Ws.flags&=-3,Os(Ws.alternate,Ws);break;case 1024:Ws.flags&=-1025;break;case 1028:Ws.flags&=-1025,Os(Ws.alternate,Ws);break;case 4:Os(Ws.alternate,Ws);break;case 8:_s(s,l=Ws);var S=l.alternate;ws(l),null!==S&&ws(S)}Ws=Ws.nextEffect}}catch(O){if(null===Ws)throw Error(o(330));zl(Ws,O),Ws=Ws.nextEffect}}while(null!==Ws);if(k=Ur,w=gr(),y=k.focusedElem,s=k.selectionRange,w!==y&&y&&y.ownerDocument&&mr(y.ownerDocument.documentElement,y)){null!==s&&hr(y)&&(w=s.start,void 0===(k=s.end)&&(k=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(k,y.value.length)):(k=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(k=k.getSelection(),l=y.textContent.length,S=Math.min(s.start,l),s=void 0===s.end?S:Math.min(s.end,l),!k.extend&&S>s&&(l=s,s=S,S=l),l=fr(y,S),a=fr(y,s),l&&a&&(1!==k.rangeCount||k.anchorNode!==l.node||k.anchorOffset!==l.offset||k.focusNode!==a.node||k.focusOffset!==a.offset)&&((w=w.createRange()).setStart(l.node,l.offset),k.removeAllRanges(),S>s?(k.addRange(w),k.extend(a.node,a.offset)):(w.setEnd(a.node,a.offset),k.addRange(w))))),w=[];for(k=y;k=k.parentNode;)1===k.nodeType&&w.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(k=w[y]).element.scrollLeft=k.left,k.element.scrollTop=k.top}Zt=!!zr,Ur=zr=null,e.current=n,Ws=r;do{try{for(y=e;null!==Ws;){var E=Ws.flags;if(36&E&&bs(y,Ws.alternate,Ws),128&E){w=void 0;var x=Ws.ref;if(null!==x){var _=Ws.stateNode;Ws.tag,w=_,"function"==typeof x?x(w):x.current=w}}Ws=Ws.nextEffect}}catch(O){if(null===Ws)throw Error(o(330));zl(Ws,O),Ws=Ws.nextEffect}}while(null!==Ws);Ws=null,Mi(),Ls=i}else e.current=n;if(Js)Js=!1,el=e,tl=t;else for(Ws=r;null!==Ws;)t=Ws.nextEffect,Ws.nextEffect=null,8&Ws.flags&&((E=Ws).sibling=null,E.stateNode=null),Ws=t;if(0===(r=e.pendingLanes)&&(Xs=null),1===r?e===ol?al++:(al=0,ol=e):al=0,n=n.stateNode,Ei&&"function"==typeof Ei.onCommitFiberRoot)try{Ei.onCommitFiberRoot(Si,n,void 0,64==(64&n.current.flags))}catch(O){}if(hl(e,qi()),Ks)throw Ks=!1,e=Ys,Ys=null,e;return 0!=(8&Ls)||Vi(),null}function Nl(){for(;null!==Ws;){var e=Ws.alternate;dl||null===cl||(0!=(8&Ws.flags)?Je(Ws,cl)&&(dl=!0):13===Ws.tag&&Cs(e,Ws)&&Je(Ws,cl)&&(dl=!0));var t=Ws.flags;0!=(256&t)&&hs(e,Ws),0==(512&t)||Js||(Js=!0,Qi(97,(function(){return jl(),null}))),Ws=Ws.nextEffect}}function jl(){if(90!==tl){var e=97<tl?97:tl;return tl=90,Gi(e,Fl)}return!1}function Dl(e,t){nl.push(t,e),Js||(Js=!0,Qi(97,(function(){return jl(),null})))}function Ml(e,t){rl.push(t,e),Js||(Js=!0,Qi(97,(function(){return jl(),null})))}function Fl(){if(null===el)return!1;var e=el;if(el=null,0!=(48&Ls))throw Error(o(331));var t=Ls;Ls|=32;var n=rl;rl=[];for(var r=0;r<n.length;r+=2){var i=n[r],a=n[r+1],s=i.destroy;if(i.destroy=void 0,"function"==typeof s)try{s()}catch(u){if(null===a)throw Error(o(330));zl(a,u)}}for(n=nl,nl=[],r=0;r<n.length;r+=2){i=n[r],a=n[r+1];try{var l=i.create;i.destroy=l()}catch(u){if(null===a)throw Error(o(330));zl(a,u)}}for(l=e.current.firstEffect;null!==l;)e=l.nextEffect,l.nextEffect=null,8&l.flags&&(l.sibling=null,l.stateNode=null),l=e;return Ls=t,Vi(),!0}function Bl(e,t,n){ca(e,t=ps(0,t=us(n,t),1)),t=pl(),null!==(e=gl(e,1))&&(qt(e,1,t),hl(e,t))}function zl(e,t){if(3===e.tag)Bl(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Bl(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Xs||!Xs.has(r))){var i=fs(n,e=us(t,e),1);if(ca(n,i),i=pl(),null!==(n=gl(n,1)))qt(n,1,i),hl(n,i);else if("function"==typeof r.componentDidCatch&&(null===Xs||!Xs.has(r)))try{r.componentDidCatch(t,e)}catch(a){}break}}n=n.return}}function Ul(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=pl(),e.pingedLanes|=e.suspendedLanes&n,Rs===e&&(js&n)===n&&(4===Fs||3===Fs&&(62914560&js)===js&&500>qi()-Gs?xl(e,0):$s|=n),hl(e,t)}function ql(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===$i()?1:2:(0===ll&&(ll=zs),0===(t=zt(62914560&~ll))&&(t=4194304))),n=pl(),null!==(e=gl(e,t))&&(qt(e,t,n),hl(e,n))}function $l(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Hl(e,t,n,r){return new $l(e,t,n,r)}function Gl(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Ql(e,t){var n=e.alternate;return null===n?((n=Hl(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Vl(e,t,n,r,i,a){var s=2;if(r=e,"function"==typeof e)Gl(e)&&(s=1);else if("string"==typeof e)s=5;else e:switch(e){case x:return Zl(n.children,i,a,t);case D:s=8,i|=16;break;case _:s=8,i|=1;break;case O:return(e=Hl(12,n,t,8|i)).elementType=O,e.type=O,e.lanes=a,e;case I:return(e=Hl(13,n,t,i)).type=I,e.elementType=I,e.lanes=a,e;case A:return(e=Hl(19,n,t,i)).elementType=A,e.lanes=a,e;case M:return Wl(n,i,a,t);case F:return(e=Hl(24,n,t,i)).elementType=F,e.lanes=a,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case P:s=10;break e;case C:s=9;break e;case T:s=11;break e;case L:s=14;break e;case R:s=16,r=null;break e;case N:s=22;break e}throw Error(o(130,null==e?e:typeof e,""))}return(t=Hl(s,n,t,i)).elementType=e,t.type=r,t.lanes=a,t}function Zl(e,t,n,r){return(e=Hl(7,e,r,t)).lanes=n,e}function Wl(e,t,n,r){return(e=Hl(23,e,r,t)).elementType=M,e.lanes=n,e}function Kl(e,t,n){return(e=Hl(6,e,null,t)).lanes=n,e}function Yl(e,t,n){return(t=Hl(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Xl(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=Ut(0),this.expirationTimes=Ut(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ut(0),this.mutableSourceEagerHydrationData=null}function Jl(e,t,n,r){var i=t.current,a=pl(),s=fl(i);e:if(n){t:{if(We(n=n._reactInternals)!==n||1!==n.tag)throw Error(o(170));var l=n;do{switch(l.tag){case 3:l=l.stateNode.context;break t;case 1:if(hi(l.type)){l=l.stateNode.__reactInternalMemoizedMergedChildContext;break t}}l=l.return}while(null!==l);throw Error(o(171))}if(1===n.tag){var u=n.type;if(hi(u)){n=yi(n,u,l);break e}}n=l}else n=di;return null===t.context?t.context=n:t.pendingContext=n,(t=ua(a,s)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),ca(i,t),ml(i,s,a),s}function eu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function nu(e,t){tu(e,t),(e=e.alternate)&&tu(e,t)}function ru(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Xl(e,t,null!=n&&!0===n.hydrate),t=Hl(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,sa(t),e[Jr]=n.current,Ar(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var i=(t=r[e])._getVersion;i=i(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,i]:n.mutableSourceEagerHydrationData.push(t,i)}this._internalRoot=n}function iu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function au(e,t,n,r,i){var a=n._reactRootContainer;if(a){var o=a._internalRoot;if("function"==typeof i){var s=i;i=function(){var e=eu(o);s.call(e)}}Jl(t,o,e,i)}else{if(a=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new ru(e,0,t?{hydrate:!0}:void 0)}(n,r),o=a._internalRoot,"function"==typeof i){var l=i;i=function(){var e=eu(o);l.call(e)}}kl((function(){Jl(t,o,e,i)}))}return eu(o)}function ou(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!iu(t))throw Error(o(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:E,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Zs=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||fi.current)Do=!0;else{if(0==(n&r)){switch(Do=!1,t.tag){case 3:Qo(t),Qa();break;case 5:Na(t);break;case 1:hi(t.type)&&wi(t);break;case 4:La(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var i=t.type._context;ci(Yi,i._currentValue),i._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Xo(e,t,n):(ci(Da,1&Da.current),null!==(t=as(e,t,n))?t.sibling:null);ci(Da,1&Da.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return is(e,t,n);t.flags|=64}if(null!==(i=t.memoizedState)&&(i.rendering=null,i.tail=null,i.lastEffect=null),ci(Da,Da.current),r)break;return null;case 23:case 24:return t.lanes=0,Uo(e,t,n)}return as(e,t,n)}Do=0!=(16384&e.flags)}else Do=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,i=gi(t,pi.current),ia(t,n),i=ao(null,t,r,e,i,n),t.flags|=1,"object"==typeof i&&null!==i&&"function"==typeof i.render&&void 0===i.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,hi(r)){var a=!0;wi(t)}else a=!1;t.memoizedState=null!==i.state&&void 0!==i.state?i.state:null,sa(t);var s=r.getDerivedStateFromProps;"function"==typeof s&&ga(t,r,s,e),i.updater=ha,t.stateNode=i,i._reactInternals=t,wa(t,r,e,n),t=Go(null,t,r,!0,a,n)}else t.tag=0,Mo(null,t,i,n),t=t.child;return t;case 16:i=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,i=(a=i._init)(i._payload),t.type=i,a=t.tag=function(e){if("function"==typeof e)return Gl(e)?1:0;if(null!=e){if((e=e.$$typeof)===T)return 11;if(e===L)return 14}return 2}(i),e=Ki(i,e),a){case 0:t=$o(null,t,i,e,n);break e;case 1:t=Ho(null,t,i,e,n);break e;case 11:t=Fo(null,t,i,e,n);break e;case 14:t=Bo(null,t,i,Ki(i.type,e),r,n);break e}throw Error(o(306,i,""))}return t;case 0:return r=t.type,i=t.pendingProps,$o(e,t,r,i=t.elementType===r?i:Ki(r,i),n);case 1:return r=t.type,i=t.pendingProps,Ho(e,t,r,i=t.elementType===r?i:Ki(r,i),n);case 3:if(Qo(t),r=t.updateQueue,null===e||null===r)throw Error(o(282));if(r=t.pendingProps,i=null!==(i=t.memoizedState)?i.element:null,la(e,t),pa(t,r,null,n),(r=t.memoizedState.element)===i)Qa(),t=as(e,t,n);else{if((a=(i=t.stateNode).hydrate)&&(Ba=Vr(t.stateNode.containerInfo.firstChild),Fa=t,a=za=!0),a){if(null!=(e=i.mutableSourceEagerHydrationData))for(i=0;i<e.length;i+=2)(a=e[i])._workInProgressVersionPrimary=e[i+1],Va.push(a);for(n=Oa(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Mo(e,t,r,n),Qa();t=t.child}return t;case 5:return Na(t),null===e&&$a(t),r=t.type,i=t.pendingProps,a=null!==e?e.memoizedProps:null,s=i.children,$r(r,i)?s=null:null!==a&&$r(r,a)&&(t.flags|=16),qo(e,t),Mo(e,t,s,n),t.child;case 6:return null===e&&$a(t),null;case 13:return Xo(e,t,n);case 4:return La(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=_a(t,null,r,n):Mo(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,Fo(e,t,r,i=t.elementType===r?i:Ki(r,i),n);case 7:return Mo(e,t,t.pendingProps,n),t.child;case 8:case 12:return Mo(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,i=t.pendingProps,s=t.memoizedProps,a=i.value;var l=t.type._context;if(ci(Yi,l._currentValue),l._currentValue=a,null!==s)if(l=s.value,0===(a=ur(l,a)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(l,a):1073741823))){if(s.children===i.children&&!fi.current){t=as(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var u=l.dependencies;if(null!==u){s=l.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&a)){1===l.tag&&((c=ua(-1,n&-n)).tag=2,ca(l,c)),l.lanes|=n,null!==(c=l.alternate)&&(c.lanes|=n),ra(l.return,n),u.lanes|=n;break}c=c.next}}else s=10===l.tag&&l.type===t.type?null:l.child;if(null!==s)s.return=l;else for(s=l;null!==s;){if(s===t){s=null;break}if(null!==(l=s.sibling)){l.return=s.return,s=l;break}s=s.return}l=s}Mo(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=(a=t.pendingProps).children,ia(t,n),r=r(i=aa(i,a.unstable_observedBits)),t.flags|=1,Mo(e,t,r,n),t.child;case 14:return a=Ki(i=t.type,t.pendingProps),Bo(e,t,i,a=Ki(i.type,a),r,n);case 15:return zo(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:Ki(r,i),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,hi(r)?(e=!0,wi(t)):e=!1,ia(t,n),va(t,r,i),wa(t,r,i,n),Go(null,t,r,!0,e,n);case 19:return is(e,t,n);case 23:case 24:return Uo(e,t,n)}throw Error(o(156,t.tag))},ru.prototype.render=function(e){Jl(e,this._internalRoot,null,null)},ru.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Jl(null,e,null,(function(){t[Jr]=null}))},et=function(e){13===e.tag&&(ml(e,4,pl()),nu(e,4))},tt=function(e){13===e.tag&&(ml(e,67108864,pl()),nu(e,67108864))},nt=function(e){if(13===e.tag){var t=pl(),n=fl(e);ml(e,n,t),nu(e,n)}},rt=function(e,t){return t()},Oe=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var i=ii(r);if(!i)throw Error(o(90));Y(r),ne(r,i)}}}break;case"textarea":ue(e,n);break;case"select":null!=(t=n.value)&&oe(e,!!n.multiple,t,!1)}},Le=wl,Re=function(e,t,n,r,i){var a=Ls;Ls|=4;try{return Gi(98,e.bind(null,t,n,r,i))}finally{0===(Ls=a)&&(Vs(),Vi())}},Ne=function(){0==(49&Ls)&&(function(){if(null!==il){var e=il;il=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,hl(e,qi())}))}Vi()}(),jl())},je=function(e,t){var n=Ls;Ls|=2;try{return e(t)}finally{0===(Ls=n)&&(Vs(),Vi())}};var su={Events:[ni,ri,ii,Ie,Ae,jl,{current:!1}]},lu={findFiberByHostInstance:ti,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},uu={bundleType:lu.bundleType,version:lu.version,rendererPackageName:lu.rendererPackageName,rendererConfig:lu.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:k.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Xe(e))?null:e.stateNode},findFiberByHostInstance:lu.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cu=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cu.isDisabled&&cu.supportsFiber)try{Si=cu.inject(uu),Ei=cu}catch(ge){}}t.hydrate=function(e,t,n){if(!iu(t))throw Error(o(200));return au(null,e,t,!0,n)},t.render=function(e,t,n){if(!iu(t))throw Error(o(200));return au(null,e,t,!1,n)}},3935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(4448)},9590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,i="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,o){if(e===o)return!0;if(e&&o&&"object"==typeof e&&"object"==typeof o){if(e.constructor!==o.constructor)return!1;var s,l,u,c;if(Array.isArray(e)){if((s=e.length)!=o.length)return!1;for(l=s;0!=l--;)if(!a(e[l],o[l]))return!1;return!0}if(n&&e instanceof Map&&o instanceof Map){if(e.size!==o.size)return!1;for(c=e.entries();!(l=c.next()).done;)if(!o.has(l.value[0]))return!1;for(c=e.entries();!(l=c.next()).done;)if(!a(l.value[1],o.get(l.value[0])))return!1;return!0}if(r&&e instanceof Set&&o instanceof Set){if(e.size!==o.size)return!1;for(c=e.entries();!(l=c.next()).done;)if(!o.has(l.value[0]))return!1;return!0}if(i&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(o)){if((s=e.length)!=o.length)return!1;for(l=s;0!=l--;)if(e[l]!==o[l])return!1;return!0}if(e.constructor===RegExp)return e.source===o.source&&e.flags===o.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof o.valueOf)return e.valueOf()===o.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof o.toString)return e.toString()===o.toString();if((s=(u=Object.keys(e)).length)!==Object.keys(o).length)return!1;for(l=s;0!=l--;)if(!Object.prototype.hasOwnProperty.call(o,u[l]))return!1;if(t&&e instanceof Element)return!1;for(l=s;0!=l--;)if(("_owner"!==u[l]&&"__v"!==u[l]&&"__o"!==u[l]||!e.$$typeof)&&!a(e[u[l]],o[u[l]]))return!1;return!0}return e!=e&&o!=o}e.exports=function(e,t){try{return a(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>G,ql:()=>J});var r=n(7294),i=n(5697),a=n.n(i),o=n(9590),s=n.n(o),l=n(1143),u=n.n(l),c=n(6774),d=n.n(c);function p(){return p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function g(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)t.indexOf(n=a[r])>=0||(i[n]=e[n]);return i}var h={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},b={rel:["amphtml","canonical","alternate"]},v={type:["application/ld+json"]},y={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(h).map((function(e){return h[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},S=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),E=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},x=function(e){var t=E(e,h.TITLE),n=E(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=E(e,"defaultTitle");return t||r||void 0},_=function(e){return E(e,"onChangeClientState")||function(){}},O=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return p({},e,t)}),{})},P=function(e,t){return t.filter((function(e){return void 0!==e[h.BASE]})).map((function(e){return e[h.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),i=0;i<r.length;i+=1){var a=r[i].toLowerCase();if(-1!==e.indexOf(a)&&n[a])return t.concat(n)}return t}),[])},C=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var i={};n.filter((function(e){for(var n,a=Object.keys(e),o=0;o<a.length;o+=1){var s=a[o],l=s.toLowerCase();-1===t.indexOf(l)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===l&&"stylesheet"===e[l].toLowerCase()||(n=l),-1===t.indexOf(s)||"innerHTML"!==s&&"cssText"!==s&&"itemprop"!==s||(n=s)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),i[n]||(i[n]={}),!r[n][u]&&(i[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var a=Object.keys(i),o=0;o<a.length;o+=1){var s=a[o],l=p({},r[s],i[s]);r[s]=l}return e}),[]).reverse()},T=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},I=function(e){return Array.isArray(e)?e.join(""):e},A=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},L=function(e,t){var n;return p({},e,((n={})[t]=void 0,n))},R=[h.NOSCRIPT,h.SCRIPT,h.STYLE],N=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},j=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},D=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},M=function(e,t){return t.map((function(t,n){var i,a=((i={key:n})["data-rh"]=!0,i);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?a.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:a[n]=t[e]})),r.createElement(e,a)}))},F=function(e,t,n){switch(e){case h.TITLE:return{toComponent:function(){return n=t.titleAttributes,(i={key:e=t.title})["data-rh"]=!0,a=D(n,i),[r.createElement(h.TITLE,a,e)];var e,n,i,a},toString:function(){return function(e,t,n,r){var i=j(n),a=I(t);return i?"<"+e+' data-rh="true" '+i+">"+N(a,r)+"</"+e+">":"<"+e+' data-rh="true">'+N(a,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return D(t)},toString:function(){return j(t)}};default:return{toComponent:function(){return M(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var i=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var i=void 0===r[t]?t:t+'="'+N(r[t],n)+'"';return e?e+" "+i:i}),""),a=r.innerHTML||r.cssText||"",o=-1===R.indexOf(e);return t+"<"+e+' data-rh="true" '+i+(o?"/>":">"+a+"</"+e+">")}),"")}(e,t,n)}}}},B=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,i=e.htmlAttributes,a=e.noscriptTags,o=e.styleTags,s=e.title,l=void 0===s?"":s,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,i=A(e.metaTags,y),a=A(t,b),o=A(n,v);return{priorityMethods:{toComponent:function(){return[].concat(M(h.META,i.priority),M(h.LINK,a.priority),M(h.SCRIPT,o.priority))},toString:function(){return F(h.META,i.priority,r)+" "+F(h.LINK,a.priority,r)+" "+F(h.SCRIPT,o.priority,r)}},metaTags:i.default,linkTags:a.default,scriptTags:o.default}}(e);f=m.priorityMethods,c=m.linkTags,d=m.metaTags,p=m.scriptTags}return{priority:f,base:F(h.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",i,r),link:F(h.LINK,c,r),meta:F(h.META,d,r),noscript:F(h.NOSCRIPT,a,r),script:F(h.SCRIPT,p,r),style:F(h.STYLE,o,r),title:F(h.TITLE,{title:l,titleAttributes:u},r)}},z=[],U=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=B({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},q=r.createContext({}),$=a().shape({setHelmet:a().func,helmetInstances:a().shape({get:a().func,add:a().func,remove:a().func})}),H="undefined"!=typeof document,G=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new U(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement(q.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);G.canUseDOM=H,G.propTypes={context:a().shape({helmet:a().shape()}),children:a().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var Q=function(e,t){var n,r=document.head||document.querySelector(h.HEAD),i=r.querySelectorAll(e+"[data-rh]"),a=[].slice.call(i),o=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&("innerHTML"===i?r.innerHTML=t.innerHTML:"cssText"===i?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(i,void 0===t[i]?"":t[i]));r.setAttribute("data-rh","true"),a.some((function(e,t){return n=t,r.isEqualNode(e)}))?a.splice(n,1):o.push(r)})),a.forEach((function(e){return e.parentNode.removeChild(e)})),o.forEach((function(e){return r.appendChild(e)})),{oldTags:a,newTags:o}},V=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),i=r?r.split(","):[],a=[].concat(i),o=Object.keys(t),s=0;s<o.length;s+=1){var l=o[s],u=t[l]||"";n.getAttribute(l)!==u&&n.setAttribute(l,u),-1===i.indexOf(l)&&i.push(l);var c=a.indexOf(l);-1!==c&&a.splice(c,1)}for(var d=a.length-1;d>=0;d-=1)n.removeAttribute(a[d]);i.length===a.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==o.join(",")&&n.setAttribute("data-rh",o.join(","))}},Z=function(e,t){var n=e.baseTag,r=e.htmlAttributes,i=e.linkTags,a=e.metaTags,o=e.noscriptTags,s=e.onChangeClientState,l=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;V(h.BODY,e.bodyAttributes),V(h.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=I(e)),V(h.TITLE,t)}(c,d);var p={baseTag:Q(h.BASE,n),linkTags:Q(h.LINK,i),metaTags:Q(h.META,a),noscriptTags:Q(h.NOSCRIPT,o),scriptTags:Q(h.SCRIPT,l),styleTags:Q(h.STYLE,u)},f={},m={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(m[e]=p[e].oldTags)})),t&&t(),s(e,f,m)},W=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,i=null,a=(e=n.helmetInstances.get().map((function(e){var t=p({},e.props);return delete t.context,t})),{baseTag:P(["href"],e),bodyAttributes:O("bodyAttributes",e),defer:E(e,"defer"),encode:E(e,"encodeSpecialCharacters"),htmlAttributes:O("htmlAttributes",e),linkTags:C(h.LINK,["rel","href"],e),metaTags:C(h.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:C(h.NOSCRIPT,["innerHTML"],e),onChangeClientState:_(e),scriptTags:C(h.SCRIPT,["src","innerHTML"],e),styleTags:C(h.STYLE,["cssText"],e),title:x(e),titleAttributes:O("titleAttributes",e),prioritizeSeoTags:T(e,"prioritizeSeoTags")});G.canUseDOM?(t=a,W&&cancelAnimationFrame(W),t.defer?W=requestAnimationFrame((function(){Z(t,(function(){W=null}))})):(Z(t),W=null)):B&&(i=B(a)),r(i)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);K.propTypes={context:$.isRequired},K.displayName="HelmetDispatcher";var Y=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!s()(L(this.props,"helmetData"),L(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case h.SCRIPT:case h.NOSCRIPT:return{innerHTML:t};case h.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,i=e.newProps,a=e.newChildProps,o=e.nestedChildren;switch(r.type){case h.TITLE:return p({},i,((t={})[r.type]=o,t.titleAttributes=p({},a),t));case h.BODY:return p({},i,{bodyAttributes:p({},a)});case h.HTML:return p({},i,{htmlAttributes:p({},a)});default:return p({},i,((n={})[r.type]=p({},a),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach((function(t){var r;n=p({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,i={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,a=r.children,o=g(r,Y),s=Object.keys(o).reduce((function(e,t){return e[S[t]||t]=o[t],e}),{}),l=e.type;switch("symbol"==typeof l?l=l.toString():n.warnOnInvalidChildren(e,a),l){case h.FRAGMENT:t=n.mapChildrenToProps(a,t);break;case h.LINK:case h.META:case h.NOSCRIPT:case h.SCRIPT:case h.STYLE:i=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:i,newChildProps:s,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:s,nestedChildren:a})}}})),this.mapArrayTypeChildrenToProps(i,t)},n.render=function(){var e=this.props,t=e.children,n=g(e,X),i=p({},n),a=n.helmetData;return t&&(i=this.mapChildrenToProps(t,i)),!a||a instanceof U||(a=new U(a.context,a.instances)),a?r.createElement(K,p({},i,{context:a.value,helmetData:void 0})):r.createElement(q.Consumer,null,(function(e){return r.createElement(K,p({},i,{context:e}))}))},t}(r.Component);J.propTypes={base:a().object,bodyAttributes:a().object,children:a().oneOfType([a().arrayOf(a().node),a().node]),defaultTitle:a().string,defer:a().bool,encodeSpecialCharacters:a().bool,htmlAttributes:a().object,link:a().arrayOf(a().object),meta:a().arrayOf(a().object),noscript:a().arrayOf(a().object),onChangeClientState:a().func,script:a().arrayOf(a().object),style:a().arrayOf(a().object),title:a().string,titleAttributes:a().object,titleTemplate:a().string,prioritizeSeoTags:a().bool,helmetData:a().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},9921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,i=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,o=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,g=n?Symbol.for("react.memo"):60115,h=n?Symbol.for("react.lazy"):60116,b=n?Symbol.for("react.block"):60121,v=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case a:case s:case o:case f:return e;default:switch(e=e&&e.$$typeof){case u:case p:case h:case g:case l:return e;default:return t}}case i:return t}}}function S(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=l,t.Element=r,t.ForwardRef=p,t.Fragment=a,t.Lazy=h,t.Memo=g,t.Portal=i,t.Profiler=s,t.StrictMode=o,t.Suspense=f,t.isAsyncMode=function(e){return S(e)||k(e)===c},t.isConcurrentMode=S,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===l},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===p},t.isFragment=function(e){return k(e)===a},t.isLazy=function(e){return k(e)===h},t.isMemo=function(e){return k(e)===g},t.isPortal=function(e){return k(e)===i},t.isProfiler=function(e){return k(e)===s},t.isStrictMode=function(e){return k(e)===o},t.isSuspense=function(e){return k(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===d||e===s||e===o||e===f||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===h||e.$$typeof===g||e.$$typeof===l||e.$$typeof===u||e.$$typeof===p||e.$$typeof===v||e.$$typeof===y||e.$$typeof===w||e.$$typeof===b)},t.typeOf=k},9864:(e,t,n)=>{"use strict";e.exports=n(9921)},8356:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function i(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function a(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(){return o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}var s=n(7294),l=n(5697),u=[],c=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function p(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var i=d(e[r]);i.loading?t.loading=!0:(t.loaded[r]=i.loaded,t.error=i.error),n.push(i.promise),i.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function f(e,t){return s.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=o({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),g=null;function h(){return g||(g=e(m.loader)),g.promise}return u.push(h),"function"==typeof m.webpack&&c.push((function(){if((0,m.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return h()})),p=d=function(t){function n(n){var r;return a(i(i(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),g=e(m.loader),r._loadModule()})),h(),r.state={error:g.error,pastDelay:!1,timedOut:!1,loading:g.loading,loaded:g.loaded},r}r(n,t),n.preload=function(){return h()};var o=n.prototype;return o.UNSAFE_componentWillMount=function(){this._loadModule()},o.componentDidMount=function(){this._mounted=!0},o._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),g.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:g.error,loaded:g.loaded,loading:g.loading}),e._clearTimeouts()};g.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},o.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},o._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},o.render=function(){return this.state.loading||this.state.error?s.createElement(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(s.Component),a(d,"contextTypes",{loadable:l.shape({report:l.func.isRequired})}),p}function g(e){return m(d,e)}g.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(p,e)};var h=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return s.Children.only(this.props.children)},t}(s.Component);function b(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return b(e)}))}a(h,"propTypes",{report:l.func.isRequired}),a(h,"childContextTypes",{loadable:l.shape({report:l.func.isRequired}).isRequired}),g.Capture=h,g.preloadAll=function(){return new Promise((function(e,t){b(u).then(e,t)}))},g.preloadReady=function(){return new Promise((function(e,t){b(c).then(e,e)}))},e.exports=g},8790:(e,t,n)=>{"use strict";n.d(t,{H:()=>s,f:()=>o});var r=n(6550),i=n(7462),a=n(7294);function o(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var i=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return i&&(n.push({route:e,match:i}),e.routes&&o(e.routes,t,n)),i})),n}function s(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?a.createElement(r.rs,n,e.map((function(e,n){return a.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,i.Z)({},n,{},t,{route:e})):a.createElement(e.component,(0,i.Z)({},n,t,{route:e}))}})}))):null}},3727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>y,VK:()=>c,rU:()=>h});var r=n(6550),i=n(5068),a=n(7294),o=n(9318),s=n(7462),l=n(3366),u=n(8776),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,o.lX)(t.props),t}return(0,i.Z)(t,e),t.prototype.render=function(){return a.createElement(r.F0,{history:this.history,children:this.props.children})},t}(a.Component);a.Component;var d=function(e,t){return"function"==typeof e?e(t):e},p=function(e,t){return"string"==typeof e?(0,o.ob)(e,null,null,t):e},f=function(e){return e},m=a.forwardRef;void 0===m&&(m=f);var g=m((function(e,t){var n=e.innerRef,r=e.navigate,i=e.onClick,o=(0,l.Z)(e,["innerRef","navigate","onClick"]),u=o.target,c=(0,s.Z)({},o,{onClick:function(e){try{i&&i(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=f!==m&&t||n,a.createElement("a",c)}));var h=m((function(e,t){var n=e.component,i=void 0===n?g:n,c=e.replace,h=e.to,b=e.innerRef,v=(0,l.Z)(e,["component","replace","to","innerRef"]);return a.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=e.history,r=p(d(h,e.location),e.location),l=r?n.createHref(r):"",g=(0,s.Z)({},v,{href:l,navigate:function(){var t=d(h,e.location),r=(0,o.Ep)(e.location)===(0,o.Ep)(p(t));(c||r?n.replace:n.push)(t)}});return f!==m?g.ref=t||b:g.innerRef=b,a.createElement(i,g)}))})),b=function(e){return e},v=a.forwardRef;void 0===v&&(v=b);var y=v((function(e,t){var n=e["aria-current"],i=void 0===n?"page":n,o=e.activeClassName,c=void 0===o?"active":o,f=e.activeStyle,m=e.className,g=e.exact,y=e.isActive,w=e.location,k=e.sensitive,S=e.strict,E=e.style,x=e.to,_=e.innerRef,O=(0,l.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return a.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,o=p(d(x,n),n),l=o.pathname,P=l&&l.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),C=P?(0,r.LX)(n.pathname,{path:P,exact:g,sensitive:k,strict:S}):null,T=!!(y?y(C,n):C),I="function"==typeof m?m(T):m,A="function"==typeof E?E(T):E;T&&(I=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(I,c),A=(0,s.Z)({},A,f));var L=(0,s.Z)({"aria-current":T&&i||null,className:I,style:A,to:o},O);return b!==v?L.ref=t||_:L.innerRef=_,a.createElement(h,L)}))}))},6550:(e,t,n)=>{"use strict";n.d(t,{AW:()=>x,F0:()=>y,LX:()=>E,TH:()=>R,k6:()=>L,rs:()=>I,s6:()=>v});var r=n(5068),i=n(7294),a=n(5697),o=n.n(a),s=n(9318),l=n(8776),u=n(7462),c=n(9658),d=n.n(c),p=(n(9864),n(3366)),f=(n(8679),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var g=i.createContext||function(e,t){var n,a,s="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[e]||0)+1}()+"__",l=function(e){function n(){for(var t,n,r,i=arguments.length,a=new Array(i),o=0;o<i;o++)a[o]=arguments[o];return(t=e.call.apply(e,[this].concat(a))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.Z)(n,e);var i=n.prototype;return i.getChildContext=function(){var e;return(e={})[s]=this.emitter,e},i.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,i=e.value;((a=r)===(o=i)?0!==a||1/a==1/o:a!=a&&o!=o)?n=0:(n="function"==typeof t?t(r,i):f,0!==(n|=0)&&this.emitter.set(e.value,n))}var a,o},i.render=function(){return this.props.children},n}(i.Component);l.childContextTypes=((n={})[s]=o().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var i=n.prototype;return i.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?f:t},i.componentDidMount=function(){this.context[s]&&this.context[s].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?f:e},i.componentWillUnmount=function(){this.context[s]&&this.context[s].off(this.onUpdate)},i.getValue=function(){return this.context[s]?this.context[s].get():e},i.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(i.Component);return u.contextTypes=((a={})[s]=o().object,a),{Provider:l,Consumer:u}},h=function(e){var t=g();return t.displayName=e,t},b=h("Router-History"),v=h("Router"),y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return i.createElement(v.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},i.createElement(b.Provider,{children:this.props.children||null,value:this.props.history}))},t}(i.Component);i.Component;i.Component;var w={},k=1e4,S=0;function E(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,i=n.exact,a=void 0!==i&&i,o=n.strict,s=void 0!==o&&o,l=n.sensitive,u=void 0!==l&&l;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var i=[],a={regexp:d()(e,i,t),keys:i};return S<k&&(r[e]=a,S++),a}(n,{end:a,strict:s,sensitive:u}),i=r.regexp,o=r.keys,l=i.exec(e);if(!l)return null;var c=l[0],p=l.slice(1),f=e===c;return a&&!f?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:f,params:o.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var x=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return i.createElement(v.Consumer,null,(function(t){t||(0,l.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?E(n.pathname,e.props):t.match,a=(0,u.Z)({},t,{location:n,match:r}),o=e.props,s=o.children,c=o.component,d=o.render;return Array.isArray(s)&&function(e){return 0===i.Children.count(e)}(s)&&(s=null),i.createElement(v.Provider,{value:a},a.match?s?"function"==typeof s?s(a):s:c?i.createElement(c,a):d?d(a):null:"function"==typeof s?s(a):null)}))},t}(i.Component);function _(e){return"/"===e.charAt(0)?e:"/"+e}function O(e,t){if(!e)return t;var n=_(e);return 0!==t.pathname.indexOf(n)?t:(0,u.Z)({},t,{pathname:t.pathname.substr(n.length)})}function P(e){return"string"==typeof e?e:(0,s.Ep)(e)}function C(e){return function(){(0,l.Z)(!1)}}function T(){}i.Component;var I=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return i.createElement(v.Consumer,null,(function(t){t||(0,l.Z)(!1);var n,r,a=e.props.location||t.location;return i.Children.forEach(e.props.children,(function(e){if(null==r&&i.isValidElement(e)){n=e;var o=e.props.path||e.props.from;r=o?E(a.pathname,(0,u.Z)({},e.props,{path:o})):t.match}})),r?i.cloneElement(n,{location:a,computedMatch:r}):null}))},t}(i.Component);var A=i.useContext;function L(){return A(b)}function R(){return A(v).location}},9658:(e,t,n)=>{var r=n(5826);e.exports=f,e.exports.parse=a,e.exports.compile=function(e,t){return s(a(e,t),t)},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=p;var i=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,o=0,s="",c=t&&t.delimiter||"/";null!=(n=i.exec(e));){var d=n[0],p=n[1],f=n.index;if(s+=e.slice(o,f),o=f+d.length,p)s+=p[1];else{var m=e[o],g=n[2],h=n[3],b=n[4],v=n[5],y=n[6],w=n[7];s&&(r.push(s),s="");var k=null!=g&&null!=m&&m!==g,S="+"===y||"*"===y,E="?"===y||"*"===y,x=n[2]||c,_=b||v;r.push({name:h||a++,prefix:g||"",delimiter:x,optional:E,repeat:S,partial:k,asterisk:!!w,pattern:_?u(_):w?".*":"[^"+l(x)+"]+?"})}}return o<e.length&&(s+=e.substr(o)),s&&r.push(s),r}function o(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function s(e,t){for(var n=new Array(e.length),i=0;i<e.length;i++)"object"==typeof e[i]&&(n[i]=new RegExp("^(?:"+e[i].pattern+")$",d(t)));return function(t,i){for(var a="",s=t||{},l=(i||{}).pretty?o:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,p=s[c.name];if(null==p){if(c.optional){c.partial&&(a+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(p)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var f=0;f<p.length;f++){if(d=l(p[f]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");a+=(0===f?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):l(p),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');a+=c.prefix+d}}else a+=c}return a}}function l(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function p(e,t,n){r(t)||(n=t||n,t=[]);for(var i=(n=n||{}).strict,a=!1!==n.end,o="",s=0;s<e.length;s++){var u=e[s];if("string"==typeof u)o+=l(u);else{var p=l(u.prefix),f="(?:"+u.pattern+")";t.push(u),u.repeat&&(f+="(?:"+p+f+")*"),o+=f=u.optional?u.partial?p+"("+f+")?":"(?:"+p+"("+f+"))?":p+"("+f+")"}}var m=l(n.delimiter||"/"),g=o.slice(-m.length)===m;return i||(o=(g?o.slice(0,-m.length):o)+"(?:"+m+"(?=$))?"),o+=a?"$":i&&g?"":"(?="+m+"|$)",c(new RegExp("^"+o,d(n)),t)}function f(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],i=0;i<e.length;i++)r.push(f(e[i],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(a(e,n),t,n)}(e,t,n)}},2408:(e,t,n)=>{"use strict";var r=n(7418),i=60103,a=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var o=60109,s=60110,l=60112;t.Suspense=60113;var u=60115,c=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;i=d("react.element"),a=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),o=d("react.provider"),s=d("react.context"),l=d("react.forward_ref"),t.Suspense=d("react.suspense"),u=d("react.memo"),c=d("react.lazy")}var p="function"==typeof Symbol&&Symbol.iterator;function f(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g={};function h(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}h.prototype.isReactComponent={},h.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(f(85));this.updater.enqueueSetState(this,e,t,"setState")},h.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=h.prototype;var y=v.prototype=new b;y.constructor=v,r(y,h.prototype),y.isPureReactComponent=!0;var w={current:null},k=Object.prototype.hasOwnProperty,S={key:!0,ref:!0,__self:!0,__source:!0};function E(e,t,n){var r,a={},o=null,s=null;if(null!=t)for(r in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(o=""+t.key),t)k.call(t,r)&&!S.hasOwnProperty(r)&&(a[r]=t[r]);var l=arguments.length-2;if(1===l)a.children=n;else if(1<l){for(var u=Array(l),c=0;c<l;c++)u[c]=arguments[c+2];a.children=u}if(e&&e.defaultProps)for(r in l=e.defaultProps)void 0===a[r]&&(a[r]=l[r]);return{$$typeof:i,type:e,key:o,ref:s,props:a,_owner:w.current}}function x(e){return"object"==typeof e&&null!==e&&e.$$typeof===i}var _=/\/+/g;function O(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function P(e,t,n,r,o){var s=typeof e;"undefined"!==s&&"boolean"!==s||(e=null);var l=!1;if(null===e)l=!0;else switch(s){case"string":case"number":l=!0;break;case"object":switch(e.$$typeof){case i:case a:l=!0}}if(l)return o=o(l=e),e=""===r?"."+O(l,0):r,Array.isArray(o)?(n="",null!=e&&(n=e.replace(_,"$&/")+"/"),P(o,t,n,"",(function(e){return e}))):null!=o&&(x(o)&&(o=function(e,t){return{$$typeof:i,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(o,n+(!o.key||l&&l.key===o.key?"":(""+o.key).replace(_,"$&/")+"/")+e)),t.push(o)),1;if(l=0,r=""===r?".":r+":",Array.isArray(e))for(var u=0;u<e.length;u++){var c=r+O(s=e[u],u);l+=P(s,t,n,c,o)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=p&&e[p]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(s=e.next()).done;)l+=P(s=s.value,t,n,c=r+O(s,u++),o);else if("object"===s)throw t=""+e,Error(f(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return l}function C(e,t,n){if(null==e)return e;var r=[],i=0;return P(e,r,"","",(function(e){return t.call(n,e,i++)})),r}function T(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var I={current:null};function A(){var e=I.current;if(null===e)throw Error(f(321));return e}var L={ReactCurrentDispatcher:I,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:C,forEach:function(e,t,n){C(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return C(e,(function(){t++})),t},toArray:function(e){return C(e,(function(e){return e}))||[]},only:function(e){if(!x(e))throw Error(f(143));return e}},t.Component=h,t.PureComponent=v,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=L,t.cloneElement=function(e,t,n){if(null==e)throw Error(f(267,e));var a=r({},e.props),o=e.key,s=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(s=t.ref,l=w.current),void 0!==t.key&&(o=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)k.call(t,c)&&!S.hasOwnProperty(c)&&(a[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)a.children=n;else if(1<c){u=Array(c);for(var d=0;d<c;d++)u[d]=arguments[d+2];a.children=u}return{$$typeof:i,type:e.type,key:o,ref:s,props:a,_owner:l}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:s,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:o,_context:e},e.Consumer=e},t.createElement=E,t.createFactory=function(e){var t=E.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:l,render:e}},t.isValidElement=x,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:T}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return A().useCallback(e,t)},t.useContext=function(e,t){return A().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return A().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return A().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return A().useLayoutEffect(e,t)},t.useMemo=function(e,t){return A().useMemo(e,t)},t.useReducer=function(e,t,n){return A().useReducer(e,t,n)},t.useRef=function(e){return A().useRef(e)},t.useState=function(e){return A().useState(e)},t.version="17.0.2"},7294:(e,t,n)=>{"use strict";e.exports=n(2408)},53:(e,t)=>{"use strict";var n,r,i,a;if("object"==typeof performance&&"function"==typeof performance.now){var o=performance;t.unstable_now=function(){return o.now()}}else{var s=Date,l=s.now();t.unstable_now=function(){return s.now()-l}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,d=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==u?setTimeout(n,0,e):(u=e,setTimeout(d,0))},r=function(e,t){c=setTimeout(e,t)},i=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},a=t.unstable_forceFrameRate=function(){}}else{var p=window.setTimeout,f=window.clearTimeout;if("undefined"!=typeof console){var m=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof m&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var g=!1,h=null,b=-1,v=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},a=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):v=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,k=w.port2;w.port1.onmessage=function(){if(null!==h){var e=t.unstable_now();y=e+v;try{h(!0,e)?k.postMessage(null):(g=!1,h=null)}catch(n){throw k.postMessage(null),n}}else g=!1},n=function(e){h=e,g||(g=!0,k.postMessage(null))},r=function(e,n){b=p((function(){e(t.unstable_now())}),n)},i=function(){f(b),b=-1}}function S(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,i=e[r];if(!(void 0!==i&&0<_(i,t)))break e;e[r]=t,e[n]=i,n=r}}function E(e){return void 0===(e=e[0])?null:e}function x(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,i=e.length;r<i;){var a=2*(r+1)-1,o=e[a],s=a+1,l=e[s];if(void 0!==o&&0>_(o,n))void 0!==l&&0>_(l,o)?(e[r]=l,e[s]=n,r=s):(e[r]=o,e[a]=n,r=a);else{if(!(void 0!==l&&0>_(l,n)))break e;e[r]=l,e[s]=n,r=s}}}return t}return null}function _(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var O=[],P=[],C=1,T=null,I=3,A=!1,L=!1,R=!1;function N(e){for(var t=E(P);null!==t;){if(null===t.callback)x(P);else{if(!(t.startTime<=e))break;x(P),t.sortIndex=t.expirationTime,S(O,t)}t=E(P)}}function j(e){if(R=!1,N(e),!L)if(null!==E(O))L=!0,n(D);else{var t=E(P);null!==t&&r(j,t.startTime-e)}}function D(e,n){L=!1,R&&(R=!1,i()),A=!0;var a=I;try{for(N(n),T=E(O);null!==T&&(!(T.expirationTime>n)||e&&!t.unstable_shouldYield());){var o=T.callback;if("function"==typeof o){T.callback=null,I=T.priorityLevel;var s=o(T.expirationTime<=n);n=t.unstable_now(),"function"==typeof s?T.callback=s:T===E(O)&&x(O),N(n)}else x(O);T=E(O)}if(null!==T)var l=!0;else{var u=E(P);null!==u&&r(j,u.startTime-n),l=!1}return l}finally{T=null,I=a,A=!1}}var M=a;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){L||A||(L=!0,n(D))},t.unstable_getCurrentPriorityLevel=function(){return I},t.unstable_getFirstCallbackNode=function(){return E(O)},t.unstable_next=function(e){switch(I){case 1:case 2:case 3:var t=3;break;default:t=I}var n=I;I=t;try{return e()}finally{I=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=M,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=I;I=e;try{return t()}finally{I=n}},t.unstable_scheduleCallback=function(e,a,o){var s=t.unstable_now();switch("object"==typeof o&&null!==o?o="number"==typeof(o=o.delay)&&0<o?s+o:s:o=s,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:C++,callback:a,priorityLevel:e,startTime:o,expirationTime:l=o+l,sortIndex:-1},o>s?(e.sortIndex=o,S(P,e),null===E(O)&&e===E(P)&&(R?i():R=!0,r(j,o-s))):(e.sortIndex=l,S(O,e),L||A||(L=!0,n(D))),e},t.unstable_wrapCallback=function(e){var t=I;return function(){var n=I;I=t;try{return e.apply(this,arguments)}finally{I=n}}}},3840:(e,t,n)=>{"use strict";e.exports=n(53)},6774:e=>{e.exports=function(e,t,n,r){var i=n?n.call(r,e,t):void 0;if(void 0!==i)return!!i;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var a=Object.keys(e),o=Object.keys(t);if(a.length!==o.length)return!1;for(var s=Object.prototype.hasOwnProperty.bind(t),l=0;l<a.length;l++){var u=a[l];if(!s(u))return!1;var c=e[u],d=t[u];if(!1===(i=n?n.call(r,c,d,u):void 0)||void 0===i&&c!==d)return!1}return!0}},3250:(e,t,n)=>{"use strict";var r=n(7294);var i="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},a=r.useState,o=r.useEffect,s=r.useLayoutEffect,l=r.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch(r){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=a({inst:{value:n,getSnapshot:t}}),i=r[0].inst,c=r[1];return s((function(){i.value=n,i.getSnapshot=t,u(i)&&c({inst:i})}),[e,n,t]),o((function(){return u(i)&&c({inst:i}),e((function(){u(i)&&c({inst:i})}))}),[e]),l(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:c},1688:(e,t,n)=>{"use strict";e.exports=n(3250)},6809:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Credo",tagline:"Everything you need to know about the Credo ecosystem.",url:"https://credo.js.org",baseUrl:"/",onBrokenLinks:"warn",onBrokenMarkdownLinks:"warn",favicon:"img/favicon.ico",themes:["@docusaurus/theme-mermaid"],organizationName:"openwallet-foundation",projectName:"credo-ts-docs",trailingSlash:!1,markdown:{mermaid:!0},presets:[["@docusaurus/preset-classic",{docs:{path:"guides",routeBasePath:"guides",sidebarPath:"/home/runner/work/credo-ts-docs/credo-ts-docs/sidebars.js",remarkPlugins:[null],admonitions:{tag:":::",keywords:["note","tip","info","caution","danger","issuer","verifier","holder","bob","acme"]},lastVersion:"0.4",versions:{current:{label:"v0.5.x",path:"0.5",banner:"unreleased"},.4:{label:"v0.4.x"},.3:{label:"v0.3.x"}}},theme:{customCss:"/home/runner/work/credo-ts-docs/credo-ts-docs/src/css/custom.css"}}]],themeConfig:{image:"img/credo-social-preview.png",navbar:{title:"Credo Docs",logo:{alt:"Credo Logo",src:"img/credo-logo.png"},items:[{type:"docsVersionDropdown",position:"right",dropdownItemsBefore:[],dropdownItemsAfter:[]},{to:"/guides",type:"doc",docId:"index",position:"left",label:"Guides"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Guides",items:[{label:"Concepts",to:"/guides/concepts"},{label:"Tutorials",to:"/guides/tutorials"}]},{title:"Community",items:[{label:"Discord",href:"https://discord.com/channels/1022962884864643214/1179453305856991263"},{label:"Mailing List",href:"https://lists.openwallet.foundation/g/credo-project"},{label:"Working Group Call Notes",href:"https://github.com/openwallet-foundation/credo-ts/wiki/Meeting-Information"}]},{title:"Repositories",items:[{label:"Credo",href:"https://github.com/openwallet-foundation/credo-ts"},{label:"Credo Extensions",href:"https://github.com/openwallet-foundation/credo-ts-ext"},{label:"Credo Docs (this site)",href:"https://github.com/openwallet-foundation/credo-ts-docs"}]}]},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3},mermaid:{theme:{dark:"dark",light:"default"},options:{}}},plugins:[["/home/runner/work/credo-ts-docs/credo-ts-docs/node_modules/@cmfcmf/docusaurus-search-local/lib/server/index.js",{indexDocs:!0,indexDocSidebarParentCategories:3,lunr:{tokenizerSeparator:{},b:.75,k1:1.2,titleBoost:10,contentBoost:1,parentCategoriesBoost:2}}]],baseUrlIssueBanner:!0,i18n:{defaultLocale:"en",path:"i18n",locales:["en"],localeConfigs:{}},onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1}},7462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},5068:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function i(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>i})},3366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}n.d(t,{Z:()=>r})},8776:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=!0,i="Invariant failed";function a(e,t){if(!e){if(r)throw new Error(i);var n="function"==typeof t?t():t,a=n?"".concat(i,": ").concat(n):i;throw new Error(a)}}},7529:e=>{"use strict";e.exports=JSON.parse('{"cmfcmf/d-s-l.searchBar.placeholder":"Search...","cmfcmf/d-s-l.searchBar.noResults":"No results found.","cmfcmf/d-s-l.searchBar.clearButtonTitle":"Clear","cmfcmf/d-s-l.searchBar.detachedCancelButtonText":"Cancel","cmfcmf/d-s-l.searchBar.submitButtonTitle":"Submit"}')},6887:e=>{"use strict";e.exports=JSON.parse('{"/markdown-page-ff5":{"__comp":"1f391b9e","__context":{"plugin":"70f061b3"},"content":"393be207"},"/guides/0.3-769":{"__comp":"1be78505","__context":{"plugin":"e4252094"},"versionMetadata":"05113313"},"/guides/0.3-c55":{"__comp":"17896441","content":"91053f61"},"/guides/0.3/concepts-8ed":{"__comp":"17896441","content":"334d54c0"},"/guides/0.3/concepts/agents-26a":{"__comp":"17896441","content":"74ce5ee1"},"/guides/0.3/concepts/did-and-didcomm-cae":{"__comp":"17896441","content":"12357581"},"/guides/0.3/concepts/platform-and-environment-c83":{"__comp":"17896441","content":"bf52c953"},"/guides/0.3/ecosystem-6e2":{"__comp":"17896441","content":"acdd3ecd"},"/guides/0.3/extensions-89d":{"__comp":"17896441","content":"27320d50"},"/guides/0.3/extensions/push-notifications-83d":{"__comp":"17896441","content":"9436892d"},"/guides/0.3/extensions/push-notifications/setup-4e7":{"__comp":"17896441","content":"7d25e484"},"/guides/0.3/extensions/react-hooks-27a":{"__comp":"17896441","content":"69f8e48e"},"/guides/0.3/extensions/react-hooks/setup-042":{"__comp":"17896441","content":"c2afb9af"},"/guides/0.3/extensions/redux-store-17e":{"__comp":"17896441","content":"93020ce9"},"/guides/0.3/extensions/redux-store/setup-e20":{"__comp":"17896441","content":"96bb78d2"},"/guides/0.3/extensions/rest-f47":{"__comp":"17896441","content":"7138c4a2"},"/guides/0.3/extensions/rest/setup-856":{"__comp":"17896441","content":"1bb97b5b"},"/guides/0.3/getting-started-09e":{"__comp":"17896441","content":"6df87a7d"},"/guides/0.3/getting-started/installation-210":{"__comp":"17896441","content":"36fa027f"},"/guides/0.3/getting-started/installation/nodejs-d46":{"__comp":"17896441","content":"3483c478"},"/guides/0.3/getting-started/installation/nodejs/apple-arm-fbf":{"__comp":"17896441","content":"9cd8fd3e"},"/guides/0.3/getting-started/installation/nodejs/apple-intel-c05":{"__comp":"17896441","content":"4359f0b8"},"/guides/0.3/getting-started/installation/nodejs/linux-d0a":{"__comp":"17896441","content":"bd127040"},"/guides/0.3/getting-started/installation/nodejs/windows-834":{"__comp":"17896441","content":"655fc6f5"},"/guides/0.3/getting-started/installation/react-native-839":{"__comp":"17896441","content":"4ee9ed1d"},"/guides/0.3/getting-started/installation/react-native/android-550":{"__comp":"17896441","content":"0e983491"},"/guides/0.3/getting-started/installation/react-native/ios-655":{"__comp":"17896441","content":"d68982b8"},"/guides/0.3/getting-started/prerequisites-840":{"__comp":"17896441","content":"8c506fba"},"/guides/0.3/getting-started/set-up-662":{"__comp":"17896441","content":"a9c79318"},"/guides/0.3/tutorials-8f3":{"__comp":"17896441","content":"b56c3f57"},"/guides/0.3/tutorials/agent-config-16e":{"__comp":"17896441","content":"4e1c6ae4"},"/guides/0.3/tutorials/agent-config/logging-c89":{"__comp":"17896441","content":"7bb6402a"},"/guides/0.3/tutorials/create-a-connection-14a":{"__comp":"17896441","content":"d42e1e6c"},"/guides/0.3/tutorials/issue-a-credential-b7f":{"__comp":"17896441","content":"08ca7335"},"/guides/0.3/tutorials/postgres-database-nodejs-7e2":{"__comp":"17896441","content":"926eb7a7"},"/guides/0.3/tutorials/postgres-database-nodejs/linux-33b":{"__comp":"17896441","content":"07ca6c5c"},"/guides/0.3/tutorials/postgres-database-nodejs/macos-af5":{"__comp":"17896441","content":"d1089d1d"},"/guides/0.3/tutorials/postgres-database-nodejs/windows-b05":{"__comp":"17896441","content":"f3933b6b"},"/guides/0.3/updating-4bd":{"__comp":"17896441","content":"c970593d"},"/guides/0.3/updating/update-assistant-33c":{"__comp":"17896441","content":"e5f12b68"},"/guides/0.3/updating/versions/0.1-to-0.2-714":{"__comp":"17896441","content":"daf4660b"},"/guides/0.3/updating/versions/0.2-to-0.3-0d2":{"__comp":"17896441","content":"470c56a2"},"/guides/0.5-9eb":{"__comp":"1be78505","__context":{"plugin":"e4252094"},"versionMetadata":"935f2afb"},"/guides/0.5-b60":{"__comp":"17896441","content":"29b62a39"},"/guides/0.5/concepts-159":{"__comp":"17896441","content":"2003ac23"},"/guides/0.5/concepts/agents-754":{"__comp":"17896441","content":"0f95bd9e"},"/guides/0.5/concepts/did-and-didcomm-192":{"__comp":"17896441","content":"ca99fa15"},"/guides/0.5/concepts/platform-and-environment-de1":{"__comp":"17896441","content":"eeecf87c"},"/guides/0.5/ecosystem-64b":{"__comp":"17896441","content":"636a146f"},"/guides/0.5/extensions-28e":{"__comp":"17896441","content":"5d8cec60"},"/guides/0.5/extensions/push-notifications-1cf":{"__comp":"17896441","content":"95261082"},"/guides/0.5/extensions/react-hooks-f82":{"__comp":"17896441","content":"6e4808e6"},"/guides/0.5/extensions/redux-store-866":{"__comp":"17896441","content":"a69e7b9a"},"/guides/0.5/extensions/rest-bc3":{"__comp":"17896441","content":"92188087"},"/guides/0.5/getting-started-701":{"__comp":"17896441","content":"dc62edf2"},"/guides/0.5/getting-started/prerequisites-b2b":{"__comp":"17896441","content":"996925d9"},"/guides/0.5/getting-started/set-up-d4e":{"__comp":"17896441","content":"2332f431"},"/guides/0.5/getting-started/set-up/anoncreds-rs-fbd":{"__comp":"17896441","content":"af9716ba"},"/guides/0.5/getting-started/set-up/aries-askar-9a1":{"__comp":"17896441","content":"f800d23c"},"/guides/0.5/getting-started/set-up/cheqd-de9":{"__comp":"17896441","content":"0c824aea"},"/guides/0.5/getting-started/set-up/indy-sdk-638":{"__comp":"17896441","content":"79d2b703"},"/guides/0.5/getting-started/set-up/indy-sdk/linux-838":{"__comp":"17896441","content":"afc41633"},"/guides/0.5/getting-started/set-up/indy-sdk/macos-arm-457":{"__comp":"17896441","content":"4da4ce16"},"/guides/0.5/getting-started/set-up/indy-sdk/macos-intel-042":{"__comp":"17896441","content":"f87d6b73"},"/guides/0.5/getting-started/set-up/indy-sdk/react-native-4f9":{"__comp":"17896441","content":"c6c95224"},"/guides/0.5/getting-started/set-up/indy-sdk/windows-588":{"__comp":"17896441","content":"06d26907"},"/guides/0.5/getting-started/set-up/indy-vdr-a60":{"__comp":"17896441","content":"394d7bf2"},"/guides/0.5/tutorials-cde":{"__comp":"17896441","content":"a2a3716e"},"/guides/0.5/tutorials/agent-config-73c":{"__comp":"17896441","content":"67da112e"},"/guides/0.5/tutorials/agent-config/logging-980":{"__comp":"17896441","content":"5d1c397c"},"/guides/0.5/tutorials/cheqd-c33":{"__comp":"17896441","content":"76f8726c"},"/guides/0.5/tutorials/create-a-connection-354":{"__comp":"17896441","content":"ef7acecf"},"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs-585":{"__comp":"17896441","content":"5edc3d1c"},"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/linux-aa7":{"__comp":"17896441","content":"c5492fa7"},"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/macos-aac":{"__comp":"17896441","content":"82aa0257"},"/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/windows-177":{"__comp":"17896441","content":"00c1cb92"},"/guides/0.5/tutorials/issue-a-credential-491":{"__comp":"17896441","content":"bd5be9ae"},"/guides/0.5/tutorials/mediation-eec":{"__comp":"17896441","content":"60053357"},"/guides/0.5/tutorials/registering-schema-and-credential-definition-a59":{"__comp":"17896441","content":"466eb4b6"},"/guides/0.5/updating-416":{"__comp":"17896441","content":"331e6edf"},"/guides/0.5/updating/update-assistant-d63":{"__comp":"17896441","content":"32456564"},"/guides/0.5/updating/update-indy-sdk-to-askar-454":{"__comp":"17896441","content":"0ecb752f"},"/guides/0.5/updating/versions/0.1-to-0.2-0fb":{"__comp":"17896441","content":"65c86d7b"},"/guides/0.5/updating/versions/0.2-to-0.3-88f":{"__comp":"17896441","content":"365d3941"},"/guides/0.5/updating/versions/0.3-to-0.4-4cf":{"__comp":"17896441","content":"14e53ecf"},"/guides-f79":{"__comp":"1be78505","__context":{"plugin":"e4252094"},"versionMetadata":"17b50570"},"/guides-21c":{"__comp":"17896441","content":"34eb4307"},"/guides/concepts-67d":{"__comp":"17896441","content":"7d0a541a"},"/guides/concepts/agents-589":{"__comp":"17896441","content":"ece13197"},"/guides/concepts/did-and-didcomm-e8f":{"__comp":"17896441","content":"6c6797b5"},"/guides/concepts/platform-and-environment-c7f":{"__comp":"17896441","content":"e38b62c8"},"/guides/ecosystem-72b":{"__comp":"17896441","content":"1cc62cef"},"/guides/extensions-38d":{"__comp":"17896441","content":"997e3d85"},"/guides/extensions/push-notifications-090":{"__comp":"17896441","content":"bcace162"},"/guides/extensions/react-hooks-b5b":{"__comp":"17896441","content":"b1d5f389"},"/guides/extensions/redux-store-3cd":{"__comp":"17896441","content":"14973ffc"},"/guides/extensions/rest-8d9":{"__comp":"17896441","content":"207a1e16"},"/guides/getting-started-9dc":{"__comp":"17896441","content":"6d708c3d"},"/guides/getting-started/prerequisites-085":{"__comp":"17896441","content":"30ebf81b"},"/guides/getting-started/set-up-5ac":{"__comp":"17896441","content":"1c0f7eb0"},"/guides/getting-started/set-up/anoncreds-rs-c2f":{"__comp":"17896441","content":"e5a09f30"},"/guides/getting-started/set-up/aries-askar-99d":{"__comp":"17896441","content":"5a512b94"},"/guides/getting-started/set-up/cheqd-26b":{"__comp":"17896441","content":"4a99cab5"},"/guides/getting-started/set-up/indy-sdk-c87":{"__comp":"17896441","content":"0a88801c"},"/guides/getting-started/set-up/indy-sdk/linux-c90":{"__comp":"17896441","content":"d26e5579"},"/guides/getting-started/set-up/indy-sdk/macos-arm-fbc":{"__comp":"17896441","content":"ee7869b6"},"/guides/getting-started/set-up/indy-sdk/macos-intel-013":{"__comp":"17896441","content":"224ce49c"},"/guides/getting-started/set-up/indy-sdk/react-native-4a0":{"__comp":"17896441","content":"9edc454f"},"/guides/getting-started/set-up/indy-sdk/windows-de3":{"__comp":"17896441","content":"2bf743db"},"/guides/getting-started/set-up/indy-vdr-523":{"__comp":"17896441","content":"8b37bb4b"},"/guides/tutorials-765":{"__comp":"17896441","content":"6d44cf95"},"/guides/tutorials/agent-config-9f9":{"__comp":"17896441","content":"52db191f"},"/guides/tutorials/agent-config/logging-b62":{"__comp":"17896441","content":"debd89ec"},"/guides/tutorials/cheqd-f6c":{"__comp":"17896441","content":"09958099"},"/guides/tutorials/create-a-connection-382":{"__comp":"17896441","content":"ee898636"},"/guides/tutorials/indy-sdk-postgres-database-nodejs-5d0":{"__comp":"17896441","content":"a1dc5557"},"/guides/tutorials/indy-sdk-postgres-database-nodejs/linux-dc1":{"__comp":"17896441","content":"f30d32a5"},"/guides/tutorials/indy-sdk-postgres-database-nodejs/macos-651":{"__comp":"17896441","content":"7852f2cc"},"/guides/tutorials/indy-sdk-postgres-database-nodejs/windows-6d4":{"__comp":"17896441","content":"0d8c2653"},"/guides/tutorials/issue-a-credential-e6e":{"__comp":"17896441","content":"43e7938e"},"/guides/tutorials/mediation-e0b":{"__comp":"17896441","content":"862058fd"},"/guides/tutorials/registering-schema-and-credential-definition-5d1":{"__comp":"17896441","content":"c5cd793e"},"/guides/updating-914":{"__comp":"17896441","content":"232d48ef"},"/guides/updating/update-assistant-a9e":{"__comp":"17896441","content":"a690f229"},"/guides/updating/update-indy-sdk-to-askar-9b6":{"__comp":"17896441","content":"58e9d200"},"/guides/updating/versions/0.1-to-0.2-722":{"__comp":"17896441","content":"8b5bb00b"},"/guides/updating/versions/0.2-to-0.3-4a1":{"__comp":"17896441","content":"2e77271a"},"/guides/updating/versions/0.3-to-0.4-ff2":{"__comp":"17896441","content":"fd1a8f62"},"/-3b7":{"__comp":"1df93b7f","__context":{"plugin":"70f061b3"},"config":"5e9f5e1a"}}')}},e=>{e.O(0,[532],(()=>{return t=9383,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/runtime~main.585fd2b6.js b/assets/js/runtime~main.585fd2b6.js deleted file mode 100644 index 09cb079d..00000000 --- a/assets/js/runtime~main.585fd2b6.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e,c,d,a,f,b={},t={};function r(e){var c=t[e];if(void 0!==c)return c.exports;var d=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(d.exports,d,d.exports,r),d.loaded=!0,d.exports}r.m=b,r.c=t,e=[],r.O=(c,d,a,f)=>{if(!d){var b=1/0;for(i=0;i<e.length;i++){d=e[i][0],a=e[i][1],f=e[i][2];for(var t=!0,o=0;o<d.length;o++)(!1&f||b>=f)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,f<b&&(b=f));if(t){e.splice(i--,1);var n=a();void 0!==n&&(c=n)}}return c}f=f||0;for(var i=e.length;i>0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[d,a,f]},r.n=e=>{var c=e&&e.__esModule?()=>e.default:()=>e;return r.d(c,{a:c}),c},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var f=Object.create(null);r.r(f);var b={};c=c||[null,d({}),d([]),d(d)];for(var t=2&a&&e;"object"==typeof t&&!~c.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach((c=>b[c]=()=>e[c]));return b.default=()=>e,r.d(f,b),f},r.d=(e,c)=>{for(var d in c)r.o(c,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:c[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((c,d)=>(r.f[d](e,c),c)),[])),r.u=e=>"assets/js/"+({35:"07ca6c5c",37:"334d54c0",53:"935f2afb",77:"fd1a8f62",82:"2332f431",241:"36fa027f",397:"7d0a541a",537:"92188087",644:"a2a3716e",703:"c970593d",752:"bcace162",792:"926eb7a7",911:"f3933b6b",1119:"4da4ce16",1229:"6c6797b5",1270:"d1089d1d",1271:"6e4808e6",1313:"5edc3d1c",1317:"acdd3ecd",1350:"0c824aea",1389:"c2afb9af",1454:"74ce5ee1",1498:"29b62a39",1776:"e4252094",1904:"14e53ecf",1912:"30ebf81b",1993:"bd5be9ae",2086:"95261082",2215:"0a88801c",2226:"d42e1e6c",2254:"e5a09f30",2525:"00c1cb92",2562:"655fc6f5",2637:"f30d32a5",2680:"997e3d85",2743:"09958099",2925:"ef7acecf",2959:"232d48ef",3080:"ca99fa15",3085:"1f391b9e",3143:"4359f0b8",3237:"1df93b7f",3338:"3483c478",3531:"70f061b3",3666:"6d708c3d",3859:"93020ce9",3901:"996925d9",4105:"0d8c2653",4220:"bf52c953",4354:"466eb4b6",4365:"a69e7b9a",4378:"4a99cab5",4565:"8b37bb4b",4602:"5a512b94",4632:"06d26907",4656:"e5f12b68",4767:"debd89ec",4809:"91053f61",4827:"dc62edf2",5062:"05113313",5252:"1bb97b5b",5260:"9436892d",5313:"636a146f",5554:"14973ffc",5666:"67da112e",5846:"43e7938e",5880:"2bf743db",6059:"52db191f",6142:"bd127040",6266:"60053357",6295:"65c86d7b",6347:"365d3941",6407:"207a1e16",6614:"1c0f7eb0",6625:"a9c79318",6657:"12357581",6696:"7d25e484",6718:"7138c4a2",6751:"5d8cec60",6840:"5d1c397c",6974:"58e9d200",7024:"2e77271a",7083:"f87d6b73",7162:"e38b62c8",7240:"ee7869b6",7303:"08ca7335",7314:"34eb4307",7414:"393be207",7529:"2003ac23",7543:"af9716ba",7547:"eeecf87c",7572:"c6c95224",7608:"d68982b8",7610:"b56c3f57",7798:"6d44cf95",7824:"0ecb752f",7831:"afc41633",7844:"6df87a7d",7854:"9edc454f",7873:"4e1c6ae4",7885:"0f95bd9e",7902:"79d2b703",7918:"17896441",7988:"96bb78d2",8026:"0e983491",8041:"c5492fa7",8135:"224ce49c",8230:"a1dc5557",8251:"f800d23c",8368:"394d7bf2",8377:"27320d50",8399:"9cd8fd3e",8417:"8b5bb00b",8440:"76f8726c",8692:"daf4660b",8709:"862058fd",8866:"8c506fba",8925:"c5cd793e",8937:"32456564",8980:"7bb6402a",9047:"69f8e48e",9080:"d26e5579",9196:"331e6edf",9233:"ee898636",9474:"470c56a2",9514:"1be78505",9567:"4ee9ed1d",9593:"17b50570",9626:"1cc62cef",9841:"a690f229",9843:"b1d5f389",9852:"ece13197",9910:"7852f2cc",9989:"82aa0257"}[e]||e)+"."+{35:"f27d7f4b",37:"09ed8c3f",53:"613f1d9b",77:"53d966df",82:"9b8a1baa",241:"8c15b0c9",397:"9d9520e5",537:"1139471b",644:"5be21072",703:"c8e661ef",752:"51139a8f",792:"d55ac6ce",903:"9ae52e19",911:"7692df26",1119:"880b581d",1229:"440a306d",1270:"6cf628ac",1271:"9e5dacb9",1313:"3860f396",1317:"ad3fb860",1329:"f911dbaf",1350:"1645a86c",1389:"75f84ec7",1454:"efc76b0f",1498:"f8bd6331",1776:"4ac19d4c",1904:"d02e9688",1912:"cc59b5ec",1993:"ade28b3f",2086:"8797c649",2215:"6008b0ff",2226:"019f1c15",2254:"d00f0bc2",2525:"f4c22810",2562:"69a44864",2637:"b3461c1e",2680:"30121511",2743:"3cb1e01a",2925:"05fbba14",2959:"ca668017",3080:"14f0d88b",3085:"8f59a356",3143:"fc401470",3237:"3db5e753",3338:"0f456a12",3531:"7929cff9",3666:"19297ed9",3859:"4b48fe5e",3901:"7c209dbd",4105:"504e5fea",4220:"d9abddb3",4354:"8ef8cc51",4365:"0f39abaa",4378:"6b42005a",4565:"78c46236",4602:"8d4761ec",4632:"1488c196",4656:"e769ce15",4767:"fbbc5ac8",4809:"0280e149",4827:"84a86ec7",4972:"e45ad696",5062:"491a0534",5252:"8dad73b9",5260:"c3faa1d0",5313:"2e4e84b8",5554:"3812a945",5666:"e9e800dd",5846:"3e109fe7",5880:"f063a5e7",6059:"b0b7b954",6142:"09cd6ab6",6266:"3a4af8f4",6295:"328e5b53",6316:"c0237eae",6347:"fd0d0e1b",6407:"f970394b",6614:"ae59bc78",6625:"b4db8a4c",6657:"e940fd9b",6696:"4da095d9",6718:"5fd7152f",6751:"ee7969e5",6840:"f2b71c6e",6974:"bca41dd1",7024:"27bf11c9",7083:"7207a02c",7162:"f5742f56",7240:"39442c96",7303:"d623c4d4",7314:"064bb15e",7414:"a48a7c79",7529:"5a088efe",7543:"6fba4a51",7547:"255310e2",7572:"f6f2277e",7608:"ffa01d84",7610:"d212be4a",7724:"d84ad8cc",7798:"55379d59",7824:"c99828b6",7831:"e23d3e1a",7844:"097e2936",7854:"78b0e51d",7873:"d7e2b475",7885:"e27914e3",7902:"091bb580",7918:"500a5dd6",7988:"347e06d0",8026:"36fbd209",8041:"668266bc",8135:"4dd8e634",8230:"64bae966",8251:"fb13addf",8368:"11b51def",8377:"47448ff8",8399:"de9cbc4f",8417:"74a71399",8440:"3f42a1d2",8692:"999a8cea",8709:"3ae6be20",8866:"fc412c50",8925:"f7c6a4c8",8937:"cd6a0377",8980:"0c53a41b",9047:"a97ae3f9",9080:"b67f5693",9196:"de3b4b21",9233:"ccf696ac",9474:"746ba684",9487:"787a6345",9514:"c5e500fc",9567:"6ccee378",9593:"e8f44455",9626:"74aa4746",9841:"9ee705e9",9843:"8ed976d1",9852:"5aba9542",9910:"01b0177d",9989:"70249622"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,c)=>Object.prototype.hasOwnProperty.call(e,c),a={},f="credo-ts-docs:",r.l=(e,c,d,b)=>{if(a[e])a[e].push(c);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==f+d){t=u;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",f+d),t.src=e),a[e]=[c];var l=(c,d)=>{t.onerror=t.onload=null,clearTimeout(s);var f=a[e];if(delete a[e],t.parentNode&&t.parentNode.removeChild(t),f&&f.forEach((e=>e(d))),c)return c(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={12357581:"6657",17896441:"7918",32456564:"8937",60053357:"6266",92188087:"537",95261082:"2086","07ca6c5c":"35","334d54c0":"37","935f2afb":"53",fd1a8f62:"77","2332f431":"82","36fa027f":"241","7d0a541a":"397",a2a3716e:"644",c970593d:"703",bcace162:"752","926eb7a7":"792",f3933b6b:"911","4da4ce16":"1119","6c6797b5":"1229",d1089d1d:"1270","6e4808e6":"1271","5edc3d1c":"1313",acdd3ecd:"1317","0c824aea":"1350",c2afb9af:"1389","74ce5ee1":"1454","29b62a39":"1498",e4252094:"1776","14e53ecf":"1904","30ebf81b":"1912",bd5be9ae:"1993","0a88801c":"2215",d42e1e6c:"2226",e5a09f30:"2254","00c1cb92":"2525","655fc6f5":"2562",f30d32a5:"2637","997e3d85":"2680","09958099":"2743",ef7acecf:"2925","232d48ef":"2959",ca99fa15:"3080","1f391b9e":"3085","4359f0b8":"3143","1df93b7f":"3237","3483c478":"3338","70f061b3":"3531","6d708c3d":"3666","93020ce9":"3859","996925d9":"3901","0d8c2653":"4105",bf52c953:"4220","466eb4b6":"4354",a69e7b9a:"4365","4a99cab5":"4378","8b37bb4b":"4565","5a512b94":"4602","06d26907":"4632",e5f12b68:"4656",debd89ec:"4767","91053f61":"4809",dc62edf2:"4827","05113313":"5062","1bb97b5b":"5252","9436892d":"5260","636a146f":"5313","14973ffc":"5554","67da112e":"5666","43e7938e":"5846","2bf743db":"5880","52db191f":"6059",bd127040:"6142","65c86d7b":"6295","365d3941":"6347","207a1e16":"6407","1c0f7eb0":"6614",a9c79318:"6625","7d25e484":"6696","7138c4a2":"6718","5d8cec60":"6751","5d1c397c":"6840","58e9d200":"6974","2e77271a":"7024",f87d6b73:"7083",e38b62c8:"7162",ee7869b6:"7240","08ca7335":"7303","34eb4307":"7314","393be207":"7414","2003ac23":"7529",af9716ba:"7543",eeecf87c:"7547",c6c95224:"7572",d68982b8:"7608",b56c3f57:"7610","6d44cf95":"7798","0ecb752f":"7824",afc41633:"7831","6df87a7d":"7844","9edc454f":"7854","4e1c6ae4":"7873","0f95bd9e":"7885","79d2b703":"7902","96bb78d2":"7988","0e983491":"8026",c5492fa7:"8041","224ce49c":"8135",a1dc5557:"8230",f800d23c:"8251","394d7bf2":"8368","27320d50":"8377","9cd8fd3e":"8399","8b5bb00b":"8417","76f8726c":"8440",daf4660b:"8692","862058fd":"8709","8c506fba":"8866",c5cd793e:"8925","7bb6402a":"8980","69f8e48e":"9047",d26e5579:"9080","331e6edf":"9196",ee898636:"9233","470c56a2":"9474","1be78505":"9514","4ee9ed1d":"9567","17b50570":"9593","1cc62cef":"9626",a690f229:"9841",b1d5f389:"9843",ece13197:"9852","7852f2cc":"9910","82aa0257":"9989"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(c,d)=>{var a=r.o(e,c)?e[c]:void 0;if(0!==a)if(a)d.push(a[2]);else if(/^(1303|532)$/.test(c))e[c]=0;else{var f=new Promise(((d,f)=>a=e[c]=[d,f]));d.push(a[2]=f);var b=r.p+r.u(c),t=new Error;r.l(b,(d=>{if(r.o(e,c)&&(0!==(a=e[c])&&(e[c]=void 0),a)){var f=d&&("load"===d.type?"missing":d.type),b=d&&d.target&&d.target.src;t.message="Loading chunk "+c+" failed.\n("+f+": "+b+")",t.name="ChunkLoadError",t.type=f,t.request=b,a[1](t)}}),"chunk-"+c,c)}},r.O.j=c=>0===e[c];var c=(c,d)=>{var a,f,b=d[0],t=d[1],o=d[2],n=0;if(b.some((c=>0!==e[c]))){for(a in t)r.o(t,a)&&(r.m[a]=t[a]);if(o)var i=o(r)}for(c&&c(d);n<b.length;n++)f=b[n],r.o(e,f)&&e[f]&&e[f][0](),e[f]=0;return r.O(i)},d=self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[];d.forEach(c.bind(null,0)),d.push=c.bind(null,d.push.bind(d))})()})(); \ No newline at end of file diff --git a/assets/js/runtime~main.9750d778.js b/assets/js/runtime~main.9750d778.js new file mode 100644 index 00000000..7d299bde --- /dev/null +++ b/assets/js/runtime~main.9750d778.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,c,d,a,f,b={},t={};function r(e){var c=t[e];if(void 0!==c)return c.exports;var d=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(d.exports,d,d.exports,r),d.loaded=!0,d.exports}r.m=b,r.c=t,e=[],r.O=(c,d,a,f)=>{if(!d){var b=1/0;for(i=0;i<e.length;i++){d=e[i][0],a=e[i][1],f=e[i][2];for(var t=!0,o=0;o<d.length;o++)(!1&f||b>=f)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,f<b&&(b=f));if(t){e.splice(i--,1);var n=a();void 0!==n&&(c=n)}}return c}f=f||0;for(var i=e.length;i>0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[d,a,f]},r.n=e=>{var c=e&&e.__esModule?()=>e.default:()=>e;return r.d(c,{a:c}),c},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var f=Object.create(null);r.r(f);var b={};c=c||[null,d({}),d([]),d(d)];for(var t=2&a&&e;"object"==typeof t&&!~c.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach((c=>b[c]=()=>e[c]));return b.default=()=>e,r.d(f,b),f},r.d=(e,c)=>{for(var d in c)r.o(c,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:c[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((c,d)=>(r.f[d](e,c),c)),[])),r.u=e=>"assets/js/"+({35:"07ca6c5c",37:"334d54c0",53:"935f2afb",77:"fd1a8f62",82:"2332f431",241:"36fa027f",397:"7d0a541a",537:"92188087",644:"a2a3716e",703:"c970593d",752:"bcace162",792:"926eb7a7",911:"f3933b6b",1229:"6c6797b5",1270:"d1089d1d",1271:"6e4808e6",1317:"acdd3ecd",1350:"0c824aea",1389:"c2afb9af",1454:"74ce5ee1",1498:"29b62a39",1776:"e4252094",1904:"14e53ecf",1912:"30ebf81b",1993:"bd5be9ae",2050:"514aaf1d",2086:"95261082",2215:"0a88801c",2226:"d42e1e6c",2254:"e5a09f30",2562:"655fc6f5",2637:"f30d32a5",2680:"997e3d85",2743:"09958099",2913:"369c14e0",2925:"ef7acecf",2959:"232d48ef",3080:"ca99fa15",3085:"1f391b9e",3143:"4359f0b8",3237:"1df93b7f",3338:"3483c478",3531:"70f061b3",3666:"6d708c3d",3859:"93020ce9",3901:"996925d9",4105:"0d8c2653",4220:"bf52c953",4226:"6414033c",4281:"da788397",4354:"466eb4b6",4365:"a69e7b9a",4378:"4a99cab5",4565:"8b37bb4b",4602:"5a512b94",4656:"e5f12b68",4767:"debd89ec",4809:"91053f61",4827:"dc62edf2",5062:"05113313",5252:"1bb97b5b",5260:"9436892d",5313:"636a146f",5554:"14973ffc",5666:"67da112e",5846:"43e7938e",5880:"2bf743db",6059:"52db191f",6142:"bd127040",6266:"60053357",6295:"65c86d7b",6347:"365d3941",6407:"207a1e16",6614:"1c0f7eb0",6625:"a9c79318",6657:"12357581",6696:"7d25e484",6718:"7138c4a2",6751:"5d8cec60",6840:"5d1c397c",6974:"58e9d200",7024:"2e77271a",7162:"e38b62c8",7240:"ee7869b6",7303:"08ca7335",7314:"34eb4307",7414:"393be207",7529:"2003ac23",7547:"eeecf87c",7608:"d68982b8",7610:"b56c3f57",7798:"6d44cf95",7824:"0ecb752f",7844:"6df87a7d",7854:"9edc454f",7867:"7697e6e6",7873:"4e1c6ae4",7885:"0f95bd9e",7918:"17896441",7988:"96bb78d2",8026:"0e983491",8135:"224ce49c",8230:"a1dc5557",8251:"f800d23c",8368:"394d7bf2",8377:"27320d50",8399:"9cd8fd3e",8417:"8b5bb00b",8440:"76f8726c",8692:"daf4660b",8709:"862058fd",8796:"41c1fec5",8866:"8c506fba",8925:"c5cd793e",8937:"32456564",8980:"7bb6402a",9047:"69f8e48e",9080:"d26e5579",9196:"331e6edf",9233:"ee898636",9474:"470c56a2",9514:"1be78505",9567:"4ee9ed1d",9593:"17b50570",9626:"1cc62cef",9841:"a690f229",9843:"b1d5f389",9852:"ece13197",9910:"7852f2cc"}[e]||e)+"."+{35:"f27d7f4b",37:"09ed8c3f",53:"678d7a53",77:"53d966df",82:"be9295db",241:"8c15b0c9",397:"9d9520e5",537:"fe2e4f83",644:"67147bbd",703:"c8e661ef",752:"51139a8f",792:"d55ac6ce",903:"9ae52e19",911:"7692df26",1229:"440a306d",1270:"6cf628ac",1271:"8649b62c",1317:"ad3fb860",1350:"729d7fe3",1389:"75f84ec7",1454:"efc76b0f",1498:"f8bd6331",1776:"4ac19d4c",1904:"d02e9688",1912:"cc59b5ec",1993:"2f888633",2050:"c14f0a5d",2086:"e337adff",2215:"6008b0ff",2226:"019f1c15",2254:"d00f0bc2",2562:"69a44864",2637:"b3461c1e",2680:"30121511",2743:"3cb1e01a",2913:"ac5daf50",2925:"05fbba14",2959:"ca668017",3080:"14f0d88b",3085:"1b11f611",3143:"fc401470",3237:"3db5e753",3338:"0f456a12",3531:"7929cff9",3666:"19297ed9",3859:"4b48fe5e",3901:"7c209dbd",4105:"504e5fea",4220:"d9abddb3",4226:"82b49c2d",4281:"738bc3cb",4354:"fa1459da",4365:"cd4652af",4378:"6b42005a",4565:"78c46236",4602:"8d4761ec",4656:"e769ce15",4767:"fbbc5ac8",4809:"0280e149",4827:"84a86ec7",4972:"e45ad696",5062:"491a0534",5252:"8dad73b9",5260:"c3faa1d0",5313:"2e4e84b8",5554:"3812a945",5666:"8bb35d6e",5846:"3e109fe7",5880:"f063a5e7",6059:"b0b7b954",6142:"09cd6ab6",6266:"203ae6de",6295:"328e5b53",6316:"c0237eae",6347:"fd0d0e1b",6407:"f970394b",6614:"ae59bc78",6625:"b4db8a4c",6657:"e940fd9b",6696:"4da095d9",6718:"5fd7152f",6751:"ee7969e5",6840:"f13ab292",6974:"bca41dd1",7024:"27bf11c9",7162:"f5742f56",7240:"39442c96",7303:"d623c4d4",7314:"064bb15e",7414:"a48a7c79",7529:"5a088efe",7547:"4f538e64",7608:"ffa01d84",7610:"d212be4a",7724:"d84ad8cc",7798:"55379d59",7824:"50e94dea",7844:"097e2936",7854:"78b0e51d",7867:"ff268635",7873:"d7e2b475",7885:"e27914e3",7918:"c43c2ee8",7988:"347e06d0",8026:"36fbd209",8135:"4dd8e634",8230:"64bae966",8251:"1a67a51b",8368:"8e036a29",8377:"47448ff8",8399:"de9cbc4f",8417:"74a71399",8440:"3f42a1d2",8692:"999a8cea",8709:"3ae6be20",8796:"ae3a9ded",8866:"fc412c50",8925:"f7c6a4c8",8929:"afff4b8b",8937:"74f902ca",8980:"0c53a41b",9047:"a97ae3f9",9080:"b67f5693",9196:"375ff227",9233:"ccf696ac",9474:"746ba684",9487:"787a6345",9514:"c5e500fc",9567:"6ccee378",9593:"e8f44455",9626:"74aa4746",9841:"9ee705e9",9843:"8ed976d1",9852:"5aba9542",9910:"01b0177d"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,c)=>Object.prototype.hasOwnProperty.call(e,c),a={},f="credo-ts-docs:",r.l=(e,c,d,b)=>{if(a[e])a[e].push(c);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==f+d){t=u;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",f+d),t.src=e),a[e]=[c];var l=(c,d)=>{t.onerror=t.onload=null,clearTimeout(s);var f=a[e];if(delete a[e],t.parentNode&&t.parentNode.removeChild(t),f&&f.forEach((e=>e(d))),c)return c(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={12357581:"6657",17896441:"7918",32456564:"8937",60053357:"6266",92188087:"537",95261082:"2086","07ca6c5c":"35","334d54c0":"37","935f2afb":"53",fd1a8f62:"77","2332f431":"82","36fa027f":"241","7d0a541a":"397",a2a3716e:"644",c970593d:"703",bcace162:"752","926eb7a7":"792",f3933b6b:"911","6c6797b5":"1229",d1089d1d:"1270","6e4808e6":"1271",acdd3ecd:"1317","0c824aea":"1350",c2afb9af:"1389","74ce5ee1":"1454","29b62a39":"1498",e4252094:"1776","14e53ecf":"1904","30ebf81b":"1912",bd5be9ae:"1993","514aaf1d":"2050","0a88801c":"2215",d42e1e6c:"2226",e5a09f30:"2254","655fc6f5":"2562",f30d32a5:"2637","997e3d85":"2680","09958099":"2743","369c14e0":"2913",ef7acecf:"2925","232d48ef":"2959",ca99fa15:"3080","1f391b9e":"3085","4359f0b8":"3143","1df93b7f":"3237","3483c478":"3338","70f061b3":"3531","6d708c3d":"3666","93020ce9":"3859","996925d9":"3901","0d8c2653":"4105",bf52c953:"4220","6414033c":"4226",da788397:"4281","466eb4b6":"4354",a69e7b9a:"4365","4a99cab5":"4378","8b37bb4b":"4565","5a512b94":"4602",e5f12b68:"4656",debd89ec:"4767","91053f61":"4809",dc62edf2:"4827","05113313":"5062","1bb97b5b":"5252","9436892d":"5260","636a146f":"5313","14973ffc":"5554","67da112e":"5666","43e7938e":"5846","2bf743db":"5880","52db191f":"6059",bd127040:"6142","65c86d7b":"6295","365d3941":"6347","207a1e16":"6407","1c0f7eb0":"6614",a9c79318:"6625","7d25e484":"6696","7138c4a2":"6718","5d8cec60":"6751","5d1c397c":"6840","58e9d200":"6974","2e77271a":"7024",e38b62c8:"7162",ee7869b6:"7240","08ca7335":"7303","34eb4307":"7314","393be207":"7414","2003ac23":"7529",eeecf87c:"7547",d68982b8:"7608",b56c3f57:"7610","6d44cf95":"7798","0ecb752f":"7824","6df87a7d":"7844","9edc454f":"7854","7697e6e6":"7867","4e1c6ae4":"7873","0f95bd9e":"7885","96bb78d2":"7988","0e983491":"8026","224ce49c":"8135",a1dc5557:"8230",f800d23c:"8251","394d7bf2":"8368","27320d50":"8377","9cd8fd3e":"8399","8b5bb00b":"8417","76f8726c":"8440",daf4660b:"8692","862058fd":"8709","41c1fec5":"8796","8c506fba":"8866",c5cd793e:"8925","7bb6402a":"8980","69f8e48e":"9047",d26e5579:"9080","331e6edf":"9196",ee898636:"9233","470c56a2":"9474","1be78505":"9514","4ee9ed1d":"9567","17b50570":"9593","1cc62cef":"9626",a690f229:"9841",b1d5f389:"9843",ece13197:"9852","7852f2cc":"9910"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(c,d)=>{var a=r.o(e,c)?e[c]:void 0;if(0!==a)if(a)d.push(a[2]);else if(/^(1303|532)$/.test(c))e[c]=0;else{var f=new Promise(((d,f)=>a=e[c]=[d,f]));d.push(a[2]=f);var b=r.p+r.u(c),t=new Error;r.l(b,(d=>{if(r.o(e,c)&&(0!==(a=e[c])&&(e[c]=void 0),a)){var f=d&&("load"===d.type?"missing":d.type),b=d&&d.target&&d.target.src;t.message="Loading chunk "+c+" failed.\n("+f+": "+b+")",t.name="ChunkLoadError",t.type=f,t.request=b,a[1](t)}}),"chunk-"+c,c)}},r.O.j=c=>0===e[c];var c=(c,d)=>{var a,f,b=d[0],t=d[1],o=d[2],n=0;if(b.some((c=>0!==e[c]))){for(a in t)r.o(t,a)&&(r.m[a]=t[a]);if(o)var i=o(r)}for(c&&c(d);n<b.length;n++)f=b[n],r.o(e,f)&&e[f]&&e[f][0](),e[f]=0;return r.O(i)},d=self.webpackChunkcredo_ts_docs=self.webpackChunkcredo_ts_docs||[];d.forEach(c.bind(null,0)),d.push=c.bind(null,d.push.bind(d))})()})(); \ No newline at end of file diff --git a/guides.html b/guides.html index e6704aea..aa43f782 100644 --- a/guides.html +++ b/guides.html @@ -4,13 +4,13 @@ <meta charset="UTF-8"> <meta name="generator" content="Docusaurus v2.3.1"> <title data-rh="true">Intro | Credo - - + +
Version: v0.4.x

Intro

Welcome, to the Aries JavaScript community!

There's no way around it. Working with self-sovereign identity can be difficult. Luckily this documentation's main goal is to make it easy for you. Whether you have a lot of experience building with Aries or non-Aries SSI frameworks, or have never heard of terms like Verifiable Credential, DID, or Agent. This documentation will either help you create a JavaScript based SSI solution yourself, or help you find the right resources in the community to assist you!

So what is Hyperledger Aries Framework JavaScript?

Hyperledger Aries provides a shared, reusable, interoperable tool kit designed for initiatives and solutions focused on creating, transmitting and storing verifiable digital credentials.

— Hyperledger Foundation

There are several Aries frameworks that help you build solutions using verifiable credentials. This one is written in TypeScript and is specifically well suited for Multi-Platform development as it supports Node.js and React Native. We, the community, like to view it as the most accessible framework mostly because it is written in TypeScript, and our maintainers and contributors work to keep developer user experience a top priority.

These docs are not just for the main framework, but also all that surround it. So you'll find general explanations about the concepts used, specific tutorials for common use cases and relevant projects and related repositories. Most of all you'll find solid documentation with lots of code examples and an enthousiastic community that wants to build great stuff together.

Are you ready to get started?

- - + + \ No newline at end of file diff --git a/guides/0.3.html b/guides/0.3.html index 7f22b8fc..ae0b4013 100644 --- a/guides/0.3.html +++ b/guides/0.3.html @@ -4,13 +4,13 @@ Intro | Credo - - + +
Version: v0.3.x

Intro

Welcome, to the Aries JavaScript community!

There's no way around it. Working with self-sovereign identity can be difficult. Luckily this documentation's main goal is to make it easy for you. Whether you have a lot of experience building with Aries or non-Aries SSI frameworks, or have never heard of terms like Verifiable Credential, DID, or Agent. This documentation will either help you create a JavaScript based SSI solution yourself, or help you find the right resources in the community to assist you!

So what is Hyperledger Aries Framework JavaScript?

Hyperledger Aries provides a shared, reusable, interoperable tool kit designed for initiatives and solutions focused on creating, transmitting and storing verifiable digital credentials.

— Hyperledger Foundation

There are several Aries frameworks that help you build solutions using verifiable credentials. This one is written in TypeScript and is specifically well suited for Multi-Platform development as it supports Node.js and React Native. We, the community, like to view it as the most accessible framework mostly because it is written in TypeScript, and our maintainers and contributors work to keep developer user experience a top priority.

These docs are not just for the main framework, but also all that surround it. So you'll find general explanations about the concepts used, specific tutorials for common use cases and relevant projects and related repositories. Most of all you'll find solid documentation with lots of code examples and an enthousiastic community that wants to build great stuff together.

Are you ready to get started?

- - + + \ No newline at end of file diff --git a/guides/0.3/concepts.html b/guides/0.3/concepts.html index c7fff6a2..d198a3fd 100644 --- a/guides/0.3/concepts.html +++ b/guides/0.3/concepts.html @@ -4,15 +4,15 @@ Concepts | Credo - - + + - - + + \ No newline at end of file diff --git a/guides/0.3/concepts/agents.html b/guides/0.3/concepts/agents.html index 33262c8d..9136af63 100644 --- a/guides/0.3/concepts/agents.html +++ b/guides/0.3/concepts/agents.html @@ -4,8 +4,8 @@ Agents | Credo - - + +
@@ -37,7 +37,7 @@ devices these can be used as a more central point for your data.

Useful resources

- - + + \ No newline at end of file diff --git a/guides/0.3/concepts/did-and-didcomm.html b/guides/0.3/concepts/did-and-didcomm.html index d4a67cdb..7edba7c2 100644 --- a/guides/0.3/concepts/did-and-didcomm.html +++ b/guides/0.3/concepts/did-and-didcomm.html @@ -4,8 +4,8 @@ DIDs and DIDComm | Credo - - + +
@@ -24,7 +24,7 @@ securely send a message from as Alice to Bob securely via bluetooth, HTTP, WebSockets, etc.

When working with the tools available inside the Aries JavaScript ecosystem, deep knowledge of DIDComm is not required.

Useful Resources

- - + + \ No newline at end of file diff --git a/guides/0.3/concepts/platform-and-environment.html b/guides/0.3/concepts/platform-and-environment.html index 66a7f8c3..342c356e 100644 --- a/guides/0.3/concepts/platform-and-environment.html +++ b/guides/0.3/concepts/platform-and-environment.html @@ -4,13 +4,13 @@ Platform and Environment | Credo - - + +
Version: v0.3.x

Platform and Environment

Aries framework JavaScript is developed to support a Node.JS and React Native environment. With this it is entirely possible to build an entire SSI ecosystem with Aries Framework JavaScript. This would use Node.JS as an issuer as a verifier, and uses React Native as a holder.

- - + + \ No newline at end of file diff --git a/guides/0.3/ecosystem.html b/guides/0.3/ecosystem.html index bd0340c3..9fa191eb 100644 --- a/guides/0.3/ecosystem.html +++ b/guides/0.3/ecosystem.html @@ -4,14 +4,14 @@ The Aries JavaScript Ecosystem | Credo - - + +
Version: v0.3.x

The Aries JavaScript Ecosystem

The Aries JavaScript ecosystem includes various components that are spread across multiple repositories. In this section we'll go over what these components are and how the relate to one another.

Repositories

Currently, Aries JavaScript is composed out of three separate repositories:

  1. Aries Framework JavaScript
  2. Aries Framework JavaScript Extensions
  3. Aries Mobile Agent React Native (Bifold)

Documentation

You can find their documentation here:

  1. Aries Framework JavaScript
  2. Aries Framework JavaScript Extensions
  3. Aries Mobile Agent React Native (Bifold)

Aries Framework JavaScript

Aries Framework JavaScript (AFJ) is at the core of the Aries JavaScript ecosystem. AFJ provides all the functionality related to cryptography, storage, messaging and more that is required

Contributing in the Aries JS Ecosystem

Consider attending our weekly meetings to become aware of the current development cadence.

Developer Contributions

Each project maintains its own CONTRIBUTING guidance:

Each project has a significant set of developer conventions, checklists, templates, and actions to provide guidance and boundaries for a contribution. Consider looking at previous issues and their corresponding PRs to get a sense of the latest.

- - + + \ No newline at end of file diff --git a/guides/0.3/extensions.html b/guides/0.3/extensions.html index ba0443d9..8f3215fd 100644 --- a/guides/0.3/extensions.html +++ b/guides/0.3/extensions.html @@ -4,13 +4,13 @@ Extensions | Credo - - + +
Version: v0.3.x

Extensions

Aries Framework JavaScript Extensions is an extensions repository to Aries Framework JavaScript (AFJ). It hosts libraries built on top of Aries Framework JavaScript that don't necessarily belong to the core of the project.

Currently, there are four packages in the extension repository. Example extension libraries include React Hooks for AFJ and a REST API wrapper.

PackageVersionDescription
@aries-framework/redux-store@aries-framework/redux-store versionRedux toolkit wrapper around Aries Framework JavaScript
@aries-framework/rest@aries-framework/rest versionRest endpoint wrapper for using your agent over HTTP
@aries-framework/react-hooks@aries-framework/react-hooks versionReact Hooks for data handling and agent interaction
@aries-framework/push-notifications@aries-framework/push-notifications versionPush notification plugin for Aries Framework JavaScript
- - + + \ No newline at end of file diff --git a/guides/0.3/extensions/push-notifications.html b/guides/0.3/extensions/push-notifications.html index 63eb9ef9..2a1fab8d 100644 --- a/guides/0.3/extensions/push-notifications.html +++ b/guides/0.3/extensions/push-notifications.html @@ -4,13 +4,13 @@ Push Notifications | Credo - - + +
Version: v0.3.x

Push Notifications

The Push Notifications plugin package provides a way for you to register your APNs and Firebase push notification token at an agent, allowing you to use push notifications directly from AFJ.

- - + + \ No newline at end of file diff --git a/guides/0.3/extensions/push-notifications/setup.html b/guides/0.3/extensions/push-notifications/setup.html index 589f52c2..3eca1562 100644 --- a/guides/0.3/extensions/push-notifications/setup.html +++ b/guides/0.3/extensions/push-notifications/setup.html @@ -4,13 +4,13 @@ Setup | Credo - - + +
Version: v0.3.x

Setup

To use the Push Notifications package, you need to have set up Aries Framework JavaScript according to the AFJ repository (See Getting Started section).

Then add the Push Notifications plugin package to your project:

npm i @aries-framework/push-notifications
- - + + \ No newline at end of file diff --git a/guides/0.3/extensions/react-hooks.html b/guides/0.3/extensions/react-hooks.html index 44d8cc6e..50335bac 100644 --- a/guides/0.3/extensions/react-hooks.html +++ b/guides/0.3/extensions/react-hooks.html @@ -4,13 +4,13 @@ React Hooks | Credo - - + +
Version: v0.3.x

React Hooks

The React Hooks package exposes useful React hooks that allow you to easily interact with AFJ from a React client application.

These hooks provide a simple way to query agent data in a client application, allowing you to focus on the user interface.

- - + + \ No newline at end of file diff --git a/guides/0.3/extensions/react-hooks/setup.html b/guides/0.3/extensions/react-hooks/setup.html index f8fd1981..6224885d 100644 --- a/guides/0.3/extensions/react-hooks/setup.html +++ b/guides/0.3/extensions/react-hooks/setup.html @@ -4,13 +4,13 @@ Setup | Credo - - + +
Version: v0.3.x

Setup

To use the React Hooks package, you need to have set up Aries Framework JavaScript according to the AFJ repository (See Getting Started section).

Installation

To add the React Hooks package to your project (after completing the setup step above), simply run:

npm i @aries-framework/react-hooks
- - + + \ No newline at end of file diff --git a/guides/0.3/extensions/redux-store.html b/guides/0.3/extensions/redux-store.html index 42caf289..d54a0ed4 100644 --- a/guides/0.3/extensions/redux-store.html +++ b/guides/0.3/extensions/redux-store.html @@ -4,13 +4,13 @@ Redux Store | Credo - - + +
Version: v0.3.x

Redux Store

The Redux Store is an implementation of state management that can be used to build React & React Native SSI clients using AFJ.

The Redux Store allows you to integrate state management for the most important parts of using AFJ in a client application (mediation, connections, credentials and proofs), allowing you to sync UI state with the state of the agent as it interacts with other agents through the framework.

- - + + \ No newline at end of file diff --git a/guides/0.3/extensions/redux-store/setup.html b/guides/0.3/extensions/redux-store/setup.html index 3ef25d26..e731fcab 100644 --- a/guides/0.3/extensions/redux-store/setup.html +++ b/guides/0.3/extensions/redux-store/setup.html @@ -4,13 +4,13 @@ Setup | Credo - - + +
Version: v0.3.x

Setup

To use the Redux Store package, you need to have set up Aries Framework JavaScript according to the AFJ repository (See Getting Started section).

Installation

To add the Redux Store package to your project (after completing the setup step above), simply run:

npm i @aries-framework/redux-store
- - + + \ No newline at end of file diff --git a/guides/0.3/extensions/rest.html b/guides/0.3/extensions/rest.html index 9ff988a5..72719cc2 100644 --- a/guides/0.3/extensions/rest.html +++ b/guides/0.3/extensions/rest.html @@ -4,13 +4,13 @@ REST API | Credo - - + +
Version: v0.3.x

REST API

The Aries Framework JavaScript (AFJ) REST API provides simple RESTful endpoints for AFJ methods, to allow you stand up an agent for communication over the internet instantly. You simply provide your agent configuration. The REST endpoints allow you to interact with your agent over HTTP and WebSockets.

The AFJ REST API is the most convenient way for self-sovereign identity (SSI) developers to interact with SSI agents.

  • Endpoints to create connections, issue credentials, and request proofs.
  • 💻 CLI that makes it super easy to start an instance of the REST API.
  • 🌐 Interoperable with all major Aries implementations.
- - + + \ No newline at end of file diff --git a/guides/0.3/extensions/rest/setup.html b/guides/0.3/extensions/rest/setup.html index d6896154..65b4c521 100644 --- a/guides/0.3/extensions/rest/setup.html +++ b/guides/0.3/extensions/rest/setup.html @@ -4,14 +4,14 @@ Setup | Credo - - + +
Version: v0.3.x

Setup

This guide assumes you have followed the install guides for the framework (See Getting Started section) for your platform and a valid Node.js project setup.

Quick Setup

Using the CLI is the easiest way to get started with REST API.

You can do this directly on your machine.

Directly on computer

After installing and confirming that Libindy is installed, simply run:

npx -p @aries-framework/rest afj-rest start \
--label "AFJ Rest" \
--wallet-id "walletId" \
--wallet-key "walletKey" \
--endpoint http://localhost:5000 \
--admin-port 3000 \
--outbound-transport http \
--inbound-transport http 5000

The REST API provides an OpenAPI schema that can easily be viewed using the SwaggerUI that is provided with the server. The endpoint documentation can be viewed at the /docs endpoint (e.g. http://localhost:3000/docs).

Configuration

To find out all available configuration options from the CLI, you can run the CLI command with --help. This will print a full list of all available options.

npx -p @aries-framework/rest afj-rest start --help
- - + + \ No newline at end of file diff --git a/guides/0.3/getting-started.html b/guides/0.3/getting-started.html index 707c7de7..63678f41 100644 --- a/guides/0.3/getting-started.html +++ b/guides/0.3/getting-started.html @@ -4,13 +4,13 @@ Getting started | Credo - - + +
Version: v0.3.x

Getting started

In this section we will go over everything you need to get started on a technical level. First there are specific installation guides for NodeJS and React Native. Aries JavaScript works for creating both server-side application (commonly but not always issuer and verifier) and mobile applications (commonly holder apps). Depending on your use case you can follow the installation guides for NodeJS, React Native, or both.

After the installation of your prerequisites is complete, we'll walk you through the initial setup of the framework.

- - + + \ No newline at end of file diff --git a/guides/0.3/getting-started/installation.html b/guides/0.3/getting-started/installation.html index 93c7a816..b2c18cb8 100644 --- a/guides/0.3/getting-started/installation.html +++ b/guides/0.3/getting-started/installation.html @@ -4,13 +4,13 @@ Installation | Credo - - + +
Version: v0.3.x

Installation

In order to work with the Aries JavaScript Ecosystem, you first have to setup your work environment. We strive to create an easy and accessible ecosystem, so the prerequisites are not too large.

Feel free to click through all the installation guides and setup, if you're looking for specifics however, you can see a summary below.

Very simply put:

Do you want to build a mobile app?

Do you want to build a server-side app?

- - + + \ No newline at end of file diff --git a/guides/0.3/getting-started/installation/nodejs.html b/guides/0.3/getting-started/installation/nodejs.html index da16b6ac..6b2a95a8 100644 --- a/guides/0.3/getting-started/installation/nodejs.html +++ b/guides/0.3/getting-started/installation/nodejs.html @@ -4,15 +4,15 @@ NodeJS | Credo - - + +
Version: v0.3.x

NodeJS

To work with Aries Framework JavaScript we need to install some dependencies. We will go over the specific installation process for each platform. Ga ahead an pick your system of choice to get started!

The specific dependencies that you will install are the following. They will come up in the installation guides, but are summarized here to give insight into what you will install.

- - + + \ No newline at end of file diff --git a/guides/0.3/getting-started/installation/nodejs/apple-arm.html b/guides/0.3/getting-started/installation/nodejs/apple-arm.html index ccd1e43e..b166ef8e 100644 --- a/guides/0.3/getting-started/installation/nodejs/apple-arm.html +++ b/guides/0.3/getting-started/installation/nodejs/apple-arm.html @@ -4,8 +4,8 @@ Apple (Arm) | Credo - - + +
@@ -28,7 +28,7 @@ This is something that has to be done as the library is not properly signed.

Lastly the library just has to be moved to the correct location.

If you downloaded the file in another directory, please change the first part of this command

sudo mv ~/Downloads/libindy.dylib /usr/local/lib/

Confirm installation

To see whether the indy-sdk is properly installed, run the following command and it should not error.

npx -p @aries-framework/node@^0.3 is-indy-installed
- - + + \ No newline at end of file diff --git a/guides/0.3/getting-started/installation/nodejs/apple-intel.html b/guides/0.3/getting-started/installation/nodejs/apple-intel.html index aa402ca5..11b5c42c 100644 --- a/guides/0.3/getting-started/installation/nodejs/apple-intel.html +++ b/guides/0.3/getting-started/installation/nodejs/apple-intel.html @@ -4,8 +4,8 @@ Apple (Intel) | Credo - - + +
@@ -22,7 +22,7 @@ tap for libindy and it will also install all of the required dependencies.

brew install blu3beri/libindy/libindy

Confirm installation

To see whether the indy-sdk is properly installed, run the following command and it should not error.

npx -p @aries-framework/node@^0.3 is-indy-installed
- - + + \ No newline at end of file diff --git a/guides/0.3/getting-started/installation/nodejs/linux.html b/guides/0.3/getting-started/installation/nodejs/linux.html index b7dec7a3..0c87bc9a 100644 --- a/guides/0.3/getting-started/installation/nodejs/linux.html +++ b/guides/0.3/getting-started/installation/nodejs/linux.html @@ -4,8 +4,8 @@ Linux | Credo - - + +
@@ -27,7 +27,7 @@ Rust.

With Rust, we can now build the indy-sdk from source.

First, clone the repository in a temporary directory:

git clone https://github.com/hyperledger/indy-sdk

Secondly, go to the correct directory

cd indy-sdk/libindy

Third, build the library

cargo build --release

Lastly, move the library to the correct location

sudo mv target/release/libindy.so /usr/lib/libindy.so

Confirm installation

To see whether the indy-sdk is properly installed, run the following command and it should not error.

npx -p @aries-framework/node@^0.3 is-indy-installed
- - + + \ No newline at end of file diff --git a/guides/0.3/getting-started/installation/nodejs/windows.html b/guides/0.3/getting-started/installation/nodejs/windows.html index 4bdbb87f..399289b7 100644 --- a/guides/0.3/getting-started/installation/nodejs/windows.html +++ b/guides/0.3/getting-started/installation/nodejs/windows.html @@ -4,8 +4,8 @@ Windows | Credo - - + +
@@ -21,7 +21,7 @@ System Variables. The name MUST be LD_LIBRARY_PATH and the value MUST be the path to the extracted libraries.

Confirm installation

To see whether the indy-sdk is properly installed, run the following command and it should not error.

npx -p @aries-framework/node@^0.3 is-indy-installed
- - + + \ No newline at end of file diff --git a/guides/0.3/getting-started/installation/react-native.html b/guides/0.3/getting-started/installation/react-native.html index d2ed0395..b004410c 100644 --- a/guides/0.3/getting-started/installation/react-native.html +++ b/guides/0.3/getting-started/installation/react-native.html @@ -4,14 +4,14 @@ React Native | Credo - - + +
Version: v0.3.x

React Native

The setup for React Native is rather different than Node.js. We do not have to install dependencies on the host-platform, but for the build target. This would be the indy-sdk for Android and iOS.

Known Errors

Add setup of external storage permissions (Android)

If you find the following error when using this package:

2020-01-27 16:25:02.300 9955-10044/com.usereactnativeindysdk E/log_panics: thread 'unnamed' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 13, kind: PermissionDenied, message: "Permission denied" }': libcore/result.rs:945

Modify onCreate method in MainActivity of your project where you want to use this library in a following way:

public class MainActivity extends ReactActivity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
File externalFilesDir = getExternalFilesDir(null);
String path = externalFilesDir.getAbsolutePath();
System.out.println("externalFilesDir=" + path);

try {
Os.setenv("EXTERNAL_STORAGE", path, true);
} catch (ErrnoException e) {
e.printStackTrace();
}
...
}
...
}

This should resolve the issue with permissions.

- - + + \ No newline at end of file diff --git a/guides/0.3/getting-started/installation/react-native/android.html b/guides/0.3/getting-started/installation/react-native/android.html index aeb1437c..6555d417 100644 --- a/guides/0.3/getting-started/installation/react-native/android.html +++ b/guides/0.3/getting-started/installation/react-native/android.html @@ -4,8 +4,8 @@ Android | Credo - - + +
@@ -16,7 +16,7 @@ for everything to work properly

This guide presumes that you execute every command from the root of your project

  1. create a jniLibs directory
mkdir android/app/src/main/jniLibs
  1. create the architecture specific sub-directories
mkdir android/app/src/main/jniLibs/arm64-v8a
mkdir android/app/src/main/jniLibs/armeabi-v7a
mkdir android/app/src/main/jniLibs/x86
mkdir android/app/src/main/jniLibs/x86_64
  1. Downlaod the indy-sdk libraries to the correct location
arm64-v8a
curl https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_arm64_1.16.0.zip --output arm64.zip
unzip arm64.zip
mv libindy_arm64/lib/libindy.so android/app/src/main/jniLibs/arm64-v8a/libindy.so
rm arm64.zip
armeabi-v7a
curl https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_armv7_1.16.0.zip --output armv7.zip
unzip armv7.zip
mv libindy_armv7/lib/libindy.so android/app/src/main/jniLibs/armeabi-v7a/libindy.so
rm armv7.zip
x86
curl https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_x86_1.16.0.zip --output x86.zip
unzip x86.zip
mv libindy_x86/lib/libindy.so android/app/src/main/jniLibs/x86/libindy.so
rm x86.zip
x86_64
curl https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_x86_64_1.16.0.zip --output x86_64.zip
unzip x86_64.zip
mv libindy_x86_64/lib/libindy.so android/app/src/main/jniLibs/x86_64/libindy.so
rm x86_64.zip
  1. Download the JNA libraries
arm64-v8a
curl -LO https://github.com/java-native-access/jna/raw/5.5.0/lib/native/android-aarch64.jar

jar xf android-aarch64.jar
mv libjnidispatch.so android/app/src/main/jniLibs/arm64-v8a/libjnidispatch.so
rm android-aarch64.jar libjnidispatch.so
armeabi-v7a
curl -LO https://github.com/java-native-access/jna/raw/5.5.0/lib/native/android-armv7.jar

jar xf android-armv7.jar
mv libjnidispatch.so android/app/src/main/jniLibs/armeabi-v7a/libjnidispatch.so
rm android-armv7.jar libjnidispatch.so
x86
curl -LO https://github.com/java-native-access/jna/raw/5.5.0/lib/native/android-x86.jar

jar xf android-x86.jar
mv libjnidispatch.so android/app/src/main/jniLibs/x86/libjnidispatch.so
rm android-x86.jar libjnidispatch.so
x86_64
curl -LO https://github.com/java-native-access/jna/raw/5.5.0/lib/native/android-x86-64.jar

jar xf android-x86-64.jar
mv libjnidispatch.so android/app/src/main/jniLibs/x86_64/libjnidispatch.so
rm android-x86-64.jar libjnidispatch.so
  1. Load the library inside the MainActivity.java
MainActivity.java
...
import android.os.Bundle;
import android.system.ErrnoException;
import android.system.Os;
import java.io.File;
...

public class MainActivity extends ReactActivity {
...

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

try {
Os.setenv("EXTERNAL_STORAGE", getExternalFilesDir(null).getAbsolutePath(), true);
System.loadLibrary("indy");
} catch (ErrnoException e) {
e.printStackTrace();
}
}
}
  1. Hermes

Hermes is required in order to perform ledger operations using the Indy SDK.

For more info, see this Indy-SDK issue.

React Native >= 0.70.0

Hermes is enabled by default

React Native 0.62.0 - 0.69.5

Add or adjust the following in the android/app/build.gradle to:

project.ext.react = [
enableHermes: true, // clean and rebuild if changing
]

React Native <= 0.61.5

Hermes is not required for older versions of React Native

- - + + \ No newline at end of file diff --git a/guides/0.3/getting-started/installation/react-native/ios.html b/guides/0.3/getting-started/installation/react-native/ios.html index 31a86cf5..c27d8150 100644 --- a/guides/0.3/getting-started/installation/react-native/ios.html +++ b/guides/0.3/getting-started/installation/react-native/ios.html @@ -4,13 +4,13 @@ iOS | Credo - - + +
Version: v0.3.x

iOS

  1. Add the following lines to the start of your Podfile (ios/Podfile).

If a custom source is defined we also need to define the default source (which is implicit if no source is specified), explicitly:

source 'https://github.com/hyperledger/indy-sdk-react-native'
source 'https://cdn.cocoapods.org'
  1. Install the Latest CocoaPods dependencies:
cd ios
pod install
pod update Indy
  1. Configure Bitcode to no in both the project and targets

  2. Set Build Libraries for Distribution to yes in both the project and targets

This is required due to mismatching Swift versions between the Indy SDK and the application, as described in this StackOverflow Answer

  1. iOS Simulators are currently not supported and should be disabled

  2. Hermes

Hermes is recommended on iOS for application performance improvements

React Native >= 0.70.0

Hermes is enabled by default

React Native 0.64.0 - 0.69.5

Add or adjust the following in the ios/Podfile to:

     :path => config[:reactNativePath],
# to enable hermes on iOS, change `false` to `true` and then install pods
# By default, Hermes is disabled on Old Architecture, and enabled on New Architecture.
# You can enable/disable it manually by replacing `flags[:hermes_enabled]` with `true` or `false`.
- :hermes_enabled => flags[:hermes_enabled],
+ :hermes_enabled => true
)

React Native <= 0.64.0

Hermes is not required for older versions of React Native

- - + + \ No newline at end of file diff --git a/guides/0.3/getting-started/prerequisites.html b/guides/0.3/getting-started/prerequisites.html index a34a5793..f668cb09 100644 --- a/guides/0.3/getting-started/prerequisites.html +++ b/guides/0.3/getting-started/prerequisites.html @@ -4,13 +4,13 @@ Installation | Credo - - + +
Version: v0.3.x

Installation

In order to work with the Aries JavaScript Ecosystem, you first have to setup your work environment. We strive to create an easy and accessible ecosystem, so the prerequisites are not too large.

Feel free to click through all the installation guides and setup, if you're looking for specifics however, you can see a summary below.

Very simply put:

Do you want to build a mobile app?

Do you want to build a server-side app?

- - + + \ No newline at end of file diff --git a/guides/0.3/getting-started/set-up.html b/guides/0.3/getting-started/set-up.html index 23243d3f..8d40b76e 100644 --- a/guides/0.3/getting-started/set-up.html +++ b/guides/0.3/getting-started/set-up.html @@ -4,8 +4,8 @@ Setup | Credo - - + +
@@ -29,7 +29,7 @@ more depth about the reasons for this in the mediation section TODO: mediator section

import { WsOutboundTransport, HttpOutboundTransport } from '@aries-framework/core'

agent.registerOutboundTransport(new WsOutboundTransport())
agent.registerOutboundTransport(new HttpOutboundTransport())

Initializing the agent

// ...

const agent = new Agent({
config,
dependencies: agentDependencies,
})

const initialize = async () => await agent.initialize().catch(console.error)

Full code snippet

import type { InitConfig } from '@aries-framework/core'
import { Agent, HttpOutboundTransport } from '@aries-framework/core'
import { agentDependencies, HttpInboundTransport } from '@aries-framework/node'

// The agent initialization configuration
const config: InitConfig = {
label: 'docs-nodejs-agent',
walletConfig: {
id: 'wallet-id',
key: 'testkey0000000000000000000000000',
},
}

// Creating an agent instance
const agent = new Agent({
config,
dependencies: agentDependencies,
})

// Registering the required in- and outbound transports
agent.registerOutboundTransport(new HttpOutboundTransport())
agent.registerInboundTransport(new HttpInboundTransport({ port: 3000 }))

// Function to initialize the agent
const initialize = async () => await agent.initialize().catch(console.error)

Useful resources

- - + + \ No newline at end of file diff --git a/guides/0.3/tutorials.html b/guides/0.3/tutorials.html index 9b0e0e88..9a0eb8c1 100644 --- a/guides/0.3/tutorials.html +++ b/guides/0.3/tutorials.html @@ -4,15 +4,15 @@ Tutorials | Credo - - + +
- - + + \ No newline at end of file diff --git a/guides/0.3/tutorials/agent-config.html b/guides/0.3/tutorials/agent-config.html index e21eeed8..5012d4a2 100644 --- a/guides/0.3/tutorials/agent-config.html +++ b/guides/0.3/tutorials/agent-config.html @@ -4,8 +4,8 @@ Agent Config | Credo - - + +
@@ -88,7 +88,7 @@ this. It MUST not be used got any base of authenticity.

Type: string

example
connectionImageUrl: 'https://picsum.photos/200'

autoUpdateStorageOnStartup

Whether the storage should automatically be updated when a newer version of Aries Framework JavaScript is used.

Type: boolean

Default: false

example
autoUpdateStorageOnStartup: true

- - + + \ No newline at end of file diff --git a/guides/0.3/tutorials/agent-config/logging.html b/guides/0.3/tutorials/agent-config/logging.html index 95f13d91..23214e14 100644 --- a/guides/0.3/tutorials/agent-config/logging.html +++ b/guides/0.3/tutorials/agent-config/logging.html @@ -4,14 +4,14 @@ Logging | Credo - - + +
Version: v0.3.x

Logging

Using the Default ConsoleLogger

To enable logging inside the framework a logger must be passed to the agent config. A simple ConsoleLogger can be imported from the framework.

import type { InitConfig } from '@aries-framework/core'
import { ConsoleLogger, LogLevel } from '@aries-framework/core'

const agentConfig: InitConfig = {
// ... other config properties ...
logger: new ConsoleLogger(LogLevel.info),
}

Creating your own Logger

For more advanced use cases the Logger interface can be implemented. See the example below.

import { Logger, LogLevel } from '@aries-framework/core'

class MyCustomLogger implements Logger {
public logLevel: LogLevel

public constructor(logLevel: LogLevel = LogLevel.off) {
this.logLevel = logLevel
}

public test(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public trace(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public debug(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public info(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public warn(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public error(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public fatal(message: string, data?: Record<string, any>): void {
console.log(message, data)
}
}

Indy Logs

To enable logging in the underlying Rust framework, either setLogger or setDefaultLogger must be called on the indy dependency, as seen here.

caution

The setLogger and setDefaultLogger methods have only been implemented in the Node.JS wrapper of the indy sdk. This won't work when importing from @aries-framework/react-native

The easiest way to do this from AFJ is through the indy property of agentDependencies.

import { agentDependencies } from '@aries-framework/node'
agentDependencies.indy.setDefaultLogger('trace')

// OR

agentDependencies.indy.setLogger((level, target, message, modulePath, file, line) => {
console.log('libindy said:', level, target, message, modulePath, file, line)
})

WARNING: You can only set the logger once. Call indy_set_default_logger, indy_set_logger, not both. Once it's been set, libindy won't let you change it.

You can also set the environment variable RUST_LOG to log at specified log levels. See https://crates.io/crates/env_logger for more information.

- - + + \ No newline at end of file diff --git a/guides/0.3/tutorials/create-a-connection.html b/guides/0.3/tutorials/create-a-connection.html index 8b07e8f2..d789e34f 100644 --- a/guides/0.3/tutorials/create-a-connection.html +++ b/guides/0.3/tutorials/create-a-connection.html @@ -4,8 +4,8 @@ Create a connection | Credo - - + +
@@ -39,7 +39,7 @@ should be editted to fit your use case. The walletConfig.key must be changed as it can lead to other people knowing your "password" to your wallet.

import {
Agent,
InitConfig,
ConnectionEventTypes,
ConnectionStateChangedEvent,
WsOutboundTransport,
HttpOutboundTransport,
DidExchangeState,
OutOfBandRecord,
} from '@aries-framework/core'
import { agentDependencies, HttpInboundTransport } from '@aries-framework/node'

const initializeBobAgent = async () => {
// Simple agent configuration. This sets some basic fields like the wallet
// configuration and the label. It also sets the mediator invitation url,
// because this is most likely required in a mobile environment.
const config: InitConfig = {
label: 'demo-agent-bob',
walletConfig: {
id: 'mainBob',
key: 'demoagentbob00000000000000000000',
},
autoAcceptConnections: true,
}

// A new instance of an agent is created here
const agent = new Agent({ config, dependencies: agentDependencies })

// Register a simple `WebSocket` outbound transport
agent.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
agent.registerOutboundTransport(new HttpOutboundTransport())

// Initialize the agent
await agent.initialize()

return agent
}

const initializeAcmeAgent = async () => {
// Simple agent configuration. This sets some basic fields like the wallet
// configuration and the label.
const config: InitConfig = {
label: 'demo-agent-acme',
walletConfig: {
id: 'mainAcme',
key: 'demoagentacme0000000000000000000',
},
autoAcceptConnections: true,
endpoints: ['http://localhost:3001'],
}

// A new instance of an agent is created here
const agent = new Agent({ config, dependencies: agentDependencies })

// Register a simple `WebSocket` outbound transport
agent.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
agent.registerOutboundTransport(new HttpOutboundTransport())

// Register a simple `Http` inbound transport
agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))

// Initialize the agent
await agent.initialize()

return agent
}

const createNewInvitation = async (agent: Agent) => {
const outOfBandRecord = await agent.oob.createInvitation()

return {
invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),
outOfBandRecord,
}
}

const createLegacyInvitation = async (agent: Agent) => {
const { invitation } = await agent.oob.createLegacyInvitation()

return invitation.toUrl({ domain: 'https://example.org' })
}

const receiveInvitation = async (agent: Agent, invitationUrl: string) => {
const { outOfBandRecord } = await agent.oob.receiveInvitationFromUrl(invitationUrl)

return outOfBandRecord
}

const setupConnectionListener = (agent: Agent, outOfBandRecord: OutOfBandRecord, cb: (...args: any) => void) => {
agent.events.on<ConnectionStateChangedEvent>(ConnectionEventTypes.ConnectionStateChanged, ({ payload }) => {
if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return
if (payload.connectionRecord.state === DidExchangeState.Completed) {
// the connection is now ready for usage in other protocols!
console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)

// Custom business logic can be included here
// In this example we can send a basic message to the connection, but
// anything is possible
cb()

// We exit the flow
process.exit(0)
}
})
}


const run = async () => {
console.log('Initializing Bob agent...')
const bobAgent = await initializeBobAgent()
console.log('Initializing Acme agent...')
const acmeAgent = await initializeAcmeAgent()

console.log('Creating the invitation as Acme...')
const { outOfBandRecord, invitationUrl } = await createNewInvitation(acmeAgent)

console.log('Listening for connection changes...')
setupConnectionListener(acmeAgent, outOfBandRecord, () =>
console.log('We now have an active connection to use in the following tutorials')
)

console.log('Accepting the invitation as Bob...')
await receiveInvitation(bobAgent, invitationUrl)
}

export default run

void run()

Useful resources

- - + + \ No newline at end of file diff --git a/guides/0.3/tutorials/issue-a-credential.html b/guides/0.3/tutorials/issue-a-credential.html index e083b388..e322b331 100644 --- a/guides/0.3/tutorials/issue-a-credential.html +++ b/guides/0.3/tutorials/issue-a-credential.html @@ -4,8 +4,8 @@ Issue a credential | Credo - - + +
@@ -63,7 +63,7 @@ lead to other people knowing your "password" to your wallet.

import {
InitConfig,
Agent,
WsOutboundTransport,
HttpOutboundTransport,
ConnectionEventTypes,
ConnectionStateChangedEvent,
DidExchangeState,
AutoAcceptCredential,
CredentialEventTypes,
CredentialState,
CredentialStateChangedEvent,
OutOfBandRecord,
} from '@aries-framework/core'
import { agentDependencies, HttpInboundTransport } from '@aries-framework/node'
import { Schema } from 'indy-sdk'
import fetch from 'node-fetch'

const getGenesisTransaction = async (url: string) => {
// Legacy code has a small issue with the call-signature from node-fetch
// @ts-ignore
const response = await fetch(url)

return await response.text()
}

const initializeHolderAgent = async () => {
const genesisTransactionsBCovrinTestNet = await getGenesisTransaction('http://test.bcovrin.vonx.io/genesis')
// Simple agent configuration. This sets some basic fields like the wallet
// configuration and the label. It also sets the mediator invitation url,
// because this is most likely required in a mobile environment.
const config: InitConfig = {
label: 'demo-agent-holder',
walletConfig: {
id: 'demo-agent-holder',
key: 'demoagentholder00000000000000000',
},
indyLedgers: [
{
id: 'bcovrin-test-net',
isProduction: false,
indyNamespace: 'bcovrin:test',
genesisTransactions: genesisTransactionsBCovrinTestNet,
},
],
autoAcceptCredentials: AutoAcceptCredential.ContentApproved,
autoAcceptConnections: true,
endpoints: ['http://localhost:3002'],
}

// A new instance of an agent is created here
const agent = new Agent({ config, dependencies: agentDependencies })

// Register a simple `WebSocket` outbound transport
agent.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
agent.registerOutboundTransport(new HttpOutboundTransport())

// Register a simple `Http` inbound transport
agent.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))

// Initialize the agent
await agent.initialize()

return agent
}

const initializeIssuerAgent = async () => {
const genesisTransactionsBCovrinTestNet = await getGenesisTransaction('http://test.bcovrin.vonx.io/genesis')
// Simple agent configuration. This sets some basic fields like the wallet
// configuration and the label.
const config: InitConfig = {
label: 'demo-agent-issuer',
walletConfig: {
id: 'demo-agent-issuer',
key: 'demoagentissuer00000000000000000',
},
publicDidSeed: 'demoissuerdidseed000000000000000',
indyLedgers: [
{
id: 'bcovrin-test-net',
isProduction: false,
indyNamespace: 'bcovrin:test',
genesisTransactions: genesisTransactionsBCovrinTestNet,
},
],
autoAcceptCredentials: AutoAcceptCredential.ContentApproved,
autoAcceptConnections: true,
endpoints: ['http://localhost:3001'],
}

// A new instance of an agent is created here
const agent = new Agent({ config, dependencies: agentDependencies })

// Register a simple `WebSocket` outbound transport
agent.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
agent.registerOutboundTransport(new HttpOutboundTransport())

// Register a simple `Http` inbound transport
agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))

// Initialize the agent
await agent.initialize()

return agent
}

const registerSchema = async (issuer: Agent) =>
issuer.ledger.registerSchema({ attributes: ['name', 'age'], name: 'Identity', version: '1.0' })

const registerCredentialDefinition = async (issuer: Agent, schema: Schema) =>
issuer.ledger.registerCredentialDefinition({ schema, supportRevocation: false, tag: 'default' })

const setupCredentialListener = (holder: Agent) => {
holder.events.on<CredentialStateChangedEvent>(CredentialEventTypes.CredentialStateChanged, async ({ payload }) => {
switch (payload.credentialRecord.state) {
case CredentialState.OfferReceived:
console.log('received a credential')
// custom logic here
await holder.credentials.acceptOffer({ credentialRecordId: payload.credentialRecord.id })
case CredentialState.Done:
console.log(`Credential for credential id ${payload.credentialRecord.id} is accepted`)
// For demo purposes we exit the program here.
process.exit(0)
}
})
}

const issueCredential = async (issuer: Agent, credentialDefinitionId: string, connectionId: string) =>
issuer.credentials.offerCredential({
protocolVersion: 'v1',
connectionId,
credentialFormats: {
indy: {
credentialDefinitionId,
attributes: [
{ name: 'name', value: 'Jane Doe' },
{ name: 'age', value: '23' },
],
},
},
})

const createNewInvitation = async (issuer: Agent) => {
const outOfBandRecord = await issuer.oob.createInvitation()

return {
invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),
outOfBandRecord,
}
}

const receiveInvitation = async (holder: Agent, invitationUrl: string) => {
const { outOfBandRecord } = await holder.oob.receiveInvitationFromUrl(invitationUrl)

return outOfBandRecord
}

const setupConnectionListener = (
issuer: Agent,
outOfBandRecord: OutOfBandRecord,
cb: (...args: any) => Promise<unknown>
) => {
issuer.events.on<ConnectionStateChangedEvent>(ConnectionEventTypes.ConnectionStateChanged, async ({ payload }) => {
if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return
if (payload.connectionRecord.state === DidExchangeState.Completed) {
// the connection is now ready for usage in other protocols!
console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)

// Custom business logic can be included here
// In this example we can send a basic message to the connection, but
// anything is possible
await cb(payload.connectionRecord.id)
}
})
}

const flow = (issuer: Agent) => async (connectionId: string) => {
console.log('Registering the schema...')
const schema = await registerSchema(issuer)
console.log('Registering the credential definition...')
const credentialDefinition = await registerCredentialDefinition(issuer, schema)
console.log('Issuing the credential...')
await issueCredential(issuer, credentialDefinition.id, connectionId)
}

const run = async () => {
console.log('Initializing the holder...')
const holder = await initializeHolderAgent()
console.log('Initializing the issuer...')
const issuer = await initializeIssuerAgent()

console.log('Initializing the credential listener...')
setupCredentialListener(holder)

console.log('Initializing the connection...')
const { outOfBandRecord, invitationUrl } = await createNewInvitation(issuer)
setupConnectionListener(issuer, outOfBandRecord, flow(issuer))
await receiveInvitation(holder, invitationUrl)
}

void run()

Useful resources

Side notes

As of v0.3.0 you should keep in mind that:

  1. When when attempting to register a credential that already exists on the ledger but is not in your wallet, AFJ will throw an error (as opposed to returning the credential definition from the ledger in prior versions)
  2. Attempting to register a new credential definition that is already in the wallet in AFJ will return the stored definition without attempting to register it on the ledger.

These choices are intentional. In case 1, it is assumed that this workflow is a mistake. In case 2. it is assumed that having registered the credential on the ledger is implied.

- - + + \ No newline at end of file diff --git a/guides/0.3/tutorials/postgres-database-nodejs.html b/guides/0.3/tutorials/postgres-database-nodejs.html index 8dbadbf0..f17d39c4 100644 --- a/guides/0.3/tutorials/postgres-database-nodejs.html +++ b/guides/0.3/tutorials/postgres-database-nodejs.html @@ -4,13 +4,13 @@ Using PostgreSQL as Database in Node.js | Credo - - + +
Version: v0.3.x

Using PostgreSQL as Database in Node.js

By default the Indy SDK will use an SQLite database for storage. In mobile environments this is sufficient and allows us to keep storage local to the device, but in server environments we oftentimes want a more scalable storage solution. By leveraging the PostgreSQL plugin for Indy SDK we can use PostgreSQL as a storage solution instead of SQLite.

This document describes the installation process of the Postgres plugin for IndySDK and how you need to configure AFJ to use it.

Installation of the Postgres Plugin

For installation of the Postgres plugin, please refer to the platform specific guides:

Using the Postgres Plugin in AFJ

import { Agent, InitConfig } from '@aries-framework/core'
import { agentDependencies, IndyPostgresStorageConfig, loadPostgresPlugin, WalletScheme } from '@aries-framework/node'

// IndyPostgresStorageConfig defines interface for the Postgres plugin configuration.
const storageConfig: IndyPostgresStorageConfig = {
type: 'postgres_storage',
config: {
url: 'localhost:5432',
wallet_scheme: WalletScheme.DatabasePerWallet,
},
credentials: {
account: 'postgres',
password: 'postgres',
admin_account: 'postgres',
admin_password: 'postgres',
},
}

// load the postgres wallet plugin before agent initialization
loadPostgresPlugin(storageConfig.config, storageConfig.credentials)

const agentConfig: InitConfig = {
label: 'My Agent',
// walletConfig.id and walletConfig.key are still required
walletConfig: {
id: 'walletId',
key: 'testKey0000000000000000000000000',
// storage is added and defines the postgres plugin configuration
storage: storageConfig,
},
}

const agent = new Agent({
config: agentConfig,
dependencies: agentDependencies,
})
- - + + \ No newline at end of file diff --git a/guides/0.3/tutorials/postgres-database-nodejs/linux.html b/guides/0.3/tutorials/postgres-database-nodejs/linux.html index 9e8c0d58..6ea5d9c1 100644 --- a/guides/0.3/tutorials/postgres-database-nodejs/linux.html +++ b/guides/0.3/tutorials/postgres-database-nodejs/linux.html @@ -4,13 +4,13 @@ Postgres Setup for Linux | Credo - - + +
Version: v0.3.x

Postgres Setup for Linux

Prerequisites

  • A system package manager (like apt, pacman, etc.)
  • Cargo (We have to build Postgres plugin from source)
  • git (to clone a repo, could also be done with downloading the zip from the Github page)

Step 1: installing the dependencies using apt

Debian based (Ubuntu, Mint, Kali, Deepin, etc.)

sudo apt install libzmq3-dev libsodium-dev libssl-dev

Step 2: Build Postgres plugin

Building Postgres plugin from the indy-sdk repo with cargo.

Step 2.1: Cloning the indy-sdk

git clone https://github.com/hyperledger/indy-sdk.git

cd indy-sdk/experimental/plugins/postgres_storage

Step 2.2: Building Postgres plugin

If this step throws any errors, it might be because you miss some packages. Step 1 of this guide provided the dependencies that are required, but it also assumed that you have some basic development packages installed. If you are missing some packages, you can install them with your package manager.

pwd

# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage

cargo build --release

Step 2.3: Moving the file

pwd

# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage

sudo mv ./target/release/libindystrgpostgres.so /usr/local/lib/libindystrgpostgres.so
- - + + \ No newline at end of file diff --git a/guides/0.3/tutorials/postgres-database-nodejs/macos.html b/guides/0.3/tutorials/postgres-database-nodejs/macos.html index 559f4662..4c8fc7c4 100644 --- a/guides/0.3/tutorials/postgres-database-nodejs/macos.html +++ b/guides/0.3/tutorials/postgres-database-nodejs/macos.html @@ -4,13 +4,13 @@ Postgres Setup for macOS | Credo - - + +
Version: v0.3.x

Postgres Setup for macOS

Note: We have tried to build on both intel and apple silicon.

Prerequisites

  • Homebrew
  • Cargo (We have to build Postgres plugin from source)
  • git (to clone a repo, could also be done with downloading the zip from the GitHub page)

Step 1: installing the dependencies using brew

brew install libsodium zeromq

Step 2: Build Postgres plugin

Building Postgres plugin from the indy-sdk repo with cargo.

Step 2.1: Cloning the indy-sdk

git clone https://github.com/hyperledger/indy-sdk.git

cd indy-sdk/experimental/plugins/postgres_storage

Step 2.2: Building Postgres plugin

If this step throws any errors, it might be because you miss some packages. Step 1 of this guide provided the dependencies that are required, but it also assumed that you have some basic development packages installed. If you are missing some packages, you can install them with your package manager.

pwd

# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage

cargo build --release

Step 2.3: Moving the file

pwd

# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage

sudo mv ./target/release/libindystrgpostgres.dylib /usr/local/lib/libindystrgpostgres.dylib
- - + + \ No newline at end of file diff --git a/guides/0.3/tutorials/postgres-database-nodejs/windows.html b/guides/0.3/tutorials/postgres-database-nodejs/windows.html index 870e2a9e..13f94539 100644 --- a/guides/0.3/tutorials/postgres-database-nodejs/windows.html +++ b/guides/0.3/tutorials/postgres-database-nodejs/windows.html @@ -4,13 +4,13 @@ Postgres Setup for windows | Credo - - + +
Version: v0.3.x

Postgres Setup for windows

Build Environment Prerequisites

  1. Download and install Visual Studio Community Edition 2022
  2. Install git for windows
  3. Download rust for windows here
  4. Make sure you have already setup a libindy for windows from here

Step 1: Getting dependencies

  • Download the prebuilt dependencies here
  • Extract them
  • Point path to this directory using environment variables:
    • set INDY_PREBUILT_DEPS_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set INDY_CRYPTO_PREBUILT_DEPS_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set MILAGRO_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set LIBZMQ_PREFIX=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set SODIUM_LIB_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set OPENSSL_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set PATH=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps\lib

Step 2: Build Postgres plugin

Building Postgres plugin from the indy-sdk repo with cargo.

Step 2.1: Cloning the indy-sdk

git clone https://github.com/hyperledger/indy-sdk.git

cd indy-sdk\experimental\plugins\postgres_storage

Step 2.2: Building Postgres plugin

If this step throws any errors, it might be because of the environment. Step 1 of this guide provided the dependencies that are required.

cargo build --release --target x86_64-pc-windows-msvc

The library indystrgpostgres.dll file will be located at indy-sdk\experimental\plugins\postgres_storage\target\x86_64-pc-windows-msvc\release

Step 2.3: Setting the file to PATH

  • set LIB_INDY_STRG_POSTGRES=C:\Users\{WINDOWS_USER}\Downloads\indy-sdklexperimental\plugins\postgres_storage\target\x86_64-pc-windows-msvc\release

or Alternatively you can copy the indystrgpostgres.dll file to c:\\windows\\system32\\

- - + + \ No newline at end of file diff --git a/guides/0.3/updating.html b/guides/0.3/updating.html index e3e2f105..06983c2d 100644 --- a/guides/0.3/updating.html +++ b/guides/0.3/updating.html @@ -4,13 +4,13 @@ Updating AFJ | Credo - - + +
Version: v0.3.x

Updating AFJ

This section will cover everything you need to know about updating Aries Framework JavaScript to a newer version.

Versioning

Aries Framework JavaScript follows semantic versioning. This means that major version changes (1.0.0) are considered breaking changes. When features are added this is a minor version change (0.1.0). For bug fixes the patch version change is used (0.0.1).

While AFJ is still in pre-1.0.0 version, the version change types are shifted to the right. This means a major version change is now a minor change (0.1.0) and a minor change is now a patch change (0.0.1). This is done to keep the version below 1.0.0, indicating the framework is still in early development and users can expect more breaking changes that when the version has already reached 1.0.0.

This means if the second number in the version (0.1.0) changes, you need to be careful with updating and always consult this page for update instructions. If only the third number changes (0.0.1), you can update without any issues.

Types of breaking changes

Updates to AFJ bring new features and improvements to the framework. To better adapt the framework to new features we sometimes make breaking changes that will improve how AFJ works. There's two parts to updates with breaking changes:

  1. Breaking code changes
  2. Breaking storage changes

Breaking Code Changes

Breaking changes to code means changes to how you interact with AFJ. This includes methods being renamed, moved to another module or extended to better integrate with new features. We'll try to cover all breaking changes in migration guides, so you know exactly what is needed to update to a new version and keep the same functionality.

info

If you encounter any breaking changes that aren't mentioned in the migration docs, please open an issue in the Aries JavaScript Docs repository, or directly create a PR describing the change.

Breaking Storage Changes

Breaking changes to storage are a bit more complex to deal with. While breaking changes to code only require you to update your code once, breaking changes to storage needs to be updated for every agent instance. Luckily, we've made the migration as easy as possible for you using the Update Assistant. The Update Assistant will update all storage objects to the storage model that is expected by the newest version. If a version made changes to the storage, this will be explicitly mentioned in the migration guide. See the Update Assistant documentation for detailed instructions on how to use the update assistant.

Migration Guides

Currently the following migration guides are available:

- - + + \ No newline at end of file diff --git a/guides/0.3/updating/update-assistant.html b/guides/0.3/updating/update-assistant.html index 40f4bb6c..de3047ef 100644 --- a/guides/0.3/updating/update-assistant.html +++ b/guides/0.3/updating/update-assistant.html @@ -4,13 +4,13 @@ Update Assistant | Credo - - + +
Version: v0.3.x

Update Assistant

The Update Assistant helps you update the storage objects from AFJ to newer versions. This documents describes the different ways you can leverage the Update Assistant from fully managed to more manual approaches.

Update Strategies

There are three options on how to leverage the update assistant on agent startup:

  1. Manually instantiating the update assistant on agent startup
  2. Storing the agent storage version outside of the agent storage
  3. Automatically update on agent startup

Manually instantiating the update assistant on agent startup

When the version of the storage is stored inside the agent storage, it means we need to check if the agent needs to be updated on every agent startup. We'll initialize the update assistant and check whether the storage is up to date. The advantage of this approach is that you don't have to store anything yourself, and have full control over the workflow.

import { UpdateAssistant, Agent } from '@aries-framework/core'

// or @aries-framework/node
import { agentDependencies } from '@aries-framework/react-native'

// First create the agent
const agent = new Agent({
config,
dependencies: agentDependencies,
})

// Then initialize the update assistant with the update config
const updateAssistant = new UpdateAssistant(agent, {
v0_1ToV0_2: {
mediationRoleUpdateStrategy: 'allMediator',
},
})

// Initialize the update assistant so we can read the current storage version
// from the wallet. If you manually initialize the wallet you should do this _before_
// calling initialize on the update assistant
// await agent.wallet.initialize(walletConfig)
await updateAssistant.initialize()

// Check if the agent is up to date, if not call update
if (!(await updateAssistant.isUpToDate())) {
await updateAssistant.update()
}

// Once finished initialize the agent. You should do this on every launch of the agent
await agent.initialize()

Storing the agent storage version outside of the agent storage

When the version of the storage is stored outside of the agent storage, you don't have to initialize the UpdateAssistant on every agent agent startup. You can just check if the storage version is up to date and instantiate the UpdateAssistant if not. The advantage of this approach is that you don't have to instantiate the UpdateAssistant on every agent startup, but this does mean that you have to store the storage version yourself.

When a wallet has been exported and later imported you don't always have the latest version available. If this is the case you can always rely on Method 1 or 2 for updating the wallet, and storing the version yourself afterwards. You can also get the current version by calling await updateAssistant.getCurrentAgentStorageVersion(). Do note the UpdateAssistant needs to be initialized before calling this method.

import { UpdateAssistant, Agent } from '@aries-framework/core'

// or @aries-framework/node
import { agentDependencies } from '@aries-framework/react-native'

// The storage version will normally be stored in e.g. persistent storage on a mobile device
let currentStorageVersion: VersionString = '0.1'

// First create the agent
const agent = new Agent({
config,
dependencies: agentDependencies,
})

// We only initialize the update assistant if our stored version is not equal
// to the frameworkStorageVersion of the UpdateAssistant. The advantage of this
// is that we don't have to initialize the UpdateAssistant to retrieve the current
// storage version.
if (currentStorageVersion !== UpdateAssistant.frameworkStorageVersion) {
const updateAssistant = new UpdateAssistant(agent, {
v0_1ToV0_2: {
mediationRoleUpdateStrategy: 'recipientIfEndpoint',
},
})

// Same as with the previous strategy, if you normally call agent.wallet.initialize() manually
// you need to call this before calling updateAssistant.initialize()
await updateAssistant.initialize()

await updateAssistant.update()

// Store the version so we can leverage it during the next agent startup and don't have
// to initialize the update assistant again until a new version is released
currentStorageVersion = UpdateAssistant.frameworkStorageVersion
}

// Once finished initialize the agent. You should do this on every launch of the agent
await agent.initialize()

Automatically update on agent startup

This is by far the easiest way to update the agent, but has the least amount of flexibility and is not configurable. This means you will have to use the default update options to update the agent storage. You can find the default update config in the respective version migration guides (e.g. in 0.1-to-0.2).

import { UpdateAssistant, Agent } from '@aries-framework/core'

// or @aries-framework/node
import { agentDependencies } from '@aries-framework/react-native'

// First create the agent, setting the autoUpdateStorageOnStartup option to true
const agent = new Agent({
config: {
...config,
autoUpdateStorageOnStartup: true,
},
dependencies: agentDependencies,
})

// Then we call initialize, which under the hood will call the update assistant if the storage is not update to date.
await agent.initialize()

Backups

Before starting the update, the update assistant will automatically create a backup of the wallet. If the migration succeeds the backup won't be used. If the backup fails, another backup will be made of the migrated wallet, after which the backup will be restored.

The backups can be found at the following locations. The backupIdentifier is generated at the start of the update process and generated based on the current timestamp.

  • Backup path: ${agent.config.fileSystem.basePath}/afj/migration/backup/${backupIdentifier}
  • Migration backup: ${agent.config.fileSystem.basePath}/afj/migration/backup/${backupIdentifier}-error

In the future the backup assistant will make a number of improvements to the recovery process. Namely:

  • Do not throw an error if the update fails, but rather return an object that contains the status, and include the backup paths and backup identifiers.
- - + + \ No newline at end of file diff --git a/guides/0.3/updating/versions/0.1-to-0.2.html b/guides/0.3/updating/versions/0.1-to-0.2.html index 0842f53f..74e441ea 100644 --- a/guides/0.3/updating/versions/0.1-to-0.2.html +++ b/guides/0.3/updating/versions/0.1-to-0.2.html @@ -4,15 +4,15 @@ Migrating from AFJ 0.1.0 to 0.2.x | Credo - - + +
Version: v0.3.x

Migrating from AFJ 0.1.0 to 0.2.x

This document describes everything you need to know for updating AFJ 0.1.0 to 0.2.x. If you're not aware of how updating in AFJ works make sure to first read the guide on Updating AFJ.

First of all, update you dependencies to the 0.2.x versions. This will also update the needed peer depedencnies. Extension packages are not updated with this command. You need to update these manually, and make sure they're up to date with the latest version of AFJ.

yarn add @aries-framework/react-native@^0.2.0 @aries-framework/core@^0.2.0 indy-sdk-react-native@^0.2.0

# or NPM
npn install @aries-framework/react-native@^0.2.0 @aries-framework/core@^0.2.0 indy-sdk-react-native@^0.2.0

Breaking Code Changes

This section will list all breaking changes made to the public API of AFJ between version 0.1.0 and 0.2.0.

info

If you have custom modules take into account there could be a lot more breaking changes that aren't documented here. We try to make sure that the biggest breaking changes to the internal API are also documented here (e.g. see Updating Custom Messages to the New Message Type Objects), but it is possible some breaking changes are not documented here (feel free to open PRs).

Credentials Module

Module API Updates

With the addition of the issue credential v2 protocol and the preparation for multiple attachment formats (to be added in a later release), we've made some big changes to the credentials module API. Most changes are related to structure, so updating your code to the new API should be straightforward.

Basically for all methods in the credential module you should take the following steps to update your code:

  1. Move all function parameters into a single object. All module methods now take a single object that contain all properties.
  2. For methods that initiate a protocol (starting from offer, proposal), you should pass protocolVersion: 'v1' to indicate we should use the v1 protocol. (v2 is also supported, but this focuses on the breaking changes, not the new features).
  3. All indy specific attributes (e.g. credentialDefinitionId) should be passed in the credentialFormats.indy object.
  4. The preview should now be passed as only the preview attributes (the the full preview) and provided in the credentialFormats.indy object.
await agent.credentials.offerCredential('connectionId', {
autoAcceptCredential: AutoAcceptCredential.Always,
comment: 'hello',

credentialDefinitionId: 'credentialDefinitionId',
preview: new CredentialPreview({
attributes: [new CredentialPreviewAttribute({ name: 'key', value: 'value' })],
}),
})

Data from Received Messages only Stored in Record after Accepting

Previously when we received a message from another connection we would store the relevant data from the exchange in the credential record. The values we would store were the credentialDefinitionId and schemaId in the credential metadata, and the credentialAttributes field.

Starting with AFJ 0.2.0 the values are not stored in the credential record until after the message content has been accepted (in the case of an offer this means after sending the request message). This is to avoid ambiguity of the values in the credential record. If I have sent a proposal and then receive an offer, should the credential record contain the values from the proposal or the values from the offer? The first one reflects our view on what the data should be, the second one reflects the latest data.

We decided to make the record properties always hold our view of what the data should be, and only update it after accepting the contents of a received message (either using auto accept, or by calling the acceptXXX methods on the credential module).

This is an important change and requires some updates to how you extract the relevant data from the offer (or other messages such the proposal). We've added a new getFormatData method on the credentials module that allows you to retrieve the attributes and format data for all messages in an exchange. One of the advantages of this approach is that we don't have to store all relevant data in the credential record anymore, which helps when adding new formats that don't match with the attributes used for indy credentials. In addition, the return value for this method is the same whether v1 or v2 of the protocol is used. This means your code should only care about the credential format (indy in this case) and doesn't have to worry about the protocol version.

agent.events.on<CredentialStateChangedEvent>(
CredentialEventTypes.CredentialStateChanged,
({ payload: { credentialRecord } }) => {
const indyCredentialMetadata = credentialRecord.metadata.get(CredentialMetadataKeys.IndyCredential)

// Get credential definition id, schema id and attributes from offer
const credentialDefinitionId = indyCredentialMetadata?.credentialDefinitionId
const schemaId = indyCredentialMetadata?.schemaId
const attributes = credentialRecord.credentialAttributes
}
)

Messages Extracted from Credential Record

The DIDComm messages that were previously stored on the credential record, have been extracted to separate DIDComm message records. This makes it easier to work with multiple versions of the protocol internally, and keeps the credential exchange record agnostic of the protocol version. Instead of accessing the messages through the proposalMessage, offerMessage, requestMessage and credentialMessage parameters, we now expose dedicated methods on the credentials module to retrieve the message.

With the addition of the v2 messages, all v1 messages have been prefixed with V1 while v2 messages have been prefixed with V2 (V1ProposeCredentialMessage and V2ProposeCredentialMessage). If you were using these messages classes throughout your codebase, update them to use the V1 prefix.

const credentialRecord = await agent.credentials.getById('credentialRecordId')

const proposalMessage = credentialRecord.proposalMessage
const offerMessage = credentialRecord.offerMessage
const requestMessage = credentialRecord.requestMessage
const credentialMessage = credentialRecord.credentialMessage

Connections Module

Version 0.2.0 added support for the Out of Band protocol with support for the DID Exchange protocol. Internally AFJ now uses out of band invitations for all connections, even if you're connecting using the old invitations from the Connection protocol.

Creating a Legacy Invitation

The createInvitation method on the connections module has been moved to the out of band module and renamed to createLegacyInvitation. The method is not planned to be removed in the near future, the legacy merely indicates this will create an RFC 0160 connection invitation. Internally AFJ creates an out of band invitation and transforms it into a legacy invitation. If you want to create an out of band invitation instead, you should use oob.createInvitation.

const { connectionRecord, invitation } = await agent.connections.createInvitation({
/* config */
})

const invitationUrl = invitation.toUrl({ domain: 'https://example.com' })

Receiving a Legacy Invitation

The receiveInvitation and receiveInvitationFromUrl methods on the connections module have also been moved to the out of band module. Both methods support the new out of band invitations and the legacy RFC 0160 connection invitations. Internally AFJ converts the old invitations to out of band invitations.

const invitationUrl = 'https://example.com?c_i=eyXXX'

// Receive invitation directly from url
const connectionRecord = await agent.connections.receiveInvitationFromUrl(invitationUrl, {
/* config */
})

// Parse invitation and receive invitation
const parsedInvitation = await ConnectionInvitationMessage.fromUrl(invitationUrl)
const connectionRecord = await agent.connections.receiveInvitation(parsedInvitation, {
/* config */
})

Updating to use DidExchangeState

The ConnectionState that was previously used for the state of the ConnectionRecord has been changed to use the DidExchangeState for both connections made using the RFC 0160 Connection Protocol, as well as the RFC 0023 DID Exchange Protocol.

The DidExchangeState has the following values:

  • DidExchangeState.Start,
  • DidExchangeState.InvitationSent,
  • DidExchangeState.InvitationReceived,
  • DidExchangeState.RequestSent,
  • DidExchangeState.RequestReceived,
  • DidExchangeState.ResponseSent,
  • DidExchangeState.ResponseReceived,
  • DidExchangeState.Abandoned,
  • DidExchangeState.Completed

If you still need to access the old ConnectionState you can do so by accessing the computed connectionRecord.rfc0160State property. This will return the old ConnectionState value.

Updating Custom Messages to the New Message Type Objects

Although this isn't a breaking change to the public API of the framework, it is something that you will need to take into account when creating custom modules. Starting from AFJ 0.2.0 we now support handling messages with different minor versions (e.g. receive a message with @type version 1.1 while we only support 1.0). With this change messages must now declare the message type as an ParsedMessageType object. We've added an parseMessageType util method that can help with this.

import { AgentMessage } from '@aries-framework/core'
import { Equals } from 'class-validator'

class MyMessage extends AgentMessage {
@Equals(MyMessage.type)
public readonly type = MyMessage.type
public static readonly type = 'https://didcomm.org/my-protocol/1.0/my-type'
}

Breaking Storage Changes

The 0.2.0 release is heavy on breaking changes to the storage format. This is not what we intend to do with every release. But as there's not that many people yet using the framework in production, and there were a lot of changes needed to keep the API straightforward, we decided to bundle a lot of breaking changes in this one release.

Below all breaking storage changes are explained in as much detail as possible. The update assistant provides all tools to migrate without a hassle, but it is important to know what has changed. All examples only show the keys that have changed, unrelated keys in records have been omitted.

See the Update Assistant documentation for a guide on how to use the update assistant.

The following config can be provided to the update assistant to migrate from 0.1.0 to 0.2.0:

{
"v0_1ToV0_2": {
"mediationRoleUpdateStrategy": "<mediationRoleUpdateStrategy>"
}
}

Credential Metadata

The credential record had a custom metadata property in pre-0.1.0 storage that contained the requestMetadata, schemaId and credentialDefinition properties. Later a generic metadata API was added that only allows objects to be stored. Therefore the properties were moved into a different structure.

{
"requestMetadata": <value of requestMetadata>,
"schemaId": "<value of schemaId>",
"credentialDefinitionId": "<value of credential definition id>"
}

Migrate Credential Record Properties

In 0.2.0 the v1 DIDComm messages have been moved out of the credential record into separate records using the DidCommMessageRepository. The migration scripts extracts all messages (proposalMessage, offerMessage, requestMessage, credentialMessage) and moves them into the DidCommMessageRepository.

With the addition of support for different protocol versions the credential record now stores the protocol version. With the addition of issue credential v2 support, other credential formats than indy can be used, and multiple credentials can be issued at once. To account for this the credentialId has been replaced by the credentials array. This is an array of objects containing the credentialRecordId and the credentialRecordType. For all current credentials the credentialRecordType will always be indy.

{
"credentialId": "09e46da9-a575-4909-b016-040e96c3c539",
"proposalMessage": { ... },
"offerMessage": { ... },
"requestMessage": { ... },
"credentialMessage": { ... },
}

Mediation Record Role

The role in the mediation record was always being set to MediationRole.Mediator for both mediators and recipients. This didn't cause any issues, but would return the wrong role for recipients.

In 0.2 a check is added to make sure the role of a mediation record matches with actions (e.g. a recipient can't grant mediation), which means it will throw an error if the role is not set correctly.

Because it's not always possible detect whether the role should actually be mediator or recipient, a number of configuration options are provided on how the role should be updated using the v0_1ToV0_2.mediationRoleUpdateStrategy option:

  • allMediator: The role is set to MediationRole.Mediator for both mediators and recipients
  • allRecipient: The role is set to MediationRole.Recipient for both mediators and recipients
  • recipientIfEndpoint (default): The role is set to MediationRole.Recipient if their is an endpoint configured on the record. The endpoint is not set when running as a mediator. There is one case where this could be problematic when the role should be recipient, if the mediation grant hasn't actually occurred (meaning the endpoint is not set). This is probably the best approach otherwise it is set to MediationRole.Mediator
  • doNotChange: The role is not changed

Most agents only act as either the role of mediator or recipient, in which case the allMediator or allRecipient configuration is the most appropriate. If your agent acts as both a recipient and mediator, the recipientIfEndpoint configuration is the most appropriate. The doNotChange options is not recommended and can lead to errors if the role is not set correctly.

Extracting Did Documents to Did Repository

The connection record previously stored both did documents from a connection in the connection record itself. Version 0.2.0 added a generic did storage that can be used for numerous usages, one of which is the storage of did documents for connection records.

The migration script extracts the did documents from the didDoc and theirDidDoc properties from the connection record, updates them to did documents compliant with the did core spec, and stores them in the did repository. By doing so it also updates the unqualified DIDs in the did and theirDid fields generated by the indy-sdk to fully qualified did:peer DIDs compliant with the Peer DID Method Specification.

To account for the fact that the mechanism to migrate legacy did document to peer did documents is not defined yet, the legacy did and did document are stored in the did record metadata. This will be deleted later if we can be certain the did doc conversion to a did:peer did document is correct.

{
"did": "BBPoJqRKatdcfLEAFL7exC",
"theirDid": "UppcJ5APts7ot5WX25943F",
"verkey": "GAb4NUvpBcHVCvtP45vTVa5Bp74vFg3iXzdp1Gbd68Wf",
"didDoc": <legacyDidDoc>,
"theirDidDoc": <legacyTheirDidDoc>,
}

Migrating to the Out of Band Record

With the addition of the out of band protocol, invitations are now stored in the OutOfBandRecord. In addition a new field invitationDid is added to the connection record that is generated based on the invitation service or did. This allows to reuse existing connections.

The migration script extracts the invitation and other relevant data into a separate OutOfBandRecord. By doing so it converts the old connection protocol invitation into the new Out of band invitation message. Based on the service or did of the invitation, the invitationDid is populated.

Previously when creating a multi use invitation, a connection record would be created with the multiUseInvitation set to true. The connection record would always be in state invited. If a request for the multi use invitation came in, a new connection record would be created. With the addition of the out of band module, no connection records are created until a request is received. So for multi use invitation this means that the connection record with multiUseInvitation=true will be deleted, and instead all connections created using that out of band invitation will contain the outOfBandId of the multi use invitation.

{
"invitation": {
"@type": "https://didcomm.org/connections/1.0/invitation",
"@id": "04a2c382-999e-4de9-a1d2-9dec0b2fa5e4",
"recipientKeys": ["E6D1m3eERqCueX4ZgMCY14B4NceAr6XP2HyVqt55gDhu"],
"serviceEndpoint": "https://example.com",
"label": "test"
},
"multiUseInvitation": "false"
}

Unifying Connection States and Roles

With the addition of the did exchange protocol there are now two states and roles related to the connection record; for the did exchange protocol and for the connection protocol. To keep it easy to work with the connection record, all state and role values are updated to those of the DidExchangeRole and DidExchangeState enums.

The migration script transforms all connection record state and role values to their respective values of the DidExchangeRole and DidExchangeState enums. For convenience a getter property rfc0160ConnectionState is added to the connection record which returns the ConnectionState value.

{
"state": "invited",
"role": "inviter"
}
- - + + \ No newline at end of file diff --git a/guides/0.3/updating/versions/0.2-to-0.3.html b/guides/0.3/updating/versions/0.2-to-0.3.html index c9a9d9de..ccc361f3 100644 --- a/guides/0.3/updating/versions/0.2-to-0.3.html +++ b/guides/0.3/updating/versions/0.2-to-0.3.html @@ -4,13 +4,13 @@ Migrating from AFJ 0.2.x to 0.3.x | Credo - - + +
Version: v0.3.x

Migrating from AFJ 0.2.x to 0.3.x

This document describes everything you need to know for updating AFJ 0.2.x to 0.3.x. If you're not aware of how updating in AFJ works make sure to first read the guide on Updating AFJ.

First of all, update you dependencies to the 0.3.x versions. This will also update the needed peer depedencnies. Extension packages are not updated with this command. You need to update these manually, and make sure they're up to date with the latest version of AFJ.

yarn add @aries-framework/react-native@^0.3.0 @aries-framework/core@^0.3.0 indy-sdk-react-native@^0.3.0

# or NPM
npn install @aries-framework/react-native@^0.3.0 @aries-framework/core@^0.3.0 indy-sdk-react-native@^0.3.0

Breaking Code Changes

This section will list all breaking changes made to the public API of AFJ between version 0.2.x and 0.3.0.

info

If you have custom modules take into account there could be a lot more breaking changes that aren't documented here. We try to make sure that the biggest breaking changes to the internal API are also documented here (e.g. see Updating Custom Modules to the Plugin API), but it is possible some breaking changes are not documented here (feel free to open PRs).

Agent creation

The agent constructor has been updated to a single AgentOptions object that contains the config and dependencies properties.

const agent = new Agent(agentConfig, agentDependencies)

This object contains:

  • config: Agent's initial configuration
  • dependencies: platform-specific Agent dependencies
  • modules: optional field for internal module configuration and custom module registration

For easy migration, you can simply construct AgentOptions by putting current InitConfig into config key and agentDependencies into dependencies key.

Note that, if you are defining indyLedgers configuration, you should set the indyNamespace for every ledger, as explained in Agent Config tutorial.

did:key usage in protocols

In accordance with Aries RFC 0360, since 0.2.5 there is a configuration parameter called useDidKeyInProtocols which, when enabled, will encode keys in did:key instead of previous base58 format, unless the other party has started a protocol and is using base58.

This parameter was previously disabled by default and now it is enabled. If your agent only interacts with modern agents (e.g. AFJ 0.2.5 and newer) this will not represent any issue. Otherwise it is safer to explicitly set it to false. However, keep in mind that we expect this setting to be deprecated in the future, so we encourage you to update all your agents to use did:key.

Modules extracted from the core

In this release two modules were extracted from the core and published as separate, optional packages:

  • actionMenu has been moved to @aries-framework/action-menu
  • questionAnswer has been moved to @aries-framework/question-answer

If you want to use them, you can integrate in an Agent instance by injecting them in constructor, as follows:

import { ActionMenuModule } from '@aries-framework/action-menu'
import { QuestionAnswerModule } from '@aries-framework/question-answer'

const agent = new Agent({
config: {
/* config */
},
dependencies: agentDependencies,
modules: {
actionMenu: new ActionMenuModule(),
questionAnswer: new QuestionAnswerModule(),
/* other custom modules */
},
})

As they are now considered custom modules, their API can be accessed in modules namespace, so you should add it to every call to them.

await agent.questionAnswer.sendQuestion(connectionId, {
question: 'Do you want to play?',
validResponses: [{ text: 'Yes' }, { text: 'No' }],
})

await agent.questionAnswer.sendAnswer(questionAnswerRecordId, 'Yes')

Discover Features Module

This module now supports both Discover Features V1 and V2, and as it happened to other modules, queryFeatures method parameters have been unified to a single object and requires to specify the version of Discover Features protocol to be used. Note that query property has been replaced by the more general queries which accepts multiple features to be search for. To convert a query to this new format you simply need to create a single-object array whose unique object whose featureType field is 'protocol' and match field is the query itself.

await agent.discovery.queryFeatures(connectionId, {
query: 'https://didcomm.org/messagepickup/2.0',
comment: 'Detect if protocol is supported',
})

The convenience method isProtocolSupported has been replaced by the more general synchronous mode of queryFeatures, which works when awaitDisclosures in options is set. Instead of returning a boolean, it returns an object with matching features:

const isPickUpV2Supported = await agent.discovery.isProtocolSupported(connectionId, StatusRequestMessage)
info

Discover Features module does not rely anymore on Agent Dispatcher to determine protocol support. Instead, it uses the new Feature Registry, where any custom modules implementing protocols must register them.

This procedure can be done in module's register(dependencyManager, featureRegistry).

Ledger Module

Apart from the aforementioned indyLedgers configuration, you should also note a slight change in behavior when attempting to register credential definitions that already exists on the ledger but not in the wallet.

Proofs Module

Module API Updates

Much in the same way as in 0.2.0 release when Issue Credential V2 protocol has been added, now that Present Proof V2 is supported, we introduced changes to proofs module.

Basically, for all methods in the proofs module you should take the following steps to update your code:

  1. Move all function parameters into a single object. All module methods now take a single object that contain all properties.
  2. For methods that initiate proposals, requests or presentations (proposeProof, acceptProposal, requestProof, acceptPresentation, etc.), you should pass protocolVersion: 'v1' to indicate we should use the v1 protocol
  3. All indy specific attributes (e.g. Presentation Preview) should be passed in the proofFormats.indy object.
  4. Some indy objects, as the preview should now be passed only as their attributes (i.e. no need of creating the object instance) and provided in the proofFormats.indy object.
await agent.proofs.proposeProof(
'connectionId',
new PresentationPreview({
attributes: [new PresentationPreviewAttribute({ name: 'key', value: 'value' })],
predicates: [
new PresentationPreviewPredicate({
name: 'age',
credentialDefinitionId,
predicate: PredicateType.GreaterThanOrEqualTo,
threshold: 50,
}),
],
})
)

Messages Extracted from Proof Exchange Record

The DIDComm messages that were previously stored on the proof record, have been extracted to separate DIDComm message records. This makes it easier to work with multiple versions of the protocol internally, and keeps the proof exchange record agnostic of the protocol version. Instead of accessing the messages through the proposalMessage, requestMessage and presentationMessage parameters, we now expose dedicated methods on the proofs module to retrieve the message.

With the addition of the v2 messages, all v1 messages have been prefixed with V1 while v2 messages have been prefixed with V2 (V1RequestPresentationMessage and V2RequestPresentationMessage). If you were using these messages classes throughout your codebase, update them to use the V1 prefix.

const proofRecord = await agent.proofs.getById('proofRecordId')

const proposalMessage = proofRecord.proposalMessage
const requestMessage = proofRecord.requestMessage
const presentationMessage = proofRecord.presentationMessage

Out Of Band Proofs and Credentials

With the addition of the out of band module, the creation of connection-less messages has been split into two steps, allowing for better control and flexibility. The previous agent.proofs.createOutOfBandRequest has been replaced by the agent.proofs.createRequest method. This new method creates a proof request that is not tied to any connection.

What you can now do is call agent.oob.createLegacyConnectionlessInvitation to attach the service decorator to the message and get a legacy connectionless message.

const { requestMessage, proofRecord } = await agent.proofs.createOutOfBandRequest({
requestedAttributes: {
group1: {
name: 'dateOfBirth',
restrictions: [{ schemaId: 'F72i3Y3Q4i466efjYJYCHM:2:aha_cert:4.1.1' }],
},
},
})

Out of band invitations are the new way to send messages out of band. You can use it for connection-less exchanges, but also for exchanges that you want to establish a connection for first. Here's an example on how to use the out of band module to create a connection-less invitation for a proof request:

const outOfBandRecord = await agent.oob.createInvitation({
handshake: false, // set to true if you want to create a connection
messages: [message],
})

const invitationUrl = outOfBandRecord.outOfBandInvitation.toUrl({
domain: 'https://afj.com',
})

As you can see, there's now a lot more ways to use a message not tied to a connection. By splitting the creation of the message from the creation of the invitation, we can now create a message not bound to a connection (at time of creation) for multiple use cases.

Updating Custom Modules to the new Plugin API

Although this isn't a breaking change to the public API of the framework, it is something that you will need to take into account if you have custom modules and want to upgrade them to make compatible with AFJ 0.3.0.

Renaming handler classes

Handler has been have been renamed to MessageHandler to be be more descriptive, along with related types and methods. This means:

  • Handler is now MessageHandler
  • HandlerInboundMessage is now MessageHandlerInboundMessage
  • Dispatcher.registerHandler is now Dispatcher.registerMessageHandler and is marked as deprecated. The recommended way of registering handlers is by using the new MessageHandlerRegistry object by calling MessageHandlerRegistry.registerMessageHandler.

If your custom module include message handlers, you must update them accordingly.

export class MyHandler implements Handler {
public supportedMessages = [MyMessage]

public async handle(inboundMessage: HandlerInboundMessage<MyHandler>) {
...
}
}

Using AgentContext

First of all, it's worth noting that now all services and repositories have been made stateless. A new AgentContext is introduced that holds the current context, which is passed to each method call. Therefore, you'll need to update every call to services, repositories and also eventEmitter methods to pass AgentContext object as first argument.

AgentContext can be obtained from either:

  • MessageContext used by message handlers (accesed as messageContext.agentContext)
  • Injected in your API constructor: you can store the instance and pass it to all your service and repository calls
  public async createRequest(options: CreateRequestOptions) {
const message = new RequestMessage({
parentThreadId: options.parentThreadId,
})

const record = new MyRecord({
connectionId: options.connectionRecord.id,
threadId: message.id,
parentThreadId: options.parentThreadId,
})

await this.myRecordRepository.save(record)

this.eventEmitter.emit<MyRecordStateChangedEvent>({
type: MyRecordEventTypes.StateChanged,
payload: {
myRecord: record,
previousState: null,
},
})

return { record, message }
}

public async processRequest(messageContext: HandlerInboundMessage<RequestHandler>) {
const { message } = messageContext

const record = new MyRecord({
connectionId: connection.id,
threadId: messageContext.message.id,
parentThreadId: messageContext.message.thread?.parentThreadId,
})

await this.myRepository.save(record)

return record
}

Using OutboundMessageContext

If your module implements a protocol that sends messages to other agents, you will notice that Agent's MessageSender now receives the more generic OutboundMessageContext class, which replaces previous helper method createOutboundMessage.

You can take advantage of this new mechanism to associate a record to the context, in order to do specific actions to it when outbound message state changes (e.g. a MessageSendingError is thrown or AgentMessageSentEvent is emitted).

import { createOutboundMessage } from '@aries-framework/core'

const outboundMessage = createOutboundMessage(connection, message)
await this.messageSender.sendMessage(outboundMessage)

Updating module structure to register in new Plugin API

Existing modules can benefit from the new Plugin API mechanism by doing the following modifications:

  1. Rename Module class (e.g. MyModule) to API class (MyApi) and add @injectable decorator. Inject AgentContext in order to pass it to any services or repositories it might call. For instance:
import { injectable } from '@aries-framework/core'

@injectable() // <-- Add this
export class MyApi {
private messageSender: MessageSender
private myService: MyService
private connectionService: ConnectionService
private agentContext: AgentContext // <-- Add this

public constructor(
messageHandlerRegistry: MessageHandlerRegistry, // <-- use this instead of Dispatcher
messageSender: MessageSender,
myService: MyService,
connectionService: ConnectionService,
agentContext: AgentContext // <-- Add this
) {
this.messageSender = messageSender
this.myService = myService
this.connectionService = connectionService
this.agentContext = agentContext // <-- Add this
this.registerHandlers(messageHandlerRegistry) // <-- use messageHandlerRegistry instead of dispatcher
}
  1. Create a new Module class that implements Module interface and registers the dependencies and features. For instance:
import type { DependencyManager, FeatureRegistry, Module } from '@aries-framework/core'

import { Protocol } from '@aries-framework/core'

export class MyModule implements Module {
public readonly api = MyApi // the one we've just renamed from MyModule

public register(dependencyManager: DependencyManager, featureRegistry: FeatureRegistry) {
// Api
dependencyManager.registerContextScoped(MyApi)

// Services
dependencyManager.registerSingleton(MyService)

// Repositories
dependencyManager.registerSingleton(MyRepository)

// Feature Registry: don't forget to register your protocols and other features your module may add
featureRegistry.register(
new Protocol({
id: 'https://didcomm.org/my-protocol/1.0',
roles: [MyRole.Sender, MyRole.Receiver],
})
)
}

After doing this, you can add your module to agent constructor like this:

const agent = new Agent({
config: {
/* config */
},
dependencies: agentDependencies,
modules: {
myModule: new MyModule(),
/* other custom modules */
},
})

// MyModule API can be accessed in agent.modules namespace
await agent.modules.myModule.doSomething()

await agent.modules.myModule.doAnotherThing()

Breaking Storage Changes

The 0.3.0 release introduces some breaking changes to the storage format, mainly related to Proof Exchanges.

Below all breaking storage changes are explained in as much detail as possible. The update assistant provides all tools to migrate without a hassle, but it is important to know what has changed. All examples only show the keys that have changed, unrelated keys in records have been omitted.

See the Update Assistant documentation for a guide on how to use the update assistant.

There are no config parameters to be provided to the update assistant to migrate from 0.2.x to 0.3.x.

Migrate Proof Record Properties

In 0.3.0 the v1 DIDComm messages have been moved out of the proof record into separate records using the DidCommMessageRepository. The migration scripts extracts all messages (proposalMessage, requestMessage, presentationMessage) and moves them into the DidCommMessageRepository. With the addition of support for different protocol versions the proof record now stores the protocol version.

{
"proposalMessage": { ... },
"requestMessage": { ... },
"presentationMessage": { ... },
}

Migrate Connection Record properties

The recently introduced connectionType tag has been pluralized to reflect the fact that more than a single connection type can be defined for a given connection. Also, it is now available as a direct record property (e.g. can be queried and set by using connectionRecord.connectionTypes) apart from the tag for efficient search.

The migration script renames connectionType to connectionTypes in all connections, and also searches for any mediation connection and adds ConnectionType.Mediator as one of its types.

Migrate Did Record properties

The didRecord.id was previously the did itself. However to allow for connecting with self, where multiple did records are created for the same did, the id property is now an uuid and a separate did property is added.

The migration script generates a new ID for each did record and stores its did into didRecord.did property.

{
"id": "did"
}
- - + + \ No newline at end of file diff --git a/guides/0.5.html b/guides/0.5.html index 03bba2a4..c19a88ad 100644 --- a/guides/0.5.html +++ b/guides/0.5.html @@ -4,13 +4,13 @@ Intro | Credo - - + +
-
Version: v0.5.x

Intro

Welcome, to the Credo community!

There's no way around it. Working with self-sovereign identity can be difficult. Luckily this documentation's main goal is to make it easy for you, whether you have SSI experience or not. This documentation will either help you create a JavaScript based SSI solution yourself, or help you find the right resources in the community to assist you!

So what is Credo?

Credo originated as a project named "Aries Framework JavaScript" under the Hyperledger Aries umbrella. It has since been migrated from the Hyperledger Foundation to the OpenWallet Foundation and rebranded as Credo. As a result of its origin and strong ties to the Hyperledger community, a significant portion of its codebase adheres to Hyperledger Aries standards (RFCs), and the code and documentation make references to other Hyperledger-related projects.

Hyperledger Aries provides a shared, reusable, interoperable tool kit designed for initiatives and solutions focused on creating, transmitting and storing verifiable digital credentials.

— Hyperledger Foundation

There are several other Aries-based frameworks that help you build solutions using verifiable credentials. This one is written in TypeScript and is specifically well suited for Multi-Platform development as it supports Node.js and React Native. We, the community, like to view it as the most accessible framework mostly because it is written in TypeScript, and our maintainers and contributors work to keep developer user experience a top priority.

These docs are not just for the core framework, but also all that surround it. So you'll find general explanations about the concepts used, specific tutorials for common use cases and relevant projects and related repositories. Most of all you'll find solid documentation with lots of code examples and an enthusiastic community that wants to build great stuff together.

Are you ready to get started?

- - +
Version: v0.5.x

Intro

Welcome, to the Credo community!

There's no way around it. Working with self-sovereign identity can be difficult. Luckily this documentation's main goal is to make it easy for you, whether you have SSI experience or not. This documentation will either help you create a JavaScript based SSI solution yourself, or help you find the right resources in the community to assist you!

So what is Credo?

Credo originated as a project named "Aries Framework JavaScript" under the Hyperledger Aries umbrella. It has since been migrated from the Hyperledger Foundation to the OpenWallet Foundation and rebranded as Credo. As a result of its origin and strong ties to the Hyperledger community, a significant portion of its codebase adheres to Hyperledger Aries standards (RFCs), and the code and documentation make references to other Hyperledger-related projects.

Hyperledger Aries provides a shared, reusable, interoperable tool kit designed for initiatives and solutions focused on creating, transmitting and storing verifiable digital credentials.

— Hyperledger Foundation

There are several other Aries-based frameworks that help you build solutions using verifiable credentials. This one is written in TypeScript and is specifically well suited for Multi-Platform development as it supports Node.js and React Native. We, the community, like to view it as the most accessible framework mostly because it is written in TypeScript, and our maintainers and contributors work to keep developer user experience a top priority.

These docs are not just for the core framework, but also all that surround it. So you'll find general explanations about the concepts used, specific tutorials for common use cases and relevant projects and related repositories. Most of all you'll find solid documentation with lots of code examples and an enthusiastic community that wants to build great stuff together.

Are you ready to get started?

+ + \ No newline at end of file diff --git a/guides/0.5/concepts.html b/guides/0.5/concepts.html index a9786a57..2147e182 100644 --- a/guides/0.5/concepts.html +++ b/guides/0.5/concepts.html @@ -4,15 +4,15 @@ Concepts | Credo - - + +
-
Version: v0.5.x - - + + \ No newline at end of file diff --git a/guides/0.5/concepts/agents.html b/guides/0.5/concepts/agents.html index 3b840b50..e7702307 100644 --- a/guides/0.5/concepts/agents.html +++ b/guides/0.5/concepts/agents.html @@ -4,12 +4,12 @@ Agents | Credo - - + +
-
Version: v0.5.x

Agents

When working with any Credo implementation, you will interact with an Credo +

Version: v0.5.x

Agents

When working with any Credo implementation, you will interact with an Credo agent. This will be either directly or via a REST API, like the Credo REST API.

Characteristics

An Credo agent has three essential characteristics:

  1. It acts as a fiduciary on behalf of a single identity owner (or, for agents of things like IoT devices, pets, and similar things, a single controller).
  2. It holds cryptographic keys that uniquely embody its delegated @@ -35,7 +35,7 @@ for secure sensitive data storage and sharing. Since everyone has multiple devices these can be used as a more central point for your data.

    Useful resources

- - + + \ No newline at end of file diff --git a/guides/0.5/concepts/did-and-didcomm.html b/guides/0.5/concepts/did-and-didcomm.html index 4190dc21..750e4f88 100644 --- a/guides/0.5/concepts/did-and-didcomm.html +++ b/guides/0.5/concepts/did-and-didcomm.html @@ -4,12 +4,12 @@ DIDs and DIDComm | Credo - - + +
-
Version: v0.5.x

DIDs and DIDComm

DIDs

DIDs, short for Decentralized identifiers, +

Version: v0.5.x

DIDs and DIDComm

DIDs

DIDs, short for Decentralized identifiers, are a type of identifier that enables verifiable, decentralized identity. A DID can refer to any subject, a person, organization, etc. DIDs are decoupled from centralized registries, identity providers and certificate authorities.

DID Documents

A DID by itself does not contain a lot of information. So in order to get some @@ -24,7 +24,7 @@ securely send a message from as Alice to Bob securely via bluetooth, HTTP, WebSockets, etc.

When working with the tools available inside the Credo ecosystem, deep knowledge of DIDComm is not required.

Useful Resources

- - + + \ No newline at end of file diff --git a/guides/0.5/concepts/platform-and-environment.html b/guides/0.5/concepts/platform-and-environment.html index 4b42c065..5429118b 100644 --- a/guides/0.5/concepts/platform-and-environment.html +++ b/guides/0.5/concepts/platform-and-environment.html @@ -4,13 +4,13 @@ Platform and Environment | Credo - - + +
-
Version: v0.5.x

Platform and Environment

Credo is developed to support a Node.JS and React Native environment. With this it is entirely possible to build an entire SSI ecosystem with Credo. This would use Node.JS as an issuer as a verifier, and uses React Native as a holder.

- - +
Version: v0.5.x

Platform and Environment

Credo is developed to support a Node.JS and React Native environment. With this it is entirely possible to build an entire SSI ecosystem with Credo. This would use Node.JS as an issuer as a verifier, and uses React Native as a holder.

+ + \ No newline at end of file diff --git a/guides/0.5/ecosystem.html b/guides/0.5/ecosystem.html index b29bc7fc..9c4625a1 100644 --- a/guides/0.5/ecosystem.html +++ b/guides/0.5/ecosystem.html @@ -4,14 +4,14 @@ The Credo Ecosystem | Credo - - + +
-
Version: v0.5.x

The Credo Ecosystem

The Credo ecosystem includes various components that are spread across multiple repositories. In this section we'll go over what these components are and how the relate to one another.

Repositories

Currently, Credo is composed out of two separate repositories:

  1. Credo
  2. Credo Extensions

In addition, there are several open-source applications and building blocks built on top of Credo. One example is Aries Mobile Agent React Native (Bifold), which is a white-label mobile wallet you can use to bootstrap your own custom wallet.

Documentation

You can find their documentation here:

  1. Credo (core)
  2. Credo Extensions

Credo

Credo (core) is at the core of the Credo ecosystem. Credo provides all the functionality related to cryptography, storage, messaging and more that is required

Contributing in the Credo Ecosystem

Consider attending our weekly meetings to become aware of the current development cadence.

Developer Contributions

Each project maintains its own CONTRIBUTING guidance:

Each project has a significant set of developer conventions, checklists, templates, and actions to provide guidance and boundaries for a contribution. +

Version: v0.5.x

The Credo Ecosystem

The Credo ecosystem includes various components that are spread across multiple repositories. In this section we'll go over what these components are and how the relate to one another.

Repositories

Currently, Credo is composed out of two separate repositories:

  1. Credo
  2. Credo Extensions

In addition, there are several open-source applications and building blocks built on top of Credo. One example is Aries Mobile Agent React Native (Bifold), which is a white-label mobile wallet you can use to bootstrap your own custom wallet.

Documentation

You can find their documentation here:

  1. Credo (core)
  2. Credo Extensions

Credo

Credo (core) is at the core of the Credo ecosystem. Credo provides all the functionality related to cryptography, storage, messaging and more that is required

Contributing in the Credo Ecosystem

Consider attending our weekly meetings to become aware of the current development cadence.

Developer Contributions

Each project maintains its own CONTRIBUTING guidance:

Each project has a significant set of developer conventions, checklists, templates, and actions to provide guidance and boundaries for a contribution. Consider looking at previous issues and their corresponding PRs to get a sense of the latest.

- - + + \ No newline at end of file diff --git a/guides/0.5/extensions.html b/guides/0.5/extensions.html index d8879c7f..0685f223 100644 --- a/guides/0.5/extensions.html +++ b/guides/0.5/extensions.html @@ -4,13 +4,13 @@ Extensions | Credo - - + +
-
- - +
+ + \ No newline at end of file diff --git a/guides/0.5/extensions/push-notifications.html b/guides/0.5/extensions/push-notifications.html index 18ab742b..b19956cc 100644 --- a/guides/0.5/extensions/push-notifications.html +++ b/guides/0.5/extensions/push-notifications.html @@ -4,13 +4,13 @@ Push Notifications | Credo - - + +
-
Version: v0.5.x

Push Notifications

The Push Notifications plugin package provides a way for you to register your APNs and Firebase push notification token at an agent, allowing you to use push notifications directly from Credo.

note

This document is for version 0.5.x of the @aries-framework/push-notifications package, that works with @aries-framework/core version 0.4.x. Extension packages (such as Push Notifications) are versioned separately from the core packages.

Installation

To add the Push Notifications plugin package to your existing project simply run:

npm i @aries-framework/push-notifications
- - +
Version: v0.5.x

Push Notifications

The Push Notifications plugin package provides a way for you to register your APNs and Firebase push notification token at an agent, allowing you to use push notifications directly from Credo.

note

This document is for version 0.5.x of the @credo-ts/push-notifications package, that works with @credo-ts/core version 0.4.x. Extension packages (such as Push Notifications) are versioned separately from the core packages.

Installation

To add the Push Notifications plugin package to your existing project simply run:

npm i @credo-ts/push-notifications
+ + \ No newline at end of file diff --git a/guides/0.5/extensions/react-hooks.html b/guides/0.5/extensions/react-hooks.html index 3567e2c9..24c36e4a 100644 --- a/guides/0.5/extensions/react-hooks.html +++ b/guides/0.5/extensions/react-hooks.html @@ -4,13 +4,13 @@ React Hooks | Credo - - + +
-
Version: v0.5.x

React Hooks

The React Hooks package exposes useful React hooks that allow you to easily interact with Credo from a React client application.

These hooks provide a simple way to query agent data in a client application, allowing you to focus on the user interface.

note

This document is for version 0.5.x of the @aries-framework/react-hooks package, that works with @aries-framework/core version 0.4.x. Extension packages (such as React Hooks) are versioned separately from the core packages.

Installation

To add the React Hooks package to your existing project simply run:

npm i @aries-framework/react-hooks@^0.5

Usage

This package exposes useful React hooks that allow you to easily interact with Credo.

Everything exported from Hooks:

import AgentProvider, {
useAgent,
useConnections,
useConnectionById,
useCredentials,
useCredentialById,
useCredentialByState,
useProofs,
useProofById,
useProofByState,
} from '@aries-framework/react-hooks'

First step is to wrap your entire app in our <AgentProvider/>. The provider takes an initialized agent. The base of your app should look something like this:

import AgentProvider from '@aries-framework/react-hooks'

const App = () => {
const [agent, setAgent] = useState(undefined)

const initializeAgent = async () => {
const appAgent = new Agent({
/* agent options */
})
await appAgent.initialize()
setAgent(appAgent)
}

useEffect(() => {
initializeAgent()
}, [])

if (!agent) return <LoadingComponent />

return <AgentProvider agent={agent}>/* Your app here */</AgentProvider>
}

And that's it! Your app should be set up to receive all the necessary data your app will need! Now let's see how we actually get that data to our components.

The useAgent hook returns { agent, loading } so anytime you need access to any of the methods tied to the agent, you can useAgent() anywhere.

The following is an example of how you could use the useConnections hook to render a full list of all a user's connections.

import { useConnections } from '@aries-framework/react-hooks'

const MyConnectionsComponent = () => {
// all base hooks return an array of objects and a loading boolean
const { connections, loading } = useConnections()

return <FlatList data={connections} renderItem={({ item }) => <MyListItem connection={item} />} />
}

The three base hooks: useConnections, useCredentials, and useProofs work just like the above! Just call the hook, destructure the data, and pass it through!

Each base hook has a ById version that returns a singular record. For example if I wanted only a specific connectionRecord, I'd do this.

const connection = useConnectionById(id)

More commonly, you'll want to get a filtered list of records based off of their state. Well, Hooray! We have a ByState version as well. For example, you can do this:

const credentials = useCredentialByState(CredentialState.OfferReceived)
- - +
Version: v0.5.x

React Hooks

The React Hooks package exposes useful React hooks that allow you to easily interact with Credo from a React client application.

These hooks provide a simple way to query agent data in a client application, allowing you to focus on the user interface.

note

This document is for version 0.5.x of the @credo-ts/react-hooks package, that works with @credo-ts/core version 0.4.x. Extension packages (such as React Hooks) are versioned separately from the core packages.

Installation

To add the React Hooks package to your existing project simply run:

npm i @credo-ts/react-hooks@^0.5

Usage

This package exposes useful React hooks that allow you to easily interact with Credo.

Everything exported from Hooks:

import AgentProvider, {
useAgent,
useConnections,
useConnectionById,
useCredentials,
useCredentialById,
useCredentialByState,
useProofs,
useProofById,
useProofByState,
} from '@credo-ts/react-hooks'

First step is to wrap your entire app in our <AgentProvider/>. The provider takes an initialized agent. The base of your app should look something like this:

import AgentProvider from '@credo-ts/react-hooks'

const App = () => {
const [agent, setAgent] = useState(undefined)

const initializeAgent = async () => {
const appAgent = new Agent({
/* agent options */
})
await appAgent.initialize()
setAgent(appAgent)
}

useEffect(() => {
initializeAgent()
}, [])

if (!agent) return <LoadingComponent />

return <AgentProvider agent={agent}>/* Your app here */</AgentProvider>
}

And that's it! Your app should be set up to receive all the necessary data your app will need! Now let's see how we actually get that data to our components.

The useAgent hook returns { agent, loading } so anytime you need access to any of the methods tied to the agent, you can useAgent() anywhere.

The following is an example of how you could use the useConnections hook to render a full list of all a user's connections.

import { useConnections } from '@credo-ts/react-hooks'

const MyConnectionsComponent = () => {
// all base hooks return an array of objects and a loading boolean
const { connections, loading } = useConnections()

return <FlatList data={connections} renderItem={({ item }) => <MyListItem connection={item} />} />
}

The three base hooks: useConnections, useCredentials, and useProofs work just like the above! Just call the hook, destructure the data, and pass it through!

Each base hook has a ById version that returns a singular record. For example if I wanted only a specific connectionRecord, I'd do this.

const connection = useConnectionById(id)

More commonly, you'll want to get a filtered list of records based off of their state. Well, Hooray! We have a ByState version as well. For example, you can do this:

const credentials = useCredentialByState(CredentialState.OfferReceived)
+ + \ No newline at end of file diff --git a/guides/0.5/extensions/redux-store.html b/guides/0.5/extensions/redux-store.html index 886ed0f6..7146c39e 100644 --- a/guides/0.5/extensions/redux-store.html +++ b/guides/0.5/extensions/redux-store.html @@ -4,13 +4,13 @@ Redux Store | Credo - - + +
-
Version: v0.5.x

Redux Store

The Redux Store is an implementation of state management that can be used to build React & React Native SSI clients using Credo.

The Redux Store allows you to integrate state management for the most important parts of using Credo in a client application (mediation, connections, credentials and proofs), allowing you to sync UI state with the state of the agent as it interacts with other agents through the framework.

note

This document is for version 0.4.x of the @aries-framework/redux-store package, that works with @aries-framework/core version 0.4.x. Extension packages (such as Redux Store) are versioned separately from the core packages.

Installation

To add the Redux Store package to your existing project simply run:

npm i @aries-framework/redux-store
- - +
Version: v0.5.x

Redux Store

The Redux Store is an implementation of state management that can be used to build React & React Native SSI clients using Credo.

The Redux Store allows you to integrate state management for the most important parts of using Credo in a client application (mediation, connections, credentials and proofs), allowing you to sync UI state with the state of the agent as it interacts with other agents through the framework.

note

This document is for version 0.4.x of the @credo-ts/redux-store package, that works with @credo-ts/core version 0.4.x. Extension packages (such as Redux Store) are versioned separately from the core packages.

Installation

To add the Redux Store package to your existing project simply run:

npm i @credo-ts/redux-store
+ + \ No newline at end of file diff --git a/guides/0.5/extensions/rest.html b/guides/0.5/extensions/rest.html index 5f0490d5..8c00d6a9 100644 --- a/guides/0.5/extensions/rest.html +++ b/guides/0.5/extensions/rest.html @@ -4,13 +4,13 @@ REST API | Credo - - + +
-
Version: v0.5.x

REST API

The Credo REST API provides simple RESTful endpoints for Credo methods, to allow you stand up an agent for communication over the internet instantly. You simply provide your agent configuration. The REST endpoints allow you to interact with your agent over HTTP and WebSockets.

The Credo REST API is the most convenient way for self-sovereign identity (SSI) developers to interact with SSI agents.

  • Endpoints to create connections, issue credentials, and request proofs.
  • 💻 CLI that makes it super easy to start an instance of the REST API.
  • 🌐 Interoperable with all major Aries implementations.
danger

The @aries-framework/rest package has not been updated to work with the latest version (0.4.x) of @aries-framework/core. The documentation in this section is for version 0.9.x of the @aries-framework/rest package, that works with @aries-framework/core version 0.2.x. Extension packages (such as REST API) are versioned separately from the core packages.

Quick Setup

info

This guide assumes you have followed the install guides for the framework (See Getting Started section) for your platform and a valid Node.js project setup.

Using the CLI is the easiest way to get started with REST API.

You can do this directly on your machine.

Directly on computer

After installing and confirming that Libindy is installed, simply run:

npx -p @aries-framework/rest afj-rest start \
--label "Credo Rest" \
--wallet-id "walletId" \
--wallet-key "walletKey" \
--endpoint http://localhost:5000 \
--admin-port 3000 \
--outbound-transport http \
--inbound-transport http 5000

The REST API provides an OpenAPI schema that can easily be viewed using the SwaggerUI that is provided with the server. The endpoint documentation can be viewed at the /docs endpoint (e.g. http://localhost:3000/docs).

Configuration

To find out all available configuration options from the CLI, you can run the CLI command with --help. This will print a full list of all available options.

npx -p @aries-framework/rest afj-rest start --help
- - +
Version: v0.5.x

REST API

The Credo REST API provides simple RESTful endpoints for Credo methods, to allow you stand up an agent for communication over the internet instantly. You simply provide your agent configuration. The REST endpoints allow you to interact with your agent over HTTP and WebSockets.

The Credo REST API is the most convenient way for self-sovereign identity (SSI) developers to interact with SSI agents.

  • Endpoints to create connections, issue credentials, and request proofs.
  • 💻 CLI that makes it super easy to start an instance of the REST API.
  • 🌐 Interoperable with all major Aries implementations.
danger

The @credo-ts/rest package has not been updated to work with the latest version (0.4.x) of @credo-ts/core. The documentation in this section is for version 0.9.x of the @credo-ts/rest package, that works with @credo-ts/core version 0.2.x. Extension packages (such as REST API) are versioned separately from the core packages.

Quick Setup

info

This guide assumes you have followed the install guides for the framework (See Getting Started section) for your platform and a valid Node.js project setup.

Using the CLI is the easiest way to get started with REST API.

You can do this directly on your machine.

Directly on computer

After installing and confirming that Libindy is installed, simply run:

npx -p @credo-ts/rest credo-rest start \
--label "Credo Rest" \
--wallet-id "walletId" \
--wallet-key "walletKey" \
--endpoint http://localhost:5000 \
--admin-port 3000 \
--outbound-transport http \
--inbound-transport http 5000

The REST API provides an OpenAPI schema that can easily be viewed using the SwaggerUI that is provided with the server. The endpoint documentation can be viewed at the /docs endpoint (e.g. http://localhost:3000/docs).

Configuration

To find out all available configuration options from the CLI, you can run the CLI command with --help. This will print a full list of all available options.

npx -p @credo-ts/rest afj-rest start --help
+ + \ No newline at end of file diff --git a/guides/0.5/features.html b/guides/0.5/features.html new file mode 100644 index 00000000..a64edb5d --- /dev/null +++ b/guides/0.5/features.html @@ -0,0 +1,16 @@ + + + + + +Supported Features | Credo + + + + + + + + + \ No newline at end of file diff --git a/guides/0.5/features/aries.html b/guides/0.5/features/aries.html new file mode 100644 index 00000000..c086d9cc --- /dev/null +++ b/guides/0.5/features/aries.html @@ -0,0 +1,16 @@ + + + + + +Hyperledger Aries and Aries Interop Profile | Credo + + + + +
+
Version: v0.5.x

Hyperledger Aries and Aries Interop Profile

Initially, Credo was built as an Hyperledger Aries framework, focusing on implementing the Aries RFCs and supporting the Aries Interop Profile.

Support for Hyperledger Aries, DIDComm and AnonCreds is at the core of Credo, and thus if you're building an identity solution supporting these standards, Credo is a great fit.

Aries Interop Profile

Credo currently has full support for Aries Interop Profile 1.0 (AIP 1) as well as most of the features from Aries Interop Profile 2.0 (AIP 2)

The following table lists which parts of AIP 2 are supported by Credo:

FeatureSupportNotes
Base Requirements
Mediator Coordination
Indy Based CredentialsAlso support for the newer ledger-agnostic AnonCreds attachment format
JSON-LD Based Credentials
BBS+ Based Credentials
Chat related features
DIDCommm v2 Prep

Additional Aries RFCs

In addition to the Aries RFCs listed by the Aries Interop Profile, Credo also supports the following Aries RFCs:

Aries RFCSupportNotes
Aries RFC 0212 Pickup V1
Aries RFC 0685 Pickup V2
Aries RFC 0721 Revocation Notification V2
Aries RFC 0771: AnonCreds Attachment Format
Aries RFC 0794: DID Rotate V1

Divergence from Aries RFCs

Although Credo tries to follow the standards as described in the Aries RFCs as much as possible, some features in Credo slightly diverge from the written spec. Below is an overview of the features that diverge from the spec, their impact and the reasons for diverging.

FeatureImpactReason
Support for imageUrl attribute in connection invitation and connection requestProperties that are not recognized should be ignored, meaning this shouldn't limit interoperability between agents. As the image url is self-attested it could give a false sense of trust. Better, credential based, method for visually identifying an entity are not present yet.Even though not documented, almost all agents support this feature. Not including this feature means Credo is lacking in features in comparison to other implementations.
Revocation Notification v1 uses a different thread_id format ( indy::<revocation_registry_id>::<credential_revocation_id>) than specified in the Aries RFCAny agents adhering to the revocation notification v1 RFC will not be interoperable with Credo. However, revocation notification is considered an optional portion of revocation, therefore this will not break core revocation behavior. Ideally agents should use and implement revocation notification v2.Actual implementations (ACA-Py) of revocation notification v1 so far have implemented this different format, so this format change was made to remain interoperable.
+ + + + \ No newline at end of file diff --git a/guides/0.5/features/credentials.html b/guides/0.5/features/credentials.html new file mode 100644 index 00000000..7a32bd92 --- /dev/null +++ b/guides/0.5/features/credentials.html @@ -0,0 +1,16 @@ + + + + + +Verifiable Credentials | Credo + + + + +
+
Version: v0.5.x

Verifiable Credentials

One of the main features of Credo is the issuance and verification of Verifiable Credentials.

W3C Verifiable Credentials

W3C Verifiable Credentials are probably the most widely known credential format, and defined the World Wide Web Consortium (W3C).

Credo currently supports the issuance and verification of W3C Verifiable Credentials according to the Data Model v1.1, and support both the Linked Data Proof and Json Web Token (JWT) proof formats.

Issuance of W3C JWT credentials is not supported over DIDComm, while verification is supported

SD-JWT VC

Selective Disclosure JWT Verifiable Credentials are a special type of JWT Verifiable Credentials, that allow for selective disclosure of the claims in the credential.

Credo currently supports SD-JWT-based Verifiable Credentials (SD-JWT VC) - Draft 01.

Issuance of SD-JWT credentials is not supported over DIDComm, while verification is supported.

AnonCreds

Credo supports the issuance and verification of AnonCreds credentials. AnonCreds credentials are a bit 'heavier' to implement and support than other credential formats, but allow for the best unlinkability.

Issuance and verification of AnonCreds credentials is only available over DIDComm.

+ + + + \ No newline at end of file diff --git a/guides/0.5/features/dids.html b/guides/0.5/features/dids.html new file mode 100644 index 00000000..75a778dd --- /dev/null +++ b/guides/0.5/features/dids.html @@ -0,0 +1,16 @@ + + + + + +Decentralized Identifiers | Credo + + + + +
+
Version: v0.5.x

Decentralized Identifiers

Decentralized identifiers are a core components of Credo, and used everywhere in the framework.

The base DID implementation allows all components within the framework (whether it be credential signing, sending messages over DIDComm, or verifying a SIOPv2 ID Token) to leverage DIDs. The pluggable DID Resolver and DID Registrar interfaces allow for easy extension of the supported DID methods.

In addition, any DID can be imported into the framework, meaning it can be used for signing of credentials and DIDComm, without needing a DID Registrar to register the DID.

Supported DID Methods

Currently the following DID methods are supported by Credo:

MethodNote
did:key
did:jwk
did:peerNot supported for OpenID4VC
did:webNo registrar available, but you can use the DidDocumentBuilder to build and later import the DID Document.
did:cheqdAvailable through the @credo-ts/cheqd package.
did:indyAvailable through the @credo-ts/indy-vdr package.
did:sovAvailable through the @credo-ts/indy-vdr package.
+ + + + \ No newline at end of file diff --git a/guides/0.5/features/openid4vc.html b/guides/0.5/features/openid4vc.html new file mode 100644 index 00000000..ef71647a --- /dev/null +++ b/guides/0.5/features/openid4vc.html @@ -0,0 +1,16 @@ + + + + + +OpenID for Verifiable Credentials | Credo + + + + +
+
Version: v0.5.x

OpenID for Verifiable Credentials

Since Credo 0.4, support was added to receive credentials using OpenID for Verifiable Credential Issuance, and since 0.5 support was added for all the other OpenID for Verifiable Credential flows.

This means Credo has support for OpenID for Verifiable Credential Issuance, OpenID for Verifiable Presentations, and Self-Issued OpenID Provider v2.

caution

Support for OpenID for Verifiable Credentials in Credo is still in an experimental phase, and thus is subject to breaking changes. Also, due to the early stages of these specifications, supported draft versions and flows may change and evolve. As early adopters it’s important to align with the evolving specs, and we are doing out best to keep up-to-date without breaking existing deployments.

Currently, work is ongoing to update the supported versions for OpenID4VC to the latest available Draft versions:

  • OpenID for Verifiable Credential Issuance - Draft 12
  • OpenID for Verifiable Presentations - Draft 20
  • Self-Issued OpenID Provider - Draft 13

OpenID for Verifiable Credential Issuance

OpenID for Verifiable Credential Issuance - Draft 11 is supported, but only the immediate issuance using the Pre-Authorized Code flow. The deferred endpoint, batch endpoints and Authorized Code Flow are not supported at the moment.

OpenID for Verifiable Presentations

OpenID for Verifiable Presentations - Implementers Draft 1 (Draft 8) is supported for requesting and presenting verifiable presentations as part of an authorization request and response. OpenID for Verifiable Presentations is only supported in combination with Self-Issued OpenID Provider V2.

Self-Issued OpenID Provider v2

Self-Issued OpenID Provider V2 - Implementers Draft 1 (Draft 7) is supported for allowing holders of credentials to act as their own OpenID Provider, and present credentials to a verifier without the need for a third party. Both SIOPv2 authentication requests and responses with verifiable presentations (using VP Token) or without (using ID Token for e.g. DID authentication) are supported.

+ + + + \ No newline at end of file diff --git a/guides/0.5/getting-started.html b/guides/0.5/getting-started.html index 04b9cb2a..41804f28 100644 --- a/guides/0.5/getting-started.html +++ b/guides/0.5/getting-started.html @@ -4,13 +4,13 @@ Getting started | Credo - - + +
-
Version: v0.5.x

Getting started

In this section we will go over everything you need to get started on a technical level. First there are some general prerequisites for Node.JS and React Native. Credo works for creating both server-side applications (commonly but not always for creating issuer and verifier agents) and mobile applications (commonly holder agents).

Based on the platform you want to work on, the installation guides you should follow are the same, but some steps may differ.

Do you want to build a mobile app?

Do you want to build a server-side app?

- - +
Version: v0.5.x

Getting started

In this section we will go over everything you need to get started on a technical level. First there are some general prerequisites for Node.JS and React Native. Credo works for creating both server-side applications (commonly but not always for creating issuer and verifier agents) and mobile applications (commonly holder agents).

Based on the platform you want to work on, the installation guides you should follow are the same, but some steps may differ.

Do you want to build a mobile app?

Do you want to build a server-side app?

+ + \ No newline at end of file diff --git a/guides/0.5/getting-started/prerequisites.html b/guides/0.5/getting-started/prerequisites.html index 203fad0b..865205a2 100644 --- a/guides/0.5/getting-started/prerequisites.html +++ b/guides/0.5/getting-started/prerequisites.html @@ -4,13 +4,13 @@ Prerequisites | Credo - - + +
-
Version: v0.5.x

Prerequisites

To work with Credo we need to install some dependencies and set-up our Node.JS environment. Even when creating a mobile app in React Native, we need Node.JS installed. We will go over the specific installation process for each platform. Go ahead and pick your system of choice to get started!

The specific items that we set-up:

Node.JS

NodeJS is the most popular JavaScript runtime environment excluding browsers. It can run on your desktop or even a server.

You can download it from the Node.JS Website

NPM

The Node Package Manager comes pre-bundled with the NodeJS installation from above.

Yarn

Only required when not using npm

For every platform, the installation of yarn is the same.

npm install --global yarn

Project Setup

Finally, you need to make sure you have a project set-up using Node.JS or React Native. If you're not familiar with setting up a project, we suggest following the Introduction to Node.JS or React Native Quickstart guides.

- - +
Version: v0.5.x

Prerequisites

To work with Credo we need to install some dependencies and set-up our Node.JS environment. Even when creating a mobile app in React Native, we need Node.JS installed. We will go over the specific installation process for each platform. Go ahead and pick your system of choice to get started!

The specific items that we set-up:

Node.JS

NodeJS is the most popular JavaScript runtime environment excluding browsers. It can run on your desktop or even a server.

You can download it from the Node.JS Website

NPM

The Node Package Manager comes pre-bundled with the NodeJS installation from above.

Yarn

Only required when not using npm

For every platform, the installation of yarn is the same.

npm install --global yarn

Project Setup

Finally, you need to make sure you have a project set-up using Node.JS or React Native. If you're not familiar with setting up a project, we suggest following the Introduction to Node.JS or React Native Quickstart guides.

+ + \ No newline at end of file diff --git a/guides/0.5/getting-started/set-up.html b/guides/0.5/getting-started/set-up.html index 979da94e..0d408e5e 100644 --- a/guides/0.5/getting-started/set-up.html +++ b/guides/0.5/getting-started/set-up.html @@ -4,14 +4,13 @@ Agent Setup | Credo - - + +
-
Version: v0.5.x

Agent Setup

info

This guide assumes you have followed the Prerequisites, and you have a valid -Node.JS or React Native project setup.

caution

Credo is still in active development, and as such some APIs are still experimental. When using any experimental features, make sure to use an exact version of Credo (0.4.0) instead of a range (^0.4.0), to prevent accidental breaking changes. If you're not leveraging any experimental features, you can use a range (^0.4.0) to get the latest bugfixes and features.

For Credo 0.4.x, the following features are experimental:

  • Implementing your own AnonCredsRegistry and AnonCreds service implementation.
  • Using the shared component libraries from @aries-framework/aries-askar, @aries-framework/indy-vdr and @aries-framework/anoncreds-rs
  • Using OpenID4VC from the @aries-framework/openid4vc-client module
  • W3C JWT Verifiable Credentials
  • Using multi-tenancy from the @aries-framework/tenants module
  • Using BBS+ Signatures from the @aries-framework/bbs-signatures module
  • Using the cheqd module from the @aries-framework/cheqd module

Installing the required dependencies

First we have to install the minimal amount of dependencies that are required -for configuring an Credo agent.

yarn add @aries-framework/core@^0.4.0 @aries-framework/node@^0.4.0

Additional setup

No additional setup is required for Node.JS

- - + + \ No newline at end of file diff --git a/guides/0.5/getting-started/set-up/anoncreds-rs.html b/guides/0.5/getting-started/set-up/anoncreds-rs.html deleted file mode 100644 index 56d515ba..00000000 --- a/guides/0.5/getting-started/set-up/anoncreds-rs.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -AnonCreds RS | Credo - - - - -
-
Version: v0.5.x

AnonCreds RS

AnonCreds RS is a direct implementation of the AnonCreds V1.0 specification that provides functionality like; creating a schema object, creating a credential definition object, creating a credential, verifying a proof presentation and much more.

caution

Support for the AnonCreds RS library in Credo is currently experimental. We recommend new projects to use AnonCreds RS from the start, and also to migrate existing projects to AnonCreds, from the Indy Sdk. However, projects may experience some issues. If you encounter any issues, please open an issue.

Currently, there are few limitations to using AnonCreds RS.

  • When running in Node.JS, only Node.JS 18 is supported for now. See Supported Node.JS versions for AnonCreds RS
  • Install scripts rely on bash command substitution to get the proper binaries for each system architecture and platform. Therefore, if you are under Windows, you must configure npm or yarn to use a bash-compliant shell (e.g. npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe")

Installing AnonCreds RS

When using Credo with AnonCreds RS, there are a few extra dependencies that need to be installed. We need to install @hyperledger/anoncreds package, which contains the interfaces, and @hyperledger/anoncreds-rs package which is an implementation which depends on a wrapper of anoncreds-rs. Secondly, we need to add native bindings for the specific platform @hyperledger/anoncreds-<platform>. Currently there are bindings for Node.JS, as @hyperledger/anoncreds-nodejs, and React Native as @hyperlegder/anoncreds-react-native.

yarn add @aries-framework/anoncreds@^0.4.0 @aries-framework/anoncreds-rs@^0.4.0 @hyperledger/anoncreds-nodejs@^0.1.0

Adding AnonCreds RS to the agent

After installing the dependencies, we should register both the AnonCreds and AnonCredsRs module on the agent.

import { Agent } from '@aries-framework/core'
import { agentDependencies } from '@aries-framework/node'
import { AskarModule } from '@aries-framework/askar'
import { ariesAskar } from '@hyperledger/aries-askar-nodejs'

import { anoncreds } from '@hyperledger/anoncreds-nodejs'
import { AnonCredsModule } from '@aries-framework/anoncreds'
import { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'
import { IndyVdrAnonCredsRegistry } from '@aries-framework/indy-vdr'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
// Register the Askar module on the agent
// This is included as we need a wallet on our agent
askar: new AskarModule({
ariesAskar,
}),
anoncredsRs: new AnonCredsRsModule({
anoncreds,
}),
anoncreds: new AnonCredsModule({
// Here we add an Indy VDR registry as an example, any AnonCreds registry
// can be used
registries: [new IndyVdrAnonCredsRegistry()],
}),
},
})

Configuration

As you can see, the AnonCreds module takes a list of registry modules. These modules will be used to resolve the AnonCreds objects. We recommend Indy VDR as an AnonCreds registry for Hyperledger Indy networks, but Indy SDK can also be used.

Supported Node.JS versions for AnonCreds RS

Due to an issue in ref-napi (which is used in the Node.JS bindings for AnonCreds RS), performance for AnonCreds RS in Node.JS is not as expected. A patched version for ref-napi has been published that fixes this issue, but this only works in Node.JS 18+.

To use AnonCreds RS in Node.JS, make sure you're using Node.JS 18 and patch the ref-napi package to point towards @2060.io/ref-napi in your package.json:

Using NPM overrides we can point the ref-napi package to @2060.io/ref-napi.

{
"overrides": {
"ref-napi": "npm:@2060.io/ref-napi"
}
}
- - - - \ No newline at end of file diff --git a/guides/0.5/getting-started/set-up/anoncreds.html b/guides/0.5/getting-started/set-up/anoncreds.html new file mode 100644 index 00000000..4112cfc6 --- /dev/null +++ b/guides/0.5/getting-started/set-up/anoncreds.html @@ -0,0 +1,16 @@ + + + + + +AnonCreds | Credo + + + + +
+
Version: v0.5.x

AnonCreds

The AnonCreds module provides functionality for issuing and verifying AnonCreds credentials in Credo. The AnonCreds implementation is based on AnonCreds RS, a direct implementation of the AnonCreds V1.0 specification that provides functionality like; creating a schema object, creating a credential definition object, creating a credential, verifying a proof presentation and much more.

Installing

When using Credo with AnonCreds, there are a few extra dependencies that need to be installed. We need to install @credo-ts/anoncreds package, which contains the interfaces, and @hyperledger/anoncreds-<platform> package which is an implementation which depends on a wrapper of anoncreds-rs. Currently there are bindings for Node.JS, as @hyperledger/anoncreds-nodejs, and React Native as @hyperlegder/anoncreds-react-native.

yarn add @credo-ts/anoncreds@^0.5.0 @hyperledger/anoncreds-nodejs@^0.2.0

Adding AnonCreds to the agent

After installing the dependencies, we should register the AnonCredsModule on the agent.

import { Agent } from '@credo-ts/core'
import { agentDependencies } from '@credo-ts/node'
import { AskarModule } from '@credo-ts/askar'
import { ariesAskar } from '@hyperledger/aries-askar-nodejs'

import { anoncreds } from '@hyperledger/anoncreds-nodejs'
import { AnonCredsModule } from '@credo-ts/anoncreds'
import { IndyVdrAnonCredsRegistry } from '@credo-ts/indy-vdr'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
// Register the Askar module on the agent
// This is included as we need a wallet on our agent
askar: new AskarModule({
ariesAskar,
}),
anoncreds: new AnonCredsModule({
// Here we add an Indy VDR registry as an example, any AnonCreds registry
// can be used
registries: [new IndyVdrAnonCredsRegistry()],
anoncreds,
}),
},
})

Configuration

As you can see, the AnonCreds module takes a list of registry modules. These modules will be used to resolve the AnonCreds objects. Indy VDR can be used as an AnonCreds registry for Hyperledger Indy networks, and Cheqd can be used as an AnonCreds registry for Cheqd networks.

+ + + + \ No newline at end of file diff --git a/guides/0.5/getting-started/set-up/aries-askar.html b/guides/0.5/getting-started/set-up/aries-askar.html index 28c61c75..a35a004b 100644 --- a/guides/0.5/getting-started/set-up/aries-askar.html +++ b/guides/0.5/getting-started/set-up/aries-askar.html @@ -4,13 +4,13 @@ Aries Askar | Credo - - + +
-
Version: v0.5.x

Aries Askar

Aries Askar provides secure, encrypted storage and cryptographic support for encrypting, decrypting, signing and verifying data. It also provides both the Wallet and StorageService implementations for the agent.

caution

Although Aries Askar is stable and already used in production in agents such as Aries Cloud Agent Python, support for Aries Askar in Credo is currently experimental. We recommend new projects to use Aries Askar from the start, and also to migrate existing projects to Aries Askar. However, projects may experience some issues. If you encounter any issues, please open an issue.

Currently, there are few limitations to using Aries Askar.

  • When running in Node.JS, only Node.JS 18 is supported for now. See Supported Node.JS versions for Aries Askar
  • Install scripts rely on bash command substitution to get the proper binaries for each system architecture and platform. Therefore, if you are under Windows, you must configure npm or yarn to use a bash-compliant shell (e.g. npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe")
tip

If you're upgrading from the Indy SDK to Aries Askar, see Migrating from an Indy SDK Wallet to Aries Askar

Installing Aries Askar

When using Credo with Aries Askar, there are a few extra dependencies that need to be installed. We need to install the @aries-framework/askar package, which implements the needed interfaces for the agent. Secondly, we need to add native bindings for the specific platform @hyperledger/aries-askar-<platform>. Currently there are bindings for Node.JS, as @hyperledger/aries-askar-nodejs, and React Native as @hyperlegder/aries-askar-react-native.

yarn add @aries-framework/askar@^0.4.0 @hyperledger/aries-askar-nodejs@^0.1.0

Adding Aries Askar to the Agent

After installing the dependencies, we can register the Askar Module on the agent.

import { Agent } from '@aries-framework/core'
import { agentDependencies } from '@aries-framework/node'
import { AskarModule } from '@aries-framework/askar'
import { ariesAskar } from '@hyperledger/aries-askar-nodejs'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
// Register the Askar module on the agent
askar: new AskarModule({
ariesAskar,
}),
},
})

Supported Node.JS versions for Aries Askar

Due to an issue in ref-napi (which is used in the Node.JS bindings for Aries Askar), performance for Aries Askar in Node.JS is not as expected. A patched version for ref-napi has been published that fixes this issue, but this only works in Node.JS 18+.

To use Aries Askar in Node.JS, make sure you're using Node.JS 18 and patch the ref-napi package to point towards @2060.io/ref-napi in your package.json:

Using NPM overrides we can point the ref-napi package to @2060.io/ref-napi.

{
"overrides": {
"ref-napi": "npm:@2060.io/ref-napi"
}
}
- - +
Version: v0.5.x

Aries Askar

Aries Askar provides secure, encrypted storage and cryptographic support for encrypting, decrypting, signing and verifying data. It also provides both the Wallet and StorageService implementations for the agent.

tip

If you're upgrading from the Indy SDK to Aries Askar, see Migrating from an Indy SDK Wallet to Aries Askar

Installing Aries Askar

When using Credo with Aries Askar, there are a few extra dependencies that need to be installed. We need to install the @credo-ts/askar package, which implements the needed interfaces for the agent. Secondly, we need to add native bindings for the specific platform @hyperledger/aries-askar-<platform>. Currently there are bindings for Node.JS, as @hyperledger/aries-askar-nodejs, and React Native as @hyperlegder/aries-askar-react-native.

yarn add @credo-ts/askar@^0.5.0 @hyperledger/aries-askar-nodejs@^0.2.0

Adding Aries Askar to the Agent

After installing the dependencies, we can register the Askar Module on the agent.

import { Agent } from '@credo-ts/core'
import { agentDependencies } from '@credo-ts/node'
import { AskarModule } from '@credo-ts/askar'
import { ariesAskar } from '@hyperledger/aries-askar-nodejs'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
// Register the Askar module on the agent
askar: new AskarModule({
ariesAskar,
}),
},
})
+ + \ No newline at end of file diff --git a/guides/0.5/getting-started/set-up/cheqd.html b/guides/0.5/getting-started/set-up/cheqd.html index bf5cd456..8aa695f2 100644 --- a/guides/0.5/getting-started/set-up/cheqd.html +++ b/guides/0.5/getting-started/set-up/cheqd.html @@ -4,13 +4,13 @@ cheqd | Credo - - + +
-
Version: v0.5.x

cheqd

cheqd is a blockchain network, built in the Cosmos ecosystem for Self-Sovereign Identity (SSI). The cheqd Network leverages the cheqd DID method and enables DID-Linked Resources to be written to the network, associated with a DID and controlled using the verification methods in the DID Document.

Through this approach, the cheqd Network is able to natively support the Ledger Agnostic AnonCreds Specification (v1.0) through its AnonCreds Object Method (as well as VC-JWT and JSON-LD).

cheqd also has a dedicated token, $CHEQ, used for identity writes to the network, voting in a decentralised governance framework as well as for various payment flows between verifiers, holders and issuers of Verifiable Credentials.

Installing cheqd

When using Credo with the cheqd, there's a few extra dependencies that need to be installed. We need to install the @aries-framework/cheqd package, which implements the needed interfaces for the agent.

React Native

To enable react-native support we need to follow the steps below

In the package.json file add the below code snippet, which replaces the cosmjs dependencies witht he cosmjs-rn packages

Using NPM overrides we can point the cosmjs packages to cosmjs-rn.

{
"overrides": {
"@cosmjs/amino": "npm:@cosmjs-rn/amino@^0.27.1",
"@cosmjs/encoding": "npm:@cosmjs-rn/encoding@^0.27.1",
"@cosmjs/math": "npm:@cosmjs-rn/math@^0.27.1",
"@cosmjs/stargate": "npm:@cosmjs-rn/stargate@^0.27.1",
"@cosmjs/tendermint-rpc": "npm:@cosmjs-rn/tendermint-rpc@^0.27.1",
"@cosmjs/utils": "npm:@cosmjs-rn/utils@^0.27.1",
"@cosmjs/proto-signing": "npm:@cosmjs-rn/proto-signing@^0.27.1",
"@cosmjs/crypto": "npm:@cosmjs-rn/crypto@^0.27.1"
}
}

Following that we need to add a buffer polyfill

yarn add buffer

create a shim.js file with the below code snippet

import { Buffer } from 'buffer'
global.Buffer = Buffer

import shim.js file into your file where the App is imported

Adding the cheqd to the Agent

After installing the dependencies, we can register the cheqd Module on the agent by adding the below code snippet to the agent constructor.

import { Agent, DidsModule, KeyType, DidDocument } from '@aries-framework/core'
import { agentDependencies } from '@aries-framework/react-native'
import { AskarModule } from '@aries-framework/askar'
import { ariesAskar } from '@hyperledger/aries-askar-react-native'

import {
CheqdAnonCredsRegistry,
CheqdDidRegistrar,
CheqdDidResolver,
CheqdModule,
CheqdModuleConfig,
CheqdDidCreateOptions,
} from '@aries-framework/cheqd'
import { AnonCredsModule } from '@aries-framework/anoncreds'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
dids: new DidsModule({
registrars: [new CheqdDidRegistrar()],
resolvers: [new CheqdDidResolver()],
}),

// AnonCreds
anoncreds: new AnonCredsModule({
registries: [new CheqdAnonCredsRegistry()],
}),

// Add cheqd module
cheqd: new CheqdModule(
new CheqdModuleConfig({
networks: [
{
network: '<mainnet or testnet>',
cosmosPayerSeed: '<cosmos payer seed or mnemonic>',
},
],
})
),
// Indy VDR can optionally be used with Askar as wallet and storage implementation
askar: new AskarModule({
ariesAskar,
}),
},
})

The cosmosPayerSeed can be a 32-bit seed value or a mnemonic, which can be managed using Keplr wallet which can be installed on a mobile or as a browser extension in chrome or safari which allows user's to create accounts, exchange tokens etc. To setup keplr wallet for cheqd follow this tutorial

- - +
Version: v0.5.x

cheqd

cheqd is a blockchain network, built in the Cosmos ecosystem for Self-Sovereign Identity (SSI). The cheqd Network leverages the cheqd DID method and enables DID-Linked Resources to be written to the network, associated with a DID and controlled using the verification methods in the DID Document.

Through this approach, the cheqd Network is able to natively support the Ledger Agnostic AnonCreds Specification (v1.0) through its AnonCreds Object Method (as well as VC-JWT and JSON-LD).

cheqd also has a dedicated token, $CHEQ, used for identity writes to the network, voting in a decentralised governance framework as well as for various payment flows between verifiers, holders and issuers of Verifiable Credentials.

Installing cheqd

When using Credo with the cheqd, there's a few extra dependencies that need to be installed. We need to install the @credo-ts/cheqd package, which implements the needed interfaces for the agent.

React Native

To enable react-native support we need to follow the steps below

In the package.json file add the below code snippet, which replaces the cosmjs dependencies with he cosmjs-rn packages

Using NPM overrides we can point the cosmjs packages to cosmjs-rn.

{
"overrides": {
"@cosmjs/amino": "npm:@cosmjs-rn/amino@^0.27.1",
"@cosmjs/encoding": "npm:@cosmjs-rn/encoding@^0.27.1",
"@cosmjs/math": "npm:@cosmjs-rn/math@^0.27.1",
"@cosmjs/stargate": "npm:@cosmjs-rn/stargate@^0.27.1",
"@cosmjs/tendermint-rpc": "npm:@cosmjs-rn/tendermint-rpc@^0.27.1",
"@cosmjs/utils": "npm:@cosmjs-rn/utils@^0.27.1",
"@cosmjs/proto-signing": "npm:@cosmjs-rn/proto-signing@^0.27.1",
"@cosmjs/crypto": "npm:@cosmjs-rn/crypto@^0.27.1"
}
}

Following that we need to add a buffer polyfill

yarn add buffer

create a shim.js file with the below code snippet

import { Buffer } from 'buffer'
global.Buffer = Buffer

import shim.js file into your file where the App is imported

Adding the cheqd to the Agent

After installing the dependencies, we can register the cheqd Module on the agent by adding the below code snippet to the agent constructor.

import { Agent, DidsModule, KeyType, DidDocument } from '@credo-ts/core'
import { agentDependencies } from '@credo-ts/react-native'
import { AskarModule } from '@credo-ts/askar'
import { ariesAskar } from '@hyperledger/aries-askar-react-native'

import {
CheqdAnonCredsRegistry,
CheqdDidRegistrar,
CheqdDidResolver,
CheqdModule,
CheqdModuleConfig,
CheqdDidCreateOptions,
} from '@credo-ts/cheqd'
import { AnonCredsModule } from '@credo-ts/anoncreds'
import { anoncreds } from '@hyperledger/anoncreds-react-native'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
dids: new DidsModule({
registrars: [new CheqdDidRegistrar()],
resolvers: [new CheqdDidResolver()],
}),

// AnonCreds
anoncreds: new AnonCredsModule({
registries: [new CheqdAnonCredsRegistry()],
anoncreds,
}),

// Add cheqd module
cheqd: new CheqdModule(
new CheqdModuleConfig({
networks: [
{
network: '<mainnet or testnet>',
cosmosPayerSeed: '<cosmos payer seed or mnemonic>',
},
],
})
),
// Indy VDR can optionally be used with Askar as wallet and storage implementation
askar: new AskarModule({
ariesAskar,
}),
},
})

The cosmosPayerSeed can be a 32-bit seed value or a mnemonic, which can be managed using Keplr wallet which can be installed on a mobile or as a browser extension in chrome or safari which allows user's to create accounts, exchange tokens etc. To setup keplr wallet for cheqd follow this tutorial

+ + \ No newline at end of file diff --git a/guides/0.5/getting-started/set-up/indy-sdk.html b/guides/0.5/getting-started/set-up/indy-sdk.html deleted file mode 100644 index dc80e899..00000000 --- a/guides/0.5/getting-started/set-up/indy-sdk.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -Indy SDK | Credo - - - - -
-
Version: v0.5.x

Indy SDK

Indy SDK provides a distributed ledger based foundation for self-sovereign identity. It can provide the Wallet and StorageService implementations for the agent, as well as a way to interact with Indy ledgers and an implementation of the legacy (v0.1) AnonCreds Specification

caution

The Indy SDK integration in Credo is currently in maintenance mode. We recommend new projects to use Aries Askar from the start, and also to migrate existing projects to Aries Askar.

caution

The AnonCreds implementation from the Indy SDK only supports the Hyperledger Indy Legacy AnonCreds Method (the pre-standardized implementation), and doesn't support the new Ledger Agnostic AnonCreds Specification (v1.0). Use the new AnonCreds Rust implementation, which is also supported by Credo, in combination with Aries Askar and Indy VDR to replace the bevhaviour of the Indy SDK, and support the new features these libraries have to offer.

Installing the Indy SDK

When using Credo with the Indy SDK, there's a few extra dependencies that need to be installed. We need to install the @aries-framework/indy-sdk package, which implements the needed interfaces for the agent. Secondly, we need to install the native Indy SDK library and the bindings for our specific platform. Currently there are bindings for Node.JS and React Native.

To start off, install the native Indy SDK library. The setup for this depends on the platform you are using. Follow the instructions for your platform below.

After the native Indy SDK library is installed, we can add the Indy SDK libraries.

yarn add @aries-framework/indy-sdk@^0.4.0 indy-sdk

And install the needed types

yarn add --dev @types/indy-sdk

Adding the Indy SDK to the Agent

After installing the dependencies, we can register the Indy SDK Module on the agent.

import { Agent } from '@aries-framework/core'
import { agentDependencies } from '@aries-framework/node'
import { IndySdkModule } from '@aries-framework/indy-sdk'
import indySdk from 'indy-sdk'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
// Register the Indy SDK module on the agent
indySdk: new IndySdkModule({
indySdk,
}),
},
})
- - - - \ No newline at end of file diff --git a/guides/0.5/getting-started/set-up/indy-sdk/linux.html b/guides/0.5/getting-started/set-up/indy-sdk/linux.html deleted file mode 100644 index 83cc0233..00000000 --- a/guides/0.5/getting-started/set-up/indy-sdk/linux.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - -Linux | Credo - - - - -
-
Version: v0.5.x

Linux

To install Indy SDK on Linux, a couple of dependencies are required. This guide covers the installation for the more popular Linux distributions.

Libsodium

Libsodium is used by the Indy SDK for encryption, decryption, hashing and signing.

pacman -S libsodium

Libzmq

Libzmq is a lightweight messaging queue used by the Indy SDK.

pacman -S zeromq

Indy SDK

All the steps mentioned here are distribution independent. As the Indy SDK doesn't provide binaries for many releases, we will build it from source. This does mean that some additional requirements are necessary, like -Rust.

Downloading Rust is as easy as executing the -following command:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

This will install Rustup which is the installer for -Rust.

With Rust, we can now build the -Indy SDK from source.

First, clone the repository in a temporary directory:

git clone https://github.com/hyperledger/indy-sdk

Secondly, go to the correct directory

cd indy-sdk/libindy

Third, build the library

cargo build --release

Lastly, move the library to the correct location

sudo mv target/release/libindy.so /usr/lib/libindy.so

Confirm installation

To see whether the Indy SDK is correctly installed on your system, run the following command and it should not error.

npx -p @aries-framework/node@^0.3 is-indy-installed
- - - - \ No newline at end of file diff --git a/guides/0.5/getting-started/set-up/indy-sdk/macos-arm.html b/guides/0.5/getting-started/set-up/indy-sdk/macos-arm.html deleted file mode 100644 index 4a3033fe..00000000 --- a/guides/0.5/getting-started/set-up/indy-sdk/macos-arm.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - -macOS (ARM) | Credo - - - - -
-
Version: v0.5.x

macOS (ARM)

To install Indy SDK on macOS, a couple of dependencies are required. This guide covers the installation of the Indy SDK for macs with an ARM processor. For installing the Indy SDK on Intel based macs, please refer to the Indy SDK macOS (Intel) guide.

info

This installation assumes that you have brew installed. If not, please install it via this command:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Libsodium

Libsodium is used by the Indy SDK for encryption, decryption, hashing and signing.

brew install libsodium

Libzmq

Libzmq is a lightweight messaging queue used by the Indy SDK.

brew install zeromq

Indy SDK

The Indy SDK does not been distributed properly for macOS. We have a pre-built library available that can -be downloaded. If you prefer to build from source, you can follow the instructions in the Indy SDK repository

First, download the pre-built library from Google Drive.

After this, open Finder, control+click on the library and click on open. -This is something that has to be done as the library is not properly signed.

Lastly the library just has to be moved to the correct location.

caution

If you downloaded the file in another directory, please change the first part of this command

sudo mv ~/Downloads/libindy.dylib /usr/local/lib/

Confirm installation

To see whether the Indy SDK is correctly installed on your system, run the following command and it should not error.

npx -p @aries-framework/node@^0.3 is-indy-installed
- - - - \ No newline at end of file diff --git a/guides/0.5/getting-started/set-up/indy-sdk/macos-intel.html b/guides/0.5/getting-started/set-up/indy-sdk/macos-intel.html deleted file mode 100644 index 05b64283..00000000 --- a/guides/0.5/getting-started/set-up/indy-sdk/macos-intel.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -macOS (Intel) | Credo - - - - -
-
Version: v0.5.x

macOS (Intel)

To install Indy SDK on macOS a couple of dependencies are required. This guide covers the installation of the Indy SDK for macs with an Intel processor. For installing the Indy SDK on ARM based macs, please refer to the Indy SDK macOS (ARM) guide.

info

This installation assumes that you have brew installed. If not, please install it via this command:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Indy SDK

The Indy SDK has not been distributed properly for macOS. We have made a brew tap for libindy and it will also install all of the required dependencies.

brew install blu3beri/libindy/libindy

Confirm installation

To see whether the Indy SDK is correctly installed on your system, run the following command and it should not error.

npx -p @aries-framework/node@^0.3 is-indy-installed
- - - - \ No newline at end of file diff --git a/guides/0.5/getting-started/set-up/indy-sdk/react-native.html b/guides/0.5/getting-started/set-up/indy-sdk/react-native.html deleted file mode 100644 index cdc5398a..00000000 --- a/guides/0.5/getting-started/set-up/indy-sdk/react-native.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -React Native | Credo - - - - -
-
Version: v0.5.x

React Native

The setup of Indy SDK for React Native is rather different than Node.JS. We do not have to install dependencies on the host-platform, but for the build target. For React Native this would be the Indy SDK for Android & iOS. This guide covers both the Android and iOS setup, as in most React Native projects you will need both.

Expo

If you're using Expo, the recommended way to install the Indy SDK is by using the Indy SDK Expo Plugin. This will correclty set-up your project with the Indy SDK using an Expo Config Plugin for both iOS and Android.

Refer to the Indy SDK Expo Plugin repository for installation instructions.

Without Expo

When not using Expo, you will need to set-up the Indy SDK for both Android and iOS using the indy-sdk-react-native package directly. Refer to the Indy SDK React Native repository for installation instructions.

- - - - \ No newline at end of file diff --git a/guides/0.5/getting-started/set-up/indy-sdk/windows.html b/guides/0.5/getting-started/set-up/indy-sdk/windows.html deleted file mode 100644 index 7ac23f46..00000000 --- a/guides/0.5/getting-started/set-up/indy-sdk/windows.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - -Windows | Credo - - - - -
-
Version: v0.5.x

Windows

To install Indy SDK on Windows, you can download the pre-built binary from the Sovrin repository.

Once downloaded, extract the zip into a permanent location.

Next, go to environment variables on your system and click on new at -System Variables. The name MUST be LD_LIBRARY_PATH and the value MUST be -the path to the extracted libraries.

Confirm installation

To see whether the Indy SDK is correctly installed on your system, run the following command and it should not error.

npx -p @aries-framework/node@^0.3 is-indy-installed
- - - - \ No newline at end of file diff --git a/guides/0.5/getting-started/set-up/indy-vdr.html b/guides/0.5/getting-started/set-up/indy-vdr.html index e9c47bd8..0ed7c4d4 100644 --- a/guides/0.5/getting-started/set-up/indy-vdr.html +++ b/guides/0.5/getting-started/set-up/indy-vdr.html @@ -4,13 +4,13 @@ Indy VDR | Credo - - + +
-
Version: v0.5.x

Indy VDR

Hyperledger Indy VDR, Verifiable Data Registry, can be used to connect to one or more Indy Node ledger pools given sets of genesis transactions. Methods are provided to construct ledger requests and send them to the validators, collecting the results and ensuring that there is a consensus between the nodes. In the context of Credo, we mainly leverage it to register, and resolve, schemas, credential definitions and DIDs.

caution

Support for Indy VDR in Credo is currently experimental. We recommend new projects to use Indy VDR from the start, and also to migrate existing projects to Indy VDR, from the indy-sdk. However, projects may experience some issues. If you encounter any issues, please open an issue.

Currently, there are few limitations to using Indy VDR.

  • When running in Node.JS, only Node.JS 18 is supported for now. See Supported Node.JS versions for Indy VDR
  • Install scripts rely on bash command substitution to get the proper binaries for each system architecture and platform. Therefore, if you are under Windows, you must configure npm or yarn to use a bash-compliant shell (e.g. npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe")

Installing Indy VDR

When using Credo with Indy VDR, there are a few extra dependencies that need to be installed. We need to install the @hyperledger/indy-vdr, which contains all the functionality to register objects on an Hyperledger Indy VDR. Secondly, we need to add native bindings for the specific platform @hyperledger/indy-vdr-<platform>. Currently there are bindings for Node.JS, as @hyperledger/indy-vdr-nodejs, and React Native as @hyperlegder/indy-vdr-react-native.

yarn add @aries-framework/indy-vdr@^0.4.0 @hyperledger/indy-vdr-nodejs@^0.1.0

Adding Indy VDR to the agent

After installing the dependencies, we can register the Indy VDR module on the agent.

import { Agent } from '@aries-framework/core'
import { agentDependencies } from '@aries-framework/node'
import { AskarModule } from '@aries-framework/askar'
import { ariesAskar } from '@hyperledger/aries-askar-nodejs'

import { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@aries-framework/indy-vdr'
import { indyVdr } from '@hyperledger/indy-vdr-nodejs'
import { AnonCredsModule } from '@aries-framework/anoncreds'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
indyVdr: new IndyVdrModule({
indyVdr,
networks: [
{
isProduction: false,
indyNamespace: 'bcovrin:test',
genesisTransactions: '<genesis_transactions>',
connectOnStartup: true,
},
],
}),
anoncreds: new AnonCredsModule({
registries: [new IndyVdrAnonCredsRegistry()],
}),
// Indy VDR can optionally be used with Askar as wallet and storage implementation
askar: new AskarModule({
ariesAskar,
}),
},
})

Configuration

As you can see below, the Indy VDR module takes the native bindings and a list of networks. This list of networks will be used to resolve and register objects on.

import { indyVdr } from '@hyperledger/indy-vdr-nodejs'
import { IndyVdrModule } from '@aries-framework/indy-vdr'

const modules = {
indyVdr: new IndyVdrModule({
indyVdr,
networks: [
{
indyNamespace: 'bcovrin:test',
isProduction: false,
genesisTransactions: '<genesis_transactions>',
connectOnStartup: true,
},
],
}),
}

indyVdr

Type: IndyVdr

the indyVdr key takes a class that implements all the native bindings for Indy VDR. This can be imoprted from the @hyperledger/indy-vdr-nodejs package or the @hyperledger/indy-vdr-react-native package.

networks

Type: IndyVdrPoolConfig[]

An array of indy networks to connect to. The list can contain the following object and it must genesisTransactions.

indyNamespace

Type: string

The Indy namespace aka the name identifying the name of the network connecting to. See also indy did method identifiers

isProduction

Type: boolean

Whether the ledger is a production ledger. This is used for detecting which ledger to use in case of unqualified identifiers as production ledgers have priority.

genesisTransactions

Type: string

Stringified JSON object of the transaction.

connectOnStartup

Type: boolean

Whether to connect to the ledger on startup. Defaults to false.

transactionAuthorAgreement

Type: TransactionAuthorAgreement

JSON representation specifying the version and acceptance mechanism. The version is the unique version of the transaction author agreement acceptance mechanism list (AML). The acceptance mechanism refers to the acceptance mechanism label of the item in the AML. For more details you may consult the indy-node docs on AML

transactionAuthorAgreement.version

Type: string

The version of the AML acceptance mechanism. This is a string representation of a version number e.g. '1' or '1.4'

transactionAuthorAgreement.acceptanceMechanism

Type: string

The acceptance mechanism to choose. This must be one of the available labels of the acceptance mechanisms key-value pairs in the AML e.g. 'EULA'.

Supported Node.JS versions for Indy VDR

Due to an issue in ref-napi (which is used in the Node.JS bindings for Indy VDR), performance for Indy VDR in Node.JS is not as expected. A patched version for ref-napi has been published that fixes this issue, but this only works in Node.JS 18+.

To use Indy VDR in Node.JS, make sure you're using Node.JS 18 and patch the ref-napi package to point towards @2060.io/ref-napi in your package.json:

Using NPM overrides we can point the ref-napi package to @2060.io/ref-napi.

{
"overrides": {
"ref-napi": "npm:@2060.io/ref-napi"
}
}
- - +
Version: v0.5.x

Indy VDR

Hyperledger Indy VDR, Verifiable Data Registry, can be used to connect to one or more Indy Node ledger pools given sets of genesis transactions. Methods are provided to construct ledger requests and send them to the validators, collecting the results and ensuring that there is a consensus between the nodes. In the context of Credo, we mainly leverage it to register, and resolve, schemas, credential definitions and DIDs.

Installing Indy VDR

When using Credo with Indy VDR, there are a few extra dependencies that need to be installed. We need to install the @hyperledger/indy-vdr, which contains all the functionality to register objects on an Hyperledger Indy VDR. Secondly, we need to add native bindings for the specific platform @hyperledger/indy-vdr-<platform>. Currently there are bindings for Node.JS, as @hyperledger/indy-vdr-nodejs, and React Native as @hyperlegder/indy-vdr-react-native.

yarn add @credo-ts/indy-vdr@^0.5.0 @hyperledger/indy-vdr-nodejs@^0.2.0

Adding Indy VDR to the agent

After installing the dependencies, we can register the Indy VDR module on the agent.

import { Agent } from '@credo-ts/core'
import { agentDependencies } from '@credo-ts/node'
import { AskarModule } from '@credo-ts/askar'
import { ariesAskar } from '@hyperledger/aries-askar-nodejs'

import { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@credo-ts/indy-vdr'
import { indyVdr } from '@hyperledger/indy-vdr-nodejs'
import { AnonCredsModule } from '@credo-ts/anoncreds'
import { anoncreds } from '@hyperledger/anoncreds-nodejs'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
indyVdr: new IndyVdrModule({
indyVdr,
networks: [
{
isProduction: false,
indyNamespace: 'bcovrin:test',
genesisTransactions: '<genesis_transactions>',
connectOnStartup: true,
},
],
}),
anoncreds: new AnonCredsModule({
registries: [new IndyVdrAnonCredsRegistry()],
anoncreds,
}),
// Indy VDR can optionally be used with Askar as wallet and storage implementation
askar: new AskarModule({
ariesAskar,
}),
},
})

Configuration

As you can see below, the Indy VDR module takes the native bindings and a list of networks. This list of networks will be used to resolve and register objects on.

import { indyVdr } from '@hyperledger/indy-vdr-nodejs'
import { IndyVdrModule } from '@credo-ts/indy-vdr'

const modules = {
indyVdr: new IndyVdrModule({
indyVdr,
networks: [
{
indyNamespace: 'bcovrin:test',
isProduction: false,
genesisTransactions: '<genesis_transactions>',
connectOnStartup: true,
},
],
}),
}

indyVdr

Type: IndyVdr

the indyVdr key takes a class that implements all the native bindings for Indy VDR. This can be imoprted from the @hyperledger/indy-vdr-nodejs package or the @hyperledger/indy-vdr-react-native package.

networks

Type: IndyVdrPoolConfig[]

An array of indy networks to connect to. The list can contain the following object and it must genesisTransactions.

indyNamespace

Type: string

The Indy namespace aka the name identifying the name of the network connecting to. See also indy did method identifiers

isProduction

Type: boolean

Whether the ledger is a production ledger. This is used for detecting which ledger to use in case of unqualified identifiers as production ledgers have priority.

genesisTransactions

Type: string

Stringified JSON object of the transaction.

connectOnStartup

Type: boolean

Whether to connect to the ledger on startup. Defaults to false.

transactionAuthorAgreement

Type: TransactionAuthorAgreement

JSON representation specifying the version and acceptance mechanism. The version is the unique version of the transaction author agreement acceptance mechanism list (AML). The acceptance mechanism refers to the acceptance mechanism label of the item in the AML. For more details you may consult the indy-node docs on AML

transactionAuthorAgreement.version

Type: string

The version of the AML acceptance mechanism. This is a string representation of a version number e.g. '1' or '1.4'

transactionAuthorAgreement.acceptanceMechanism

Type: string

The acceptance mechanism to choose. This must be one of the available labels of the acceptance mechanisms key-value pairs in the AML e.g. 'EULA'.

+ + \ No newline at end of file diff --git a/guides/0.5/tutorials.html b/guides/0.5/tutorials.html index 6fe5638d..38d7e118 100644 --- a/guides/0.5/tutorials.html +++ b/guides/0.5/tutorials.html @@ -4,15 +4,15 @@ Tutorials | Credo - - + +
-
Version: v0.5.x

Tutorials

In this section we will explain some features that everyone will use. This +

- - +agents, issuing a credential and verifying a proof.

📄️ Issue a credential

In this tutorial we will issue a credential from the Issuer to a Holder. We will start with setting up both their agents with the minimal configuration required to follow this tutorial. It is assumed that there is a connection between the Issuer and the Holder and the Issuer also has a registered schema and credential definition. After initializing the Issuer will send a credential to the holder, and will then accept this credential and automatically store it in their wallet.

+ + \ No newline at end of file diff --git a/guides/0.5/tutorials/agent-config.html b/guides/0.5/tutorials/agent-config.html index 96735c75..6a4fcee9 100644 --- a/guides/0.5/tutorials/agent-config.html +++ b/guides/0.5/tutorials/agent-config.html @@ -4,30 +4,23 @@ Agent Config | Credo - - + +
-
Version: v0.5.x

Agent Config

The Credo agent is very extensible. These are all the configuration options with a short description:

label*

The label is seen by other users when creating a connection. This should not +

Version: v0.5.x

Agent Config

The Credo agent is very extensible. These are all the configuration options with a short description:

label*

The label is seen by other users when creating a connection. This should not be used as a base for authenticity, as it is entirely up to the user to set this.

Type: string

example
label: 'my-demo-agent'

walletConfig

Configuration for the setup of the wallet. Including this in the agent configuration makes it possible that, when initializing the agent, the wallet will also be initialized. When an application requires the agent without an initialized wallet for any reason, this can be omitted and later on the wallet -can be initialized separately.

Type: WalletConfig

example
import { KeyDerivationMethod } from '@aries-framework/core'

walletConfig: {
id: 'foo',
key: 'testkey000000000000000000000',
keyDerivationMethod: KeyDerivationMethod.Argon2IMod,
storage: {
type: 'postgres_storage',
... // depends on the storage type
}
}

walletConfig.id*

Identifier string. Using another value here will open a new wallet.

Type: string

walletConfig.key*

Key to unlock the wallet with. This value MUST be kept as a secret and should +can be initialized separately.

Type: WalletConfig

example
import { KeyDerivationMethod } from '@credo-ts/core'

walletConfig: {
id: 'foo',
key: 'testkey000000000000000000000',
keyDerivationMethod: KeyDerivationMethod.Argon2IMod,
storage: {
type: 'postgres_storage',
... // depends on the storage type
}
}

walletConfig.id*

Identifier string. Using another value here will open a new wallet.

Type: string

walletConfig.key*

Key to unlock the wallet with. This value MUST be kept as a secret and should be seem like a password.

Type: string

walletConfig.keyDerivationMethod

The method used for key derivation of the -walletConfig.key.

When using KeyDerivationMethod.Raw, it is strongly recommended to get the raw -key via -indy_generate_wallet_key. -If you really must implement your own key generation, it is required to be a -base58-encoded +walletConfig.key.

When using KeyDerivationMethod.Raw, the key must be a base58-encoded ChaCha20-Poly1305 key.

For the advanced readers here is the -specification of Argon2.

Type: enum KeyDerivationMethod

Default: KeyDerivationMethod.Argon2IMod

Members:

KeyDerivationMethod.Argon2IMod

    uses Argon2I modular (most secure option, but slower)

KeyDerivationMethod.Argon2Int

    uses Argon2 integer (less secure, but faster)

KeyDerivationMethod.Raw

    uses no derivation method. -It is recommended to use the -indy_generate_wallet_key -for key generation.

walletConfig.storage

Specify which storage is being used for the wallet. The default is an SQLite +specification of Argon2.

Type: enum KeyDerivationMethod

Default: KeyDerivationMethod.Argon2IMod

Members:

KeyDerivationMethod.Argon2IMod

    uses Argon2I modular (most secure option, but slower)

KeyDerivationMethod.Argon2Int

    uses Argon2 integer (less secure, but faster)

KeyDerivationMethod.Raw

    uses no derivation method and the key must be a base58-encoded ChaCha20-Poly1305 key.

walletConfig.storage

Specify which storage is being used for the wallet. The default is an SQLite database, but a Postgres database could be used as well.

Type: object

Default: An SQLite database


endpoints

A list of endpoints (schema + host + port) used for invitations and where other agents might reach you. This could be used to host a website that would redirect, for example with deep linking, to a wallet where the invitation can be @@ -39,7 +32,7 @@ Label this is completely up to the user to define this. It MUST not be used got any base of authenticity.

Type: string

example
connectionImageUrl: 'https://picsum.photos/200'

autoUpdateStorageOnStartup

Whether the storage should automatically be updated when a newer version of Credo is used.

Type: boolean

Default: false

example
autoUpdateStorageOnStartup: true

- - + + \ No newline at end of file diff --git a/guides/0.5/tutorials/agent-config/logging.html b/guides/0.5/tutorials/agent-config/logging.html index 2276e46e..ea63ca6a 100644 --- a/guides/0.5/tutorials/agent-config/logging.html +++ b/guides/0.5/tutorials/agent-config/logging.html @@ -4,14 +4,13 @@ Logging | Credo - - + +
-
Version: v0.5.x

Logging

Using the Default ConsoleLogger

To enable logging inside the framework a logger must be passed to the agent config. A simple ConsoleLogger can be imported from the framework.

import type { InitConfig } from '@aries-framework/core'
import { ConsoleLogger, LogLevel } from '@aries-framework/core'

const agentConfig: InitConfig = {
// ... other config properties ...
logger: new ConsoleLogger(LogLevel.info),
}

Creating your own Logger

For more advanced use cases the Logger interface can be implemented. See the example below.

import { Logger, LogLevel } from '@aries-framework/core'

class MyCustomLogger implements Logger {
public logLevel: LogLevel

public constructor(logLevel: LogLevel = LogLevel.off) {
this.logLevel = logLevel
}

public test(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public trace(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public debug(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public info(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public warn(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public error(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public fatal(message: string, data?: Record<string, any>): void {
console.log(message, data)
}
}

Indy Logs

To enable logging in the underlying Rust framework, either setLogger or setDefaultLogger must be called on the indy dependency, as seen here.

caution

The setLogger and setDefaultLogger methods have only been implemented in the Node.JS wrapper of the indy sdk. This won't work when importing from @aries-framework/react-native

The easiest way to do this from Credo is through the indy property of agentDependencies.

import { agentDependencies } from '@aries-framework/node'
agentDependencies.indy.setDefaultLogger('trace')

// OR

agentDependencies.indy.setLogger((level, target, message, modulePath, file, line) => {
console.log('libindy said:', level, target, message, modulePath, file, line)
})

WARNING: You can only set the logger once. Call indy_set_default_logger, indy_set_logger, not both. Once it's been set, libindy won't let you change it.

You can also set the environment variable RUST_LOG to log at specified log levels. -See https://crates.io/crates/env_logger for more information.

- - +
Version: v0.5.x

Logging

Using the Default ConsoleLogger

To enable logging inside the framework a logger must be passed to the agent config. A simple ConsoleLogger can be imported from the framework.

import type { InitConfig } from '@credo-ts/core'
import { ConsoleLogger, LogLevel } from '@credo-ts/core'

const agentConfig: InitConfig = {
// ... other config properties ...
logger: new ConsoleLogger(LogLevel.info),
}

Creating your own Logger

For more advanced use cases the Logger interface can be implemented. See the example below.

import { Logger, LogLevel } from '@credo-ts/core'

class MyCustomLogger implements Logger {
public logLevel: LogLevel

public constructor(logLevel: LogLevel = LogLevel.off) {
this.logLevel = logLevel
}

public test(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public trace(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public debug(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public info(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public warn(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public error(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public fatal(message: string, data?: Record<string, any>): void {
console.log(message, data)
}
}
+ + \ No newline at end of file diff --git a/guides/0.5/tutorials/cheqd.html b/guides/0.5/tutorials/cheqd.html index a839b84c..b58e22c5 100644 --- a/guides/0.5/tutorials/cheqd.html +++ b/guides/0.5/tutorials/cheqd.html @@ -4,13 +4,13 @@ Cheqd Did Module | Credo - - + +
-
Version: v0.5.x

Cheqd Did Module

In this tutorial we will see how to use the cheqd modules in detail

info

This section assumes that

  1. You have set-up your develoment environment.
  2. You have setup the cheqd module setup cheqd

DID Module

The cheqd DID module facilitates the Create, Read, Update, and Delete (CRUD) operations for did:cheqd identifiers. To learn more about "did:cheqd," please refer to the specification

Create DID

The DID can be created in two different ways

Parameters

  1. method*: cheqd
  2. secret
  3. options*
  4. didDocument
Option 1

Provide a DID Document payload according to the w3c did core specification in the request body. This is possible when the keys corresponding to the verification methods provided in the DID Document are already created in the wallet


// create a key pair
const key = await agent.wallet.createKey({
keyType: KeyType.Ed25519,
})

// encode public key according to the verification method
const ed25519PublicKeyBase58 = key.publicKeyBase58

// Create a DID
await agent.dids.create<CheqdDidCreateOptions>({
method: 'cheqd',
secret: {},
options: {
network: 'testnet',
},
didDocument: new DidDocument({
id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',
controller: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d'],
verificationMethod: [
{
id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1',
type: 'Ed25519VerificationKey2018',
controller: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',
publicKeyBase58: ed25519PublicKeyBase58,
},
],
authentication: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1'],
}),
})
Option 2

If a DID Document is not passed to the registrar, it requires the secret parameter with a verificationMethod to construct the DID Document.

await agent.dids.create({
method: 'cheqd',
// the secret contains a the verification method type and id
secret: {
verificationMethod: {
id: 'key-1',
type: 'Ed25519VerificationKey2020',
},
},
// an optional methodSpecificIdAlgo parameter
options: {
network: 'testnet',
methodSpecificIdAlgo: 'uuid',
},
})

Update DID

To update a DID Document, fetch the body of the DID Document you want to change from the DID Resolver, make the relevant updates and pass it as the parameter

Parameters

  1. did*
  2. didDocument*: The updated DID Document
  3. options
  4. secret
await agent.dids.update({
did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',
// Updates DID Document with an additional verification method if provided
secret: {
verificationMethod: {
id: 'key-2',
type: 'JsonWebKey2020',
},
},
didDocument: {
id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',
controller: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411'],
verificationMethod: [
{
id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1',
type: 'Ed25519VerificationKey2020',
controller: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',
publicKeyMultibase: 'z6MknkzLUEP5cxqqsaysNMWoh8NJRb3YsowTCj2D6yhwyEdj',
},
],
authentication: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1'],
// updates did document with a service block
service: [
new DidDocumentService({
id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#rand',
type: 'rand',
serviceEndpoint: 'https://rand.in',
}),
],
},
})

Deactivate DID

A DID can be deactivated, it can still be resolved

Parameters

  1. did*
  2. options
await agent.dids.deactivate({
did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',
// an optional versionId parameter
options: {
versionId: '3.0',
},
})

Types


secret.verificationMethod

Type: verificationMethod

verificationMethod.id*

Type: string

verificationMethod.type*

Type: string

Default: Ed25519VerificationKey2020

Members:

  1. Ed25519VerificationKey2020
  2. Ed25519VerificationKey2018
  3. JsonWebKey2020
verificationMethod.privateKey

Type: string


options.methodSpecificIdAlgo

Specifies what type of method specific identifier is needed for your DID

Type: string

Default: uuid

Members:

  1. uuid
  2. base58btc

options.network*

Specifies the cheqd network name to be published

Type: string

Default: testnet

Members:

  1. testnet
  2. mainnet

options.versionId

Specifies the version of the DID Document to be published

Type: string

- - +
Version: v0.5.x

Cheqd Did Module

In this tutorial we will see how to use the cheqd modules in detail

info

This section assumes that

  1. You have set-up your develoment environment.
  2. You have setup the cheqd module setup cheqd

DID Module

The cheqd DID module facilitates the Create, Read, Update, and Delete (CRUD) operations for did:cheqd identifiers. To learn more about "did:cheqd," please refer to the specification

Create DID

The DID can be created in two different ways

Parameters

  1. method*: cheqd
  2. secret
  3. options*
  4. didDocument
Option 1

Provide a DID Document payload according to the w3c did core specification in the request body. This is possible when the keys corresponding to the verification methods provided in the DID Document are already created in the wallet


// create a key pair
const key = await agent.wallet.createKey({
keyType: KeyType.Ed25519,
})

// encode public key according to the verification method
const ed25519PublicKeyBase58 = key.publicKeyBase58

// Create a DID
await agent.dids.create<CheqdDidCreateOptions>({
method: 'cheqd',
secret: {},
options: {
network: 'testnet',
},
didDocument: new DidDocument({
id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',
controller: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d'],
verificationMethod: [
{
id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1',
type: 'Ed25519VerificationKey2018',
controller: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',
publicKeyBase58: ed25519PublicKeyBase58,
},
],
authentication: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1'],
}),
})
Option 2

If a DID Document is not passed to the registrar, it requires the secret parameter with a verificationMethod to construct the DID Document.

await agent.dids.create({
method: 'cheqd',
// the secret contains a the verification method type and id
secret: {
verificationMethod: {
id: 'key-1',
type: 'Ed25519VerificationKey2020',
},
},
// an optional methodSpecificIdAlgo parameter
options: {
network: 'testnet',
methodSpecificIdAlgo: 'uuid',
},
})

Update DID

To update a DID Document, fetch the body of the DID Document you want to change from the DID Resolver, make the relevant updates and pass it as the parameter

Parameters

  1. did*
  2. didDocument*: The updated DID Document
  3. options
  4. secret
await agent.dids.update({
did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',
// Updates DID Document with an additional verification method if provided
secret: {
verificationMethod: {
id: 'key-2',
type: 'JsonWebKey2020',
},
},
didDocument: {
id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',
controller: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411'],
verificationMethod: [
{
id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1',
type: 'Ed25519VerificationKey2020',
controller: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',
publicKeyMultibase: 'z6MknkzLUEP5cxqqsaysNMWoh8NJRb3YsowTCj2D6yhwyEdj',
},
],
authentication: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1'],
// updates did document with a service block
service: [
new DidDocumentService({
id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#rand',
type: 'rand',
serviceEndpoint: 'https://rand.in',
}),
],
},
})

Deactivate DID

A DID can be deactivated, it can still be resolved

Parameters

  1. did*
  2. options
await agent.dids.deactivate({
did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',
// an optional versionId parameter
options: {
versionId: '3.0',
},
})

Types


secret.verificationMethod

Type: verificationMethod

verificationMethod.id*

Type: string

verificationMethod.type*

Type: string

Default: Ed25519VerificationKey2020

Members:

  1. Ed25519VerificationKey2020
  2. Ed25519VerificationKey2018
  3. JsonWebKey2020
verificationMethod.privateKey

Type: string


options.methodSpecificIdAlgo

Specifies what type of method specific identifier is needed for your DID

Type: string

Default: uuid

Members:

  1. uuid
  2. base58btc

options.network*

Specifies the cheqd network name to be published

Type: string

Default: testnet

Members:

  1. testnet
  2. mainnet

options.versionId

Specifies the version of the DID Document to be published

Type: string

+ + \ No newline at end of file diff --git a/guides/0.5/tutorials/create-a-connection.html b/guides/0.5/tutorials/create-a-connection.html index 37077753..12546717 100644 --- a/guides/0.5/tutorials/create-a-connection.html +++ b/guides/0.5/tutorials/create-a-connection.html @@ -4,12 +4,12 @@ Create a connection | Credo - - + +
-
Version: v0.5.x

Create a connection

In this tutorial we will create a connection as Acme Corp with Bob. We will +

Version: v0.5.x

Create a connection

In this tutorial we will create a connection as Acme Corp with Bob. We will start with setting up both their agents with the minimal configuration required to follow this tutorial. After the initialization we will then create an invitation as Acme Corp and send it over to Bob. Bob will then accept @@ -21,8 +21,8 @@ Node.js, it might vary.

In this tutorial Bob will be in a React Native environment and Acme Corp in a Node.js environment.

Bob

For bob we need to setup a basic agent with a wallet, mediator and outbound -transport.

🧔bob
const initializeBobAgent = async () => {
// Simple agent configuration. This sets some basic fields like the wallet
// configuration and the label. It also sets the mediator invitation url,
// because this is most likely required in a mobile environment.
const config: InitConfig = {
label: 'demo-agent-bob',
walletConfig: {
id: 'mainBob',
key: 'demoagentbob00000000000000000000',
},
}

// A new instance of an agent is created here
// Askar can also be replaced by the indy-sdk if required
const agent = new Agent({
config,
modules: {
askar: new AskarModule({ ariesAskar }),
connections: new ConnectionsModule({ autoAcceptConnections: true }),
},
dependencies: agentDependencies,
})

// Register a simple `WebSocket` outbound transport
agent.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
agent.registerOutboundTransport(new HttpOutboundTransport())

// Initialize the agent
await agent.initialize()

return agent
}

Acme

For Acme we need to setup a basic agent with a wallet, inbound and outbound -transport.

🏢acme
const initializeAcmeAgent = async () => {
// Simple agent configuration. This sets some basic fields like the wallet
// configuration and the label.
const config: InitConfig = {
label: 'demo-agent-acme',
walletConfig: {
id: 'mainAcme',
key: 'demoagentacme0000000000000000000',
},
endpoints: ['http://localhost:3001'],
}

// A new instance of an agent is created here
// Askar can also be replaced by the indy-sdk if required
const agent = new Agent({
config,
modules: {
askar: new AskarModule({ ariesAskar }),
connections: new ConnectionsModule({ autoAcceptConnections: true }),
},
dependencies: agentDependencies,
})

// Register a simple `WebSocket` outbound transport
agent.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
agent.registerOutboundTransport(new HttpOutboundTransport())

// Register a simple `Http` inbound transport
agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))

// Initialize the agent
await agent.initialize()

return agent
}

2. Creating an invitation

Now that we have setup both agents, we can create an invitation from Acme Corp.

This method will create an invitation using the legacy method according to 0434: Out-of-Band Protocol 1.1.

🏢acme
const createNewInvitation = async (agent: Agent) => {
const outOfBandRecord = await agent.oob.createInvitation()

return {
invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),
outOfBandRecord,
}
}

3. Receiving the invitation

After we have created the invitation we have to transmit it to the other +transport.

🧔bob
const initializeBobAgent = async () => {
// Simple agent configuration. This sets some basic fields like the wallet
// configuration and the label. It also sets the mediator invitation url,
// because this is most likely required in a mobile environment.
const config: InitConfig = {
label: 'demo-agent-bob',
walletConfig: {
id: 'mainBob',
key: 'demoagentbob00000000000000000000',
},
}

// A new instance of an agent is created here
const agent = new Agent({
config,
modules: {
askar: new AskarModule({ ariesAskar }),
connections: new ConnectionsModule({ autoAcceptConnections: true }),
},
dependencies: agentDependencies,
})

// Register a simple `WebSocket` outbound transport
agent.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
agent.registerOutboundTransport(new HttpOutboundTransport())

// Initialize the agent
await agent.initialize()

return agent
}

Acme

For Acme we need to setup a basic agent with a wallet, inbound and outbound +transport.

🏢acme
const initializeAcmeAgent = async () => {
// Simple agent configuration. This sets some basic fields like the wallet
// configuration and the label.
const config: InitConfig = {
label: 'demo-agent-acme',
walletConfig: {
id: 'mainAcme',
key: 'demoagentacme0000000000000000000',
},
endpoints: ['http://localhost:3001'],
}

// A new instance of an agent is created here
const agent = new Agent({
config,
modules: {
askar: new AskarModule({ ariesAskar }),
connections: new ConnectionsModule({ autoAcceptConnections: true }),
},
dependencies: agentDependencies,
})

// Register a simple `WebSocket` outbound transport
agent.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
agent.registerOutboundTransport(new HttpOutboundTransport())

// Register a simple `Http` inbound transport
agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))

// Initialize the agent
await agent.initialize()

return agent
}

2. Creating an invitation

Now that we have setup both agents, we can create an invitation from Acme Corp.

This method will create an invitation using the legacy method according to 0434: Out-of-Band Protocol 1.1.

🏢acme
const createNewInvitation = async (agent: Agent) => {
const outOfBandRecord = await agent.oob.createInvitation()

return {
invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),
outOfBandRecord,
}
}

3. Receiving the invitation

After we have created the invitation we have to transmit it to the other agent. Common practise, when sending it to a holder, it to embed the url inside a QR code. This QR code can then be scanned by the holder, in this case Bob. After this, because both have set autoAcceptConnections to true, the @@ -37,8 +37,8 @@ way of knowing if the invitation has been received.

🏢acme
const setupConnectionListener = (agent: Agent, outOfBandRecord: OutOfBandRecord, cb: (...args: any) => void) => {
agent.events.on<ConnectionStateChangedEvent>(ConnectionEventTypes.ConnectionStateChanged, ({ payload }) => {
if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return
if (payload.connectionRecord.state === DidExchangeState.Completed) {
// the connection is now ready for usage in other protocols!
console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)

// Custom business logic can be included here
// In this example we can send a basic message to the connection, but
// anything is possible
cb()

// We exit the flow
process.exit(0)
}
})
}

5. Full code snippets

Below are both code snippets for each agent. These can be used as base but should be edited to fit your use case. The walletConfig.key must be changed as it can -lead to other people knowing your "password" to your wallet.

import { AskarModule } from '@aries-framework/askar'
import {
Agent,
InitConfig,
ConnectionEventTypes,
ConnectionStateChangedEvent,
WsOutboundTransport,
HttpOutboundTransport,
DidExchangeState,
OutOfBandRecord,
ConnectionsModule,
} from '@aries-framework/core'
import { agentDependencies, HttpInboundTransport } from '@aries-framework/node'
import { ariesAskar } from '@hyperledger/aries-askar-nodejs'

const initializeBobAgent = async () => {
// Simple agent configuration. This sets some basic fields like the wallet
// configuration and the label. It also sets the mediator invitation url,
// because this is most likely required in a mobile environment.
const config: InitConfig = {
label: 'demo-agent-bob',
walletConfig: {
id: 'mainBob',
key: 'demoagentbob00000000000000000000',
},
}

// A new instance of an agent is created here
// Askar can also be replaced by the indy-sdk if required
const agent = new Agent({
config,
modules: {
askar: new AskarModule({ ariesAskar }),
connections: new ConnectionsModule({ autoAcceptConnections: true }),
},
dependencies: agentDependencies,
})

// Register a simple `WebSocket` outbound transport
agent.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
agent.registerOutboundTransport(new HttpOutboundTransport())

// Initialize the agent
await agent.initialize()

return agent
}

const initializeAcmeAgent = async () => {
// Simple agent configuration. This sets some basic fields like the wallet
// configuration and the label.
const config: InitConfig = {
label: 'demo-agent-acme',
walletConfig: {
id: 'mainAcme',
key: 'demoagentacme0000000000000000000',
},
endpoints: ['http://localhost:3001'],
}

// A new instance of an agent is created here
// Askar can also be replaced by the indy-sdk if required
const agent = new Agent({
config,
modules: {
askar: new AskarModule({ ariesAskar }),
connections: new ConnectionsModule({ autoAcceptConnections: true }),
},
dependencies: agentDependencies,
})

// Register a simple `WebSocket` outbound transport
agent.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
agent.registerOutboundTransport(new HttpOutboundTransport())

// Register a simple `Http` inbound transport
agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))

// Initialize the agent
await agent.initialize()

return agent
}

const createNewInvitation = async (agent: Agent) => {
const outOfBandRecord = await agent.oob.createInvitation()

return {
invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),
outOfBandRecord,
}
}

const createLegacyInvitation = async (agent: Agent) => {
const { invitation } = await agent.oob.createLegacyInvitation()

return invitation.toUrl({ domain: 'https://example.org' })
}

const receiveInvitation = async (agent: Agent, invitationUrl: string) => {
const { outOfBandRecord } = await agent.oob.receiveInvitationFromUrl(invitationUrl)

return outOfBandRecord
}

const setupConnectionListener = (agent: Agent, outOfBandRecord: OutOfBandRecord, cb: (...args: any) => void) => {
agent.events.on<ConnectionStateChangedEvent>(ConnectionEventTypes.ConnectionStateChanged, ({ payload }) => {
if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return
if (payload.connectionRecord.state === DidExchangeState.Completed) {
// the connection is now ready for usage in other protocols!
console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)

// Custom business logic can be included here
// In this example we can send a basic message to the connection, but
// anything is possible
cb()

// We exit the flow
process.exit(0)
}
})
}


const run = async () => {
console.log('Initializing Bob agent...')
const bobAgent = await initializeBobAgent()
console.log('Initializing Acme agent...')
const acmeAgent = await initializeAcmeAgent()

console.log('Creating the invitation as Acme...')
const { outOfBandRecord, invitationUrl } = await createNewInvitation(acmeAgent)

console.log('Listening for connection changes...')
setupConnectionListener(acmeAgent, outOfBandRecord, () =>
console.log('We now have an active connection to use in the following tutorials')
)

console.log('Accepting the invitation as Bob...')
await receiveInvitation(bobAgent, invitationUrl)
}

export default run

void run()

Useful resources

- - +lead to other people knowing your "password" to your wallet.

import { AskarModule } from '@credo-ts/askar'
import {
Agent,
InitConfig,
ConnectionEventTypes,
ConnectionStateChangedEvent,
WsOutboundTransport,
HttpOutboundTransport,
DidExchangeState,
OutOfBandRecord,
ConnectionsModule,
} from '@credo-ts/core'
import { agentDependencies, HttpInboundTransport } from '@credo-ts/node'
import { ariesAskar } from '@hyperledger/aries-askar-nodejs'

const initializeBobAgent = async () => {
// Simple agent configuration. This sets some basic fields like the wallet
// configuration and the label. It also sets the mediator invitation url,
// because this is most likely required in a mobile environment.
const config: InitConfig = {
label: 'demo-agent-bob',
walletConfig: {
id: 'mainBob',
key: 'demoagentbob00000000000000000000',
},
}

// A new instance of an agent is created here
const agent = new Agent({
config,
modules: {
askar: new AskarModule({ ariesAskar }),
connections: new ConnectionsModule({ autoAcceptConnections: true }),
},
dependencies: agentDependencies,
})

// Register a simple `WebSocket` outbound transport
agent.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
agent.registerOutboundTransport(new HttpOutboundTransport())

// Initialize the agent
await agent.initialize()

return agent
}

const initializeAcmeAgent = async () => {
// Simple agent configuration. This sets some basic fields like the wallet
// configuration and the label.
const config: InitConfig = {
label: 'demo-agent-acme',
walletConfig: {
id: 'mainAcme',
key: 'demoagentacme0000000000000000000',
},
endpoints: ['http://localhost:3001'],
}

// A new instance of an agent is created here
const agent = new Agent({
config,
modules: {
askar: new AskarModule({ ariesAskar }),
connections: new ConnectionsModule({ autoAcceptConnections: true }),
},
dependencies: agentDependencies,
})

// Register a simple `WebSocket` outbound transport
agent.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
agent.registerOutboundTransport(new HttpOutboundTransport())

// Register a simple `Http` inbound transport
agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))

// Initialize the agent
await agent.initialize()

return agent
}

const createNewInvitation = async (agent: Agent) => {
const outOfBandRecord = await agent.oob.createInvitation()

return {
invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),
outOfBandRecord,
}
}

const createLegacyInvitation = async (agent: Agent) => {
const { invitation } = await agent.oob.createLegacyInvitation()

return invitation.toUrl({ domain: 'https://example.org' })
}

const receiveInvitation = async (agent: Agent, invitationUrl: string) => {
const { outOfBandRecord } = await agent.oob.receiveInvitationFromUrl(invitationUrl)

return outOfBandRecord
}

const setupConnectionListener = (agent: Agent, outOfBandRecord: OutOfBandRecord, cb: (...args: any) => void) => {
agent.events.on<ConnectionStateChangedEvent>(ConnectionEventTypes.ConnectionStateChanged, ({ payload }) => {
if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return
if (payload.connectionRecord.state === DidExchangeState.Completed) {
// the connection is now ready for usage in other protocols!
console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)

// Custom business logic can be included here
// In this example we can send a basic message to the connection, but
// anything is possible
cb()

// We exit the flow
process.exit(0)
}
})
}


const run = async () => {
console.log('Initializing Bob agent...')
const bobAgent = await initializeBobAgent()
console.log('Initializing Acme agent...')
const acmeAgent = await initializeAcmeAgent()

console.log('Creating the invitation as Acme...')
const { outOfBandRecord, invitationUrl } = await createNewInvitation(acmeAgent)

console.log('Listening for connection changes...')
setupConnectionListener(acmeAgent, outOfBandRecord, () =>
console.log('We now have an active connection to use in the following tutorials')
)

console.log('Accepting the invitation as Bob...')
await receiveInvitation(bobAgent, invitationUrl)
}

export default run

void run()

Useful resources

+ + \ No newline at end of file diff --git a/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs.html b/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs.html deleted file mode 100644 index fed999eb..00000000 --- a/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -Using PostgreSQL as Database for Indy SDK in Node.js | Credo - - - - -
-
Version: v0.5.x

Using PostgreSQL as Database for Indy SDK in Node.js

By default the Indy SDK will use an SQLite database for storage. In mobile environments this is sufficient and allows us to keep storage local to the device, but in server environments we oftentimes want a more scalable storage solution. By leveraging the PostgreSQL plugin for Indy SDK we can use PostgreSQL as a storage solution instead of SQLite.

This document describes the installation process of the Postgres plugin for IndySDK and how you need to configure Credo to use it.

Installation of the Postgres Plugin

For installation of the Postgres plugin, please refer to the platform specific guides:

Using the Postgres Plugin in Credo

import { Agent, InitConfig } from '@aries-framework/core'
import { IndySdkModule } from '@aries-framework/indy-sdk'
import {
agentDependencies,
IndySdkPostgresStorageConfig,
loadIndySdkPostgresPlugin,
IndySdkPostgresWalletScheme,
} from '@aries-framework/node'
import indySdk from 'indy-sdk'

// IndySdkPostgresStorageConfig defines interface for the Postgres plugin configuration.
const storageConfig = {
type: 'postgres_storage',
config: {
url: 'localhost:5432',
wallet_scheme: IndySdkPostgresWalletScheme.DatabasePerWallet,
},
credentials: {
account: 'postgres',
password: 'postgres',
admin_account: 'postgres',
admin_password: 'postgres',
},
} satisfies IndySdkPostgresStorageConfig

// load the postgres wallet plugin before agent initialization
loadIndySdkPostgresPlugin(storageConfig.config, storageConfig.credentials)

const agentConfig: InitConfig = {
label: 'My Agent',
// walletConfig.id and walletConfig.key are still required
walletConfig: {
id: 'walletId',
key: 'testKey0000000000000000000000000',
// storage is added and defines the postgres plugin configuration
storage: storageConfig,
},
}

const agent = new Agent({
config: agentConfig,
dependencies: agentDependencies,
modules: {
indySdk: new IndySdkModule({
indySdk,
}),
},
})
- - - - \ No newline at end of file diff --git a/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/linux.html b/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/linux.html deleted file mode 100644 index 88ad43e3..00000000 --- a/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/linux.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -Postgres Setup for Linux | Credo - - - - -
-
Version: v0.5.x

Postgres Setup for Linux

Prerequisites

  • A system package manager (like APT, Pacman, etc.)
  • Cargo (We have to build Postgres plugin from source)
  • git (to clone a repo, could also be done with downloading the zip from the GitHub page)

Step 1: installing the dependencies using apt

Debian based (Ubuntu, Mint, Kali, Deepin, etc.)

sudo apt install libzmq3-dev libsodium-dev libssl-dev

Step 2: Build Postgres plugin

Building Postgres plugin from the indy-sdk repo with cargo.

Step 2.1: Cloning the indy-sdk

git clone https://github.com/hyperledger/indy-sdk.git

cd indy-sdk/experimental/plugins/postgres_storage

Step 2.2: Building Postgres plugin

If this step throws any errors, it might be because you miss some packages. Step 1 of this guide provided the dependencies that are required, but it also assumed that you have some basic development packages installed. If you are missing some packages, you can install them with your package manager.

pwd

# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage

cargo build --release

Step 2.3: Moving the file

pwd

# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage

sudo mv ./target/release/libindystrgpostgres.so /usr/local/lib/libindystrgpostgres.so
- - - - \ No newline at end of file diff --git a/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/macos.html b/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/macos.html deleted file mode 100644 index 46cfff47..00000000 --- a/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/macos.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -Postgres Setup for macOS | Credo - - - - -
-
Version: v0.5.x

Postgres Setup for macOS

Prerequisites

  • Homebrew
  • Cargo (We have to build Postgres plugin from source)
  • git (to clone a repo, could also be done with downloading the zip from the GitHub page)

Step 1: installing the dependencies using brew

brew install libsodium zeromq

Step 2: Build Postgres plugin

Building Postgres plugin from the indy-sdk repo with cargo.

Step 2.1: Cloning the indy-sdk

git clone https://github.com/hyperledger/indy-sdk.git

cd indy-sdk/experimental/plugins/postgres_storage

Step 2.2: Building Postgres plugin

If this step throws any errors, it might be because you miss some packages. Step 1 of this guide provided the dependencies that are required, but it also assumed that you have some basic development packages installed. If you are missing some packages, you can install them with your package manager.

pwd

# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage

cargo build --release

Step 2.3: Moving the file

pwd

# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage

sudo mv ./target/release/libindystrgpostgres.dylib /usr/local/lib/libindystrgpostgres.dylib
- - - - \ No newline at end of file diff --git a/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/windows.html b/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/windows.html deleted file mode 100644 index 4f3009b0..00000000 --- a/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/windows.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -Postgres Setup for windows | Credo - - - - -
-
Version: v0.5.x

Postgres Setup for windows

Build Environment Prerequisites

  1. Download and install Visual Studio Community Edition 2022
  2. Install git for windows
  3. Download rust for windows here
  4. Make sure you have already setup libindy for windows from here

Step 1: Getting dependencies

  • Download the prebuilt dependencies here
  • Extract them
  • Point path to this directory using environment variables:
    • set INDY_PREBUILT_DEPS_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set INDY_CRYPTO_PREBUILT_DEPS_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set MILAGRO_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set LIBZMQ_PREFIX=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set SODIUM_LIB_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set OPENSSL_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set PATH=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps\lib

Step 2: Build Postgres plugin

Building Postgres plugin from the indy-sdk repo with cargo.

Step 2.1: Cloning the indy-sdk

git clone https://github.com/hyperledger/indy-sdk.git

cd indy-sdk\experimental\plugins\postgres_storage

Step 2.2: Building Postgres plugin

If this step throws any errors, it might be because of the environment. Step 1 of this guide provided the dependencies that are required.

cargo build --release --target x86_64-pc-windows-msvc

The library indystrgpostgres.dll file will be located at indy-sdk\experimental\plugins\postgres_storage\target\x86_64-pc-windows-msvc\release

Step 2.3: Setting the file to PATH

  • set LIB_INDY_STRG_POSTGRES=C:\Users\{WINDOWS_USER}\Downloads\indy-sdklexperimental\plugins\postgres_storage\target\x86_64-pc-windows-msvc\release

or Alternatively you can copy the indystrgpostgres.dll file to c:\\windows\\system32\\

- - - - \ No newline at end of file diff --git a/guides/0.5/tutorials/issue-a-credential.html b/guides/0.5/tutorials/issue-a-credential.html index 0f7a65d9..5da1a823 100644 --- a/guides/0.5/tutorials/issue-a-credential.html +++ b/guides/0.5/tutorials/issue-a-credential.html @@ -4,13 +4,13 @@ Issue a credential | Credo - - + +
-
Version: v0.5.x

Issue a credential

In this tutorial we will issue a credential from the Issuer to a Holder. We will start with setting up both their agents with the minimal configuration required to follow this tutorial. It is assumed that there is a connection between the Issuer and the Holder and the Issuer also has a registered schema and credential definition. After initializing the Issuer will send a credential to the holder, and will then accept this credential and automatically store it in their wallet.

Using AnonCreds and the Issue Credential V2 Protocol or the Issue Credential V1 Protocol.

info

This section assumes that

  1. You have set-up your develoment environment.
  2. You have basic knowledge of the required fields in the Agent Config
  3. You have completed the Create a Connection tutorial
  4. You have a registered schema and credential definition. This can be done by following the Registering on a AnonCreds Registry

1. Setting up the agents

First for both agents we must setup and initialize an agent to work with. Depending on your target, React Native or Node.js, it might vary.

In this tutorial the Holder will be in a Node.js environment and the Issuer also in a Node.js environment.

Issuer

For the Issuer the setup is commonly not the same as the Holder. In the example they both live in a server environment, meaning they do not need a mediator. More commonly, the Holder is in a mobile environment where a mediator is required for receiving DIDComm messages.

It is also very important for the Issuer to have a public DID, for the binding with a credential definition, amongst other things. For this demo we will use BCovrin Test. If you want to follow this tutorial, you have to register a public DID here via the Wallet seed field (this must be the same as the seed inside the config under the key publicDidSeed).

In order to reach the Issuer we have to add a list of endpoints of the agent that exposes the inboundTransport to the public. In the example below we add an inboundTransport and use port 3002. For development purposes it is recommended to use a tunneling service for this, like Ngrok. Ngrok will allow you to reach your locally exposed endpoint from the public. If a tunneling service is used, make sure to use the HTTPS variant as mobile environments, by default, do not accept HTTP anymore.

To install Ngrok and expose the port to the public the following commands can be used:

yarn global add ngrok

ngrok http <PORT>
📄issuer
const issuer = new Agent({
config: issuerConfig,
dependencies: agentDependencies,
modules: {
askar: new AskarModule({
ariesAskar,
}),
anoncredsRs: new AnonCredsRsModule({
anoncreds,
}),
indyVdr: new IndyVdrModule({
indyVdr,
networks: [
{
isProduction: false,
indyNamespace: 'bcovrin:test',
genesisTransactions: '<genesis transaction>',
connectOnStartup: true,
},
],
}),
anoncreds: new AnonCredsModule({
registries: [new IndyVdrAnonCredsRegistry()],
}),
dids: new DidsModule({
registrars: [new IndyVdrIndyDidRegistrar()],
resolvers: [new IndyVdrIndyDidResolver()],
}),
credentials: new CredentialsModule({
credentialProtocols: [
new V2CredentialProtocol({
credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],
}),
],
}),
},
})

// Register a simple `WebSocket` outbound transport
issuer.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
issuer.registerOutboundTransport(new HttpOutboundTransport())

// Register a simple `Http` inbound transport
issuer.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))

Holder

For the Holder we need to setup a basic agent with a wallet, mediator, outbound transport and a ledger.

If you want to follow this tutorial in a mobile environment:

  1. Use the agentDependencies from @aries-framework/react-native
  2. It is very important to note that mobile agents do not support HTTP by default. It is recommended to do everything over HTTPS, but for development HTTP can be enabled for iOS and Android.
🗄holder
const holder = new Agent({
config: holderConfig,
dependencies: agentDependencies,
modules: {
askar: new AskarModule({
ariesAskar,
}),
anoncredsRs: new AnonCredsRsModule({
anoncreds,
}),
indyVdr: new IndyVdrModule({
indyVdr,
networks: [
{
isProduction: false,
indyNamespace: 'bcovrin:test',
genesisTransactions: '<genesis transaction>',
connectOnStartup: true,
},
],
}),
anoncreds: new AnonCredsModule({
registries: [new IndyVdrAnonCredsRegistry()],
}),
dids: new DidsModule({
resolvers: [new IndyVdrIndyDidResolver()],
}),
credentials: new CredentialsModule({
credentialProtocols: [
new V2CredentialProtocol({
credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],
}),
],
}),
},
})

// Register a simple `WebSocket` outbound transport
holder.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
holder.registerOutboundTransport(new HttpOutboundTransport())

// Register a simple `Http` inbound transport
holder.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))

3. Listening for incoming credentials

When we want to accept a credential, we have to listen to incoming credentials and handle accordingly. In this example we do not have any user interaction, but is likely that your application would have a user-interface which would display the credential. When receiving a credential offer you can get the values from credentialExchangeRecord.credentialAttributes.

🗄holder
holder.events.on<CredentialStateChangedEvent>(CredentialEventTypes.CredentialStateChanged, async ({ payload }) => {
switch (payload.credentialRecord.state) {
case CredentialState.OfferReceived:
console.log('received a credential')
// custom logic here
await holder.credentials.acceptOffer({ credentialRecordId: payload.credentialRecord.id })
case CredentialState.Done:
console.log(`Credential for credential id ${payload.credentialRecord.id} is accepted`)
// For demo purposes we exit the program here.
process.exit(0)
}
})

4. Issuing a credential

Now that everything is setup on both sides, the Issuer can now offer a credential to the Holder.

In this example we do not instantiate a connection and assume that there is one. Please refer to this guide Create a connection to get a connection and connectionId.

📄issuer
const indyCredentialExchangeRecord = await issuer.credentials.offerCredential({
protocolVersion: 'v2',
connectionId: '<connection id>',
credentialFormats: {
indy: {
credentialDefinitionId: '<credential definition id>',
attributes: [
{ name: 'name', value: 'Jane Doe' },
{ name: 'age', value: '23' },
],
},
},
})

Useful resources

- - +
Version: v0.5.x

Issue a credential

In this tutorial we will issue a credential from the Issuer to a Holder. We will start with setting up both their agents with the minimal configuration required to follow this tutorial. It is assumed that there is a connection between the Issuer and the Holder and the Issuer also has a registered schema and credential definition. After initializing the Issuer will send a credential to the holder, and will then accept this credential and automatically store it in their wallet.

Using AnonCreds and the Issue Credential V2 Protocol or the Issue Credential V1 Protocol.

info

This section assumes that

  1. You have set-up your develoment environment.
  2. You have basic knowledge of the required fields in the Agent Config
  3. You have completed the Create a Connection tutorial
  4. You have a registered schema and credential definition. This can be done by following the Registering on a AnonCreds Registry

1. Setting up the agents

First for both agents we must setup and initialize an agent to work with. Depending on your target, React Native or Node.js, it might vary.

In this tutorial the Holder will be in a Node.js environment and the Issuer also in a Node.js environment.

Issuer

For the Issuer the setup is commonly not the same as the Holder. In the example they both live in a server environment, meaning they do not need a mediator. More commonly, the Holder is in a mobile environment where a mediator is required for receiving DIDComm messages.

It is also very important for the Issuer to have a public DID, for the binding with a credential definition, amongst other things. For this demo we will use BCovrin Test. If you want to follow this tutorial, you have to register a public DID here via the Wallet seed field (this must be the same as the seed inside the config under the key publicDidSeed).

In order to reach the Issuer we have to add a list of endpoints of the agent that exposes the inboundTransport to the public. In the example below we add an inboundTransport and use port 3002. For development purposes it is recommended to use a tunneling service for this, like Ngrok. Ngrok will allow you to reach your locally exposed endpoint from the public. If a tunneling service is used, make sure to use the HTTPS variant as mobile environments, by default, do not accept HTTP anymore.

To install Ngrok and expose the port to the public the following commands can be used:

yarn global add ngrok

ngrok http <PORT>
📄issuer
const issuer = new Agent({
config: issuerConfig,
dependencies: agentDependencies,
modules: {
askar: new AskarModule({
ariesAskar,
}),
indyVdr: new IndyVdrModule({
indyVdr,
networks: [
{
isProduction: false,
indyNamespace: 'bcovrin:test',
genesisTransactions: '<genesis transaction>',
connectOnStartup: true,
},
],
}),
anoncreds: new AnonCredsModule({
registries: [new IndyVdrAnonCredsRegistry()],
anoncreds,
}),
dids: new DidsModule({
registrars: [new IndyVdrIndyDidRegistrar()],
resolvers: [new IndyVdrIndyDidResolver()],
}),
credentials: new CredentialsModule({
credentialProtocols: [
new V2CredentialProtocol({
credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],
}),
],
}),
},
})

// Register a simple `WebSocket` outbound transport
issuer.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
issuer.registerOutboundTransport(new HttpOutboundTransport())

// Register a simple `Http` inbound transport
issuer.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))

Holder

For the Holder we need to setup a basic agent with a wallet, mediator, outbound transport and a ledger.

If you want to follow this tutorial in a mobile environment:

  1. Use the agentDependencies from @credo-ts/react-native
  2. It is very important to note that mobile agents do not support HTTP by default. It is recommended to do everything over HTTPS, but for development HTTP can be enabled for iOS and Android.
🗄holder
const holder = new Agent({
config: holderConfig,
dependencies: agentDependencies,
modules: {
askar: new AskarModule({
ariesAskar,
}),
indyVdr: new IndyVdrModule({
indyVdr,
networks: [
{
isProduction: false,
indyNamespace: 'bcovrin:test',
genesisTransactions: '<genesis transaction>',
connectOnStartup: true,
},
],
}),
anoncreds: new AnonCredsModule({
registries: [new IndyVdrAnonCredsRegistry()],
anoncreds,
}),
dids: new DidsModule({
resolvers: [new IndyVdrIndyDidResolver()],
}),
credentials: new CredentialsModule({
credentialProtocols: [
new V2CredentialProtocol({
credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],
}),
],
}),
},
})

// Register a simple `WebSocket` outbound transport
holder.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
holder.registerOutboundTransport(new HttpOutboundTransport())

// Register a simple `Http` inbound transport
holder.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))

3. Listening for incoming credentials

When we want to accept a credential, we have to listen to incoming credentials and handle accordingly. In this example we do not have any user interaction, but is likely that your application would have a user-interface which would display the credential. When receiving a credential offer you can get the values from credentialExchangeRecord.credentialAttributes.

🗄holder
holder.events.on<CredentialStateChangedEvent>(CredentialEventTypes.CredentialStateChanged, async ({ payload }) => {
switch (payload.credentialRecord.state) {
case CredentialState.OfferReceived:
console.log('received a credential')
// custom logic here
await holder.credentials.acceptOffer({ credentialRecordId: payload.credentialRecord.id })
case CredentialState.Done:
console.log(`Credential for credential id ${payload.credentialRecord.id} is accepted`)
// For demo purposes we exit the program here.
process.exit(0)
}
})

4. Issuing a credential

Now that everything is setup on both sides, the Issuer can now offer a credential to the Holder.

In this example we do not instantiate a connection and assume that there is one. Please refer to this guide Create a connection to get a connection and connectionId.

📄issuer
const indyCredentialExchangeRecord = await issuer.credentials.offerCredential({
protocolVersion: 'v2',
connectionId: '<connection id>',
credentialFormats: {
indy: {
credentialDefinitionId: '<credential definition id>',
attributes: [
{ name: 'name', value: 'Jane Doe' },
{ name: 'age', value: '23' },
],
},
},
})

Useful resources

+ + \ No newline at end of file diff --git a/guides/0.5/tutorials/mediation.html b/guides/0.5/tutorials/mediation.html index a5bad08d..e4fc5d2c 100644 --- a/guides/0.5/tutorials/mediation.html +++ b/guides/0.5/tutorials/mediation.html @@ -4,16 +4,16 @@ Mediation | Credo - - + +
-
Version: v0.5.x

Mediation

This section assumes that you have:

  1. Set up a valid environment for development
  2. Basic knowledge of the required fields in the agent +
    Version: v0.5.x

    Mediation

    This section assumes that you have:

    1. Set up a valid environment for development
    2. Basic knowledge of the required fields in the agent config

    The agent setup varies depending on your target environment, React Native or Node.js.
    This tutorial assumes a Node.js environment for all agents (Alice, Bob, Meditator).

    This tutorial shows how to set up a mediator, how to configure an agent to use a mediator, and how agents exchange messages with a mediator in place. -Concepts are explained in isolation:

    • First, it is shown how to set up a mediator.
    • Second, it is demonstrated how to use a mediator.
    • Third, the message exchange between agents with a mediator in place is explained.

    What is a mediator, and Why should I use one?

    A mediator is just a special type of agent.

    info

    "When we describe agent-to-agent communication, it is convenient to think of an interaction only in terms of Alice and Bob and their agents. We say things like: "Alice's agent sends a message to Bob's agent" -- or perhaps "Alice's edge agent sends a message to Bob's cloud agent, which forwards it to Bob's edge agent".

    Such statements adopt a useful level of abstraction--one that's highly recommended for most discussions. However, they make a number of simplifications. By modeling the roles of mediators and relays in routing, we can support routes that use multiple transports, routes that are not fully known (or knowable) to the sender, routes that pass through mix networks, and other advanced and powerful concepts."Aries RFC 0046: Mediators and Relays

    A practical example where the use of mediators is beneficial can be found in a mobile environment. A mobile agent, aka. your mobile wallet, receives messages from other agents. Technically, sending HTTP messages to a mobile agent is impossible because the agent does not have a public IP. As you have probably seen in previous examples, a workaround for this scenario is to use ngrok. Another option is to use a mediator. When an agent is configured to use a mediator, messages to that agent are routed through the mediator and from there to its destination. Thus, a mobile agent can use a "public" mediator to receive messages on its behalf and poll them from time to time.

    This is just one example of how a mediator can be used. Further resources about mediators can be found here.

    tip

    With mediators, WebSockets come in handy. In a production environment, it is recommendable to register a WsInboundTransport() for Alice and a WsOutboundTransport() for the mediator. These WebSocket transports allow the mediator to push messages to Alice instead of having Alice pull messages from the mediator repeatedly.

    1. Mediator setup

    The first part shows how to set up a mediator agent. Generally, there are two ways to do that: deploying it from scratch or using a third-party mediator. This section focuses on the former approach, setting up the mediator from scratch.

    The mediator is set up on port 3001 and creates an Out-of-Band invitation that allows multiple other agents to connect to the mediator. Configuring an agent as a mediator demands utilizing the MediatorModule. In this example, the autoAcceptMediationRequests flag is set to true to accept mediation requests automatically.

    const name = 'mediator'
    const port = 3001

    const agentConfig: InitConfig = {
    label: `Credo ${name}`,
    walletConfig: {
    id: name,
    key: name,
    },
    endpoints: [`http://localhost:${port}`],
    }

    const mediator = new Agent({
    config: agentConfig,
    dependencies: agentDependencies,
    modules: {
    indySdk: new IndySdkModule({ indySdk }),
    mediator: new MediatorModule({
    autoAcceptMediationRequests: true,
    }),
    connections: new ConnectionsModule({
    autoAcceptConnections: true,
    }),
    },
    })

    mediator.registerOutboundTransport(new HttpOutboundTransport())
    mediator.registerInboundTransport(new HttpInboundTransport({ port }))

    await mediator.initialize()
    const mediatorOutOfBandRecord = await mediator.oob.createInvitation({ multiUseInvitation: true })

    const mediatiorInvitationUrl = mediatorOutOfBandRecord.outOfBandInvitation.toUrl({
    domain: `http://localhost:${port}`,
    })
    console.log(mediatiorInvitationUrl)

    2. Recipient (Alice) setup

    The second part shows how to use a mediator. Becoming a recipient of a mediator requires using the MediationRecipientModule. The setup is the same whether you use your own or a third-party mediator.

    The easiest way to set everything up is by configuring the MediationRecipientModule to connect to the mediator on agent startup. This can be done by constructing the module with the mediatorInvitationUrl. You can get the mediatorInvitationUrl either from part one by running a mediator yourself or from a public mediator such as the Animo-mediator. The following snippet uses the latter approach.

    The ConnectionsModule used in this snippet serves the sole purpose of automatically accepting connections and thus simplifying setup.

    const name = 'alice'

    // paste your invitation url here
    // or use the current invitation-url to connect to the public animo-mediator.
    const mediatorInvitationUrl =
    'https://mediator.dev.animo.id/invite?oob=eyJAdHlwZSI6Imh0dHBzOi8vZGlkY29tbS5vcmcvb3V0LW9mLWJhbmQvMS4xL2ludml0YXRpb24iLCJAaWQiOiIyMDc1MDM4YS05ZGU3LTRiODItYWUxYi1jNzBmNDg4MjYzYTciLCJsYWJlbCI6IkFuaW1vIE1lZGlhdG9yIiwiYWNjZXB0IjpbImRpZGNvbW0vYWlwMSIsImRpZGNvbW0vYWlwMjtlbnY9cmZjMTkiXSwiaGFuZHNoYWtlX3Byb3RvY29scyI6WyJodHRwczovL2RpZGNvbW0ub3JnL2RpZGV4Y2hhbmdlLzEuMCIsImh0dHBzOi8vZGlkY29tbS5vcmcvY29ubmVjdGlvbnMvMS4wIl0sInNlcnZpY2VzIjpbeyJpZCI6IiNpbmxpbmUtMCIsInNlcnZpY2VFbmRwb2ludCI6Imh0dHBzOi8vbWVkaWF0b3IuZGV2LmFuaW1vLmlkIiwidHlwZSI6ImRpZC1jb21tdW5pY2F0aW9uIiwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtvSG9RTUphdU5VUE5OV1pQcEw3RGs1SzNtQ0NDMlBpNDJGY3FwR25iampMcSJdLCJyb3V0aW5nS2V5cyI6W119LHsiaWQiOiIjaW5saW5lLTEiLCJzZXJ2aWNlRW5kcG9pbnQiOiJ3c3M6Ly9tZWRpYXRvci5kZXYuYW5pbW8uaWQiLCJ0eXBlIjoiZGlkLWNvbW11bmljYXRpb24iLCJyZWNpcGllbnRLZXlzIjpbImRpZDprZXk6ejZNa29Ib1FNSmF1TlVQTk5XWlBwTDdEazVLM21DQ0MyUGk0MkZjcXBHbmJqakxxIl0sInJvdXRpbmdLZXlzIjpbXX1dfQ'

    const agentConfig: InitConfig = {
    label: `Credo ${name}`,
    walletConfig: {
    id: name,
    key: name,
    },
    logger: new ConsoleLogger(LogLevel.trace),
    }

    const alice = new Agent({
    config: agentConfig,
    dependencies: agentDependencies,
    modules: {
    mediationRecipient: new MediationRecipientModule({
    mediatorInvitationUrl,
    }),
    indySdk: new IndySdkModule({ indySdk }),
    },
    })

    alice.registerOutboundTransport(new HttpOutboundTransport())
    alice.registerOutboundTransport(new WsOutboundTransport())

    await alice.initialize()
    info

    In case you are using a third-party mediator and cannot create an invitationUrl, it is common practice for mediators to provide an endpoint from which the invitationUrl can be fetched.

    3. Message exchange

    This section explains the message exchange between agents when a mediator is in place. The process is illustrated using the diagram below. Parts one and two of this tutorial showed how to set up and use a mediator. If the mediatorInvitationUrl is specified when constructing the MediationRecipientModule (as in Part two), the mediation request and grant (1-2) between Alice and the mediator will be performed automatically when Alice's agent is started.

    If Alice establishes a connection with another fictional agent, say, Bob's agent, who is not using any mediators (3-6). (Connection establishment is no different when a mediator is involved). Then, messages from Alice to Bob (7) are routed directly to Bob, while messages from Bob to Alice (8-9) are routed through the intermediary.

    Useful resources

    For more information about mediator refer to:

- - +Concepts are explained in isolation:

  • First, it is shown how to set up a mediator.
  • Second, it is demonstrated how to use a mediator.
  • Third, the message exchange between agents with a mediator in place is explained.

What is a mediator, and Why should I use one?

A mediator is just a special type of agent.

info

"When we describe agent-to-agent communication, it is convenient to think of an interaction only in terms of Alice and Bob and their agents. We say things like: "Alice's agent sends a message to Bob's agent" -- or perhaps "Alice's edge agent sends a message to Bob's cloud agent, which forwards it to Bob's edge agent".

Such statements adopt a useful level of abstraction--one that's highly recommended for most discussions. However, they make a number of simplifications. By modeling the roles of mediators and relays in routing, we can support routes that use multiple transports, routes that are not fully known (or knowable) to the sender, routes that pass through mix networks, and other advanced and powerful concepts."Aries RFC 0046: Mediators and Relays

A practical example where the use of mediators is beneficial can be found in a mobile environment. A mobile agent, aka. your mobile wallet, receives messages from other agents. Technically, sending HTTP messages to a mobile agent is impossible because the agent does not have a public IP. As you have probably seen in previous examples, a workaround for this scenario is to use ngrok. Another option is to use a mediator. When an agent is configured to use a mediator, messages to that agent are routed through the mediator and from there to its destination. Thus, a mobile agent can use a "public" mediator to receive messages on its behalf and poll them from time to time.

This is just one example of how a mediator can be used. Further resources about mediators can be found here.

tip

With mediators, WebSockets come in handy. In a production environment, it is recommendable to register a WsInboundTransport() for Alice and a WsOutboundTransport() for the mediator. These WebSocket transports allow the mediator to push messages to Alice instead of having Alice pull messages from the mediator repeatedly.

1. Mediator setup

The first part shows how to set up a mediator agent. Generally, there are two ways to do that: deploying it from scratch or using a third-party mediator. This section focuses on the former approach, setting up the mediator from scratch.

The mediator is set up on port 3001 and creates an Out-of-Band invitation that allows multiple other agents to connect to the mediator. Configuring an agent as a mediator demands utilizing the MediatorModule. In this example, the autoAcceptMediationRequests flag is set to true to accept mediation requests automatically.

const name = 'mediator'
const port = 3001

const agentConfig: InitConfig = {
label: `Credo ${name}`,
walletConfig: {
id: name,
key: name,
},
endpoints: [`http://localhost:${port}`],
}

const mediator = new Agent({
config: agentConfig,
dependencies: agentDependencies,
modules: {
askar: new AskarModule({ ariesAskar }),
mediator: new MediatorModule({
autoAcceptMediationRequests: true,
}),
connections: new ConnectionsModule({
autoAcceptConnections: true,
}),
},
})

mediator.registerOutboundTransport(new HttpOutboundTransport())
mediator.registerInboundTransport(new HttpInboundTransport({ port }))

await mediator.initialize()
const mediatorOutOfBandRecord = await mediator.oob.createInvitation({ multiUseInvitation: true })

const mediatiorInvitationUrl = mediatorOutOfBandRecord.outOfBandInvitation.toUrl({
domain: `http://localhost:${port}`,
})
console.log(mediatiorInvitationUrl)

2. Recipient (Alice) setup

The second part shows how to use a mediator. Becoming a recipient of a mediator requires using the MediationRecipientModule. The setup is the same whether you use your own or a third-party mediator.

The easiest way to set everything up is by configuring the MediationRecipientModule to connect to the mediator on agent startup. This can be done by constructing the module with the mediatorInvitationUrl. You can get the mediatorInvitationUrl either from part one by running a mediator yourself or from a public mediator such as the Animo-mediator. The following snippet uses the latter approach.

The ConnectionsModule used in this snippet serves the sole purpose of automatically accepting connections and thus simplifying setup.

const name = 'alice'

// paste your invitation url here
// or use the current invitation-url to connect to the public animo-mediator.
const mediatorInvitationUrl =
'https://mediator.dev.animo.id/invite?oob=eyJAdHlwZSI6Imh0dHBzOi8vZGlkY29tbS5vcmcvb3V0LW9mLWJhbmQvMS4xL2ludml0YXRpb24iLCJAaWQiOiIyMDc1MDM4YS05ZGU3LTRiODItYWUxYi1jNzBmNDg4MjYzYTciLCJsYWJlbCI6IkFuaW1vIE1lZGlhdG9yIiwiYWNjZXB0IjpbImRpZGNvbW0vYWlwMSIsImRpZGNvbW0vYWlwMjtlbnY9cmZjMTkiXSwiaGFuZHNoYWtlX3Byb3RvY29scyI6WyJodHRwczovL2RpZGNvbW0ub3JnL2RpZGV4Y2hhbmdlLzEuMCIsImh0dHBzOi8vZGlkY29tbS5vcmcvY29ubmVjdGlvbnMvMS4wIl0sInNlcnZpY2VzIjpbeyJpZCI6IiNpbmxpbmUtMCIsInNlcnZpY2VFbmRwb2ludCI6Imh0dHBzOi8vbWVkaWF0b3IuZGV2LmFuaW1vLmlkIiwidHlwZSI6ImRpZC1jb21tdW5pY2F0aW9uIiwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtvSG9RTUphdU5VUE5OV1pQcEw3RGs1SzNtQ0NDMlBpNDJGY3FwR25iampMcSJdLCJyb3V0aW5nS2V5cyI6W119LHsiaWQiOiIjaW5saW5lLTEiLCJzZXJ2aWNlRW5kcG9pbnQiOiJ3c3M6Ly9tZWRpYXRvci5kZXYuYW5pbW8uaWQiLCJ0eXBlIjoiZGlkLWNvbW11bmljYXRpb24iLCJyZWNpcGllbnRLZXlzIjpbImRpZDprZXk6ejZNa29Ib1FNSmF1TlVQTk5XWlBwTDdEazVLM21DQ0MyUGk0MkZjcXBHbmJqakxxIl0sInJvdXRpbmdLZXlzIjpbXX1dfQ'

const agentConfig: InitConfig = {
label: `Credo ${name}`,
walletConfig: {
id: name,
key: name,
},
logger: new ConsoleLogger(LogLevel.trace),
}

const alice = new Agent({
config: agentConfig,
dependencies: agentDependencies,
modules: {
mediationRecipient: new MediationRecipientModule({
mediatorInvitationUrl,
}),
askar: new AskarModule({ ariesAskar }),
},
})

alice.registerOutboundTransport(new HttpOutboundTransport())
alice.registerOutboundTransport(new WsOutboundTransport())

await alice.initialize()
info

In case you are using a third-party mediator and cannot create an invitationUrl, it is common practice for mediators to provide an endpoint from which the invitationUrl can be fetched.

3. Message exchange

This section explains the message exchange between agents when a mediator is in place. The process is illustrated using the diagram below. Parts one and two of this tutorial showed how to set up and use a mediator. If the mediatorInvitationUrl is specified when constructing the MediationRecipientModule (as in Part two), the mediation request and grant (1-2) between Alice and the mediator will be performed automatically when Alice's agent is started.

If Alice establishes a connection with another fictional agent, say, Bob's agent, who is not using any mediators (3-6). (Connection establishment is no different when a mediator is involved). Then, messages from Alice to Bob (7) are routed directly to Bob, while messages from Bob to Alice (8-9) are routed through the intermediary.

Useful resources

For more information about mediator refer to:

+ + \ No newline at end of file diff --git a/guides/0.5/tutorials/registering-schema-and-credential-definition.html b/guides/0.5/tutorials/registering-schema-and-credential-definition.html index c763b9f8..2aad3e2c 100644 --- a/guides/0.5/tutorials/registering-schema-and-credential-definition.html +++ b/guides/0.5/tutorials/registering-schema-and-credential-definition.html @@ -4,13 +4,13 @@ Registering a schema and credential definition on an AnonCreds Registry | Credo - - + +
-
Version: v0.5.x

Registering a schema and credential definition on an AnonCreds Registry

In this tutorial we will register a schema and credential definition on an AnonCredsRegistry e.g. Hyperledger Indy ledger indy-vdr, cheqd.

info

This section assumes that

  1. You have set-up your development environment.
  2. You have basic knowledge of the required fields in the Agent Config

1. Setting up the agent

First, an agent must be setup with a wallet and an indy-vdr or cheqd module. For these code examples, we will use a Node.js environment.

📄issuer
import { Agent } from '@aries-framework/core'
import { agentDependencies } from '@aries-framework/node'
import { AskarModule } from '@aries-framework/askar'
import { ariesAskar } from '@hyperledger/aries-askar-nodejs'
import {
IndyVdrAnonCredsRegistry,
IndyVdrIndyDidRegistrar,
IndyVdrIndyDidResolver,
IndyVdrModule,
} from '@aries-framework/indy-vdr'
import { indyVdr } from '@hyperledger/indy-vdr-nodejs'
import { AnonCredsModule } from '@aries-framework/anoncreds'
import { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'
import { anoncreds } from '@hyperledger/anoncreds-nodejs'
import {
CheqdAnonCredsRegistry,
CheqdDidRegistrar,
CheqdDidResolver,
CheqdModule,
CheqdModuleConfig,
} from '@aries-framework/cheqd'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
// Register the Askar module on the agent
// We do this to have access to a wallet
askar: new AskarModule({
ariesAskar,
}),
anoncredsRs: new AnonCredsRsModule({
anoncreds,
}),
indyVdr: new IndyVdrModule({
indyVdr,
networks: [
{
isProduction: false,
indyNamespace: 'bcovrin:test',
genesisTransactions: '<genesis transactions>',
connectOnStartup: true,
},
],
}),
cheqd: new CheqdModule(
new CheqdModuleConfig({
networks: [
{
network: '<mainnet or testnet>',
cosmosPayerSeed: '<cosmos payer seed or mnemonic>',
},
],
})
),
anoncreds: new AnonCredsModule({
registries: [new IndyVdrAnonCredsRegistry(), new CheqdAnonCredsRegistry()],
}),
dids: new DidsModule({
registrars: [new IndyVdrIndyDidRegistrar(), new CheqdDidRegistrar()],
resolvers: [new IndyVdrIndyDidResolver(), new CheqdDidResolver()],
}),
},
})

2. Importing a DID (optional)

info

There are many ledgers which can be used to register DIDs on for development.

Indy VDR

We recommend bcovrin test net. This network allows very easily to register a DID from a seed which can then be used as the privateKey in the snippet below. The seed is used as the private key for legacy compatibility with the Hyperledger Indy-SDK. The genesis transactions can also be retrieved for easy integration.

Cheqd

Follow the cheqd setup and cheqd DID module to setup the network and create a DID. Cheqd supports a mainnet for production and a testnet for development purposes.

In order to register a schema and credential definition, a DID must be added to the agent first. This can be done by calling agent.dids.create(), but this does require an endorser DID to be present as the submitterDid. For this tutorial a DID will already be registered on the ledger, but it will be imported, with the associated private key, to be used later when registering the schema and credential definition.

This section can be omitted if your agent already has a DID in its wallet.

📄issuer
const seed = TypedArrayEncoder.fromString(`<seed>`) // What you input on bcovrin. Should be kept secure in production!
const unqualifiedIndyDid = `<unqualifiedIndyDid>` // will be returned after registering seed on bcovrin
const indyDid = `did:indy:bcovrin:test:${unqualifiedIndyDid}`

const cheqdDid = await agent.dids.create({
method: 'cheqd',
secret: {
verificationMethod: {
id: 'key-1',
type: 'Ed25519VerificationKey2020',
},
},
options: {
network: 'testnet',
methodSpecificIdAlgo: 'uuid',
},
})

await agent.dids.import({
did: '<did>',
overwrite: true,
privateKeys: [
{
privateKey: seed,
keyType: KeyType.Ed25519,
},
],
})

3. Registering a schema

When you have a registered DID on a network and in your wallet, you can register a schema. Registering a schema requires four fields: issuerId, name, version and attrNames. It is important to note that the issuerId must be the same as a DID in your wallet.

📄issuer
const schemaResult = await agent.modules.anoncreds.registerSchema({
schema: {
attrNames: ['name'],
issuerId: '<did>',
name: 'Example Schema to register',
version: '1.0.0',
},
options: {},
})

if (schemaResult.schemaState.state === 'failed') {
throw new Error(`Error creating schema: ${schemaResult.schemaState.reason}`)
}

3. Registering a credential definition

After registering a schema, a credential definition can be registered based on the schema. The credential definition, amongst more things, binds the schema to a specific issuer. Schemas can be reused between issuers, but a credential definition is specific to an issuer. In a credential definition revocation can also be specified. This section will not go in-depth about revocation.

📄issuer
const credentialDefinitionResult = await agent.modules.anoncreds.registerCredentialDefinition({
credentialDefinition: {
tag: 'default',
issuerId: '<did>',
schemaId: schemaResult.schemaState.schemaId,
},
options: {},
})

if (credentialDefinitionResult.credentialDefinitionState.state === 'failed') {
throw new Error(
`Error creating credential definition: ${credentialDefinitionResult.credentialDefinitionState.reason}`
)
}

Using it

After everything is registered on a AnonCredsRegistry, we can use it to issue credentials. The next tutorial is all about issuing an AnonCreds credential with this setup.

Useful Resources

- - +
Version: v0.5.x

Registering a schema and credential definition on an AnonCreds Registry

In this tutorial we will register a schema and credential definition on an AnonCredsRegistry e.g. Hyperledger Indy ledger indy-vdr, cheqd.

info

This section assumes that

  1. You have set-up your development environment.
  2. You have basic knowledge of the required fields in the Agent Config

1. Setting up the agent

First, an agent must be setup with a wallet and an indy-vdr or cheqd module. For these code examples, we will use a Node.js environment.

📄issuer
import { Agent } from '@credo-ts/core'
import { agentDependencies } from '@credo-ts/node'
import { AskarModule } from '@credo-ts/askar'
import { ariesAskar } from '@hyperledger/aries-askar-nodejs'
import {
IndyVdrAnonCredsRegistry,
IndyVdrIndyDidRegistrar,
IndyVdrIndyDidResolver,
IndyVdrModule,
} from '@credo-ts/indy-vdr'
import { indyVdr } from '@hyperledger/indy-vdr-nodejs'
import { AnonCredsModule } from '@credo-ts/anoncreds'
import { anoncreds } from '@hyperledger/anoncreds-nodejs'
import {
CheqdAnonCredsRegistry,
CheqdDidRegistrar,
CheqdDidResolver,
CheqdModule,
CheqdModuleConfig,
} from '@credo-ts/cheqd'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
// Register the Askar module on the agent
// We do this to have access to a wallet
askar: new AskarModule({
ariesAskar,
}),
indyVdr: new IndyVdrModule({
indyVdr,
networks: [
{
isProduction: false,
indyNamespace: 'bcovrin:test',
genesisTransactions: '<genesis transactions>',
connectOnStartup: true,
},
],
}),
cheqd: new CheqdModule(
new CheqdModuleConfig({
networks: [
{
network: '<mainnet or testnet>',
cosmosPayerSeed: '<cosmos payer seed or mnemonic>',
},
],
})
),
anoncreds: new AnonCredsModule({
registries: [new IndyVdrAnonCredsRegistry(), new CheqdAnonCredsRegistry()],
anoncreds,
}),
dids: new DidsModule({
registrars: [new IndyVdrIndyDidRegistrar(), new CheqdDidRegistrar()],
resolvers: [new IndyVdrIndyDidResolver(), new CheqdDidResolver()],
}),
},
})

2. Importing a DID (optional)

info

There are many ledgers which can be used to register DIDs on for development.

Indy VDR

We recommend BCovrin Testnet. This network allows very easily to register a DID from a seed which can then be used as the privateKey in the snippet below. The seed is used as the private key for legacy compatibility with the Hyperledger Indy-SDK. The genesis transactions can also be retrieved for easy integration.

Cheqd

Follow the cheqd setup and cheqd DID module to setup the network and create a DID. Cheqd supports a mainnet for production and a testnet for development purposes.

In order to register a schema and credential definition, a DID must be added to the agent first. This can be done by calling agent.dids.create(), but this does require an endorser DID to be present as the submitterDid. For this tutorial a DID will already be registered on the ledger, but it will be imported, with the associated private key, to be used later when registering the schema and credential definition.

This section can be omitted if your agent already has a DID in its wallet.

📄issuer
const seed = TypedArrayEncoder.fromString(`<seed>`) // What you input on bcovrin. Should be kept secure in production!
const unqualifiedIndyDid = `<unqualifiedIndyDid>` // will be returned after registering seed on bcovrin
const indyDid = `did:indy:bcovrin:test:${unqualifiedIndyDid}`

const cheqdDid = await agent.dids.create({
method: 'cheqd',
secret: {
verificationMethod: {
id: 'key-1',
type: 'Ed25519VerificationKey2020',
},
},
options: {
network: 'testnet',
methodSpecificIdAlgo: 'uuid',
},
})

await agent.dids.import({
did: '<did>',
overwrite: true,
privateKeys: [
{
privateKey: seed,
keyType: KeyType.Ed25519,
},
],
})

3. Registering a schema

When you have a registered DID on a network and in your wallet, you can register a schema. Registering a schema requires four fields: issuerId, name, version and attrNames. It is important to note that the issuerId must be the same as a DID in your wallet.

📄issuer
const schemaResult = await agent.modules.anoncreds.registerSchema({
schema: {
attrNames: ['name'],
issuerId: '<did>',
name: 'Example Schema to register',
version: '1.0.0',
},
options: {},
})

if (schemaResult.schemaState.state === 'failed') {
throw new Error(`Error creating schema: ${schemaResult.schemaState.reason}`)
}

3. Registering a credential definition

After registering a schema, a credential definition can be registered based on the schema. The credential definition, amongst more things, binds the schema to a specific issuer. Schemas can be reused between issuers, but a credential definition is specific to an issuer. In a credential definition revocation can also be specified. This section will not go in-depth about revocation.

📄issuer
const credentialDefinitionResult = await agent.modules.anoncreds.registerCredentialDefinition({
credentialDefinition: {
tag: 'default',
issuerId: '<did>',
schemaId: schemaResult.schemaState.schemaId,
},
options: {
supportRevocation: false,
},
})

if (credentialDefinitionResult.credentialDefinitionState.state === 'failed') {
throw new Error(
`Error creating credential definition: ${credentialDefinitionResult.credentialDefinitionState.reason}`
)
}

Using it

After everything is registered on a AnonCredsRegistry, we can use it to issue credentials. The next tutorial is all about issuing an AnonCreds credential with this setup.

Useful Resources

+ + \ No newline at end of file diff --git a/guides/0.5/updating.html b/guides/0.5/updating.html index 048c58a3..ff5bad8a 100644 --- a/guides/0.5/updating.html +++ b/guides/0.5/updating.html @@ -4,13 +4,13 @@ Updating Credo | Credo - - + +
-
Version: v0.5.x

Updating Credo

This section will cover everything you need to know about updating Credo to a newer version.

Versioning

Credo follows semantic versioning. This means that major version changes (1.0.0) are considered breaking changes. When features are added this is a minor version change (0.1.0). For bug fixes the patch version change is used (0.0.1).

While Credo is still in pre-1.0.0 version, the version change types are shifted to the right. This means a major version change is now a minor change (0.1.0) and a minor change is now a patch change (0.0.1). This is done to keep the version below 1.0.0, indicating the framework is still in early development and users can expect more breaking changes that when the version has already reached 1.0.0.

This means if the second number in the version (0.1.0) changes, you need to be careful with updating and always consult this page for update instructions. If only the third number changes (0.0.1), you can update without any issues.

Types of breaking changes

Updates to Credo bring new features and improvements to the framework. To better adapt the framework to new features we sometimes make breaking changes that will improve how Credo works. There's two parts to updates with breaking changes:

  1. Breaking code changes
  2. Breaking storage changes

Breaking Code Changes

Breaking changes to code means changes to how you interact with Credo. This includes methods being renamed, moved to another module or extended to better integrate with new features. We'll try to cover all breaking changes in migration guides, so you know exactly what is needed to update to a new version and keep the same functionality.

info

If you encounter any breaking changes that aren't mentioned in the migration docs, please open an issue in the Credo Docs repository, or directly create a PR describing the change.

Breaking Storage Changes

Breaking changes to storage are a bit more complex to deal with. While breaking changes to code only require you to update your code once, breaking changes to storage needs to be updated for every agent instance. Luckily, we've made the migration as easy as possible for you using the Update Assistant. The Update Assistant will update all storage objects to the storage model that is expected by the newest version. If a version made changes to the storage, this will be explicitly mentioned in the migration guide. See the Update Assistant documentation for detailed instructions on how to use the update assistant.

Migration Guides

Currently the following migration guides are available:

- - +
Version: v0.5.x

Updating Credo

This section will cover everything you need to know about updating Credo to a newer version.

Versioning

Credo follows semantic versioning. This means that major version changes (1.0.0) are considered breaking changes. When features are added this is a minor version change (0.1.0). For bug fixes the patch version change is used (0.0.1).

While Credo is still in pre-1.0.0 version, the version change types are shifted to the right. This means a major version change is now a minor change (0.1.0) and a minor change is now a patch change (0.0.1). This is done to keep the version below 1.0.0, indicating the framework is still in early development and users can expect more breaking changes that when the version has already reached 1.0.0.

This means if the second number in the version (0.1.0) changes, you need to be careful with updating and always consult this page for update instructions. If only the third number changes (0.0.1), you can update without any issues.

Types of breaking changes

Updates to Credo bring new features and improvements to the framework. To better adapt the framework to new features we sometimes make breaking changes that will improve how Credo works. There's two parts to updates with breaking changes:

  1. Breaking code changes
  2. Breaking storage changes

Breaking Code Changes

Breaking changes to code means changes to how you interact with Credo. This includes methods being renamed, moved to another module or extended to better integrate with new features. We'll try to cover all breaking changes in migration guides, so you know exactly what is needed to update to a new version and keep the same functionality.

info

If you encounter any breaking changes that aren't mentioned in the migration docs, please open an issue in the Credo Docs repository, or directly create a PR describing the change.

Breaking Storage Changes

Breaking changes to storage are a bit more complex to deal with. While breaking changes to code only require you to update your code once, breaking changes to storage needs to be updated for every agent instance. Luckily, we've made the migration as easy as possible for you using the Update Assistant. The Update Assistant will update all storage objects to the storage model that is expected by the newest version. If a version made changes to the storage, this will be explicitly mentioned in the migration guide. See the Update Assistant documentation for detailed instructions on how to use the update assistant.

Migration Guides

Currently the following migration guides are available:

+ + \ No newline at end of file diff --git a/guides/0.5/updating/update-assistant.html b/guides/0.5/updating/update-assistant.html index 397173ee..8e72f3f0 100644 --- a/guides/0.5/updating/update-assistant.html +++ b/guides/0.5/updating/update-assistant.html @@ -4,13 +4,13 @@ Update Assistant | Credo - - + +
-
Version: v0.5.x

Update Assistant

The Update Assistant helps you update the storage objects from Credo to newer versions. This documents describes the different ways you can leverage the Update Assistant from fully managed to more manual approaches.

Update Strategies

There are three options on how to leverage the update assistant on agent startup:

  1. Manually instantiating the update assistant on agent startup
  2. Storing the agent storage version outside of the agent storage
  3. Automatically update on agent startup

Manually instantiating the update assistant on agent startup

When the version of the storage is stored inside the agent storage, it means we need to check if the agent needs to be updated on every agent startup. We'll initialize the update assistant and check whether the storage is up to date. The advantage of this approach is that you don't have to store anything yourself, and have full control over the workflow.

import { UpdateAssistant, Agent } from '@aries-framework/core'

// or @aries-framework/node
import { agentDependencies } from '@aries-framework/react-native'

// First create the agent
const agent = new Agent({
config,
dependencies: agentDependencies,
})

// Then initialize the update assistant with the update config
const updateAssistant = new UpdateAssistant(agent, {
v0_1ToV0_2: {
mediationRoleUpdateStrategy: 'allMediator',
},
})

// Initialize the update assistant so we can read the current storage version
// from the wallet. If you manually initialize the wallet you should do this _before_
// calling initialize on the update assistant
// await agent.wallet.initialize(walletConfig)
await updateAssistant.initialize()

// Check if the agent is up to date, if not call update
if (!(await updateAssistant.isUpToDate())) {
await updateAssistant.update()
}

// Once finished initialize the agent. You should do this on every launch of the agent
await agent.initialize()

Storing the agent storage version outside of the agent storage

When the version of the storage is stored outside of the agent storage, you don't have to initialize the UpdateAssistant on every agent agent startup. You can just check if the storage version is up to date and instantiate the UpdateAssistant if not. The advantage of this approach is that you don't have to instantiate the UpdateAssistant on every agent startup, but this does mean that you have to store the storage version yourself.

When a wallet has been exported and later imported you don't always have the latest version available. If this is the case you can always rely on Method 1 or 2 for updating the wallet, and storing the version yourself afterwards. You can also get the current version by calling await updateAssistant.getCurrentAgentStorageVersion(). Do note the UpdateAssistant needs to be initialized before calling this method.

import { UpdateAssistant, Agent } from '@aries-framework/core'

// or @aries-framework/node
import { agentDependencies } from '@aries-framework/react-native'

// The storage version will normally be stored in e.g. persistent storage on a mobile device
let currentStorageVersion: VersionString = '0.1'

// First create the agent
const agent = new Agent({
config,
dependencies: agentDependencies,
})

// We only initialize the update assistant if our stored version is not equal
// to the frameworkStorageVersion of the UpdateAssistant. The advantage of this
// is that we don't have to initialize the UpdateAssistant to retrieve the current
// storage version.
if (currentStorageVersion !== UpdateAssistant.frameworkStorageVersion) {
const updateAssistant = new UpdateAssistant(agent, {
v0_1ToV0_2: {
mediationRoleUpdateStrategy: 'recipientIfEndpoint',
},
})

// Same as with the previous strategy, if you normally call agent.wallet.initialize() manually
// you need to call this before calling updateAssistant.initialize()
await updateAssistant.initialize()

await updateAssistant.update()

// Store the version so we can leverage it during the next agent startup and don't have
// to initialize the update assistant again until a new version is released
currentStorageVersion = UpdateAssistant.frameworkStorageVersion
}

// Once finished initialize the agent. You should do this on every launch of the agent
await agent.initialize()

Automatically update on agent startup

This is by far the easiest way to update the agent, but has the least amount of flexibility and is not configurable. This means you will have to use the default update options to update the agent storage. You can find the default update config in the respective version migration guides (e.g. in 0.1-to-0.2).

import { UpdateAssistant, Agent } from '@aries-framework/core'

// or @aries-framework/node
import { agentDependencies } from '@aries-framework/react-native'

// First create the agent, setting the autoUpdateStorageOnStartup option to true
const agent = new Agent({
config: {
...config,
autoUpdateStorageOnStartup: true,
},
dependencies: agentDependencies,
})

// Then we call initialize, which under the hood will call the update assistant if the storage is not update to date.
await agent.initialize()

Backups

Before starting the update, the update assistant will automatically create a backup of the wallet. If the migration succeeds the backup won't be used. If the backup fails, another backup will be made of the migrated wallet, after which the backup will be restored.

The backups can be found at the following locations. The backupIdentifier is generated at the start of the update process and generated based on the current timestamp.

  • Backup path: ${agent.config.fileSystem.basePath}/afj/migration/backup/${backupIdentifier}
  • Migration backup: ${agent.config.fileSystem.basePath}/afj/migration/backup/${backupIdentifier}-error

In the future the backup assistant will make a number of improvements to the recovery process. Namely:

  • Do not throw an error if the update fails, but rather return an object that contains the status, and include the backup paths and backup identifiers.
- - +
Version: v0.5.x

Update Assistant

The Update Assistant helps you update the storage objects from Credo to newer versions. This documents describes the different ways you can leverage the Update Assistant from fully managed to more manual approaches.

Update Strategies

There are three options on how to leverage the update assistant on agent startup:

  1. Manually instantiating the update assistant on agent startup
  2. Storing the agent storage version outside of the agent storage
  3. Automatically update on agent startup

Manually instantiating the update assistant on agent startup

When the version of the storage is stored inside the agent storage, it means we need to check if the agent needs to be updated on every agent startup. We'll initialize the update assistant and check whether the storage is up to date. The advantage of this approach is that you don't have to store anything yourself, and have full control over the workflow.

import { UpdateAssistant, Agent } from '@credo-ts/core'

// or @credo-ts/node
import { agentDependencies } from '@credo-ts/react-native'

// First create the agent
const agent = new Agent({
config,
dependencies: agentDependencies,
})

// Then initialize the update assistant with the update config
const updateAssistant = new UpdateAssistant(agent, {
v0_1ToV0_2: {
mediationRoleUpdateStrategy: 'allMediator',
},
})

// Initialize the update assistant so we can read the current storage version
// from the wallet. If you manually initialize the wallet you should do this _before_
// calling initialize on the update assistant
// await agent.wallet.initialize(walletConfig)
await updateAssistant.initialize()

// Check if the agent is up to date, if not call update
if (!(await updateAssistant.isUpToDate())) {
await updateAssistant.update()
}

// Once finished initialize the agent. You should do this on every launch of the agent
await agent.initialize()

Storing the agent storage version outside of the agent storage

When the version of the storage is stored outside of the agent storage, you don't have to initialize the UpdateAssistant on every agent agent startup. You can just check if the storage version is up to date and instantiate the UpdateAssistant if not. The advantage of this approach is that you don't have to instantiate the UpdateAssistant on every agent startup, but this does mean that you have to store the storage version yourself.

When a wallet has been exported and later imported you don't always have the latest version available. If this is the case you can always rely on Method 1 or 2 for updating the wallet, and storing the version yourself afterwards. You can also get the current version by calling await updateAssistant.getCurrentAgentStorageVersion(). Do note the UpdateAssistant needs to be initialized before calling this method.

import { UpdateAssistant, Agent } from '@credo-ts/core'

// or @credo-ts/node
import { agentDependencies } from '@credo-ts/react-native'

// The storage version will normally be stored in e.g. persistent storage on a mobile device
let currentStorageVersion: VersionString = '0.1'

// First create the agent
const agent = new Agent({
config,
dependencies: agentDependencies,
})

// We only initialize the update assistant if our stored version is not equal
// to the frameworkStorageVersion of the UpdateAssistant. The advantage of this
// is that we don't have to initialize the UpdateAssistant to retrieve the current
// storage version.
if (currentStorageVersion !== UpdateAssistant.frameworkStorageVersion) {
const updateAssistant = new UpdateAssistant(agent, {
v0_1ToV0_2: {
mediationRoleUpdateStrategy: 'recipientIfEndpoint',
},
})

// Same as with the previous strategy, if you normally call agent.wallet.initialize() manually
// you need to call this before calling updateAssistant.initialize()
await updateAssistant.initialize()

await updateAssistant.update()

// Store the version so we can leverage it during the next agent startup and don't have
// to initialize the update assistant again until a new version is released
currentStorageVersion = UpdateAssistant.frameworkStorageVersion
}

// Once finished initialize the agent. You should do this on every launch of the agent
await agent.initialize()

Automatically update on agent startup

This is by far the easiest way to update the agent, but has the least amount of flexibility and is not configurable. This means you will have to use the default update options to update the agent storage. You can find the default update config in the respective version migration guides (e.g. in 0.1-to-0.2).

import { UpdateAssistant, Agent } from '@credo-ts/core'

// or @credo-ts/node
import { agentDependencies } from '@credo-ts/react-native'

// First create the agent, setting the autoUpdateStorageOnStartup option to true
const agent = new Agent({
config: {
...config,
autoUpdateStorageOnStartup: true,
},
dependencies: agentDependencies,
})

// Then we call initialize, which under the hood will call the update assistant if the storage is not update to date.
await agent.initialize()

Backups

Before starting the update, the update assistant will automatically create a backup of the wallet. If the migration succeeds the backup won't be used. If the backup fails, another backup will be made of the migrated wallet, after which the backup will be restored.

The backups can be found at the following locations. The backupIdentifier is generated at the start of the update process and generated based on the current timestamp.

  • Backup path: ${agent.config.fileSystem.basePath}/afj/migration/backup/${backupIdentifier}
  • Migration backup: ${agent.config.fileSystem.basePath}/afj/migration/backup/${backupIdentifier}-error

In the future the backup assistant will make a number of improvements to the recovery process. Namely:

  • Do not throw an error if the update fails, but rather return an object that contains the status, and include the backup paths and backup identifiers.
+ + \ No newline at end of file diff --git a/guides/0.5/updating/update-indy-sdk-to-askar.html b/guides/0.5/updating/update-indy-sdk-to-askar.html index ab767970..c0d79dd8 100644 --- a/guides/0.5/updating/update-indy-sdk-to-askar.html +++ b/guides/0.5/updating/update-indy-sdk-to-askar.html @@ -4,13 +4,13 @@ Migrating from an Indy SDK Wallet to Aries Askar | Credo - - + +
-
Version: v0.5.x

Migrating from an Indy SDK Wallet to Aries Askar

This documentation explains the process of migrating your Indy SDK wallet to Aries Askar.

danger

While the migration script technically works on node.js, it is strongly advised not to use it, yet. The migration of issuer records (such as Schemas and Credential Definitions) is not implemented yet. When a credential definition is detected it will revert the migration process and no harm is done.

caution

Postgres is not supported. If you are using postgres with Indy SDK and need to update to Aries Askar, please open an issue on GitHub.

caution

The migration script is supported to run on 0.3.x before migrating from 0.3.x to 0.4.x. Please refer to Migrating from Credo 0.3.x to 0.4.x to get to 0.4.x afterwards.

It is important to note that this script must be ran before you update from 0.3.x to 0.4.x.

What does the migration do internally?

The migration script does the following to make sure everything is migrated properly, and if anything goes wrong, it will revert back to a working state.

Create a backup

Because undefined behavior might occur, we create a backup in the new tmp directory from Credo. if some error occurs, it will be reverted back to the backed-up state and if no error occurs, it will delete the backup from the temporary directory.

Migrate the database to an Aries Askar structure

The Indy-sdk and Aries Askar have different database structures. So first of all we need to change some table names, decrypt all the items with the old Indy keys, encrypt the items with the new Aries Askar keys and store them inside the new structure.

Try to open the wallet in the new Aries Askar structure

When the wallet is correctly transformed, the wallet will be attempted to be opened.

Update the keys

Aries Askar has a specific way to store keys and every key, defined by the category of Indy::Key will be migrated.

Update the DIDs

caution

This update script does not transform did records. This is fine for something like did:peer, but will cause issues with indy and sov DIDs. For more information, please check out the Migrating from Credo 0.3.x to 0.4.x

Update the credential definitions

danger

Updating of credential definitions is not yet supported. This is why it is strongly advised not to run this script in a node.js environment.

The link secrets, identified by the category Indy::MasterSecret, are updated next. They are stored inside a new AnonCredsLinkSecretRecord.

caution

Since we have to set a default link secret, some additional logic is added to detect this. You can either supply a defaultLinkSercetId as a constructor parameter or it will be based on your walletId.

If there is no Indy record with the defaultLinkSecretId or the walletId, an error will be thrown and the migration will be restored.

Update the credentials

The credentials, identified by the category Indy::Credential are updated last. They are stored in the new AnonCredsCredentialRecord as a one-to-one copy. This means that they now support more tags and will make querying a lot easier.

All the other records

All the other records will be transferred without any updates as they are not Indy specific.

How to update

Updating does not require a lot of code, but must be done with caution.

It is very important to note that the migration script only has to be run once. If it runs for a second time, it will error saying that the database is already migrated. Also, when the migration is finished, it is common practice to store this state in your persistent app storage. This script does not provide a way to detect if an update has happened, so storing this value will prevent the script from running every time. For more information regarding this topic, please check out Update Assistant.

add the required dependencies

yarn add @hyperledger/aries-askar-react-native @aries-framework/indy-sdk-to-askar-migration react-native-fs

Below is the minimal code required for the migration to work. It is recommended to turn the logger on as it gives a lot of information regarding the migration.

caution

The agent is not allowed to be initialized to run this script. This makes sure nothing else happens during the migration.

import { agentDependencies } from '@aries-framework/react-native'
import { AskarModule } from '@aries-framework/askar'
import { IndySdkToAskarMigrationUpdater } from '@aries-framework/indy-sdk-to-askar-migration'
import { ariesAskar } from '@hyperledger/aries-askar-react-native'

const oldAgent = new Agent({
config: {
/* ... */
},
modules: {
ariesAskar: new AskarModule({
ariesAskar,
}),
},
dependencies: agentDependencies,
})

const dbPath = '' // see section below

const updater = await IndySdkToAskarMigrationUpdater.initialize({ dbPath, agent })
await updater.update()

Getting the database path

Android

On android, the database is commonly located under the ExternalDirectoryPath.

If you did not follow the default indy-sdk for React Native setup, your path might differ. Check out step 5 of the Android setup for Indy SDK React Native for the default behavior.

import fs from 'react-native-fs'

const base = fs.ExternalDirectoryPath
const indyClient = '.indy_client'
const wallet = 'wallet'
const walletId = agent.config.walletConfig.id
const file = 'sqlite.db'

const dbPath = `${base}/${indyClient}/${wallet}/${walletId}/${file}`

iOS

On iOS, the database is commonly located under the DocumentDirectoryPath.

For iOS this can only change if your phone does not have the HOME environment variable set. This is not usual behavior, and if HOME is not set, the base in the code section below will be /home/indy/Documents.

import fs from 'react-native-fs'

const base = fs.DocumentDirectoryPath
const indyClient = '.indy_client'
const wallet = 'wallet'
const walletId = agent.config.walletConfig.id
const file = 'sqlite.db'

const dbPath = `${base}/${indyClient}/${wallet}/${walletId}/${file}`
- - +
Version: v0.5.x

Migrating from an Indy SDK Wallet to Aries Askar

This documentation explains the process of migrating your Indy SDK wallet to Aries Askar.

danger

While the migration script technically works on node.js, it is strongly advised not to use it, yet. The migration of issuer records (such as Schemas and Credential Definitions) is not implemented yet. When a credential definition is detected it will revert the migration process and no harm is done.

caution

Postgres is not supported. If you are using postgres with Indy SDK and need to update to Aries Askar, please open an issue on GitHub.

caution

The migration script is supported to run on 0.3.x before migrating from 0.3.x to 0.4.x. Please refer to Migrating from Credo 0.3.x to 0.4.x to get to 0.4.x afterwards.

It is important to note that this script must be ran before you update from 0.3.x to 0.4.x.

What does the migration do internally?

The migration script does the following to make sure everything is migrated properly, and if anything goes wrong, it will revert back to a working state.

Create a backup

Because undefined behavior might occur, we create a backup in the new tmp directory from Credo. if some error occurs, it will be reverted back to the backed-up state and if no error occurs, it will delete the backup from the temporary directory.

Migrate the database to an Aries Askar structure

The Indy-sdk and Aries Askar have different database structures. So first of all we need to change some table names, decrypt all the items with the old Indy keys, encrypt the items with the new Aries Askar keys and store them inside the new structure.

Try to open the wallet in the new Aries Askar structure

When the wallet is correctly transformed, the wallet will be attempted to be opened.

Update the keys

Aries Askar has a specific way to store keys and every key, defined by the category of Indy::Key will be migrated.

Update the DIDs

caution

This update script does not transform did records. This is fine for something like did:peer, but will cause issues with indy and sov DIDs. For more information, please check out the Migrating from Credo 0.3.x to 0.4.x

Update the credential definitions

danger

Updating of credential definitions is not yet supported. This is why it is strongly advised not to run this script in a node.js environment.

The link secrets, identified by the category Indy::MasterSecret, are updated next. They are stored inside a new AnonCredsLinkSecretRecord.

caution

Since we have to set a default link secret, some additional logic is added to detect this. You can either supply a defaultLinkSercetId as a constructor parameter or it will be based on your walletId.

If there is no Indy record with the defaultLinkSecretId or the walletId, an error will be thrown and the migration will be restored.

Update the credentials

The credentials, identified by the category Indy::Credential are updated last. They are stored in the new AnonCredsCredentialRecord as a one-to-one copy. This means that they now support more tags and will make querying a lot easier.

All the other records

All the other records will be transferred without any updates as they are not Indy specific.

How to update

Updating does not require a lot of code, but must be done with caution.

It is very important to note that the migration script only has to be run once. If it runs for a second time, it will error saying that the database is already migrated. Also, when the migration is finished, it is common practice to store this state in your persistent app storage. This script does not provide a way to detect if an update has happened, so storing this value will prevent the script from running every time. For more information regarding this topic, please check out Update Assistant.

add the required dependencies

yarn add @hyperledger/aries-askar-react-native @credo-ts/indy-sdk-to-askar-migration react-native-fs

Below is the minimal code required for the migration to work. It is recommended to turn the logger on as it gives a lot of information regarding the migration.

caution

The agent is not allowed to be initialized to run this script. This makes sure nothing else happens during the migration.

import { agentDependencies } from '@credo-ts/react-native'
import { AskarModule } from '@credo-ts/askar'
import { IndySdkToAskarMigrationUpdater } from '@credo-ts/indy-sdk-to-askar-migration'
import { ariesAskar } from '@hyperledger/aries-askar-react-native'

const oldAgent = new Agent({
config: {
/* ... */
},
modules: {
ariesAskar: new AskarModule({
ariesAskar,
}),
},
dependencies: agentDependencies,
})

const dbPath = '' // see section below

const updater = await IndySdkToAskarMigrationUpdater.initialize({ dbPath, agent })
await updater.update()

Getting the database path

Android

On android, the database is commonly located under the ExternalDirectoryPath.

If you did not follow the default indy-sdk for React Native setup, your path might differ. Check out step 5 of the Android setup for Indy SDK React Native for the default behavior.

import fs from 'react-native-fs'

const base = fs.ExternalDirectoryPath
const indyClient = '.indy_client'
const wallet = 'wallet'
const walletId = agent.config.walletConfig.id
const file = 'sqlite.db'

const dbPath = `${base}/${indyClient}/${wallet}/${walletId}/${file}`

iOS

On iOS, the database is commonly located under the DocumentDirectoryPath.

For iOS this can only change if your phone does not have the HOME environment variable set. This is not usual behavior, and if HOME is not set, the base in the code section below will be /home/indy/Documents.

import fs from 'react-native-fs'

const base = fs.DocumentDirectoryPath
const indyClient = '.indy_client'
const wallet = 'wallet'
const walletId = agent.config.walletConfig.id
const file = 'sqlite.db'

const dbPath = `${base}/${indyClient}/${wallet}/${walletId}/${file}`
+ + \ No newline at end of file diff --git a/guides/0.5/updating/versions/0.1-to-0.2.html b/guides/0.5/updating/versions/0.1-to-0.2.html index c19782f3..d31cc274 100644 --- a/guides/0.5/updating/versions/0.1-to-0.2.html +++ b/guides/0.5/updating/versions/0.1-to-0.2.html @@ -4,15 +4,15 @@ Migrating from Credo 0.1.0 to 0.2.x | Credo - - + +
-
Version: v0.5.x

Migrating from Credo 0.1.0 to 0.2.x

This document describes everything you need to know for updating Credo 0.1.0 to 0.2.x. If you're not aware of how updating in Credo works make sure to first read the guide on Updating Credo.

First of all, update you dependencies to the 0.2.x versions. This will also update the needed peer depedencnies. Extension packages are not updated with this command. You need to update these manually, and make sure they're up to date with the latest version of Credo.

yarn add @aries-framework/react-native@^0.2.0 @aries-framework/core@^0.2.0 indy-sdk-react-native@^0.2.0

# or NPM
npn install @aries-framework/react-native@^0.2.0 @aries-framework/core@^0.2.0 indy-sdk-react-native@^0.2.0

Breaking Code Changes

This section will list all breaking changes made to the public API of Credo between version 0.1.0 and 0.2.0.

info

If you have custom modules take into account there could be a lot more breaking changes that aren't documented here. We try to make sure that the biggest breaking changes to the internal API are also documented here (e.g. see Updating Custom Messages to the New Message Type Objects), but it is possible some breaking changes are not documented here (feel free to open PRs).

Credentials Module

Module API Updates

With the addition of the issue credential v2 protocol and the preparation for multiple attachment formats (to be added in a later release), we've made some big changes to the credentials module API. Most changes are related to structure, so updating your code to the new API should be straightforward.

Basically for all methods in the credential module you should take the following steps to update your code:

  1. Move all function parameters into a single object. All module methods now take a single object that contain all properties.
  2. For methods that initiate a protocol (starting from offer, proposal), you should pass protocolVersion: 'v1' to indicate we should use the v1 protocol. (v2 is also supported, but this focuses on the breaking changes, not the new features).
  3. All indy specific attributes (e.g. credentialDefinitionId) should be passed in the credentialFormats.indy object.
  4. The preview should now be passed as only the preview attributes (the the full preview) and provided in the credentialFormats.indy object.
await agent.credentials.offerCredential('connectionId', {
autoAcceptCredential: AutoAcceptCredential.Always,
comment: 'hello',

credentialDefinitionId: 'credentialDefinitionId',
preview: new CredentialPreview({
attributes: [new CredentialPreviewAttribute({ name: 'key', value: 'value' })],
}),
})

Data from Received Messages only Stored in Record after Accepting

Previously when we received a message from another connection we would store the relevant data from the exchange in the credential record. The values we would store were the credentialDefinitionId and schemaId in the credential metadata, and the credentialAttributes field.

Starting with Credo 0.2.0 the values are not stored in the credential record until after the message content has been accepted (in the case of an offer this means after sending the request message). This is to avoid ambiguity of the values in the credential record. If I have sent a proposal and then receive an offer, should the credential record contain the values from the proposal or the values from the offer? The first one reflects our view on what the data should be, the second one reflects the latest data.

We decided to make the record properties always hold our view of what the data should be, and only update it after accepting the contents of a received message (either using auto accept, or by calling the acceptXXX methods on the credential module).

This is an important change and requires some updates to how you extract the relevant data from the offer (or other messages such the proposal). We've added a new getFormatData method on the credentials module that allows you to retrieve the attributes and format data for all messages in an exchange. One of the advantages of this approach is that we don't have to store all relevant data in the credential record anymore, which helps when adding new formats that don't match with the attributes used for indy credentials. In addition, the return value for this method is the same whether v1 or v2 of the protocol is used. This means your code should only care about the credential format (indy in this case) and doesn't have to worry about the protocol version.

agent.events.on<CredentialStateChangedEvent>(
CredentialEventTypes.CredentialStateChanged,
({ payload: { credentialRecord } }) => {
const indyCredentialMetadata = credentialRecord.metadata.get(CredentialMetadataKeys.IndyCredential)

// Get credential definition id, schema id and attributes from offer
const credentialDefinitionId = indyCredentialMetadata?.credentialDefinitionId
const schemaId = indyCredentialMetadata?.schemaId
const attributes = credentialRecord.credentialAttributes
}
)

Messages Extracted from Credential Record

The DIDComm messages that were previously stored on the credential record, have been extracted to separate DIDComm message records. This makes it easier to work with multiple versions of the protocol internally, and keeps the credential exchange record agnostic of the protocol version. Instead of accessing the messages through the proposalMessage, offerMessage, requestMessage and credentialMessage parameters, we now expose dedicated methods on the credentials module to retrieve the message.

With the addition of the v2 messages, all v1 messages have been prefixed with V1 while v2 messages have been prefixed with V2 (V1ProposeCredentialMessage and V2ProposeCredentialMessage). If you were using these messages classes throughout your codebase, update them to use the V1 prefix.

const credentialRecord = await agent.credentials.getById('credentialRecordId')

const proposalMessage = credentialRecord.proposalMessage
const offerMessage = credentialRecord.offerMessage
const requestMessage = credentialRecord.requestMessage
const credentialMessage = credentialRecord.credentialMessage

Connections Module

Version 0.2.0 added support for the Out of Band protocol with support for the DID Exchange protocol. Internally Credo now uses out of band invitations for all connections, even if you're connecting using the old invitations from the Connection protocol.

Creating a Legacy Invitation

The createInvitation method on the connections module has been moved to the out of band module and renamed to createLegacyInvitation. The method is not planned to be removed in the near future, the legacy merely indicates this will create an RFC 0160 connection invitation. Internally Credo creates an out of band invitation and transforms it into a legacy invitation. If you want to create an out of band invitation instead, you should use oob.createInvitation.

const { connectionRecord, invitation } = await agent.connections.createInvitation({
/* config */
})

const invitationUrl = invitation.toUrl({ domain: 'https://example.com' })

Receiving a Legacy Invitation

The receiveInvitation and receiveInvitationFromUrl methods on the connections module have also been moved to the out of band module. Both methods support the new out of band invitations and the legacy RFC 0160 connection invitations. Internally Credo converts the old invitations to out of band invitations.

const invitationUrl = 'https://example.com?c_i=eyXXX'

// Receive invitation directly from url
const connectionRecord = await agent.connections.receiveInvitationFromUrl(invitationUrl, {
/* config */
})

// Parse invitation and receive invitation
const parsedInvitation = await ConnectionInvitationMessage.fromUrl(invitationUrl)
const connectionRecord = await agent.connections.receiveInvitation(parsedInvitation, {
/* config */
})

Updating to use DidExchangeState

The ConnectionState that was previously used for the state of the ConnectionRecord has been changed to use the DidExchangeState for both connections made using the RFC 0160 Connection Protocol, as well as the RFC 0023 DID Exchange Protocol.

The DidExchangeState has the following values:

  • DidExchangeState.Start,
  • DidExchangeState.InvitationSent,
  • DidExchangeState.InvitationReceived,
  • DidExchangeState.RequestSent,
  • DidExchangeState.RequestReceived,
  • DidExchangeState.ResponseSent,
  • DidExchangeState.ResponseReceived,
  • DidExchangeState.Abandoned,
  • DidExchangeState.Completed

If you still need to access the old ConnectionState you can do so by accessing the computed connectionRecord.rfc0160State property. This will return the old ConnectionState value.

Updating Custom Messages to the New Message Type Objects

Although this isn't a breaking change to the public API of the framework, it is something that you will need to take into account when creating custom modules. Starting from Credo 0.2.0 we now support handling messages with different minor versions (e.g. receive a message with @type version 1.1 while we only support 1.0). With this change messages must now declare the message type as an ParsedMessageType object. We've added an parseMessageType util method that can help with this.

import { AgentMessage } from '@aries-framework/core'
import { Equals } from 'class-validator'

class MyMessage extends AgentMessage {
@Equals(MyMessage.type)
public readonly type = MyMessage.type
public static readonly type = 'https://didcomm.org/my-protocol/1.0/my-type'
}

Breaking Storage Changes

The 0.2.0 release is heavy on breaking changes to the storage format. This is not what we intend to do with every release. But as there's not that many people yet using the framework in production, and there were a lot of changes needed to keep the API straightforward, we decided to bundle a lot of breaking changes in this one release.

Below all breaking storage changes are explained in as much detail as possible. The update assistant provides all tools to migrate without a hassle, but it is important to know what has changed. All examples only show the keys that have changed, unrelated keys in records have been omitted.

See the Update Assistant documentation for a guide on how to use the update assistant.

The following config can be provided to the update assistant to migrate from 0.1.0 to 0.2.0:

{
"v0_1ToV0_2": {
"mediationRoleUpdateStrategy": "<mediationRoleUpdateStrategy>"
}
}

Credential Metadata

The credential record had a custom metadata property in pre-0.1.0 storage that contained the requestMetadata, schemaId and credentialDefinition properties. Later a generic metadata API was added that only allows objects to be stored. Therefore the properties were moved into a different structure.

{
"requestMetadata": <value of requestMetadata>,
"schemaId": "<value of schemaId>",
"credentialDefinitionId": "<value of credential definition id>"
}

Migrate Credential Record Properties

In 0.2.0 the v1 DIDComm messages have been moved out of the credential record into separate records using the DidCommMessageRepository. The migration scripts extracts all messages (proposalMessage, offerMessage, requestMessage, credentialMessage) and moves them into the DidCommMessageRepository.

With the addition of support for different protocol versions the credential record now stores the protocol version. With the addition of issue credential v2 support, other credential formats than indy can be used, and multiple credentials can be issued at once. To account for this the credentialId has been replaced by the credentials array. This is an array of objects containing the credentialRecordId and the credentialRecordType. For all current credentials the credentialRecordType will always be indy.

{
"credentialId": "09e46da9-a575-4909-b016-040e96c3c539",
"proposalMessage": { ... },
"offerMessage": { ... },
"requestMessage": { ... },
"credentialMessage": { ... },
}

Mediation Record Role

The role in the mediation record was always being set to MediationRole.Mediator for both mediators and recipients. This didn't cause any issues, but would return the wrong role for recipients.

In 0.2 a check is added to make sure the role of a mediation record matches with actions (e.g. a recipient can't grant mediation), which means it will throw an error if the role is not set correctly.

Because it's not always possible detect whether the role should actually be mediator or recipient, a number of configuration options are provided on how the role should be updated using the v0_1ToV0_2.mediationRoleUpdateStrategy option:

  • allMediator: The role is set to MediationRole.Mediator for both mediators and recipients
  • allRecipient: The role is set to MediationRole.Recipient for both mediators and recipients
  • recipientIfEndpoint (default): The role is set to MediationRole.Recipient if their is an endpoint configured on the record. The endpoint is not set when running as a mediator. There is one case where this could be problematic when the role should be recipient, if the mediation grant hasn't actually occurred (meaning the endpoint is not set). This is probably the best approach +
    Version: v0.5.x

    Migrating from Credo 0.1.0 to 0.2.x

    This document describes everything you need to know for updating Credo 0.1.0 to 0.2.x. If you're not aware of how updating in Credo works make sure to first read the guide on Updating Credo.

    First of all, update you dependencies to the 0.2.x versions. This will also update the needed peer depedencnies. Extension packages are not updated with this command. You need to update these manually, and make sure they're up to date with the latest version of Credo.

    yarn add @aries-framework/react-native@^0.2.0 @aries-framework/core@^0.2.0 indy-sdk-react-native@^0.2.0

    # or NPM
    npn install @aries-framework/react-native@^0.2.0 @aries-framework/core@^0.2.0 indy-sdk-react-native@^0.2.0

    Breaking Code Changes

    This section will list all breaking changes made to the public API of Credo between version 0.1.0 and 0.2.0.

    info

    If you have custom modules take into account there could be a lot more breaking changes that aren't documented here. We try to make sure that the biggest breaking changes to the internal API are also documented here (e.g. see Updating Custom Messages to the New Message Type Objects), but it is possible some breaking changes are not documented here (feel free to open PRs).

    Credentials Module

    Module API Updates

    With the addition of the issue credential v2 protocol and the preparation for multiple attachment formats (to be added in a later release), we've made some big changes to the credentials module API. Most changes are related to structure, so updating your code to the new API should be straightforward.

    Basically for all methods in the credential module you should take the following steps to update your code:

    1. Move all function parameters into a single object. All module methods now take a single object that contain all properties.
    2. For methods that initiate a protocol (starting from offer, proposal), you should pass protocolVersion: 'v1' to indicate we should use the v1 protocol. (v2 is also supported, but this focuses on the breaking changes, not the new features).
    3. All indy specific attributes (e.g. credentialDefinitionId) should be passed in the credentialFormats.indy object.
    4. The preview should now be passed as only the preview attributes (the the full preview) and provided in the credentialFormats.indy object.
    await agent.credentials.offerCredential('connectionId', {
    autoAcceptCredential: AutoAcceptCredential.Always,
    comment: 'hello',

    credentialDefinitionId: 'credentialDefinitionId',
    preview: new CredentialPreview({
    attributes: [new CredentialPreviewAttribute({ name: 'key', value: 'value' })],
    }),
    })

    Data from Received Messages only Stored in Record after Accepting

    Previously when we received a message from another connection we would store the relevant data from the exchange in the credential record. The values we would store were the credentialDefinitionId and schemaId in the credential metadata, and the credentialAttributes field.

    Starting with Credo 0.2.0 the values are not stored in the credential record until after the message content has been accepted (in the case of an offer this means after sending the request message). This is to avoid ambiguity of the values in the credential record. If I have sent a proposal and then receive an offer, should the credential record contain the values from the proposal or the values from the offer? The first one reflects our view on what the data should be, the second one reflects the latest data.

    We decided to make the record properties always hold our view of what the data should be, and only update it after accepting the contents of a received message (either using auto accept, or by calling the acceptXXX methods on the credential module).

    This is an important change and requires some updates to how you extract the relevant data from the offer (or other messages such the proposal). We've added a new getFormatData method on the credentials module that allows you to retrieve the attributes and format data for all messages in an exchange. One of the advantages of this approach is that we don't have to store all relevant data in the credential record anymore, which helps when adding new formats that don't match with the attributes used for indy credentials. In addition, the return value for this method is the same whether v1 or v2 of the protocol is used. This means your code should only care about the credential format (indy in this case) and doesn't have to worry about the protocol version.

    agent.events.on<CredentialStateChangedEvent>(
    CredentialEventTypes.CredentialStateChanged,
    ({ payload: { credentialRecord } }) => {
    const indyCredentialMetadata = credentialRecord.metadata.get(CredentialMetadataKeys.IndyCredential)

    // Get credential definition id, schema id and attributes from offer
    const credentialDefinitionId = indyCredentialMetadata?.credentialDefinitionId
    const schemaId = indyCredentialMetadata?.schemaId
    const attributes = credentialRecord.credentialAttributes
    }
    )

    Messages Extracted from Credential Record

    The DIDComm messages that were previously stored on the credential record, have been extracted to separate DIDComm message records. This makes it easier to work with multiple versions of the protocol internally, and keeps the credential exchange record agnostic of the protocol version. Instead of accessing the messages through the proposalMessage, offerMessage, requestMessage and credentialMessage parameters, we now expose dedicated methods on the credentials module to retrieve the message.

    With the addition of the v2 messages, all v1 messages have been prefixed with V1 while v2 messages have been prefixed with V2 (V1ProposeCredentialMessage and V2ProposeCredentialMessage). If you were using these messages classes throughout your codebase, update them to use the V1 prefix.

    const credentialRecord = await agent.credentials.getById('credentialRecordId')

    const proposalMessage = credentialRecord.proposalMessage
    const offerMessage = credentialRecord.offerMessage
    const requestMessage = credentialRecord.requestMessage
    const credentialMessage = credentialRecord.credentialMessage

    Connections Module

    Version 0.2.0 added support for the Out of Band protocol with support for the DID Exchange protocol. Internally Credo now uses out of band invitations for all connections, even if you're connecting using the old invitations from the Connection protocol.

    Creating a Legacy Invitation

    The createInvitation method on the connections module has been moved to the out of band module and renamed to createLegacyInvitation. The method is not planned to be removed in the near future, the legacy merely indicates this will create an RFC 0160 connection invitation. Internally Credo creates an out of band invitation and transforms it into a legacy invitation. If you want to create an out of band invitation instead, you should use oob.createInvitation.

    const { connectionRecord, invitation } = await agent.connections.createInvitation({
    /* config */
    })

    const invitationUrl = invitation.toUrl({ domain: 'https://example.com' })

    Receiving a Legacy Invitation

    The receiveInvitation and receiveInvitationFromUrl methods on the connections module have also been moved to the out of band module. Both methods support the new out of band invitations and the legacy RFC 0160 connection invitations. Internally Credo converts the old invitations to out of band invitations.

    const invitationUrl = 'https://example.com?c_i=eyXXX'

    // Receive invitation directly from url
    const connectionRecord = await agent.connections.receiveInvitationFromUrl(invitationUrl, {
    /* config */
    })

    // Parse invitation and receive invitation
    const parsedInvitation = await ConnectionInvitationMessage.fromUrl(invitationUrl)
    const connectionRecord = await agent.connections.receiveInvitation(parsedInvitation, {
    /* config */
    })

    Updating to use DidExchangeState

    The ConnectionState that was previously used for the state of the ConnectionRecord has been changed to use the DidExchangeState for both connections made using the RFC 0160 Connection Protocol, as well as the RFC 0023 DID Exchange Protocol.

    The DidExchangeState has the following values:

    • DidExchangeState.Start,
    • DidExchangeState.InvitationSent,
    • DidExchangeState.InvitationReceived,
    • DidExchangeState.RequestSent,
    • DidExchangeState.RequestReceived,
    • DidExchangeState.ResponseSent,
    • DidExchangeState.ResponseReceived,
    • DidExchangeState.Abandoned,
    • DidExchangeState.Completed

    If you still need to access the old ConnectionState you can do so by accessing the computed connectionRecord.rfc0160State property. This will return the old ConnectionState value.

    Updating Custom Messages to the New Message Type Objects

    Although this isn't a breaking change to the public API of the framework, it is something that you will need to take into account when creating custom modules. Starting from Credo 0.2.0 we now support handling messages with different minor versions (e.g. receive a message with @type version 1.1 while we only support 1.0). With this change messages must now declare the message type as an ParsedMessageType object. We've added an parseMessageType util method that can help with this.

    import { AgentMessage } from '@aries-framework/core'
    import { Equals } from 'class-validator'

    class MyMessage extends AgentMessage {
    @Equals(MyMessage.type)
    public readonly type = MyMessage.type
    public static readonly type = 'https://didcomm.org/my-protocol/1.0/my-type'
    }

    Breaking Storage Changes

    The 0.2.0 release is heavy on breaking changes to the storage format. This is not what we intend to do with every release. But as there's not that many people yet using the framework in production, and there were a lot of changes needed to keep the API straightforward, we decided to bundle a lot of breaking changes in this one release.

    Below all breaking storage changes are explained in as much detail as possible. The update assistant provides all tools to migrate without a hassle, but it is important to know what has changed. All examples only show the keys that have changed, unrelated keys in records have been omitted.

    See the Update Assistant documentation for a guide on how to use the update assistant.

    The following config can be provided to the update assistant to migrate from 0.1.0 to 0.2.0:

    {
    "v0_1ToV0_2": {
    "mediationRoleUpdateStrategy": "<mediationRoleUpdateStrategy>"
    }
    }

    Credential Metadata

    The credential record had a custom metadata property in pre-0.1.0 storage that contained the requestMetadata, schemaId and credentialDefinition properties. Later a generic metadata API was added that only allows objects to be stored. Therefore the properties were moved into a different structure.

    {
    "requestMetadata": <value of requestMetadata>,
    "schemaId": "<value of schemaId>",
    "credentialDefinitionId": "<value of credential definition id>"
    }

    Migrate Credential Record Properties

    In 0.2.0 the v1 DIDComm messages have been moved out of the credential record into separate records using the DidCommMessageRepository. The migration scripts extracts all messages (proposalMessage, offerMessage, requestMessage, credentialMessage) and moves them into the DidCommMessageRepository.

    With the addition of support for different protocol versions the credential record now stores the protocol version. With the addition of issue credential v2 support, other credential formats than indy can be used, and multiple credentials can be issued at once. To account for this the credentialId has been replaced by the credentials array. This is an array of objects containing the credentialRecordId and the credentialRecordType. For all current credentials the credentialRecordType will always be indy.

    {
    "credentialId": "09e46da9-a575-4909-b016-040e96c3c539",
    "proposalMessage": { ... },
    "offerMessage": { ... },
    "requestMessage": { ... },
    "credentialMessage": { ... },
    }

    Mediation Record Role

    The role in the mediation record was always being set to MediationRole.Mediator for both mediators and recipients. This didn't cause any issues, but would return the wrong role for recipients.

    In 0.2 a check is added to make sure the role of a mediation record matches with actions (e.g. a recipient can't grant mediation), which means it will throw an error if the role is not set correctly.

    Because it's not always possible detect whether the role should actually be mediator or recipient, a number of configuration options are provided on how the role should be updated using the v0_1ToV0_2.mediationRoleUpdateStrategy option:

    • allMediator: The role is set to MediationRole.Mediator for both mediators and recipients
    • allRecipient: The role is set to MediationRole.Recipient for both mediators and recipients
    • recipientIfEndpoint (default): The role is set to MediationRole.Recipient if their is an endpoint configured on the record. The endpoint is not set when running as a mediator. There is one case where this could be problematic when the role should be recipient, if the mediation grant hasn't actually occurred (meaning the endpoint is not set). This is probably the best approach otherwise it is set to MediationRole.Mediator
    • doNotChange: The role is not changed

    Most agents only act as either the role of mediator or recipient, in which case the allMediator or allRecipient configuration is the most appropriate. If your agent acts as both a recipient and mediator, the recipientIfEndpoint configuration is the most appropriate. The doNotChange options is not recommended and can lead to errors if the role is not set correctly.

    Extracting Did Documents to Did Repository

    The connection record previously stored both did documents from a connection in the connection record itself. Version 0.2.0 added a generic did storage that can be used for numerous usages, one of which is the storage of did documents for connection records.

    The migration script extracts the did documents from the didDoc and theirDidDoc properties from the connection record, updates them to did documents compliant with the did core spec, and stores them in the did repository. By doing so it also updates the unqualified dids in the did and theirDid fields generated by the indy-sdk to fully qualified did:peer dids compliant with the Peer DID Method Specification.

    To account for the fact that the mechanism to migrate legacy did document to peer did documents is not defined yet, the legacy did and did document are stored in the did record metadata. This will be deleted later if we can be certain the did doc conversion to a did:peer did document is correct.

    {
    "did": "BBPoJqRKatdcfLEAFL7exC",
    "theirDid": "UppcJ5APts7ot5WX25943F",
    "verkey": "GAb4NUvpBcHVCvtP45vTVa5Bp74vFg3iXzdp1Gbd68Wf",
    "didDoc": <legacyDidDoc>,
    "theirDidDoc": <legacyTheirDidDoc>,
    }

    Migrating to the Out of Band Record

    With the addition of the out of band protocol, invitations are now stored in the OutOfBandRecord. In addition a new field invitationDid is added to the connection record that is generated based on the invitation service or did. This allows to reuse existing connections.

    The migration script extracts the invitation and other relevant data into a separate OutOfBandRecord. By doing so it converts the old connection protocol invitation into the new Out of band invitation message. Based on the service or did of the invitation, the invitationDid is populated.

    Previously when creating a multi use invitation, a connection record would be created with the multiUseInvitation set to true. The connection record would always be in state invited. If a request for the multi use invitation came in, a new connection record would be created. With the addition of the out of band module, no connection records are created until a request is received. So for multi use invitation this means that the connection record with multiUseInvitation=true will be deleted, and instead all connections created using that out of band invitation will contain the outOfBandId of the multi use invitation.

    {
    "invitation": {
    "@type": "https://didcomm.org/connections/1.0/invitation",
    "@id": "04a2c382-999e-4de9-a1d2-9dec0b2fa5e4",
    "recipientKeys": ["E6D1m3eERqCueX4ZgMCY14B4NceAr6XP2HyVqt55gDhu"],
    "serviceEndpoint": "https://example.com",
    "label": "test"
    },
    "multiUseInvitation": "false"
    }

    Unifying Connection States and Roles

    With the addition of the did exchange protocol there are now two states and roles related to the connection record; for the did exchange protocol and for the connection protocol. To keep it easy to work with the connection record, all state and role values are updated to those of the DidExchangeRole and DidExchangeState enums.

    The migration script transforms all connection record state and role values to their respective values of the DidExchangeRole and DidExchangeState enums. For convenience a getter property rfc0160ConnectionState is added to the connection record which returns the ConnectionState value.

    {
    "state": "invited",
    "role": "inviter"
    }
- - + + \ No newline at end of file diff --git a/guides/0.5/updating/versions/0.2-to-0.3.html b/guides/0.5/updating/versions/0.2-to-0.3.html index a9c7e8c8..451f627b 100644 --- a/guides/0.5/updating/versions/0.2-to-0.3.html +++ b/guides/0.5/updating/versions/0.2-to-0.3.html @@ -4,13 +4,13 @@ Migrating from Credo 0.2.x to 0.3.x | Credo - - + +
-
Version: v0.5.x

Migrating from Credo 0.2.x to 0.3.x

This document describes everything you need to know for updating Credo 0.2.x to 0.3.x. If you're not aware of how updating in Credo works make sure to first read the guide on Updating Credo.

First of all, update you dependencies to the 0.3.x versions. This will also update the needed peer depedencnies. Extension packages are not updated with this command. You need to update these manually, and make sure they're up to date with the latest version of Credo.

yarn add @aries-framework/react-native@^0.3.0 @aries-framework/core@^0.3.0 indy-sdk-react-native@^0.3.0

# or NPM
npn install @aries-framework/react-native@^0.3.0 @aries-framework/core@^0.3.0 indy-sdk-react-native@^0.3.0

Breaking Code Changes

This section will list all breaking changes made to the public API of Credo between version 0.2.x and 0.3.0.

info

If you have custom modules take into account there could be a lot more breaking changes that aren't documented here. We try to make sure that the biggest breaking changes to the internal API are also documented here (e.g. see Updating Custom Modules to the Plugin API), but it is possible some breaking changes are not documented here (feel free to open PRs).

Agent creation

The agent constructor has been updated to a single AgentOptions object that contains the config and dependencies properties.

const agent = new Agent(agentConfig, agentDependencies)

This object contains:

  • config: Agent's initial configuration
  • dependencies: platform-specific Agent dependencies
  • modules: optional field for internal module configuration and custom module registration

For easy migration, you can simply construct AgentOptions by putting current InitConfig into config key and agentDependencies into dependencies key.

Note that, if you are defining indyLedgers configuration, you should set the indyNamespace for every ledger, as explained in Agent Config tutorial.

did:key usage in protocols

In accordance with Aries RFC 0360, since 0.2.5 there is a configuration parameter called useDidKeyInProtocols which, when enabled, will encode keys in did:key instead of previous base58 format, unless the other party has started a protocol and is using base58.

This parameter was previously disabled by default and now it is enabled. If your agent only interacts with modern agents (e.g. Credo 0.2.5 and newer) this will not represent any issue. Otherwise it is safer to explicitly set it to false. However, keep in mind that we expect this setting to be deprecated in the future, so we encourage you to update all your agents to use did:key.

Modules extracted from the core

In this release two modules were extracted from the core and published as separate, optional packages:

  • actionMenu has been moved to @aries-framework/action-menu
  • questionAnswer has been moved to @aries-framework/question-answer

If you want to use them, you can integrate in an Agent instance by injecting them in constructor, as follows:

import { ActionMenuModule } from '@aries-framework/action-menu'
import { QuestionAnswerModule } from '@aries-framework/question-answer'

const agent = new Agent({
config: {
/* config */
},
dependencies: agentDependencies,
modules: {
actionMenu: new ActionMenuModule(),
questionAnswer: new QuestionAnswerModule(),
/* other custom modules */
},
})

As they are now considered custom modules, their API can be accessed in modules namespace, so you should add it to every call to them.

await agent.questionAnswer.sendQuestion(connectionId, {
question: 'Do you want to play?',
validResponses: [{ text: 'Yes' }, { text: 'No' }],
})

await agent.questionAnswer.sendAnswer(questionAnswerRecordId, 'Yes')

Discover Features Module

This module now supports both Discover Features V1 and V2, and as it happened to other modules, queryFeatures method parameters have been unified to a single object and requires to specify the version of Discover Features protocol to be used. Note that query property has been replaced by the more general queries which accepts multiple features to be search for. To convert a query to this new format you simply need to create a single-object array whose unique object whose featureType field is 'protocol' and match field is the query itself.

await agent.discovery.queryFeatures(connectionId, {
query: 'https://didcomm.org/messagepickup/2.0',
comment: 'Detect if protocol is supported',
})

The convenience method isProtocolSupported has been replaced by the more general synchronous mode of queryFeatures, which works when awaitDisclosures in options is set. Instead of returning a boolean, it returns an object with matching features:

const isPickUpV2Supported = await agent.discovery.isProtocolSupported(connectionId, StatusRequestMessage)
info

Discover Features module does not rely anymore on Agent Dispatcher to determine protocol support. Instead, it uses the new Feature Registry, where any custom modules implementing protocols must register them.

This procedure can be done in module's register(dependencyManager, featureRegistry).

Ledger Module

Apart from the aforementioned indyLedgers configuration, you should also note a slight change in behaviour when attempting to register credential definitions that already exists on the ledger but not in the wallet.

Proofs Module

Module API Updates

Much in the same way as in 0.2.0 release when Issue Credential V2 protocol has been added, now that Present Proof V2 is supported, we introduced changes to proofs module.

Basically, for all methods in the proofs module you should take the following steps to update your code:

  1. Move all function parameters into a single object. All module methods now take a single object that contain all properties.
  2. For methods that initiate proposals, requests or presentations (proposeProof, acceptProposal, requestProof, acceptPresentation, etc.), you should pass protocolVersion: 'v1' to indicate we should use the v1 protocol
  3. All indy specific attributes (e.g. Presentation Preview) should be passed in the proofFormats.indy object.
  4. Some indy objects, as the preview should now be passed only as their attributes (i.e. no need of creating the object instance) and provided in the proofFormats.indy object.
await agent.proofs.proposeProof(
'connectionId',
new PresentationPreview({
attributes: [new PresentationPreviewAttribute({ name: 'key', value: 'value' })],
predicates: [
new PresentationPreviewPredicate({
name: 'age',
credentialDefinitionId,
predicate: PredicateType.GreaterThanOrEqualTo,
threshold: 50,
}),
],
})
)

Messages Extracted from Proof Exchange Record

The DIDComm messages that were previously stored on the proof record, have been extracted to separate DIDComm message records. This makes it easier to work with multiple versions of the protocol internally, and keeps the proof exchange record agnostic of the protocol version. Instead of accessing the messages through the proposalMessage, requestMessage and presentationMessage parameters, we now expose dedicated methods on the proofs module to retrieve the message.

With the addition of the v2 messages, all v1 messages have been prefixed with V1 while v2 messages have been prefixed with V2 (V1RequestPresentationMessage and V2RequestPresentationMessage). If you were using these messages classes throughout your codebase, update them to use the V1 prefix.

const proofRecord = await agent.proofs.getById('proofRecordId')

const proposalMessage = proofRecord.proposalMessage
const requestMessage = proofRecord.requestMessage
const presentationMessage = proofRecord.presentationMessage

Out Of Band Proofs and Credentials

With the addition of the out of band module, the creation of connection-less messages has been split into two steps, allowing for better control and flexibility. The previous agent.proofs.createOutOfBandRequest has been replaced by the agent.proofs.createRequest method. This new method creates a proof request that is not tied to any connection.

What you can now do is call agent.oob.createLegacyConnectionlessInvitation to attach the service decorator to the message and get a legacy connectionless message.

const { requestMessage, proofRecord } = await agent.proofs.createOutOfBandRequest({
requestedAttributes: {
group1: {
name: 'dateOfBirth',
restrictions: [{ schemaId: 'F72i3Y3Q4i466efjYJYCHM:2:aha_cert:4.1.1' }],
},
},
})

Out of band invitations are the new way to send messages out of band. You can use it for connection-less exchanges, but also for exchanges that you want to establish a connection for first. Here's an example on how to use the out of band module to create a connection-less invitation for a proof request:

const outOfBandRecord = await agent.oob.createInvitation({
handshake: false, // set to true if you want to create a connection
messages: [message],
})

const invitationUrl = outOfBandRecord.outOfBandInvitation.toUrl({
domain: 'https://Credo.com',
})

As you can see, there's now a lot more ways to use a message not tied to a connection. By splitting the creation of the message from the creation of the invitation, we can now create a message not bound to a connection (at time of creation) for multiple use cases.

Updating Custom Modules to the new Plugin API

Although this isn't a breaking change to the public API of the framework, it is something that you will need to take into account if you have custom modules and want to upgrade them to make compatible with Credo 0.3.0.

Renaming handler classes

Handler has been have been renamed to MessageHandler to be be more descriptive, along with related types and methods. This means:

  • Handler is now MessageHandler
  • HandlerInboundMessage is now MessageHandlerInboundMessage
  • Dispatcher.registerHandler is now Dispatcher.registerMessageHandler and is marked as deprecated. The recommended way of registering handlers is by using the new MessageHandlerRegistry object by calling MessageHandlerRegistry.registerMessageHandler.

If your custom module include message handlers, you must update them accordingly.

export class MyHandler implements Handler {
public supportedMessages = [MyMessage]

public async handle(inboundMessage: HandlerInboundMessage<MyHandler>) {
...
}
}

Using AgentContext

First of all, it's worth noting that now all services and repositories have been made stateless. A new AgentContext is introduced that holds the current context, which is passed to each method call. Therefore, you'll need to update every call to services, repositories and also eventEmitter methods to pass AgentContext object as first argument.

AgentContext can be obtained from either:

  • MessageContext used by message handlers (accesed as messageContext.agentContext)
  • Injected in your API constructor: you can store the instance and pass it to all your service and repository calls
  public async createRequest(options: CreateRequestOptions) {
const message = new RequestMessage({
parentThreadId: options.parentThreadId,
})

const record = new MyRecord({
connectionId: options.connectionRecord.id,
threadId: message.id,
parentThreadId: options.parentThreadId,
})

await this.myRecordRepository.save(record)

this.eventEmitter.emit<MyRecordStateChangedEvent>({
type: MyRecordEventTypes.StateChanged,
payload: {
myRecord: record,
previousState: null,
},
})

return { record, message }
}

public async processRequest(messageContext: HandlerInboundMessage<RequestHandler>) {
const { message } = messageContext

const record = new MyRecord({
connectionId: connection.id,
threadId: messageContext.message.id,
parentThreadId: messageContext.message.thread?.parentThreadId,
})

await this.myRepository.save(record)

return record
}

Using OutboundMessageContext

If your module implements a protocol that sends messages to other agents, you will notice that Agent's MessageSender now receives the more generic OutboundMessageContext class, which replaces previous helper method createOutboundMessage.

You can take advantage of this new mechanism to associate a record to the context, in order to do specific actions to it when outbound message state changes (e.g. a MessageSendingError is thrown or AgentMessageSentEvent is emitted).

import { createOutboundMessage } from '@aries-framework/core'

const outboundMessage = createOutboundMessage(connection, message)
await this.messageSender.sendMessage(outboundMessage)

Updating module structure to register in new Plugin API

Existing modules can benefit from the new Plugin API mechanism by doing the following modifications:

  1. Rename Module class (e.g. MyModule) to API class (MyApi) and add @injectable decorator. Inject AgentContext in order to pass it to any services or repositories it might call. For instance:
import { injectable } from '@aries-framework/core'

@injectable() // <-- Add this
export class MyApi {
private messageSender: MessageSender
private myService: MyService
private connectionService: ConnectionService
private agentContext: AgentContext // <-- Add this

public constructor(
messageHandlerRegistry: MessageHandlerRegistry, // <-- use this instead of Dispatcher
messageSender: MessageSender,
myService: MyService,
connectionService: ConnectionService,
agentContext: AgentContext // <-- Add this
) {
this.messageSender = messageSender
this.myService = myService
this.connectionService = connectionService
this.agentContext = agentContext // <-- Add this
this.registerHandlers(messageHandlerRegistry) // <-- use messageHandlerRegistry instead of dispatcher
}
  1. Create a new Module class that implements Module interface and registers the dependencies and features. For instance:
import type { DependencyManager, FeatureRegistry, Module } from '@aries-framework/core'

import { Protocol } from '@aries-framework/core'

export class MyModule implements Module {
public readonly api = MyApi // the one we've just renamed from MyModule

public register(dependencyManager: DependencyManager, featureRegistry: FeatureRegistry) {
// Api
dependencyManager.registerContextScoped(MyApi)

// Services
dependencyManager.registerSingleton(MyService)

// Repositories
dependencyManager.registerSingleton(MyRepository)

// Feature Registry: don't forget to register your protocols and other features your module may add
featureRegistry.register(
new Protocol({
id: 'https://didcomm.org/my-protocol/1.0',
roles: [MyRole.Sender, MyRole.Receiver],
})
)
}

After doing this, you can add your module to agent constructor like this:

const agent = new Agent({
config: {
/* config */
},
dependencies: agentDependencies,
modules: {
myModule: new MyModule(),
/* other custom modules */
},
})

// MyModule API can be accessed in agent.modules namespace
await agent.modules.myModule.doSomething()

await agent.modules.myModule.doAnotherThing()

Breaking Storage Changes

The 0.3.0 release introduces some breaking changes to the storage format, mainly related to Proof Exchanges.

Below all breaking storage changes are explained in as much detail as possible. The update assistant provides all tools to migrate without a hassle, but it is important to know what has changed. All examples only show the keys that have changed, unrelated keys in records have been omitted.

See the Update Assistant documentation for a guide on how to use the update assistant.

There are no config parameters to be provided to the update assistant to migrate from 0.2.x to 0.3.x.

Migrate Proof Record Properties

In 0.3.0 the v1 DIDComm messages have been moved out of the proof record into separate records using the DidCommMessageRepository. The migration scripts extracts all messages (proposalMessage, requestMessage, presentationMessage) and moves them into the DidCommMessageRepository. With the addition of support for different protocol versions the proof record now stores the protocol version.

{
"proposalMessage": { ... },
"requestMessage": { ... },
"presentationMessage": { ... },
}

Migrate Connection Record properties

The recently introduced connectionType tag has been pluralized to reflect the fact that more than a single connection type can be defined for a given connection. Also, it is now available as a direct record property (e.g. can be queried and set by using connectionRecord.connectionTypes) apart from the tag for efficient search.

The migration script renames connectionType to connectionTypes in all connections, and also searches for any mediation connection and adds ConnectionType.Mediator as one of its types.

Migrate Did Record properties

The didRecord.id was previously the did itself. However to allow for connecting with self, where multiple did records are created for the same did, the id property is now an uuid and a separate did property is added.

The migration script generates a new ID for each did record and stores its did into didRecord.did property.

{
"id": "did"
}
- - +
Version: v0.5.x

Migrating from Credo 0.2.x to 0.3.x

This document describes everything you need to know for updating Credo 0.2.x to 0.3.x. If you're not aware of how updating in Credo works make sure to first read the guide on Updating Credo.

First of all, update you dependencies to the 0.3.x versions. This will also update the needed peer depedencnies. Extension packages are not updated with this command. You need to update these manually, and make sure they're up to date with the latest version of Credo.

yarn add @aries-framework/react-native@^0.3.0 @aries-framework/core@^0.3.0 indy-sdk-react-native@^0.3.0

# or NPM
npn install @aries-framework/react-native@^0.3.0 @aries-framework/core@^0.3.0 indy-sdk-react-native@^0.3.0

Breaking Code Changes

This section will list all breaking changes made to the public API of Credo between version 0.2.x and 0.3.0.

info

If you have custom modules take into account there could be a lot more breaking changes that aren't documented here. We try to make sure that the biggest breaking changes to the internal API are also documented here (e.g. see Updating Custom Modules to the Plugin API), but it is possible some breaking changes are not documented here (feel free to open PRs).

Agent creation

The agent constructor has been updated to a single AgentOptions object that contains the config and dependencies properties.

const agent = new Agent(agentConfig, agentDependencies)

This object contains:

  • config: Agent's initial configuration
  • dependencies: platform-specific Agent dependencies
  • modules: optional field for internal module configuration and custom module registration

For easy migration, you can simply construct AgentOptions by putting current InitConfig into config key and agentDependencies into dependencies key.

Note that, if you are defining indyLedgers configuration, you should set the indyNamespace for every ledger, as explained in Agent Config tutorial.

did:key usage in protocols

In accordance with Aries RFC 0360, since 0.2.5 there is a configuration parameter called useDidKeyInProtocols which, when enabled, will encode keys in did:key instead of previous base58 format, unless the other party has started a protocol and is using base58.

This parameter was previously disabled by default and now it is enabled. If your agent only interacts with modern agents (e.g. Credo 0.2.5 and newer) this will not represent any issue. Otherwise it is safer to explicitly set it to false. However, keep in mind that we expect this setting to be deprecated in the future, so we encourage you to update all your agents to use did:key.

Modules extracted from the core

In this release two modules were extracted from the core and published as separate, optional packages:

  • actionMenu has been moved to @aries-framework/action-menu
  • questionAnswer has been moved to @aries-framework/question-answer

If you want to use them, you can integrate in an Agent instance by injecting them in constructor, as follows:

import { ActionMenuModule } from '@aries-framework/action-menu'
import { QuestionAnswerModule } from '@aries-framework/question-answer'

const agent = new Agent({
config: {
/* config */
},
dependencies: agentDependencies,
modules: {
actionMenu: new ActionMenuModule(),
questionAnswer: new QuestionAnswerModule(),
/* other custom modules */
},
})

As they are now considered custom modules, their API can be accessed in modules namespace, so you should add it to every call to them.

await agent.questionAnswer.sendQuestion(connectionId, {
question: 'Do you want to play?',
validResponses: [{ text: 'Yes' }, { text: 'No' }],
})

await agent.questionAnswer.sendAnswer(questionAnswerRecordId, 'Yes')

Discover Features Module

This module now supports both Discover Features V1 and V2, and as it happened to other modules, queryFeatures method parameters have been unified to a single object and requires to specify the version of Discover Features protocol to be used. Note that query property has been replaced by the more general queries which accepts multiple features to be search for. To convert a query to this new format you simply need to create a single-object array whose unique object whose featureType field is 'protocol' and match field is the query itself.

await agent.discovery.queryFeatures(connectionId, {
query: 'https://didcomm.org/messagepickup/2.0',
comment: 'Detect if protocol is supported',
})

The convenience method isProtocolSupported has been replaced by the more general synchronous mode of queryFeatures, which works when awaitDisclosures in options is set. Instead of returning a boolean, it returns an object with matching features:

const isPickUpV2Supported = await agent.discovery.isProtocolSupported(connectionId, StatusRequestMessage)
info

Discover Features module does not rely anymore on Agent Dispatcher to determine protocol support. Instead, it uses the new Feature Registry, where any custom modules implementing protocols must register them.

This procedure can be done in module's register(dependencyManager, featureRegistry).

Ledger Module

Apart from the aforementioned indyLedgers configuration, you should also note a slight change in behaviour when attempting to register credential definitions that already exists on the ledger but not in the wallet.

Proofs Module

Module API Updates

Much in the same way as in 0.2.0 release when Issue Credential V2 protocol has been added, now that Present Proof V2 is supported, we introduced changes to proofs module.

Basically, for all methods in the proofs module you should take the following steps to update your code:

  1. Move all function parameters into a single object. All module methods now take a single object that contain all properties.
  2. For methods that initiate proposals, requests or presentations (proposeProof, acceptProposal, requestProof, acceptPresentation, etc.), you should pass protocolVersion: 'v1' to indicate we should use the v1 protocol
  3. All indy specific attributes (e.g. Presentation Preview) should be passed in the proofFormats.indy object.
  4. Some indy objects, as the preview should now be passed only as their attributes (i.e. no need of creating the object instance) and provided in the proofFormats.indy object.
await agent.proofs.proposeProof(
'connectionId',
new PresentationPreview({
attributes: [new PresentationPreviewAttribute({ name: 'key', value: 'value' })],
predicates: [
new PresentationPreviewPredicate({
name: 'age',
credentialDefinitionId,
predicate: PredicateType.GreaterThanOrEqualTo,
threshold: 50,
}),
],
})
)

Messages Extracted from Proof Exchange Record

The DIDComm messages that were previously stored on the proof record, have been extracted to separate DIDComm message records. This makes it easier to work with multiple versions of the protocol internally, and keeps the proof exchange record agnostic of the protocol version. Instead of accessing the messages through the proposalMessage, requestMessage and presentationMessage parameters, we now expose dedicated methods on the proofs module to retrieve the message.

With the addition of the v2 messages, all v1 messages have been prefixed with V1 while v2 messages have been prefixed with V2 (V1RequestPresentationMessage and V2RequestPresentationMessage). If you were using these messages classes throughout your codebase, update them to use the V1 prefix.

const proofRecord = await agent.proofs.getById('proofRecordId')

const proposalMessage = proofRecord.proposalMessage
const requestMessage = proofRecord.requestMessage
const presentationMessage = proofRecord.presentationMessage

Out Of Band Proofs and Credentials

With the addition of the out of band module, the creation of connection-less messages has been split into two steps, allowing for better control and flexibility. The previous agent.proofs.createOutOfBandRequest has been replaced by the agent.proofs.createRequest method. This new method creates a proof request that is not tied to any connection.

What you can now do is call agent.oob.createLegacyConnectionlessInvitation to attach the service decorator to the message and get a legacy connectionless message.

const { requestMessage, proofRecord } = await agent.proofs.createOutOfBandRequest({
requestedAttributes: {
group1: {
name: 'dateOfBirth',
restrictions: [{ schemaId: 'F72i3Y3Q4i466efjYJYCHM:2:aha_cert:4.1.1' }],
},
},
})

Out of band invitations are the new way to send messages out of band. You can use it for connection-less exchanges, but also for exchanges that you want to establish a connection for first. Here's an example on how to use the out of band module to create a connection-less invitation for a proof request:

const outOfBandRecord = await agent.oob.createInvitation({
handshake: false, // set to true if you want to create a connection
messages: [message],
})

const invitationUrl = outOfBandRecord.outOfBandInvitation.toUrl({
domain: 'https://Credo.com',
})

As you can see, there's now a lot more ways to use a message not tied to a connection. By splitting the creation of the message from the creation of the invitation, we can now create a message not bound to a connection (at time of creation) for multiple use cases.

Updating Custom Modules to the new Plugin API

Although this isn't a breaking change to the public API of the framework, it is something that you will need to take into account if you have custom modules and want to upgrade them to make compatible with Credo 0.3.0.

Renaming handler classes

Handler has been have been renamed to MessageHandler to be be more descriptive, along with related types and methods. This means:

  • Handler is now MessageHandler
  • HandlerInboundMessage is now MessageHandlerInboundMessage
  • Dispatcher.registerHandler is now Dispatcher.registerMessageHandler and is marked as deprecated. The recommended way of registering handlers is by using the new MessageHandlerRegistry object by calling MessageHandlerRegistry.registerMessageHandler.

If your custom module include message handlers, you must update them accordingly.

export class MyHandler implements Handler {
public supportedMessages = [MyMessage]

public async handle(inboundMessage: HandlerInboundMessage<MyHandler>) {
...
}
}

Using AgentContext

First of all, it's worth noting that now all services and repositories have been made stateless. A new AgentContext is introduced that holds the current context, which is passed to each method call. Therefore, you'll need to update every call to services, repositories and also eventEmitter methods to pass AgentContext object as first argument.

AgentContext can be obtained from either:

  • MessageContext used by message handlers (accesed as messageContext.agentContext)
  • Injected in your API constructor: you can store the instance and pass it to all your service and repository calls
  public async createRequest(options: CreateRequestOptions) {
const message = new RequestMessage({
parentThreadId: options.parentThreadId,
})

const record = new MyRecord({
connectionId: options.connectionRecord.id,
threadId: message.id,
parentThreadId: options.parentThreadId,
})

await this.myRecordRepository.save(record)

this.eventEmitter.emit<MyRecordStateChangedEvent>({
type: MyRecordEventTypes.StateChanged,
payload: {
myRecord: record,
previousState: null,
},
})

return { record, message }
}

public async processRequest(messageContext: HandlerInboundMessage<RequestHandler>) {
const { message } = messageContext

const record = new MyRecord({
connectionId: connection.id,
threadId: messageContext.message.id,
parentThreadId: messageContext.message.thread?.parentThreadId,
})

await this.myRepository.save(record)

return record
}

Using OutboundMessageContext

If your module implements a protocol that sends messages to other agents, you will notice that Agent's MessageSender now receives the more generic OutboundMessageContext class, which replaces previous helper method createOutboundMessage.

You can take advantage of this new mechanism to associate a record to the context, in order to do specific actions to it when outbound message state changes (e.g. a MessageSendingError is thrown or AgentMessageSentEvent is emitted).

import { createOutboundMessage } from '@aries-framework/core'

const outboundMessage = createOutboundMessage(connection, message)
await this.messageSender.sendMessage(outboundMessage)

Updating module structure to register in new Plugin API

Existing modules can benefit from the new Plugin API mechanism by doing the following modifications:

  1. Rename Module class (e.g. MyModule) to API class (MyApi) and add @injectable decorator. Inject AgentContext in order to pass it to any services or repositories it might call. For instance:
import { injectable } from '@aries-framework/core'

@injectable() // <-- Add this
export class MyApi {
private messageSender: MessageSender
private myService: MyService
private connectionService: ConnectionService
private agentContext: AgentContext // <-- Add this

public constructor(
messageHandlerRegistry: MessageHandlerRegistry, // <-- use this instead of Dispatcher
messageSender: MessageSender,
myService: MyService,
connectionService: ConnectionService,
agentContext: AgentContext // <-- Add this
) {
this.messageSender = messageSender
this.myService = myService
this.connectionService = connectionService
this.agentContext = agentContext // <-- Add this
this.registerHandlers(messageHandlerRegistry) // <-- use messageHandlerRegistry instead of dispatcher
}
  1. Create a new Module class that implements Module interface and registers the dependencies and features. For instance:
import type { DependencyManager, FeatureRegistry, Module } from '@aries-framework/core'

import { Protocol } from '@aries-framework/core'

export class MyModule implements Module {
public readonly api = MyApi // the one we've just renamed from MyModule

public register(dependencyManager: DependencyManager, featureRegistry: FeatureRegistry) {
// Api
dependencyManager.registerContextScoped(MyApi)

// Services
dependencyManager.registerSingleton(MyService)

// Repositories
dependencyManager.registerSingleton(MyRepository)

// Feature Registry: don't forget to register your protocols and other features your module may add
featureRegistry.register(
new Protocol({
id: 'https://didcomm.org/my-protocol/1.0',
roles: [MyRole.Sender, MyRole.Receiver],
})
)
}

After doing this, you can add your module to agent constructor like this:

const agent = new Agent({
config: {
/* config */
},
dependencies: agentDependencies,
modules: {
myModule: new MyModule(),
/* other custom modules */
},
})

// MyModule API can be accessed in agent.modules namespace
await agent.modules.myModule.doSomething()

await agent.modules.myModule.doAnotherThing()

Breaking Storage Changes

The 0.3.0 release introduces some breaking changes to the storage format, mainly related to Proof Exchanges.

Below all breaking storage changes are explained in as much detail as possible. The update assistant provides all tools to migrate without a hassle, but it is important to know what has changed. All examples only show the keys that have changed, unrelated keys in records have been omitted.

See the Update Assistant documentation for a guide on how to use the update assistant.

There are no config parameters to be provided to the update assistant to migrate from 0.2.x to 0.3.x.

Migrate Proof Record Properties

In 0.3.0 the v1 DIDComm messages have been moved out of the proof record into separate records using the DidCommMessageRepository. The migration scripts extracts all messages (proposalMessage, requestMessage, presentationMessage) and moves them into the DidCommMessageRepository. With the addition of support for different protocol versions the proof record now stores the protocol version.

{
"proposalMessage": { ... },
"requestMessage": { ... },
"presentationMessage": { ... },
}

Migrate Connection Record properties

The recently introduced connectionType tag has been pluralized to reflect the fact that more than a single connection type can be defined for a given connection. Also, it is now available as a direct record property (e.g. can be queried and set by using connectionRecord.connectionTypes) apart from the tag for efficient search.

The migration script renames connectionType to connectionTypes in all connections, and also searches for any mediation connection and adds ConnectionType.Mediator as one of its types.

Migrate Did Record properties

The didRecord.id was previously the did itself. However to allow for connecting with self, where multiple did records are created for the same did, the id property is now an uuid and a separate did property is added.

The migration script generates a new ID for each did record and stores its did into didRecord.did property.

{
"id": "did"
}
+ + \ No newline at end of file diff --git a/guides/0.5/updating/versions/0.3-to-0.4.html b/guides/0.5/updating/versions/0.3-to-0.4.html index bac8702e..c59bfec0 100644 --- a/guides/0.5/updating/versions/0.3-to-0.4.html +++ b/guides/0.5/updating/versions/0.3-to-0.4.html @@ -4,13 +4,13 @@ Migrating from Credo 0.3.x to 0.4.x | Credo - - + +
-
Version: v0.5.x

Migrating from Credo 0.3.x to 0.4.x

This document describes everything you need to know for updating Credo 0.3.x to 0.4.x. If you're not aware of how updating in Credo works make sure to first read the guide on Updating Credo.

First of all, update you dependencies to the 0.4.x versions. This will also update the needed peer dependencies. Extension packages are not updated with this command. You need to update these manually, and make sure they're up to date with the latest version of Credo.

Credo 0.4.0 is a major release that introduces a lot of new features and changes to the public API. Specifically, this release removed the dependency on the Indy SDK from the @aries-framework/core package. Agent setup is more flexible, but it also means the setup is more complex. Follow the mentioned steps in this document carefully to make the upgrade as smooth as possible.

caution

The migration guide only covers how to migrate from 0.3.x to 0.4.x while keeping the same behavior and dependencies. Credo 0.4.0 introduced a lot of new features and adds support for Aries Askar, Indy VDR and AnonCreds RS as a replacement for the Indy SDK.

Migrating to these new components requires additional migration steps, which need to be closely followed to prevent loss of data. These can be found at the Update Indy SDK to Askar guide.

As noted in the Update Indy SDK to Askar guide, it is very important that the 0.3.x to 0.4.x update is started after migrating from the Indy SDK to Aries Askar.

caution

Multi-tenancy is not covered in the 0.3.x to 0.4.x migration guide. If you're using multi-tenancy in 0.3.x and want to migrate to 0.4.x, please open an issue on Github.

caution

The following APIs, modules and features are experimental and therefore not covered by the semver versioning in Credo. If you're using any of these features, make sure to use an exact version of Credo (0.4.0) instead of a range (^0.4.0):

  • Implementing your own AnonCredsRegistry and AnonCreds service implementation. Using the default implementations (Indy SDK, AnonCreds RS) is fine.
  • Using the shared component libraries from @aries-framework/aries-askar, @aries-framework/indy-vdr and @aries-framework/anoncreds-rs
  • Using OpenID4VC from the @aries-framework/openid4vc-client module
  • W3C JWT Verifiable Credentials
  • Using multi-tenancy from the @aries-framework/tenants module

First install the updated dependencies. Make sure to also install the new @aries-framework/indy-sdk package, which is a wrapper around the Indy SDK and install the indy-sdk-react-native package.

yarn add @aries-framework/react-native@^0.4.0 @aries-framework/core@^0.4.0 @aries-framework/indy-sdk@^0.4.0 @aries-framework/anoncreds@^0.4.0 indy-sdk-react-native@^0.3.1

# or NPM
npn install @aries-framework/react-native@^0.4.0 @aries-framework/core@^0.4.0 @aries-framework/indy-sdk@^0.4.0 @aries-framework/anoncreds@^0.4.0 indy-sdk-react-native@^0.3.1

We also need to install types for the indy-sdk-react-native package, which we take from the @types/indy-sdk package.

yarn add --dev @types/indy-sdk-react-native@npm:@types/indy-sdk

# or NPM
npm install --save-dev @types/indy-sdk-react-native@npm:@types/indy-sdk

Breaking Code Changes

This section will list all breaking changes made to the public API of Credo between version 0.3.x and 0.4.0.

info

If you have custom modules take into account there could be a lot more breaking changes that aren't documented here. We try to make sure that the biggest breaking changes to the internal API are also documented here, but it is possible some breaking changes are not documented here (feel free to open a pull request).

Agent Creation

With the dependency on the Indy SDK removed from the @aries-framework/core package, we now need to register the IndySdkModule to still leverage the functionality the Indy SDK provides.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
/* ... */
},
dependencies: agentDependencies,
})

Indy Network Configuration

With the Indy SDK being extracted out of core, the indyLedger configuration option is no longer available on the AgentConfig interface. Instead, the networks configuration option is now available on the IndySdkModule configuration.

In addition the connectToIndyLedgersOnStartup property has been removed in favor of a per-network connectOnStartup property that allows more fine-grained control over which networks to connect to on startup.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
connectToIndyLedgersOnStartup: true,
indyLedgers: [
{
id: 'Sovrin Mainnet',
indyNamespace: 'sovrin',
isProduction: true,
genesisPath: './genesis/sovrin-genesis.txn',
},
],
},
dependencies: agentDependencies,
})

Changes to wallet

Throughout the framework it was possible to provide a seed for deterministic key generation. Recently it was discovered that the seed property in the Indy SDK was not actually used as a seed, but directly as the private key.

Therefore a new privateKey property was added to the Wallet interface in addition to the seed property. When using the IndySdkModule this now means you can only provide the privateKey property. The seed property is no longer supported by the IndySdkModule.

The type of the seed property has also been changed to Buffer to make it more consistent with privateKey property, and remove the ambiguity of what the encoding of the string variant of the seed property should be.

Did Resolver and Registrar

The did:sov resolver and registrar were registered by default in 0.3.x of the agent. In 0.4.0 they've been moved to the @aries-framework/indy-sdk package and are thus not registered by default on the DIDs module anymore. In addition, the IndySdkSovDidRegistrar has been replaced in favor of the IndySdkIndyDidRegistrar which provides similar behavior, but leverages the new did:indy method, which removes ambiguity about which network to use. You can still use the IndySdkSovDidResolver to resolve did:sov DIDs.

Note that the IndySdkModule MUST be registered when using the Indy SDK did resolvers and registrars (see Agent Creation). The networks supported by the resolvers and registrar is determined by the networks registered on the IndySdkModule (see Indy Network Configuration).

Also note that by default the WebDidResolver, KeyDidResolver and PeerDidResolver are registered, and setting the resolvers property on the DidsModule configuration will override the default resolvers (an exception is the PeerDidResolver as it is required for creating connections, and thus will always be registered).

The same thing is true for the registrars, for which the KeyDidRegistrar and PeerDidRegistrar are registered by default. If defining the resolvers and registrars, make sure to include the default registrars if you want to keep the previous behavior.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
/* ... */
},
dependencies: agentDependencies,
})

Removal of publicDidSeed and publicDid

To make Credo more generic, and less focused on Hyperledger Indy, and Indy dids, the publicDidSeed and publicDid properties have been removed from the agent configuration, the agent class, and the Wallet interface.

The publicDid property was used as the did to register items in the ledger module. The approach had some limitations:

  • An agent could only have a single publicDid property. This means that if you wanted to write to multiple ledgers you would have to create multiple agents
  • The property assumed only Indy ledgers would be used, and didn't take into account the possibility of other ledgers.

Credo now provides generic APIs that can work with any ledger, and thus the publicDid property is no longer needed. Different sections of this migration guide will explain the different parts of how to use the new APIs, this section just focuses on how to replace the publicDid property.

The most common use case for the publicDid property was for registering an endorser did that can endorse (read: pay for) transactions on the ledger. This can now be done by importing the did into agent, after which it can be used by the AnonCreds module to register schemas and credential definitions, and the did registrar to register DIDs.

There's a one-time import that needs to be done to import the did into the agent using the DidsApi.import method. If you've previously used the publicDidSeed property, providing the private key is optional, as it is already stored in the wallet. Note that the privateKey is the same as the publicDidSeed, see Changes to Wallet for context). The import method will resolve the did passed to the import method (so make sure to register the IndySdkIndyDidResolver). It is recommended to import the endorser did as an did:indy did rather than a did:sov did, as the did:sov method is deprecated for creation. The did:indy did can be constructed by replacing sov with indy:<indyNamespace>, where <indyNamespace> should be replaced with a namespace as registered in the networks property of the IndySdkModule (see Indy Network Configuration).

An initial list of namespace identifiers can be found in an issue in the Indy Did Networks Repository. In the future this list will be maintained in the Indy DID Networks repository itself.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
publicDidSeed: '01eafa4de4e22ed4fc2ee522b6ce2731',
},
dependencies: agentDependencies,
})

More Granular Usage of Legacy did:sov Prefix in DIDComm Messages

Credo 0.3.0 used the useLegacyDidSovPrefix to use the legacy did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/ as the prefix in the @type of DIDComm message instead of the new https://didcomm.org prefix. Over time it has proven that this approach leads to undesired behavior as all messages (even protocols that were defined after the new prefix was the default) would use the legacy prefix. However, due to not all implementations having support for new prefix, disabling the legacy prefixes proved to be a problem.

Therefore, in Credo 0.4.0 the useLegacyDidSovPrefix property has been replaced with the useDidSovPrefixWhereAllowed property. This property will only use the legacy prefix for protocols that were defined before the new prefix was the default. This means that protocols that were defined after the new prefix was the default will use the new prefix independent of the value of the useDidSovPrefixWhereAllowed property. We hope this will allow us to slowly migrate away from the legacy prefix as new protocols are defined without breaking backwards compatibility.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
useLegacyDidSovPrefix: true,
},
dependencies: agentDependencies,
})

Removal of injectionContainer property from the agent

The injectionContainer property on the Agent has been replaced by the dependencyManager property. The dependencyManager property is an instance of the DependencyManager class and wraps the injection container from tsyringe.

The DependencyManager should provide all functionality that is needed, and it is recommended to not use the injection directly. If you need to use the injection container directly, you can access it via the container property on the DependencyManager instance, but please raise an issue to discuss if the functionality you need should be added to the DependencyManager class.

connection has been updated to connectionId in TransportSession

The connection property on the TransportSession has been changed to connectionId and now only holds a reference to the connection id instead of the connection record itself.

Accessing the connection on a transport session is an advanced case that is mostly only relevant when implementing a custom transport. If you are using the default transports, you should not be affected by this change.

Replacement of Ledger Module with new AnonCreds Module

The ledger module has been available in Credo since the very beginning, and was due for a big overhaul. With the addition of the dids module a while ago we already had a replacement for the registerPublicDid and getPublicDid methods on the ledger module. The other methods of the ledger module have been replaced by the AnonCreds module.

In Credo 0.4.0 AnonCreds credential support is not part of the core framework anymore, and needs to be manually registered on the agent. The first part is enabling the AnonCreds module, which allows to manage AnonCreds objects, interact with the ledger, and issuer, hold and verify AnonCreds credentials and is explained in this section. The second part is actually allowing AnonCreds credentials to be exchanged in the Issue Credential and Present Proof protocols, which is explained in the Manually Register AnonCreds Support in Credentials and Proofs Modules section.

There's a few important takeaways based on the code example below:

  • The anoncreds module can be accessed under the agent.modules.anoncreds property.
  • The interfaces are set up as generically as possible based on the DID Registration and DID Resolution specifications.
  • AnonCreds registries need to be manually registered so it's important to register the IndySdkAnonCredsRegistry on the AnonCredsModule.
  • It is now required to pass an issuerId when registering AnonCreds objects, according to the AnonCreds Specification. Only did:indy issuer identifiers are allowed (based on the did:indy AnonCreds Method), so the network can be inferred from the issuer identifier.

As will be explained in the Manually Register AnonCreds Support in Credentials and Proofs Modules, you can still use the unqualified issuer identifiers (best known as the Hyperledger Indy Legacy AnonCreds Method) in credential and proof exchanges.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
/* ... */
publicDidSeed: '01eafa4de4e22ed4fc2ee522b6ce2731',
indyLedgers: [
{
id: 'Sovrin Mainnet',
indyNamespace: 'sovrin',
isProduction: true,
genesisPath: './genesis/sovrin-genesis.txn',
},
],
},
dependencies: agentDependencies,
})

await agent.initialize()

const schema = await agent.ledger.registerSchema({
attributes: ['name'],
name: 'Example Schema',
version: '1.0.1',
})

const credentialDefinition = await agent.ledger.registerCredentialDefinition({
schema,
supportRevocation: false,
tag: 'default',
})

Changes to the Credentials and Proofs modules

A lot of small, and some bigger changes have been made to the Credentials, and primarily, the Proofs modules. These changes have been made to make the modules more consistent and generic so that they can be used in a wider range of use cases, removing any focus on AnonCreds and Indy credentials.

Changes to the Proofs module include:

  • getRequestedCredentialsForProofRequest has been renamed to getCredentialsForRequest
  • autoSelectCredentialsForProofRequest has been renamed to selectCredentialsForRequest
  • The config parameter for both methods has been removed and those have been replaced by proof format specific configuration options. In this case, the config.filterByNonRevocationRequirements has been added as proofFormats.indy.filterByNonRevocationRequirements (if the indy format is registered as explained in the next section). The config.filterByPresentationPreview has been removed as the presentation preview was only present in the present proof V1 protocol, and due to it's limited applicability (the holder starts with a proposal) we've decided to remove this method for now. You can still filter the credentials yourself by using the getCredentialsForRequest method.
  • Interfaces have been renamed to be more consistent with the method names. Please refer to the CredentialsApiOptions and ProofsApiOptions for the interface names that can be imported.

If you encounter any other breaking changes in the Proofs and Credentials modules, please open an issue in the Credo Docs repository.

Changes to the AnonCreds Credential and Proof Format

With the 0.4.0 release, Credo now provides a pluggable AnonCreds interface, and requires support AnonCreds credentials to be explicitly registered on the agent. This is also the case for registering the credential and proof formats.

In 0.3.x, the IndyProofFormatService and IndyCredentialFormatService were registered by default. In 0.4.x, these services are no longer registered by default and they should be imported from the @aries-framework/anoncreds package as LegacyIndyProofFormatService and LegacyIndyCredentialFormatService and are based on Aries RFC 0592. In a future version the new AnonCredsCredentialFormatService and AnonCredsProofFormatService will be added to the AnonCreds package, which are based on Aries RFC 0771 and allow for AnonCreds credentials to be exchanged based on the new ledger agnostic AnonCreds Specification.

In addition, the V1CredentialProtocol and V1ProofProtocol have been extracted into the @aries-framework/anoncreds package, as they only support exchange of (legacy Indy) AnonCreds credentials.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
/* ... */
indyLedgers: [
{
id: 'Sovrin Mainnet',
indyNamespace: 'sovrin',
isProduction: true,
genesisPath: './genesis/sovrin-genesis.txn',
},
],
},
dependencies: agentDependencies,
})

Removal of AnonCreds Master Secret management from Wallet

The Wallet class no longer manages the creation and deletion of AnonCreds master secrets (which are now called Link Secrets in AnonCreds module and specification). If you haven't provided a custom masterSecretId to the walletConfig before, the storage migration script should have automatically created an AnonCredsLinkSecretRecord for you based on the walletConfig.id.

For new agents however, you now need to explicitly create a link secret before you can create requests for AnonCreds credential offers. You can do this using the AnonCredsApi.createLinkSecret method.

caution

If you previously used a custom masterSecretId in the walletConfig the migration script will have created an incorrect AnonCredsLinkSecretRecord based on the walletConfig.id. You will need to manually override the link secret record with the correct linkSecretId.

You ONLY need to do this if you're not migrating from Indy SDK to Askar, as in that case the migration script will have created the correct AnonCredsLinkSecretRecord for you.

import { AnonCredsLinkSecretRepository } from '@aries-framework/anoncreds'

const linkSecretRepository = agent.dependencyManager.resolve(AnonCredsLinkSecretRepository)
const defaultLinkSecret = await linkSecretRepository.findDefault(agent.context)

if (defaultLinkSecret) {
defaultLinkSecret.linkSecretId = 'my-custom-link-secret-id'
await linkSecretRepository.update(agent.context, defaultLinkSecret)
}
import { AnonCredsModule } from '@aries-framework/anoncreds'
import { Agent } from '@aries-framework/core'
import { IndySdkAnonCredsRegistry, IndySdkModule } from '@aries-framework/indy-sdk'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

// Import from indy-sdk-react-native in React Native
import indySdk from 'indy-sdk'

const agent = new Agent({
config: {
/* ... */
},
dependencies: agentDependencies,
modules: {
indySdk: new IndySdkModule({
indySdk,
}),
anoncreds: new AnonCredsModule({
registries: [new IndySdkAnonCredsRegistry()],
}),
},
})

// the agent MUST be initialized before calling it.
await agent.wallet.initialize({
id: 'wallet-id',
key: 'wallet-key',
})

await agent.modules.anoncreds.createLinkSecret({
// first one will be set to default automatically
setAsDefault: true,

// will be generated if not provided.
// linkSecretId: 'link-secret-id'
})

Default Outbound DIDComm Content Type now application/didcomm-envelope-enc

The default outbound DIDComm content type has been changed from DidCommMimeType.V0 (application/ssi-agent-wire) to DidCommMimeType.V1 (application/didcomm-envelope-enc). V1 is the default for DIDComm V1 (as defined in Aries RFC 0044). In the past, V0 resulted in better interoperability, but since it has been the default for so long it makes sense to change the default behavior.

It is advised to use the default value as configured by the agent (V1). If you want to keep the old behavior, you can configure the didCommMimeType property in the agent configuration.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
/* ... */
},
dependencies: agentDependencies,
})

Generalizing Indy properties in CredentialExchangeRecord

With AnonCreds credentials now being generalized to support multiple ledgers, the properties specific to Hyperledger Indy have now been generalized into a generic AnonCreds properties.

credentialRecordType

First off, the credentialRecordType that was used to reference stored AnonCreds credentials has been renamed from indy to anoncreds. The migration script takes care of the update to the storage, but you need to make sure to update all places that expect a credentialRecordType of indy to be defined.

CredentialExchangeRecord
{
"credentials": [
{
"credentialRecordType": "indy",
"credentialRecordId": "credential-id"
}
]
}

Metadata

Second, the metadata keys and values have been renamed to be AnonCreds specific rather than Indy specific. The CredentialMetadataKeys have been replaced by the AnonCredsCredentialMetadataKey and AnonCredsCredentialRequestMetadataKey constants which can be imported from the @aries-framework/anoncreds package.

CredentialExchangeRecord
{
"metadata": {
"_internal/indyCredential": {
"schemaId": "schema-id",
"credentialDefinitionId": "cred-def-id",
"indyRevocationRegistryId": "rev-reg-id",
"indyCredentialRevocationId": "cred-rev-id"
},
"_internal/indyRequest": {
"master_secret_blinding_data": {
"v_prime": "string",
"vr_prime": "string"
},
"master_secret_name": "string",
"nonce": "string"
}
}
}

More paths in FileSystem

The FileSystem interface has been extended to support multiple base paths. The previous interface had a single basePath property which was used for storing of files across the framework.

With the different lifetimes of different objects, the FileSystem interface has been extended to now support three different base paths:

  • cachePath - files used for caching purposes. It's okay if the files are cleared from time to time.
  • dataPath - files that are used for long-term reliable storage purposes. These files will never be cleared.
  • tempPath - files that are used for temporary storage purposes. It's okay if the files are cleared from time to time.

If you're using the framework, you don't need to worry about this change. The agent may need to download some objects again after the update. If you've made a custom implementation of the FileSystem, make sure to support all three base paths, and make sure to correctly handle the life-cycle of the files. Items stored under the dataPath should never be cleared.

caution

Indy SDK SQLite wallets do not use the paths defined by the FileSystem interface, and thus will not be influenced by this change. When upgrading to Aries Askar, the dataPath will be used as the base path for storing the SQLite wallet data.

Breaking Storage Changes

The 0.4.0 release introduces some breaking changes to the storage format.

Below all breaking storage changes are explained in as much detail as possible. The update assistant provides all tools to migrate without a hassle, but it is important to know what has changed. All examples only show the keys that have changed, unrelated keys in records have been omitted.

See the Update Assistant documentation for a guide on how to use the update assistant.

There are no configuration parameters to be provided to the update assistant to migrate from 0.3.x to 0.4.x.

TODO

- - +
Version: v0.5.x

Migrating from Credo 0.3.x to 0.4.x

This document describes everything you need to know for updating Credo 0.3.x to 0.4.x. If you're not aware of how updating in Credo works make sure to first read the guide on Updating Credo.

First of all, update you dependencies to the 0.4.x versions. This will also update the needed peer dependencies. Extension packages are not updated with this command. You need to update these manually, and make sure they're up to date with the latest version of Credo.

Credo 0.4.0 is a major release that introduces a lot of new features and changes to the public API. Specifically, this release removed the dependency on the Indy SDK from the @aries-framework/core package. Agent setup is more flexible, but it also means the setup is more complex. Follow the mentioned steps in this document carefully to make the upgrade as smooth as possible.

caution

The migration guide only covers how to migrate from 0.3.x to 0.4.x while keeping the same behavior and dependencies. Credo 0.4.0 introduced a lot of new features and adds support for Aries Askar, Indy VDR and AnonCreds RS as a replacement for the Indy SDK.

Migrating to these new components requires additional migration steps, which need to be closely followed to prevent loss of data. These can be found at the Update Indy SDK to Askar guide.

As noted in the Update Indy SDK to Askar guide, it is very important that the 0.3.x to 0.4.x update is started after migrating from the Indy SDK to Aries Askar.

caution

Multi-tenancy is not covered in the 0.3.x to 0.4.x migration guide. If you're using multi-tenancy in 0.3.x and want to migrate to 0.4.x, please open an issue on Github.

caution

The following APIs, modules and features are experimental and therefore not covered by the semver versioning in Credo. If you're using any of these features, make sure to use an exact version of Credo (0.4.0) instead of a range (^0.4.0):

  • Implementing your own AnonCredsRegistry and AnonCreds service implementation. Using the default implementations (Indy SDK, AnonCreds RS) is fine.
  • Using the shared component libraries from @aries-framework/aries-askar, @aries-framework/indy-vdr and @aries-framework/anoncreds-rs
  • Using OpenID4VC from the @aries-framework/openid4vc-client module
  • W3C JWT Verifiable Credentials
  • Using multi-tenancy from the @aries-framework/tenants module

First install the updated dependencies. Make sure to also install the new @aries-framework/indy-sdk package, which is a wrapper around the Indy SDK and install the indy-sdk-react-native package.

yarn add @aries-framework/react-native@^0.4.0 @aries-framework/core@^0.4.0 @aries-framework/indy-sdk@^0.4.0 @aries-framework/anoncreds@^0.4.0 indy-sdk-react-native@^0.3.1

# or NPM
npn install @aries-framework/react-native@^0.4.0 @aries-framework/core@^0.4.0 @aries-framework/indy-sdk@^0.4.0 @aries-framework/anoncreds@^0.4.0 indy-sdk-react-native@^0.3.1

We also need to install types for the indy-sdk-react-native package, which we take from the @types/indy-sdk package.

yarn add --dev @types/indy-sdk-react-native@npm:@types/indy-sdk

# or NPM
npm install --save-dev @types/indy-sdk-react-native@npm:@types/indy-sdk

Breaking Code Changes

This section will list all breaking changes made to the public API of Credo between version 0.3.x and 0.4.0.

info

If you have custom modules take into account there could be a lot more breaking changes that aren't documented here. We try to make sure that the biggest breaking changes to the internal API are also documented here, but it is possible some breaking changes are not documented here (feel free to open a pull request).

Agent Creation

With the dependency on the Indy SDK removed from the @aries-framework/core package, we now need to register the IndySdkModule to still leverage the functionality the Indy SDK provides.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
/* ... */
},
dependencies: agentDependencies,
})

Indy Network Configuration

With the Indy SDK being extracted out of core, the indyLedger configuration option is no longer available on the AgentConfig interface. Instead, the networks configuration option is now available on the IndySdkModule configuration.

In addition the connectToIndyLedgersOnStartup property has been removed in favor of a per-network connectOnStartup property that allows more fine-grained control over which networks to connect to on startup.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
connectToIndyLedgersOnStartup: true,
indyLedgers: [
{
id: 'Sovrin Mainnet',
indyNamespace: 'sovrin',
isProduction: true,
genesisPath: './genesis/sovrin-genesis.txn',
},
],
},
dependencies: agentDependencies,
})

Changes to wallet

Throughout the framework it was possible to provide a seed for deterministic key generation. Recently it was discovered that the seed property in the Indy SDK was not actually used as a seed, but directly as the private key.

Therefore a new privateKey property was added to the Wallet interface in addition to the seed property. When using the IndySdkModule this now means you can only provide the privateKey property. The seed property is no longer supported by the IndySdkModule.

The type of the seed property has also been changed to Buffer to make it more consistent with privateKey property, and remove the ambiguity of what the encoding of the string variant of the seed property should be.

Did Resolver and Registrar

The did:sov resolver and registrar were registered by default in 0.3.x of the agent. In 0.4.0 they've been moved to the @aries-framework/indy-sdk package and are thus not registered by default on the DIDs module anymore. In addition, the IndySdkSovDidRegistrar has been replaced in favor of the IndySdkIndyDidRegistrar which provides similar behavior, but leverages the new did:indy method, which removes ambiguity about which network to use. You can still use the IndySdkSovDidResolver to resolve did:sov DIDs.

Note that the IndySdkModule MUST be registered when using the Indy SDK did resolvers and registrars (see Agent Creation). The networks supported by the resolvers and registrar is determined by the networks registered on the IndySdkModule (see Indy Network Configuration).

Also note that by default the WebDidResolver, KeyDidResolver and PeerDidResolver are registered, and setting the resolvers property on the DidsModule configuration will override the default resolvers (an exception is the PeerDidResolver as it is required for creating connections, and thus will always be registered).

The same thing is true for the registrars, for which the KeyDidRegistrar and PeerDidRegistrar are registered by default. If defining the resolvers and registrars, make sure to include the default registrars if you want to keep the previous behavior.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
/* ... */
},
dependencies: agentDependencies,
})

Removal of publicDidSeed and publicDid

To make Credo more generic, and less focused on Hyperledger Indy, and Indy dids, the publicDidSeed and publicDid properties have been removed from the agent configuration, the agent class, and the Wallet interface.

The publicDid property was used as the did to register items in the ledger module. The approach had some limitations:

  • An agent could only have a single publicDid property. This means that if you wanted to write to multiple ledgers you would have to create multiple agents
  • The property assumed only Indy ledgers would be used, and didn't take into account the possibility of other ledgers.

Credo now provides generic APIs that can work with any ledger, and thus the publicDid property is no longer needed. Different sections of this migration guide will explain the different parts of how to use the new APIs, this section just focuses on how to replace the publicDid property.

The most common use case for the publicDid property was for registering an endorser did that can endorse (read: pay for) transactions on the ledger. This can now be done by importing the did into agent, after which it can be used by the AnonCreds module to register schemas and credential definitions, and the did registrar to register DIDs.

There's a one-time import that needs to be done to import the did into the agent using the DidsApi.import method. If you've previously used the publicDidSeed property, providing the private key is optional, as it is already stored in the wallet. Note that the privateKey is the same as the publicDidSeed, see Changes to Wallet for context). The import method will resolve the did passed to the import method (so make sure to register the IndySdkIndyDidResolver). It is recommended to import the endorser did as an did:indy did rather than a did:sov did, as the did:sov method is deprecated for creation. The did:indy did can be constructed by replacing sov with indy:<indyNamespace>, where <indyNamespace> should be replaced with a namespace as registered in the networks property of the IndySdkModule (see Indy Network Configuration).

An initial list of namespace identifiers can be found in an issue in the Indy Did Networks Repository. In the future this list will be maintained in the Indy DID Networks repository itself.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
publicDidSeed: '01eafa4de4e22ed4fc2ee522b6ce2731',
},
dependencies: agentDependencies,
})

More Granular Usage of Legacy did:sov Prefix in DIDComm Messages

Credo 0.3.0 used the useLegacyDidSovPrefix to use the legacy did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/ as the prefix in the @type of DIDComm message instead of the new https://didcomm.org prefix. Over time it has proven that this approach leads to undesired behavior as all messages (even protocols that were defined after the new prefix was the default) would use the legacy prefix. However, due to not all implementations having support for new prefix, disabling the legacy prefixes proved to be a problem.

Therefore, in Credo 0.4.0 the useLegacyDidSovPrefix property has been replaced with the useDidSovPrefixWhereAllowed property. This property will only use the legacy prefix for protocols that were defined before the new prefix was the default. This means that protocols that were defined after the new prefix was the default will use the new prefix independent of the value of the useDidSovPrefixWhereAllowed property. We hope this will allow us to slowly migrate away from the legacy prefix as new protocols are defined without breaking backwards compatibility.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
useLegacyDidSovPrefix: true,
},
dependencies: agentDependencies,
})

Removal of injectionContainer property from the agent

The injectionContainer property on the Agent has been replaced by the dependencyManager property. The dependencyManager property is an instance of the DependencyManager class and wraps the injection container from tsyringe.

The DependencyManager should provide all functionality that is needed, and it is recommended to not use the injection directly. If you need to use the injection container directly, you can access it via the container property on the DependencyManager instance, but please raise an issue to discuss if the functionality you need should be added to the DependencyManager class.

connection has been updated to connectionId in TransportSession

The connection property on the TransportSession has been changed to connectionId and now only holds a reference to the connection id instead of the connection record itself.

Accessing the connection on a transport session is an advanced case that is mostly only relevant when implementing a custom transport. If you are using the default transports, you should not be affected by this change.

Replacement of Ledger Module with new AnonCreds Module

The ledger module has been available in Credo since the very beginning, and was due for a big overhaul. With the addition of the dids module a while ago we already had a replacement for the registerPublicDid and getPublicDid methods on the ledger module. The other methods of the ledger module have been replaced by the AnonCreds module.

In Credo 0.4.0 AnonCreds credential support is not part of the core framework anymore, and needs to be manually registered on the agent. The first part is enabling the AnonCreds module, which allows to manage AnonCreds objects, interact with the ledger, and issuer, hold and verify AnonCreds credentials and is explained in this section. The second part is actually allowing AnonCreds credentials to be exchanged in the Issue Credential and Present Proof protocols, which is explained in the Manually Register AnonCreds Support in Credentials and Proofs Modules section.

There's a few important takeaways based on the code example below:

  • The anoncreds module can be accessed under the agent.modules.anoncreds property.
  • The interfaces are set up as generically as possible based on the DID Registration and DID Resolution specifications.
  • AnonCreds registries need to be manually registered so it's important to register the IndySdkAnonCredsRegistry on the AnonCredsModule.
  • It is now required to pass an issuerId when registering AnonCreds objects, according to the AnonCreds Specification. Only did:indy issuer identifiers are allowed (based on the did:indy AnonCreds Method), so the network can be inferred from the issuer identifier.

As will be explained in the Manually Register AnonCreds Support in Credentials and Proofs Modules, you can still use the unqualified issuer identifiers (best known as the Hyperledger Indy Legacy AnonCreds Method) in credential and proof exchanges.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
/* ... */
publicDidSeed: '01eafa4de4e22ed4fc2ee522b6ce2731',
indyLedgers: [
{
id: 'Sovrin Mainnet',
indyNamespace: 'sovrin',
isProduction: true,
genesisPath: './genesis/sovrin-genesis.txn',
},
],
},
dependencies: agentDependencies,
})

await agent.initialize()

const schema = await agent.ledger.registerSchema({
attributes: ['name'],
name: 'Example Schema',
version: '1.0.1',
})

const credentialDefinition = await agent.ledger.registerCredentialDefinition({
schema,
supportRevocation: false,
tag: 'default',
})

Changes to the Credentials and Proofs modules

A lot of small, and some bigger changes have been made to the Credentials, and primarily, the Proofs modules. These changes have been made to make the modules more consistent and generic so that they can be used in a wider range of use cases, removing any focus on AnonCreds and Indy credentials.

Changes to the Proofs module include:

  • getRequestedCredentialsForProofRequest has been renamed to getCredentialsForRequest
  • autoSelectCredentialsForProofRequest has been renamed to selectCredentialsForRequest
  • The config parameter for both methods has been removed and those have been replaced by proof format specific configuration options. In this case, the config.filterByNonRevocationRequirements has been added as proofFormats.indy.filterByNonRevocationRequirements (if the indy format is registered as explained in the next section). The config.filterByPresentationPreview has been removed as the presentation preview was only present in the present proof V1 protocol, and due to it's limited applicability (the holder starts with a proposal) we've decided to remove this method for now. You can still filter the credentials yourself by using the getCredentialsForRequest method.
  • Interfaces have been renamed to be more consistent with the method names. Please refer to the CredentialsApiOptions and ProofsApiOptions for the interface names that can be imported.

If you encounter any other breaking changes in the Proofs and Credentials modules, please open an issue in the Credo Docs repository.

Changes to the AnonCreds Credential and Proof Format

With the 0.4.0 release, Credo now provides a pluggable AnonCreds interface, and requires support AnonCreds credentials to be explicitly registered on the agent. This is also the case for registering the credential and proof formats.

In 0.3.x, the IndyProofFormatService and IndyCredentialFormatService were registered by default. In 0.4.x, these services are no longer registered by default and they should be imported from the @aries-framework/anoncreds package as LegacyIndyProofFormatService and LegacyIndyCredentialFormatService and are based on Aries RFC 0592. In a future version the new AnonCredsCredentialFormatService and AnonCredsProofFormatService will be added to the AnonCreds package, which are based on Aries RFC 0771 and allow for AnonCreds credentials to be exchanged based on the new ledger agnostic AnonCreds Specification.

In addition, the V1CredentialProtocol and V1ProofProtocol have been extracted into the @aries-framework/anoncreds package, as they only support exchange of (legacy Indy) AnonCreds credentials.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
/* ... */
indyLedgers: [
{
id: 'Sovrin Mainnet',
indyNamespace: 'sovrin',
isProduction: true,
genesisPath: './genesis/sovrin-genesis.txn',
},
],
},
dependencies: agentDependencies,
})

Removal of AnonCreds Master Secret management from Wallet

The Wallet class no longer manages the creation and deletion of AnonCreds master secrets (which are now called Link Secrets in AnonCreds module and specification). If you haven't provided a custom masterSecretId to the walletConfig before, the storage migration script should have automatically created an AnonCredsLinkSecretRecord for you based on the walletConfig.id.

For new agents however, you now need to explicitly create a link secret before you can create requests for AnonCreds credential offers. You can do this using the AnonCredsApi.createLinkSecret method.

caution

If you previously used a custom masterSecretId in the walletConfig the migration script will have created an incorrect AnonCredsLinkSecretRecord based on the walletConfig.id. You will need to manually override the link secret record with the correct linkSecretId.

You ONLY need to do this if you're not migrating from Indy SDK to Askar, as in that case the migration script will have created the correct AnonCredsLinkSecretRecord for you.

import { AnonCredsLinkSecretRepository } from '@aries-framework/anoncreds'

const linkSecretRepository = agent.dependencyManager.resolve(AnonCredsLinkSecretRepository)
const defaultLinkSecret = await linkSecretRepository.findDefault(agent.context)

if (defaultLinkSecret) {
defaultLinkSecret.linkSecretId = 'my-custom-link-secret-id'
await linkSecretRepository.update(agent.context, defaultLinkSecret)
}
import { AnonCredsModule } from '@aries-framework/anoncreds'
import { Agent } from '@aries-framework/core'
import { IndySdkAnonCredsRegistry, IndySdkModule } from '@aries-framework/indy-sdk'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

// Import from indy-sdk-react-native in React Native
import indySdk from 'indy-sdk'

const agent = new Agent({
config: {
/* ... */
},
dependencies: agentDependencies,
modules: {
indySdk: new IndySdkModule({
indySdk,
}),
anoncreds: new AnonCredsModule({
registries: [new IndySdkAnonCredsRegistry()],
}),
},
})

// the agent MUST be initialized before calling it.
await agent.wallet.initialize({
id: 'wallet-id',
key: 'wallet-key',
})

await agent.modules.anoncreds.createLinkSecret({
// first one will be set to default automatically
setAsDefault: true,

// will be generated if not provided.
// linkSecretId: 'link-secret-id'
})

Default Outbound DIDComm Content Type now application/didcomm-envelope-enc

The default outbound DIDComm content type has been changed from DidCommMimeType.V0 (application/ssi-agent-wire) to DidCommMimeType.V1 (application/didcomm-envelope-enc). V1 is the default for DIDComm V1 (as defined in Aries RFC 0044). In the past, V0 resulted in better interoperability, but since it has been the default for so long it makes sense to change the default behavior.

It is advised to use the default value as configured by the agent (V1). If you want to keep the old behavior, you can configure the didCommMimeType property in the agent configuration.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
/* ... */
},
dependencies: agentDependencies,
})

Generalizing Indy properties in CredentialExchangeRecord

With AnonCreds credentials now being generalized to support multiple ledgers, the properties specific to Hyperledger Indy have now been generalized into a generic AnonCreds properties.

credentialRecordType

First off, the credentialRecordType that was used to reference stored AnonCreds credentials has been renamed from indy to anoncreds. The migration script takes care of the update to the storage, but you need to make sure to update all places that expect a credentialRecordType of indy to be defined.

CredentialExchangeRecord
{
"credentials": [
{
"credentialRecordType": "indy",
"credentialRecordId": "credential-id"
}
]
}

Metadata

Second, the metadata keys and values have been renamed to be AnonCreds specific rather than Indy specific. The CredentialMetadataKeys have been replaced by the AnonCredsCredentialMetadataKey and AnonCredsCredentialRequestMetadataKey constants which can be imported from the @aries-framework/anoncreds package.

CredentialExchangeRecord
{
"metadata": {
"_internal/indyCredential": {
"schemaId": "schema-id",
"credentialDefinitionId": "cred-def-id",
"indyRevocationRegistryId": "rev-reg-id",
"indyCredentialRevocationId": "cred-rev-id"
},
"_internal/indyRequest": {
"master_secret_blinding_data": {
"v_prime": "string",
"vr_prime": "string"
},
"master_secret_name": "string",
"nonce": "string"
}
}
}

More paths in FileSystem

The FileSystem interface has been extended to support multiple base paths. The previous interface had a single basePath property which was used for storing of files across the framework.

With the different lifetimes of different objects, the FileSystem interface has been extended to now support three different base paths:

  • cachePath - files used for caching purposes. It's okay if the files are cleared from time to time.
  • dataPath - files that are used for long-term reliable storage purposes. These files will never be cleared.
  • tempPath - files that are used for temporary storage purposes. It's okay if the files are cleared from time to time.

If you're using the framework, you don't need to worry about this change. The agent may need to download some objects again after the update. If you've made a custom implementation of the FileSystem, make sure to support all three base paths, and make sure to correctly handle the life-cycle of the files. Items stored under the dataPath should never be cleared.

caution

Indy SDK SQLite wallets do not use the paths defined by the FileSystem interface, and thus will not be influenced by this change. When upgrading to Aries Askar, the dataPath will be used as the base path for storing the SQLite wallet data.

Breaking Storage Changes

The 0.4.0 release introduces some breaking changes to the storage format.

Below all breaking storage changes are explained in as much detail as possible. The update assistant provides all tools to migrate without a hassle, but it is important to know what has changed. All examples only show the keys that have changed, unrelated keys in records have been omitted.

See the Update Assistant documentation for a guide on how to use the update assistant.

There are no configuration parameters to be provided to the update assistant to migrate from 0.3.x to 0.4.x.

TODO

+ + \ No newline at end of file diff --git a/guides/concepts.html b/guides/concepts.html index 7fa99d3a..8ad87596 100644 --- a/guides/concepts.html +++ b/guides/concepts.html @@ -4,15 +4,15 @@ Concepts | Credo - - + + - - + + \ No newline at end of file diff --git a/guides/concepts/agents.html b/guides/concepts/agents.html index 1ab4db52..5a7d66a8 100644 --- a/guides/concepts/agents.html +++ b/guides/concepts/agents.html @@ -4,8 +4,8 @@ Agents | Credo - - + +
@@ -37,7 +37,7 @@ devices these can be used as a more central point for your data.

Useful resources

- - + + \ No newline at end of file diff --git a/guides/concepts/did-and-didcomm.html b/guides/concepts/did-and-didcomm.html index 2294063c..ed0ee70f 100644 --- a/guides/concepts/did-and-didcomm.html +++ b/guides/concepts/did-and-didcomm.html @@ -4,8 +4,8 @@ DIDs and DIDComm | Credo - - + +
@@ -24,7 +24,7 @@ securely send a message from as Alice to Bob securely via bluetooth, HTTP, WebSockets, etc.

When working with the tools available inside the Aries JavaScript ecosystem, deep knowledge of DIDComm is not required.

Useful Resources

- - + + \ No newline at end of file diff --git a/guides/concepts/platform-and-environment.html b/guides/concepts/platform-and-environment.html index 417f7067..781c47f3 100644 --- a/guides/concepts/platform-and-environment.html +++ b/guides/concepts/platform-and-environment.html @@ -4,13 +4,13 @@ Platform and Environment | Credo - - + +
Version: v0.4.x

Platform and Environment

Aries framework JavaScript is developed to support a Node.JS and React Native environment. With this it is entirely possible to build an entire SSI ecosystem with Aries Framework JavaScript. This would use Node.JS as an issuer as a verifier, and uses React Native as a holder.

- - + + \ No newline at end of file diff --git a/guides/ecosystem.html b/guides/ecosystem.html index b642d7a8..534abaef 100644 --- a/guides/ecosystem.html +++ b/guides/ecosystem.html @@ -4,14 +4,14 @@ The Aries JavaScript Ecosystem | Credo - - + +
Version: v0.4.x

The Aries JavaScript Ecosystem

The Aries JavaScript ecosystem includes various components that are spread across multiple repositories. In this section we'll go over what these components are and how the relate to one another.

Repositories

Currently, Aries JavaScript is composed out of three separate repositories:

  1. Aries Framework JavaScript
  2. Aries Framework JavaScript Extensions
  3. Aries Mobile Agent React Native (Bifold)

Documentation

You can find their documentation here:

  1. Aries Framework JavaScript
  2. Aries Framework JavaScript Extensions
  3. Aries Mobile Agent React Native (Bifold)

Aries Framework JavaScript

Aries Framework JavaScript (AFJ) is at the core of the Aries JavaScript ecosystem. AFJ provides all the functionality related to cryptography, storage, messaging and more that is required

Contributing in the Aries JS Ecosystem

Consider attending our weekly meetings to become aware of the current development cadence.

Developer Contributions

Each project maintains its own CONTRIBUTING guidance:

Each project has a significant set of developer conventions, checklists, templates, and actions to provide guidance and boundaries for a contribution. Consider looking at previous issues and their corresponding PRs to get a sense of the latest.

- - + + \ No newline at end of file diff --git a/guides/extensions.html b/guides/extensions.html index 6aaa23b2..d69a8607 100644 --- a/guides/extensions.html +++ b/guides/extensions.html @@ -4,13 +4,13 @@ Extensions | Credo - - + +
Version: v0.4.x

Extensions

Aries Framework JavaScript Extensions is an extensions repository to Aries Framework JavaScript (AFJ). It hosts libraries built on top of Aries Framework JavaScript that don't necessarily belong to the core of the project.

Currently, there are four packages in the extension repository. Example extension libraries include React Hooks for AFJ and a REST API wrapper.

PackageVersionDescription
@aries-framework/redux-store@aries-framework/redux-store versionRedux toolkit wrapper around Aries Framework JavaScript
@aries-framework/rest@aries-framework/rest versionRest endpoint wrapper for using your agent over HTTP
@aries-framework/react-hooks@aries-framework/react-hooks versionReact Hooks for data handling and agent interaction
@aries-framework/push-notifications@aries-framework/push-notifications versionPush notification plugin for Aries Framework JavaScript
- - + + \ No newline at end of file diff --git a/guides/extensions/push-notifications.html b/guides/extensions/push-notifications.html index 4f08b382..d9d243a7 100644 --- a/guides/extensions/push-notifications.html +++ b/guides/extensions/push-notifications.html @@ -4,13 +4,13 @@ Push Notifications | Credo - - + +
Version: v0.4.x

Push Notifications

The Push Notifications plugin package provides a way for you to register your APNs and Firebase push notification token at an agent, allowing you to use push notifications directly from AFJ.

note

This document is for version 0.5.x of the @aries-framework/push-notifications package, that works with @aries-framework/core version 0.4.x. Extension packages (such as Push Notifications) are versioned separately from the core packages.

Installation

To add the Push Notifications plugin package to your existing project simply run:

npm i @aries-framework/push-notifications
- - + + \ No newline at end of file diff --git a/guides/extensions/react-hooks.html b/guides/extensions/react-hooks.html index 42ba7dd2..ab55b256 100644 --- a/guides/extensions/react-hooks.html +++ b/guides/extensions/react-hooks.html @@ -4,13 +4,13 @@ React Hooks | Credo - - + +
Version: v0.4.x

React Hooks

The React Hooks package exposes useful React hooks that allow you to easily interact with AFJ from a React client application.

These hooks provide a simple way to query agent data in a client application, allowing you to focus on the user interface.

note

This document is for version 0.5.x of the @aries-framework/react-hooks package, that works with @aries-framework/core version 0.4.x. Extension packages (such as React Hooks) are versioned separately from the core packages.

Installation

To add the React Hooks package to your existing project simply run:

npm i @aries-framework/react-hooks@^0.5

Usage

This package exposes useful React hooks that allow you to easily interact with AFJ.

Everything exported from Hooks:

import AgentProvider, {
useAgent,
useConnections,
useConnectionById,
useCredentials,
useCredentialById,
useCredentialByState,
useProofs,
useProofById,
useProofByState,
} from '@aries-framework/react-hooks'

First step is to wrap your entire app in our <AgentProvider/>. The provider takes an initialized agent. The base of your app should look something like this:

import AgentProvider from '@aries-framework/react-hooks'

const App = () => {
const [agent, setAgent] = useState(undefined)

const initializeAgent = async () => {
const appAgent = new Agent({
/* agent options */
})
await appAgent.initialize()
setAgent(appAgent)
}

useEffect(() => {
initializeAgent()
}, [])

if (!agent) return <LoadingComponent />

return <AgentProvider agent={agent}>/* Your app here */</AgentProvider>
}

And that's it! Your app should be set up to receive all the necessary data your app will need! Now let's see how we actually get that data to our components.

The useAgent hook returns { agent, loading } so anytime you need access to any of the methods tied to the agent, you can useAgent() anywhere.

The following is an example of how you could use the useConnections hook to render a full list of all a user's connections.

import { useConnections } from '@aries-framework/react-hooks'

const MyConnectionsComponent = () => {
// all base hooks return an array of objects and a loading boolean
const { connections, loading } = useConnections()

return <FlatList data={connections} renderItem={({ item }) => <MyListItem connection={item} />} />
}

The three base hooks: useConnections, useCredentials, and useProofs work just like the above! Just call the hook, destructure the data, and pass it through!

Each base hook has a ById version that returns a singular record. For example if I wanted only a specific connectionRecord, I'd do this.

const connection = useConnectionById(id)

More commonly, you'll want to get a filtered list of records based off of their state. Well, Hooray! We have a ByState version as well. For example, you can do this:

const credentials = useCredentialByState(CredentialState.OfferReceived)
- - + + \ No newline at end of file diff --git a/guides/extensions/redux-store.html b/guides/extensions/redux-store.html index bda09bb7..c44c706f 100644 --- a/guides/extensions/redux-store.html +++ b/guides/extensions/redux-store.html @@ -4,13 +4,13 @@ Redux Store | Credo - - + +
Version: v0.4.x

Redux Store

The Redux Store is an implementation of state management that can be used to build React & React Native SSI clients using AFJ.

The Redux Store allows you to integrate state management for the most important parts of using AFJ in a client application (mediation, connections, credentials and proofs), allowing you to sync UI state with the state of the agent as it interacts with other agents through the framework.

note

This document is for version 0.4.x of the @aries-framework/redux-store package, that works with @aries-framework/core version 0.4.x. Extension packages (such as Redux Store) are versioned separately from the core packages.

Installation

To add the Redux Store package to your existing project simply run:

npm i @aries-framework/redux-store
- - + + \ No newline at end of file diff --git a/guides/extensions/rest.html b/guides/extensions/rest.html index 400bbd90..450b2808 100644 --- a/guides/extensions/rest.html +++ b/guides/extensions/rest.html @@ -4,13 +4,13 @@ REST API | Credo - - + +
Version: v0.4.x

REST API

The Aries Framework JavaScript (AFJ) REST API provides simple RESTful endpoints for AFJ methods, to allow you stand up an agent for communication over the internet instantly. You simply provide your agent configuration. The REST endpoints allow you to interact with your agent over HTTP and WebSockets.

The AFJ REST API is the most convenient way for self-sovereign identity (SSI) developers to interact with SSI agents.

  • Endpoints to create connections, issue credentials, and request proofs.
  • 💻 CLI that makes it super easy to start an instance of the REST API.
  • 🌐 Interoperable with all major Aries implementations.
danger

The @aries-framework/rest package has not been updated to work with the latest version (0.4.x) of @aries-framework/core. The documentation in this section is for version 0.9.x of the @aries-framework/rest package, that works with @aries-framework/core version 0.2.x. Extension packages (such as REST API) are versioned separately from the core packages.

Quick Setup

info

This guide assumes you have followed the install guides for the framework (See Getting Started section) for your platform and a valid Node.js project setup.

Using the CLI is the easiest way to get started with REST API.

You can do this directly on your machine.

Directly on computer

After installing and confirming that Libindy is installed, simply run:

npx -p @aries-framework/rest afj-rest start \
--label "AFJ Rest" \
--wallet-id "walletId" \
--wallet-key "walletKey" \
--endpoint http://localhost:5000 \
--admin-port 3000 \
--outbound-transport http \
--inbound-transport http 5000

The REST API provides an OpenAPI schema that can easily be viewed using the SwaggerUI that is provided with the server. The endpoint documentation can be viewed at the /docs endpoint (e.g. http://localhost:3000/docs).

Configuration

To find out all available configuration options from the CLI, you can run the CLI command with --help. This will print a full list of all available options.

npx -p @aries-framework/rest afj-rest start --help
- - + + \ No newline at end of file diff --git a/guides/getting-started.html b/guides/getting-started.html index 8fe88067..c0d22f93 100644 --- a/guides/getting-started.html +++ b/guides/getting-started.html @@ -4,13 +4,13 @@ Getting started | Credo - - + +
Version: v0.4.x

Getting started

In this section we will go over everything you need to get started on a technical level. First there are some general prerequisites for Node.JS and React Native. Aries Framework JavaScript works for creating both server-side applications (commonly but not always for creating issuer and verifier agents) and mobile applications (commonly holder agents).

Based on the platform you want to work on, the installation guides you should follow are the same, but some steps may differ.

Do you want to build a mobile app?

Do you want to build a server-side app?

- - + + \ No newline at end of file diff --git a/guides/getting-started/prerequisites.html b/guides/getting-started/prerequisites.html index 2da56737..0f2aabd9 100644 --- a/guides/getting-started/prerequisites.html +++ b/guides/getting-started/prerequisites.html @@ -4,13 +4,13 @@ Prerequisites | Credo - - + +
Version: v0.4.x

Prerequisites

To work with Aries Framework JavaScript we need to install some dependencies and set-up our Node.JS environment. Even when creating a mobile app in React Native, we need Node.JS installed. We will go over the specific installation process for each platform. Go ahead and pick your system of choice to get started!

The specific items that we set-up:

Node.JS

NodeJS is the most popular JavaScript runtime environment excluding browsers. It can run on your desktop or even a server.

You can download it from the Node.JS Website

NPM

The Node Package Manager comes pre-bundled with the NodeJS installation from above.

Yarn

Only required when not using npm

For every platform, the installation of yarn is the same.

npm install --global yarn

Project Setup

Finally, you need to make sure you have a project set-up using Node.JS or React Native. If you're not familiar with setting up a project, we suggest following the Introduction to Node.JS or React Native Quickstart guides.

- - + + \ No newline at end of file diff --git a/guides/getting-started/set-up.html b/guides/getting-started/set-up.html index 4a402f2a..0759b7b9 100644 --- a/guides/getting-started/set-up.html +++ b/guides/getting-started/set-up.html @@ -4,8 +4,8 @@ Agent Setup | Credo - - + +
@@ -26,7 +26,7 @@ transport in the same way as the outbound transport.

Sets up an WS outbound and HTTP inbound and outbound transport.

import { HttpOutboundTransport, WsOutboundTransport } from '@aries-framework/core'
import { HttpInboundTransport } from '@aries-framework/node'

// ... agent setup from prevous section ...

agent.registerOutboundTransport(new HttpOutboundTransport())
agent.registerOutboundTransport(new WsOutboundTransport())
agent.registerInboundTransport(new HttpInboundTransport({ port: 3000 }))

Initializing the agent

Finally, we can initialize the agent and it's ready for use.

agent
.initialize()
.then(() => {
console.log('Agent initialized!')
})
.catch((e) => {
console.error(`Something went wrong while setting up the agent! Message: ${e}`)
})

Next Steps

Now that you have your agent setup, it's time to start building your application. Head over to the tutorials page to get started.

Useful resources

- - + + \ No newline at end of file diff --git a/guides/getting-started/set-up/anoncreds-rs.html b/guides/getting-started/set-up/anoncreds-rs.html index 24ccf097..614f2cfe 100644 --- a/guides/getting-started/set-up/anoncreds-rs.html +++ b/guides/getting-started/set-up/anoncreds-rs.html @@ -4,13 +4,13 @@ AnonCreds RS | Credo - - + +
-
Version: v0.4.x

AnonCreds RS

AnonCreds RS is a direct implementation of the AnonCreds V1.0 specification that provides functionality like; creating a schema object, creating a credential definition object, creating a credential, verifying a proof presentation and much more.

caution

Support for the AnonCreds RS library in Aries Framework JavaScript is currently experimental. We recommend new projects to use AnonCreds RS from the start, and also to migrate existing projects to AnonCreds, from the Indy Sdk. However, projects may experience some issues. If you encounter any issues, please open an issue.

Currently, there are few limitations to using AnonCreds RS.

  • When running in Node.JS, only Node.JS 18 is supported for now. See Supported Node.JS versions for AnonCreds RS
  • Install scripts rely on bash command substitution to get the proper binaries for each system architecture and platform. Therefore, if you are under Windows, you must configure npm or yarn to use a bash-compliant shell (e.g. npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe")

Installing AnonCreds RS

When using Aries Framework JavaScript with AnonCreds RS, there are a few extra dependencies that need to be installed. We need to install @hyperledger/anoncreds package, which contains the interfaces, and @hyperledger/anoncreds-rs package which is an implementation which depends on a wrapper of anoncreds-rs. Secondly, we need to add native bindings for the specific platform @hyperledger/anoncreds-<platform>. Currently there are bindings for Node.JS, as @hyperledger/anoncreds-nodejs, and React Native as @hyperlegder/anoncreds-react-native.

yarn add @aries-framework/anoncreds@^0.4.0 @aries-framework/anoncreds-rs@^0.4.0 @hyperledger/anoncreds-nodejs@^0.1.0

Adding AnonCreds RS to the agent

After installing the dependencies, we should register both the AnonCreds and AnonCredsRs module on the agent.

import { Agent } from '@aries-framework/core'
import { agentDependencies } from '@aries-framework/node'
import { AskarModule } from '@aries-framework/askar'
import { ariesAskar } from '@hyperledger/aries-askar-nodejs'

import { anoncreds } from '@hyperledger/anoncreds-nodejs'
import { AnonCredsModule } from '@aries-framework/anoncreds'
import { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'
import { IndyVdrAnonCredsRegistry } from '@aries-framework/indy-vdr'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
// Register the Askar module on the agent
// This is included as we need a wallet on our agent
askar: new AskarModule({
ariesAskar,
}),
anoncredsRs: new AnonCredsRsModule({
anoncreds,
}),
anoncreds: new AnonCredsModule({
// Here we add an Indy VDR registry as an example, any AnonCreds registry
// can be used
registries: [new IndyVdrAnonCredsRegistry()],
}),
},
})

Configuration

As you can see, the AnonCreds module takes a list of registry modules. These modules will be used to resolve the AnonCreds objects. We recommend Indy VDR as an AnonCreds registry for Hyperledger Indy networks, but Indy SDK can also be used.

Supported Node.JS versions for AnonCreds RS

Due to an issue in ref-napi (which is used in the Node.JS bindings for AnonCreds RS), performance for AnonCreds RS in Node.JS is not as expected. A patched version for ref-napi has been published that fixes this issue, but this only works in Node.JS 18+.

To use AnonCreds RS in Node.JS, make sure you're using Node.JS 18 and patch the ref-napi package to point towards @2060.io/ref-napi in your package.json:

Using NPM overrides we can point the ref-napi package to @2060.io/ref-napi.

{
"overrides": {
"ref-napi": "npm:@2060.io/ref-napi"
}
}
- - +
Version: v0.4.x

AnonCreds RS

AnonCreds RS is a direct implementation of the AnonCreds V1.0 specification that provides functionality like; creating a schema object, creating a credential definition object, creating a credential, verifying a proof presentation and much more.

caution

Support for the AnonCreds RS library in Aries Framework JavaScript is currently experimental. We recommend new projects to use AnonCreds RS from the start, and also to migrate existing projects to AnonCreds, from the Indy Sdk. However, projects may experience some issues. If you encounter any issues, please open an issue.

Currently, there are few limitations to using AnonCreds RS.

  • When running in Node.JS, only Node.JS 18 is supported for now. See Supported Node.JS versions for AnonCreds RS
  • Install scripts rely on bash command substitution to get the proper binaries for each system architecture and platform. Therefore, if you are under Windows, you must configure npm or yarn to use a bash-compliant shell (e.g. npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe")

Installing AnonCreds RS

When using Aries Framework JavaScript with AnonCreds RS, there are a few extra dependencies that need to be installed. We need to install @hyperledger/anoncreds package, which contains the interfaces, and @hyperledger/anoncreds-rs package which is an implementation which depends on a wrapper of anoncreds-rs. Secondly, we need to add native bindings for the specific platform @hyperledger/anoncreds-<platform>. Currently there are bindings for Node.JS, as @hyperledger/anoncreds-nodejs, and React Native as @hyperlegder/anoncreds-react-native.

yarn add @aries-framework/anoncreds@^0.4.0 @aries-framework/anoncreds-rs@^0.4.0 @hyperledger/anoncreds-nodejs@^0.1.0

Adding AnonCreds RS to the agent

After installing the dependencies, we should register both the AnonCreds and AnonCredsRs module on the agent.

import { Agent } from '@aries-framework/core'
import { agentDependencies } from '@aries-framework/node'
import { AskarModule } from '@aries-framework/askar'
import { ariesAskar } from '@hyperledger/aries-askar-nodejs'

import { anoncreds } from '@hyperledger/anoncreds-nodejs'
import { AnonCredsModule } from '@aries-framework/anoncreds'
import { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'
import { IndyVdrAnonCredsRegistry } from '@aries-framework/indy-vdr'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
// Register the Askar module on the agent
// This is included as we need a wallet on our agent
askar: new AskarModule({
ariesAskar,
}),
anoncredsRs: new AnonCredsRsModule({
anoncreds,
}),
anoncreds: new AnonCredsModule({
// Here we add an Indy VDR registry as an example, any AnonCreds registry
// can be used
registries: [new IndyVdrAnonCredsRegistry()],
}),
},
})

Configuration

As you can see, the AnonCreds module takes a list of registry modules. These modules will be used to resolve the AnonCreds objects. We recommend Indy VDR as an AnonCreds registry for Hyperledger Indy networks, but Indy SDK can also be used.

Supported Node.JS versions for AnonCreds RS

Due to an issue in ref-napi (which is used in the Node.JS bindings for AnonCreds RS), performance for AnonCreds RS in Node.JS is not as expected. A patched version for ref-napi has been published that fixes this issue, but this only works in Node.JS 18+.

To use AnonCreds RS in Node.JS, make sure you're using Node.JS 18 and patch the ref-napi package to point towards @2060.io/ref-napi in your package.json:

Using NPM overrides we can point the ref-napi package to @2060.io/ref-napi.

{
"overrides": {
"ref-napi": "npm:@2060.io/ref-napi"
}
}
+ + \ No newline at end of file diff --git a/guides/getting-started/set-up/aries-askar.html b/guides/getting-started/set-up/aries-askar.html index 67890c40..2142b1e6 100644 --- a/guides/getting-started/set-up/aries-askar.html +++ b/guides/getting-started/set-up/aries-askar.html @@ -4,13 +4,13 @@ Aries Askar | Credo - - + +
Version: v0.4.x

Aries Askar

Aries Askar provides secure, encrypted storage and cryptographic support for encrypting, decrypting, signing and verifying data. It also provides both the Wallet and StorageService implementations for the agent.

caution

Although Aries Askar is stable and already used in production in agents such as Aries Cloud Agent Python, support for Aries Askar in Aries Framework JavaScript is currently experimental. We recommend new projects to use Aries Askar from the start, and also to migrate existing projects to Aries Askar. However, projects may experience some issues. If you encounter any issues, please open an issue.

Currently, there are few limitations to using Aries Askar.

  • When running in Node.JS, only Node.JS 18 is supported for now. See Supported Node.JS versions for Aries Askar
  • Install scripts rely on bash command substitution to get the proper binaries for each system architecture and platform. Therefore, if you are under Windows, you must configure npm or yarn to use a bash-compliant shell (e.g. npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe")
tip

If you're upgrading from the Indy SDK to Aries Askar, see Migrating from an Indy SDK Wallet to Aries Askar

Installing Aries Askar

When using Aries Framework JavaScript with Aries Askar, there are a few extra dependencies that need to be installed. We need to install the @aries-framework/askar package, which implements the needed interfaces for the agent. Secondly, we need to add native bindings for the specific platform @hyperledger/aries-askar-<platform>. Currently there are bindings for Node.JS, as @hyperledger/aries-askar-nodejs, and React Native as @hyperlegder/aries-askar-react-native.

yarn add @aries-framework/askar@^0.4.0 @hyperledger/aries-askar-nodejs@^0.1.0

Adding Aries Askar to the Agent

After installing the dependencies, we can register the Askar Module on the agent.

import { Agent } from '@aries-framework/core'
import { agentDependencies } from '@aries-framework/node'
import { AskarModule } from '@aries-framework/askar'
import { ariesAskar } from '@hyperledger/aries-askar-nodejs'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
// Register the Askar module on the agent
askar: new AskarModule({
ariesAskar,
}),
},
})

Supported Node.JS versions for Aries Askar

Due to an issue in ref-napi (which is used in the Node.JS bindings for Aries Askar), performance for Aries Askar in Node.JS is not as expected. A patched version for ref-napi has been published that fixes this issue, but this only works in Node.JS 18+.

To use Aries Askar in Node.JS, make sure you're using Node.JS 18 and patch the ref-napi package to point towards @2060.io/ref-napi in your package.json:

Using NPM overrides we can point the ref-napi package to @2060.io/ref-napi.

{
"overrides": {
"ref-napi": "npm:@2060.io/ref-napi"
}
}
- - + + \ No newline at end of file diff --git a/guides/getting-started/set-up/cheqd.html b/guides/getting-started/set-up/cheqd.html index ae9944cf..b3654b23 100644 --- a/guides/getting-started/set-up/cheqd.html +++ b/guides/getting-started/set-up/cheqd.html @@ -4,13 +4,13 @@ cheqd | Credo - - + +
Version: v0.4.x

cheqd

cheqd is a blockchain network, built in the Cosmos ecosystem for Self-Sovereign Identity (SSI). The cheqd Network leverages the cheqd DID method and enables DID-Linked Resources to be written to the network, associated with a DID and controlled using the verification methods in the DID Document.

Through this approach, the cheqd Network is able to natively support the Ledger Agnostic AnonCreds Specification (v1.0) through its AnonCreds Object Method (as well as VC-JWT and JSON-LD).

cheqd also has a dedicated token, $CHEQ, used for identity writes to the network, voting in a decentralised governance framework as well as for various payment flows between verifiers, holders and issuers of Verifiable Credentials.

Installing cheqd

When using Aries Framework JavaScript with the cheqd, there's a few extra dependencies that need to be installed. We need to install the @aries-framework/cheqd package, which implements the needed interfaces for the agent.

React Native

To enable react-native support we need to follow the steps below

In the package.json file add the below code snippet, which replaces the cosmjs dependencies witht he cosmjs-rn packages

Using NPM overrides we can point the cosmjs packages to cosmjs-rn.

{
"overrides": {
"@cosmjs/amino": "npm:@cosmjs-rn/amino@^0.27.1",
"@cosmjs/encoding": "npm:@cosmjs-rn/encoding@^0.27.1",
"@cosmjs/math": "npm:@cosmjs-rn/math@^0.27.1",
"@cosmjs/stargate": "npm:@cosmjs-rn/stargate@^0.27.1",
"@cosmjs/tendermint-rpc": "npm:@cosmjs-rn/tendermint-rpc@^0.27.1",
"@cosmjs/utils": "npm:@cosmjs-rn/utils@^0.27.1",
"@cosmjs/proto-signing": "npm:@cosmjs-rn/proto-signing@^0.27.1",
"@cosmjs/crypto": "npm:@cosmjs-rn/crypto@^0.27.1"
}
}

Following that we need to add a buffer polyfill

yarn add buffer

create a shim.js file with the below code snippet

import { Buffer } from 'buffer'
global.Buffer = Buffer

import shim.js file into your file where the App is imported

Adding the cheqd to the Agent

After installing the dependencies, we can register the cheqd Module on the agent by adding the below code snippet to the agent constructor.

import { Agent, DidsModule, KeyType, DidDocument } from '@aries-framework/core'
import { agentDependencies } from '@aries-framework/react-native'
import { AskarModule } from '@aries-framework/askar'
import { ariesAskar } from '@hyperledger/aries-askar-react-native'

import {
CheqdAnonCredsRegistry,
CheqdDidRegistrar,
CheqdDidResolver,
CheqdModule,
CheqdModuleConfig,
CheqdDidCreateOptions,
} from '@aries-framework/cheqd'
import { AnonCredsModule } from '@aries-framework/anoncreds'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
dids: new DidsModule({
registrars: [new CheqdDidRegistrar()],
resolvers: [new CheqdDidResolver()],
}),

// AnonCreds
anoncreds: new AnonCredsModule({
registries: [new CheqdAnonCredsRegistry()],
}),

// Add cheqd module
cheqd: new CheqdModule(
new CheqdModuleConfig({
networks: [
{
network: '<mainnet or testnet>',
cosmosPayerSeed: '<cosmos payer seed or mnemonic>',
},
],
})
),
// Indy VDR can optionally be used with Askar as wallet and storage implementation
askar: new AskarModule({
ariesAskar,
}),
},
})

The cosmosPayerSeed can be a 32-bit seed value or a mnemonic, which can be managed using Keplr wallet which can be installed on a mobile or as a browser extension in chrome or safari which allows user's to create accounts, exchange tokens etc. To setup keplr wallet for cheqd follow this tutorial

- - + + \ No newline at end of file diff --git a/guides/getting-started/set-up/indy-sdk.html b/guides/getting-started/set-up/indy-sdk.html index be004866..b100fbd2 100644 --- a/guides/getting-started/set-up/indy-sdk.html +++ b/guides/getting-started/set-up/indy-sdk.html @@ -4,13 +4,13 @@ Indy SDK | Credo - - + +
-
Version: v0.4.x

Indy SDK

Indy SDK provides a distributed ledger based foundation for self-sovereign identity. It can provide the Wallet and StorageService implementations for the agent, as well as a way to interact with Indy ledgers and an implementation of the legacy (v0.1) AnonCreds Specification

caution

The Indy SDK integration in Aries Framework JavaScript is currently in maintenance mode. We recommend new projects to use Aries Askar from the start, and also to migrate existing projects to Aries Askar.

caution

The AnonCreds implementation from the Indy SDK only supports the Hyperledger Indy Legacy AnonCreds Method (the pre-standardized implementation), and doesn't support the new Ledger Agnostic AnonCreds Specification (v1.0). Use the new AnonCreds Rust implementation, which is also supported by Aries Framework JavaScript, in combination with Aries Askar and Indy VDR to replace the bevhaviour of the Indy SDK, and support the new features these libraries have to offer.

Installing the Indy SDK

When using Aries Framework JavaScript with the Indy SDK, there's a few extra dependencies that need to be installed. We need to install the @aries-framework/indy-sdk package, which implements the needed interfaces for the agent. Secondly, we need to install the native Indy SDK library and the bindings for our specific platform. Currently there are bindings for Node.JS and React Native.

To start off, install the native Indy SDK library. The setup for this depends on the platform you are using. Follow the instructions for your platform below.

After the native Indy SDK library is installed, we can add the Indy SDK libraries.

yarn add @aries-framework/indy-sdk@^0.4.0 indy-sdk

And install the needed types

yarn add --dev @types/indy-sdk

Adding the Indy SDK to the Agent

After installing the dependencies, we can register the Indy SDK Module on the agent.

import { Agent } from '@aries-framework/core'
import { agentDependencies } from '@aries-framework/node'
import { IndySdkModule } from '@aries-framework/indy-sdk'
import indySdk from 'indy-sdk'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
// Register the Indy SDK module on the agent
indySdk: new IndySdkModule({
indySdk,
}),
},
})
- - +
Version: v0.4.x

Indy SDK

Indy SDK provides a distributed ledger based foundation for self-sovereign identity. It can provide the Wallet and StorageService implementations for the agent, as well as a way to interact with Indy ledgers and an implementation of the legacy (v0.1) AnonCreds Specification

caution

The Indy SDK integration in Aries Framework JavaScript is currently in maintenance mode. We recommend new projects to use Aries Askar from the start, and also to migrate existing projects to Aries Askar.

caution

The AnonCreds implementation from the Indy SDK only supports the Hyperledger Indy Legacy AnonCreds Method (the pre-standardized implementation), and doesn't support the new Ledger Agnostic AnonCreds Specification (v1.0). Use the new AnonCreds Rust implementation, which is also supported by Aries Framework JavaScript, in combination with Aries Askar and Indy VDR to replace the bevhaviour of the Indy SDK, and support the new features these libraries have to offer.

Installing the Indy SDK

When using Aries Framework JavaScript with the Indy SDK, there's a few extra dependencies that need to be installed. We need to install the @aries-framework/indy-sdk package, which implements the needed interfaces for the agent. Secondly, we need to install the native Indy SDK library and the bindings for our specific platform. Currently there are bindings for Node.JS and React Native.

To start off, install the native Indy SDK library. The setup for this depends on the platform you are using. Follow the instructions for your platform below.

After the native Indy SDK library is installed, we can add the Indy SDK libraries.

yarn add @aries-framework/indy-sdk@^0.4.0 indy-sdk

And install the needed types

yarn add --dev @types/indy-sdk

Adding the Indy SDK to the Agent

After installing the dependencies, we can register the Indy SDK Module on the agent.

import { Agent } from '@aries-framework/core'
import { agentDependencies } from '@aries-framework/node'
import { IndySdkModule } from '@aries-framework/indy-sdk'
import indySdk from 'indy-sdk'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
// Register the Indy SDK module on the agent
indySdk: new IndySdkModule({
indySdk,
}),
},
})
+ + \ No newline at end of file diff --git a/guides/getting-started/set-up/indy-sdk/linux.html b/guides/getting-started/set-up/indy-sdk/linux.html index 0e063ffd..4d4aed80 100644 --- a/guides/getting-started/set-up/indy-sdk/linux.html +++ b/guides/getting-started/set-up/indy-sdk/linux.html @@ -4,17 +4,17 @@ Linux | Credo - - + +
-
Version: v0.4.x

Linux

To install Indy SDK on Linux, a couple of dependencies are required. This guide covers the installation for the more popular Linux distributions.

Libsodium

Libsodium is used by the Indy SDK for encryption, decryption, hashing and signing.

pacman -S libsodium

Libzmq

Libzmq is a lightweight messaging queue used by the Indy SDK.

pacman -S zeromq

Indy SDK

All the steps mentioned here are distribution independent. As the Indy SDK doesn't provide binaries for many releases, we will build it from source. This does mean that some additional requirements are necessary, like +

Version: v0.4.x

Linux

To install Indy SDK on Linux, a couple of dependencies are required. This guide covers the installation for the more popular Linux distributions.

Libsodium

Libsodium is used by the Indy SDK for encryption, decryption, hashing and signing.

pacman -S libsodium

Libzmq

Libzmq is a lightweight messaging queue used by the Indy SDK.

pacman -S zeromq

Indy SDK

All the steps mentioned here are distribution independent. As the Indy SDK doesn't provide binaries for many releases, we will build it from source. This does mean that some additional requirements are necessary, like Rust.

Downloading Rust is as easy as executing the following command:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

This will install Rustup which is the installer for Rust.

With Rust, we can now build the Indy SDK from source.

First, clone the repository in a temporary directory:

git clone https://github.com/hyperledger/indy-sdk

Secondly, go to the correct directory

cd indy-sdk/libindy

Third, build the library

cargo build --release

Lastly, move the library to the correct location

sudo mv target/release/libindy.so /usr/lib/libindy.so

Confirm installation

To see whether the Indy SDK is correctly installed on your system, run the following command and it should not error.

npx -p @aries-framework/node@^0.3 is-indy-installed
- - + + \ No newline at end of file diff --git a/guides/getting-started/set-up/indy-sdk/macos-arm.html b/guides/getting-started/set-up/indy-sdk/macos-arm.html index 815e90ec..5e66bd26 100644 --- a/guides/getting-started/set-up/indy-sdk/macos-arm.html +++ b/guides/getting-started/set-up/indy-sdk/macos-arm.html @@ -4,15 +4,15 @@ macOS (ARM) | Credo - - + +
-
Version: v0.4.x

macOS (ARM)

To install Indy SDK on macOS, a couple of dependencies are required. This guide covers the installation of the Indy SDK for macs with an ARM processor. For installing the Indy SDK on Intel based macs, please refer to the Indy SDK macOS (Intel) guide.

info

This installation assumes that you have brew installed. If not, please install it via this command:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Libsodium

Libsodium is used by the Indy SDK for encryption, decryption, hashing and signing.

brew install libsodium

Libzmq

Libzmq is a lightweight messaging queue used by the Indy SDK.

brew install zeromq

Indy SDK

The Indy SDK does not been distributed properly for macOS. We have a pre-built library available that can +

Version: v0.4.x

macOS (ARM)

To install Indy SDK on macOS, a couple of dependencies are required. This guide covers the installation of the Indy SDK for macs with an ARM processor. For installing the Indy SDK on Intel based macs, please refer to the Indy SDK macOS (Intel) guide.

info

This installation assumes that you have brew installed. If not, please install it via this command:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Libsodium

Libsodium is used by the Indy SDK for encryption, decryption, hashing and signing.

brew install libsodium

Libzmq

Libzmq is a lightweight messaging queue used by the Indy SDK.

brew install zeromq

Indy SDK

The Indy SDK does not been distributed properly for macOS. We have a pre-built library available that can be downloaded. If you prefer to build from source, you can follow the instructions in the Indy SDK repository

First, download the pre-built library from Google Drive.

After this, open Finder, control+click on the library and click on open. This is something that has to be done as the library is not properly signed.

Lastly the library just has to be moved to the correct location.

caution

If you downloaded the file in another directory, please change the first part of this command

sudo mv ~/Downloads/libindy.dylib /usr/local/lib/

Confirm installation

To see whether the Indy SDK is correctly installed on your system, run the following command and it should not error.

npx -p @aries-framework/node@^0.3 is-indy-installed
- - + + \ No newline at end of file diff --git a/guides/getting-started/set-up/indy-sdk/macos-intel.html b/guides/getting-started/set-up/indy-sdk/macos-intel.html index 5b59ac2a..926edb93 100644 --- a/guides/getting-started/set-up/indy-sdk/macos-intel.html +++ b/guides/getting-started/set-up/indy-sdk/macos-intel.html @@ -4,13 +4,13 @@ macOS (Intel) | Credo - - + +
-
Version: v0.4.x

macOS (Intel)

To install Indy SDK on macOS a couple of dependencies are required. This guide covers the installation of the Indy SDK for macs with an Intel processor. For installing the Indy SDK on ARM based macs, please refer to the Indy SDK macOS (ARM) guide.

info

This installation assumes that you have brew installed. If not, please install it via this command:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Indy SDK

The Indy SDK has not been distributed properly for macOS. We have made a brew tap for libindy and it will also install all of the required dependencies.

brew install blu3beri/libindy/libindy

Confirm installation

To see whether the Indy SDK is correctly installed on your system, run the following command and it should not error.

npx -p @aries-framework/node@^0.3 is-indy-installed
- - +
Version: v0.4.x

macOS (Intel)

To install Indy SDK on macOS a couple of dependencies are required. This guide covers the installation of the Indy SDK for macs with an Intel processor. For installing the Indy SDK on ARM based macs, please refer to the Indy SDK macOS (ARM) guide.

info

This installation assumes that you have brew installed. If not, please install it via this command:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Indy SDK

The Indy SDK has not been distributed properly for macOS. We have made a brew tap for libindy and it will also install all of the required dependencies.

brew install blu3beri/libindy/libindy

Confirm installation

To see whether the Indy SDK is correctly installed on your system, run the following command and it should not error.

npx -p @aries-framework/node@^0.3 is-indy-installed
+ + \ No newline at end of file diff --git a/guides/getting-started/set-up/indy-sdk/react-native.html b/guides/getting-started/set-up/indy-sdk/react-native.html index 036815e7..4e4f7f97 100644 --- a/guides/getting-started/set-up/indy-sdk/react-native.html +++ b/guides/getting-started/set-up/indy-sdk/react-native.html @@ -4,13 +4,13 @@ React Native | Credo - - + +
-
Version: v0.4.x

React Native

The setup of Indy SDK for React Native is rather different than Node.JS. We do not have to install dependencies on the host-platform, but for the build target. For React Native this would be the Indy SDK for Android & iOS. This guide covers both the Android and iOS setup, as in most React Native projects you will need both.

Expo

If you're using Expo, the recommended way to install the Indy SDK is by using the Indy SDK Expo Plugin. This will correclty set-up your project with the Indy SDK using an Expo Config Plugin for both iOS and Android.

Refer to the Indy SDK Expo Plugin repository for installation instructions.

Without Expo

When not using Expo, you will need to set-up the Indy SDK for both Android and iOS using the indy-sdk-react-native package directly. Refer to the Indy SDK React Native repository for installation instructions.

- - +
Version: v0.4.x

React Native

The setup of Indy SDK for React Native is rather different than Node.JS. We do not have to install dependencies on the host-platform, but for the build target. For React Native this would be the Indy SDK for Android & iOS. This guide covers both the Android and iOS setup, as in most React Native projects you will need both.

Expo

If you're using Expo, the recommended way to install the Indy SDK is by using the Indy SDK Expo Plugin. This will correclty set-up your project with the Indy SDK using an Expo Config Plugin for both iOS and Android.

Refer to the Indy SDK Expo Plugin repository for installation instructions.

Without Expo

When not using Expo, you will need to set-up the Indy SDK for both Android and iOS using the indy-sdk-react-native package directly. Refer to the Indy SDK React Native repository for installation instructions.

+ + \ No newline at end of file diff --git a/guides/getting-started/set-up/indy-sdk/windows.html b/guides/getting-started/set-up/indy-sdk/windows.html index 96b0cd34..9a706729 100644 --- a/guides/getting-started/set-up/indy-sdk/windows.html +++ b/guides/getting-started/set-up/indy-sdk/windows.html @@ -4,15 +4,15 @@ Windows | Credo - - + +
-
Version: v0.4.x

Windows

To install Indy SDK on Windows, you can download the pre-built binary from the Sovrin repository.

Once downloaded, extract the zip into a permanent location.

Next, go to environment variables on your system and click on new at +

Version: v0.4.x

Windows

To install Indy SDK on Windows, you can download the pre-built binary from the Sovrin repository.

Once downloaded, extract the zip into a permanent location.

Next, go to environment variables on your system and click on new at System Variables. The name MUST be LD_LIBRARY_PATH and the value MUST be the path to the extracted libraries.

Confirm installation

To see whether the Indy SDK is correctly installed on your system, run the following command and it should not error.

npx -p @aries-framework/node@^0.3 is-indy-installed
- - + + \ No newline at end of file diff --git a/guides/getting-started/set-up/indy-vdr.html b/guides/getting-started/set-up/indy-vdr.html index 34d33e13..26ed8ef0 100644 --- a/guides/getting-started/set-up/indy-vdr.html +++ b/guides/getting-started/set-up/indy-vdr.html @@ -4,13 +4,13 @@ Indy VDR | Credo - - + +
Version: v0.4.x

Indy VDR

Hyperledger Indy VDR, Verifiable Data Registry, can be used to connect to one or more Indy Node ledger pools given sets of genesis transactions. Methods are provided to construct ledger requests and send them to the validators, collecting the results and ensuring that there is a consensus between the nodes. In the context of Aries Framework JavaScript, we mainly leverage it to register, and resolve, schemas, credential definitions and DIDs.

caution

Support for Indy VDR in Aries Framework JavaScript is currently experimental. We recommend new projects to use Indy VDR from the start, and also to migrate existing projects to Indy VDR, from the indy-sdk. However, projects may experience some issues. If you encounter any issues, please open an issue.

Currently, there are few limitations to using Indy VDR.

  • When running in Node.JS, only Node.JS 18 is supported for now. See Supported Node.JS versions for Indy VDR
  • Install scripts rely on bash command substitution to get the proper binaries for each system architecture and platform. Therefore, if you are under Windows, you must configure npm or yarn to use a bash-compliant shell (e.g. npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe")

Installing Indy VDR

When using Aries Framework JavaScript with Indy VDR, there are a few extra dependencies that need to be installed. We need to install the @hyperledger/indy-vdr, which contains all the functionality to register objects on an Hyperledger Indy VDR. Secondly, we need to add native bindings for the specific platform @hyperledger/indy-vdr-<platform>. Currently there are bindings for Node.JS, as @hyperledger/indy-vdr-nodejs, and React Native as @hyperlegder/indy-vdr-react-native.

yarn add @aries-framework/indy-vdr@^0.4.0 @hyperledger/indy-vdr-nodejs@^0.1.0

Adding Indy VDR to the agent

After installing the dependencies, we can register the Indy VDR module on the agent.

import { Agent } from '@aries-framework/core'
import { agentDependencies } from '@aries-framework/node'
import { AskarModule } from '@aries-framework/askar'
import { ariesAskar } from '@hyperledger/aries-askar-nodejs'

import { IndyVdrAnonCredsRegistry, IndyVdrModule } from '@aries-framework/indy-vdr'
import { indyVdr } from '@hyperledger/indy-vdr-nodejs'
import { AnonCredsModule } from '@aries-framework/anoncreds'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
indyVdr: new IndyVdrModule({
indyVdr,
networks: [
{
isProduction: false,
indyNamespace: 'bcovrin:test',
genesisTransactions: '<genesis_transactions>',
connectOnStartup: true,
},
],
}),
anoncreds: new AnonCredsModule({
registries: [new IndyVdrAnonCredsRegistry()],
}),
// Indy VDR can optionally be used with Askar as wallet and storage implementation
askar: new AskarModule({
ariesAskar,
}),
},
})

Configuration

As you can see below, the Indy VDR module takes the native bindings and a list of networks. This list of networks will be used to resolve and register objects on.

import { indyVdr } from '@hyperledger/indy-vdr-nodejs'
import { IndyVdrModule } from '@aries-framework/indy-vdr'

const modules = {
indyVdr: new IndyVdrModule({
indyVdr,
networks: [
{
indyNamespace: 'bcovrin:test',
isProduction: false,
genesisTransactions: '<genesis_transactions>',
connectOnStartup: true,
},
],
}),
}

indyVdr

Type: IndyVdr

the indyVdr key takes a class that implements all the native bindings for Indy VDR. This can be imoprted from the @hyperledger/indy-vdr-nodejs package or the @hyperledger/indy-vdr-react-native package.

networks

Type: IndyVdrPoolConfig[]

An array of indy networks to connect to. The list can contain the following object and it must genesisTransactions.

indyNamespace

Type: string

The Indy namespace aka the name identifying the name of the network connecting to. See also indy did method identifiers

isProduction

Type: boolean

Whether the ledger is a production ledger. This is used for detecting which ledger to use in case of unqualified identifiers as production ledgers have priority.

genesisTransactions

Type: string

Stringified JSON object of the transaction.

connectOnStartup

Type: boolean

Whether to connect to the ledger on startup. Defaults to false.

transactionAuthorAgreement

Type: TransactionAuthorAgreement

JSON representation specifying the version and acceptance mechanism. The version is the unique version of the transaction author agreement acceptance mechanism list (AML). The acceptance mechanism refers to the acceptance mechanism label of the item in the AML. For more details you may consult the indy-node docs on AML

transactionAuthorAgreement.version

Type: string

The version of the AML acceptance mechanism. This is a string representation of a version number e.g. '1' or '1.4'

transactionAuthorAgreement.acceptanceMechanism

Type: string

The acceptance mechanism to choose. This must be one of the available labels of the acceptance mechanisms key-value pairs in the AML e.g. 'EULA'.

Supported Node.JS versions for Indy VDR

Due to an issue in ref-napi (which is used in the Node.JS bindings for Indy VDR), performance for Indy VDR in Node.JS is not as expected. A patched version for ref-napi has been published that fixes this issue, but this only works in Node.JS 18+.

To use Indy VDR in Node.JS, make sure you're using Node.JS 18 and patch the ref-napi package to point towards @2060.io/ref-napi in your package.json:

Using NPM overrides we can point the ref-napi package to @2060.io/ref-napi.

{
"overrides": {
"ref-napi": "npm:@2060.io/ref-napi"
}
}
- - + + \ No newline at end of file diff --git a/guides/tutorials.html b/guides/tutorials.html index fc8d4af8..84993e99 100644 --- a/guides/tutorials.html +++ b/guides/tutorials.html @@ -4,15 +4,15 @@ Tutorials | Credo - - + +
- - + + \ No newline at end of file diff --git a/guides/tutorials/agent-config.html b/guides/tutorials/agent-config.html index 9c94462e..afb76b35 100644 --- a/guides/tutorials/agent-config.html +++ b/guides/tutorials/agent-config.html @@ -4,8 +4,8 @@ Agent Config | Credo - - + +
@@ -42,7 +42,7 @@ this. It MUST not be used got any base of authenticity.

Type: string

example
connectionImageUrl: 'https://picsum.photos/200'

autoUpdateStorageOnStartup

Whether the storage should automatically be updated when a newer version of Aries Framework JavaScript is used.

Type: boolean

Default: false

example
autoUpdateStorageOnStartup: true

- - + + \ No newline at end of file diff --git a/guides/tutorials/agent-config/logging.html b/guides/tutorials/agent-config/logging.html index 3c2724c1..f47d7434 100644 --- a/guides/tutorials/agent-config/logging.html +++ b/guides/tutorials/agent-config/logging.html @@ -4,14 +4,14 @@ Logging | Credo - - + +
Version: v0.4.x

Logging

Using the Default ConsoleLogger

To enable logging inside the framework a logger must be passed to the agent config. A simple ConsoleLogger can be imported from the framework.

import type { InitConfig } from '@aries-framework/core'
import { ConsoleLogger, LogLevel } from '@aries-framework/core'

const agentConfig: InitConfig = {
// ... other config properties ...
logger: new ConsoleLogger(LogLevel.info),
}

Creating your own Logger

For more advanced use cases the Logger interface can be implemented. See the example below.

import { Logger, LogLevel } from '@aries-framework/core'

class MyCustomLogger implements Logger {
public logLevel: LogLevel

public constructor(logLevel: LogLevel = LogLevel.off) {
this.logLevel = logLevel
}

public test(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public trace(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public debug(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public info(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public warn(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public error(message: string, data?: Record<string, any>): void {
console.log(message, data)
}

public fatal(message: string, data?: Record<string, any>): void {
console.log(message, data)
}
}

Indy Logs

To enable logging in the underlying Rust framework, either setLogger or setDefaultLogger must be called on the indy dependency, as seen here.

caution

The setLogger and setDefaultLogger methods have only been implemented in the Node.JS wrapper of the indy sdk. This won't work when importing from @aries-framework/react-native

The easiest way to do this from AFJ is through the indy property of agentDependencies.

import { agentDependencies } from '@aries-framework/node'
agentDependencies.indy.setDefaultLogger('trace')

// OR

agentDependencies.indy.setLogger((level, target, message, modulePath, file, line) => {
console.log('libindy said:', level, target, message, modulePath, file, line)
})

WARNING: You can only set the logger once. Call indy_set_default_logger, indy_set_logger, not both. Once it's been set, libindy won't let you change it.

You can also set the environment variable RUST_LOG to log at specified log levels. See https://crates.io/crates/env_logger for more information.

- - + + \ No newline at end of file diff --git a/guides/tutorials/cheqd.html b/guides/tutorials/cheqd.html index b3e4a035..fd1b98f9 100644 --- a/guides/tutorials/cheqd.html +++ b/guides/tutorials/cheqd.html @@ -4,13 +4,13 @@ Cheqd Did Module | Credo - - + +
Version: v0.4.x

Cheqd Did Module

In this tutorial we will see how to use the cheqd modules in detail

info

This section assumes that

  1. You have set-up your develoment environment.
  2. You have setup the cheqd module setup cheqd

DID Module

The cheqd DID module facilitates the Create, Read, Update, and Delete (CRUD) operations for did:cheqd identifiers. To learn more about "did:cheqd," please refer to the specification

Create DID

The DID can be created in two different ways

Parameters

  1. method*: cheqd
  2. secret
  3. options*
  4. didDocument
Option 1

Provide a DID Document payload according to the w3c did core specification in the request body. This is possible when the keys corresponding to the verification methods provided in the DID Document are already created in the wallet


// create a key pair
const key = await agent.wallet.createKey({
keyType: KeyType.Ed25519,
})

// encode public key according to the verification method
const ed25519PublicKeyBase58 = key.publicKeyBase58

// Create a DID
await agent.dids.create<CheqdDidCreateOptions>({
method: 'cheqd',
secret: {},
options: {
network: 'testnet',
},
didDocument: new DidDocument({
id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',
controller: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d'],
verificationMethod: [
{
id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1',
type: 'Ed25519VerificationKey2018',
controller: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d',
publicKeyBase58: ed25519PublicKeyBase58,
},
],
authentication: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d#key-1'],
}),
})
Option 2

If a DID Document is not passed to the registrar, it requires the secret parameter with a verificationMethod to construct the DID Document.

await agent.dids.create({
method: 'cheqd',
// the secret contains a the verification method type and id
secret: {
verificationMethod: {
id: 'key-1',
type: 'Ed25519VerificationKey2020',
},
},
// an optional methodSpecificIdAlgo parameter
options: {
network: 'testnet',
methodSpecificIdAlgo: 'uuid',
},
})

Update DID

To update a DID Document, fetch the body of the DID Document you want to change from the DID Resolver, make the relevant updates and pass it as the parameter

Parameters

  1. did*
  2. didDocument*: The updated DID Document
  3. options
  4. secret
await agent.dids.update({
did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',
// Updates DID Document with an additional verification method if provided
secret: {
verificationMethod: {
id: 'key-2',
type: 'JsonWebKey2020',
},
},
didDocument: {
id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',
controller: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411'],
verificationMethod: [
{
id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1',
type: 'Ed25519VerificationKey2020',
controller: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',
publicKeyMultibase: 'z6MknkzLUEP5cxqqsaysNMWoh8NJRb3YsowTCj2D6yhwyEdj',
},
],
authentication: ['did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#key-1'],
// updates did document with a service block
service: [
new DidDocumentService({
id: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411#rand',
type: 'rand',
serviceEndpoint: 'https://rand.in',
}),
],
},
})

Deactivate DID

A DID can be deactivated, it can still be resolved

Parameters

  1. did*
  2. options
await agent.dids.deactivate({
did: 'did:cheqd:testnet:b84817b8-43ee-4483-98c5-f03760816411',
// an optional versionId parameter
options: {
versionId: '3.0',
},
})

Types


secret.verificationMethod

Type: verificationMethod

verificationMethod.id*

Type: string

verificationMethod.type*

Type: string

Default: Ed25519VerificationKey2020

Members:

  1. Ed25519VerificationKey2020
  2. Ed25519VerificationKey2018
  3. JsonWebKey2020
verificationMethod.privateKey

Type: string


options.methodSpecificIdAlgo

Specifies what type of method specific identifier is needed for your DID

Type: string

Default: uuid

Members:

  1. uuid
  2. base58btc

options.network*

Specifies the cheqd network name to be published

Type: string

Default: testnet

Members:

  1. testnet
  2. mainnet

options.versionId

Specifies the version of the DID Document to be published

Type: string

- - + + \ No newline at end of file diff --git a/guides/tutorials/create-a-connection.html b/guides/tutorials/create-a-connection.html index 72034151..db3b786b 100644 --- a/guides/tutorials/create-a-connection.html +++ b/guides/tutorials/create-a-connection.html @@ -4,8 +4,8 @@ Create a connection | Credo - - + +
@@ -38,7 +38,7 @@ should be edited to fit your use case. The walletConfig.key must be changed as it can lead to other people knowing your "password" to your wallet.

import { AskarModule } from '@aries-framework/askar'
import {
Agent,
InitConfig,
ConnectionEventTypes,
ConnectionStateChangedEvent,
WsOutboundTransport,
HttpOutboundTransport,
DidExchangeState,
OutOfBandRecord,
ConnectionsModule,
} from '@aries-framework/core'
import { agentDependencies, HttpInboundTransport } from '@aries-framework/node'
import { ariesAskar } from '@hyperledger/aries-askar-nodejs'

const initializeBobAgent = async () => {
// Simple agent configuration. This sets some basic fields like the wallet
// configuration and the label. It also sets the mediator invitation url,
// because this is most likely required in a mobile environment.
const config: InitConfig = {
label: 'demo-agent-bob',
walletConfig: {
id: 'mainBob',
key: 'demoagentbob00000000000000000000',
},
}

// A new instance of an agent is created here
// Askar can also be replaced by the indy-sdk if required
const agent = new Agent({
config,
modules: {
askar: new AskarModule({ ariesAskar }),
connections: new ConnectionsModule({ autoAcceptConnections: true }),
},
dependencies: agentDependencies,
})

// Register a simple `WebSocket` outbound transport
agent.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
agent.registerOutboundTransport(new HttpOutboundTransport())

// Initialize the agent
await agent.initialize()

return agent
}

const initializeAcmeAgent = async () => {
// Simple agent configuration. This sets some basic fields like the wallet
// configuration and the label.
const config: InitConfig = {
label: 'demo-agent-acme',
walletConfig: {
id: 'mainAcme',
key: 'demoagentacme0000000000000000000',
},
endpoints: ['http://localhost:3001'],
}

// A new instance of an agent is created here
// Askar can also be replaced by the indy-sdk if required
const agent = new Agent({
config,
modules: {
askar: new AskarModule({ ariesAskar }),
connections: new ConnectionsModule({ autoAcceptConnections: true }),
},
dependencies: agentDependencies,
})

// Register a simple `WebSocket` outbound transport
agent.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
agent.registerOutboundTransport(new HttpOutboundTransport())

// Register a simple `Http` inbound transport
agent.registerInboundTransport(new HttpInboundTransport({ port: 3001 }))

// Initialize the agent
await agent.initialize()

return agent
}

const createNewInvitation = async (agent: Agent) => {
const outOfBandRecord = await agent.oob.createInvitation()

return {
invitationUrl: outOfBandRecord.outOfBandInvitation.toUrl({ domain: 'https://example.org' }),
outOfBandRecord,
}
}

const createLegacyInvitation = async (agent: Agent) => {
const { invitation } = await agent.oob.createLegacyInvitation()

return invitation.toUrl({ domain: 'https://example.org' })
}

const receiveInvitation = async (agent: Agent, invitationUrl: string) => {
const { outOfBandRecord } = await agent.oob.receiveInvitationFromUrl(invitationUrl)

return outOfBandRecord
}

const setupConnectionListener = (agent: Agent, outOfBandRecord: OutOfBandRecord, cb: (...args: any) => void) => {
agent.events.on<ConnectionStateChangedEvent>(ConnectionEventTypes.ConnectionStateChanged, ({ payload }) => {
if (payload.connectionRecord.outOfBandId !== outOfBandRecord.id) return
if (payload.connectionRecord.state === DidExchangeState.Completed) {
// the connection is now ready for usage in other protocols!
console.log(`Connection for out-of-band id ${outOfBandRecord.id} completed`)

// Custom business logic can be included here
// In this example we can send a basic message to the connection, but
// anything is possible
cb()

// We exit the flow
process.exit(0)
}
})
}


const run = async () => {
console.log('Initializing Bob agent...')
const bobAgent = await initializeBobAgent()
console.log('Initializing Acme agent...')
const acmeAgent = await initializeAcmeAgent()

console.log('Creating the invitation as Acme...')
const { outOfBandRecord, invitationUrl } = await createNewInvitation(acmeAgent)

console.log('Listening for connection changes...')
setupConnectionListener(acmeAgent, outOfBandRecord, () =>
console.log('We now have an active connection to use in the following tutorials')
)

console.log('Accepting the invitation as Bob...')
await receiveInvitation(bobAgent, invitationUrl)
}

export default run

void run()

Useful resources

- - + + \ No newline at end of file diff --git a/guides/tutorials/indy-sdk-postgres-database-nodejs.html b/guides/tutorials/indy-sdk-postgres-database-nodejs.html index b4459252..76c14a1d 100644 --- a/guides/tutorials/indy-sdk-postgres-database-nodejs.html +++ b/guides/tutorials/indy-sdk-postgres-database-nodejs.html @@ -4,13 +4,13 @@ Using PostgreSQL as Database for Indy SDK in Node.js | Credo - - + +
-
Version: v0.4.x

Using PostgreSQL as Database for Indy SDK in Node.js

By default the Indy SDK will use an SQLite database for storage. In mobile environments this is sufficient and allows us to keep storage local to the device, but in server environments we oftentimes want a more scalable storage solution. By leveraging the PostgreSQL plugin for Indy SDK we can use PostgreSQL as a storage solution instead of SQLite.

This document describes the installation process of the Postgres plugin for IndySDK and how you need to configure AFJ to use it.

Installation of the Postgres Plugin

For installation of the Postgres plugin, please refer to the platform specific guides:

Using the Postgres Plugin in AFJ

import { Agent, InitConfig } from '@aries-framework/core'
import { IndySdkModule } from '@aries-framework/indy-sdk'
import {
agentDependencies,
IndySdkPostgresStorageConfig,
loadIndySdkPostgresPlugin,
IndySdkPostgresWalletScheme,
} from '@aries-framework/node'
import indySdk from 'indy-sdk'

// IndySdkPostgresStorageConfig defines interface for the Postgres plugin configuration.
const storageConfig = {
type: 'postgres_storage',
config: {
url: 'localhost:5432',
wallet_scheme: IndySdkPostgresWalletScheme.DatabasePerWallet,
},
credentials: {
account: 'postgres',
password: 'postgres',
admin_account: 'postgres',
admin_password: 'postgres',
},
} satisfies IndySdkPostgresStorageConfig

// load the postgres wallet plugin before agent initialization
loadIndySdkPostgresPlugin(storageConfig.config, storageConfig.credentials)

const agentConfig: InitConfig = {
label: 'My Agent',
// walletConfig.id and walletConfig.key are still required
walletConfig: {
id: 'walletId',
key: 'testKey0000000000000000000000000',
// storage is added and defines the postgres plugin configuration
storage: storageConfig,
},
}

const agent = new Agent({
config: agentConfig,
dependencies: agentDependencies,
modules: {
indySdk: new IndySdkModule({
indySdk,
}),
},
})
- - +
Version: v0.4.x

Using PostgreSQL as Database for Indy SDK in Node.js

By default the Indy SDK will use an SQLite database for storage. In mobile environments this is sufficient and allows us to keep storage local to the device, but in server environments we oftentimes want a more scalable storage solution. By leveraging the PostgreSQL plugin for Indy SDK we can use PostgreSQL as a storage solution instead of SQLite.

This document describes the installation process of the Postgres plugin for IndySDK and how you need to configure AFJ to use it.

Installation of the Postgres Plugin

For installation of the Postgres plugin, please refer to the platform specific guides:

Using the Postgres Plugin in AFJ

import { Agent, InitConfig } from '@aries-framework/core'
import { IndySdkModule } from '@aries-framework/indy-sdk'
import {
agentDependencies,
IndySdkPostgresStorageConfig,
loadIndySdkPostgresPlugin,
IndySdkPostgresWalletScheme,
} from '@aries-framework/node'
import indySdk from 'indy-sdk'

// IndySdkPostgresStorageConfig defines interface for the Postgres plugin configuration.
const storageConfig = {
type: 'postgres_storage',
config: {
url: 'localhost:5432',
wallet_scheme: IndySdkPostgresWalletScheme.DatabasePerWallet,
},
credentials: {
account: 'postgres',
password: 'postgres',
admin_account: 'postgres',
admin_password: 'postgres',
},
} satisfies IndySdkPostgresStorageConfig

// load the postgres wallet plugin before agent initialization
loadIndySdkPostgresPlugin(storageConfig.config, storageConfig.credentials)

const agentConfig: InitConfig = {
label: 'My Agent',
// walletConfig.id and walletConfig.key are still required
walletConfig: {
id: 'walletId',
key: 'testKey0000000000000000000000000',
// storage is added and defines the postgres plugin configuration
storage: storageConfig,
},
}

const agent = new Agent({
config: agentConfig,
dependencies: agentDependencies,
modules: {
indySdk: new IndySdkModule({
indySdk,
}),
},
})
+ + \ No newline at end of file diff --git a/guides/tutorials/indy-sdk-postgres-database-nodejs/linux.html b/guides/tutorials/indy-sdk-postgres-database-nodejs/linux.html index 31fd0383..af0264f4 100644 --- a/guides/tutorials/indy-sdk-postgres-database-nodejs/linux.html +++ b/guides/tutorials/indy-sdk-postgres-database-nodejs/linux.html @@ -4,13 +4,13 @@ Postgres Setup for Linux | Credo - - + +
-
Version: v0.4.x

Postgres Setup for Linux

Prerequisites

  • A system package manager (like APT, Pacman, etc.)
  • Cargo (We have to build Postgres plugin from source)
  • git (to clone a repo, could also be done with downloading the zip from the GitHub page)

Step 1: installing the dependencies using apt

Debian based (Ubuntu, Mint, Kali, Deepin, etc.)

sudo apt install libzmq3-dev libsodium-dev libssl-dev

Step 2: Build Postgres plugin

Building Postgres plugin from the indy-sdk repo with cargo.

Step 2.1: Cloning the indy-sdk

git clone https://github.com/hyperledger/indy-sdk.git

cd indy-sdk/experimental/plugins/postgres_storage

Step 2.2: Building Postgres plugin

If this step throws any errors, it might be because you miss some packages. Step 1 of this guide provided the dependencies that are required, but it also assumed that you have some basic development packages installed. If you are missing some packages, you can install them with your package manager.

pwd

# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage

cargo build --release

Step 2.3: Moving the file

pwd

# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage

sudo mv ./target/release/libindystrgpostgres.so /usr/local/lib/libindystrgpostgres.so
- - +
Version: v0.4.x

Postgres Setup for Linux

Prerequisites

  • A system package manager (like APT, Pacman, etc.)
  • Cargo (We have to build Postgres plugin from source)
  • git (to clone a repo, could also be done with downloading the zip from the GitHub page)

Step 1: installing the dependencies using apt

Debian based (Ubuntu, Mint, Kali, Deepin, etc.)

sudo apt install libzmq3-dev libsodium-dev libssl-dev

Step 2: Build Postgres plugin

Building Postgres plugin from the indy-sdk repo with cargo.

Step 2.1: Cloning the indy-sdk

git clone https://github.com/hyperledger/indy-sdk.git

cd indy-sdk/experimental/plugins/postgres_storage

Step 2.2: Building Postgres plugin

If this step throws any errors, it might be because you miss some packages. Step 1 of this guide provided the dependencies that are required, but it also assumed that you have some basic development packages installed. If you are missing some packages, you can install them with your package manager.

pwd

# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage

cargo build --release

Step 2.3: Moving the file

pwd

# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage

sudo mv ./target/release/libindystrgpostgres.so /usr/local/lib/libindystrgpostgres.so
+ + \ No newline at end of file diff --git a/guides/tutorials/indy-sdk-postgres-database-nodejs/macos.html b/guides/tutorials/indy-sdk-postgres-database-nodejs/macos.html index 03d35772..c6661fdb 100644 --- a/guides/tutorials/indy-sdk-postgres-database-nodejs/macos.html +++ b/guides/tutorials/indy-sdk-postgres-database-nodejs/macos.html @@ -4,13 +4,13 @@ Postgres Setup for macOS | Credo - - + +
-
Version: v0.4.x

Postgres Setup for macOS

Prerequisites

  • Homebrew
  • Cargo (We have to build Postgres plugin from source)
  • git (to clone a repo, could also be done with downloading the zip from the GitHub page)

Step 1: installing the dependencies using brew

brew install libsodium zeromq

Step 2: Build Postgres plugin

Building Postgres plugin from the indy-sdk repo with cargo.

Step 2.1: Cloning the indy-sdk

git clone https://github.com/hyperledger/indy-sdk.git

cd indy-sdk/experimental/plugins/postgres_storage

Step 2.2: Building Postgres plugin

If this step throws any errors, it might be because you miss some packages. Step 1 of this guide provided the dependencies that are required, but it also assumed that you have some basic development packages installed. If you are missing some packages, you can install them with your package manager.

pwd

# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage

cargo build --release

Step 2.3: Moving the file

pwd

# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage

sudo mv ./target/release/libindystrgpostgres.dylib /usr/local/lib/libindystrgpostgres.dylib
- - +
Version: v0.4.x

Postgres Setup for macOS

Prerequisites

  • Homebrew
  • Cargo (We have to build Postgres plugin from source)
  • git (to clone a repo, could also be done with downloading the zip from the GitHub page)

Step 1: installing the dependencies using brew

brew install libsodium zeromq

Step 2: Build Postgres plugin

Building Postgres plugin from the indy-sdk repo with cargo.

Step 2.1: Cloning the indy-sdk

git clone https://github.com/hyperledger/indy-sdk.git

cd indy-sdk/experimental/plugins/postgres_storage

Step 2.2: Building Postgres plugin

If this step throws any errors, it might be because you miss some packages. Step 1 of this guide provided the dependencies that are required, but it also assumed that you have some basic development packages installed. If you are missing some packages, you can install them with your package manager.

pwd

# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage

cargo build --release

Step 2.3: Moving the file

pwd

# OUTPUT: .../indy-sdk/experimental/plugins/postgres_storage

sudo mv ./target/release/libindystrgpostgres.dylib /usr/local/lib/libindystrgpostgres.dylib
+ + \ No newline at end of file diff --git a/guides/tutorials/indy-sdk-postgres-database-nodejs/windows.html b/guides/tutorials/indy-sdk-postgres-database-nodejs/windows.html index 048b4458..aae2723d 100644 --- a/guides/tutorials/indy-sdk-postgres-database-nodejs/windows.html +++ b/guides/tutorials/indy-sdk-postgres-database-nodejs/windows.html @@ -4,13 +4,13 @@ Postgres Setup for windows | Credo - - + +
-
Version: v0.4.x

Postgres Setup for windows

Build Environment Prerequisites

  1. Download and install Visual Studio Community Edition 2022
  2. Install git for windows
  3. Download rust for windows here
  4. Make sure you have already setup libindy for windows from here

Step 1: Getting dependencies

  • Download the prebuilt dependencies here
  • Extract them
  • Point path to this directory using environment variables:
    • set INDY_PREBUILT_DEPS_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set INDY_CRYPTO_PREBUILT_DEPS_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set MILAGRO_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set LIBZMQ_PREFIX=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set SODIUM_LIB_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set OPENSSL_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set PATH=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps\lib

Step 2: Build Postgres plugin

Building Postgres plugin from the indy-sdk repo with cargo.

Step 2.1: Cloning the indy-sdk

git clone https://github.com/hyperledger/indy-sdk.git

cd indy-sdk\experimental\plugins\postgres_storage

Step 2.2: Building Postgres plugin

If this step throws any errors, it might be because of the environment. Step 1 of this guide provided the dependencies that are required.

cargo build --release --target x86_64-pc-windows-msvc

The library indystrgpostgres.dll file will be located at indy-sdk\experimental\plugins\postgres_storage\target\x86_64-pc-windows-msvc\release

Step 2.3: Setting the file to PATH

  • set LIB_INDY_STRG_POSTGRES=C:\Users\{WINDOWS_USER}\Downloads\indy-sdklexperimental\plugins\postgres_storage\target\x86_64-pc-windows-msvc\release

or Alternatively you can copy the indystrgpostgres.dll file to c:\\windows\\system32\\

- - +
Version: v0.4.x

Postgres Setup for windows

Build Environment Prerequisites

  1. Download and install Visual Studio Community Edition 2022
  2. Install git for windows
  3. Download rust for windows here
  4. Make sure you have already setup libindy for windows from here

Step 1: Getting dependencies

  • Download the prebuilt dependencies here
  • Extract them
  • Point path to this directory using environment variables:
    • set INDY_PREBUILT_DEPS_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set INDY_CRYPTO_PREBUILT_DEPS_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set MILAGRO_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set LIBZMQ_PREFIX=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set SODIUM_LIB_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set OPENSSL_DIR=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps
    • set PATH=C:\Users\{WINDOWS_USER}\Downloads\indy-sdk-deps\lib

Step 2: Build Postgres plugin

Building Postgres plugin from the indy-sdk repo with cargo.

Step 2.1: Cloning the indy-sdk

git clone https://github.com/hyperledger/indy-sdk.git

cd indy-sdk\experimental\plugins\postgres_storage

Step 2.2: Building Postgres plugin

If this step throws any errors, it might be because of the environment. Step 1 of this guide provided the dependencies that are required.

cargo build --release --target x86_64-pc-windows-msvc

The library indystrgpostgres.dll file will be located at indy-sdk\experimental\plugins\postgres_storage\target\x86_64-pc-windows-msvc\release

Step 2.3: Setting the file to PATH

  • set LIB_INDY_STRG_POSTGRES=C:\Users\{WINDOWS_USER}\Downloads\indy-sdklexperimental\plugins\postgres_storage\target\x86_64-pc-windows-msvc\release

or Alternatively you can copy the indystrgpostgres.dll file to c:\\windows\\system32\\

+ + \ No newline at end of file diff --git a/guides/tutorials/issue-a-credential.html b/guides/tutorials/issue-a-credential.html index 09b220c7..8eb41745 100644 --- a/guides/tutorials/issue-a-credential.html +++ b/guides/tutorials/issue-a-credential.html @@ -4,13 +4,13 @@ Issue a credential | Credo - - + +
Version: v0.4.x

Issue a credential

In this tutorial we will issue a credential from the Issuer to a Holder. We will start with setting up both their agents with the minimal configuration required to follow this tutorial. It is assumed that there is a connection between the Issuer and the Holder and the Issuer also has a registered schema and credential definition. After initializing the Issuer will send a credential to the holder, and will then accept this credential and automatically store it in their wallet.

Using AnonCreds and the Issue Credential V2 Protocol or the Issue Credential V1 Protocol.

info

This section assumes that

  1. You have set-up your develoment environment.
  2. You have basic knowledge of the required fields in the Agent Config
  3. You have completed the Create a Connection tutorial
  4. You have a registered schema and credential definition. This can be done by following the Registering on a AnonCreds Registry

1. Setting up the agents

First for both agents we must setup and initialize an agent to work with. Depending on your target, React Native or Node.js, it might vary.

In this tutorial the Holder will be in a Node.js environment and the Issuer also in a Node.js environment.

Issuer

For the Issuer the setup is commonly not the same as the Holder. In the example they both live in a server environment, meaning they do not need a mediator. More commonly, the Holder is in a mobile environment where a mediator is required for receiving DIDComm messages.

It is also very important for the Issuer to have a public DID, for the binding with a credential definition, amongst other things. For this demo we will use BCovrin Test. If you want to follow this tutorial, you have to register a public DID here via the Wallet seed field (this must be the same as the seed inside the config under the key publicDidSeed).

In order to reach the Issuer we have to add a list of endpoints of the agent that exposes the inboundTransport to the public. In the example below we add an inboundTransport and use port 3002. For development purposes it is recommended to use a tunneling service for this, like Ngrok. Ngrok will allow you to reach your locally exposed endpoint from the public. If a tunneling service is used, make sure to use the HTTPS variant as mobile environments, by default, do not accept HTTP anymore.

To install Ngrok and expose the port to the public the following commands can be used:

yarn global add ngrok

ngrok http <PORT>
📄issuer
const issuer = new Agent({
config: issuerConfig,
dependencies: agentDependencies,
modules: {
askar: new AskarModule({
ariesAskar,
}),
anoncredsRs: new AnonCredsRsModule({
anoncreds,
}),
indyVdr: new IndyVdrModule({
indyVdr,
networks: [
{
isProduction: false,
indyNamespace: 'bcovrin:test',
genesisTransactions: '<genesis transaction>',
connectOnStartup: true,
},
],
}),
anoncreds: new AnonCredsModule({
registries: [new IndyVdrAnonCredsRegistry()],
}),
dids: new DidsModule({
registrars: [new IndyVdrIndyDidRegistrar()],
resolvers: [new IndyVdrIndyDidResolver()],
}),
credentials: new CredentialsModule({
credentialProtocols: [
new V2CredentialProtocol({
credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],
}),
],
}),
},
})

// Register a simple `WebSocket` outbound transport
issuer.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
issuer.registerOutboundTransport(new HttpOutboundTransport())

// Register a simple `Http` inbound transport
issuer.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))

Holder

For the Holder we need to setup a basic agent with a wallet, mediator, outbound transport and a ledger.

If you want to follow this tutorial in a mobile environment:

  1. Use the agentDependencies from @aries-framework/react-native
  2. It is very important to note that mobile agents do not support HTTP by default. It is recommended to do everything over HTTPS, but for development HTTP can be enabled for iOS and Android.
🗄holder
const holder = new Agent({
config: holderConfig,
dependencies: agentDependencies,
modules: {
askar: new AskarModule({
ariesAskar,
}),
anoncredsRs: new AnonCredsRsModule({
anoncreds,
}),
indyVdr: new IndyVdrModule({
indyVdr,
networks: [
{
isProduction: false,
indyNamespace: 'bcovrin:test',
genesisTransactions: '<genesis transaction>',
connectOnStartup: true,
},
],
}),
anoncreds: new AnonCredsModule({
registries: [new IndyVdrAnonCredsRegistry()],
}),
dids: new DidsModule({
resolvers: [new IndyVdrIndyDidResolver()],
}),
credentials: new CredentialsModule({
credentialProtocols: [
new V2CredentialProtocol({
credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],
}),
],
}),
},
})

// Register a simple `WebSocket` outbound transport
holder.registerOutboundTransport(new WsOutboundTransport())

// Register a simple `Http` outbound transport
holder.registerOutboundTransport(new HttpOutboundTransport())

// Register a simple `Http` inbound transport
holder.registerInboundTransport(new HttpInboundTransport({ port: 3002 }))

3. Listening for incoming credentials

When we want to accept a credential, we have to listen to incoming credentials and handle accordingly. In this example we do not have any user interaction, but is likely that your application would have a user-interface which would display the credential. When receiving a credential offer you can get the values from credentialExchangeRecord.credentialAttributes.

🗄holder
holder.events.on<CredentialStateChangedEvent>(CredentialEventTypes.CredentialStateChanged, async ({ payload }) => {
switch (payload.credentialRecord.state) {
case CredentialState.OfferReceived:
console.log('received a credential')
// custom logic here
await holder.credentials.acceptOffer({ credentialRecordId: payload.credentialRecord.id })
case CredentialState.Done:
console.log(`Credential for credential id ${payload.credentialRecord.id} is accepted`)
// For demo purposes we exit the program here.
process.exit(0)
}
})

4. Issuing a credential

Now that everything is setup on both sides, the Issuer can now offer a credential to the Holder.

In this example we do not instantiate a connection and assume that there is one. Please refer to this guide Create a connection to get a connection and connectionId.

📄issuer
const indyCredentialExchangeRecord = await issuer.credentials.offerCredential({
protocolVersion: 'v2',
connectionId: '<connection id>',
credentialFormats: {
indy: {
credentialDefinitionId: '<credential definition id>',
attributes: [
{ name: 'name', value: 'Jane Doe' },
{ name: 'age', value: '23' },
],
},
},
})

Useful resources

- - + + \ No newline at end of file diff --git a/guides/tutorials/mediation.html b/guides/tutorials/mediation.html index 7650ccb6..65b4a221 100644 --- a/guides/tutorials/mediation.html +++ b/guides/tutorials/mediation.html @@ -4,8 +4,8 @@ Mediation | Credo - - + +
@@ -13,7 +13,7 @@ config

The agent setup varies depending on your target environment, React Native or Node.js.
This tutorial assumes a Node.js environment for all agents (Alice, Bob, Meditator).

This tutorial shows how to set up a mediator, how to configure an agent to use a mediator, and how agents exchange messages with a mediator in place. Concepts are explained in isolation:

  • First, it is shown how to set up a mediator.
  • Second, it is demonstrated how to use a mediator.
  • Third, the message exchange between agents with a mediator in place is explained.

What is a mediator, and Why should I use one?

A mediator is just a special type of agent.

info

"When we describe agent-to-agent communication, it is convenient to think of an interaction only in terms of Alice and Bob and their agents. We say things like: "Alice's agent sends a message to Bob's agent" -- or perhaps "Alice's edge agent sends a message to Bob's cloud agent, which forwards it to Bob's edge agent".

Such statements adopt a useful level of abstraction--one that's highly recommended for most discussions. However, they make a number of simplifications. By modeling the roles of mediators and relays in routing, we can support routes that use multiple transports, routes that are not fully known (or knowable) to the sender, routes that pass through mix networks, and other advanced and powerful concepts."Aries RFC 0046: Mediators and Relays

A practical example where the use of mediators is beneficial can be found in a mobile environment. A mobile agent, aka. your mobile wallet, receives messages from other agents. Technically, sending HTTP messages to a mobile agent is impossible because the agent does not have a public IP. As you have probably seen in previous examples, a workaround for this scenario is to use ngrok. Another option is to use a mediator. When an agent is configured to use a mediator, messages to that agent are routed through the mediator and from there to its destination. Thus, a mobile agent can use a "public" mediator to receive messages on its behalf and poll them from time to time.

This is just one example of how a mediator can be used. Further resources about mediators can be found here.

tip

With mediators, WebSockets come in handy. In a production environment, it is recommendable to register a WsInboundTransport() for Alice and a WsOutboundTransport() for the mediator. These WebSocket transports allow the mediator to push messages to Alice instead of having Alice pull messages from the mediator repeatedly.

1. Mediator setup

The first part shows how to set up a mediator agent. Generally, there are two ways to do that: deploying it from scratch or using a third-party mediator. This section focuses on the former approach, setting up the mediator from scratch.

The mediator is set up on port 3001 and creates an Out-of-Band invitation that allows multiple other agents to connect to the mediator. Configuring an agent as a mediator demands utilizing the MediatorModule. In this example, the autoAcceptMediationRequests flag is set to true to accept mediation requests automatically.

const name = 'mediator'
const port = 3001

const agentConfig: InitConfig = {
label: `Aries Framework JavaScript ${name}`,
walletConfig: {
id: name,
key: name,
},
endpoints: [`http://localhost:${port}`],
}

const mediator = new Agent({
config: agentConfig,
dependencies: agentDependencies,
modules: {
indySdk: new IndySdkModule({ indySdk }),
mediator: new MediatorModule({
autoAcceptMediationRequests: true,
}),
connections: new ConnectionsModule({
autoAcceptConnections: true,
}),
},
})

mediator.registerOutboundTransport(new HttpOutboundTransport())
mediator.registerInboundTransport(new HttpInboundTransport({ port }))

await mediator.initialize()
const mediatorOutOfBandRecord = await mediator.oob.createInvitation({ multiUseInvitation: true })

const mediatiorInvitationUrl = mediatorOutOfBandRecord.outOfBandInvitation.toUrl({
domain: `http://localhost:${port}`,
})
console.log(mediatiorInvitationUrl)

2. Recipient (Alice) setup

The second part shows how to use a mediator. Becoming a recipient of a mediator requires using the MediationRecipientModule. The setup is the same whether you use your own or a third-party mediator.

The easiest way to set everything up is by configuring the MediationRecipientModule to connect to the mediator on agent startup. This can be done by constructing the module with the mediatorInvitationUrl. You can get the mediatorInvitationUrl either from part one by running a mediator yourself or from a public mediator such as the Animo-mediator. The following snippet uses the latter approach.

The ConnectionsModule used in this snippet serves the sole purpose of automatically accepting connections and thus simplifying setup.

const name = 'alice'

// paste your invitation url here
// or use the current invitation-url to connect to the public animo-mediator.
const mediatorInvitationUrl =
'https://mediator.dev.animo.id/invite?oob=eyJAdHlwZSI6Imh0dHBzOi8vZGlkY29tbS5vcmcvb3V0LW9mLWJhbmQvMS4xL2ludml0YXRpb24iLCJAaWQiOiIyMDc1MDM4YS05ZGU3LTRiODItYWUxYi1jNzBmNDg4MjYzYTciLCJsYWJlbCI6IkFuaW1vIE1lZGlhdG9yIiwiYWNjZXB0IjpbImRpZGNvbW0vYWlwMSIsImRpZGNvbW0vYWlwMjtlbnY9cmZjMTkiXSwiaGFuZHNoYWtlX3Byb3RvY29scyI6WyJodHRwczovL2RpZGNvbW0ub3JnL2RpZGV4Y2hhbmdlLzEuMCIsImh0dHBzOi8vZGlkY29tbS5vcmcvY29ubmVjdGlvbnMvMS4wIl0sInNlcnZpY2VzIjpbeyJpZCI6IiNpbmxpbmUtMCIsInNlcnZpY2VFbmRwb2ludCI6Imh0dHBzOi8vbWVkaWF0b3IuZGV2LmFuaW1vLmlkIiwidHlwZSI6ImRpZC1jb21tdW5pY2F0aW9uIiwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtvSG9RTUphdU5VUE5OV1pQcEw3RGs1SzNtQ0NDMlBpNDJGY3FwR25iampMcSJdLCJyb3V0aW5nS2V5cyI6W119LHsiaWQiOiIjaW5saW5lLTEiLCJzZXJ2aWNlRW5kcG9pbnQiOiJ3c3M6Ly9tZWRpYXRvci5kZXYuYW5pbW8uaWQiLCJ0eXBlIjoiZGlkLWNvbW11bmljYXRpb24iLCJyZWNpcGllbnRLZXlzIjpbImRpZDprZXk6ejZNa29Ib1FNSmF1TlVQTk5XWlBwTDdEazVLM21DQ0MyUGk0MkZjcXBHbmJqakxxIl0sInJvdXRpbmdLZXlzIjpbXX1dfQ'

const agentConfig: InitConfig = {
label: `Aries Framework JavaScript ${name}`,
walletConfig: {
id: name,
key: name,
},
logger: new ConsoleLogger(LogLevel.trace),
}

const alice = new Agent({
config: agentConfig,
dependencies: agentDependencies,
modules: {
mediationRecipient: new MediationRecipientModule({
mediatorInvitationUrl,
}),
indySdk: new IndySdkModule({ indySdk }),
},
})

alice.registerOutboundTransport(new HttpOutboundTransport())
alice.registerOutboundTransport(new WsOutboundTransport())

await alice.initialize()
info

In case you are using a third-party mediator and cannot create an invitationUrl, it is common practice for mediators to provide an endpoint from which the invitationUrl can be fetched.

3. Message exchange

This section explains the message exchange between agents when a mediator is in place. The process is illustrated using the diagram below. Parts one and two of this tutorial showed how to set up and use a mediator. If the mediatorInvitationUrl is specified when constructing the MediationRecipientModule (as in Part two), the mediation request and grant (1-2) between Alice and the mediator will be performed automatically when Alice's agent is started.

If Alice establishes a connection with another fictional agent, say, Bob's agent, who is not using any mediators (3-6). (Connection establishment is no different when a mediator is involved). Then, messages from Alice to Bob (7) are routed directly to Bob, while messages from Bob to Alice (8-9) are routed through the intermediary.

Useful resources

For more information about mediator refer to:

- - + + \ No newline at end of file diff --git a/guides/tutorials/registering-schema-and-credential-definition.html b/guides/tutorials/registering-schema-and-credential-definition.html index 25602204..0eccaca5 100644 --- a/guides/tutorials/registering-schema-and-credential-definition.html +++ b/guides/tutorials/registering-schema-and-credential-definition.html @@ -4,13 +4,13 @@ Registering a schema and credential definition on an AnonCreds Registry | Credo - - + +
Version: v0.4.x

Registering a schema and credential definition on an AnonCreds Registry

In this tutorial we will register a schema and credential definition on an AnonCredsRegistry e.g. Hyperledger Indy ledger indy-vdr, cheqd.

info

This section assumes that

  1. You have set-up your development environment.
  2. You have basic knowledge of the required fields in the Agent Config

1. Setting up the agent

First, an agent must be setup with a wallet and an indy-vdr or cheqd module. For these code examples, we will use a Node.js environment.

📄issuer
import { Agent } from '@aries-framework/core'
import { agentDependencies } from '@aries-framework/node'
import { AskarModule } from '@aries-framework/askar'
import { ariesAskar } from '@hyperledger/aries-askar-nodejs'
import {
IndyVdrAnonCredsRegistry,
IndyVdrIndyDidRegistrar,
IndyVdrIndyDidResolver,
IndyVdrModule,
} from '@aries-framework/indy-vdr'
import { indyVdr } from '@hyperledger/indy-vdr-nodejs'
import { AnonCredsModule } from '@aries-framework/anoncreds'
import { AnonCredsRsModule } from '@aries-framework/anoncreds-rs'
import { anoncreds } from '@hyperledger/anoncreds-nodejs'
import {
CheqdAnonCredsRegistry,
CheqdDidRegistrar,
CheqdDidResolver,
CheqdModule,
CheqdModuleConfig,
} from '@aries-framework/cheqd'

const agent = new Agent({
config,
dependencies: agentDependencies,
modules: {
// Register the Askar module on the agent
// We do this to have access to a wallet
askar: new AskarModule({
ariesAskar,
}),
anoncredsRs: new AnonCredsRsModule({
anoncreds,
}),
indyVdr: new IndyVdrModule({
indyVdr,
networks: [
{
isProduction: false,
indyNamespace: 'bcovrin:test',
genesisTransactions: '<genesis transactions>',
connectOnStartup: true,
},
],
}),
cheqd: new CheqdModule(
new CheqdModuleConfig({
networks: [
{
network: '<mainnet or testnet>',
cosmosPayerSeed: '<cosmos payer seed or mnemonic>',
},
],
})
),
anoncreds: new AnonCredsModule({
registries: [new IndyVdrAnonCredsRegistry(), new CheqdAnonCredsRegistry()],
}),
dids: new DidsModule({
registrars: [new IndyVdrIndyDidRegistrar(), new CheqdDidRegistrar()],
resolvers: [new IndyVdrIndyDidResolver(), new CheqdDidResolver()],
}),
},
})

2. Importing a DID (optional)

info

There are many ledgers which can be used to register DIDs on for development.

Indy VDR

We recommend bcovrin test net. This network allows very easily to register a DID from a seed which can then be used as the privateKey in the snippet below. The seed is used as the private key for legacy compatibility with the Hyperledger Indy-SDK. The genesis transactions can also be retrieved for easy integration.

Cheqd

Follow the cheqd setup and cheqd DID module to setup the network and create a DID. Cheqd supports a mainnet for production and a testnet for development purposes.

In order to register a schema and credential definition, a DID must be added to the agent first. This can be done by calling agent.dids.create(), but this does require an endorser DID to be present as the submitterDid. For this tutorial a DID will already be registered on the ledger, but it will be imported, with the associated private key, to be used later when registering the schema and credential definition.

This section can be omitted if your agent already has a DID in its wallet.

📄issuer
const seed = TypedArrayEncoder.fromString(`<seed>`) // What you input on bcovrin. Should be kept secure in production!
const unqualifiedIndyDid = `<unqualifiedIndyDid>` // will be returned after registering seed on bcovrin
const indyDid = `did:indy:bcovrin:test:${unqualifiedIndyDid}`

const cheqdDid = await agent.dids.create({
method: 'cheqd',
secret: {
verificationMethod: {
id: 'key-1',
type: 'Ed25519VerificationKey2020',
},
},
options: {
network: 'testnet',
methodSpecificIdAlgo: 'uuid',
},
})

await agent.dids.import({
did: '<did>',
overwrite: true,
privateKeys: [
{
privateKey: seed,
keyType: KeyType.Ed25519,
},
],
})

3. Registering a schema

When you have a registered DID on a network and in your wallet, you can register a schema. Registering a schema requires four fields: issuerId, name, version and attrNames. It is important to note that the issuerId must be the same as a DID in your wallet.

📄issuer
const schemaResult = await agent.modules.anoncreds.registerSchema({
schema: {
attrNames: ['name'],
issuerId: '<did>',
name: 'Example Schema to register',
version: '1.0.0',
},
options: {},
})

if (schemaResult.schemaState.state === 'failed') {
throw new Error(`Error creating schema: ${schemaResult.schemaState.reason}`)
}

3. Registering a credential definition

After registering a schema, a credential definition can be registered based on the schema. The credential definition, amongst more things, binds the schema to a specific issuer. Schemas can be reused between issuers, but a credential definition is specific to an issuer. In a credential definition revocation can also be specified. This section will not go in-depth about revocation.

📄issuer
const credentialDefinitionResult = await agent.modules.anoncreds.registerCredentialDefinition({
credentialDefinition: {
tag: 'default',
issuerId: '<did>',
schemaId: schemaResult.schemaState.schemaId,
},
options: {},
})

if (credentialDefinitionResult.credentialDefinitionState.state === 'failed') {
throw new Error(
`Error creating credential definition: ${credentialDefinitionResult.credentialDefinitionState.reason}`
)
}

Using it

After everything is registered on a AnonCredsRegistry, we can use it to issue credentials. The next tutorial is all about issuing an AnonCreds credential with this setup.

Useful Resources

- - + + \ No newline at end of file diff --git a/guides/updating.html b/guides/updating.html index 19d67fd6..1d33c891 100644 --- a/guides/updating.html +++ b/guides/updating.html @@ -4,13 +4,13 @@ Updating AFJ | Credo - - + +
Version: v0.4.x

Updating AFJ

This section will cover everything you need to know about updating Aries Framework JavaScript to a newer version.

Versioning

Aries Framework JavaScript follows semantic versioning. This means that major version changes (1.0.0) are considered breaking changes. When features are added this is a minor version change (0.1.0). For bug fixes the patch version change is used (0.0.1).

While AFJ is still in pre-1.0.0 version, the version change types are shifted to the right. This means a major version change is now a minor change (0.1.0) and a minor change is now a patch change (0.0.1). This is done to keep the version below 1.0.0, indicating the framework is still in early development and users can expect more breaking changes that when the version has already reached 1.0.0.

This means if the second number in the version (0.1.0) changes, you need to be careful with updating and always consult this page for update instructions. If only the third number changes (0.0.1), you can update without any issues.

Types of breaking changes

Updates to AFJ bring new features and improvements to the framework. To better adapt the framework to new features we sometimes make breaking changes that will improve how AFJ works. There's two parts to updates with breaking changes:

  1. Breaking code changes
  2. Breaking storage changes

Breaking Code Changes

Breaking changes to code means changes to how you interact with AFJ. This includes methods being renamed, moved to another module or extended to better integrate with new features. We'll try to cover all breaking changes in migration guides, so you know exactly what is needed to update to a new version and keep the same functionality.

info

If you encounter any breaking changes that aren't mentioned in the migration docs, please open an issue in the Aries JavaScript Docs repository, or directly create a PR describing the change.

Breaking Storage Changes

Breaking changes to storage are a bit more complex to deal with. While breaking changes to code only require you to update your code once, breaking changes to storage needs to be updated for every agent instance. Luckily, we've made the migration as easy as possible for you using the Update Assistant. The Update Assistant will update all storage objects to the storage model that is expected by the newest version. If a version made changes to the storage, this will be explicitly mentioned in the migration guide. See the Update Assistant documentation for detailed instructions on how to use the update assistant.

Migration Guides

Currently the following migration guides are available:

- - + + \ No newline at end of file diff --git a/guides/updating/update-assistant.html b/guides/updating/update-assistant.html index 702a4c74..1d56bea7 100644 --- a/guides/updating/update-assistant.html +++ b/guides/updating/update-assistant.html @@ -4,13 +4,13 @@ Update Assistant | Credo - - + +
Version: v0.4.x

Update Assistant

The Update Assistant helps you update the storage objects from AFJ to newer versions. This documents describes the different ways you can leverage the Update Assistant from fully managed to more manual approaches.

Update Strategies

There are three options on how to leverage the update assistant on agent startup:

  1. Manually instantiating the update assistant on agent startup
  2. Storing the agent storage version outside of the agent storage
  3. Automatically update on agent startup

Manually instantiating the update assistant on agent startup

When the version of the storage is stored inside the agent storage, it means we need to check if the agent needs to be updated on every agent startup. We'll initialize the update assistant and check whether the storage is up to date. The advantage of this approach is that you don't have to store anything yourself, and have full control over the workflow.

import { UpdateAssistant, Agent } from '@aries-framework/core'

// or @aries-framework/node
import { agentDependencies } from '@aries-framework/react-native'

// First create the agent
const agent = new Agent({
config,
dependencies: agentDependencies,
})

// Then initialize the update assistant with the update config
const updateAssistant = new UpdateAssistant(agent, {
v0_1ToV0_2: {
mediationRoleUpdateStrategy: 'allMediator',
},
})

// Initialize the update assistant so we can read the current storage version
// from the wallet. If you manually initialize the wallet you should do this _before_
// calling initialize on the update assistant
// await agent.wallet.initialize(walletConfig)
await updateAssistant.initialize()

// Check if the agent is up to date, if not call update
if (!(await updateAssistant.isUpToDate())) {
await updateAssistant.update()
}

// Once finished initialize the agent. You should do this on every launch of the agent
await agent.initialize()

Storing the agent storage version outside of the agent storage

When the version of the storage is stored outside of the agent storage, you don't have to initialize the UpdateAssistant on every agent agent startup. You can just check if the storage version is up to date and instantiate the UpdateAssistant if not. The advantage of this approach is that you don't have to instantiate the UpdateAssistant on every agent startup, but this does mean that you have to store the storage version yourself.

When a wallet has been exported and later imported you don't always have the latest version available. If this is the case you can always rely on Method 1 or 2 for updating the wallet, and storing the version yourself afterwards. You can also get the current version by calling await updateAssistant.getCurrentAgentStorageVersion(). Do note the UpdateAssistant needs to be initialized before calling this method.

import { UpdateAssistant, Agent } from '@aries-framework/core'

// or @aries-framework/node
import { agentDependencies } from '@aries-framework/react-native'

// The storage version will normally be stored in e.g. persistent storage on a mobile device
let currentStorageVersion: VersionString = '0.1'

// First create the agent
const agent = new Agent({
config,
dependencies: agentDependencies,
})

// We only initialize the update assistant if our stored version is not equal
// to the frameworkStorageVersion of the UpdateAssistant. The advantage of this
// is that we don't have to initialize the UpdateAssistant to retrieve the current
// storage version.
if (currentStorageVersion !== UpdateAssistant.frameworkStorageVersion) {
const updateAssistant = new UpdateAssistant(agent, {
v0_1ToV0_2: {
mediationRoleUpdateStrategy: 'recipientIfEndpoint',
},
})

// Same as with the previous strategy, if you normally call agent.wallet.initialize() manually
// you need to call this before calling updateAssistant.initialize()
await updateAssistant.initialize()

await updateAssistant.update()

// Store the version so we can leverage it during the next agent startup and don't have
// to initialize the update assistant again until a new version is released
currentStorageVersion = UpdateAssistant.frameworkStorageVersion
}

// Once finished initialize the agent. You should do this on every launch of the agent
await agent.initialize()

Automatically update on agent startup

This is by far the easiest way to update the agent, but has the least amount of flexibility and is not configurable. This means you will have to use the default update options to update the agent storage. You can find the default update config in the respective version migration guides (e.g. in 0.1-to-0.2).

import { UpdateAssistant, Agent } from '@aries-framework/core'

// or @aries-framework/node
import { agentDependencies } from '@aries-framework/react-native'

// First create the agent, setting the autoUpdateStorageOnStartup option to true
const agent = new Agent({
config: {
...config,
autoUpdateStorageOnStartup: true,
},
dependencies: agentDependencies,
})

// Then we call initialize, which under the hood will call the update assistant if the storage is not update to date.
await agent.initialize()

Backups

Before starting the update, the update assistant will automatically create a backup of the wallet. If the migration succeeds the backup won't be used. If the backup fails, another backup will be made of the migrated wallet, after which the backup will be restored.

The backups can be found at the following locations. The backupIdentifier is generated at the start of the update process and generated based on the current timestamp.

  • Backup path: ${agent.config.fileSystem.basePath}/afj/migration/backup/${backupIdentifier}
  • Migration backup: ${agent.config.fileSystem.basePath}/afj/migration/backup/${backupIdentifier}-error

In the future the backup assistant will make a number of improvements to the recovery process. Namely:

  • Do not throw an error if the update fails, but rather return an object that contains the status, and include the backup paths and backup identifiers.
- - + + \ No newline at end of file diff --git a/guides/updating/update-indy-sdk-to-askar.html b/guides/updating/update-indy-sdk-to-askar.html index 9b62f5bf..5bc4649c 100644 --- a/guides/updating/update-indy-sdk-to-askar.html +++ b/guides/updating/update-indy-sdk-to-askar.html @@ -4,13 +4,13 @@ Migrating from an Indy SDK Wallet to Aries Askar | Credo - - + +
Version: v0.4.x

Migrating from an Indy SDK Wallet to Aries Askar

This documentation explains the process of migrating your Indy SDK wallet to Aries Askar.

danger

While the migration script technically works on node.js, it is strongly advised not to use it, yet. The migration of issuer records (such as Schemas and Credential Definitions) is not implemented yet. When a credential definition is detected it will revert the migration process and no harm is done.

caution

Postgres is not supported. If you are using postgres with Indy SDK and need to update to Aries Askar, please open an issue on GitHub.

caution

The migration script is supported to run on 0.3.x before migrating from 0.3.x to 0.4.x. Please refer to Migrating from AFJ 0.3.x to 0.4.x to get to 0.4.x afterwards.

It is important to note that this script must be ran before you update from 0.3.x to 0.4.x.

What does the migration do internally?

The migration script does the following to make sure everything is migrated properly, and if anything goes wrong, it will revert back to a working state.

Create a backup

Because undefined behavior might occur, we create a backup in the new tmp directory from Aries Framework JavaScript. if some error occurs, it will be reverted back to the backed-up state and if no error occurs, it will delete the backup from the temporary directory.

Migrate the database to an Aries Askar structure

The Indy-sdk and Aries Askar have different database structures. So first of all we need to change some table names, decrypt all the items with the old Indy keys, encrypt the items with the new Aries Askar keys and store them inside the new structure.

Try to open the wallet in the new Aries Askar structure

When the wallet is correctly transformed, the wallet will be attempted to be opened.

Update the keys

Aries Askar has a specific way to store keys and every key, defined by the category of Indy::Key will be migrated.

Update the DIDs

caution

This update script does not transform did records. This is fine for something like did:peer, but will cause issues with indy and sov DIDs. For more information, please check out the Migrating from AFJ 0.3.x to 0.4.x

Update the credential definitions

danger

Updating of credential definitions is not yet supported. This is why it is strongly advised not to run this script in a node.js environment.

The link secrets, identified by the category Indy::MasterSecret, are updated next. They are stored inside a new AnonCredsLinkSecretRecord.

caution

Since we have to set a default link secret, some additional logic is added to detect this. You can either supply a defaultLinkSercetId as a constructor parameter or it will be based on your walletId.

If there is no Indy record with the defaultLinkSecretId or the walletId, an error will be thrown and the migration will be restored.

Update the credentials

The credentials, identified by the category Indy::Credential are updated last. They are stored in the new AnonCredsCredentialRecord as a one-to-one copy. This means that they now support more tags and will make querying a lot easier.

All the other records

All the other records will be transferred without any updates as they are not Indy specific.

How to update

Updating does not require a lot of code, but must be done with caution.

It is very important to note that the migration script only has to be run once. If it runs for a second time, it will error saying that the database is already migrated. Also, when the migration is finished, it is common practice to store this state in your persistent app storage. This script does not provide a way to detect if an update has happened, so storing this value will prevent the script from running every time. For more information regarding this topic, please check out Update Assistant.

add the required dependencies:

yarn add @hyperledger/aries-askar-react-native @aries-framework/indy-sdk-to-askar-migration react-native-fs

Below is the minimal code required for the migration to work. It is recommended to turn the logger on as it gives a lot of information regarding the migration.

caution

The agent is not allowed to be initialized to run this script. This makes sure nothing else happens during the migration.

import { agentDependencies } from '@aries-framework/react-native'
import { AskarModule } from '@aries-framework/askar'
import { IndySdkToAskarMigrationUpdater } from '@aries-framework/indy-sdk-to-askar-migration'
import { ariesAskar } from '@hyperledger/aries-askar-react-native'

const oldAgent = new Agent({
config: {
/* ... */
},
modules: {
ariesAskar: new AskarModule({
ariesAskar,
}),
},
dependencies: agentDependencies,
})

const dbPath = '' // see section below

const updater = await IndySdkToAskarMigrationUpdater.initialize({ dbPath, agent })
await updater.update()

Getting the database path

Android

On android, the database is commonly located under the ExternalDirectoryPath.

If you did not follow the default indy-sdk for React Native setup, your path might differ. Check out step 5 of the Android setup for Indy SDK React Native for the default behavior.

import fs from 'react-native-fs'

const base = fs.ExternalDirectoryPath
const indyClient = '.indy_client'
const wallet = 'wallet'
const walletId = agent.config.walletConfig.id
const file = 'sqlite.db'

const dbPath = `${base}/${indyClient}/${wallet}/${walletId}/${file}`

iOS

On iOS, the database is commonly located under the DocumentDirectoryPath.

For iOS this can only change if your phone does not have the HOME environment variable set. This is not usual behavior, and if HOME is not set, the base in the code section below will be /home/indy/Documents.

import fs from 'react-native-fs'

const base = fs.DocumentDirectoryPath
const indyClient = '.indy_client'
const wallet = 'wallet'
const walletId = agent.config.walletConfig.id
const file = 'sqlite.db'

const dbPath = `${base}/${indyClient}/${wallet}/${walletId}/${file}`
- - + + \ No newline at end of file diff --git a/guides/updating/versions/0.1-to-0.2.html b/guides/updating/versions/0.1-to-0.2.html index c81fb38c..e9e20e81 100644 --- a/guides/updating/versions/0.1-to-0.2.html +++ b/guides/updating/versions/0.1-to-0.2.html @@ -4,15 +4,15 @@ Migrating from AFJ 0.1.0 to 0.2.x | Credo - - + +
Version: v0.4.x

Migrating from AFJ 0.1.0 to 0.2.x

This document describes everything you need to know for updating AFJ 0.1.0 to 0.2.x. If you're not aware of how updating in AFJ works make sure to first read the guide on Updating AFJ.

First of all, update you dependencies to the 0.2.x versions. This will also update the needed peer depedencnies. Extension packages are not updated with this command. You need to update these manually, and make sure they're up to date with the latest version of AFJ.

yarn add @aries-framework/react-native@^0.2.0 @aries-framework/core@^0.2.0 indy-sdk-react-native@^0.2.0

# or NPM
npn install @aries-framework/react-native@^0.2.0 @aries-framework/core@^0.2.0 indy-sdk-react-native@^0.2.0

Breaking Code Changes

This section will list all breaking changes made to the public API of AFJ between version 0.1.0 and 0.2.0.

info

If you have custom modules take into account there could be a lot more breaking changes that aren't documented here. We try to make sure that the biggest breaking changes to the internal API are also documented here (e.g. see Updating Custom Messages to the New Message Type Objects), but it is possible some breaking changes are not documented here (feel free to open PRs).

Credentials Module

Module API Updates

With the addition of the issue credential v2 protocol and the preparation for multiple attachment formats (to be added in a later release), we've made some big changes to the credentials module API. Most changes are related to structure, so updating your code to the new API should be straightforward.

Basically for all methods in the credential module you should take the following steps to update your code:

  1. Move all function parameters into a single object. All module methods now take a single object that contain all properties.
  2. For methods that initiate a protocol (starting from offer, proposal), you should pass protocolVersion: 'v1' to indicate we should use the v1 protocol. (v2 is also supported, but this focuses on the breaking changes, not the new features).
  3. All indy specific attributes (e.g. credentialDefinitionId) should be passed in the credentialFormats.indy object.
  4. The preview should now be passed as only the preview attributes (the the full preview) and provided in the credentialFormats.indy object.
await agent.credentials.offerCredential('connectionId', {
autoAcceptCredential: AutoAcceptCredential.Always,
comment: 'hello',

credentialDefinitionId: 'credentialDefinitionId',
preview: new CredentialPreview({
attributes: [new CredentialPreviewAttribute({ name: 'key', value: 'value' })],
}),
})

Data from Received Messages only Stored in Record after Accepting

Previously when we received a message from another connection we would store the relevant data from the exchange in the credential record. The values we would store were the credentialDefinitionId and schemaId in the credential metadata, and the credentialAttributes field.

Starting with AFJ 0.2.0 the values are not stored in the credential record until after the message content has been accepted (in the case of an offer this means after sending the request message). This is to avoid ambiguity of the values in the credential record. If I have sent a proposal and then receive an offer, should the credential record contain the values from the proposal or the values from the offer? The first one reflects our view on what the data should be, the second one reflects the latest data.

We decided to make the record properties always hold our view of what the data should be, and only update it after accepting the contents of a received message (either using auto accept, or by calling the acceptXXX methods on the credential module).

This is an important change and requires some updates to how you extract the relevant data from the offer (or other messages such the proposal). We've added a new getFormatData method on the credentials module that allows you to retrieve the attributes and format data for all messages in an exchange. One of the advantages of this approach is that we don't have to store all relevant data in the credential record anymore, which helps when adding new formats that don't match with the attributes used for indy credentials. In addition, the return value for this method is the same whether v1 or v2 of the protocol is used. This means your code should only care about the credential format (indy in this case) and doesn't have to worry about the protocol version.

agent.events.on<CredentialStateChangedEvent>(
CredentialEventTypes.CredentialStateChanged,
({ payload: { credentialRecord } }) => {
const indyCredentialMetadata = credentialRecord.metadata.get(CredentialMetadataKeys.IndyCredential)

// Get credential definition id, schema id and attributes from offer
const credentialDefinitionId = indyCredentialMetadata?.credentialDefinitionId
const schemaId = indyCredentialMetadata?.schemaId
const attributes = credentialRecord.credentialAttributes
}
)

Messages Extracted from Credential Record

The DIDComm messages that were previously stored on the credential record, have been extracted to separate DIDComm message records. This makes it easier to work with multiple versions of the protocol internally, and keeps the credential exchange record agnostic of the protocol version. Instead of accessing the messages through the proposalMessage, offerMessage, requestMessage and credentialMessage parameters, we now expose dedicated methods on the credentials module to retrieve the message.

With the addition of the v2 messages, all v1 messages have been prefixed with V1 while v2 messages have been prefixed with V2 (V1ProposeCredentialMessage and V2ProposeCredentialMessage). If you were using these messages classes throughout your codebase, update them to use the V1 prefix.

const credentialRecord = await agent.credentials.getById('credentialRecordId')

const proposalMessage = credentialRecord.proposalMessage
const offerMessage = credentialRecord.offerMessage
const requestMessage = credentialRecord.requestMessage
const credentialMessage = credentialRecord.credentialMessage

Connections Module

Version 0.2.0 added support for the Out of Band protocol with support for the DID Exchange protocol. Internally AFJ now uses out of band invitations for all connections, even if you're connecting using the old invitations from the Connection protocol.

Creating a Legacy Invitation

The createInvitation method on the connections module has been moved to the out of band module and renamed to createLegacyInvitation. The method is not planned to be removed in the near future, the legacy merely indicates this will create an RFC 0160 connection invitation. Internally AFJ creates an out of band invitation and transforms it into a legacy invitation. If you want to create an out of band invitation instead, you should use oob.createInvitation.

const { connectionRecord, invitation } = await agent.connections.createInvitation({
/* config */
})

const invitationUrl = invitation.toUrl({ domain: 'https://example.com' })

Receiving a Legacy Invitation

The receiveInvitation and receiveInvitationFromUrl methods on the connections module have also been moved to the out of band module. Both methods support the new out of band invitations and the legacy RFC 0160 connection invitations. Internally AFJ converts the old invitations to out of band invitations.

const invitationUrl = 'https://example.com?c_i=eyXXX'

// Receive invitation directly from url
const connectionRecord = await agent.connections.receiveInvitationFromUrl(invitationUrl, {
/* config */
})

// Parse invitation and receive invitation
const parsedInvitation = await ConnectionInvitationMessage.fromUrl(invitationUrl)
const connectionRecord = await agent.connections.receiveInvitation(parsedInvitation, {
/* config */
})

Updating to use DidExchangeState

The ConnectionState that was previously used for the state of the ConnectionRecord has been changed to use the DidExchangeState for both connections made using the RFC 0160 Connection Protocol, as well as the RFC 0023 DID Exchange Protocol.

The DidExchangeState has the following values:

  • DidExchangeState.Start,
  • DidExchangeState.InvitationSent,
  • DidExchangeState.InvitationReceived,
  • DidExchangeState.RequestSent,
  • DidExchangeState.RequestReceived,
  • DidExchangeState.ResponseSent,
  • DidExchangeState.ResponseReceived,
  • DidExchangeState.Abandoned,
  • DidExchangeState.Completed

If you still need to access the old ConnectionState you can do so by accessing the computed connectionRecord.rfc0160State property. This will return the old ConnectionState value.

Updating Custom Messages to the New Message Type Objects

Although this isn't a breaking change to the public API of the framework, it is something that you will need to take into account when creating custom modules. Starting from AFJ 0.2.0 we now support handling messages with different minor versions (e.g. receive a message with @type version 1.1 while we only support 1.0). With this change messages must now declare the message type as an ParsedMessageType object. We've added an parseMessageType util method that can help with this.

import { AgentMessage } from '@aries-framework/core'
import { Equals } from 'class-validator'

class MyMessage extends AgentMessage {
@Equals(MyMessage.type)
public readonly type = MyMessage.type
public static readonly type = 'https://didcomm.org/my-protocol/1.0/my-type'
}

Breaking Storage Changes

The 0.2.0 release is heavy on breaking changes to the storage format. This is not what we intend to do with every release. But as there's not that many people yet using the framework in production, and there were a lot of changes needed to keep the API straightforward, we decided to bundle a lot of breaking changes in this one release.

Below all breaking storage changes are explained in as much detail as possible. The update assistant provides all tools to migrate without a hassle, but it is important to know what has changed. All examples only show the keys that have changed, unrelated keys in records have been omitted.

See the Update Assistant documentation for a guide on how to use the update assistant.

The following config can be provided to the update assistant to migrate from 0.1.0 to 0.2.0:

{
"v0_1ToV0_2": {
"mediationRoleUpdateStrategy": "<mediationRoleUpdateStrategy>"
}
}

Credential Metadata

The credential record had a custom metadata property in pre-0.1.0 storage that contained the requestMetadata, schemaId and credentialDefinition properties. Later a generic metadata API was added that only allows objects to be stored. Therefore the properties were moved into a different structure.

{
"requestMetadata": <value of requestMetadata>,
"schemaId": "<value of schemaId>",
"credentialDefinitionId": "<value of credential definition id>"
}

Migrate Credential Record Properties

In 0.2.0 the v1 DIDComm messages have been moved out of the credential record into separate records using the DidCommMessageRepository. The migration scripts extracts all messages (proposalMessage, offerMessage, requestMessage, credentialMessage) and moves them into the DidCommMessageRepository.

With the addition of support for different protocol versions the credential record now stores the protocol version. With the addition of issue credential v2 support, other credential formats than indy can be used, and multiple credentials can be issued at once. To account for this the credentialId has been replaced by the credentials array. This is an array of objects containing the credentialRecordId and the credentialRecordType. For all current credentials the credentialRecordType will always be indy.

{
"credentialId": "09e46da9-a575-4909-b016-040e96c3c539",
"proposalMessage": { ... },
"offerMessage": { ... },
"requestMessage": { ... },
"credentialMessage": { ... },
}

Mediation Record Role

The role in the mediation record was always being set to MediationRole.Mediator for both mediators and recipients. This didn't cause any issues, but would return the wrong role for recipients.

In 0.2 a check is added to make sure the role of a mediation record matches with actions (e.g. a recipient can't grant mediation), which means it will throw an error if the role is not set correctly.

Because it's not always possible detect whether the role should actually be mediator or recipient, a number of configuration options are provided on how the role should be updated using the v0_1ToV0_2.mediationRoleUpdateStrategy option:

  • allMediator: The role is set to MediationRole.Mediator for both mediators and recipients
  • allRecipient: The role is set to MediationRole.Recipient for both mediators and recipients
  • recipientIfEndpoint (default): The role is set to MediationRole.Recipient if their is an endpoint configured on the record. The endpoint is not set when running as a mediator. There is one case where this could be problematic when the role should be recipient, if the mediation grant hasn't actually occurred (meaning the endpoint is not set). This is probably the best approach otherwise it is set to MediationRole.Mediator
  • doNotChange: The role is not changed

Most agents only act as either the role of mediator or recipient, in which case the allMediator or allRecipient configuration is the most appropriate. If your agent acts as both a recipient and mediator, the recipientIfEndpoint configuration is the most appropriate. The doNotChange options is not recommended and can lead to errors if the role is not set correctly.

Extracting Did Documents to Did Repository

The connection record previously stored both did documents from a connection in the connection record itself. Version 0.2.0 added a generic did storage that can be used for numerous usages, one of which is the storage of did documents for connection records.

The migration script extracts the did documents from the didDoc and theirDidDoc properties from the connection record, updates them to did documents compliant with the did core spec, and stores them in the did repository. By doing so it also updates the unqualified dids in the did and theirDid fields generated by the indy-sdk to fully qualified did:peer dids compliant with the Peer DID Method Specification.

To account for the fact that the mechanism to migrate legacy did document to peer did documents is not defined yet, the legacy did and did document are stored in the did record metadata. This will be deleted later if we can be certain the did doc conversion to a did:peer did document is correct.

{
"did": "BBPoJqRKatdcfLEAFL7exC",
"theirDid": "UppcJ5APts7ot5WX25943F",
"verkey": "GAb4NUvpBcHVCvtP45vTVa5Bp74vFg3iXzdp1Gbd68Wf",
"didDoc": <legacyDidDoc>,
"theirDidDoc": <legacyTheirDidDoc>,
}

Migrating to the Out of Band Record

With the addition of the out of band protocol, invitations are now stored in the OutOfBandRecord. In addition a new field invitationDid is added to the connection record that is generated based on the invitation service or did. This allows to reuse existing connections.

The migration script extracts the invitation and other relevant data into a separate OutOfBandRecord. By doing so it converts the old connection protocol invitation into the new Out of band invitation message. Based on the service or did of the invitation, the invitationDid is populated.

Previously when creating a multi use invitation, a connection record would be created with the multiUseInvitation set to true. The connection record would always be in state invited. If a request for the multi use invitation came in, a new connection record would be created. With the addition of the out of band module, no connection records are created until a request is received. So for multi use invitation this means that the connection record with multiUseInvitation=true will be deleted, and instead all connections created using that out of band invitation will contain the outOfBandId of the multi use invitation.

{
"invitation": {
"@type": "https://didcomm.org/connections/1.0/invitation",
"@id": "04a2c382-999e-4de9-a1d2-9dec0b2fa5e4",
"recipientKeys": ["E6D1m3eERqCueX4ZgMCY14B4NceAr6XP2HyVqt55gDhu"],
"serviceEndpoint": "https://example.com",
"label": "test"
},
"multiUseInvitation": "false"
}

Unifying Connection States and Roles

With the addition of the did exchange protocol there are now two states and roles related to the connection record; for the did exchange protocol and for the connection protocol. To keep it easy to work with the connection record, all state and role values are updated to those of the DidExchangeRole and DidExchangeState enums.

The migration script transforms all connection record state and role values to their respective values of the DidExchangeRole and DidExchangeState enums. For convenience a getter property rfc0160ConnectionState is added to the connection record which returns the ConnectionState value.

{
"state": "invited",
"role": "inviter"
}
- - + + \ No newline at end of file diff --git a/guides/updating/versions/0.2-to-0.3.html b/guides/updating/versions/0.2-to-0.3.html index 8c568de3..98e12773 100644 --- a/guides/updating/versions/0.2-to-0.3.html +++ b/guides/updating/versions/0.2-to-0.3.html @@ -4,13 +4,13 @@ Migrating from AFJ 0.2.x to 0.3.x | Credo - - + +
Version: v0.4.x

Migrating from AFJ 0.2.x to 0.3.x

This document describes everything you need to know for updating AFJ 0.2.x to 0.3.x. If you're not aware of how updating in AFJ works make sure to first read the guide on Updating AFJ.

First of all, update you dependencies to the 0.3.x versions. This will also update the needed peer depedencnies. Extension packages are not updated with this command. You need to update these manually, and make sure they're up to date with the latest version of AFJ.

yarn add @aries-framework/react-native@^0.3.0 @aries-framework/core@^0.3.0 indy-sdk-react-native@^0.3.0

# or NPM
npn install @aries-framework/react-native@^0.3.0 @aries-framework/core@^0.3.0 indy-sdk-react-native@^0.3.0

Breaking Code Changes

This section will list all breaking changes made to the public API of AFJ between version 0.2.x and 0.3.0.

info

If you have custom modules take into account there could be a lot more breaking changes that aren't documented here. We try to make sure that the biggest breaking changes to the internal API are also documented here (e.g. see Updating Custom Modules to the Plugin API), but it is possible some breaking changes are not documented here (feel free to open PRs).

Agent creation

The agent constructor has been updated to a single AgentOptions object that contains the config and dependencies properties.

const agent = new Agent(agentConfig, agentDependencies)

This object contains:

  • config: Agent's initial configuration
  • dependencies: platform-specific Agent dependencies
  • modules: optional field for internal module configuration and custom module registration

For easy migration, you can simply construct AgentOptions by putting current InitConfig into config key and agentDependencies into dependencies key.

Note that, if you are defining indyLedgers configuration, you should set the indyNamespace for every ledger, as explained in Agent Config tutorial.

did:key usage in protocols

In accordance with Aries RFC 0360, since 0.2.5 there is a configuration parameter called useDidKeyInProtocols which, when enabled, will encode keys in did:key instead of previous base58 format, unless the other party has started a protocol and is using base58.

This parameter was previously disabled by default and now it is enabled. If your agent only interacts with modern agents (e.g. AFJ 0.2.5 and newer) this will not represent any issue. Otherwise it is safer to explicitly set it to false. However, keep in mind that we expect this setting to be deprecated in the future, so we encourage you to update all your agents to use did:key.

Modules extracted from the core

In this release two modules were extracted from the core and published as separate, optional packages:

  • actionMenu has been moved to @aries-framework/action-menu
  • questionAnswer has been moved to @aries-framework/question-answer

If you want to use them, you can integrate in an Agent instance by injecting them in constructor, as follows:

import { ActionMenuModule } from '@aries-framework/action-menu'
import { QuestionAnswerModule } from '@aries-framework/question-answer'

const agent = new Agent({
config: {
/* config */
},
dependencies: agentDependencies,
modules: {
actionMenu: new ActionMenuModule(),
questionAnswer: new QuestionAnswerModule(),
/* other custom modules */
},
})

As they are now considered custom modules, their API can be accessed in modules namespace, so you should add it to every call to them.

await agent.questionAnswer.sendQuestion(connectionId, {
question: 'Do you want to play?',
validResponses: [{ text: 'Yes' }, { text: 'No' }],
})

await agent.questionAnswer.sendAnswer(questionAnswerRecordId, 'Yes')

Discover Features Module

This module now supports both Discover Features V1 and V2, and as it happened to other modules, queryFeatures method parameters have been unified to a single object and requires to specify the version of Discover Features protocol to be used. Note that query property has been replaced by the more general queries which accepts multiple features to be search for. To convert a query to this new format you simply need to create a single-object array whose unique object whose featureType field is 'protocol' and match field is the query itself.

await agent.discovery.queryFeatures(connectionId, {
query: 'https://didcomm.org/messagepickup/2.0',
comment: 'Detect if protocol is supported',
})

The convenience method isProtocolSupported has been replaced by the more general synchronous mode of queryFeatures, which works when awaitDisclosures in options is set. Instead of returning a boolean, it returns an object with matching features:

const isPickUpV2Supported = await agent.discovery.isProtocolSupported(connectionId, StatusRequestMessage)
info

Discover Features module does not rely anymore on Agent Dispatcher to determine protocol support. Instead, it uses the new Feature Registry, where any custom modules implementing protocols must register them.

This procedure can be done in module's register(dependencyManager, featureRegistry).

Ledger Module

Apart from the aforementioned indyLedgers configuration, you should also note a slight change in behaviour when attempting to register credential definitions that already exists on the ledger but not in the wallet.

Proofs Module

Module API Updates

Much in the same way as in 0.2.0 release when Issue Credential V2 protocol has been added, now that Present Proof V2 is supported, we introduced changes to proofs module.

Basically, for all methods in the proofs module you should take the following steps to update your code:

  1. Move all function parameters into a single object. All module methods now take a single object that contain all properties.
  2. For methods that initiate proposals, requests or presentations (proposeProof, acceptProposal, requestProof, acceptPresentation, etc.), you should pass protocolVersion: 'v1' to indicate we should use the v1 protocol
  3. All indy specific attributes (e.g. Presentation Preview) should be passed in the proofFormats.indy object.
  4. Some indy objects, as the preview should now be passed only as their attributes (i.e. no need of creating the object instance) and provided in the proofFormats.indy object.
await agent.proofs.proposeProof(
'connectionId',
new PresentationPreview({
attributes: [new PresentationPreviewAttribute({ name: 'key', value: 'value' })],
predicates: [
new PresentationPreviewPredicate({
name: 'age',
credentialDefinitionId,
predicate: PredicateType.GreaterThanOrEqualTo,
threshold: 50,
}),
],
})
)

Messages Extracted from Proof Exchange Record

The DIDComm messages that were previously stored on the proof record, have been extracted to separate DIDComm message records. This makes it easier to work with multiple versions of the protocol internally, and keeps the proof exchange record agnostic of the protocol version. Instead of accessing the messages through the proposalMessage, requestMessage and presentationMessage parameters, we now expose dedicated methods on the proofs module to retrieve the message.

With the addition of the v2 messages, all v1 messages have been prefixed with V1 while v2 messages have been prefixed with V2 (V1RequestPresentationMessage and V2RequestPresentationMessage). If you were using these messages classes throughout your codebase, update them to use the V1 prefix.

const proofRecord = await agent.proofs.getById('proofRecordId')

const proposalMessage = proofRecord.proposalMessage
const requestMessage = proofRecord.requestMessage
const presentationMessage = proofRecord.presentationMessage

Out Of Band Proofs and Credentials

With the addition of the out of band module, the creation of connection-less messages has been split into two steps, allowing for better control and flexibility. The previous agent.proofs.createOutOfBandRequest has been replaced by the agent.proofs.createRequest method. This new method creates a proof request that is not tied to any connection.

What you can now do is call agent.oob.createLegacyConnectionlessInvitation to attach the service decorator to the message and get a legacy connectionless message.

const { requestMessage, proofRecord } = await agent.proofs.createOutOfBandRequest({
requestedAttributes: {
group1: {
name: 'dateOfBirth',
restrictions: [{ schemaId: 'F72i3Y3Q4i466efjYJYCHM:2:aha_cert:4.1.1' }],
},
},
})

Out of band invitations are the new way to send messages out of band. You can use it for connection-less exchanges, but also for exchanges that you want to establish a connection for first. Here's an example on how to use the out of band module to create a connection-less invitation for a proof request:

const outOfBandRecord = await agent.oob.createInvitation({
handshake: false, // set to true if you want to create a connection
messages: [message],
})

const invitationUrl = outOfBandRecord.outOfBandInvitation.toUrl({
domain: 'https://afj.com',
})

As you can see, there's now a lot more ways to use a message not tied to a connection. By splitting the creation of the message from the creation of the invitation, we can now create a message not bound to a connection (at time of creation) for multiple use cases.

Updating Custom Modules to the new Plugin API

Although this isn't a breaking change to the public API of the framework, it is something that you will need to take into account if you have custom modules and want to upgrade them to make compatible with AFJ 0.3.0.

Renaming handler classes

Handler has been have been renamed to MessageHandler to be be more descriptive, along with related types and methods. This means:

  • Handler is now MessageHandler
  • HandlerInboundMessage is now MessageHandlerInboundMessage
  • Dispatcher.registerHandler is now Dispatcher.registerMessageHandler and is marked as deprecated. The recommended way of registering handlers is by using the new MessageHandlerRegistry object by calling MessageHandlerRegistry.registerMessageHandler.

If your custom module include message handlers, you must update them accordingly.

export class MyHandler implements Handler {
public supportedMessages = [MyMessage]

public async handle(inboundMessage: HandlerInboundMessage<MyHandler>) {
...
}
}

Using AgentContext

First of all, it's worth noting that now all services and repositories have been made stateless. A new AgentContext is introduced that holds the current context, which is passed to each method call. Therefore, you'll need to update every call to services, repositories and also eventEmitter methods to pass AgentContext object as first argument.

AgentContext can be obtained from either:

  • MessageContext used by message handlers (accesed as messageContext.agentContext)
  • Injected in your API constructor: you can store the instance and pass it to all your service and repository calls
  public async createRequest(options: CreateRequestOptions) {
const message = new RequestMessage({
parentThreadId: options.parentThreadId,
})

const record = new MyRecord({
connectionId: options.connectionRecord.id,
threadId: message.id,
parentThreadId: options.parentThreadId,
})

await this.myRecordRepository.save(record)

this.eventEmitter.emit<MyRecordStateChangedEvent>({
type: MyRecordEventTypes.StateChanged,
payload: {
myRecord: record,
previousState: null,
},
})

return { record, message }
}

public async processRequest(messageContext: HandlerInboundMessage<RequestHandler>) {
const { message } = messageContext

const record = new MyRecord({
connectionId: connection.id,
threadId: messageContext.message.id,
parentThreadId: messageContext.message.thread?.parentThreadId,
})

await this.myRepository.save(record)

return record
}

Using OutboundMessageContext

If your module implements a protocol that sends messages to other agents, you will notice that Agent's MessageSender now receives the more generic OutboundMessageContext class, which replaces previous helper method createOutboundMessage.

You can take advantage of this new mechanism to associate a record to the context, in order to do specific actions to it when outbound message state changes (e.g. a MessageSendingError is thrown or AgentMessageSentEvent is emitted).

import { createOutboundMessage } from '@aries-framework/core'

const outboundMessage = createOutboundMessage(connection, message)
await this.messageSender.sendMessage(outboundMessage)

Updating module structure to register in new Plugin API

Existing modules can benefit from the new Plugin API mechanism by doing the following modifications:

  1. Rename Module class (e.g. MyModule) to API class (MyApi) and add @injectable decorator. Inject AgentContext in order to pass it to any services or repositories it might call. For instance:
import { injectable } from '@aries-framework/core'

@injectable() // <-- Add this
export class MyApi {
private messageSender: MessageSender
private myService: MyService
private connectionService: ConnectionService
private agentContext: AgentContext // <-- Add this

public constructor(
messageHandlerRegistry: MessageHandlerRegistry, // <-- use this instead of Dispatcher
messageSender: MessageSender,
myService: MyService,
connectionService: ConnectionService,
agentContext: AgentContext // <-- Add this
) {
this.messageSender = messageSender
this.myService = myService
this.connectionService = connectionService
this.agentContext = agentContext // <-- Add this
this.registerHandlers(messageHandlerRegistry) // <-- use messageHandlerRegistry instead of dispatcher
}
  1. Create a new Module class that implements Module interface and registers the dependencies and features. For instance:
import type { DependencyManager, FeatureRegistry, Module } from '@aries-framework/core'

import { Protocol } from '@aries-framework/core'

export class MyModule implements Module {
public readonly api = MyApi // the one we've just renamed from MyModule

public register(dependencyManager: DependencyManager, featureRegistry: FeatureRegistry) {
// Api
dependencyManager.registerContextScoped(MyApi)

// Services
dependencyManager.registerSingleton(MyService)

// Repositories
dependencyManager.registerSingleton(MyRepository)

// Feature Registry: don't forget to register your protocols and other features your module may add
featureRegistry.register(
new Protocol({
id: 'https://didcomm.org/my-protocol/1.0',
roles: [MyRole.Sender, MyRole.Receiver],
})
)
}

After doing this, you can add your module to agent constructor like this:

const agent = new Agent({
config: {
/* config */
},
dependencies: agentDependencies,
modules: {
myModule: new MyModule(),
/* other custom modules */
},
})

// MyModule API can be accessed in agent.modules namespace
await agent.modules.myModule.doSomething()

await agent.modules.myModule.doAnotherThing()

Breaking Storage Changes

The 0.3.0 release introduces some breaking changes to the storage format, mainly related to Proof Exchanges.

Below all breaking storage changes are explained in as much detail as possible. The update assistant provides all tools to migrate without a hassle, but it is important to know what has changed. All examples only show the keys that have changed, unrelated keys in records have been omitted.

See the Update Assistant documentation for a guide on how to use the update assistant.

There are no config parameters to be provided to the update assistant to migrate from 0.2.x to 0.3.x.

Migrate Proof Record Properties

In 0.3.0 the v1 DIDComm messages have been moved out of the proof record into separate records using the DidCommMessageRepository. The migration scripts extracts all messages (proposalMessage, requestMessage, presentationMessage) and moves them into the DidCommMessageRepository. With the addition of support for different protocol versions the proof record now stores the protocol version.

{
"proposalMessage": { ... },
"requestMessage": { ... },
"presentationMessage": { ... },
}

Migrate Connection Record properties

The recently introduced connectionType tag has been pluralized to reflect the fact that more than a single connection type can be defined for a given connection. Also, it is now available as a direct record property (e.g. can be queried and set by using connectionRecord.connectionTypes) apart from the tag for efficient search.

The migration script renames connectionType to connectionTypes in all connections, and also searches for any mediation connection and adds ConnectionType.Mediator as one of its types.

Migrate Did Record properties

The didRecord.id was previously the did itself. However to allow for connecting with self, where multiple did records are created for the same did, the id property is now an uuid and a separate did property is added.

The migration script generates a new ID for each did record and stores its did into didRecord.did property.

{
"id": "did"
}
- - + + \ No newline at end of file diff --git a/guides/updating/versions/0.3-to-0.4.html b/guides/updating/versions/0.3-to-0.4.html index 1fc44b42..1e4f237f 100644 --- a/guides/updating/versions/0.3-to-0.4.html +++ b/guides/updating/versions/0.3-to-0.4.html @@ -4,13 +4,13 @@ Migrating from AFJ 0.3.x to 0.4.x | Credo - - + +
Version: v0.4.x

Migrating from AFJ 0.3.x to 0.4.x

This document describes everything you need to know for updating AFJ 0.3.x to 0.4.x. If you're not aware of how updating in AFJ works make sure to first read the guide on Updating AFJ.

First of all, update you dependencies to the 0.4.x versions. This will also update the needed peer dependencies. Extension packages are not updated with this command. You need to update these manually, and make sure they're up to date with the latest version of AFJ.

Aries Framework JavaScript 0.4.0 is a major release that introduces a lot of new features and changes to the public API. Specifically, this release removed the dependency on the Indy SDK from the @aries-framework/core package. Agent setup is more flexible, but it also means the setup is more complex. Follow the mentioned steps in this document carefully to make the upgrade as smooth as possible.

caution

The migration guide only covers how to migrate from 0.3.x to 0.4.x while keeping the same behavior and dependencies. AFJ 0.4.0 introduced a lot of new features and adds support for Aries Askar, Indy VDR and AnonCreds RS as a replacement for the Indy SDK.

Migrating to these new components requires additional migration steps, which need to be closely followed to prevent loss of data. These can be found at the Update Indy SDK to Askar guide.

As noted in the Update Indy SDK to Askar guide, it is very important that the 0.3.x to 0.4.x update is started after migrating from the Indy SDK to Aries Askar.

caution

Multi-tenancy is not covered in the 0.3.x to 0.4.x migration guide. If you're using multi-tenancy in 0.3.x and want to migrate to 0.4.x, please open an issue on Github.

caution

The following APIs, modules and features are experimental and therefore not covered by the semver versioning in Aries Framework JavaScript. If you're using any of these features, make sure to use an exact version of AFJ (0.4.0) instead of a range (^0.4.0):

  • Implementing your own AnonCredsRegistry and AnonCreds service implementation. Using the default implementations (Indy SDK, AnonCreds RS) is fine.
  • Using the shared component libraries from @aries-framework/aries-askar, @aries-framework/indy-vdr and @aries-framework/anoncreds-rs
  • Using OpenID4VC from the @aries-framework/openid4vc-client module
  • W3C JWT Verifiable Credentials
  • Using multi-tenancy from the @aries-framework/tenants module

First install the updated dependencies. Make sure to also install the new @aries-framework/indy-sdk package, which is a wrapper around the Indy SDK and install the indy-sdk-react-native package.

yarn add @aries-framework/react-native@^0.4.0 @aries-framework/core@^0.4.0 @aries-framework/indy-sdk@^0.4.0 @aries-framework/anoncreds@^0.4.0 indy-sdk-react-native@^0.3.1

# or NPM
npn install @aries-framework/react-native@^0.4.0 @aries-framework/core@^0.4.0 @aries-framework/indy-sdk@^0.4.0 @aries-framework/anoncreds@^0.4.0 indy-sdk-react-native@^0.3.1

We also need to install types for the indy-sdk-react-native package, which we take from the @types/indy-sdk package.

yarn add --dev @types/indy-sdk-react-native@npm:@types/indy-sdk

# or NPM
npm install --save-dev @types/indy-sdk-react-native@npm:@types/indy-sdk

Breaking Code Changes

This section will list all breaking changes made to the public API of AFJ between version 0.3.x and 0.4.0.

info

If you have custom modules take into account there could be a lot more breaking changes that aren't documented here. We try to make sure that the biggest breaking changes to the internal API are also documented here, but it is possible some breaking changes are not documented here (feel free to open a pull request).

Agent Creation

With the dependency on the Indy SDK removed from the @aries-framework/core package, we now need to register the IndySdkModule to still leverage the functionality the Indy SDK provides.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
/* ... */
},
dependencies: agentDependencies,
})

Indy Network Configuration

With the Indy SDK being extracted out of core, the indyLedger configuration option is no longer available on the AgentConfig interface. Instead, the networks configuration option is now available on the IndySdkModule configuration.

In addition the connectToIndyLedgersOnStartup property has been removed in favor of a per-network connectOnStartup property that allows more fine-grained control over which networks to connect to on startup.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
connectToIndyLedgersOnStartup: true,
indyLedgers: [
{
id: 'Sovrin Mainnet',
indyNamespace: 'sovrin',
isProduction: true,
genesisPath: './genesis/sovrin-genesis.txn',
},
],
},
dependencies: agentDependencies,
})

Changes to wallet

Throughout the framework it was possible to provide a seed for deterministic key generation. Recently it was discovered that the seed property in the Indy SDK was not actually used as a seed, but directly as the private key.

Therefore a new privateKey property was added to the Wallet interface in addition to the seed property. When using the IndySdkModule this now means you can only provide the privateKey property. The seed property is no longer supported by the IndySdkModule.

The type of the seed property has also been changed to Buffer to make it more consistent with privateKey property, and remove the ambiguity of what the encoding of the string variant of the seed property should be.

Did Resolver and Registrar

The did:sov resolver and registrar were registered by default in 0.3.x of the agent. In 0.4.0 they've been moved to the @aries-framework/indy-sdk package and are thus not registered by default on the DIDs module anymore. In addition, the IndySdkSovDidRegistrar has been replaced in favor of the IndySdkIndyDidRegistrar which provides similar behavior, but leverages the new did:indy method, which removes ambiguity about which network to use. You can still use the IndySdkSovDidResolver to resolve did:sov DIDs.

Note that the IndySdkModule MUST be registered when using the Indy SDK did resolvers and registrars (see Agent Creation). The networks supported by the resolvers and registrar is determined by the networks registered on the IndySdkModule (see Indy Network Configuration).

Also note that by default the WebDidResolver, KeyDidResolver and PeerDidResolver are registered, and setting the resolvers property on the DidsModule configuration will override the default resolvers (an exception is the PeerDidResolver as it is required for creating connections, and thus will always be registered).

The same thing is true for the registrars, for which the KeyDidRegistrar and PeerDidRegistrar are registered by default. If defining the resolvers and registrars, make sure to include the default registrars if you want to keep the previous behavior.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
/* ... */
},
dependencies: agentDependencies,
})

Removal of publicDidSeed and publicDid

To make AFJ more generic, and less focused on Hyperledger Indy, and Indy dids, the publicDidSeed and publicDid properties have been removed from the agent configuration, the agent class, and the Wallet interface.

The publicDid property was used as the did to register items in the ledger module. The approach had some limitations:

  • An agent could only have a single publicDid property. This means that if you wanted to write to multiple ledgers you would have to create multiple agents
  • The property assumed only Indy ledgers would be used, and didn't take into account the possibility of other ledgers.

AFJ now provides generic APIs that can work with any ledger, and thus the publicDid property is no longer needed. Different sections of this migration guide will explain the different parts of how to use the new APIs, this section just focuses on how to replace the publicDid property.

The most common use case for the publicDid property was for registering an endorser did that can endorse (read: pay for) transactions on the ledger. This can now be done by importing the did into agent, after which it can be used by the AnonCreds module to register schemas and credential definitions, and the did registrar to register DIDs.

There's a one-time import that needs to be done to import the did into the agent using the DidsApi.import method. If you've previously used the publicDidSeed property, providing the private key is optional, as it is already stored in the wallet. Note that the privateKey is the same as the publicDidSeed, see Changes to Wallet for context). The import method will resolve the did passed to the import method (so make sure to register the IndySdkIndyDidResolver). It is recommended to import the endorser did as an did:indy did rather than a did:sov did, as the did:sov method is deprecated for creation. The did:indy did can be constructed by replacing sov with indy:<indyNamespace>, where <indyNamespace> should be replaced with a namespace as registered in the networks property of the IndySdkModule (see Indy Network Configuration).

An initial list of namespace identifiers can be found in an issue in the Indy Did Networks Repository. In the future this list will be maintained in the Indy DID Networks repository itself.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
publicDidSeed: '01eafa4de4e22ed4fc2ee522b6ce2731',
},
dependencies: agentDependencies,
})

More Granular Usage of Legacy did:sov Prefix in DIDComm Messages

AFJ 0.3.0 used the useLegacyDidSovPrefix to use the legacy did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/ as the prefix in the @type of DIDComm message instead of the new https://didcomm.org prefix. Over time it has proven that this approach leads to undesired behavior as all messages (even protocols that were defined after the new prefix was the default) would use the legacy prefix. However, due to not all implementations having support for new prefix, disabling the legacy prefixes proved to be a problem.

Therefore, in AFJ 0.4.0 the useLegacyDidSovPrefix property has been replaced with the useDidSovPrefixWhereAllowed property. This property will only use the legacy prefix for protocols that were defined before the new prefix was the default. This means that protocols that were defined after the new prefix was the default will use the new prefix independent of the value of the useDidSovPrefixWhereAllowed property. We hope this will allow us to slowly migrate away from the legacy prefix as new protocols are defined without breaking backwards compatibility.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
useLegacyDidSovPrefix: true,
},
dependencies: agentDependencies,
})

Removal of injectionContainer property from the agent

The injectionContainer property on the Agent has been replaced by the dependencyManager property. The dependencyManager property is an instance of the DependencyManager class and wraps the injection container from tsyringe.

The DependencyManager should provide all functionality that is needed, and it is recommended to not use the injection directly. If you need to use the injection container directly, you can access it via the container property on the DependencyManager instance, but please raise an issue to discuss if the functionality you need should be added to the DependencyManager class.

connection has been updated to connectionId in TransportSession

The connection property on the TransportSession has been changed to connectionId and now only holds a reference to the connection id instead of the connection record itself.

Accessing the connection on a transport session is an advanced case that is mostly only relevant when implementing a custom transport. If you are using the default transports, you should not be affected by this change.

Replacement of Ledger Module with new AnonCreds Module

The ledger module has been available in AFJ since the very beginning, and was due for a big overhaul. With the addition of the dids module a while ago we already had a replacement for the registerPublicDid and getPublicDid methods on the ledger module. The other methods of the ledger module have been replaced by the AnonCreds module.

In AFJ 0.4.0 AnonCreds credential support is not part of the core framework anymore, and needs to be manually registered on the agent. The first part is enabling the AnonCreds module, which allows to manage AnonCreds objects, interact with the ledger, and issuer, hold and verify AnonCreds credentials and is explained in this section. The second part is actually allowing AnonCreds credentials to be exchanged in the Issue Credential and Present Proof protocols, which is explained in the Manually Register AnonCreds Support in Credentials and Proofs Modules section.

There's a few important takeaways based on the code example below:

  • The anoncreds module can be accessed under the agent.modules.anoncreds property.
  • The interfaces are set up as generically as possible based on the DID Registration and DID Resolution specifications.
  • AnonCreds registries need to be manually registered so it's important to register the IndySdkAnonCredsRegistry on the AnonCredsModule.
  • It is now required to pass an issuerId when registering AnonCreds objects, according to the AnonCreds Specification. Only did:indy issuer identifiers are allowed (based on the did:indy AnonCreds Method), so the network can be inferred from the issuer identifier.

As will be explained in the Manually Register AnonCreds Support in Credentials and Proofs Modules, you can still use the unqualified issuer identifiers (best known as the Hyperledger Indy Legacy AnonCreds Method) in credential and proof exchanges.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
/* ... */
publicDidSeed: '01eafa4de4e22ed4fc2ee522b6ce2731',
indyLedgers: [
{
id: 'Sovrin Mainnet',
indyNamespace: 'sovrin',
isProduction: true,
genesisPath: './genesis/sovrin-genesis.txn',
},
],
},
dependencies: agentDependencies,
})

await agent.initialize()

const schema = await agent.ledger.registerSchema({
attributes: ['name'],
name: 'Example Schema',
version: '1.0.1',
})

const credentialDefinition = await agent.ledger.registerCredentialDefinition({
schema,
supportRevocation: false,
tag: 'default',
})

Changes to the Credentials and Proofs modules

A lot of small, and some bigger changes have been made to the Credentials, and primarily, the Proofs modules. These changes have been made to make the modules more consistent and generic so that they can be used in a wider range of use cases, removing any focus on AnonCreds and Indy credentials.

Changes to the Proofs module include:

  • getRequestedCredentialsForProofRequest has been renamed to getCredentialsForRequest
  • autoSelectCredentialsForProofRequest has been renamed to selectCredentialsForRequest
  • The config parameter for both methods has been removed and those have been replaced by proof format specific configuration options. In this case, the config.filterByNonRevocationRequirements has been added as proofFormats.indy.filterByNonRevocationRequirements (if the indy format is registered as explained in the next section). The config.filterByPresentationPreview has been removed as the presentation preview was only present in the present proof V1 protocol, and due to it's limited applicability (the holder starts with a proposal) we've decided to remove this method for now. You can still filter the credentials yourself by using the getCredentialsForRequest method.
  • Interfaces have been renamed to be more consistent with the method names. Please refer to the CredentialsApiOptions and ProofsApiOptions for the interface names that can be imported.

If you encounter any other breaking changes in the Proofs and Credentials modules, please open an issue in the Aries JavaScript Docs repository.

Changes to the AnonCreds Credential and Proof Format

With the 0.4.0 release, AFJ now provides a pluggable AnonCreds interface, and requires support AnonCreds credentials to be explicitly registered on the agent. This is also the case for registering the credential and proof formats.

In 0.3.x, the IndyProofFormatService and IndyCredentialFormatService were registered by default. In 0.4.x, these services are no longer registered by default and they should be imported from the @aries-framework/anoncreds package as LegacyIndyProofFormatService and LegacyIndyCredentialFormatService and are based on Aries RFC 0592. In a future version the new AnonCredsCredentialFormatService and AnonCredsProofFormatService will be added to the AnonCreds package, which are based on Aries RFC 0771 and allow for AnonCreds credentials to be exchanged based on the new ledger agnostic AnonCreds Specification.

In addition, the V1CredentialProtocol and V1ProofProtocol have been extracted into the @aries-framework/anoncreds package, as they only support exchange of (legacy Indy) AnonCreds credentials.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
/* ... */
indyLedgers: [
{
id: 'Sovrin Mainnet',
indyNamespace: 'sovrin',
isProduction: true,
genesisPath: './genesis/sovrin-genesis.txn',
},
],
},
dependencies: agentDependencies,
})

Removal of AnonCreds Master Secret management from Wallet

The Wallet class no longer manages the creation and deletion of AnonCreds master secrets (which are now called Link Secrets in AnonCreds module and specification). If you haven't provided a custom masterSecretId to the walletConfig before, the storage migration script should have automatically created an AnonCredsLinkSecretRecord for you based on the walletConfig.id.

For new agents however, you now need to explicitly create a link secret before you can create requests for AnonCreds credential offers. You can do this using the AnonCredsApi.createLinkSecret method.

caution

If you previously used a custom masterSecretId in the walletConfig the migration script will have created an incorrect AnonCredsLinkSecretRecord based on the walletConfig.id. You will need to manually override the link secret record with the correct linkSecretId.

You ONLY need to do this if you're not migrating from Indy SDK to Askar, as in that case the migration script will have created the correct AnonCredsLinkSecretRecord for you.

import { AnonCredsLinkSecretRepository } from '@aries-framework/anoncreds'

const linkSecretRepository = agent.dependencyManager.resolve(AnonCredsLinkSecretRepository)
const defaultLinkSecret = await linkSecretRepository.findDefault(agent.context)

if (defaultLinkSecret) {
defaultLinkSecret.linkSecretId = 'my-custom-link-secret-id'
await linkSecretRepository.update(agent.context, defaultLinkSecret)
}
import { AnonCredsModule } from '@aries-framework/anoncreds'
import { Agent } from '@aries-framework/core'
import { IndySdkAnonCredsRegistry, IndySdkModule } from '@aries-framework/indy-sdk'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

// Import from indy-sdk-react-native in React Native
import indySdk from 'indy-sdk'

const agent = new Agent({
config: {
/* ... */
},
dependencies: agentDependencies,
modules: {
indySdk: new IndySdkModule({
indySdk,
}),
anoncreds: new AnonCredsModule({
registries: [new IndySdkAnonCredsRegistry()],
}),
},
})

// the agent MUST be initialized before calling it.
await agent.wallet.initialize({
id: 'wallet-id',
key: 'wallet-key',
})

await agent.modules.anoncreds.createLinkSecret({
// first one will be set to default automatically
setAsDefault: true,

// will be generated if not provided.
// linkSecretId: 'link-secret-id'
})

Default Outbound DIDComm Content Type now application/didcomm-envelope-enc

The default outbound DIDComm content type has been changed from DidCommMimeType.V0 (application/ssi-agent-wire) to DidCommMimeType.V1 (application/didcomm-envelope-enc). V1 is the default for DIDComm V1 (as defined in Aries RFC 0044). In the past, V0 resulted in better interoperability, but since it has been the default for so long it makes sense to change the default behavior.

It is advised to use the default value as configured by the agent (V1). If you want to keep the old behavior, you can configure the didCommMimeType property in the agent configuration.

import { Agent } from '@aries-framework/core'

// Import from @aries-framework/react-native in React Native
import { agentDependencies } from '@aries-framework/node'

const agent = new Agent({
config: {
/* ... */
},
dependencies: agentDependencies,
})

Generalizing Indy properties in CredentialExchangeRecord

With AnonCreds credentials now being generalized to support multiple ledgers, the properties specific to Hyperledger Indy have now been generalized into a generic AnonCreds properties.

credentialRecordType

First off, the credentialRecordType that was used to reference stored AnonCreds credentials has been renamed from indy to anoncreds. The migration script takes care of the update to the storage, but you need to make sure to update all places that expect a credentialRecordType of indy to be defined.

CredentialExchangeRecord
{
"credentials": [
{
"credentialRecordType": "indy",
"credentialRecordId": "credential-id"
}
]
}

Metadata

Second, the metadata keys and values have been renamed to be AnonCreds specific rather than Indy specific. The CredentialMetadataKeys have been replaced by the AnonCredsCredentialMetadataKey and AnonCredsCredentialRequestMetadataKey constants which can be imported from the @aries-framework/anoncreds package.

CredentialExchangeRecord
{
"metadata": {
"_internal/indyCredential": {
"schemaId": "schema-id",
"credentialDefinitionId": "cred-def-id",
"indyRevocationRegistryId": "rev-reg-id",
"indyCredentialRevocationId": "cred-rev-id"
},
"_internal/indyRequest": {
"master_secret_blinding_data": {
"v_prime": "string",
"vr_prime": "string"
},
"master_secret_name": "string",
"nonce": "string"
}
}
}

More paths in FileSystem

The FileSystem interface has been extended to support multiple base paths. The previous interface had a single basePath property which was used for storing of files across the framework.

With the different lifetimes of different objects, the FileSystem interface has been extended to now support three different base paths:

  • cachePath - files used for caching purposes. It's okay if the files are cleared from time to time.
  • dataPath - files that are used for long-term reliable storage purposes. These files will never be cleared.
  • tempPath - files that are used for temporary storage purposes. It's okay if the files are cleared from time to time.

If you're using the framework, you don't need to worry about this change. The agent may need to download some objects again after the update. If you've made a custom implementation of the FileSystem, make sure to support all three base paths, and make sure to correctly handle the life-cycle of the files. Items stored under the dataPath should never be cleared.

caution

Indy SDK SQLite wallets do not use the paths defined by the FileSystem interface, and thus will not be influenced by this change. When upgrading to Aries Askar, the dataPath will be used as the base path for storing the SQLite wallet data.

Breaking Storage Changes

The 0.4.0 release introduces some breaking changes to the storage format.

Below all breaking storage changes are explained in as much detail as possible. The update assistant provides all tools to migrate without a hassle, but it is important to know what has changed. All examples only show the keys that have changed, unrelated keys in records have been omitted.

See the Update Assistant documentation for a guide on how to use the update assistant.

There are no configuration parameters to be provided to the update assistant to migrate from 0.3.x to 0.4.x.

TODO

- - + + \ No newline at end of file diff --git a/index.html b/index.html index affff4ea..15be8063 100644 --- a/index.html +++ b/index.html @@ -4,13 +4,13 @@ Credo | Credo - - + +

Credo

Everything you need to know about the Credo ecosystem.

Easy to Use

Credo was designed with the mindset that building self-sovereign identity solutions should be easy and straightforward.

progressive_app

Multi-platform

With support for Node.js and React Native, Credo allows you to reuse the same code base in different environments. There is no need to implement the same functionality multiple times.

Based on the latest standards

By keeping up with the latest standards, we ensure Credo is secure and interoperable.

- - + + \ No newline at end of file diff --git a/markdown-page.html b/markdown-page.html index 164e13bc..358cdeaf 100644 --- a/markdown-page.html +++ b/markdown-page.html @@ -4,13 +4,13 @@ Markdown page example | Credo - - + + - - + + \ No newline at end of file diff --git a/search-index-docs-default-0.3.json b/search-index-docs-default-0.3.json index 30587c08..0ce96fa7 100644 --- a/search-index-docs-default-0.3.json +++ b/search-index-docs-default-0.3.json @@ -1 +1 @@ -{"documents":[{"id":23,"pageTitle":"","sectionTitle":"Intro","sectionRoute":"/guides/0.3","type":"docs"},{"id":1,"pageTitle":"","sectionTitle":"Concepts","sectionRoute":"/guides/0.3/concepts","type":"docs"},{"id":2,"pageTitle":"","sectionTitle":"📄️ Agents","sectionRoute":"/guides/0.3/concepts","type":"docs"},{"id":3,"pageTitle":"","sectionTitle":"📄️ DIDs and DIDComm","sectionRoute":"/guides/0.3/concepts","type":"docs"},{"id":4,"pageTitle":"","sectionTitle":"📄️ Platform and Environment","sectionRoute":"/guides/0.3/concepts","type":"docs"},{"id":17,"pageTitle":"","sectionTitle":"Agents","sectionRoute":"/guides/0.3/concepts/agents","type":"docs"},{"id":18,"pageTitle":"","sectionTitle":"Characteristics","sectionRoute":"/guides/0.3/concepts/agents#characteristics","type":"docs"},{"id":19,"pageTitle":"","sectionTitle":"Categories","sectionRoute":"/guides/0.3/concepts/agents#categories","type":"docs"},{"id":20,"pageTitle":"","sectionTitle":"Examples","sectionRoute":"/guides/0.3/concepts/agents#examples","type":"docs"},{"id":21,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/0.3/concepts/agents#useful-resources","type":"docs"},{"id":6,"pageTitle":"","sectionTitle":"DIDs and DIDComm","sectionRoute":"/guides/0.3/concepts/did-and-didcomm","type":"docs"},{"id":7,"pageTitle":"","sectionTitle":"DIDs","sectionRoute":"/guides/0.3/concepts/did-and-didcomm#dids","type":"docs"},{"id":8,"pageTitle":"","sectionTitle":"DID Documents","sectionRoute":"/guides/0.3/concepts/did-and-didcomm#did-documents","type":"docs"},{"id":9,"pageTitle":"","sectionTitle":"DIDComm","sectionRoute":"/guides/0.3/concepts/did-and-didcomm#didcomm","type":"docs"},{"id":10,"pageTitle":"","sectionTitle":"Useful Resources","sectionRoute":"/guides/0.3/concepts/did-and-didcomm#useful-resources","type":"docs"},{"id":5,"pageTitle":"","sectionTitle":"Platform and Environment","sectionRoute":"/guides/0.3/concepts/platform-and-environment","type":"docs"},{"id":11,"pageTitle":"","sectionTitle":"The Aries JavaScript Ecosystem","sectionRoute":"/guides/0.3/ecosystem","type":"docs"},{"id":12,"pageTitle":"","sectionTitle":"Repositories","sectionRoute":"/guides/0.3/ecosystem#repositories","type":"docs"},{"id":13,"pageTitle":"","sectionTitle":"Documentation","sectionRoute":"/guides/0.3/ecosystem#documentation","type":"docs"},{"id":14,"pageTitle":"","sectionTitle":"Aries Framework JavaScript","sectionRoute":"/guides/0.3/ecosystem#aries-framework-javascript","type":"docs"},{"id":15,"pageTitle":"","sectionTitle":"Contributing in the Aries JS Ecosystem","sectionRoute":"/guides/0.3/ecosystem#contributing-in-the-aries-js-ecosystem","type":"docs"},{"id":16,"pageTitle":"","sectionTitle":"Developer Contributions","sectionRoute":"/guides/0.3/ecosystem#developer-contributions","type":"docs"},{"id":24,"pageTitle":"","sectionTitle":"Extensions","sectionRoute":"/guides/0.3/extensions","type":"docs"},{"id":25,"pageTitle":"","sectionTitle":"🗃️ REST API","sectionRoute":"/guides/0.3/extensions","type":"docs"},{"id":26,"pageTitle":"","sectionTitle":"🗃️ React Hooks","sectionRoute":"/guides/0.3/extensions","type":"docs"},{"id":27,"pageTitle":"","sectionTitle":"🗃️ Redux Store","sectionRoute":"/guides/0.3/extensions","type":"docs"},{"id":28,"pageTitle":"","sectionTitle":"🗃️ Push Notifications","sectionRoute":"/guides/0.3/extensions","type":"docs"},{"id":22,"pageTitle":"","sectionTitle":"Push Notifications","sectionRoute":"/guides/0.3/extensions/push-notifications","type":"docs"},{"id":31,"pageTitle":"","sectionTitle":"Setup","sectionRoute":"/guides/0.3/extensions/push-notifications/setup","type":"docs"},{"id":29,"pageTitle":"","sectionTitle":"React Hooks","sectionRoute":"/guides/0.3/extensions/react-hooks","type":"docs"},{"id":32,"pageTitle":"","sectionTitle":"Setup","sectionRoute":"/guides/0.3/extensions/react-hooks/setup","type":"docs"},{"id":33,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/0.3/extensions/react-hooks/setup#installation","type":"docs"},{"id":30,"pageTitle":"","sectionTitle":"Redux Store","sectionRoute":"/guides/0.3/extensions/redux-store","type":"docs"},{"id":35,"pageTitle":"","sectionTitle":"Setup","sectionRoute":"/guides/0.3/extensions/redux-store/setup","type":"docs"},{"id":36,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/0.3/extensions/redux-store/setup#installation","type":"docs"},{"id":34,"pageTitle":"","sectionTitle":"REST API","sectionRoute":"/guides/0.3/extensions/rest","type":"docs"},{"id":37,"pageTitle":"","sectionTitle":"Setup","sectionRoute":"/guides/0.3/extensions/rest/setup","type":"docs"},{"id":38,"pageTitle":"","sectionTitle":"Quick Setup","sectionRoute":"/guides/0.3/extensions/rest/setup#quick-setup","type":"docs"},{"id":39,"pageTitle":"","sectionTitle":"Directly on computer","sectionRoute":"/guides/0.3/extensions/rest/setup#directly-on-computer","type":"docs"},{"id":40,"pageTitle":"","sectionTitle":"Configuration","sectionRoute":"/guides/0.3/extensions/rest/setup#configuration","type":"docs"},{"id":41,"pageTitle":"","sectionTitle":"Getting started","sectionRoute":"/guides/0.3/getting-started","type":"docs"},{"id":42,"pageTitle":"","sectionTitle":"🗃️ Installation","sectionRoute":"/guides/0.3/getting-started","type":"docs"},{"id":43,"pageTitle":"","sectionTitle":"📄️ Setup","sectionRoute":"/guides/0.3/getting-started","type":"docs"},{"id":44,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/0.3/getting-started/installation","type":"docs"},{"id":45,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs","type":"docs"},{"id":46,"pageTitle":"","sectionTitle":"Apple (Arm)","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm","type":"docs"},{"id":47,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#nodejs","type":"docs"},{"id":48,"pageTitle":"","sectionTitle":"npm","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#npm","type":"docs"},{"id":49,"pageTitle":"","sectionTitle":"yarn","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#yarn","type":"docs"},{"id":50,"pageTitle":"","sectionTitle":"Libsodium","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#libsodium","type":"docs"},{"id":51,"pageTitle":"","sectionTitle":"Libzmq","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#libzmq","type":"docs"},{"id":52,"pageTitle":"","sectionTitle":"Indy-sdk","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#indy-sdk","type":"docs"},{"id":53,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#confirm-installation","type":"docs"},{"id":54,"pageTitle":"","sectionTitle":"Apple (Intel)","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel","type":"docs"},{"id":55,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel","type":"docs"},{"id":56,"pageTitle":"","sectionTitle":"npm","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel#npm","type":"docs"},{"id":57,"pageTitle":"","sectionTitle":"yarn","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel#yarn","type":"docs"},{"id":58,"pageTitle":"","sectionTitle":"Indy-sdk","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel#indy-sdk","type":"docs"},{"id":59,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel#confirm-installation","type":"docs"},{"id":70,"pageTitle":"","sectionTitle":"Linux","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux","type":"docs"},{"id":71,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#nodejs","type":"docs"},{"id":72,"pageTitle":"","sectionTitle":"npm","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#npm","type":"docs"},{"id":73,"pageTitle":"","sectionTitle":"yarn","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#yarn","type":"docs"},{"id":74,"pageTitle":"","sectionTitle":"Libsodium","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#libsodium","type":"docs"},{"id":75,"pageTitle":"","sectionTitle":"Libzmq","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#libzmq","type":"docs"},{"id":76,"pageTitle":"","sectionTitle":"Indy-sdk","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#indy-sdk","type":"docs"},{"id":77,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#confirm-installation","type":"docs"},{"id":60,"pageTitle":"","sectionTitle":"Windows","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows","type":"docs"},{"id":61,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#nodejs","type":"docs"},{"id":62,"pageTitle":"","sectionTitle":"npm","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#npm","type":"docs"},{"id":63,"pageTitle":"","sectionTitle":"yarn","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#yarn","type":"docs"},{"id":64,"pageTitle":"","sectionTitle":"Indy-sdk","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#indy-sdk","type":"docs"},{"id":65,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#confirm-installation","type":"docs"},{"id":66,"pageTitle":"","sectionTitle":"React Native","sectionRoute":"/guides/0.3/getting-started/installation/react-native","type":"docs"},{"id":67,"pageTitle":"","sectionTitle":"Known Errors","sectionRoute":"/guides/0.3/getting-started/installation/react-native#known-errors","type":"docs"},{"id":68,"pageTitle":"","sectionTitle":"Add setup of external storage permissions (Android)","sectionRoute":"/guides/0.3/getting-started/installation/react-native#add-setup-of-external-storage-permissions-android","type":"docs"},{"id":79,"pageTitle":"","sectionTitle":"Android","sectionRoute":"/guides/0.3/getting-started/installation/react-native/android","type":"docs"},{"id":80,"pageTitle":"","sectionTitle":"Set the minimum SDK version","sectionRoute":"/guides/0.3/getting-started/installation/react-native/android#set-the-minimum-sdk-version","type":"docs"},{"id":81,"pageTitle":"","sectionTitle":"Add the Sovrin maven repository","sectionRoute":"/guides/0.3/getting-started/installation/react-native/android#add-the-sovrin-maven-repository","type":"docs"},{"id":82,"pageTitle":"","sectionTitle":"Adding the JNA library dependency","sectionRoute":"/guides/0.3/getting-started/installation/react-native/android#adding-the-jna-library-dependency","type":"docs"},{"id":83,"pageTitle":"","sectionTitle":"Adding the Android indy-sdk libaries","sectionRoute":"/guides/0.3/getting-started/installation/react-native/android#adding-the-android-indy-sdk-libaries","type":"docs"},{"id":78,"pageTitle":"","sectionTitle":"iOS","sectionRoute":"/guides/0.3/getting-started/installation/react-native/ios","type":"docs"},{"id":69,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/0.3/getting-started/prerequisites","type":"docs"},{"id":89,"pageTitle":"","sectionTitle":"Setup","sectionRoute":"/guides/0.3/getting-started/set-up","type":"docs"},{"id":90,"pageTitle":"","sectionTitle":"Installing the required dependencies","sectionRoute":"/guides/0.3/getting-started/set-up#installing-the-required-dependencies","type":"docs"},{"id":91,"pageTitle":"","sectionTitle":"Additional setup","sectionRoute":"/guides/0.3/getting-started/set-up#additional-setup","type":"docs"},{"id":92,"pageTitle":"","sectionTitle":"Setting up the agent","sectionRoute":"/guides/0.3/getting-started/set-up#setting-up-the-agent","type":"docs"},{"id":93,"pageTitle":"","sectionTitle":"Setting up the transports","sectionRoute":"/guides/0.3/getting-started/set-up#setting-up-the-transports","type":"docs"},{"id":94,"pageTitle":"","sectionTitle":"Initializing the agent","sectionRoute":"/guides/0.3/getting-started/set-up#initializing-the-agent","type":"docs"},{"id":95,"pageTitle":"","sectionTitle":"Full code snippet","sectionRoute":"/guides/0.3/getting-started/set-up#full-code-snippet","type":"docs"},{"id":96,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/0.3/getting-started/set-up#useful-resources","type":"docs"},{"id":84,"pageTitle":"","sectionTitle":"Tutorials","sectionRoute":"/guides/0.3/tutorials","type":"docs"},{"id":85,"pageTitle":"","sectionTitle":"🗃️ Agent Config","sectionRoute":"/guides/0.3/tutorials","type":"docs"},{"id":86,"pageTitle":"","sectionTitle":"📄️ Create a connection","sectionRoute":"/guides/0.3/tutorials","type":"docs"},{"id":87,"pageTitle":"","sectionTitle":"📄️ Issue a credential","sectionRoute":"/guides/0.3/tutorials","type":"docs"},{"id":88,"pageTitle":"","sectionTitle":"🗃️ Postgres Database","sectionRoute":"/guides/0.3/tutorials","type":"docs"},{"id":109,"pageTitle":"","sectionTitle":"Agent Config","sectionRoute":"/guides/0.3/tutorials/agent-config","type":"docs"},{"id":110,"pageTitle":"","sectionTitle":"label*","sectionRoute":"/guides/0.3/tutorials/agent-config#label","type":"docs"},{"id":111,"pageTitle":"","sectionTitle":"walletConfig","sectionRoute":"/guides/0.3/tutorials/agent-config#walletconfig","type":"docs"},{"id":112,"pageTitle":"","sectionTitle":"walletConfig.id*","sectionRoute":"/guides/0.3/tutorials/agent-config#walletconfigid","type":"docs"},{"id":113,"pageTitle":"","sectionTitle":"walletConfig.key*","sectionRoute":"/guides/0.3/tutorials/agent-config#walletconfigkey","type":"docs"},{"id":114,"pageTitle":"","sectionTitle":"walletConfig.keyDerivationMethod","sectionRoute":"/guides/0.3/tutorials/agent-config#walletconfigkeyderivationmethod","type":"docs"},{"id":115,"pageTitle":"","sectionTitle":"walletConfig.storage","sectionRoute":"/guides/0.3/tutorials/agent-config#walletconfigstorage","type":"docs"},{"id":116,"pageTitle":"","sectionTitle":"endpoints","sectionRoute":"/guides/0.3/tutorials/agent-config#endpoints","type":"docs"},{"id":117,"pageTitle":"","sectionTitle":"publicDidSeed","sectionRoute":"/guides/0.3/tutorials/agent-config#publicdidseed","type":"docs"},{"id":118,"pageTitle":"","sectionTitle":"indyLedgers","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgers","type":"docs"},{"id":119,"pageTitle":"","sectionTitle":"indyLedgers.id*","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgersid","type":"docs"},{"id":120,"pageTitle":"","sectionTitle":"indyLedgers.indyNamespace","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgersindynamespace","type":"docs"},{"id":121,"pageTitle":"","sectionTitle":"indyLedgers.isProduction*","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgersisproduction","type":"docs"},{"id":122,"pageTitle":"","sectionTitle":"indyLedgers.genesisPath","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgersgenesispath","type":"docs"},{"id":123,"pageTitle":"","sectionTitle":"indyLedgers.genesisTransactions","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgersgenesistransactions","type":"docs"},{"id":124,"pageTitle":"","sectionTitle":"indyLedgers.transactionAuthorAgreement","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgerstransactionauthoragreement","type":"docs"},{"id":125,"pageTitle":"","sectionTitle":"indyLedgers.transactionAuthorAgreement.version","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgerstransactionauthoragreementversion","type":"docs"},{"id":126,"pageTitle":"","sectionTitle":"indyLedgers.transactionAuthorAgreement.acceptanceMechanism","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgerstransactionauthoragreementacceptancemechanism","type":"docs"},{"id":127,"pageTitle":"","sectionTitle":"connectToIndyLedgerOnStartup","sectionRoute":"/guides/0.3/tutorials/agent-config#connecttoindyledgeronstartup","type":"docs"},{"id":128,"pageTitle":"","sectionTitle":"logger","sectionRoute":"/guides/0.3/tutorials/agent-config#logger","type":"docs"},{"id":129,"pageTitle":"","sectionTitle":"didCommMimeType","sectionRoute":"/guides/0.3/tutorials/agent-config#didcommmimetype","type":"docs"},{"id":130,"pageTitle":"","sectionTitle":"autoAcceptCredentials","sectionRoute":"/guides/0.3/tutorials/agent-config#autoacceptcredentials","type":"docs"},{"id":131,"pageTitle":"","sectionTitle":"autoAcceptProofs","sectionRoute":"/guides/0.3/tutorials/agent-config#autoacceptproofs","type":"docs"},{"id":132,"pageTitle":"","sectionTitle":"autoAcceptMediationRequests","sectionRoute":"/guides/0.3/tutorials/agent-config#autoacceptmediationrequests","type":"docs"},{"id":133,"pageTitle":"","sectionTitle":"mediatorConnectionsInvite","sectionRoute":"/guides/0.3/tutorials/agent-config#mediatorconnectionsinvite","type":"docs"},{"id":134,"pageTitle":"","sectionTitle":"defaultMediatorId","sectionRoute":"/guides/0.3/tutorials/agent-config#defaultmediatorid","type":"docs"},{"id":135,"pageTitle":"","sectionTitle":"clearDefaultMediator","sectionRoute":"/guides/0.3/tutorials/agent-config#cleardefaultmediator","type":"docs"},{"id":136,"pageTitle":"","sectionTitle":"mediatorPollingInterval","sectionRoute":"/guides/0.3/tutorials/agent-config#mediatorpollinginterval","type":"docs"},{"id":137,"pageTitle":"","sectionTitle":"mediatorPickupStratery","sectionRoute":"/guides/0.3/tutorials/agent-config#mediatorpickupstratery","type":"docs"},{"id":138,"pageTitle":"","sectionTitle":"maximumMessagePickup (subject to change)","sectionRoute":"/guides/0.3/tutorials/agent-config#maximummessagepickup-subject-to-change","type":"docs"},{"id":139,"pageTitle":"","sectionTitle":"useLegacyDidSovPrefix","sectionRoute":"/guides/0.3/tutorials/agent-config#uselegacydidsovprefix","type":"docs"},{"id":140,"pageTitle":"","sectionTitle":"connectionImageUrl","sectionRoute":"/guides/0.3/tutorials/agent-config#connectionimageurl","type":"docs"},{"id":141,"pageTitle":"","sectionTitle":"autoUpdateStorageOnStartup","sectionRoute":"/guides/0.3/tutorials/agent-config#autoupdatestorageonstartup","type":"docs"},{"id":97,"pageTitle":"","sectionTitle":"Logging","sectionRoute":"/guides/0.3/tutorials/agent-config/logging","type":"docs"},{"id":98,"pageTitle":"","sectionTitle":"Using the Default ConsoleLogger","sectionRoute":"/guides/0.3/tutorials/agent-config/logging#using-the-default-consolelogger","type":"docs"},{"id":99,"pageTitle":"","sectionTitle":"Creating your own Logger","sectionRoute":"/guides/0.3/tutorials/agent-config/logging#creating-your-own-logger","type":"docs"},{"id":100,"pageTitle":"","sectionTitle":"Indy Logs","sectionRoute":"/guides/0.3/tutorials/agent-config/logging#indy-logs","type":"docs"},{"id":152,"pageTitle":"","sectionTitle":"Create a connection","sectionRoute":"/guides/0.3/tutorials/create-a-connection","type":"docs"},{"id":153,"pageTitle":"","sectionTitle":"1. Setting up the agents","sectionRoute":"/guides/0.3/tutorials/create-a-connection#1-setting-up-the-agents","type":"docs"},{"id":154,"pageTitle":"","sectionTitle":"3. Receiving the invitation","sectionRoute":"/guides/0.3/tutorials/create-a-connection#3-receiving-the-invitation","type":"docs"},{"id":155,"pageTitle":"","sectionTitle":"4. (additional) listen to incoming connection responses","sectionRoute":"/guides/0.3/tutorials/create-a-connection#4-additional-listen-to-incoming-connection-responses","type":"docs"},{"id":156,"pageTitle":"","sectionTitle":"5. Full code snippets","sectionRoute":"/guides/0.3/tutorials/create-a-connection#5-full-code-snippets","type":"docs"},{"id":157,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/0.3/tutorials/create-a-connection#useful-resources","type":"docs"},{"id":158,"pageTitle":"","sectionTitle":"Issue a credential","sectionRoute":"/guides/0.3/tutorials/issue-a-credential","type":"docs"},{"id":159,"pageTitle":"","sectionTitle":"1. Setting up the agents","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#1-setting-up-the-agents","type":"docs"},{"id":160,"pageTitle":"","sectionTitle":"2. Registering the schema and credential definition","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#2-registering-the-schema-and-credential-definition","type":"docs"},{"id":161,"pageTitle":"","sectionTitle":"3. Listening for incoming credentials","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#3-listening-for-incoming-credentials","type":"docs"},{"id":162,"pageTitle":"","sectionTitle":"4. Issuing a credential","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#4-issuing-a-credential","type":"docs"},{"id":163,"pageTitle":"","sectionTitle":"5. Full code snippets","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#5-full-code-snippets","type":"docs"},{"id":164,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#useful-resources","type":"docs"},{"id":165,"pageTitle":"","sectionTitle":"Side notes","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#side-notes","type":"docs"},{"id":142,"pageTitle":"","sectionTitle":"Using PostgreSQL as Database in Node.js","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs","type":"docs"},{"id":143,"pageTitle":"","sectionTitle":"Installation of the Postgres Plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs#installation-of-the-postgres-plugin","type":"docs"},{"id":144,"pageTitle":"","sectionTitle":"Using the Postgres Plugin in AFJ","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs#using-the-postgres-plugin-in-afj","type":"docs"},{"id":101,"pageTitle":"","sectionTitle":"Postgres Setup for Linux","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux","type":"docs"},{"id":102,"pageTitle":"","sectionTitle":"Prerequisites","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux#prerequisites","type":"docs"},{"id":103,"pageTitle":"","sectionTitle":"Step 1: installing the dependencies using apt","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux#step-1-installing-the-dependencies-using-apt","type":"docs"},{"id":104,"pageTitle":"","sectionTitle":"Debian based (Ubuntu, Mint, Kali, Deepin, etc.)","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux#debian-based-ubuntu-mint-kali-deepin-etc","type":"docs"},{"id":105,"pageTitle":"","sectionTitle":"Step 2: Build Postgres plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux#step-2-build-postgres-plugin","type":"docs"},{"id":106,"pageTitle":"","sectionTitle":"Step 2.1: Cloning the indy-sdk","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux#step-21-cloning-the-indy-sdk","type":"docs"},{"id":107,"pageTitle":"","sectionTitle":"Step 2.2: Building Postgres plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux#step-22-building-postgres-plugin","type":"docs"},{"id":108,"pageTitle":"","sectionTitle":"Step 2.3: Moving the file","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux#step-23-moving-the-file","type":"docs"},{"id":175,"pageTitle":"","sectionTitle":"Postgres Setup for macOS","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos","type":"docs"},{"id":176,"pageTitle":"","sectionTitle":"Prerequisites","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos#prerequisites","type":"docs"},{"id":177,"pageTitle":"","sectionTitle":"Step 1: installing the dependencies using brew","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos#step-1-installing-the-dependencies-using-brew","type":"docs"},{"id":178,"pageTitle":"","sectionTitle":"Step 2: Build Postgres plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos#step-2-build-postgres-plugin","type":"docs"},{"id":179,"pageTitle":"","sectionTitle":"Step 2.1: Cloning the indy-sdk","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos#step-21-cloning-the-indy-sdk","type":"docs"},{"id":180,"pageTitle":"","sectionTitle":"Step 2.2: Building Postgres plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos#step-22-building-postgres-plugin","type":"docs"},{"id":181,"pageTitle":"","sectionTitle":"Step 2.3: Moving the file","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos#step-23-moving-the-file","type":"docs"},{"id":145,"pageTitle":"","sectionTitle":"Postgres Setup for windows","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows","type":"docs"},{"id":146,"pageTitle":"","sectionTitle":"Build Environment Prerequisites","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#build-environment-prerequisites","type":"docs"},{"id":147,"pageTitle":"","sectionTitle":"Step 1: Getting dependencies","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#step-1-getting-dependencies","type":"docs"},{"id":148,"pageTitle":"","sectionTitle":"Step 2: Build Postgres plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#step-2-build-postgres-plugin","type":"docs"},{"id":149,"pageTitle":"","sectionTitle":"Step 2.1: Cloning the indy-sdk","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#step-21-cloning-the-indy-sdk","type":"docs"},{"id":150,"pageTitle":"","sectionTitle":"Step 2.2: Building Postgres plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#step-22-building-postgres-plugin","type":"docs"},{"id":151,"pageTitle":"","sectionTitle":"Step 2.3: Setting the file to PATH","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#step-23-setting-the-file-to-path","type":"docs"},{"id":166,"pageTitle":"","sectionTitle":"Updating AFJ","sectionRoute":"/guides/0.3/updating","type":"docs"},{"id":167,"pageTitle":"","sectionTitle":"📄️ Update Assistant","sectionRoute":"/guides/0.3/updating","type":"docs"},{"id":168,"pageTitle":"","sectionTitle":"📄️ Migrating from AFJ 0.1.0 to 0.2.x","sectionRoute":"/guides/0.3/updating","type":"docs"},{"id":169,"pageTitle":"","sectionTitle":"📄️ Migrating from AFJ 0.2.x to 0.3.x","sectionRoute":"/guides/0.3/updating","type":"docs"},{"id":170,"pageTitle":"","sectionTitle":"Versioning","sectionRoute":"/guides/0.3/updating#versioning","type":"docs"},{"id":171,"pageTitle":"","sectionTitle":"Types of breaking changes","sectionRoute":"/guides/0.3/updating#types-of-breaking-changes","type":"docs"},{"id":172,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/0.3/updating#breaking-code-changes","type":"docs"},{"id":173,"pageTitle":"","sectionTitle":"Breaking Storage Changes","sectionRoute":"/guides/0.3/updating#breaking-storage-changes","type":"docs"},{"id":174,"pageTitle":"","sectionTitle":"Migration Guides","sectionRoute":"/guides/0.3/updating#migration-guides","type":"docs"},{"id":182,"pageTitle":"","sectionTitle":"Update Assistant","sectionRoute":"/guides/0.3/updating/update-assistant","type":"docs"},{"id":183,"pageTitle":"","sectionTitle":"Update Strategies","sectionRoute":"/guides/0.3/updating/update-assistant#update-strategies","type":"docs"},{"id":184,"pageTitle":"","sectionTitle":"Manually instantiating the update assistant on agent startup","sectionRoute":"/guides/0.3/updating/update-assistant#manually-instantiating-the-update-assistant-on-agent-startup","type":"docs"},{"id":185,"pageTitle":"","sectionTitle":"Storing the agent storage version outside of the agent storage","sectionRoute":"/guides/0.3/updating/update-assistant#storing-the-agent-storage-version-outside-of-the-agent-storage","type":"docs"},{"id":186,"pageTitle":"","sectionTitle":"Automatically update on agent startup","sectionRoute":"/guides/0.3/updating/update-assistant#automatically-update-on-agent-startup","type":"docs"},{"id":187,"pageTitle":"","sectionTitle":"Backups","sectionRoute":"/guides/0.3/updating/update-assistant#backups","type":"docs"},{"id":189,"pageTitle":"","sectionTitle":"Migrating from AFJ 0.1.0 to 0.2.x","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2","type":"docs"},{"id":190,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#breaking-code-changes","type":"docs"},{"id":191,"pageTitle":"","sectionTitle":"Credentials Module","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#credentials-module","type":"docs"},{"id":192,"pageTitle":"","sectionTitle":"Connections Module","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#connections-module","type":"docs"},{"id":193,"pageTitle":"","sectionTitle":"Updating Custom Messages to the New Message Type Objects","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#updating-custom-messages-to-the-new-message-type-objects","type":"docs"},{"id":194,"pageTitle":"","sectionTitle":"Breaking Storage Changes","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#breaking-storage-changes","type":"docs"},{"id":195,"pageTitle":"","sectionTitle":"Credential Metadata","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#credential-metadata","type":"docs"},{"id":196,"pageTitle":"","sectionTitle":"Migrate Credential Record Properties","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#migrate-credential-record-properties","type":"docs"},{"id":197,"pageTitle":"","sectionTitle":"Mediation Record Role","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#mediation-record-role","type":"docs"},{"id":198,"pageTitle":"","sectionTitle":"Extracting Did Documents to Did Repository","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#extracting-did-documents-to-did-repository","type":"docs"},{"id":199,"pageTitle":"","sectionTitle":"Migrating to the Out of Band Record","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#migrating-to-the-out-of-band-record","type":"docs"},{"id":200,"pageTitle":"","sectionTitle":"Unifying Connection States and Roles","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#unifying-connection-states-and-roles","type":"docs"},{"id":216,"pageTitle":"","sectionTitle":"Migrating from AFJ 0.2.x to 0.3.x","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3","type":"docs"},{"id":217,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#breaking-code-changes","type":"docs"},{"id":218,"pageTitle":"","sectionTitle":"Agent creation","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#agent-creation","type":"docs"},{"id":219,"pageTitle":"","sectionTitle":"did:key usage in protocols","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#didkey-usage-in-protocols","type":"docs"},{"id":220,"pageTitle":"","sectionTitle":"Modules extracted from the core","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#modules-extracted-from-the-core","type":"docs"},{"id":221,"pageTitle":"","sectionTitle":"Discover Features Module","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#discover-features-module","type":"docs"},{"id":222,"pageTitle":"","sectionTitle":"Ledger Module","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#ledger-module","type":"docs"},{"id":223,"pageTitle":"","sectionTitle":"Proofs Module","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#proofs-module","type":"docs"},{"id":224,"pageTitle":"","sectionTitle":"Out Of Band Proofs and Credentials","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#out-of-band-proofs-and-credentials","type":"docs"},{"id":225,"pageTitle":"","sectionTitle":"Updating Custom Modules to the new Plugin API","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#updating-custom-modules-to-the-new-plugin-api","type":"docs"},{"id":226,"pageTitle":"","sectionTitle":"Breaking Storage Changes","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#breaking-storage-changes","type":"docs"},{"id":227,"pageTitle":"","sectionTitle":"Migrate Proof Record Properties","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#migrate-proof-record-properties","type":"docs"},{"id":228,"pageTitle":"","sectionTitle":"Migrate Connection Record properties","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#migrate-connection-record-properties","type":"docs"},{"id":229,"pageTitle":"","sectionTitle":"Migrate Did Record properties","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#migrate-did-record-properties","type":"docs"}],"index":{"version":"2.3.9","fields":["title","content","sidebarParentCategories"],"fieldVectors":[["title/23",[0,6.518]],["content/23",[1,2.968,2,1.605,3,2.025,4,5.09,5,2.311,6,1.498,7,2.663,8,2.001,9,2.461,10,2.663,11,2.005,12,2.968,13,2.663,14,2.968,15,4.667,16,2.968,17,1.375,18,1.93,19,1.533,20,3.287,21,4.667,22,2.304,23,2.968,24,3.287,25,2.574,26,2.461,27,2.968,28,2.968,29,3.399,30,2.122,31,0.648,32,2.162,33,3.505,34,1.521,35,1.864,36,4.782,37,2.311,38,4.257,39,2.663,40,2.091,41,1.571,42,4.782,43,1.498,44,2.461,45,2.968,46,2.311,47,2.311,48,2.968,49,2.663,50,1.375,51,2.663,52,2.663,53,1.228,54,2.968,55,0.542,56,2.968,57,2.968,58,0.938,59,1.653,60,4.667,61,4.667,62,2.119,63,2.461,64,2.968,65,2.461,66,1.611,67,2.533,68,1.611,69,1.533,70,0.996,71,1.042,72,2.461,73,1.804,74,2.968,75,2.663,76,2.968,77,1.804,78,2.005,79,2.663,80,2.663,81,2.005,82,2.968,83,4.186,84,1.7,85,2.968,86,1.611,87,0.549,88,2.663,89,1.571,90,2.461,91,1.7,92,2.005,93,1.533,94,2.968,95,1.533,96,1.092,97,2.968,98,2.968,99,2.968,100,2.968,101,2.311,102,0.682]],["sidebarParentCategories/23",[]],["title/1",[86,3.537]],["content/1",[2,1.87,3,2.732,8,2.12,22,1.975,24,3.482,25,2.464,29,2.913,31,1.079,33,3.004,55,1.421,58,1.266,66,2.682,67,2.682,68,2.682,69,3.515,70,2.283,71,2.389,84,2.83,86,3.692,103,2.29,104,3.482,105,3.104,106,3.79,107,4.943,108,2.754,109,4.943,110,3.339,111,2.754,112,2.554,113,4.597,114,2.83,115,3.03,116,5.297,117,2.495,118,3.104,119,3.004]],["sidebarParentCategories/1",[]],["title/2",[31,1.162,55,0.973]],["content/2",[2,1.949,8,3.385,111,4.397,112,4.078]],["sidebarParentCategories/2",[]],["title/3",[55,0.822,113,3.042,114,2.579]],["content/3",[113,5.6]],["sidebarParentCategories/3",[]],["title/4",[55,0.822,66,2.444,115,2.005]],["content/4",[2,1.701,3,2.808,22,2.521,24,4.446,25,2.896,29,3.72,58,1.301,67,3.425,68,3.425,69,4.132,70,2.684,71,2.808,106,3.516,115,2.811,116,6.226,117,3.186,118,3.963,119,3.836]],["sidebarParentCategories/4",[]],["title/17",[31,1.422]],["content/17",[2,1.972,8,3.057,25,2.581,31,1.555,111,3.971,112,3.682,120,4.815,121,4.332,122,4.937,123,3.995]],["sidebarParentCategories/17",[86,3.267]],["title/18",[124,5.846]],["content/18",[2,1.697,3,1.55,11,2.983,29,2.602,30,1.624,31,1.84,34,1.439,46,3.437,58,0.718,106,2.459,112,3.248,114,3.6,121,2.683,124,3.96,125,3.661,126,3.96,127,5.639,128,4.415,129,6.287,130,4.247,131,3.96,132,4.894,133,4.415,134,3.437,135,4.415,136,4.415,137,3.437,138,3.437,139,6.287,140,2.045,141,4.894,142,4.415,143,4.415,144,3.661,145,2.973,146,1.705,147,4.428,148,2.459,149,2.855,150,1.624,151,2.396,152,1.893,153,2.772,154,3.96,155,3.437,156,3.437,157,3.661,158,4.415,159,2.871,160,3.96,161,4.415,162,3.437,163,2.683]],["sidebarParentCategories/18",[86,3.267]],["title/19",[164,5.846]],["content/19",[2,1.723,3,1.876,31,2.134,34,1.741,35,4.504,106,2.976,164,7.264,165,4.159,166,7.264,167,3.943,168,4.395,169,6.435,170,4.504,171,2.827,172,2.475,173,3.247,174,4.792,175,5.342,176,5.342,177,5.342,178,6.435,179,3.247,180,3.706,181,5.342]],["sidebarParentCategories/19",[86,3.267]],["title/20",[96,2.398]],["content/20",[2,1.39,11,4.415,30,1.716,31,1.426,33,2.835,34,1.52,44,3.867,53,1.929,55,0.852,58,1.063,70,1.565,71,1.638,96,2.404,108,2.598,131,4.184,132,3.631,134,3.631,137,3.631,138,3.631,146,1.802,150,1.716,151,2.531,152,2,153,2.929,155,3.631,162,3.631,168,4.094,172,3.027,180,2.41,182,2.671,183,3.867,184,4.664,185,4.664,186,4.664,187,4.664,188,4.664,189,2.749,190,2.749,191,5.316,192,4.664,193,4.664,194,4.664,195,6.535,196,4.184,197,3.867,198,3.033,199,4.664,200,2,201,4.184,202,2.929,203,4.184]],["sidebarParentCategories/20",[86,3.267]],["title/21",[40,3.752,58,0.866]],["content/21",[2,1.883,3,2.615,25,2.698,31,1.625,42,6.177,102,1.711,204,5.247,205,6.682,206,2.054]],["sidebarParentCategories/21",[86,3.267]],["title/6",[113,3.598,114,3.05]],["content/6",[]],["sidebarParentCategories/6",[86,3.267]],["title/7",[113,4.403]],["content/7",[11,5.503,29,3.829,43,3.28,113,5.503,144,5.388,153,4.08,196,5.828,203,5.828,207,5.828,208,8.145,209,6.012,210,1.972,211,4.389,212,4.577,213,5.828,214,6.497,215,6.497,216,5.388,217,6.497]],["sidebarParentCategories/7",[86,3.267]],["title/8",[32,3.019]],["content/8",[20,4.404,32,3.683,59,4.428,140,2.896,148,3.483,151,3.392,152,2.681,190,3.685,191,4.066,218,4.614,219,4.867,220,4.066,221,4.614,222,5.184,223,5.608,224,3.685,225,3.392,226,4.404,227,5.6,228,4.552,229,4.404,230,4.066,231,5.184]],["sidebarParentCategories/8",[86,3.267]],["title/9",[114,3.732]],["content/9",[2,1.101,3,1.817,8,3.011,46,4.029,47,4.029,49,4.642,103,2.397,104,3.645,105,3.25,106,2.883,114,4.562,121,3.145,146,1.999,148,2.883,151,3.81,152,3.011,153,3.25,155,6.204,182,2.963,227,3.645,228,2.963,232,3.25,233,4.029,234,5.175,235,3.145,236,5.175,237,3.05,238,2.305,239,3.496,240,4.642,241,3.366,242,4.291,243,3.25,244,5.175,245,3.82,246,5.175,247,3.145,248,3.366,249,3.496,250,4.642,251,4.029,252,1.966]],["sidebarParentCategories/9",[86,3.267]],["title/10",[40,3.752,58,0.866]],["content/10",[114,4.63,253,8.333]],["sidebarParentCategories/10",[86,3.267]],["title/5",[66,2.89,115,2.372]],["content/5",[2,1.701,3,2.808,22,2.521,24,4.446,25,2.896,29,3.72,58,1.301,67,3.425,68,3.425,69,4.132,70,2.684,71,2.808,106,3.516,115,2.811,116,6.226,117,3.186,118,3.963,119,3.836]],["sidebarParentCategories/5",[86,3.267]],["title/11",[2,0.958,3,1.581,106,2.509]],["content/11",[2,1.469,3,2.424,59,3.846,92,4.664,93,3.567,103,3.198,106,3.846,159,4.49,202,4.335,254,3.953,255,6.905,256,8.458,257,6.905,258,5.375,259,4.864,260,4.335]],["sidebarParentCategories/11",[]],["title/12",[93,3.367]],["content/12",[2,1.998,3,3.152,25,2.987,31,1.446,70,2.224,71,2.327,93,3.424,125,5.496,168,3.597,261,3.795,262,6.628,263,3.597,264,4.028,265,3.07,266,5.16]],["sidebarParentCategories/12",[]],["title/13",[32,3.019]],["content/13",[2,1.954,3,2.989,25,3.083,31,1.522,32,3.232,38,5.15,70,2.342,71,2.45,168,3.786,238,3.107,265,3.232,266,5.432]],["sidebarParentCategories/13",[]],["title/14",[2,0.958,3,1.581,25,1.631]],["content/14",[2,1.799,3,2.97,25,2.5,43,3.485,92,4.664,106,3.846,146,2.667,152,2.961,163,4.196,200,2.961,252,2.623,267,2.838,268,5.096,269,5.096]],["sidebarParentCategories/14",[]],["title/15",[2,0.83,106,2.173,270,3.235,271,3.235]],["content/15",[2,1.918,8,2.871,25,2.425,67,3.633,166,6.005,261,3.833,266,5.212,271,5.551,272,5.212,273,6.695,274,6.695,275,9.428,276,6.695,277,4.716,278,6.695]],["sidebarParentCategories/15",[]],["title/16",[67,2.89,270,4.417]],["content/16",[2,1.247,43,2.96,67,3.182,75,5.26,91,4.368,149,2.663,232,3.682,266,4.565,267,2.56,270,7.031,272,4.565,279,5.153,280,7.628,281,7.628,282,5.26,283,5.864,284,2.059,285,5.864,286,5.864,287,5.864,288,4.862,289,5.864,290,4.862,291,5.864,292,4.328,293,5.864,294,4.13]],["sidebarParentCategories/16",[]],["title/24",[265,3.019]],["content/24",[2,1.917,3,2.776,7,3.375,25,2.864,31,1.221,53,2.314,55,1.351,58,0.612,70,2.242,79,3.375,91,2.154,93,2.89,96,1.384,112,1.943,122,3.825,123,2.592,154,3.375,191,2.446,228,2.154,247,2.286,254,2.154,260,2.362,261,2.154,265,3.427,267,1.878,268,2.777,295,3.119,296,3.4,297,3.375,298,2.777,299,3.762,300,3.762,301,3.762,302,2.646,303,4.811,304,5.992,305,1.341,306,3.119,307,3.375,308,3.639,309,3.119,310,2.154,311,2.777,312,3.375,313,4.706,314,3.941,315,1.708,316,3.498,317,4.014]],["sidebarParentCategories/24",[]],["title/25",[55,0.822,122,2.579,123,2.086]],["content/25",[316,3.871,317,4.443]],["sidebarParentCategories/25",[]],["title/26",[55,0.822,70,1.511,303,2.929]],["content/26",[316,3.871,317,4.443]],["sidebarParentCategories/26",[]],["title/27",[53,1.863,55,0.822,308,2.929]],["content/27",[316,3.871,317,4.443]],["sidebarParentCategories/27",[]],["title/28",[55,0.822,313,3.172,314,3.172]],["content/28",[316,3.871,317,4.443]],["sidebarParentCategories/28",[]],["title/22",[313,3.752,314,3.752]],["content/22",[6,3.414,31,1.476,43,3.414,58,1.1,120,4.569,180,3.494,267,2.27,302,3.198,313,6.382,314,6.382,315,3.071,318,3.768,319,6.763,320,6.763,321,6.763]],["sidebarParentCategories/22",[265,2.789]],["title/31",[322,2.696]],["content/31",[2,1.804,3,2.059,25,2.124,58,0.954,91,3.357,93,3.029,102,1.347,103,2.716,206,1.617,267,1.968,284,2.059,302,3.607,312,6.843,313,6.325,314,5.373,315,2.663,323,2.342,324,2.562,325,4.13,326,2.716,327,3.765,328,3.85,329,3.85]],["sidebarParentCategories/31",[265,1.782,313,2.709,314,2.709]],["title/29",[70,1.788,303,3.464]],["content/29",[6,3.155,31,1.364,43,3.155,58,1.017,70,2.933,78,4.223,112,3.23,180,4.107,189,4.685,191,4.066,267,2.098,302,2.956,303,5.684,330,4.614,331,4.867,332,7.131,333,4.066,334,5.184,335,6.252,336,4.404]],["sidebarParentCategories/29",[265,2.789]],["title/32",[322,2.696]],["content/32",[2,1.469,3,2.424,25,2.5,58,1.123,70,2.317,93,3.567,102,1.586,103,3.198,206,1.904,267,2.317,284,2.424,302,3.265,303,4.49,323,2.758,324,3.017,325,4.864,326,3.198]],["sidebarParentCategories/32",[70,1.291,265,1.782,303,2.501]],["title/33",[337,1.046]],["content/33",[2,1.743,70,2.202,91,3.757,198,4.267,302,3.103,303,5.812,310,4.693,322,2.714,327,4.045,328,4.137,329,4.137,338,2.621,339,4.622,340,4.267,341,3.473]],["sidebarParentCategories/33",[70,1.291,265,1.782,303,2.501]],["title/30",[53,2.203,308,3.464]],["content/30",[22,2.205,24,3.889,25,1.999,30,2.031,31,1.6,53,3.033,55,1.008,58,1.339,70,2.461,71,1.938,111,3.075,112,2.852,150,2.031,180,3.788,189,3.254,225,2.996,267,2.461,308,4.768,332,6.577,342,6.179,343,4.322,344,4.578,345,2.168,346,4.298,347,2.852,348,5.521,349,5.521,350,3.73]],["sidebarParentCategories/30",[265,2.789]],["title/35",[322,2.696]],["content/35",[2,1.469,3,2.424,25,2.5,53,2.856,58,1.123,93,3.567,102,1.586,103,3.198,206,1.904,267,2.317,284,2.424,302,3.265,308,4.49,323,2.758,324,3.017,325,4.864,326,3.198]],["sidebarParentCategories/35",[53,1.591,265,1.782,308,2.501]],["title/36",[337,1.046]],["content/36",[2,1.743,53,3.697,91,3.757,198,4.267,302,3.103,307,7.352,308,4.267,322,2.714,327,4.045,328,4.137,329,4.137,338,2.621,339,4.622,340,4.267,341,3.473]],["sidebarParentCategories/36",[53,1.591,265,1.782,308,2.501]],["title/34",[122,3.05,123,2.467]],["content/34",[2,1.363,3,1.593,4,3.532,6,2.29,9,3.761,10,4.069,11,3.064,17,2.101,18,2.95,24,4.514,25,1.643,30,1.669,31,1.762,34,1.478,43,3.235,46,3.532,55,1.357,67,2.462,102,1.042,111,2.527,112,3.311,122,4.877,123,3.442,149,2.06,150,1.669,180,3.311,225,2.462,228,4.255,247,2.757,248,2.95,260,4.024,267,2.494,324,1.982,333,2.95,340,2.95,351,2.343,352,4.536,353,4.536,354,4.536,355,2.145,356,3.761,357,2.674,358,3.761,359,4.536,360,2.597,361,4.069]],["sidebarParentCategories/34",[265,2.789]],["title/37",[322,2.696]],["content/37",[25,2.554,66,3.827,69,3.643,91,4.038,102,1.619,103,3.267,206,1.944,230,4.586,322,2.917,326,3.267,337,1.132,362,3.674,363,3.732,364,2.438]],["sidebarParentCategories/37",[122,2.202,123,1.782,265,1.782]],["title/38",[322,2.203,365,5.327]],["content/38",[6,3.803,58,1.225,102,1.73,120,5.09,122,4.314,123,3.49,358,6.247,366,6.247,367,7.534]],["sidebarParentCategories/38",[122,2.202,123,1.782,265,1.782]],["title/39",[120,3.598,368,4.147]],["content/39",[2,1.021,32,2.223,43,3.365,55,1.686,58,0.781,72,5.528,81,3.242,102,1.102,122,4.386,123,2.223,140,2.223,171,2.54,172,3.088,173,2.917,228,4.386,241,4.336,247,4.052,267,2.237,309,3.98,331,3.737,337,1.07,340,3.121,341,2.54,369,3.542,370,3.737,371,3.381,372,3.381,373,2.604,374,2.318,375,4.305,376,4.8,377,4.8,378,4.8,379,3.121,380,3.737,381,3.121,382,3.381,383,4.305,384,4.8,385,3.121,386,4.8,387,4.8]],["sidebarParentCategories/39",[122,2.202,123,1.782,265,1.782]],["title/40",[355,3.082]],["content/40",[2,1.382,33,4.95,38,4.796,102,1.492,122,3.72,249,5.503,263,3.526,267,2.18,309,5.388,341,3.438,355,3.072,358,6.754,371,4.577,372,4.577,388,4.664,389,3.619,390,6.497,391,4.577,392,4.389]],["sidebarParentCategories/40",[122,2.202,123,1.782,265,1.782]],["title/41",[102,1.223,206,1.469]],["content/41",[2,0.992,3,1.638,8,2,25,1.689,29,2.749,34,1.52,50,2.161,55,1.193,58,0.759,62,2.118,70,2.193,71,2.295,89,2.468,102,1.071,103,2.161,110,3.151,118,2.929,119,2.835,168,2.531,173,2.835,189,3.852,198,3.033,232,2.929,258,3.631,259,3.285,260,2.929,317,2.531,322,2.703,323,1.863,337,1.382,350,3.151,362,3.506,363,2.468,364,2.26,393,2.929,394,4.664,395,2.161,396,1.983,397,3.225,398,3.442,399,6.535,400,2.835,401,3.867,402,1.589,403,3.285,404,4.664,405,2.929]],["sidebarParentCategories/41",[]],["title/42",[55,0.973,337,0.855]],["content/42",[317,4.443,405,5.14]],["sidebarParentCategories/42",[]],["title/43",[55,0.973,322,2.203]],["content/43",[232,4.898,337,1.252,362,3.902,363,4.128,364,2.697]],["sidebarParentCategories/43",[]],["title/44",[337,1.046]],["content/44",[2,1.028,3,1.697,8,2.874,18,3.144,22,2.677,34,1.575,62,2.195,70,1.622,71,1.697,73,2.938,106,3.733,115,2.153,168,2.624,173,2.938,220,3.144,284,2.353,290,4.009,322,2.772,324,2.928,326,2.24,337,1.235,340,3.144,350,3.266,362,3.74,364,2.871,395,2.24,396,1.467,398,3.568,401,5.556,403,3.406,406,4.337,407,4.337,408,3.568,409,3.568,410,3.764,411,3.036,412,4.337,413,2.849,414,3.568,415,4.009,416,3.837]],["sidebarParentCategories/44",[102,1.078,206,1.294]],["title/45",[396,1.978]],["content/45",[2,1.127,3,1.861,8,2.273,25,1.919,62,3.24,66,2.876,102,1.217,197,4.394,238,2.36,259,3.733,260,3.328,279,3.58,323,2.117,324,2.315,328,2.675,329,2.675,337,1.446,362,2.273,364,1.833,396,1.608,402,2.43,417,4.126,418,5.3,419,5.3,420,4.126,421,4.394,422,4.754,423,3.328,424,3.58,425,5.026,426,4.126,427,4.754,428,3.912,429,5.3,430,5.3,431,3.446,432,3.912,433,1.461,434,1.861]],["sidebarParentCategories/45",[102,0.883,206,1.06,337,0.617]],["title/46",[425,3.752,427,4.778]],["content/46",[58,1.007,62,2.812,103,2.869,104,4.362,121,3.764,337,1.472,363,3.277,368,4.822,389,3.45,402,2.11,425,4.362,435,6.193,436,5.555,437,8.702,438,6.193,439,6.193,440,3.889,441,4.028,442,5.555,443,5.555,444,4.571,445,5.135,446,5.555]],["sidebarParentCategories/46",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/47",[396,1.978]],["content/47",[3,2.503,115,3.174,173,4.332,337,1.144,341,3.772,396,2.617,440,4.476,447,5.261,448,5.549,449,5.549,450,5.549,451,5.549,452,5.261]],["sidebarParentCategories/47",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/48",[328,3.29]],["content/48",[302,3.562,337,1.21,339,5.307,343,4.44,396,2.286,428,5.561,453,4.899,454,5.307,455,5.561]],["sidebarParentCategories/48",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/49",[329,3.29]],["content/49",[58,1.198,66,3.997,252,2.799,328,4.439,329,4.439,337,1.412,456,4.218,457,5.437]],["sidebarParentCategories/49",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/50",[431,4.238]],["content/50",[58,1.198,231,6.108,337,1.183,431,5.72,433,2.031,434,2.586,440,4.625,458,6.607,459,6.607,460,6.108]],["sidebarParentCategories/50",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/51",[432,4.81]],["content/51",[58,1.212,152,3.194,337,1.196,432,5.498,433,2.054,434,2.615,440,4.677,461,6.682,462,6.682,463,6.177]],["sidebarParentCategories/51",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/52",[433,1.469,434,1.87]],["content/52",[2,0.958,3,1.582,22,1.8,25,1.632,58,0.733,110,3.044,112,2.327,146,1.74,157,3.736,159,2.93,163,2.738,170,2.829,238,2.006,243,2.829,249,3.044,269,3.325,296,5.163,327,2.224,338,1.8,346,3.507,364,1.558,389,2.51,395,2.954,410,3.507,423,2.829,433,2.041,434,2.599,441,4.147,460,3.736,464,3.325,465,2.384,466,3.325,467,4.147,468,3.507,469,3.736,470,4.648,471,4.041,472,3.325,473,3.173,474,3.507,475,4.308,476,4.505,477,4.505,478,3.325,479,3.173,480,2.58,481,3.325,482,2.829,483,3.325,484,1.74,485,3.325,486,3.325,487,4.505,488,4.505]],["sidebarParentCategories/52",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/53",[337,0.855,369,3.931]],["content/53",[2,1.484,19,3.605,326,3.232,337,1.367,341,3.692,364,2.413,371,4.915,372,4.915,389,3.887,433,2.347,434,2.45,467,4.538,489,3.995,490,5.432]],["sidebarParentCategories/53",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/54",[425,3.752,426,4.147]],["content/54",[62,2.98,103,3.04,104,4.622,121,3.988,337,1.503,363,3.473,368,5.109,389,3.655,402,2.235,425,4.622,426,5.109,440,4.12,441,4.267,442,5.886,443,5.886,444,4.843,445,5.441,446,5.886,491,6.562]],["sidebarParentCategories/54",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/55",[396,1.978]],["content/55",[3,2.503,115,3.174,173,4.332,337,1.144,341,3.772,396,2.617,440,4.476,447,5.261,448,5.549,449,5.549,450,5.549,451,5.549,452,5.261]],["sidebarParentCategories/55",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/56",[328,3.29]],["content/56",[302,3.562,337,1.21,339,5.307,343,4.44,396,2.286,428,5.561,453,4.899,454,5.307,455,5.561]],["sidebarParentCategories/56",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/57",[329,3.29]],["content/57",[58,1.198,66,3.997,252,2.799,328,4.439,329,4.439,337,1.412,456,4.218,457,5.437]],["sidebarParentCategories/57",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/58",[433,1.469,434,1.87]],["content/58",[2,1.305,3,2.154,25,2.222,58,0.998,110,4.145,112,3.17,146,2.37,163,3.729,243,3.853,252,2.331,269,4.529,337,1.261,370,4.777,402,2.09,433,2.166,434,2.758,440,4.932,464,4.529,465,3.247,466,4.529,467,3.99,468,4.777,492,3.99,493,6.136,494,6.136]],["sidebarParentCategories/58",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/59",[337,0.855,369,3.931]],["content/59",[2,1.484,19,3.605,326,3.232,337,1.367,341,3.692,364,2.413,371,4.915,372,4.915,389,3.887,433,2.347,434,2.45,467,4.538,489,3.995,490,5.432]],["sidebarParentCategories/59",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/70",[423,4.092]],["content/70",[62,3.421,103,3.49,104,5.307,146,2.91,337,1.21,402,2.566,423,4.73,447,5.561,466,5.561]],["sidebarParentCategories/70",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/71",[396,1.978]],["content/71",[3,2.005,55,1.369,115,2.543,173,3.471,328,2.883,337,1.204,341,3.023,396,2.697,423,3.586,444,5.535,445,4.736,447,4.216,448,4.447,449,4.447,450,4.447,451,4.447,452,4.216,495,4.736,496,4.447,497,4.736,498,4.736,499,4.447,500,4.736,501,5.712,502,7.499,503,4.023,504,5.712,505,5.712,506,5.712,507,4.736]],["sidebarParentCategories/71",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/72",[328,3.29]],["content/72",[302,3.562,337,1.21,339,5.307,343,4.44,396,2.286,428,5.561,453,4.899,454,5.307,455,5.561]],["sidebarParentCategories/72",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/73",[329,3.29]],["content/73",[58,1.198,66,3.997,252,2.799,328,4.439,329,4.439,337,1.412,456,4.218,457,5.437]],["sidebarParentCategories/73",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/74",[431,4.238]],["content/74",[58,1.036,231,5.284,337,1.292,423,4.001,431,6.212,433,1.757,434,2.237,458,5.716,459,5.716,460,5.284,495,5.284,496,4.961,497,5.284,498,5.284,499,4.961,500,5.284,503,4.489,507,5.284,508,5.284,509,5.716]],["sidebarParentCategories/74",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/75",[432,4.81]],["content/75",[58,1.047,152,2.759,337,1.3,423,4.04,431,4.184,432,4.749,433,1.774,434,2.259,461,5.772,462,5.772,463,6.713,495,5.335,496,5.009,497,5.335,498,5.335,499,5.009,500,5.335,503,4.532,507,5.335,508,5.335,509,5.772,510,5.772]],["sidebarParentCategories/75",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/76",[433,1.469,434,1.87]],["content/76",[2,0.848,3,1.4,18,2.594,22,3.04,25,1.445,55,0.728,58,0.649,93,2.061,110,2.695,112,2.061,146,1.541,148,2.222,157,3.308,163,2.424,165,3.105,170,2.505,233,3.105,238,1.776,243,2.505,247,2.424,252,1.516,259,2.81,269,2.944,296,3.55,337,0.938,338,1.593,364,1.379,389,2.222,395,1.848,413,2.351,433,2.098,434,2.672,444,2.944,464,2.944,465,2.111,466,4.312,467,2.594,470,2.505,472,4.312,480,2.284,481,4.312,483,4.312,485,2.944,486,2.944,511,3.989,512,2.351,513,3.989,514,6.31,515,3.578,516,3.989,517,3.989,518,3.989,519,3.989,520,3.989,521,3.989,522,1.776,523,3.668,524,3.989,525,2.695,526,2.944,527,3.989,528,2.944,529,3.989,530,3.578,531,2.505,532,2.424,533,3.989,534,3.989]],["sidebarParentCategories/76",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/77",[337,0.855,369,3.931]],["content/77",[2,1.484,19,3.605,326,3.232,337,1.367,341,3.692,364,2.413,371,4.915,372,4.915,389,3.887,433,2.347,434,2.45,467,4.538,489,3.995,490,5.432]],["sidebarParentCategories/77",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/60",[424,4.403]],["content/60",[]],["sidebarParentCategories/60",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/61",[396,1.978]],["content/61",[3,2.53,115,3.209,173,4.379,238,3.209,341,3.813,396,2.186,447,5.318,448,5.61,449,5.61,450,5.61,451,5.61,452,5.318,470,4.524]],["sidebarParentCategories/61",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/62",[328,3.29]],["content/62",[302,3.562,337,1.21,339,5.307,343,4.44,396,2.286,428,5.561,453,4.899,454,5.307,455,5.561]],["sidebarParentCategories/62",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/63",[329,3.29]],["content/63",[58,1.198,66,3.997,252,2.799,328,4.439,329,4.439,337,1.412,456,4.218,457,5.437]],["sidebarParentCategories/63",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/64",[433,1.469,434,1.87]],["content/64",[2,1.215,3,2.005,25,2.068,58,0.929,110,3.859,112,2.951,115,2.543,146,2.206,163,3.471,170,3.586,238,2.543,243,3.586,259,4.023,269,4.216,296,4.557,410,4.447,421,6.218,433,1.575,434,2.005,464,4.216,465,3.023,469,4.736,470,3.586,535,5.124,536,4.42,537,5.712,538,5.124,539,6.727,540,2.135,541,3.586,542,5.712,543,2.951,544,3.859]],["sidebarParentCategories/64",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/65",[337,0.855,369,3.931]],["content/65",[2,1.484,19,3.605,326,3.232,337,1.367,341,3.692,364,2.413,371,4.915,372,4.915,389,3.887,433,2.347,434,2.45,467,4.538,489,3.995,490,5.432]],["sidebarParentCategories/65",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/66",[70,1.788,71,1.87]],["content/66",[22,2.758,66,3.747,69,3.567,70,2.317,71,2.424,295,5.725,322,2.856,337,1.109,402,2.352,433,1.904,434,2.424,545,4.196,546,4.864,547,5.714,548,6.585]],["sidebarParentCategories/66",[102,0.883,206,1.06,337,0.617]],["title/67",[489,3.05,549,5.327]],["content/67",[]],["sidebarParentCategories/67",[102,0.883,206,1.06,337,0.617]],["title/68",[200,1.32,322,1.273,327,1.519,547,2.079,550,3.077,551,2.76]],["content/68",[6,2.05,38,2.998,55,1.813,58,0.963,91,2.326,95,2.099,149,1.845,152,1.742,222,3.368,224,2.394,296,2.469,302,1.921,351,2.099,364,2.047,416,2.326,482,2.551,489,2.326,543,2.099,544,4.719,551,5.311,552,4.062,553,4.062,554,4.062,555,4.062,556,4.062,557,4.062,558,4.062,559,4.062,560,4.062,561,4.062,562,2.394,563,4.062,564,4.062,565,4.062,566,4.062,567,4.062,568,4.062,569,4.062,570,4.062,571,4.062,572,4.062,573,5.311,574,2.744,575,3.163,576,3.644,577,3.163,578,3.644,579,2.998,580,3.644,581,3.644,582,4.062,583,4.062,584,1.921,585,4.062,586,4.062,587,2.862,588,3.644,589,2.05,590,3.644,591,3.644,592,3.644,593,3.644]],["sidebarParentCategories/68",[102,0.883,206,1.06,337,0.617]],["title/79",[547,4.403]],["content/79",[70,2.472,71,2.586,117,3.718,183,6.108,284,2.586,324,3.218,338,2.943,364,2.547,413,4.341,547,4.976,594,6.108]],["sidebarParentCategories/79",[70,0.948,71,0.992,102,0.649,206,0.779,337,0.454]],["title/80",[284,1.37,305,1.391,434,1.37,595,3.499]],["content/80",[55,1.832,105,4.247,282,6.067,305,2.411,327,3.338,434,2.375,595,6.067,596,7.491,597,8.351,598,6.763,599,6.763]],["sidebarParentCategories/80",[70,0.948,71,0.992,102,0.649,206,0.779,337,0.454]],["title/81",[93,2.015,327,1.925,600,3.499,601,3.499]],["content/81",[55,1.809,93,4.01,105,3.782,170,3.782,224,3.55,327,2.973,364,2.083,481,4.446,596,6.963,600,5.404,601,7.705,602,4.874,603,3.661,604,6.024,605,3.112,606,6.024,607,5.404,608,6.024,609,6.024]],["sidebarParentCategories/81",[70,0.948,71,0.992,102,0.649,206,0.779,337,0.454]],["title/82",[296,2.371,402,1.329,605,2.015,610,3.235]],["content/82",[4,5.32,55,1.734,71,2.399,73,4.153,111,3.806,220,4.444,296,4.153,402,2.328,433,1.884,434,2.399,605,3.53,610,5.666,611,6.833,612,6.129,613,6.833]],["sidebarParentCategories/82",[70,0.948,71,0.992,102,0.649,206,0.779,337,0.454]],["title/83",[433,0.949,434,1.208,547,2.324,605,1.777,614,3.44]],["content/83",[8,0.811,34,1.05,55,1.556,58,0.307,62,0.858,70,1.67,71,2.4,91,1.082,105,1.187,146,0.73,149,0.858,156,1.472,170,2.024,211,1.277,220,1.229,224,1.114,252,1.224,296,2.56,305,0.674,326,0.876,327,1.591,338,0.755,345,1.954,362,0.811,364,1.114,389,1.053,393,1.187,402,0.644,433,1.161,434,1.479,444,5.045,465,1,467,1.229,470,1.187,481,3.109,483,2.379,484,0.73,486,5.045,515,1.696,547,4.618,573,1.696,574,1.277,575,1.472,576,1.696,577,1.472,578,1.696,579,1.395,580,1.696,581,1.696,587,1.332,588,1.696,589,1.627,590,1.696,591,1.696,592,1.696,593,1.696,610,1.568,612,1.696,615,1.89,616,1.696,617,1.89,618,5.583,619,1.89,620,1.696,621,1.89,622,4.212,623,4.212,624,4.212,625,4.212,626,1.89,627,1.89,628,1.89,629,3.223,630,1.89,631,3.673,632,4.212,633,4.976,634,1.89,635,1.89,636,6.835,637,3.223,638,1.89,639,4.212,640,1.89,641,1.89,642,5.583,643,1.89,644,4.212,645,1.89,646,1.89,647,2.891,648,1.89,649,4.212,650,1.89,651,1.89,652,4.976,653,4.976,654,4.976,655,4.212,656,4.976,657,4.976,658,6.835,659,1.89,660,4.212,661,1.89,662,4.212,663,1.89,664,4.212,665,1.89,666,1.696,667,3.223,668,1.89,669,1.89,670,1.89,671,1.89,672,1.89,673,1.89,674,1.89,675,4.464,676,1.696,677,1.395,678,1.696,679,0.782,680,1.89,681,1.696,682,1.696,683,1.89,684,1.89,685,1.89,686,1.89,687,1.89,688,1.696]],["sidebarParentCategories/83",[70,0.948,71,0.992,102,0.649,206,0.779,337,0.454]],["title/78",[548,5.074]],["content/78",[22,1.247,55,1.595,68,1.694,70,2.443,71,2.556,91,2.78,102,0.717,189,2.862,211,4.025,239,3.28,252,1.845,261,1.788,284,1.096,294,2.199,296,1.898,305,1.731,323,1.247,327,2.396,337,0.957,355,1.476,364,1.679,397,2.396,402,1.064,433,1.339,434,1.705,466,2.305,472,5.373,484,1.206,526,2.305,528,2.305,540,1.167,544,2.109,546,3.42,548,5.232,589,3.007,620,4.356,675,6.914,676,2.801,678,2.801,679,2.464,681,2.801,682,2.801,688,2.801,689,2.801,690,3.122,691,4.856,692,1.541,693,3.122,694,2.109,695,2.431,696,3.122,697,3.122,698,5.958,699,0.69,700,3.122,701,2.801,702,3.122,703,3.122,704,3.122,705,2.305,706,1.84,707,3.122,708,2.801,709,3.122,710,4.026,711,2.199,712,2.589,713,4.856,714,3.122,715,2.705,716,2.589,717,3.122,718,1.84,719,2.199,720,4.856,721,4.856]],["sidebarParentCategories/78",[70,0.948,71,0.992,102,0.649,206,0.779,337,0.454]],["title/69",[337,1.046]],["content/69",[2,1.35,3,1.571,8,2.722,18,2.91,22,2.535,34,1.458,62,2.032,70,1.502,71,1.571,73,2.719,106,3.536,115,1.993,168,2.428,173,2.719,220,2.91,284,2.228,290,3.71,302,2.116,322,2.625,323,1.788,324,2.773,326,2.073,337,1.361,340,2.91,350,3.023,362,3.775,364,2.93,395,2.073,396,2.238,398,3.303,401,5.263,403,3.152,406,4.014,407,4.014,408,3.303,409,3.303,410,3.484,411,2.81,412,4.014,413,2.637,414,3.303,415,3.71,416,3.634,722,4.475,723,3.023]],["sidebarParentCategories/69",[]],["title/89",[322,2.696]],["content/89",[66,3.868,69,3.682,70,2.392,71,2.503,91,4.081,103,3.302,230,4.635,232,4.476,322,2.948,337,1.144,362,3.698,363,3.772,364,2.465]],["sidebarParentCategories/89",[102,1.078,206,1.294]],["title/90",[252,1.711,337,0.723,402,1.534]],["content/90",[2,1.969,58,0.937,69,2.976,70,2.993,71,2.952,106,3.209,252,2.189,310,3.299,327,3.722,329,3.806,337,0.925,395,2.669,402,1.962,433,1.589,434,2.023,543,2.976,724,4.777,725,5.168,726,6.765,727,5.168,728,5.168,729,5.761,730,5.168,731,5.761]],["sidebarParentCategories/90",[102,1.078,206,1.294]],["title/91",[322,2.203,512,3.139]],["content/91",[8,2.023,17,2.185,34,1.537,36,2.495,55,1.696,58,1.071,68,3.574,69,1.554,70,2.21,71,2.665,91,1.723,93,1.554,111,1.676,189,2.78,222,3.911,252,1.143,254,1.723,265,2.185,271,2.495,292,2.221,322,1.951,323,2.324,327,2.328,328,2.937,329,2.937,345,1.182,388,2.701,402,1.607,408,2.221,409,2.221,411,2.962,456,1.723,475,2.033,482,1.889,483,4.862,512,2.78,543,1.554,545,1.828,577,2.342,616,4.231,692,1.485,719,2.119,730,2.699,732,3.009,733,3.009,734,3.009,735,3.009,736,3.009,737,1.394,738,5.818,739,3.009,740,1.828,741,3.009,742,3.009,743,3.009,744,1.223,745,2.701,746,3.009,747,2.342,748,2.699,749,3.009,750,3.009,751,3.009,752,5.818,753,3.009,754,2.699,755,2.033,756,3.009,757,4.717,758,4.231,759,4.717,760,3.009,761,5.818,762,3.009,763,3.009,764,4.717,765,3.009,766,3.009,767,2.495,768,3.009]],["sidebarParentCategories/91",[102,1.078,206,1.294]],["title/92",[31,0.983,284,1.581,324,1.968]],["content/92",[2,1.685,31,1.975,50,1.549,55,1.79,58,1.012,62,2.324,69,1.727,70,1.122,71,1.174,81,3.458,84,1.914,87,0.618,89,2.709,103,1.549,104,2.355,117,1.688,140,2.371,146,1.291,172,2.371,189,1.971,210,1.553,212,2.355,220,2.174,238,1.489,251,2.603,284,1.174,310,1.914,322,1.383,345,2.01,355,3.295,363,1.769,364,1.156,373,2.778,374,3.365,396,1.015,402,1.744,441,2.174,540,1.914,744,2.832,769,2.999,770,1.914,771,3.343,772,3.343,773,4.376,774,5.143,775,3.782,776,2.999,777,3.214,778,4.244,779,2.195,780,3.343,781,2.999]],["sidebarParentCategories/92",[102,1.078,206,1.294]],["title/93",[241,2.929,284,1.581,324,1.968]],["content/93",[2,1.575,6,2.274,31,1.615,34,1.468,55,1.656,69,2.327,70,1.512,71,1.582,103,2.954,117,2.274,146,1.74,168,2.445,241,5.525,247,2.738,248,2.93,252,2.423,259,3.173,284,2.599,297,4.041,311,3.325,324,1.968,345,2.505,347,3.295,360,2.58,379,2.93,380,3.507,381,4.814,382,4.492,456,2.58,473,3.173,769,4.041,774,3.325,782,4.505,783,5.215,784,4.492,785,4.492,786,4.505,787,4.041,788,3.736,789,4.505,790,4.505]],["sidebarParentCategories/93",[102,1.078,206,1.294]],["title/94",[31,1.162,50,2.467]],["content/94",[31,1.857,50,3.232,55,1.791,402,2.377,540,2.608,744,2.836,779,2.992,791,6.977,792,3.995,793,3.444,794,6.259]],["sidebarParentCategories/94",[102,1.078,206,1.294]],["title/95",[95,2.327,391,3.172,795,3.324]],["content/95",[2,1.633,31,1.967,34,1.571,50,3.557,55,1.833,69,1.598,70,1.038,71,1.692,81,3.256,140,2.233,163,2.929,172,2.233,210,1.463,252,1.831,310,1.771,318,2.685,345,1.893,373,2.616,374,3.229,379,2.012,380,2.408,381,3.135,396,0.939,402,1.642,540,1.802,723,2.09,744,2.718,773,4.199,774,4.935,775,3.629,777,3.027,778,3.997,781,2.775,783,3.395,784,3.395,785,3.395,787,2.775,792,2.76,793,2.379,794,4.324,796,4.82,797,4.82,798,3.093,799,4.82,800,3.093,801,3.093]],["sidebarParentCategories/95",[102,1.078,206,1.294]],["title/96",[40,3.752,58,0.866]],["content/96",[2,1.679,31,1.722,42,6.545,204,5.56,205,7.081]],["sidebarParentCategories/96",[102,1.078,206,1.294]],["title/84",[87,1.205]],["content/84",[2,1.56,29,3.254,30,2.698,31,1.796,34,2.389,55,1.602,58,1.193,103,3.397,149,3.329,150,2.698,201,4.952,225,2.996,235,3.355,254,3.161,284,1.938,316,2.611,317,4.468,324,2.412,363,2.922,364,1.909,705,4.075,744,2.244,802,4.298,803,4.298,804,1.748,805,2.284,806,4.298]],["sidebarParentCategories/84",[]],["title/85",[31,0.983,55,0.822,744,1.83]],["content/85",[316,3.871,317,4.443]],["sidebarParentCategories/85",[]],["title/86",[34,1.468,55,0.822,150,1.657]],["content/86",[103,3.701,317,4.335,363,4.228,364,2.763]],["sidebarParentCategories/86",[]],["title/87",[30,1.657,55,0.822,149,2.045]],["content/87",[58,1.332,803,6.374]],["sidebarParentCategories/87",[]],["title/88",[55,0.822,804,1.426,805,1.863]],["content/88",[317,4.443,806,6.374]],["sidebarParentCategories/88",[]],["title/109",[31,1.162,744,2.165]],["content/109",[2,1.859,3,2.558,25,2.638,31,1.59,43,3.677,207,6.535,265,3.375,306,6.041,355,3.445,388,4.171,414,5.377]],["sidebarParentCategories/109",[87,1.114]],["title/110",[373,3.537]],["content/110",[31,1.491,34,2.227,35,4.291,58,1.111,78,5.677,96,2.514,116,5.32,150,2.514,210,2.073,284,2.399,324,2.985,373,4.561,584,3.231,807,5.666,808,6.129,809,4.813]],["sidebarParentCategories/110",[87,1.114]],["title/111",[777,4.092]],["content/111",[2,1.076,17,2.342,31,1.718,50,3.92,55,1.741,96,1.86,117,2.552,140,2.342,147,3.562,172,3.92,189,2.98,200,2.964,210,2.389,252,1.921,254,2.895,264,3.073,322,2.091,345,1.986,355,3.268,374,2.442,402,1.722,777,4.339,788,4.193,810,3.562,811,4.193,812,6.199,813,2.744,814,5.057,815,5.057,816,4.536,817,4.536]],["sidebarParentCategories/111",[87,1.114]],["title/112",[818,5.846]],["content/112",[58,1.198,159,4.79,172,3.412,209,5.437,210,2.235,238,3.28,475,4.976,540,2.754,543,3.805,584,4.159]],["sidebarParentCategories/112",[87,1.114]],["title/113",[819,4.81]],["content/113",[140,3.451,172,3.451,210,2.26,543,3.848,584,3.522,820,7.449,821,7.449,822,7.449,823,7.449,824,5.799]],["sidebarParentCategories/113",[87,1.114]],["title/114",[825,6.518]],["content/114",[58,1.471,62,2.211,84,3.856,111,2.713,121,2.96,140,4.05,155,5.243,210,1.478,238,2.169,252,1.85,351,3.479,388,2.789,679,2.014,711,4.744,812,4.369,816,6.041,819,3.595,826,6.735,827,6.735,828,4.87,829,4.87,830,6.735,831,4.87,832,4.369,833,4.038,834,4.87,835,4.87,836,4.369,837,4.87,838,6.735,839,3.792,840,3.595,841,4.87,842,4.87,843,4.87,844,4.87,845,4.87,846,3.792,847,4.87]],["sidebarParentCategories/114",[87,1.114]],["title/115",[848,6.518]],["content/115",[58,1.341,63,5.496,172,3.07,200,3.537,210,2.011,212,4.669,441,4.31,473,4.669,679,3.411,694,4.477,804,2.098,805,3.714,849,5.496,850,7.398,851,3.201]],["sidebarParentCategories/115",[87,1.114]],["title/116",[228,3.732]],["content/116",[31,1.377,55,1.46,58,1.301,96,2.942,172,2.924,210,1.915,228,4.579,250,5.661,295,6.631,379,4.104,385,4.104,392,4.264,474,4.914,584,2.984,852,4.34,853,4.914,854,6.311,855,6.311,856,3.425,857,6.311]],["sidebarParentCategories/116",[87,1.114]],["title/117",[858,5.074]],["content/117",[31,1.432,50,3.04,58,1.067,84,3.757,96,2.414,210,1.991,224,3.867,318,3.655,433,1.809,465,3.473,543,3.39,584,3.103,788,5.441,858,5.109,859,6.562,860,6.796,861,5.886,862,6.562,863,6.562,864,5.886,865,6.562]],["sidebarParentCategories/117",[87,1.114]],["title/118",[866,4.591]],["content/118",[30,1.805,55,1.696,58,0.798,96,2.491,150,1.805,153,3.081,182,2.809,190,2.892,210,1.489,238,2.185,254,2.809,305,1.749,316,2.32,318,2.733,345,1.927,364,1.697,374,2.369,385,3.191,392,4.573,395,2.273,433,1.353,465,4.102,679,2.029,715,2.733,851,2.369,866,3.456,867,4.068,868,6.769,869,5.613,870,2.733,871,3.82,872,4.906,873,6.769,874,5.27,875,4.068,876,3.82,877,4.068,878,4.906,879,4.906,880,4.401,881,4.906,882,4.401]],["sidebarParentCategories/118",[87,1.114]],["title/119",[883,6.518]],["content/119",[78,5.09,141,6.94,209,5.561,210,2.286,420,5.865,465,3.987,584,3.562,864,6.758]],["sidebarParentCategories/119",[87,1.114]],["title/120",[884,6.518]],["content/120",[150,2.71,209,5.437,210,2.235,326,3.412,433,2.031,541,5.523,584,3.483,885,6.108,886,7.366,887,7.366]],["sidebarParentCategories/120",[87,1.114]],["title/121",[888,6.518]],["content/121",[19,3.722,58,1.172,80,6.463,210,2.186,324,3.148,420,5.61,465,4.93,889,4.868,890,6.758,891,7.205]],["sidebarParentCategories/121",[87,1.114]],["title/122",[892,6.518]],["content/122",[170,4.677,210,2.26,544,5.032,584,3.522,747,5.799,851,3.597,893,7.449,894,7.449,895,6.177,896,6.682]],["sidebarParentCategories/122",[87,1.114]],["title/123",[896,5.846]],["content/123",[210,2.367,584,3.688,747,6.073,851,3.767,895,6.468,897,7.801]],["sidebarParentCategories/123",[87,1.114]],["title/124",[898,6.518]],["content/124",[81,3.997,141,4.606,144,4.906,146,2.285,210,1.795,212,4.167,226,6.347,305,3.036,317,3.21,373,3.21,392,3.997,433,1.631,453,3.847,694,3.997,747,4.606,856,4.89,880,5.307,895,4.906,899,5.307,900,5.916,901,7.061,902,4.367,903,5.307]],["sidebarParentCategories/124",[87,1.114]],["title/125",[904,6.518]],["content/125",[171,3.813,210,2.186,226,5.076,305,3.095,316,3.407,584,4.104,856,3.91,899,6.463,901,5.975,905,5.076,906,7.205]],["sidebarParentCategories/125",[87,1.114]],["title/126",[907,6.518]],["content/126",[59,3.887,140,3.232,171,3.692,210,2.117,226,5.996,249,4.714,373,3.786,543,3.605,584,3.299,856,4.619,882,6.259,901,5.786,908,6.977,909,6.977]],["sidebarParentCategories/126",[87,1.114]],["title/127",[910,6.518]],["content/127",[17,3.07,19,3.424,96,2.438,112,3.424,150,2.438,210,2.011,364,2.292,433,1.827,464,4.892,465,4.364,589,3.345,679,2.741,715,3.692,889,4.477,911,5.571,912,5.16,913,6.628,914,6.628,915,6.628]],["sidebarParentCategories/127",[87,1.114]],["title/128",[916,4.591]],["content/128",[2,1.604,3,2.023,25,2.087,33,3.501,34,1.877,55,1.377,58,0.937,96,2.12,111,3.209,146,2.225,210,1.748,326,2.669,330,4.252,333,3.747,336,4.058,345,2.263,360,4.318,540,2.154,813,3.126,902,4.252,916,6.521,917,5.761,918,5.761,919,6.253,920,5.566,921,4.777,922,5.168]],["sidebarParentCategories/128",[87,1.114]],["title/129",[923,5.846]],["content/129",[2,1.194,31,1.225,55,1.354,58,1.206,62,2.55,96,2.066,146,2.169,151,3.047,152,2.408,210,2.25,243,3.525,345,2.205,679,2.322,813,3.047,839,4.371,840,4.144,846,4.371,923,7.447,924,5.615,925,3.412,926,5.615,927,5.615,928,5.615,929,5.615,930,5.036,931,8.302,932,5.615,933,5.615,934,5.615,935,5.615,936,5.615,937,5.615]],["sidebarParentCategories/129",[87,1.114]],["title/130",[938,4.81]],["content/130",[2,0.945,19,2.296,22,1.776,26,3.686,30,3.231,31,1.378,55,1.153,58,0.723,59,2.476,62,2.018,96,1.635,121,2.701,146,1.717,180,2.296,189,2.62,210,1.349,219,3.46,230,2.89,252,1.689,323,1.776,331,3.46,338,2.523,345,1.746,364,1.537,400,2.701,473,3.131,484,1.717,679,1.838,692,2.194,740,2.701,813,2.412,840,3.281,856,4.766,871,3.46,890,3.46,938,5.424,939,6.093,940,5.906,941,3.281,942,5.666,943,3.281,944,3.987,945,4.918,946,6.317,947,5.238,948,3.686]],["sidebarParentCategories/130",[87,1.114]],["title/131",[949,5.846]],["content/131",[2,0.939,19,2.281,22,1.764,26,3.661,30,1.624,31,1.372,55,1.148,58,0.718,59,2.459,62,2.005,96,1.624,121,2.683,146,1.705,180,2.281,189,2.602,210,1.34,219,3.437,225,4.575,230,2.871,252,1.677,323,1.764,331,3.437,338,2.511,345,1.734,357,2.602,364,1.527,400,2.683,473,3.11,484,1.705,679,1.826,692,2.179,740,2.683,813,2.396,840,3.259,856,4.755,871,3.437,890,3.437,939,6.071,940,5.888,941,3.259,943,3.259,944,3.96,945,4.894,948,3.661,949,6.567,950,4.415,951,6.287,952,6.287,953,4.415]],["sidebarParentCategories/131",[87,1.114]],["title/132",[954,5.846]],["content/132",[19,3.494,96,2.488,121,4.11,210,2.052,347,4.314,357,4.922,589,3.414,679,2.797,710,5.608,715,3.768,718,3.986,740,4.11,856,4.532,889,4.569,954,6.067,955,6.763]],["sidebarParentCategories/132",[87,1.114]],["title/133",[956,5.074]],["content/133",[31,1.377,34,2.057,53,2.611,58,1.027,96,2.322,150,3.23,210,1.915,347,4.535,357,3.72,584,2.984,679,3.308,694,4.264,852,3.425,956,4.914,957,3.048,958,5.233,959,4.914,960,4.914,961,6.311,962,6.311,963,6.311]],["sidebarParentCategories/133",[87,1.114]],["title/134",[959,5.074]],["content/134",[58,1.078,96,2.438,210,2.011,347,4.638,374,3.201,577,5.16,584,3.134,679,3.411,956,5.16,957,3.201,958,5.496,959,5.16,960,5.16,964,6.628,965,6.628,966,6.628,967,6.628,968,6.628]],["sidebarParentCategories/134",[87,1.114]],["title/135",[960,5.074]],["content/135",[19,3.643,96,2.594,210,2.14,347,3.643,589,3.559,679,3.544,715,3.928,889,4.764,956,5.49,957,3.405,958,5.847,959,5.49,960,5.49,969,7.052]],["sidebarParentCategories/135",[87,1.114]],["title/136",[970,5.846]],["content/136",[96,2.651,210,2.186,284,2.53,347,3.722,383,6.463,679,3.59,905,5.076,970,6.463,971,7.205,972,7.205,973,7.205,974,7.205]],["sidebarParentCategories/136",[87,1.114]],["title/137",[975,6.518]],["content/137",[2,1.37,31,0.997,55,1.176,58,1.047,96,1.68,145,3.045,152,3.474,169,4.097,204,4.536,210,1.386,235,3.914,248,2.97,261,2.615,324,2.814,325,4.536,345,1.794,347,4.412,420,5.014,471,4.097,475,3.086,679,1.889,694,3.086,695,5.014,813,2.479,839,3.556,840,3.371,925,2.776,941,5.505,976,7.459,977,4.568,978,3.787,979,7.459,980,4.568,981,4.568,982,4.568,983,6.44,984,5.777,985,3.086,986,4.568,987,4.568,988,4.568]],["sidebarParentCategories/137",[87,1.114]],["title/138",[213,4.04,484,1.739,989,4.04]],["content/138",[58,1.159,96,2.622,165,5.549,197,5.91,210,2.163,347,3.682,679,2.948,905,5.021,984,6.394,989,6.394,990,7.128,991,7.128,992,7.128,993,7.128]],["sidebarParentCategories/138",[87,1.114]],["title/139",[994,5.846]],["content/139",[19,3.567,58,1.123,96,2.54,114,3.953,210,2.095,540,2.581,589,3.485,679,2.856,715,3.846,755,4.664,889,4.664,994,6.194,995,6.905,996,7.013,997,6.905,998,6.905]],["sidebarParentCategories/139",[87,1.114]],["title/140",[999,5.846]],["content/140",[31,1.491,35,4.291,58,1.367,78,4.616,96,2.514,198,4.444,210,2.073,239,4.616,324,2.985,373,3.708,584,3.231,602,4.291,808,6.129,999,6.129,1000,6.833,1001,6.129,1002,6.833]],["sidebarParentCategories/140",[87,1.114]],["title/141",[1003,5.404]],["content/141",[2,1.469,3,2.424,19,3.567,25,2.5,58,1.123,96,2.54,200,2.961,210,2.095,305,2.462,589,3.485,679,2.856,699,1.526,715,3.846,740,4.196,889,4.664,1003,5.725,1004,5.096]],["sidebarParentCategories/141",[87,1.114]],["title/97",[920,4.81]],["content/97",[]],["sidebarParentCategories/97",[31,0.839,87,0.711,744,1.563]],["title/98",[58,0.733,679,1.863,919,3.734]],["content/98",[2,1.568,25,2.67,31,1.215,55,1.818,105,3.496,210,1.689,211,3.761,333,3.621,345,3.247,540,2.081,744,2.997,773,4.63,779,2.388,813,4.001,916,5.194,919,6.114,920,4.109,921,4.616,922,4.994,957,2.689,1005,4.334,1006,4.616]],["sidebarParentCategories/98",[31,0.839,87,0.711,744,1.563]],["title/99",[34,1.736,916,3.752]],["content/99",[2,0.761,55,1.823,58,0.582,89,1.894,96,1.317,111,3.002,146,1.382,191,6.191,224,5.239,326,1.658,336,2.521,345,1.406,413,2.109,574,2.418,579,6.231,584,3.992,813,1.942,836,3.21,916,4.567,921,6.418,1007,3.579,1008,3.579,1009,3.579,1010,3.579,1011,3.579,1012,8.442,1013,8.442,1014,3.579,1015,3.579,1016,3.579,1017,3.579,1018,3.579,1019,3.579]],["sidebarParentCategories/99",[31,0.839,87,0.711,744,1.563]],["title/100",[433,1.469,920,3.931]],["content/100",[2,1.259,6,2.05,8,1.742,25,1.471,55,1.556,69,2.099,71,1.426,110,4,111,2.263,115,1.809,146,1.569,152,2.539,211,2.744,219,3.163,238,1.809,267,1.363,284,2.453,304,3.644,310,2.326,326,1.882,345,2.325,350,2.744,351,2.099,366,3.368,370,3.163,397,2.005,402,1.384,433,1.926,434,1.426,482,3.718,484,1.569,514,3.368,539,3.644,546,4.171,562,3.49,689,5.311,694,2.744,723,2.744,775,3.213,807,3.368,916,2.862,920,5.156,957,1.962,1020,4.062,1021,5.921,1022,5.921,1023,4.062,1024,4.909,1025,4.062,1026,4.062,1027,5.921,1028,4.062,1029,4.062,1030,4.37,1031,4.062,1032,4.062,1033,3.368,1034,4.062,1035,4.062]],["sidebarParentCategories/100",[31,0.839,87,0.711,744,1.563]],["title/152",[34,1.736,150,1.96]],["content/152",[29,2.935,30,1.832,31,1.492,34,2.229,50,2.307,67,2.703,87,1.265,102,1.144,103,2.307,108,3.81,115,2.218,149,2.261,150,2.516,151,3.711,152,2.136,153,3.127,162,3.877,225,2.703,230,3.239,245,5.765,251,3.877,252,2.599,260,3.127,279,3.364,284,1.749,317,2.703,324,2.176,355,2.355,363,2.636,364,2.365,397,2.458,724,4.13,744,2.024,770,2.852,852,3.711,853,3.877,856,2.703,870,2.774,1036,5.325,1037,6.135,1038,4.13]],["sidebarParentCategories/152",[87,1.114]],["title/153",[31,0.851,284,1.37,316,1.844,324,1.704]],["content/153",[8,0.761,31,1.945,34,1.913,50,1.86,55,1.81,58,0.496,69,1.576,70,1.024,71,1.071,87,0.328,108,2.657,115,1.788,140,1.414,145,1.443,150,0.653,168,0.963,172,2.209,228,1.016,238,1.359,241,4.088,245,3.967,247,2.441,248,1.985,252,0.674,263,0.963,284,1.41,318,2.994,322,1.973,323,1.219,325,2.15,333,4.088,347,1.576,351,2.464,355,2.255,360,1.747,373,2.588,374,1.474,379,1.154,381,3.818,382,2.15,395,0.822,397,1.506,402,1.368,405,1.114,522,0.79,540,2.009,546,1.249,589,1.54,602,1.114,744,1.938,755,2.713,770,1.747,773,1.916,775,1.656,777,1.916,779,3.089,783,2.15,784,2.15,785,1.249,792,2.731,793,2.354,809,2.15,852,3.186,1036,5.168,1037,2.737,1039,1.591,1040,1.591,1041,1.591,1042,1.591,1043,2.252,1044,3.713,1045,2.062,1046,2.524,1047,1.591,1048,1.591,1049,1.591,1050,1.381,1051,1.381,1052,1.381,1053,1.591,1054,1.078,1055,1.471,1056,1.471,1057,1.985,1058,1.471,1059,1.249,1060,1.381,1061,2.252,1062,2.53,1063,1.471,1064,1.471,1065,1.471,1066,1.471]],["sidebarParentCategories/153",[87,1.114]],["title/154",[806,3.506,852,2.444,925,2.737]],["content/154",[31,1.76,34,1.727,52,4.754,55,1.731,88,4.754,89,2.805,95,3.686,105,3.328,119,4.336,150,1.95,151,2.876,245,5.266,284,1.861,397,2.616,584,2.506,589,2.675,602,3.328,779,3.06,792,3.034,793,2.616,852,2.876,1038,4.394,1043,3.912,1046,2.805,1057,4.64,1059,3.733,1067,5.3,1068,5.3,1069,7.135,1070,5.3,1071,4.126,1072,4.394]],["sidebarParentCategories/154",[87,1.114]],["title/155",[150,1.132,512,1.814,940,2.271,1073,2.76,1074,2.168,1075,2.552]],["content/155",[6,1.846,29,2.156,30,1.346,31,1.592,34,1.192,55,1.795,58,0.891,89,1.936,96,1.346,101,2.848,102,0.84,108,2.038,117,1.846,126,3.281,145,1.73,149,1.661,150,2.684,151,1.985,152,1.569,159,2.379,191,2.379,198,2.379,225,1.985,238,1.629,254,2.094,263,1.985,351,1.89,357,2.156,374,1.766,414,2.7,416,2.094,417,2.848,473,4.628,522,1.629,579,2.7,692,1.805,779,1.569,852,2.973,870,2.038,925,3.33,945,4.266,1036,2.848,1046,1.936,1054,2.223,1057,3.563,1074,2.577,1075,3.033,1076,3.658,1077,5.893,1078,2.577,1079,3.658,1080,3.033,1081,4.543,1082,3.033,1083,3.033,1084,2.577,1085,3.033,1086,4.266,1087,3.033,1088,2.848,1089,2.7,1090,2.848,1091,3.033,1092,2.848,1093,2.848,1094,2.848,1095,3.033,1096,2.848]],["sidebarParentCategories/155",[87,1.114]],["title/156",[95,2.015,391,2.748,795,2.879,1097,3.499]],["content/156",[2,0.541,31,1.868,34,0.828,35,0.903,50,1.177,55,1.853,58,0.555,87,0.266,89,0.761,95,0.743,96,0.529,101,1.12,108,1.902,115,0.64,117,0.726,140,1.177,145,0.68,150,1.517,151,0.78,152,0.617,168,0.78,172,1.582,198,0.935,228,0.823,238,1.521,241,3.062,245,2.52,247,2.075,248,1.653,252,0.546,254,0.823,263,0.78,279,0.972,284,1.199,318,2.623,333,3.656,341,1.345,345,0.565,347,0.743,355,1.949,360,1.455,364,0.497,373,2.237,374,1.649,379,0.935,381,2.681,382,1.013,397,0.71,402,0.866,413,0.848,484,0.982,522,1.132,540,1.541,579,1.061,584,0.68,589,1.283,602,0.903,679,0.595,692,0.71,744,1.676,770,1.455,773,2.144,774,1.061,775,1.853,776,1.29,777,1.596,779,3.106,783,2.405,784,2.405,785,1.79,792,2.978,793,3.11,795,1.061,809,1.79,819,1.061,824,1.12,852,2.237,870,0.801,912,1.12,1036,2.658,1040,2.28,1041,1.29,1042,1.29,1043,1.876,1044,3.21,1045,1.717,1046,2.753,1047,2.28,1048,1.29,1049,1.29,1050,1.12,1051,1.12,1052,1.12,1054,0.874,1056,1.193,1057,3.892,1058,1.193,1059,2.405,1060,1.12,1061,1.876,1062,2.107,1064,1.193,1065,1.193,1066,1.193,1071,1.12,1072,1.193,1080,1.193,1081,2.107,1082,1.193,1083,1.193,1084,1.013,1085,1.193,1086,1.979,1087,1.193,1088,1.12,1089,1.061,1090,1.12,1091,1.193,1092,1.12,1093,1.12,1094,1.12,1095,1.193,1096,1.12,1098,1.193,1099,1.29,1100,1.193,1101,1.29,1102,1.29,1103,1.12,1104,2.28,1105,1.29,1106,2.28,1107,1.438,1108,1.438,1109,1.438,1110,1.438,1111,1.438,1112,1.438,1113,1.438,1114,1.438,1115,1.438,1116,1.438,1117,1.438,1118,1.438]],["sidebarParentCategories/156",[87,1.114]],["title/157",[40,3.752,58,0.866]],["content/157",[145,4.244,150,2.804,263,4.135,1053,6.836,1054,4.631,1055,6.319,1063,6.319]],["sidebarParentCategories/157",[87,1.114]],["title/158",[30,1.96,149,2.419]],["content/158",[30,3.397,31,1.455,34,1.564,50,2.223,53,1.985,58,0.781,67,2.604,87,1.233,102,1.102,103,2.223,108,2.674,115,2.137,118,4.81,119,5.03,145,3.152,149,3.478,150,1.766,151,2.604,172,2.223,182,2.748,230,3.121,237,2.829,251,3.737,252,2.533,260,3.014,284,1.685,317,2.604,324,2.097,355,2.269,363,2.54,364,2.305,385,3.121,397,2.369,705,3.542,724,3.98,740,2.917,744,1.951,770,2.748,803,3.737,856,2.604,985,3.242]],["sidebarParentCategories/158",[87,1.114]],["title/159",[31,0.851,284,1.37,316,1.844,324,1.704]],["content/159",[2,0.292,8,0.589,17,0.636,30,0.505,31,1.789,34,0.795,50,1.524,55,1.745,58,0.891,67,1.323,68,0.745,69,1.7,70,0.461,71,0.856,87,0.608,96,0.505,105,0.862,108,1.833,115,2.033,118,3.866,119,3.328,121,0.834,132,1.069,140,1.524,168,2.163,172,1.847,180,0.709,182,0.786,211,0.927,220,0.893,224,2.691,227,1.718,228,2.282,238,1.465,241,3.561,247,4.064,248,1.586,252,0.521,260,0.862,284,1.155,310,0.786,318,3.05,322,1.361,323,0.974,327,1.624,328,1.231,329,1.231,330,2.428,333,3.797,337,0.391,345,0.958,347,1.7,355,1.885,360,1.396,364,1.138,373,2.163,374,1.925,379,3.288,380,1.069,381,2.969,382,1.718,389,0.765,392,0.927,393,0.862,395,0.636,397,0.677,402,1.121,413,0.809,414,1.8,416,1.396,456,1.396,457,1.8,465,0.726,540,1.49,545,0.834,546,0.967,547,0.927,548,1.069,589,1.231,602,0.862,603,0.834,679,1.009,711,1.718,715,1.358,744,1.856,745,0.786,770,1.884,773,1.531,775,1.785,777,1.531,779,2.504,783,1.718,784,1.718,785,2.317,792,1.396,793,1.967,809,3.216,852,0.745,853,1.898,856,0.745,858,1.898,861,2.187,866,1.718,869,2.022,874,2.561,875,2.022,876,1.898,877,2.022,938,1.8,947,2.022,1039,1.231,1043,1.8,1044,3.103,1045,1.647,1046,1.29,1050,1.069,1051,1.898,1052,1.069,1119,1.231,1120,3.576,1121,2.187,1122,1.231,1123,2.951,1124,2.187,1125,1.231,1126,1.231,1127,1.231,1128,1.372,1129,1.231,1130,2.438,1131,1.138,1132,2.438,1133,5.476,1134,1.231,1135,1.372,1136,1.069,1137,1.231,1138,1.231,1139,1.231]],["sidebarParentCategories/159",[87,1.114]],["title/160",[30,1.266,182,1.97,318,1.916,385,2.237,405,2.16]],["content/160",[11,3.315,17,2.273,29,2.892,30,3.074,31,1.477,34,1.599,55,1.655,62,3.074,118,5.247,149,3.074,182,2.809,305,1.749,357,2.892,385,5.434,395,2.273,416,3.876,541,4.25,679,2.029,715,2.733,745,2.809,779,2.903,792,3.876,1127,6.072,1140,4.906,1141,4.401,1142,4.401,1143,4.401,1144,3.621,1145,3.82,1146,4.068,1147,4.401,1148,4.401,1149,4.401,1150,4.068]],["sidebarParentCategories/160",[87,1.114]],["title/161",[30,1.435,806,3.037,940,2.879,1074,2.748]],["content/161",[30,3.246,31,0.983,55,1.796,78,4.308,89,3.375,96,1.658,112,2.327,119,3.876,189,2.655,238,2.84,311,3.325,336,3.173,374,2.176,416,2.58,543,2.327,692,2.224,779,1.932,792,2.58,793,2.224,809,3.173,856,3.461,925,2.738,940,3.325,1001,4.041,1074,3.173,1084,3.173,1092,3.507,1094,3.507,1096,3.507,1131,3.736,1151,4.041,1152,3.736,1153,4.505,1154,4.041,1155,4.041,1156,4.041,1157,4.041,1158,4.041,1159,4.041,1160,4.041,1161,3.736,1162,5.721,1163,4.041,1164,4.041,1165,4.041]],["sidebarParentCategories/161",[87,1.114]],["title/162",[30,1.657,149,2.045,1073,4.04]],["content/162",[30,1.728,31,1.025,34,1.531,55,1.809,59,2.617,96,1.728,118,4.755,119,2.855,150,2.786,212,3.309,237,2.768,322,1.943,362,2.014,363,2.486,393,2.949,397,2.318,398,3.467,433,1.295,441,3.055,522,2.925,541,4.755,543,3.393,584,3.105,779,2.014,792,2.69,1144,3.467,1145,3.657,1152,3.895,1166,3.309,1167,5.334,1168,4.214,1169,4.847,1170,4.214,1171,3.055,1172,3.895,1173,4.214,1174,4.214,1175,4.214]],["sidebarParentCategories/162",[87,1.114]],["title/163",[95,2.015,391,2.748,795,2.879,1097,3.499]],["content/163",[2,0.385,11,0.666,30,1.332,31,1.677,34,0.589,35,0.619,50,0.838,55,1.852,58,0.294,89,1.326,95,0.934,96,0.363,101,0.767,108,1.395,115,0.439,117,0.498,118,3.414,119,2.476,140,0.838,145,0.466,149,0.448,150,0.922,151,0.535,152,0.423,168,0.535,172,1.16,182,0.564,198,0.641,228,1.035,237,0.581,238,1.612,241,2.65,247,1.885,248,1.176,252,0.375,254,0.564,263,0.535,279,0.666,284,0.879,305,0.351,318,2.27,333,3.142,341,0.957,345,0.387,347,0.509,355,1.467,360,1.035,373,1.684,374,1.968,379,1.176,381,2.018,382,1.274,385,2.91,397,0.487,402,0.616,413,0.581,433,0.499,453,1.176,484,0.381,522,0.439,540,1.16,541,2.273,543,0.934,562,0.581,584,1.712,589,0.913,602,1.135,679,0.408,692,0.892,715,1.395,744,1.261,748,0.884,755,0.666,770,1.035,773,1.573,774,0.728,775,1.359,777,1.135,779,3.113,783,1.764,784,1.764,785,1.764,792,3.397,793,3.382,795,0.728,809,2.55,819,0.728,824,0.767,852,0.535,856,0.535,858,0.767,866,1.274,869,1.499,870,0.549,874,1.408,875,1.499,876,1.408,877,1.499,912,0.767,938,1.849,947,1.499,1043,1.335,1044,2.415,1045,1.222,1046,2.156,1050,0.767,1051,1.408,1052,0.767,1054,0.599,1056,0.817,1057,3.142,1059,1.764,1060,0.767,1061,0.728,1062,0.817,1071,0.767,1074,0.694,1075,0.817,1080,0.817,1081,0.817,1082,0.817,1084,1.274,1085,0.817,1086,1.408,1087,0.817,1088,0.767,1089,0.728,1090,0.767,1091,0.817,1092,1.408,1093,0.767,1094,0.767,1095,0.817,1096,0.767,1098,0.817,1099,0.884,1100,0.817,1101,0.884,1102,0.884,1103,0.767,1104,1.622,1105,0.884,1106,2.783,1119,1.622,1120,2.783,1121,1.622,1122,0.884,1123,1.622,1124,1.622,1125,0.884,1126,0.884,1131,0.817,1137,1.622,1138,0.884,1139,0.884,1142,0.884,1143,0.884,1144,1.335,1145,1.408,1146,0.817,1147,0.884,1148,0.884,1149,0.884,1150,0.817,1154,0.884,1155,0.884,1156,0.884,1157,0.884,1158,0.884,1159,0.884,1160,0.884,1161,0.817,1162,1.622,1163,0.884,1164,0.884,1165,0.884,1167,1.764,1168,0.884,1169,1.335,1170,0.884,1171,0.641,1172,0.817,1173,0.884,1174,0.884,1175,0.884,1176,0.986,1177,0.986,1178,0.986,1179,0.986,1180,0.986,1181,1.808,1182,0.986,1183,0.986,1184,0.986,1185,0.986,1186,0.986,1187,0.986,1188,0.986,1189,0.986,1190,0.986,1191,0.986,1192,0.986,1193,0.986,1194,1.808,1195,0.986,1196,0.884,1197,0.986,1198,0.986,1199,0.986,1200,0.986,1201,0.986,1202,0.986,1203,0.986,1204,0.986,1205,0.986,1206,0.986,1207,0.986]],["sidebarParentCategories/163",[87,1.114]],["title/164",[40,3.752,58,0.866]],["content/164",[30,3.28,145,4.215,149,4.048,237,4.44,803,5.865,985,5.09]],["sidebarParentCategories/164",[87,1.114]],["title/165",[398,3.931,603,3.237]],["content/165",[30,3.134,53,2.124,77,3.121,89,3.696,172,3.235,182,4.544,267,2.344,305,1.831,316,2.428,318,4.745,363,3.696,405,3.224,422,4.606,465,4.507,489,2.94,540,1.92,810,3.617,1046,3.696,1208,5.135,1209,4.606,1210,7.119,1211,5.437,1212,3.998,1213,3.617,1214,5.135,1215,5.135,1216,5.135,1217,4.606,1218,5.135,1219,4.606,1220,5.135]],["sidebarParentCategories/165",[87,1.114]],["title/142",[58,0.634,69,2.015,805,1.613,1221,3.499]],["content/142",[32,2.475,36,5.948,58,1.317,77,3.247,115,3.194,134,4.159,146,2.064,168,2.899,173,3.247,179,3.247,180,2.76,200,3.712,267,1.793,315,3.257,323,2.134,337,0.858,355,2.526,416,3.059,417,4.159,433,1.978,434,2.519,679,2.21,706,3.149,804,1.691,805,2.21,850,6.435,1134,4.792,1221,6.435,1222,5.342,1223,5.342,1224,5.342,1225,3.763,1226,5.342]],["sidebarParentCategories/142",[87,1.114]],["title/143",[315,2.045,337,0.723,804,1.426]],["content/143",[62,3.345,66,3.997,212,5.189,315,3.345,337,1.183,362,3.159,423,4.625,424,4.976,441,4.79,468,5.735,804,2.332]],["sidebarParentCategories/143",[87,1.114]],["title/144",[58,0.634,267,1.309,315,1.771,804,1.235]],["content/144",[2,1.185,30,1.376,31,1.721,50,1.733,55,1.833,140,1.733,172,1.733,200,2.389,210,1.135,239,3.764,252,1.421,315,3.023,336,2.635,345,2.188,355,2.634,373,2.03,374,1.806,375,3.355,402,1.274,540,1.398,602,2.349,605,1.932,666,3.355,723,2.527,744,2.264,773,3.498,775,3.023,777,2.349,778,3.102,779,2.855,804,2.712,813,2.03,817,3.355,818,3.355,819,2.761,824,2.912,943,2.761,1006,4.62,1227,6.658,1228,3.741,1229,3.741,1230,5.572,1231,3.741,1232,3.741,1233,3.741,1234,2.349,1235,3.741,1236,3.741,1237,3.741,1238,3.741,1239,3.102]],["sidebarParentCategories/144",[87,1.114]],["title/101",[322,1.863,423,2.828,804,1.426]],["content/101",[]],["sidebarParentCategories/101",[87,0.711,804,1.218,805,1.591]],["title/102",[403,4.591]],["content/102",[22,2.702,153,4.247,302,3.198,315,3.071,343,3.986,421,5.608,470,4.247,472,4.992,479,4.764,499,5.265,503,4.764,523,4.247,525,4.569,531,4.247,804,2.141,1240,4.992,1241,6.067,1242,6.067,1243,5.608]],["sidebarParentCategories/102",[87,0.711,804,1.218,805,1.591]],["title/103",[58,0.501,316,1.455,337,0.494,338,1.229,402,1.048,503,2.168]],["content/103",[]],["sidebarParentCategories/103",[87,0.711,804,1.218,805,1.591]],["title/104",[35,1.748,153,1.748,496,2.167,1244,2.783,1245,2.783,1246,2.783,1247,2.783]],["content/104",[337,1.21,431,4.899,485,5.561,503,5.307,508,7.872,510,6.758,1248,7.534]],["sidebarParentCategories/104",[87,0.711,804,1.218,805,1.591]],["title/105",[22,1.374,315,1.562,338,1.374,405,2.16,804,1.089]],["content/105",[22,3.08,315,3.501,433,2.126,434,2.707,531,4.841,804,2.441,1240,5.69]],["sidebarParentCategories/105",[87,0.711,804,1.218,805,1.591]],["title/106",[338,1.374,433,0.949,434,1.208,523,2.16,1249,2.853]],["content/106",[433,2.126,523,4.841,525,5.208,526,5.69,528,5.69,1250,6.393,1251,5.431]],["sidebarParentCategories/106",[87,0.711,804,1.218,805,1.591]],["title/107",[22,1.374,315,1.562,338,1.374,804,1.089,1252,2.853]],["content/107",[22,2.451,43,3.097,55,1.12,67,3.33,108,3.418,252,2.331,302,4.319,316,2.901,337,1.261,338,3.138,343,3.616,362,2.631,363,3.247,402,2.09,433,1.692,489,3.513,531,3.853,532,3.729,631,4.529,1213,4.322,1251,4.322,1253,7.046,1254,4.777]],["sidebarParentCategories/107",[87,0.711,804,1.218,805,1.591]],["title/108",[338,1.558,480,2.233,482,2.449,1255,3.235]],["content/108",[55,1.376,433,2.077,485,5.561,486,5.561,631,5.561,1251,5.307,1254,5.865,1256,7.534,1257,7.534]],["sidebarParentCategories/108",[87,0.711,804,1.218,805,1.591]],["title/175",[322,1.863,468,3.506,804,1.426]],["content/175",[22,3.08,397,3.805,425,5.431,426,6.002,436,6.916,587,5.431,603,4.685]],["sidebarParentCategories/175",[87,0.711,804,1.218,805,1.591]],["title/176",[403,4.591]],["content/176",[22,2.847,315,3.237,470,4.476,472,5.261,479,5.021,523,4.476,525,4.815,531,4.476,804,2.257,1240,5.261,1241,6.394,1242,6.394,1243,5.91,1258,7.128]],["sidebarParentCategories/176",[87,0.711,804,1.218,805,1.591]],["title/177",[58,0.501,316,1.455,337,0.494,338,1.229,402,1.048,440,1.932]],["content/177",[337,1.283,431,5.195,440,5.016,463,6.624]],["sidebarParentCategories/177",[87,0.711,804,1.218,805,1.591]],["title/178",[22,1.374,315,1.562,338,1.374,405,2.16,804,1.089]],["content/178",[22,3.08,315,3.501,433,2.126,434,2.707,531,4.841,804,2.441,1240,5.69]],["sidebarParentCategories/178",[87,0.711,804,1.218,805,1.591]],["title/179",[338,1.374,433,0.949,434,1.208,523,2.16,1249,2.853]],["content/179",[433,2.126,523,4.841,525,5.208,526,5.69,528,5.69,1250,6.393,1251,5.431]],["sidebarParentCategories/179",[87,0.711,804,1.218,805,1.591]],["title/180",[22,1.374,315,1.562,338,1.374,804,1.089,1252,2.853]],["content/180",[22,2.451,43,3.097,55,1.12,67,3.33,108,3.418,252,2.331,302,4.319,316,2.901,337,1.261,338,3.138,343,3.616,362,2.631,363,3.247,402,2.09,433,1.692,489,3.513,531,3.853,532,3.729,631,4.529,1213,4.322,1251,4.322,1253,7.046,1254,4.777]],["sidebarParentCategories/180",[87,0.711,804,1.218,805,1.591]],["title/181",[338,1.558,480,2.233,482,2.449,1255,3.235]],["content/181",[55,1.376,433,2.077,485,5.561,486,5.561,631,5.561,1251,5.307,1254,5.865,1259,7.534,1260,7.534]],["sidebarParentCategories/181",[87,0.711,804,1.218,805,1.591]],["title/145",[322,1.863,424,3.042,804,1.426]],["content/145",[]],["sidebarParentCategories/145",[87,0.711,804,1.218,805,1.591]],["title/146",[22,1.799,115,2.005,403,3.172]],["content/146",[4,5.16,17,3.07,238,3.672,322,2.741,337,1.324,370,5.16,424,6.065,470,5.178,514,5.496,525,4.477,745,3.795,1098,5.496,1211,5.16,1261,6.628,1262,6.628,1263,6.628]],["sidebarParentCategories/146",[87,0.711,804,1.218,805,1.591]],["title/147",[206,1.076,316,1.844,338,1.558,402,1.329]],["content/147",[58,0.921,115,2.522,162,4.409,238,2.522,284,3.319,402,1.929,434,3.383,469,4.696,470,3.556,483,4.18,536,3.338,544,3.825,1264,5.663,1265,5.663,1266,9.452,1267,5.663,1268,5.663,1269,5.663,1270,5.663,1271,5.663,1272,5.663,1273,5.663]],["sidebarParentCategories/147",[87,0.711,804,1.218,805,1.591]],["title/148",[22,1.374,315,1.562,338,1.374,405,2.16,804,1.089]],["content/148",[22,3.08,315,3.501,433,2.126,434,2.707,531,4.841,804,2.441,1240,5.69]],["sidebarParentCategories/148",[87,0.711,804,1.218,805,1.591]],["title/149",[338,1.374,433,0.949,434,1.208,523,2.16,1249,2.853]],["content/149",[433,2.126,523,4.841,525,5.208,526,5.69,528,5.69,1250,6.393,1274,7.71]],["sidebarParentCategories/149",[87,0.711,804,1.218,805,1.591]],["title/150",[22,1.374,315,1.562,338,1.374,804,1.089,1252,2.853]],["content/150",[22,2.497,43,3.155,115,2.784,170,3.925,252,2.375,296,3.799,316,2.956,338,3.176,362,2.681,402,2.129,424,5.37,433,1.724,482,3.925,489,3.58,531,3.925,532,3.799,546,4.404,647,5.608,1213,4.404,1275,7.131,1276,6.252,1277,5.608,1278,6.252,1279,5.608]],["sidebarParentCategories/150",[87,0.711,804,1.218,805,1.591]],["title/151",[284,1.208,338,1.374,482,2.16,544,2.324,1255,2.853]],["content/151",[284,2.586,424,4.976,482,4.625,1275,6.607,1277,6.607,1279,6.607,1280,7.366,1281,7.366,1282,7.366,1283,7.366,1284,7.366]],["sidebarParentCategories/151",[87,0.711,804,1.218,805,1.591]],["title/166",[267,1.788,699,1.177]],["content/166",[2,0.848,3,1.4,6,2.013,8,2.505,17,2.706,25,1.445,32,3.202,33,2.424,41,3.658,55,1.262,103,1.848,146,1.541,200,1.711,267,3.07,277,4.115,305,2.083,323,2.762,343,2.351,362,2.505,393,4.341,395,2.706,411,3.668,545,2.424,699,2.083,706,4.074,718,2.351,745,3.345,851,1.926,870,3.851,1004,4.312,1225,2.81,1285,3.578,1286,2.944,1287,2.695,1288,2.46,1289,2.949,1290,3.148,1291,4.115,1292,3.092]],["sidebarParentCategories/166",[]],["title/167",[41,2.383,55,0.822,699,0.995]],["content/167",[6,3.345,32,3.07,33,4.028,41,4.364,146,2.56,200,2.842,267,2.224,305,2.363,343,3.906,545,4.028,699,1.984,706,3.906,718,3.906,851,3.201,1004,4.892,1225,4.669,1286,4.892,1287,4.477]],["sidebarParentCategories/167",[]],["title/168",[55,0.628,267,1.155,1288,1.449,1289,1.737,1290,1.423]],["content/168",[8,2.842,17,3.07,32,3.07,267,3.013,277,4.669,323,2.648,362,2.842,393,4.162,395,3.07,411,4.162,699,1.984,706,3.906,745,3.795,870,3.692,1289,3.345,1290,2.741,1291,4.669]],["sidebarParentCategories/168",[]],["title/169",[55,0.628,267,1.155,1288,1.449,1290,1.423,1292,1.821]],["content/169",[8,2.842,17,3.07,32,3.07,267,3.013,277,4.669,323,2.648,362,2.842,393,4.162,395,3.07,411,4.162,699,1.984,706,3.906,745,3.795,870,3.692,1290,2.741,1291,4.669,1292,3.507]],["sidebarParentCategories/169",[]],["title/170",[305,2.324]],["content/170",[2,0.829,3,1.367,25,2.079,39,3.494,58,0.634,67,2.114,77,2.367,78,2.631,146,1.504,148,3.798,149,1.769,210,1.182,235,2.367,267,1.307,272,3.032,305,3.297,323,1.556,361,5.15,364,1.347,400,2.367,413,2.296,454,2.744,479,2.744,484,3.665,522,2.556,530,3.494,605,2.012,699,1.507,810,2.744,853,3.032,903,3.494,905,4.044,1211,3.032,1239,4.76,1243,3.23,1289,3.441,1293,3.895,1294,7.524,1295,2.833,1296,6.116,1297,3.895,1298,3.895,1299,5.741,1300,6.818,1301,3.895,1302,3.032,1303,3.895,1304,3.23,1305,3.494,1306,3.494,1307,3.494]],["sidebarParentCategories/170",[]],["title/171",[210,1.367,484,1.739,1295,2.223]],["content/171",[5,4.69,8,2.583,17,2.791,25,2.811,95,3.112,167,4.446,200,2.583,235,4.718,267,2.605,346,4.69,484,3.504,540,2.902,699,1.716,712,6.437,758,5.404,1295,4.478,1308,6.024,1309,4.995,1310,6.024]],["sidebarParentCategories/171",[]],["title/172",[95,2.327,484,1.739,1295,2.223]],["content/172",[2,1.051,3,1.736,34,1.611,77,3.004,81,4.597,93,2.554,95,2.554,112,2.554,120,3.339,148,2.754,149,2.245,159,3.215,163,3.004,233,3.848,235,3.004,254,2.83,258,3.848,267,1.659,292,3.648,305,1.762,323,1.975,344,4.099,351,2.554,362,2.12,441,3.215,456,2.83,475,3.339,480,2.83,484,3.395,540,2.544,575,3.848,587,3.482,677,3.648,699,1.092,706,2.913,737,2.29,849,4.099,870,2.754,1285,4.434,1288,2.865,1295,3.84,1309,4.099,1311,3.848,1312,4.943,1313,4.943,1314,4.099]],["sidebarParentCategories/172",[]],["title/173",[200,1.931,484,1.739,1295,2.223]],["content/173",[13,4.369,18,3.167,31,1.063,32,2.256,41,4.408,58,1.095,95,3.479,117,2.458,146,1.881,178,4.369,183,4.038,200,3.75,233,3.792,252,1.85,305,2.401,323,1.946,326,2.256,360,2.789,362,2.089,484,3.217,492,4.38,695,3.792,699,2.049,851,2.352,902,3.595,1030,3.595,1288,2.836,1295,3.81,1304,4.038,1307,4.369,1315,4.87,1316,3.792,1317,4.87,1318,4.87]],["sidebarParentCategories/173",[]],["title/174",[362,2.284,1288,2.243]],["content/174",[249,4.868,261,4.126,267,2.913,362,3.09,364,2.492,1288,3.923,1289,3.637,1290,3.59,1292,3.813]],["sidebarParentCategories/174",[]],["title/182",[41,2.819,699,1.177]],["content/182",[6,2.81,31,1.92,32,2.579,33,3.383,41,4.375,53,2.303,146,2.15,200,3.545,267,1.868,305,2.629,343,3.281,545,3.383,699,2.079,706,3.281,718,3.281,740,3.383,851,2.689,911,4.981,1004,4.109,1166,3.922,1225,3.922,1286,4.109,1287,3.761,1319,5.567,1320,4.334,1321,4.616]],["sidebarParentCategories/182",[699,1.331]],["title/183",[699,1.177,941,3.931]],["content/183",[31,2.09,41,4.284,53,2.661,125,5.335,200,3.472,305,2.294,388,3.684,699,1.958,718,3.792,740,3.91,911,5.984,1166,4.532,1225,4.532,1320,5.009]],["sidebarParentCategories/183",[699,1.331]],["title/184",[31,0.671,41,1.628,699,0.68,718,1.814,911,2.079,1166,2.168]],["content/184",[2,1.291,19,1.66,31,1.921,34,1.047,37,2.502,41,3.612,50,3.613,53,2.054,55,1.797,71,1.128,105,2.018,137,2.502,148,1.79,172,2.3,200,2.927,229,4.274,258,2.502,260,2.018,261,1.84,298,2.372,305,1.77,310,1.84,323,1.983,324,2.169,345,1.95,391,2.264,395,1.489,402,1.095,540,1.856,562,2.926,699,1.797,718,1.894,723,2.171,744,2.018,775,2.694,779,2.129,793,3.641,813,1.744,911,2.171,1030,2.372,1045,2.171,1093,2.502,1217,2.883,1287,2.171,1291,2.264,1322,3.664,1323,2.502,1324,4.117,1325,2.883,1326,2.665,1327,2.665,1328,2.883,1329,3.213,1330,3.213,1331,2.883,1332,3.213,1333,2.883,1334,2.883,1335,2.883]],["sidebarParentCategories/184",[699,1.331]],["title/185",[31,0.968,53,1.151,200,1.902,305,0.992,1320,2.167]],["content/185",[2,1.074,31,1.808,34,0.793,37,3.098,41,2.106,50,3.198,53,2.855,55,1.772,71,0.854,89,1.288,134,1.894,147,1.714,148,1.355,168,1.32,171,1.288,172,1.843,200,3.124,229,1.714,232,1.528,249,1.644,261,2.278,294,1.714,298,4.746,305,2.955,310,1.393,316,1.15,323,1.589,324,1.063,345,1.983,351,2.056,395,1.127,400,2.418,402,0.829,405,1.528,456,1.393,532,1.479,535,2.182,538,2.182,540,1.887,562,3.79,603,1.479,699,1.116,718,1.434,723,1.644,744,0.989,775,2.159,779,1.706,793,2.878,813,1.32,911,3.41,941,1.796,943,2.937,1030,1.796,1045,1.644,1078,1.714,1166,2.803,1225,1.714,1287,1.644,1320,1.894,1322,1.796,1323,3.098,1324,6.303,1325,2.182,1326,2.017,1327,2.017,1331,3.569,1333,2.182,1334,2.182,1335,2.182,1336,2.182,1337,2.182,1338,2.433,1339,3.979,1340,2.433,1341,5.048,1342,2.433,1343,2.182,1344,2.182,1345,2.433,1346,3.979,1347,2.182,1348,2.433,1349,2.433,1350,2.433,1351,1.894]],["sidebarParentCategories/185",[699,1.331]],["title/186",[31,0.851,699,0.862,740,2.371,911,2.635]],["content/186",[2,1.513,6,2.115,31,1.879,34,1.366,38,3.093,41,2.218,50,1.942,55,1.739,58,0.682,71,1.472,148,2.335,171,2.218,200,2.597,284,1.472,305,1.494,310,2.4,345,2.379,355,1.982,362,1.797,366,3.475,388,3.468,395,1.942,402,1.428,540,1.567,562,3.569,589,3.057,679,2.505,699,1.903,723,2.831,725,3.76,744,2.89,775,3.286,779,1.797,793,2.068,813,2.274,1003,5.022,1045,2.831,1129,3.76,1288,1.765,1322,3.093,1324,3.475,1343,3.76,1352,4.191,1353,3.76,1354,3.76,1355,3.76,1356,4.191]],["sidebarParentCategories/186",[699,1.331]],["title/187",[1321,5.404]],["content/187",[17,2.131,34,1.499,35,2.888,41,3.425,58,0.748,84,3.705,102,1.486,159,2.991,170,2.888,172,2.998,190,2.711,209,3.395,254,2.633,261,2.633,364,1.59,417,5.038,489,3.705,492,2.991,541,2.888,544,4.372,699,1.796,712,3.814,740,2.795,851,2.221,871,3.581,905,3.24,943,3.395,1024,3.814,1046,2.434,1213,3.24,1288,3.153,1321,8.045,1357,4.599,1358,6.471,1359,4.599,1360,4.599,1361,4.599,1362,6.471,1363,3.814,1364,4.599,1365,4.599]],["sidebarParentCategories/187",[699,1.331]],["title/189",[267,1.309,1288,1.643,1289,1.969,1290,1.613]],["content/189",[2,1.911,8,1.721,17,2.718,32,1.859,55,1.072,70,2.328,71,1.409,265,1.859,267,2.561,277,2.827,294,2.827,302,1.898,305,2.092,310,3.36,323,2.771,324,1.753,327,2.896,328,3.501,329,2.962,337,0.942,362,1.721,389,2.236,393,2.52,395,2.718,402,1.367,411,2.52,433,1.618,434,2.06,453,2.61,699,1.936,706,2.365,718,2.365,745,3.36,870,2.236,1289,2.026,1290,2.427,1291,2.827,1322,2.962,1366,3.328,1367,3.6,1368,3.6,1369,7.632,1370,7.632,1371,3.6,1372,5.868]],["sidebarParentCategories/189",[699,1.331]],["title/190",[95,2.327,484,1.739,1295,2.223]],["content/190",[17,2.342,20,3.562,32,3.647,103,2.342,117,2.552,123,3.201,146,1.953,152,2.964,171,2.676,210,1.534,224,2.98,238,3.506,267,1.697,292,3.732,305,1.803,326,2.342,392,3.416,408,3.732,409,3.732,475,3.416,484,3.269,492,3.288,540,1.89,587,3.562,677,3.732,692,3.411,699,1.117,705,3.732,737,2.342,745,2.895,851,2.442,1234,3.175,1289,2.552,1295,4.177,1314,4.193,1373,3.175,1374,3.562,1375,4.536,1376,3.562]],["sidebarParentCategories/190",[699,1.331]],["title/191",[30,1.96,737,2.467]],["content/191",[8,0.735,17,0.794,19,0.481,30,2.775,33,0.565,43,0.47,44,0.771,50,0.431,51,0.834,53,1.619,55,1.752,58,0.701,59,1.328,62,0.778,68,0.93,72,1.422,73,1.042,77,0.565,89,0.907,90,1.977,92,0.628,95,1.232,102,0.394,108,0.518,114,0.982,120,0.628,123,1.105,130,1.158,138,0.724,140,1.373,145,2.354,147,0.655,148,0.955,149,0.778,150,0.342,151,0.505,152,2.991,156,0.724,159,0.605,163,0.565,171,0.907,179,0.565,180,0.481,182,0.982,190,1.405,191,3.592,202,1.076,204,2.087,210,0.52,218,0.687,221,0.687,223,0.834,229,1.208,235,0.565,237,2.747,242,0.771,252,0.353,264,0.565,267,0.575,294,0.655,298,1.265,305,1.057,330,0.687,338,0.372,345,0.365,346,0.724,350,0.628,351,2.408,357,1.405,360,0.533,364,0.322,374,1.431,385,1.115,391,0.655,395,0.431,397,0.459,400,0.565,433,1.648,456,0.533,478,0.687,480,0.533,484,1.34,492,0.605,512,1.405,522,1.32,532,0.565,536,1.405,540,1.463,541,1.861,543,3.375,562,0.548,574,0.628,605,1.232,699,0.865,706,1.747,737,1.996,770,0.533,779,2.932,792,0.533,793,2.457,807,0.771,810,0.655,833,0.771,851,1.431,856,1.608,925,1.801,930,0.834,938,1.265,939,0.771,942,1.538,948,1.422,957,1.431,985,3.149,996,1.977,1005,1.856,1046,1.836,1078,1.208,1084,1.208,1136,0.724,1144,4.077,1152,4.128,1167,1.208,1169,3.44,1171,1.115,1172,0.771,1234,0.584,1286,0.687,1287,0.628,1289,1.203,1290,0.986,1295,0.459,1302,0.724,1305,0.834,1306,0.834,1316,1.335,1323,0.724,1351,0.724,1373,0.584,1374,1.68,1376,0.655,1377,0.93,1378,2.139,1379,2.757,1380,0.93,1381,0.771,1382,0.834,1383,1.265,1384,3.865,1385,1.714,1386,2.658,1387,0.93,1388,1.422,1389,1.714,1390,1.714,1391,0.93,1392,0.93,1393,2.559,1394,1.158,1395,1.68,1396,1.977,1397,0.93,1398,0.93,1399,0.771,1400,1.538,1401,0.834,1402,0.93,1403,1.714,1404,0.771,1405,0.93,1406,0.93,1407,1.714,1408,1.714,1409,2.963,1410,0.93,1411,0.834,1412,0.93,1413,0.93,1414,0.93,1415,0.93,1416,0.93,1417,0.93,1418,0.93,1419,0.93,1420,1.714,1421,1.714,1422,1.714,1423,1.714,1424,2.963,1425,0.834,1426,2.307,1427,2.139,1428,1.68,1429,2.139,1430,0.834,1431,1.714,1432,0.93,1433,0.834,1434,0.834,1435,1.714,1436,0.93,1437,0.93,1438,0.93,1439,0.93,1440,0.93,1441,0.93,1442,0.93,1443,0.93,1444,0.834,1445,0.834,1446,0.771,1447,1.538,1448,0.724]],["sidebarParentCategories/191",[699,1.331]],["title/192",[150,1.96,737,2.467]],["content/192",[34,1.601,55,1.758,58,1.024,62,0.595,63,1.086,65,1.94,68,2.091,73,1.422,89,1.238,117,0.661,120,1.58,130,0.885,132,1.02,145,2.323,150,3.132,179,1.422,180,0.677,190,0.772,202,0.823,204,2.714,238,0.583,263,4.273,264,0.796,267,1.063,305,0.467,311,0.967,323,0.523,342,3.117,345,0.514,351,2.286,357,0.772,364,0.453,368,1.02,374,1.53,397,1.154,400,1.926,411,0.823,416,0.75,452,0.967,474,1.02,480,1.339,484,1.488,492,0.852,522,1.042,540,0.874,543,1.208,602,1.469,603,0.796,605,0.677,607,1.175,699,0.29,716,3.194,737,2.05,744,1.996,754,1.175,755,2.989,767,1.086,779,2.993,793,2.968,846,1.821,852,4.759,925,3.655,945,2.467,957,0.633,1024,1.086,1046,1.677,1054,4.786,1057,1.521,1059,2.714,1061,1.726,1063,2.628,1064,1.086,1065,1.086,1066,1.94,1071,1.02,1072,1.086,1074,1.648,1077,3.969,1078,1.648,1083,1.086,1086,1.821,1088,1.02,1090,1.02,1103,2.467,1136,1.02,1219,1.175,1239,1.086,1289,1.181,1290,0.968,1302,1.02,1311,1.02,1351,1.02,1363,1.086,1373,0.823,1376,2.232,1393,2.917,1394,0.885,1395,1.648,1399,1.086,1449,1.31,1450,1.31,1451,1.31,1452,1.175,1453,1.31,1454,1.31,1455,2.098,1456,1.31,1457,1.31,1458,1.31,1459,0.923,1460,3.969,1461,1.31,1462,1.31,1463,1.31,1464,1.31,1465,1.31,1466,1.086,1467,2.339,1468,1.31,1469,2.339,1470,2.339,1471,1.31,1472,1.31,1473,1.31,1474,1.31,1475,1.31,1476,1.175,1477,1.31,1478,2.843,1479,1.31,1480,1.31,1481,1.31,1482,1.31,1483,1.31,1484,1.31,1485,1.31,1486,1.31,1487,1.31,1488,1.31]],["sidebarParentCategories/192",[699,1.331]],["title/193",[152,1.902,210,0.845,540,1.041,692,1.374,699,0.615,851,1.344]],["content/193",[2,1.014,6,1.54,25,1.105,33,1.854,34,0.994,37,2.375,55,1.755,58,0.776,68,2.587,102,0.7,123,1.413,152,3.274,171,1.614,174,4.277,179,1.854,210,2.633,224,4.244,230,3.101,267,1.024,305,1.7,311,2.251,323,1.219,345,2.607,351,1.576,478,2.251,484,1.842,522,2.123,545,1.854,574,4.483,575,3.712,605,1.576,692,1.505,711,2.149,737,1.413,813,2.587,851,2.835,925,1.854,1055,2.529,1146,2.529,1166,2.149,1234,1.915,1289,1.54,1290,1.262,1295,1.505,1296,2.736,1316,2.375,1344,5.265,1373,1.915,1374,2.149,1489,2.736,1490,2.736,1491,4.768,1492,3.05,1493,5.87,1494,3.05,1495,6.637,1496,4.277,1497,3.05,1498,5.953,1499,3.05,1500,2.736,1501,4.768,1502,4.768,1503,3.05,1504,3.05,1505,3.05,1506,2.736,1507,3.05,1508,3.05,1509,3.05]],["sidebarParentCategories/193",[699,1.331]],["title/194",[200,1.931,484,1.739,1295,2.223]],["content/194",[5,3.305,20,4.306,25,1.537,32,1.966,41,4.147,43,3.085,47,3.305,55,1.431,58,0.994,59,2.365,77,2.58,96,1.562,117,2.143,123,1.966,140,2.832,165,3.305,200,2.621,243,2.665,323,1.696,326,1.966,345,1.667,362,1.82,364,1.468,413,2.502,455,3.133,484,3.341,532,4.353,594,3.52,699,1.732,744,1.725,802,3.305,810,2.99,811,3.52,870,2.365,890,3.305,902,3.133,1100,3.52,1288,2.574,1289,2.143,1295,3.535,1326,3.52,1327,5.068,1373,3.838,1379,2.99,1382,3.808,1393,1.966,1401,3.808,1510,4.245,1511,4.245,1512,3.808,1513,3.808]],["sidebarParentCategories/194",[699,1.331]],["title/195",[30,1.96,221,3.931]],["content/195",[30,2.635,53,1.756,55,1.666,73,2.58,84,2.431,123,1.966,140,1.966,147,2.99,180,2.193,182,3.5,190,2.502,200,1.82,221,5.287,374,2.952,388,2.431,397,2.095,454,2.99,479,2.99,480,2.431,522,1.89,543,4.468,545,2.58,605,2.193,692,2.095,779,1.82,851,2.05,957,4.01,1078,2.99,1169,5.287,1196,3.808,1289,3.085,1290,1.756,1381,3.52,1393,1.966,1396,7.172,1411,3.808,1514,7.836,1515,3.808,1516,4.245,1517,4.245,1518,4.245,1519,4.245,1520,4.245,1521,4.245]],["sidebarParentCategories/195",[699,1.331]],["title/196",[30,1.435,957,1.884,1288,1.643,1393,1.807]],["content/196",[30,3.207,53,1.496,55,1.81,58,0.884,68,2.949,114,2.071,145,2.57,149,2.468,152,2.33,190,2.132,202,2.272,237,3.203,261,2.071,263,1.963,264,2.199,305,1.938,400,2.199,433,1.8,480,3.111,512,3.203,522,1.611,536,2.132,545,2.199,719,2.548,851,1.747,867,4.506,985,2.444,1030,2.67,1161,4.506,1171,2.353,1234,2.272,1288,1.523,1289,1.826,1290,1.496,1373,2.272,1379,2.548,1393,3.023,1426,4.231,1427,4.875,1428,3.828,1429,4.875,1522,4.875,1523,2.444,1524,5.434,1525,6.526,1526,5.434,1527,5.434,1528,5.434,1529,5.434,1530,5.434]],["sidebarParentCategories/196",[699,1.331]],["title/197",[347,2.327,1393,2.086,1459,3.172]],["content/197",[17,1.467,19,1.636,31,1.071,43,1.599,58,0.515,59,1.764,89,2.598,117,1.599,127,4.404,148,2.735,149,1.438,171,1.676,228,3.442,229,2.231,284,3.013,288,2.626,341,1.676,347,4.612,355,3.202,388,3.442,397,3.342,400,2.984,484,1.223,489,2.811,605,1.636,679,1.31,699,0.7,711,2.231,745,1.813,767,2.626,849,2.626,905,2.231,912,2.466,1033,2.626,1046,1.676,1213,2.231,1287,2.14,1328,4.404,1347,4.404,1355,2.841,1393,2.785,1404,2.626,1459,6.47,1506,4.404,1531,6.012,1532,8.581,1533,3.167,1534,3.167,1535,3.167,1536,4.91,1537,4.91,1538,2.841,1539,3.167,1540,4.91,1541,4.91,1542,3.167,1543,3.167,1544,3.167,1545,3.167,1546,3.167,1547,2.841,1548,4.91,1549,4.91]],["sidebarParentCategories/197",[699,1.331]],["title/198",[32,2.086,93,2.327,536,2.654]],["content/198",[32,4.092,53,2.772,55,1.355,58,0.615,59,2.108,62,1.718,81,2.556,84,3.217,93,1.955,113,3.796,147,2.665,150,2.916,200,2.41,218,2.792,221,2.792,226,2.665,239,2.556,253,3.394,268,2.792,305,1.349,351,1.955,397,1.867,433,1.043,434,1.328,481,2.792,536,2.23,605,1.955,699,1.242,755,3.796,770,2.166,957,1.827,1089,2.792,1234,2.376,1286,2.792,1288,2.366,1289,1.91,1290,1.565,1366,4.659,1373,2.376,1393,3.672,1394,2.556,1448,2.946,1523,2.556,1550,3.783,1551,5.619,1552,5.619,1553,5.619,1554,3.783,1555,6.703,1556,3.783,1557,5.619,1558,3.394,1559,3.394,1560,3.783,1561,3.783,1562,3.783,1563,3.783,1564,3.783,1565,3.783,1566,3.783,1567,3.783,1568,3.783,1569,3.783]],["sidebarParentCategories/198",[699,1.331]],["title/199",[263,2.117,1054,2.371,1288,1.643,1393,1.807]],["content/199",[34,2.362,35,3.027,53,1.279,55,1.402,58,1.179,65,5.545,84,1.771,90,2.565,145,2.279,148,1.723,150,3.135,152,1.327,179,1.88,180,1.598,190,1.823,191,2.012,210,0.939,227,3.395,263,3.629,264,1.88,284,1.086,342,2.179,357,2.841,373,1.679,374,1.494,400,1.88,512,3.491,522,1.377,536,1.823,540,2.214,589,1.561,605,1.598,715,1.723,716,2.565,737,1.433,770,1.771,852,4.958,874,2.408,925,1.88,1054,4.064,1057,3.135,1212,2.408,1288,1.303,1289,1.561,1290,1.279,1351,2.408,1393,3.557,1394,2.09,1448,2.408,1455,2.775,1466,2.565,1523,2.09,1559,2.775,1570,5.922,1571,3.093,1572,3.093,1573,4.82,1574,3.093,1575,3.093,1576,4.82,1577,3.093,1578,4.82,1579,4.82,1580,4.82,1581,4.82,1582,4.82,1583,3.093,1584,3.093,1585,3.093,1586,3.093]],["sidebarParentCategories/199",[699,1.331]],["title/200",[150,1.435,342,2.748,1459,2.748,1587,3.499]],["content/200",[8,1.972,18,2.991,55,1.484,77,2.795,92,3.107,145,3.54,150,3.15,167,3.395,342,6.031,356,3.814,512,2.711,522,2.048,543,4.197,605,2.376,699,1.016,839,5.038,852,4.063,957,2.221,1046,2.434,1103,5.038,1288,1.937,1289,2.321,1354,4.126,1373,2.888,1393,3.764,1395,4.558,1399,3.814,1452,4.126,1459,6.031,1478,4.126,1523,3.107,1588,4.599,1589,6.471,1590,4.599,1591,4.599,1592,4.599]],["sidebarParentCategories/200",[699,1.331]],["title/216",[267,1.309,1288,1.643,1290,1.613,1292,2.064]],["content/216",[2,1.911,8,1.721,17,2.718,32,1.859,55,1.072,70,2.328,71,1.409,265,1.859,267,2.561,277,2.827,294,2.827,302,1.898,305,2.092,310,3.36,323,2.771,324,1.753,327,2.896,328,3.501,329,2.962,337,0.942,362,1.721,389,2.236,393,2.52,395,2.718,402,1.367,411,2.52,433,1.618,434,2.06,453,2.61,699,1.936,706,2.365,718,2.365,726,6.846,727,5.264,728,6.846,745,3.36,870,2.236,1290,1.66,1291,2.827,1292,3.106,1322,2.962,1366,3.328,1367,3.6,1368,3.6,1371,3.6]],["sidebarParentCategories/216",[699,1.331]],["title/217",[95,2.327,484,1.739,1295,2.223]],["content/217",[17,2.379,20,3.617,32,3.676,103,2.379,117,2.592,123,3.676,146,1.983,171,2.717,224,3.026,238,3.534,267,1.723,292,3.79,305,1.831,315,2.332,326,2.379,392,3.469,408,3.79,409,3.79,475,3.469,484,3.29,492,3.339,587,3.617,677,3.79,692,3.447,699,1.135,705,3.79,737,3.235,745,2.94,1234,3.224,1290,2.124,1295,4.204,1314,4.258,1374,3.617,1375,4.606,1376,3.617,1593,3.998]],["sidebarParentCategories/217",[699,1.331]],["title/218",[31,1.162,1594,4.778]],["content/218",[18,2.852,31,1.908,50,2.032,55,1.332,62,1.991,66,2.38,87,0.811,130,2.963,140,2.898,190,3.688,239,2.963,261,2.511,284,1.54,340,2.852,355,3.449,388,2.511,402,2.865,415,3.637,465,2.321,540,2.339,603,2.665,692,2.165,699,0.969,737,3.379,744,3.418,770,2.511,773,2.754,775,3.958,779,2.683,802,3.414,851,3.022,866,3.089,876,3.414,957,2.118,1006,3.637,1288,1.847,1290,1.814,1292,2.321,1376,3.089,1595,3.637,1596,6.257,1597,4.386,1598,3.934,1599,4.386,1600,4.386]],["sidebarParentCategories/218",[699,1.331]],["title/219",[145,2.129,1089,3.324,1601,4.04]],["content/219",[2,1.051,31,1.698,58,1.107,77,3.004,102,1.135,112,2.554,140,2.29,145,2.337,149,2.245,171,2.616,179,3.004,204,3.482,211,4.597,232,3.104,267,1.659,284,2.389,325,3.482,355,2.337,522,2.201,562,2.913,679,2.045,695,3.848,699,1.092,710,4.099,715,2.754,832,6.104,833,4.099,860,4.099,1004,3.648,1141,4.434,1209,4.434,1304,4.099,1363,4.099,1379,3.482,1383,5.022,1394,3.339,1547,4.434,1601,6.104,1602,4.943,1603,6.804,1604,4.943,1605,4.943,1606,4.943,1607,4.943,1608,4.943,1609,4.943]],["sidebarParentCategories/219",[699,1.331]],["title/220",[268,3.324,536,2.654,737,2.086]],["content/220",[2,1.494,31,1.37,55,1.836,58,0.552,73,2.063,123,1.573,167,2.506,264,2.063,268,2.506,272,2.643,302,1.605,327,1.676,344,2.815,345,2.034,360,1.944,364,1.174,388,1.944,402,1.156,416,3.595,480,2.965,522,1.512,532,2.063,536,2.001,540,2.347,562,2.001,692,2.556,701,6.301,708,4.646,737,3.504,744,2.105,775,1.842,779,1.456,793,3.467,885,2.815,1290,1.404,1292,1.797,1595,2.815,1610,3.395,1611,5.179,1612,5.179,1613,5.179,1614,5.179,1615,5.179,1616,3.045,1617,5.179,1618,5.179,1619,3.395,1620,5.179,1621,5.179,1622,5.179,1623,7.024,1624,3.395,1625,3.395,1626,3.395]],["sidebarParentCategories/220",[699,1.331]],["title/221",[235,2.737,737,2.086,978,3.734]],["content/221",[8,1.163,31,0.592,34,0.884,55,1.592,58,0.707,68,3.373,84,2.488,111,1.511,130,2.935,141,2.112,145,3.745,146,1.678,179,2.641,202,1.703,216,2.249,218,2.002,235,4.41,237,3.204,252,1.031,284,0.952,305,0.967,316,1.283,318,1.511,323,1.084,334,6.32,340,1.764,351,2.245,356,2.249,388,1.553,397,1.339,479,1.911,522,1.208,540,1.624,589,1.369,603,1.648,677,2.002,692,1.339,694,1.832,719,3.061,737,2.879,770,2.488,779,2.331,793,3.068,851,3.002,856,1.472,867,2.249,889,1.832,957,1.31,978,4.507,985,1.832,1046,2.299,1136,2.112,1167,3.829,1171,2.826,1290,1.797,1292,2.299,1337,2.433,1379,1.911,1383,2.002,1388,3.603,1404,5.154,1466,2.249,1538,3.898,1587,2.433,1627,2.713,1628,4.345,1629,2.433,1630,4.345,1631,5.436,1632,2.713,1633,4.345,1634,4.345,1635,2.713,1636,2.713,1637,2.713,1638,4.345,1639,4.345,1640,2.713,1641,2.713,1642,2.713,1643,2.713,1644,2.713,1645,2.713,1646,2.713,1647,2.433,1648,2.713,1649,2.713,1650,2.713,1651,2.433,1652,2.433]],["sidebarParentCategories/221",[699,1.331]],["title/222",[465,2.819,737,2.467]],["content/222",[30,2.567,172,3.232,182,3.995,318,3.887,355,3.299,465,3.692,484,2.695,603,4.24,866,4.915,1210,6.259,1211,5.432,1212,5.432,1653,6.259,1654,6.977,1655,6.977,1656,6.977]],["sidebarParentCategories/222",[699,1.331]],["title/223",[225,2.89,737,2.467]],["content/223",[6,0.91,8,1.327,17,0.835,30,0.663,34,0.587,43,0.91,50,0.835,53,0.746,55,1.679,58,0.784,62,1.405,68,1.679,73,1.096,77,1.096,95,0.931,108,1.004,114,1.772,123,0.835,130,2.09,140,1.433,145,2.801,149,0.819,152,3.207,153,1.132,156,1.404,163,1.096,171,0.954,179,1.096,190,1.063,202,1.132,210,0.547,225,3.793,229,1.27,237,3.491,242,1.495,243,1.132,264,1.096,267,0.605,305,1.449,323,0.72,330,1.331,338,0.72,350,1.218,351,2.491,357,1.063,360,1.032,364,0.623,433,1.121,456,1.032,478,1.331,480,1.032,484,1.195,512,1.063,522,2.417,532,1.096,536,1.824,540,1.52,541,3.028,543,2.491,574,1.218,605,0.931,699,0.898,737,2.514,779,2.868,793,3.128,851,2.861,957,0.871,985,4.002,996,3.371,1005,3.165,1046,0.954,1078,1.27,1144,3.559,1145,2.409,1167,2.18,1169,2.284,1171,2.012,1234,1.132,1290,1.28,1292,1.638,1302,1.404,1373,1.132,1374,2.864,1376,1.27,1383,2.284,1384,2.776,1386,2.776,1388,2.566,1393,2.234,1394,1.218,1395,2.18,1425,1.617,1426,3.754,1428,2.864,1430,1.617,1433,1.617,1434,1.617,1444,1.617,1445,1.617,1446,1.495,1447,2.776,1657,4.822,1658,1.404,1659,1.803,1660,1.803,1661,1.803,1662,1.803,1663,3.094,1664,1.803,1665,3.094,1666,1.803,1667,1.803,1668,4.822,1669,1.803,1670,3.094,1671,3.094,1672,3.094,1673,1.617,1674,1.617,1675,3.647,1676,3.094,1677,1.803,1678,2.776,1679,3.094,1680,1.803,1681,1.803,1682,1.803,1683,1.803,1684,1.803,1685,1.803]],["sidebarParentCategories/223",[699,1.331]],["title/224",[30,1.435,225,2.117,263,2.117,1054,2.371]],["content/224",[5,1.944,6,2.052,20,1.759,34,1.93,55,1.818,58,0.963,89,1.322,96,0.919,137,1.944,146,0.965,150,2.825,151,1.355,152,3.654,167,1.843,180,1.29,202,1.568,225,2.206,227,1.759,232,1.568,237,1.472,263,3.214,284,0.877,326,1.157,338,0.998,351,2.1,357,2.396,395,1.157,416,2.327,433,0.689,512,1.472,522,2.289,540,1.52,541,2.552,562,1.472,589,1.261,715,1.391,719,1.759,737,1.883,755,1.687,779,2.796,793,2.923,846,4.001,852,2.789,1038,2.071,1054,3.6,1057,1.624,1058,2.071,1059,2.863,1060,1.944,1061,3,1171,1.624,1290,1.033,1292,1.322,1309,2.071,1353,2.24,1378,2.24,1395,2.863,1396,3.37,1428,1.759,1476,2.24,1594,5.313,1674,2.24,1678,3.646,1686,4.065,1687,4.065,1688,4.065,1689,4.065,1690,4.065,1691,2.24,1692,2.497,1693,4.065,1694,4.065,1695,4.065,1696,4.065,1697,4.065,1698,2.497,1699,2.497,1700,2.497,1701,2.497,1702,2.497,1703,2.497,1704,2.497,1705,2.497]],["sidebarParentCategories/224",[699,1.331]],["title/225",[123,1.425,315,1.397,540,1.15,692,1.519,699,0.68,737,1.425]],["content/225",[2,0.754,6,0.483,17,0.443,25,0.347,31,0.661,34,0.312,53,0.396,55,1.815,58,0.649,59,0.533,62,0.435,73,0.582,83,0.859,84,0.548,92,1.189,93,1.83,111,1.974,123,2.198,138,0.745,145,1.433,146,0.68,148,0.533,150,0.352,151,0.519,152,2.507,160,1.579,171,0.931,179,1.07,210,0.92,216,0.794,220,1.145,224,3.446,226,1.24,227,2.496,232,0.601,235,1.485,240,2.719,254,0.548,261,0.548,267,0.321,279,0.647,288,0.794,298,0.707,306,0.794,315,0.799,318,1.689,323,0.703,327,2.167,336,0.674,342,0.674,345,1.392,351,1.566,360,1.399,364,0.331,374,0.462,381,0.623,388,1.008,395,0.815,402,0.6,416,1.008,474,0.745,478,0.707,484,0.68,492,0.623,522,1.578,540,2.473,562,2.088,574,3.42,603,0.582,692,1.206,699,0.54,711,0.674,719,0.674,737,2.901,744,0.715,775,0.519,779,2.406,792,2.286,793,2.342,813,1.923,851,0.85,860,0.794,885,0.794,925,0.582,1005,2.36,1033,0.794,1046,1.604,1084,1.24,1151,0.859,1167,2.135,1212,0.745,1234,0.601,1290,1.011,1292,1.293,1295,0.472,1311,2.36,1316,0.745,1323,0.745,1336,2.719,1374,1.24,1381,0.794,1393,2.985,1428,1.24,1446,1.459,1448,1.37,1459,0.674,1460,0.859,1489,0.859,1490,0.859,1496,1.579,1498,0.859,1500,0.859,1515,0.859,1593,0.745,1595,2.026,1598,0.859,1616,3.178,1647,1.579,1651,0.859,1652,2.192,1658,0.745,1673,1.579,1691,0.859,1706,0.957,1707,0.957,1708,4.39,1709,2.443,1710,0.957,1711,0.957,1712,0.957,1713,0.957,1714,0.957,1715,0.957,1716,3.031,1717,0.957,1718,1.76,1719,1.76,1720,1.76,1721,0.957,1722,0.957,1723,5.846,1724,0.957,1725,0.957,1726,0.957,1727,0.957,1728,0.957,1729,2.443,1730,0.957,1731,0.957,1732,0.957,1733,1.76,1734,3.992,1735,3.031,1736,3.992,1737,1.76,1738,3.031,1739,1.76,1740,0.957,1741,0.957,1742,1.76,1743,1.76,1744,1.76,1745,0.957,1746,1.76,1747,1.76,1748,0.957,1749,0.957,1750,0.957,1751,0.957,1752,0.957,1753,0.957,1754,3.031,1755,0.957,1756,3.992,1757,0.957,1758,1.76,1759,0.957,1760,0.957,1761,0.957,1762,0.957,1763,0.957,1764,0.957,1765,0.957,1766,0.957,1767,1.76,1768,0.957,1769,0.957,1770,0.957,1771,0.957,1772,3.992,1773,2.443,1774,3.543,1775,3.543,1776,0.957,1777,0.957,1778,0.957,1779,0.957,1780,1.76,1781,0.957,1782,0.957,1783,0.957,1784,0.957,1785,0.957,1786,0.957,1787,0.957,1788,0.957,1789,0.957,1790,0.957,1791,0.957]],["sidebarParentCategories/225",[699,1.331]],["title/226",[200,1.931,484,1.739,1295,2.223]],["content/226",[32,2.325,41,4.464,43,3.47,47,3.907,58,0.816,92,3.39,96,1.846,117,2.533,140,3.185,200,2.948,225,2.723,243,3.151,326,2.325,345,1.971,362,2.152,413,2.958,484,3.258,532,3.05,594,4.161,699,1.864,744,2.039,802,3.907,810,3.535,811,4.161,870,2.795,902,3.704,1288,2.895,1290,2.076,1292,2.656,1295,3.393,1379,3.535,1383,3.704,1393,2.325,1395,3.535,1512,4.501,1513,4.501,1593,3.907,1658,3.907,1792,5.018]],["sidebarParentCategories/226",[699,1.331]],["title/227",[225,2.117,957,1.884,1288,1.643,1393,1.807]],["content/227",[53,2.091,55,1.83,58,0.822,68,2.744,114,2.895,145,3.268,152,2.964,225,3.75,237,4.073,263,2.744,264,3.073,305,2.464,480,3.957,512,2.98,522,2.252,536,2.98,545,3.073,1171,3.288,1288,2.129,1290,2.091,1292,2.676,1393,3.647,1426,5.38,1428,4.868,1522,6.199,1523,3.416,1593,3.937,1675,6.199]],["sidebarParentCategories/227",[699,1.331]],["title/228",[150,1.435,957,1.884,1288,1.643,1393,1.807]],["content/228",[58,0.898,59,3.075,130,3.73,146,2.132,150,3.227,171,2.922,210,2.225,239,3.73,249,3.73,284,1.938,327,2.725,334,4.578,347,2.852,522,2.459,957,2.666,1150,6.08,1288,2.325,1311,4.298,1393,2.558,1400,4.952,1523,3.73,1558,4.952,1629,6.577,1653,4.952,1658,4.298,1793,5.521,1794,8.233,1795,5.521,1796,5.521,1797,5.521,1798,5.521,1799,5.521,1800,5.521]],["sidebarParentCategories/228",[699,1.331]],["title/229",[957,2.175,1288,1.896,1393,2.086]],["content/229",[9,4.777,34,1.877,53,2.383,55,1.629,84,3.299,150,2.12,180,2.976,202,3.618,218,4.252,264,3.501,279,3.892,374,4.307,456,3.299,522,2.566,540,2.154,605,2.976,957,4.06,1288,2.426,1290,2.383,1292,3.049,1393,3.494,1394,3.892,1523,3.892,1801,5.761,1802,7.541,1803,5.761]],["sidebarParentCategories/229",[699,1.331]]],"invertedIndex":[["",{"_index":55,"title":{"2":{},"3":{},"4":{},"25":{},"26":{},"27":{},"28":{},"42":{},"43":{},"85":{},"86":{},"87":{},"88":{},"167":{},"168":{},"169":{}},"content":{"1":{},"20":{},"23":{},"24":{},"30":{},"34":{},"39":{},"41":{},"68":{},"71":{},"76":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"91":{},"92":{},"93":{},"94":{},"95":{},"98":{},"99":{},"100":{},"107":{},"108":{},"111":{},"116":{},"118":{},"128":{},"129":{},"130":{},"131":{},"137":{},"144":{},"153":{},"154":{},"155":{},"156":{},"159":{},"160":{},"161":{},"162":{},"163":{},"166":{},"180":{},"181":{},"184":{},"185":{},"186":{},"189":{},"191":{},"192":{},"193":{},"194":{},"195":{},"196":{},"198":{},"199":{},"200":{},"216":{},"218":{},"220":{},"221":{},"223":{},"224":{},"225":{},"227":{},"229":{}},"sidebarParentCategories":{}}],["0.0.1",{"_index":1300,"title":{},"content":{"170":{}},"sidebarParentCategories":{}}],["0.1",{"_index":1343,"title":{},"content":{"185":{},"186":{}},"sidebarParentCategories":{}}],["0.1.0",{"_index":1289,"title":{"168":{},"189":{}},"content":{"166":{},"168":{},"170":{},"174":{},"189":{},"190":{},"191":{},"192":{},"193":{},"194":{},"195":{},"196":{},"198":{},"199":{},"200":{}},"sidebarParentCategories":{}}],["0.2",{"_index":1355,"title":{},"content":{"186":{},"197":{}},"sidebarParentCategories":{}}],["0.2.0",{"_index":1373,"title":{},"content":{"190":{},"191":{},"192":{},"193":{},"194":{},"196":{},"198":{},"200":{},"223":{}},"sidebarParentCategories":{}}],["0.2.5",{"_index":1603,"title":{},"content":{"219":{}},"sidebarParentCategories":{}}],["0.2.x",{"_index":1290,"title":{"168":{},"169":{},"189":{},"216":{}},"content":{"166":{},"168":{},"169":{},"174":{},"189":{},"191":{},"192":{},"193":{},"195":{},"196":{},"198":{},"199":{},"216":{},"217":{},"218":{},"220":{},"221":{},"223":{},"224":{},"225":{},"226":{},"227":{},"229":{}},"sidebarParentCategories":{}}],["0.3.0",{"_index":1593,"title":{},"content":{"217":{},"225":{},"226":{},"227":{}},"sidebarParentCategories":{}}],["0.3.x",{"_index":1292,"title":{"169":{},"216":{}},"content":{"166":{},"169":{},"174":{},"216":{},"218":{},"220":{},"221":{},"223":{},"224":{},"225":{},"226":{},"227":{},"229":{}},"sidebarParentCategories":{}}],["0.61.5",{"_index":687,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["0.62.0",{"_index":680,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["0.64.0",{"_index":713,"title":{},"content":{"78":{}},"sidebarParentCategories":{}}],["0.69.5",{"_index":681,"title":{},"content":{"78":{},"83":{}},"sidebarParentCategories":{}}],["0.70.0",{"_index":678,"title":{},"content":{"78":{},"83":{}},"sidebarParentCategories":{}}],["0023",{"_index":1479,"title":{},"content":{"192":{}},"sidebarParentCategories":{}}],["004",{"_index":205,"title":{},"content":{"21":{},"96":{}},"sidebarParentCategories":{}}],["01",{"_index":553,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["0160",{"_index":1063,"title":{},"content":{"153":{},"157":{},"192":{}},"sidebarParentCategories":{}}],["0212",{"_index":983,"title":{},"content":{"137":{}},"sidebarParentCategories":{}}],["0360",{"_index":1602,"title":{},"content":{"219":{}},"sidebarParentCategories":{}}],["040e96c3c539",{"_index":1530,"title":{},"content":{"196":{}},"sidebarParentCategories":{}}],["0434",{"_index":1053,"title":{},"content":{"153":{},"157":{}},"sidebarParentCategories":{}}],["04a2c382",{"_index":1578,"title":{},"content":{"199":{}},"sidebarParentCategories":{}}],["0592",{"_index":1424,"title":{},"content":{"191":{}},"sidebarParentCategories":{}}],["09e46da9",{"_index":1526,"title":{},"content":{"196":{}},"sidebarParentCategories":{}}],["1",{"_index":316,"title":{"103":{},"147":{},"153":{},"159":{},"177":{}},"content":{"24":{},"25":{},"26":{},"27":{},"28":{},"84":{},"85":{},"107":{},"118":{},"125":{},"150":{},"165":{},"180":{},"185":{},"221":{}},"sidebarParentCategories":{}}],["1.0",{"_index":1146,"title":{},"content":{"160":{},"163":{},"193":{}},"sidebarParentCategories":{}}],["1.0.0",{"_index":1294,"title":{},"content":{"170":{}},"sidebarParentCategories":{}}],["1.1",{"_index":1055,"title":{},"content":{"153":{},"157":{},"193":{}},"sidebarParentCategories":{}}],["1.4",{"_index":906,"title":{},"content":{"125":{}},"sidebarParentCategories":{}}],["10",{"_index":992,"title":{},"content":{"138":{}},"sidebarParentCategories":{}}],["10000",{"_index":974,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["10044/com.usereactnativeindysdk",{"_index":557,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["13",{"_index":566,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["16:25:02.300",{"_index":555,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["2",{"_index":405,"title":{"105":{},"148":{},"160":{},"178":{}},"content":{"41":{},"42":{},"153":{},"165":{},"185":{}},"sidebarParentCategories":{}}],["2.1",{"_index":1249,"title":{"106":{},"149":{},"179":{}},"content":{},"sidebarParentCategories":{}}],["2.2",{"_index":1252,"title":{"107":{},"150":{},"180":{}},"content":{},"sidebarParentCategories":{}}],["2.3",{"_index":1255,"title":{"108":{},"151":{},"181":{}},"content":{},"sidebarParentCategories":{}}],["20",{"_index":993,"title":{},"content":{"138":{}},"sidebarParentCategories":{}}],["2020",{"_index":552,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["2022",{"_index":1263,"title":{},"content":{"146":{}},"sidebarParentCategories":{}}],["21",{"_index":597,"title":{},"content":{"80":{}},"sidebarParentCategories":{}}],["23",{"_index":1175,"title":{},"content":{"162":{},"163":{}},"sidebarParentCategories":{}}],["27",{"_index":554,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["3",{"_index":806,"title":{"154":{},"161":{}},"content":{"84":{},"88":{}},"sidebarParentCategories":{}}],["3000",{"_index":380,"title":{},"content":{"39":{},"93":{},"95":{},"159":{}},"sidebarParentCategories":{}}],["3001",{"_index":1052,"title":{},"content":{"153":{},"156":{},"159":{},"163":{}},"sidebarParentCategories":{}}],["3002",{"_index":1126,"title":{},"content":{"159":{},"163":{}},"sidebarParentCategories":{}}],["32",{"_index":862,"title":{},"content":{"117":{}},"sidebarParentCategories":{}}],["3b6f131af5e",{"_index":968,"title":{},"content":{"134":{}},"sidebarParentCategories":{}}],["4",{"_index":1073,"title":{"155":{},"162":{}},"content":{},"sidebarParentCategories":{}}],["40c4",{"_index":966,"title":{},"content":{"134":{}},"sidebarParentCategories":{}}],["4909",{"_index":1528,"title":{},"content":{"196":{}},"sidebarParentCategories":{}}],["4baf",{"_index":965,"title":{},"content":{"134":{}},"sidebarParentCategories":{}}],["4de9",{"_index":1580,"title":{},"content":{"199":{}},"sidebarParentCategories":{}}],["5",{"_index":1097,"title":{"156":{},"163":{}},"content":{},"sidebarParentCategories":{}}],["50",{"_index":1672,"title":{},"content":{"223":{}},"sidebarParentCategories":{}}],["5000",{"_index":383,"title":{},"content":{"39":{},"136":{}},"sidebarParentCategories":{}}],["64.jar",{"_index":664,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["7000",{"_index":1645,"title":{},"content":{"221":{}},"sidebarParentCategories":{}}],["9955",{"_index":556,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["999e",{"_index":1579,"title":{},"content":{"199":{}},"sidebarParentCategories":{}}],["9dec0b2fa5e4",{"_index":1582,"title":{},"content":{"199":{}},"sidebarParentCategories":{}}],["_before_",{"_index":1329,"title":{},"content":{"184":{}},"sidebarParentCategories":{}}],["_internal/indycredenti",{"_index":1517,"title":{},"content":{"195":{}},"sidebarParentCategories":{}}],["_internal/indyrequest",{"_index":1516,"title":{},"content":{"195":{}},"sidebarParentCategories":{}}],["a1d2",{"_index":1581,"title":{},"content":{"199":{}},"sidebarParentCategories":{}}],["a575",{"_index":1527,"title":{},"content":{"196":{}},"sidebarParentCategories":{}}],["aarch64.jar",{"_index":655,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["abov",{"_index":339,"title":{},"content":{"33":{},"36":{},"48":{},"56":{},"62":{},"72":{}},"sidebarParentCategories":{}}],["accept",{"_index":856,"title":{},"content":{"116":{},"124":{},"125":{},"126":{},"130":{},"131":{},"132":{},"152":{},"158":{},"159":{},"161":{},"163":{},"191":{},"221":{}},"sidebarParentCategories":{}}],["acceptancemechan",{"_index":881,"title":{},"content":{"118":{}},"sidebarParentCategories":{}}],["acceptpresent",{"_index":1662,"title":{},"content":{"223":{}},"sidebarParentCategories":{}}],["acceptpropos",{"_index":1660,"title":{},"content":{"223":{}},"sidebarParentCategories":{}}],["acceptxxx",{"_index":1402,"title":{},"content":{"191":{}},"sidebarParentCategories":{}}],["acces",{"_index":1730,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["access",{"_index":73,"title":{},"content":{"23":{},"44":{},"69":{},"82":{},"191":{},"192":{},"195":{},"220":{},"223":{},"225":{}},"sidebarParentCategories":{}}],["access/jna/raw/5.5.0/lib/native/android",{"_index":654,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["accord",{"_index":325,"title":{},"content":{"31":{},"32":{},"35":{},"137":{},"153":{},"219":{}},"sidebarParentCategories":{}}],["accordingli",{"_index":1151,"title":{},"content":{"161":{},"225":{}},"sidebarParentCategories":{}}],["account",{"_index":1234,"title":{},"content":{"144":{},"190":{},"191":{},"193":{},"196":{},"198":{},"217":{},"223":{},"225":{}},"sidebarParentCategories":{}}],["acm",{"_index":1036,"title":{},"content":{"152":{},"153":{},"155":{},"156":{}},"sidebarParentCategories":{}}],["acmeag",{"_index":1108,"title":{},"content":{"156":{}},"sidebarParentCategories":{}}],["act",{"_index":127,"title":{},"content":{"18":{},"197":{}},"sidebarParentCategories":{}}],["action",{"_index":288,"title":{},"content":{"16":{},"197":{},"225":{}},"sidebarParentCategories":{}}],["actionmenu",{"_index":1611,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["actionmenumodul",{"_index":1617,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["activ",{"_index":1114,"title":{},"content":{"156":{}},"sidebarParentCategories":{}}],["actual",{"_index":1506,"title":{},"content":{"193":{},"197":{}},"sidebarParentCategories":{}}],["ad",{"_index":605,"title":{"82":{},"83":{}},"content":{"81":{},"82":{},"144":{},"170":{},"191":{},"192":{},"193":{},"195":{},"197":{},"198":{},"199":{},"200":{},"223":{},"229":{}},"sidebarParentCategories":{}}],["adapt",{"_index":758,"title":{},"content":{"91":{},"171":{}},"sidebarParentCategories":{}}],["add",{"_index":327,"title":{"68":{},"81":{}},"content":{"31":{},"33":{},"36":{},"52":{},"78":{},"80":{},"81":{},"83":{},"90":{},"91":{},"159":{},"189":{},"216":{},"220":{},"225":{},"228":{}},"sidebarParentCategories":{}}],["addit",{"_index":512,"title":{"91":{},"155":{}},"content":{"76":{},"91":{},"191":{},"196":{},"199":{},"200":{},"223":{},"224":{},"227":{}},"sidebarParentCategories":{}}],["adjust",{"_index":682,"title":{},"content":{"78":{},"83":{}},"sidebarParentCategories":{}}],["admin",{"_index":378,"title":{},"content":{"39":{}},"sidebarParentCategories":{}}],["admin_account",{"_index":1235,"title":{},"content":{"144":{}},"sidebarParentCategories":{}}],["admin_password",{"_index":1236,"title":{},"content":{"144":{}},"sidebarParentCategories":{}}],["advanc",{"_index":836,"title":{},"content":{"99":{},"114":{}},"sidebarParentCategories":{}}],["advantag",{"_index":1323,"title":{},"content":{"184":{},"185":{},"191":{},"225":{}},"sidebarParentCategories":{}}],["afj",{"_index":267,"title":{"144":{},"166":{},"168":{},"169":{},"189":{},"216":{}},"content":{"14":{},"16":{},"22":{},"24":{},"29":{},"30":{},"31":{},"32":{},"34":{},"35":{},"39":{},"40":{},"100":{},"142":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"174":{},"182":{},"189":{},"190":{},"191":{},"192":{},"193":{},"216":{},"217":{},"219":{},"223":{},"225":{}},"sidebarParentCategories":{}}],["afj'",{"_index":739,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["aforement",{"_index":1654,"title":{},"content":{"222":{}},"sidebarParentCategories":{}}],["afterward",{"_index":535,"title":{},"content":{"64":{},"185":{}},"sidebarParentCategories":{}}],["ag",{"_index":1145,"title":{},"content":{"160":{},"162":{},"163":{},"223":{}},"sidebarParentCategories":{}}],["again",{"_index":1350,"title":{},"content":{"185":{}},"sidebarParentCategories":{}}],["agent",{"_index":31,"title":{"2":{},"17":{},"85":{},"92":{},"94":{},"109":{},"153":{},"159":{},"184":{},"185":{},"186":{},"218":{}},"content":{"1":{},"12":{},"13":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"29":{},"30":{},"34":{},"84":{},"92":{},"93":{},"94":{},"95":{},"96":{},"98":{},"109":{},"110":{},"111":{},"116":{},"117":{},"129":{},"130":{},"131":{},"133":{},"137":{},"140":{},"144":{},"152":{},"153":{},"154":{},"155":{},"156":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"173":{},"182":{},"183":{},"184":{},"185":{},"186":{},"197":{},"218":{},"219":{},"220":{},"221":{},"225":{}},"sidebarParentCategories":{"97":{},"98":{},"99":{},"100":{}}}],["agent'",{"_index":1598,"title":{},"content":{"218":{},"225":{}},"sidebarParentCategories":{}}],["agent(agentconfig",{"_index":1597,"title":{},"content":{"218":{}},"sidebarParentCategories":{}}],["agent.config.filesystem.basepath}/afj/migration/backup/${backupidentifi",{"_index":1362,"title":{},"content":{"187":{}},"sidebarParentCategories":{}}],["agent.connections.createinvit",{"_index":1454,"title":{},"content":{"192":{}},"sidebarParentCategories":{}}],["agent.connections.findallbyoutofbandid(id",{"_index":1079,"title":{},"content":{"155":{}},"sidebarParentCategories":{}}],["agent.connections.findallbyoutofbandid(outofbandrecord.id",{"_index":1464,"title":{},"content":{"192":{}},"sidebarParentCategories":{}}],["agent.connections.receiveinvitation(parsedinvit",{"_index":1472,"title":{},"content":{"192":{}},"sidebarParentCategories":{}}],["agent.connections.receiveinvitationfromurl(invitationurl",{"_index":1468,"title":{},"content":{"192":{}},"sidebarParentCategories":{}}],["agent.credentials.findcredentialmessage('credentialrecordid",{"_index":1443,"title":{},"content":{"191":{}},"sidebarParentCategories":{}}],["agent.credentials.findoffermessage('credentialrecordid",{"_index":1441,"title":{},"content":{"191":{}},"sidebarParentCategories":{}}],["agent.credentials.findproposalmessage('credentialrecordid",{"_index":1440,"title":{},"content":{"191":{}},"sidebarParentCategories":{}}],["agent.credentials.findrequestmessage('credentialrecordid",{"_index":1442,"title":{},"content":{"191":{}},"sidebarParentCategories":{}}],["agent.credentials.getbyid('credentialrecordid",{"_index":1435,"title":{},"content":{"191":{}},"sidebarParentCategories":{}}],["agent.credentials.getformatdata(credentialrecord.id",{"_index":1416,"title":{},"content":{"191":{}},"sidebarParentCategories":{}}],["agent.credentials.offercredenti",{"_index":1392,"title":{},"content":{"191":{}},"sidebarParentCategories":{}}],["agent.credentials.offercredential('connectionid",{"_index":1387,"title":{},"content":{"191":{}},"sidebarParentCategories":{}}],["agent.discovery.isprotocolsupported(connectionid",{"_index":1640,"title":{},"content":{"221":{}},"sidebarParentCategories":{}}],["agent.discovery.queryfeatur",{"_index":1634,"title":{},"content":{"221":{}},"sidebarParentCategories":{}}],["agent.discovery.queryfeatures(connectionid",{"_index":1632,"title":{},"content":{"221":{}},"sidebarParentCategories":{}}],["agent.events.on(connectioneventtypes.connectionstatechang",{"_index":1083,"title":{},"content":{"155":{},"156":{},"192":{}},"sidebarParentCategories":{}}],["agent.events.on(credentialeventtypes.credentialstatechang",{"_index":1155,"title":{},"content":{"161":{},"163":{}},"sidebarParentCategories":{}}],["holder.oob.receiveinvitationfromurl(invitationurl",{"_index":1190,"title":{},"content":{"163":{}},"sidebarParentCategories":{}}],["homebrew",{"_index":1258,"title":{},"content":{"176":{}},"sidebarParentCategories":{}}],["hood",{"_index":1356,"title":{},"content":{"186":{}},"sidebarParentCategories":{}}],["hook",{"_index":303,"title":{"26":{},"29":{}},"content":{"24":{},"29":{},"32":{},"33":{}},"sidebarParentCategories":{"32":{},"33":{}}}],["host",{"_index":295,"title":{},"content":{"24":{},"66":{},"116":{}},"sidebarParentCategories":{}}],["hous",{"_index":435,"title":{},"content":{"46":{}},"sidebarParentCategories":{}}],["http",{"_index":247,"title":{},"content":{"9":{},"24":{},"34":{},"39":{},"76":{},"93":{},"153":{},"156":{},"159":{},"163":{}},"sidebarParentCategories":{}}],["http://localhost:3000/doc",{"_index":387,"title":{},"content":{"39":{}},"sidebarParentCategories":{}}],["http://localhost:3001",{"_index":1050,"title":{},"content":{"153":{},"156":{},"159":{},"163":{}},"sidebarParentCategories":{}}],["http://localhost:3002",{"_index":1125,"title":{},"content":{"159":{},"163":{}},"sidebarParentCategories":{}}],["http://localhost:5000",{"_index":377,"title":{},"content":{"39":{}},"sidebarParentCategories":{}}],["httpinboundtransport",{"_index":785,"title":{},"content":{"93":{},"95":{},"153":{},"156":{},"159":{},"163":{}},"sidebarParentCategories":{}}],["httpoutboundtransport",{"_index":783,"title":{},"content":{"93":{},"95":{},"153":{},"156":{},"159":{},"163":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())agent.registerinboundtransport(new",{"_index":787,"title":{},"content":{"93":{},"95":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())agent.registeroutboundtransport(new",{"_index":801,"title":{},"content":{"95":{}},"sidebarParentCategories":{}}],["https://afj.com",{"_index":1703,"title":{},"content":{"224":{}},"sidebarParentCategories":{}}],["https://cdn.cocoapods.org",{"_index":696,"title":{},"content":{"78":{}},"sidebarParentCategories":{}}],["https://crates.io/crates/env_logg",{"_index":1035,"title":{},"content":{"100":{}},"sidebarParentCategories":{}}],["https://deb.nodesource.com/setup_18.x",{"_index":501,"title":{},"content":{"71":{}},"sidebarParentCategories":{}}],["https://didcomm.agent.community.animo.id?c_i=ey....(mani",{"_index":961,"title":{},"content":{"133":{}},"sidebarParentCategories":{}}],["https://didcomm.org",{"_index":998,"title":{},"content":{"139":{}},"sidebarParentCategories":{}}],["https://didcomm.org/connections/1.0/invit",{"_index":1577,"title":{},"content":{"199":{}},"sidebarParentCategories":{}}],["https://didcomm.org/messagepickup/2.0",{"_index":1633,"title":{},"content":{"221":{}},"sidebarParentCategories":{}}],["https://didcomm.org/mi",{"_index":1500,"title":{},"content":{"193":{},"225":{}},"sidebarParentCategories":{}}],["https://example.com",{"_index":1455,"title":{},"content":{"192":{},"199":{}},"sidebarParentCategories":{}}],["https://example.com?c_i=eyxxx",{"_index":1467,"title":{},"content":{"192":{}},"sidebarParentCategories":{}}],["https://example.org",{"_index":1062,"title":{},"content":{"153":{},"156":{},"163":{}},"sidebarParentCategories":{}}],["https://example.org:3000",{"_index":857,"title":{},"content":{"116":{}},"sidebarParentCategories":{}}],["https://github.com/hyperledger/indi",{"_index":526,"title":{},"content":{"76":{},"78":{},"106":{},"149":{},"179":{}},"sidebarParentCategories":{}}],["https://github.com/java",{"_index":653,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["https://google.com",{"_index":1701,"title":{},"content":{"224":{}},"sidebarParentCategories":{}}],["https://picsum.photos/200",{"_index":1002,"title":{},"content":{"140":{}},"sidebarParentCategories":{}}],["https://raw.githubusercontent.com/homebrew/install/head/install.sh",{"_index":446,"title":{},"content":{"46":{},"54":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_arm64_1.16.0.zip",{"_index":630,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_armv7_1.16.0.zip",{"_index":638,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_x86_1.16.0.zip",{"_index":643,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_x86_64_1.16.0.zip",{"_index":648,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/repository/maven",{"_index":609,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["https://rpm.nodesource.com/setup_18.x",{"_index":506,"title":{},"content":{"71":{}},"sidebarParentCategories":{}}],["https://sh.rustup.r",{"_index":519,"title":{},"content":{"76":{}},"sidebarParentCategories":{}}],["hub",{"_index":195,"title":{},"content":{"20":{}},"sidebarParentCategories":{}}],["hyperledg",{"_index":42,"title":{},"content":{"21":{},"23":{},"96":{}},"sidebarParentCategories":{}}],["i.",{"_index":1664,"title":{},"content":{"223":{}},"sidebarParentCategories":{}}],["id",{"_index":374,"title":{},"content":{"39":{},"92":{},"95":{},"111":{},"118":{},"134":{},"144":{},"153":{},"155":{},"156":{},"159":{},"161":{},"163":{},"191":{},"192":{},"195":{},"199":{},"225":{},"229":{}},"sidebarParentCategories":{}}],["ident",{"_index":11,"title":{},"content":{"7":{},"18":{},"20":{},"23":{},"34":{},"160":{},"163":{}},"sidebarParentCategories":{}}],["identifi",{"_index":209,"title":{},"content":{"7":{},"112":{},"119":{},"120":{},"187":{}},"sidebarParentCategories":{}}],["ignor",{"_index":1186,"title":{},"content":{"163":{}},"sidebarParentCategories":{}}],["imag",{"_index":1000,"title":{},"content":{"140":{}},"sidebarParentCategories":{}}],["implement",{"_index":111,"title":{},"content":{"1":{},"2":{},"17":{},"30":{},"34":{},"82":{},"91":{},"99":{},"100":{},"114":{},"128":{},"221":{},"225":{}},"sidebarParentCategories":{}}],["impli",{"_index":1220,"title":{},"content":{"165":{}},"sidebarParentCategories":{}}],["implicit",{"_index":693,"title":{},"content":{"78":{}},"sidebarParentCategories":{}}],["implicitli",{"_index":987,"title":{},"content":{"137":{}},"sidebarParentCategories":{}}],["import",{"_index":345,"title":{},"content":{"30":{},"83":{},"91":{},"92":{},"93":{},"95":{},"98":{},"99":{},"100":{},"111":{},"118":{},"128":{},"129":{},"130":{},"131":{},"137":{},"144":{},"156":{},"159":{},"163":{},"184":{},"185":{},"186":{},"191":{},"192":{},"193":{},"194":{},"220":{},"225":{},"226":{}},"sidebarParentCategories":{}}],["improv",{"_index":712,"title":{},"content":{"78":{},"171":{},"187":{}},"sidebarParentCategories":{}}],["inbound",{"_index":382,"title":{},"content":{"39":{},"93":{},"153":{},"156":{},"159":{},"163":{}},"sidebarParentCategories":{}}],["inboundtransport",{"_index":1130,"title":{},"content":{"159":{}},"sidebarParentCategories":{}}],["includ",{"_index":254,"title":{},"content":{"11":{},"24":{},"84":{},"91":{},"111":{},"118":{},"155":{},"156":{},"163":{},"172":{},"187":{},"225":{}},"sidebarParentCategories":{}}],["incom",{"_index":940,"title":{"155":{},"161":{}},"content":{"130":{},"131":{},"161":{}},"sidebarParentCategories":{}}],["independ",{"_index":511,"title":{},"content":{"76":{}},"sidebarParentCategories":{}}],["index.(js|ts|jsx|tsx",{"_index":735,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["index.tsx",{"_index":736,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["indi",{"_index":433,"title":{"52":{},"58":{},"64":{},"76":{},"83":{},"100":{},"106":{},"149":{},"179":{}},"content":{"45":{},"50":{},"51":{},"52":{},"53":{},"58":{},"59":{},"64":{},"65":{},"66":{},"74":{},"75":{},"76":{},"77":{},"78":{},"82":{},"83":{},"90":{},"100":{},"105":{},"106":{},"107":{},"108":{},"117":{},"118":{},"120":{},"124":{},"127":{},"142":{},"148":{},"149":{},"150":{},"162":{},"163":{},"178":{},"179":{},"180":{},"181":{},"189":{},"191":{},"196":{},"198":{},"216":{},"223":{},"224":{}},"sidebarParentCategories":{}}],["indic",{"_index":1302,"title":{},"content":{"170":{},"191":{},"192":{},"223":{}},"sidebarParentCategories":{}}],["indicio",{"_index":873,"title":{},"content":{"118":{}},"sidebarParentCategories":{}}],["indy_crypto_prebuilt_deps_dir=c:\\users\\{windows_user}\\downloads\\indi",{"_index":1267,"title":{},"content":{"147":{}},"sidebarParentCategories":{}}],["indy_generate_wallet_key",{"_index":830,"title":{},"content":{"114":{}},"sidebarParentCategories":{}}],["indy_prebuilt_deps_dir=c:\\users\\{windows_user}\\downloads\\indi",{"_index":1265,"title":{},"content":{"147":{}},"sidebarParentCategories":{}}],["indy_set_default_logg",{"_index":1031,"title":{},"content":{"100":{}},"sidebarParentCategories":{}}],["indy_set_logg",{"_index":1032,"title":{},"content":{"100":{}},"sidebarParentCategories":{}}],["indycredenti",{"_index":1519,"title":{},"content":{"195":{}},"sidebarParentCategories":{}}],["indycredential?.credentialdefinitionid",{"_index":1520,"title":{},"content":{"195":{}},"sidebarParentCategories":{}}],["indycredential?.schemaid",{"_index":1521,"title":{},"content":{"195":{}},"sidebarParentCategories":{}}],["indycredentialmetadata",{"_index":1410,"title":{},"content":{"191":{}},"sidebarParentCategories":{}}],["indycredentialmetadata?.credentialdefinitionid",{"_index":1412,"title":{},"content":{"191":{}},"sidebarParentCategories":{}}],["indycredentialmetadata?.schemaid",{"_index":1413,"title":{},"content":{"191":{}},"sidebarParentCategories":{}}],["indyledg",{"_index":866,"title":{"118":{}},"content":{"118":{},"159":{},"163":{},"218":{},"222":{}},"sidebarParentCategories":{}}],["indyledgers.genesispath",{"_index":892,"title":{"122":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.genesistransact",{"_index":896,"title":{"123":{}},"content":{"122":{}},"sidebarParentCategories":{}}],["indyledgers.id",{"_index":883,"title":{"119":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.indynamespac",{"_index":884,"title":{"120":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.isproduct",{"_index":888,"title":{"121":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.transactionauthoragr",{"_index":898,"title":{"124":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.transactionauthoragreement.acceptancemechan",{"_index":907,"title":{"126":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.transactionauthoragreement.vers",{"_index":904,"title":{"125":{}},"content":{},"sidebarParentCategories":{}}],["indynamespac",{"_index":876,"title":{},"content":{"118":{},"159":{},"163":{},"218":{}},"sidebarParentCategories":{}}],["indypoolconfig",{"_index":872,"title":{},"content":{"118":{}},"sidebarParentCategories":{}}],["indypostgresstorageconfig",{"_index":1227,"title":{},"content":{"144":{}},"sidebarParentCategories":{}}],["indysdk",{"_index":1226,"title":{},"content":{"142":{}},"sidebarParentCategories":{}}],["indystrgpostgres.dl",{"_index":1277,"title":{},"content":{"150":{},"151":{}},"sidebarParentCategories":{}}],["infer",{"_index":980,"title":{},"content":{"137":{}},"sidebarParentCategories":{}}],["info",{"_index":677,"title":{},"content":{"83":{},"172":{},"190":{},"217":{},"221":{}},"sidebarParentCategories":{}}],["info(messag",{"_index":1016,"title":{},"content":{"99":{}},"sidebarParentCategories":{}}],["inform",{"_index":219,"title":{},"content":{"8":{},"100":{},"130":{},"131":{}},"sidebarParentCategories":{}}],["initconfig",{"_index":773,"title":{},"content":{"92":{},"95":{},"98":{},"144":{},"153":{},"156":{},"159":{},"163":{},"218":{}},"sidebarParentCategories":{}}],["initi",{"_index":50,"title":{"94":{}},"content":{"23":{},"41":{},"92":{},"94":{},"95":{},"111":{},"117":{},"144":{},"152":{},"153":{},"156":{},"158":{},"159":{},"163":{},"184":{},"185":{},"186":{},"191":{},"218":{},"223":{}},"sidebarParentCategories":{}}],["initializeacmeag",{"_index":1047,"title":{},"content":{"153":{},"156":{}},"sidebarParentCategories":{}}],["initializebobag",{"_index":1040,"title":{},"content":{"153":{},"156":{}},"sidebarParentCategories":{}}],["initializeholderag",{"_index":1119,"title":{},"content":{"159":{},"163":{}},"sidebarParentCategories":{}}],["initializeissuerag",{"_index":1137,"title":{},"content":{"159":{},"163":{}},"sidebarParentCategories":{}}],["inject",{"_index":1616,"title":{},"content":{"220":{},"225":{}},"sidebarParentCategories":{}}],["insid",{"_index":105,"title":{},"content":{"1":{},"9":{},"80":{},"81":{},"83":{},"98":{},"154":{},"159":{},"184":{}},"sidebarParentCategories":{}}],["insight",{"_index":430,"title":{},"content":{"45":{}},"sidebarParentCategories":{}}],["instal",{"_index":337,"title":{"33":{},"36":{},"42":{},"44":{},"53":{},"59":{},"65":{},"69":{},"77":{},"90":{},"103":{},"143":{},"177":{}},"content":{"37":{},"39":{},"41":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"62":{},"63":{},"65":{},"66":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"89":{},"90":{},"104":{},"107":{},"142":{},"143":{},"146":{},"159":{},"177":{},"180":{},"189":{},"216":{}},"sidebarParentCategories":{"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{}}}],["instanc",{"_index":360,"title":{},"content":{"34":{},"93":{},"128":{},"153":{},"156":{},"159":{},"163":{},"173":{},"191":{},"220":{},"223":{},"225":{}},"sidebarParentCategories":{}}],["instanceconst",{"_index":797,"title":{},"content":{"95":{}},"sidebarParentCategories":{}}],["instanceof",{"_index":1447,"title":{},"content":{"191":{},"223":{}},"sidebarParentCategories":{}}],["instanti",{"_index":1166,"title":{"184":{}},"content":{"162":{},"182":{},"183":{},"185":{},"193":{}},"sidebarParentCategories":{}}],["instantli",{"_index":354,"title":{},"content":{"34":{}},"sidebarParentCategories":{}}],["instead",{"_index":179,"title":{},"content":{"19":{},"142":{},"191":{},"192":{},"193":{},"199":{},"219":{},"221":{},"223":{},"225":{}},"sidebarParentCategories":{}}],["instruct",{"_index":1307,"title":{},"content":{"170":{},"173":{}},"sidebarParentCategories":{}}],["integ",{"_index":845,"title":{},"content":{"114":{}},"sidebarParentCategories":{}}],["integr",{"_index":344,"title":{},"content":{"30":{},"172":{},"220":{}},"sidebarParentCategories":{}}],["intel",{"_index":426,"title":{"54":{}},"content":{"45":{},"54":{},"175":{}},"sidebarParentCategories":{}}],["intend",{"_index":1511,"title":{},"content":{"194":{}},"sidebarParentCategories":{}}],["intent",{"_index":1216,"title":{},"content":{"165":{}},"sidebarParentCategories":{}}],["interact",{"_index":112,"title":{},"content":{"1":{},"2":{},"17":{},"18":{},"24":{},"29":{},"30":{},"34":{},"52":{},"58":{},"64":{},"76":{},"127":{},"161":{},"172":{},"219":{}},"sidebarParentCategories":{}}],["interfac",{"_index":336,"title":{},"content":{"29":{},"99":{},"128":{},"144":{},"161":{},"225":{}},"sidebarParentCategories":{}}],["intern",{"_index":1376,"title":{},"content":{"190":{},"191":{},"192":{},"217":{},"218":{},"223":{}},"sidebarParentCategories":{}}],["internet",{"_index":353,"title":{},"content":{"34":{}},"sidebarParentCategories":{}}],["interoper",{"_index":46,"title":{},"content":{"9":{},"18":{},"23":{},"34":{}},"sidebarParentCategories":{}}],["interv",{"_index":971,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["intro",{"_index":0,"title":{"23":{}},"content":{},"sidebarParentCategories":{}}],["introduc",{"_index":1658,"title":{},"content":{"223":{},"225":{},"226":{},"228":{}},"sidebarParentCategories":{}}],["invit",{"_index":852,"title":{"154":{}},"content":{"116":{},"133":{},"152":{},"153":{},"154":{},"155":{},"156":{},"159":{},"163":{},"192":{},"199":{},"200":{},"224":{}},"sidebarParentCategories":{}}],["invitation.tourl",{"_index":1066,"title":{},"content":{"153":{},"156":{},"192":{}},"sidebarParentCategories":{}}],["invitationdid",{"_index":1570,"title":{},"content":{"199":{}},"sidebarParentCategories":{}}],["invitationurl",{"_index":1059,"title":{},"content":{"153":{},"154":{},"156":{},"163":{},"192":{},"224":{}},"sidebarParentCategories":{}}],["invitationurl)}export",{"_index":1117,"title":{},"content":{"156":{}},"sidebarParentCategories":{}}],["invitationurl)}void",{"_index":1207,"title":{},"content":{"163":{}},"sidebarParentCategories":{}}],["invite",{"_index":1458,"title":{},"content":{"192":{}},"sidebarParentCategories":{}}],["io",{"_index":548,"title":{"78":{}},"content":{"66":{},"78":{},"159":{}},"sidebarParentCategories":{}}],["ios/podfil",{"_index":691,"title":{},"content":{"78":{}},"sidebarParentCategories":{}}],["iot",{"_index":133,"title":{},"content":{"18":{}},"sidebarParentCategories":{}}],["isn't",{"_index":1490,"title":{},"content":{"193":{},"225":{}},"sidebarParentCategories":{}}],["ispickupv2support",{"_index":1639,"title":{},"content":{"221":{}},"sidebarParentCategories":{}}],["isproduct",{"_index":877,"title":{},"content":{"118":{},"159":{},"163":{}},"sidebarParentCategories":{}}],["isprotocolsupport",{"_index":1635,"title":{},"content":{"221":{}},"sidebarParentCategories":{}}],["issu",{"_index":149,"title":{"87":{},"158":{},"162":{}},"content":{"16":{},"18":{},"34":{},"68":{},"83":{},"84":{},"152":{},"155":{},"158":{},"160":{},"163":{},"164":{},"170":{},"172":{},"191":{},"196":{},"197":{},"219":{},"223":{}},"sidebarParentCategories":{}}],["issuecredenti",{"_index":1168,"title":{},"content":{"162":{},"163":{}},"sidebarParentCategories":{}}],["issuecredential(issu",{"_index":1199,"title":{},"content":{"163":{}},"sidebarParentCategories":{}}],["issuer",{"_index":118,"title":{},"content":{"1":{},"4":{},"5":{},"41":{},"158":{},"159":{},"160":{},"162":{},"163":{}},"sidebarParentCategories":{}}],["issuer.credentials.offercredenti",{"_index":1170,"title":{},"content":{"162":{},"163":{}},"sidebarParentCategories":{}}],["issuer.events.on(connectioneventtypes.connectionstatechang",{"_index":1192,"title":{},"content":{"163":{}},"sidebarParentCategories":{}}],["issuer.ledger.registercredentialdefinit",{"_index":1148,"title":{},"content":{"160":{},"163":{}},"sidebarParentCategories":{}}],["issuer.ledger.registerschema",{"_index":1143,"title":{},"content":{"160":{},"163":{}},"sidebarParentCategories":{}}],["issuer.oob.createinvit",{"_index":1189,"title":{},"content":{"163":{}},"sidebarParentCategories":{}}],["isvalidmessagetyp",{"_index":1502,"title":{},"content":{"193":{}},"sidebarParentCategories":{}}],["isvalidmessagetype(mymessage.typ",{"_index":1503,"title":{},"content":{"193":{}},"sidebarParentCategories":{}}],["it'",{"_index":1033,"title":{},"content":{"100":{},"197":{},"225":{}},"sidebarParentCategories":{}}],["item",{"_index":317,"title":{},"content":{"24":{},"25":{},"26":{},"27":{},"28":{},"41":{},"42":{},"84":{},"85":{},"86":{},"88":{},"124":{},"152":{},"158":{}},"sidebarParentCategories":{}}],["itself",{"_index":218,"title":{},"content":{"8":{},"191":{},"198":{},"221":{},"229":{}},"sidebarParentCategories":{}}],["jane",{"_index":1173,"title":{},"content":{"162":{},"163":{}},"sidebarParentCategories":{}}],["jar",{"_index":656,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["java",{"_index":611,"title":{},"content":{"82":{}},"sidebarParentCategories":{}}],["java.io.fil",{"_index":671,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["javascript",{"_index":3,"title":{"11":{},"14":{}},"content":{"1":{},"4":{},"5":{},"9":{},"11":{},"12":{},"13":{},"14":{},"18":{},"19":{},"21":{},"23":{},"24":{},"31":{},"32":{},"34":{},"35":{},"41":{},"44":{},"45":{},"47":{},"52":{},"55":{},"58":{},"61":{},"64":{},"69":{},"71":{},"76":{},"109":{},"128":{},"141":{},"166":{},"170":{},"172":{}},"sidebarParentCategories":{}}],["jna",{"_index":610,"title":{"82":{}},"content":{"82":{},"83":{}},"sidebarParentCategories":{}}],["jnilib",{"_index":617,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["js",{"_index":271,"title":{"15":{}},"content":{"15":{},"91":{}},"sidebarParentCategories":{}}],["json",{"_index":747,"title":{},"content":{"91":{},"122":{},"123":{},"124":{}},"sidebarParentCategories":{}}],["kali",{"_index":1246,"title":{"104":{}},"content":{},"sidebarParentCategories":{}}],["keep",{"_index":77,"title":{},"content":{"23":{},"142":{},"165":{},"170":{},"172":{},"191":{},"194":{},"200":{},"219":{},"223":{}},"sidebarParentCategories":{}}],["kept",{"_index":821,"title":{},"content":{"113":{}},"sidebarParentCategories":{}}],["key",{"_index":140,"title":{},"content":{"8":{},"18":{},"39":{},"92":{},"95":{},"111":{},"113":{},"114":{},"126":{},"144":{},"153":{},"156":{},"159":{},"163":{},"191":{},"194":{},"195":{},"218":{},"219":{},"223":{},"226":{}},"sidebarParentCategories":{}}],["keyderivationmethod",{"_index":812,"title":{},"content":{"111":{},"114":{}},"sidebarParentCategories":{}}],["keyderivationmethod.argon2imod",{"_index":816,"title":{},"content":{"111":{},"114":{}},"sidebarParentCategories":{}}],["keyderivationmethod.argon2int",{"_index":844,"title":{},"content":{"114":{}},"sidebarParentCategories":{}}],["keyderivationmethod.raw",{"_index":827,"title":{},"content":{"114":{}},"sidebarParentCategories":{}}],["kind",{"_index":567,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["kit",{"_index":48,"title":{},"content":{"23":{}},"sidebarParentCategories":{}}],["know",{"_index":870,"title":{},"content":{"118":{},"152":{},"155":{},"156":{},"163":{},"166":{},"168":{},"169":{},"172":{},"189":{},"194":{},"216":{},"226":{}},"sidebarParentCategories":{}}],["knowledg",{"_index":251,"title":{},"content":{"9":{},"92":{},"152":{},"158":{}},"sidebarParentCategories":{}}],["known",{"_index":549,"title":{"67":{}},"content":{},"sidebarParentCategories":{}}],["label",{"_index":373,"title":{"110":{}},"content":{"39":{},"92":{},"95":{},"110":{},"124":{},"126":{},"140":{},"144":{},"153":{},"156":{},"159":{},"163":{},"199":{}},"sidebarParentCategories":{}}],["lack",{"_index":236,"title":{},"content":{"9":{}},"sidebarParentCategories":{}}],["larg",{"_index":407,"title":{},"content":{"44":{},"69":{}},"sidebarParentCategories":{}}],["lastli",{"_index":157,"title":{},"content":{"18":{},"52":{},"76":{}},"sidebarParentCategories":{}}],["later",{"_index":147,"title":{},"content":{"18":{},"111":{},"185":{},"191":{},"195":{},"198":{}},"sidebarParentCategories":{}}],["latest",{"_index":294,"title":{},"content":{"16":{},"78":{},"185":{},"189":{},"191":{},"216":{}},"sidebarParentCategories":{}}],["launch",{"_index":1335,"title":{},"content":{"184":{},"185":{}},"sidebarParentCategories":{}}],["ld_library_path",{"_index":542,"title":{},"content":{"64":{}},"sidebarParentCategories":{}}],["lead",{"_index":912,"title":{},"content":{"127":{},"156":{},"163":{},"197":{}},"sidebarParentCategories":{}}],["ledger",{"_index":465,"title":{"222":{}},"content":{"52":{},"58":{},"64":{},"76":{},"83":{},"117":{},"118":{},"119":{},"121":{},"127":{},"159":{},"165":{},"218":{},"222":{}},"sidebarParentCategories":{}}],["legaci",{"_index":755,"title":{},"content":{"91":{},"139":{},"153":{},"163":{},"192":{},"198":{},"224":{}},"sidebarParentCategories":{}}],["legacydiddoc",{"_index":1566,"title":{},"content":{"198":{}},"sidebarParentCategories":{}}],["legacytheirdiddoc",{"_index":1567,"title":{},"content":{"198":{}},"sidebarParentCategories":{}}],["less",{"_index":846,"title":{},"content":{"114":{},"129":{},"192":{},"224":{}},"sidebarParentCategories":{}}],["level",{"_index":110,"title":{},"content":{"1":{},"41":{},"52":{},"58":{},"64":{},"76":{},"100":{}},"sidebarParentCategories":{}}],["leverag",{"_index":1225,"title":{},"content":{"142":{},"166":{},"167":{},"182":{},"183":{},"185":{}},"sidebarParentCategories":{}}],["lib_indy_strg_postgres=c:\\users\\{windows_user}\\downloads\\indi",{"_index":1280,"title":{},"content":{"151":{}},"sidebarParentCategories":{}}],["libari",{"_index":614,"title":{"83":{}},"content":{},"sidebarParentCategories":{}}],["libcore/result.rs:945",{"_index":570,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["libindi",{"_index":370,"title":{},"content":{"39":{},"58":{},"100":{},"146":{}},"sidebarParentCategories":{}}],["libindy_arm64/lib/libindy.so",{"_index":634,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["libindy_armv7/lib/libindy.so",{"_index":640,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["libindy_x86/lib/libindy.so",{"_index":645,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["libindy_x86_64/lib/libindy.so",{"_index":650,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["libjnidispatch.so",{"_index":658,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["librari",{"_index":296,"title":{"82":{}},"content":{"24":{},"52":{},"64":{},"68":{},"76":{},"78":{},"82":{},"83":{},"150":{}},"sidebarParentCategories":{}}],["libsodium",{"_index":431,"title":{"50":{},"74":{}},"content":{"45":{},"50":{},"74":{},"75":{},"104":{},"177":{}},"sidebarParentCategories":{}}],["libssl",{"_index":1248,"title":{},"content":{"104":{}},"sidebarParentCategories":{}}],["libzmq",{"_index":432,"title":{"51":{},"75":{}},"content":{"45":{},"51":{},"75":{}},"sidebarParentCategories":{}}],["libzmq3",{"_index":510,"title":{},"content":{"75":{},"104":{}},"sidebarParentCategories":{}}],["libzmq_prefix=c:\\users\\{windows_user}\\downloads\\indi",{"_index":1269,"title":{},"content":{"147":{}},"sidebarParentCategories":{}}],["licens",{"_index":194,"title":{},"content":{"20":{}},"sidebarParentCategories":{}}],["lightweight",{"_index":461,"title":{},"content":{"51":{},"75":{}},"sidebarParentCategories":{}}],["line",{"_index":689,"title":{},"content":{"78":{},"100":{}},"sidebarParentCategories":{}}],["link",{"_index":474,"title":{},"content":{"52":{},"116":{},"192":{},"225":{}},"sidebarParentCategories":{}}],["linux",{"_index":423,"title":{"70":{},"101":{}},"content":{"45":{},"52":{},"70":{},"71":{},"74":{},"75":{},"143":{}},"sidebarParentCategories":{}}],["list",{"_index":392,"title":{},"content":{"40":{},"116":{},"118":{},"124":{},"159":{},"190":{},"217":{}},"sidebarParentCategories":{}}],["listen",{"_index":1074,"title":{"155":{},"161":{}},"content":{"155":{},"161":{},"163":{},"192":{}},"sidebarParentCategories":{}}],["lo",{"_index":652,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["load",{"_index":666,"title":{},"content":{"83":{},"144":{}},"sidebarParentCategories":{}}],["loadpostgresplugin",{"_index":1228,"title":{},"content":{"144":{}},"sidebarParentCategories":{}}],["loadpostgresplugin(storageconfig.config",{"_index":1237,"title":{},"content":{"144":{}},"sidebarParentCategories":{}}],["local",{"_index":1134,"title":{},"content":{"142":{},"159":{}},"sidebarParentCategories":{}}],["localhost:5432",{"_index":1231,"title":{},"content":{"144":{}},"sidebarParentCategories":{}}],["locat",{"_index":170,"title":{},"content":{"19":{},"52":{},"64":{},"76":{},"81":{},"83":{},"122":{},"150":{},"187":{}},"sidebarParentCategories":{}}],["log",{"_index":920,"title":{"97":{},"100":{}},"content":{"98":{},"100":{},"128":{}},"sidebarParentCategories":{}}],["logger",{"_index":916,"title":{"99":{},"128":{}},"content":{"98":{},"99":{},"100":{},"128":{}},"sidebarParentCategories":{}}],["logic",{"_index":1092,"title":{},"content":{"155":{},"156":{},"161":{},"163":{}},"sidebarParentCategories":{}}],["loglevel",{"_index":921,"title":{},"content":{"98":{},"99":{},"128":{}},"sidebarParentCategories":{}}],["loglevel.off",{"_index":1009,"title":{},"content":{"99":{}},"sidebarParentCategories":{}}],["long",{"_index":864,"title":{},"content":{"117":{},"119":{}},"sidebarParentCategories":{}}],["look",{"_index":290,"title":{},"content":{"16":{},"44":{},"69":{}},"sidebarParentCategories":{}}],["loos",{"_index":184,"title":{},"content":{"20":{}},"sidebarParentCategories":{}}],["lot",{"_index":20,"title":{},"content":{"8":{},"23":{},"190":{},"194":{},"217":{},"224":{}},"sidebarParentCategories":{}}],["lower",{"_index":464,"title":{},"content":{"52":{},"58":{},"64":{},"76":{},"127":{}},"sidebarParentCategories":{}}],["luckili",{"_index":13,"title":{},"content":{"23":{},"173":{}},"sidebarParentCategories":{}}],["m1",{"_index":437,"title":{},"content":{"46":{}},"sidebarParentCategories":{}}],["machin",{"_index":367,"title":{},"content":{"38":{}},"sidebarParentCategories":{}}],["maco",{"_index":468,"title":{"175":{}},"content":{"52":{},"58":{},"143":{}},"sidebarParentCategories":{}}],["made",{"_index":492,"title":{},"content":{"58":{},"173":{},"187":{},"190":{},"191":{},"192":{},"217":{},"225":{}},"sidebarParentCategories":{}}],["main",{"_index":15,"title":{},"content":{"23":{}},"sidebarParentCategories":{}}],["mainacm",{"_index":1048,"title":{},"content":{"153":{},"156":{}},"sidebarParentCategories":{}}],["mainact",{"_index":573,"title":{},"content":{"68":{},"83":{}},"sidebarParentCategories":{}}],["mainactivity.java",{"_index":667,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["mainbob",{"_index":1041,"title":{},"content":{"153":{},"156":{}},"sidebarParentCategories":{}}],["mainli",{"_index":1792,"title":{},"content":{"226":{}},"sidebarParentCategories":{}}],["maintain",{"_index":75,"title":{},"content":{"16":{},"23":{}},"sidebarParentCategories":{}}],["major",{"_index":361,"title":{},"content":{"34":{},"170":{}},"sidebarParentCategories":{}}],["make",{"_index":17,"title":{},"content":{"23":{},"34":{},"91":{},"111":{},"127":{},"146":{},"159":{},"160":{},"166":{},"168":{},"169":{},"171":{},"187":{},"189":{},"190":{},"191":{},"197":{},"216":{},"217":{},"223":{},"225":{}},"sidebarParentCategories":{}}],["manag",{"_index":343,"title":{},"content":{"30":{},"48":{},"56":{},"62":{},"72":{},"102":{},"107":{},"166":{},"167":{},"180":{},"182":{}},"sidebarParentCategories":{}}],["mani",{"_index":165,"title":{},"content":{"19":{},"76":{},"138":{},"194":{}},"sidebarParentCategories":{}}],["manual",{"_index":718,"title":{"184":{}},"content":{"78":{},"132":{},"166":{},"167":{},"182":{},"183":{},"184":{},"185":{},"189":{},"216":{}},"sidebarParentCategories":{}}],["mark",{"_index":1715,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["match",{"_index":1404,"title":{},"content":{"191":{},"197":{},"221":{}},"sidebarParentCategories":{}}],["maven",{"_index":601,"title":{"81":{}},"content":{"81":{}},"sidebarParentCategories":{}}],["max",{"_index":439,"title":{},"content":{"46":{}},"sidebarParentCategories":{}}],["maximummessagepickup",{"_index":989,"title":{"138":{}},"content":{"138":{}},"sidebarParentCategories":{}}],["mean",{"_index":148,"title":{},"content":{"8":{},"9":{},"18":{},"76":{},"170":{},"172":{},"184":{},"185":{},"186":{},"191":{},"197":{},"199":{},"225":{}},"sidebarParentCategories":{}}],["mechan",{"_index":226,"title":{},"content":{"8":{},"124":{},"125":{},"126":{},"198":{},"225":{}},"sidebarParentCategories":{}}],["mediat",{"_index":347,"title":{"197":{}},"content":{"30":{},"93":{},"132":{},"133":{},"134":{},"135":{},"136":{},"137":{},"138":{},"153":{},"156":{},"159":{},"163":{},"197":{},"228":{}},"sidebarParentCategories":{}}],["mediationrole.medi",{"_index":1531,"title":{},"content":{"197":{}},"sidebarParentCategories":{}}],["mediationrole.recipi",{"_index":1541,"title":{},"content":{"197":{}},"sidebarParentCategories":{}}],["mediationroleupdatestrategi",{"_index":1327,"title":{},"content":{"184":{},"185":{},"194":{}},"sidebarParentCategories":{}}],["mediatorconnectionsinvit",{"_index":956,"title":{"133":{}},"content":{"133":{},"134":{},"135":{}},"sidebarParentCategories":{}}],["mediatormodul",{"_index":955,"title":{},"content":{"132":{}},"sidebarParentCategories":{}}],["mediatorpickupstrategi",{"_index":979,"title":{},"content":{"137":{}},"sidebarParentCategories":{}}],["mediatorpickupstrategy.implicit",{"_index":986,"title":{},"content":{"137":{}},"sidebarParentCategories":{}}],["mediatorpickupstrategy.pickupv1",{"_index":982,"title":{},"content":{"137":{}},"sidebarParentCategories":{}}],["mediatorpickupstrategy.pickupv2",{"_index":984,"title":{},"content":{"137":{},"138":{}},"sidebarParentCategories":{}}],["mediatorpickupstrateri",{"_index":975,"title":{"137":{}},"content":{},"sidebarParentCategories":{}}],["mediatorpollinginterv",{"_index":970,"title":{"136":{}},"content":{"136":{}},"sidebarParentCategories":{}}],["meet",{"_index":275,"title":{},"content":{"15":{}},"sidebarParentCategories":{}}],["member",{"_index":840,"title":{},"content":{"114":{},"129":{},"130":{},"131":{},"137":{}},"sidebarParentCategories":{}}],["mention",{"_index":233,"title":{},"content":{"9":{},"76":{},"172":{},"173":{}},"sidebarParentCategories":{}}],["menu",{"_index":1613,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["mere",{"_index":1451,"title":{},"content":{"192":{}},"sidebarParentCategories":{}}],["messag",{"_index":152,"title":{"193":{}},"content":{"8":{},"9":{},"14":{},"18":{},"20":{},"51":{},"68":{},"75":{},"100":{},"129":{},"137":{},"152":{},"155":{},"156":{},"163":{},"190":{},"191":{},"193":{},"196":{},"199":{},"223":{},"224":{},"225":{},"227":{}},"sidebarParentCategories":{}}],["message.id",{"_index":1739,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["messagecontext",{"_index":1729,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["messagecontext.agentcontext",{"_index":1731,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["messagecontext.message.id",{"_index":1746,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["messagecontext.message.thread?.parentthreadid",{"_index":1747,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["messagehandl",{"_index":1709,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["messagehandlerinboundmessag",{"_index":1712,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["messagehandlerinboundmessage(agentcontext",{"_index":1751,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["this.loglevel",{"_index":1010,"title":{},"content":{"99":{}},"sidebarParentCategories":{}}],["this.messagesend",{"_index":1776,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessag",{"_index":1765,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessagecontext",{"_index":1769,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(agentcontext",{"_index":1750,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(record",{"_index":1740,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["this.myrepository.save(messagecontext.agentcontext",{"_index":1753,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["this.myrepository.save(record",{"_index":1748,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["this.myservic",{"_index":1777,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["this.registerhandlers(messagehandlerregistri",{"_index":1779,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["those",{"_index":1588,"title":{},"content":{"200":{}},"sidebarParentCategories":{}}],["though",{"_index":1477,"title":{},"content":{"192":{}},"sidebarParentCategories":{}}],["thread",{"_index":559,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["threadid",{"_index":1738,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["three",{"_index":125,"title":{},"content":{"12":{},"18":{},"183":{}},"sidebarParentCategories":{}}],["threshold",{"_index":1671,"title":{},"content":{"223":{}},"sidebarParentCategories":{}}],["through",{"_index":350,"title":{},"content":{"30":{},"41":{},"44":{},"69":{},"100":{},"191":{},"223":{}},"sidebarParentCategories":{}}],["throughout",{"_index":1433,"title":{},"content":{"191":{},"223":{}},"sidebarParentCategories":{}}],["throw",{"_index":1213,"title":{},"content":{"107":{},"150":{},"165":{},"180":{},"187":{},"197":{}},"sidebarParentCategories":{}}],["thrown",{"_index":1760,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["thu",{"_index":766,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["ti",{"_index":1689,"title":{},"content":{"224":{}},"sidebarParentCategories":{}}],["time",{"_index":1705,"title":{},"content":{"224":{}},"sidebarParentCategories":{}}],["timestamp",{"_index":1361,"title":{},"content":{"187":{}},"sidebarParentCategories":{}}],["tlsv1.2",{"_index":517,"title":{},"content":{"76":{}},"sidebarParentCategories":{}}],["todo",{"_index":473,"title":{},"content":{"52":{},"93":{},"115":{},"130":{},"131":{},"155":{}},"sidebarParentCategories":{}}],["togeth",{"_index":100,"title":{},"content":{"23":{}},"sidebarParentCategories":{}}],["token",{"_index":321,"title":{},"content":{"22":{}},"sidebarParentCategories":{}}],["tool",{"_index":47,"title":{},"content":{"9":{},"23":{},"194":{},"226":{}},"sidebarParentCategories":{}}],["toolkit",{"_index":154,"title":{},"content":{"18":{},"24":{}},"sidebarParentCategories":{}}],["top",{"_index":79,"title":{},"content":{"23":{},"24":{}},"sidebarParentCategories":{}}],["trace(messag",{"_index":1014,"title":{},"content":{"99":{}},"sidebarParentCategories":{}}],["traffic",{"_index":782,"title":{},"content":{"93":{}},"sidebarParentCategories":{}}],["transact",{"_index":895,"title":{},"content":{"122":{},"123":{},"124":{}},"sidebarParentCategories":{}}],["transactionauthoragr",{"_index":880,"title":{},"content":{"118":{},"124":{}},"sidebarParentCategories":{}}],["transform",{"_index":1452,"title":{},"content":{"192":{},"200":{}},"sidebarParentCategories":{}}],["transmit",{"_index":52,"title":{},"content":{"23":{},"154":{}},"sidebarParentCategories":{}}],["transport",{"_index":241,"title":{"93":{}},"content":{"9":{},"39":{},"93":{},"153":{},"156":{},"159":{},"163":{}},"sidebarParentCategories":{}}],["transportagent.registeroutboundtransport(new",{"_index":800,"title":{},"content":{"95":{}},"sidebarParentCategories":{}}],["transportsagent.registeroutboundtransport(new",{"_index":798,"title":{},"content":{"95":{}},"sidebarParentCategories":{}}],["tri",{"_index":587,"title":{},"content":{"68":{},"83":{},"172":{},"175":{},"190":{},"217":{}},"sidebarParentCategories":{}}],["trick",{"_index":768,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["true",{"_index":589,"title":{},"content":{"68":{},"78":{},"83":{},"127":{},"132":{},"135":{},"139":{},"141":{},"153":{},"154":{},"156":{},"159":{},"163":{},"186":{},"199":{},"221":{},"224":{}},"sidebarParentCategories":{}}],["ts",{"_index":748,"title":{},"content":{"91":{},"163":{}},"sidebarParentCategories":{}}],["tsx",{"_index":749,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["tunnel",{"_index":1132,"title":{},"content":{"159":{}},"sidebarParentCategories":{}}],["tutori",{"_index":87,"title":{"84":{}},"content":{"23":{},"92":{},"152":{},"153":{},"156":{},"158":{},"159":{},"218":{}},"sidebarParentCategories":{"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"134":{},"135":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{}}}],["two",{"_index":167,"title":{},"content":{"19":{},"171":{},"200":{},"220":{},"224":{}},"sidebarParentCategories":{}}],["type",{"_index":210,"title":{"171":{},"193":{}},"content":{"7":{},"92":{},"95":{},"98":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"134":{},"135":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"144":{},"170":{},"190":{},"191":{},"193":{},"199":{},"223":{},"225":{},"228":{}},"sidebarParentCategories":{}}],["typescript",{"_index":61,"title":{},"content":{"23":{}},"sidebarParentCategories":{}}],["ubuntu",{"_index":1244,"title":{"104":{}},"content":{},"sidebarParentCategories":{}}],["ui",{"_index":349,"title":{},"content":{"30":{}},"sidebarParentCategories":{}}],["under",{"_index":1129,"title":{},"content":{"159":{},"186":{}},"sidebarParentCategories":{}}],["underli",{"_index":1020,"title":{},"content":{"100":{}},"sidebarParentCategories":{}}],["understand",{"_index":107,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["unifi",{"_index":1587,"title":{"200":{}},"content":{"221":{}},"sidebarParentCategories":{}}],["unimodul",{"_index":756,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["unimodules/cor",{"_index":759,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["unimodules/react",{"_index":757,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["uniqu",{"_index":141,"title":{},"content":{"18":{},"119":{},"124":{},"221":{}},"sidebarParentCategories":{}}],["unless",{"_index":1605,"title":{},"content":{"219":{}},"sidebarParentCategories":{}}],["unlock",{"_index":820,"title":{},"content":{"113":{}},"sidebarParentCategories":{}}],["unnam",{"_index":560,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["unqualifi",{"_index":1554,"title":{},"content":{"198":{}},"sidebarParentCategories":{}}],["unrel",{"_index":1513,"title":{},"content":{"194":{},"226":{}},"sidebarParentCategories":{}}],["until",{"_index":1351,"title":{},"content":{"185":{},"191":{},"192":{},"199":{}},"sidebarParentCategories":{}}],["unzip",{"_index":633,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["up",{"_index":324,"title":{"92":{},"93":{},"153":{},"159":{}},"content":{"31":{},"32":{},"34":{},"35":{},"44":{},"45":{},"69":{},"79":{},"84":{},"93":{},"110":{},"121":{},"137":{},"140":{},"152":{},"158":{},"184":{},"185":{},"189":{},"216":{}},"sidebarParentCategories":{}}],["updat",{"_index":699,"title":{"166":{},"167":{},"182":{},"183":{},"184":{},"186":{},"193":{},"225":{}},"content":{"78":{},"141":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"189":{},"190":{},"191":{},"192":{},"194":{},"197":{},"198":{},"200":{},"216":{},"217":{},"218":{},"219":{},"223":{},"225":{},"226":{}},"sidebarParentCategories":{"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"189":{},"190":{},"191":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"200":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{}}}],["updateassist",{"_index":1324,"title":{},"content":{"184":{},"185":{},"186":{}},"sidebarParentCategories":{}}],["updateassistant(ag",{"_index":1325,"title":{},"content":{"184":{},"185":{}},"sidebarParentCategories":{}}],["updateassistant.frameworkstoragevers",{"_index":1346,"title":{},"content":{"185":{}},"sidebarParentCategories":{}}],["updateassistant.getcurrentagentstoragevers",{"_index":1338,"title":{},"content":{"185":{}},"sidebarParentCategories":{}}],["updateassistant.initi",{"_index":1331,"title":{},"content":{"184":{},"185":{}},"sidebarParentCategories":{}}],["updateassistant.isuptod",{"_index":1332,"title":{},"content":{"184":{}},"sidebarParentCategories":{}}],["updateassistant.upd",{"_index":1333,"title":{},"content":{"184":{},"185":{}},"sidebarParentCategories":{}}],["upgrad",{"_index":1706,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["uppcj5apts7ot5wx25943f",{"_index":1563,"title":{},"content":{"198":{}},"sidebarParentCategories":{}}],["uri",{"_index":1507,"title":{},"content":{"193":{}},"sidebarParentCategories":{}}],["url",{"_index":602,"title":{},"content":{"81":{},"140":{},"144":{},"153":{},"154":{},"156":{},"159":{},"163":{},"192":{}},"sidebarParentCategories":{}}],["us",{"_index":58,"title":{"10":{},"21":{},"96":{},"98":{},"103":{},"142":{},"144":{},"157":{},"164":{},"177":{}},"content":{"1":{},"4":{},"5":{},"18":{},"20":{},"22":{},"23":{},"24":{},"29":{},"30":{},"31":{},"32":{},"35":{},"38":{},"39":{},"41":{},"46":{},"49":{},"50":{},"51":{},"52":{},"57":{},"58":{},"63":{},"64":{},"68":{},"73":{},"74":{},"75":{},"76":{},"83":{},"84":{},"87":{},"90":{},"91":{},"92":{},"99":{},"110":{},"112":{},"114":{},"115":{},"116":{},"117":{},"118":{},"121":{},"128":{},"129":{},"130":{},"131":{},"133":{},"134":{},"137":{},"138":{},"139":{},"140":{},"141":{},"142":{},"147":{},"153":{},"155":{},"156":{},"158":{},"159":{},"163":{},"170":{},"173":{},"186":{},"187":{},"191":{},"192":{},"193":{},"194":{},"196":{},"197":{},"198":{},"199":{},"219":{},"220":{},"221":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{}},"sidebarParentCategories":{}}],["usag",{"_index":1089,"title":{"219":{}},"content":{"155":{},"156":{},"163":{},"198":{}},"sidebarParentCategories":{}}],["usedidkeyinprotocol",{"_index":1604,"title":{},"content":{"219":{}},"sidebarParentCategories":{}}],["uselegacydidsovprefix",{"_index":994,"title":{"139":{}},"content":{"139":{}},"sidebarParentCategories":{}}],["user",{"_index":78,"title":{},"content":{"23":{},"29":{},"110":{},"119":{},"140":{},"161":{},"170":{}},"sidebarParentCategories":{}}],["usr/lib/libindy.so",{"_index":534,"title":{},"content":{"76":{}},"sidebarParentCategories":{}}],["usr/local/lib",{"_index":488,"title":{},"content":{"52":{}},"sidebarParentCategories":{}}],["usr/local/lib/libindystrgpostgres.dylib",{"_index":1260,"title":{},"content":{"181":{}},"sidebarParentCategories":{}}],["usr/local/lib/libindystrgpostgres.so",{"_index":1257,"title":{},"content":{"108":{}},"sidebarParentCategories":{}}],["util",{"_index":1494,"title":{},"content":{"193":{}},"sidebarParentCategories":{}}],["uuid",{"_index":1802,"title":{},"content":{"229":{}},"sidebarParentCategories":{}}],["v0.3.0",{"_index":1208,"title":{},"content":{"165":{}},"sidebarParentCategories":{}}],["v0_1tov0_2",{"_index":1326,"title":{},"content":{"184":{},"185":{},"194":{}},"sidebarParentCategories":{}}],["v0_1tov0_2.mediationroleupdatestrategi",{"_index":1539,"title":{},"content":{"197":{}},"sidebarParentCategories":{}}],["v1",{"_index":237,"title":{},"content":{"9":{},"158":{},"162":{},"163":{},"164":{},"191":{},"196":{},"221":{},"223":{},"224":{},"227":{}},"sidebarParentCategories":{}}],["v1proposecredentialmessag",{"_index":1431,"title":{},"content":{"191":{}},"sidebarParentCategories":{}}],["v1requestpresentationmessag",{"_index":1676,"title":{},"content":{"223":{}},"sidebarParentCategories":{}}],["v1xxxmessag",{"_index":1444,"title":{},"content":{"191":{},"223":{}},"sidebarParentCategories":{}}],["v2",{"_index":985,"title":{},"content":{"137":{},"158":{},"164":{},"191":{},"196":{},"221":{},"223":{}},"sidebarParentCategories":{}}],["v2proposecredentialmessag",{"_index":1432,"title":{},"content":{"191":{}},"sidebarParentCategories":{}}],["v2requestpresentationmessag",{"_index":1677,"title":{},"content":{"223":{}},"sidebarParentCategories":{}}],["v2xxxmessag",{"_index":1445,"title":{},"content":{"191":{},"223":{}},"sidebarParentCategories":{}}],["v7a",{"_index":625,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["v7a/libindy.so",{"_index":641,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["v7a/libjnidispatch.so",{"_index":661,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["v8a",{"_index":623,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["v8a/libindy.so",{"_index":635,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["v8a/libjnidispatch.so",{"_index":659,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["valid",{"_index":230,"title":{},"content":{"8":{},"37":{},"89":{},"130":{},"131":{},"152":{},"158":{},"193":{}},"sidebarParentCategories":{}}],["validrespons",{"_index":1622,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["valu",{"_index":543,"title":{},"content":{"64":{},"68":{},"90":{},"91":{},"112":{},"113":{},"117":{},"126":{},"161":{},"162":{},"163":{},"191":{},"192":{},"195":{},"200":{},"223":{}},"sidebarParentCategories":{}}],["vari",{"_index":1039,"title":{},"content":{"153":{},"159":{}},"sidebarParentCategories":{}}],["variabl",{"_index":539,"title":{},"content":{"64":{},"100":{}},"sidebarParentCategories":{}}],["variables:set",{"_index":1264,"title":{},"content":{"147":{}},"sidebarParentCategories":{}}],["variant",{"_index":1135,"title":{},"content":{"159":{}},"sidebarParentCategories":{}}],["variou",{"_index":255,"title":{},"content":{"11":{}},"sidebarParentCategories":{}}],["veri",{"_index":414,"title":{},"content":{"44":{},"69":{},"109":{},"155":{},"159":{}},"sidebarParentCategories":{}}],["verifi",{"_index":29,"title":{},"content":{"1":{},"4":{},"5":{},"7":{},"18":{},"23":{},"41":{},"84":{},"152":{},"155":{},"160":{}},"sidebarParentCategories":{}}],["verkey",{"_index":1564,"title":{},"content":{"198":{}},"sidebarParentCategories":{}}],["version",{"_index":305,"title":{"80":{},"170":{},"185":{}},"content":{"24":{},"78":{},"80":{},"83":{},"118":{},"124":{},"125":{},"141":{},"160":{},"163":{},"165":{},"166":{},"167":{},"170":{},"172":{},"173":{},"182":{},"183":{},"184":{},"185":{},"186":{},"189":{},"190":{},"191":{},"192":{},"193":{},"196":{},"198":{},"216":{},"217":{},"221":{},"223":{},"227":{}},"sidebarParentCategories":{}}],["versionstr",{"_index":1342,"title":{},"content":{"185":{}},"sidebarParentCategories":{}}],["via",{"_index":121,"title":{},"content":{"9":{},"17":{},"18":{},"46":{},"54":{},"114":{},"130":{},"131":{},"132":{},"159":{}},"sidebarParentCategories":{}}],["view",{"_index":72,"title":{},"content":{"23":{},"39":{},"191":{}},"sidebarParentCategories":{}}],["visual",{"_index":1261,"title":{},"content":{"146":{}},"sidebarParentCategories":{}}],["void",{"_index":579,"title":{},"content":{"68":{},"83":{},"99":{},"155":{},"156":{}},"sidebarParentCategories":{}}],["walk",{"_index":404,"title":{},"content":{"41":{}},"sidebarParentCategories":{}}],["wallet",{"_index":172,"title":{},"content":{"19":{},"20":{},"39":{},"92":{},"95":{},"111":{},"112":{},"113":{},"115":{},"116":{},"144":{},"153":{},"156":{},"158":{},"159":{},"163":{},"165":{},"184":{},"185":{},"187":{},"222":{}},"sidebarParentCategories":{}}],["wallet_schem",{"_index":1232,"title":{},"content":{"144":{}},"sidebarParentCategories":{}}],["walletconfig",{"_index":777,"title":{"111":{}},"content":{"92":{},"95":{},"111":{},"144":{},"153":{},"156":{},"159":{},"163":{}},"sidebarParentCategories":{}}],["walletconfig.id",{"_index":818,"title":{"112":{}},"content":{"144":{}},"sidebarParentCategories":{}}],["walletconfig.key",{"_index":819,"title":{"113":{}},"content":{"114":{},"144":{},"156":{},"163":{}},"sidebarParentCategories":{}}],["walletconfig.keyderivationmethod",{"_index":825,"title":{"114":{}},"content":{},"sidebarParentCategories":{}}],["walletconfig.storag",{"_index":848,"title":{"115":{}},"content":{},"sidebarParentCategories":{}}],["walletid",{"_index":375,"title":{},"content":{"39":{},"144":{}},"sidebarParentCategories":{}}],["walletkey",{"_index":376,"title":{},"content":{"39":{}},"sidebarParentCategories":{}}],["walletschem",{"_index":1229,"title":{},"content":{"144":{}},"sidebarParentCategories":{}}],["walletscheme.databaseperwallet",{"_index":1233,"title":{},"content":{"144":{}},"sidebarParentCategories":{}}],["want",{"_index":416,"title":{},"content":{"44":{},"68":{},"69":{},"142":{},"155":{},"159":{},"160":{},"161":{},"192":{},"220":{},"224":{},"225":{}},"sidebarParentCategories":{}}],["warn",{"_index":1029,"title":{},"content":{"100":{}},"sidebarParentCategories":{}}],["warn(messag",{"_index":1017,"title":{},"content":{"99":{}},"sidebarParentCategories":{}}],["way",{"_index":6,"title":{},"content":{"22":{},"23":{},"29":{},"34":{},"38":{},"68":{},"93":{},"100":{},"155":{},"166":{},"167":{},"182":{},"186":{},"193":{},"223":{},"224":{},"225":{}},"sidebarParentCategories":{}}],["we'll",{"_index":258,"title":{},"content":{"11":{},"41":{},"172":{},"184":{}},"sidebarParentCategories":{}}],["we'v",{"_index":1316,"title":{},"content":{"173":{},"191":{},"193":{},"225":{}},"sidebarParentCategories":{}}],["websit",{"_index":854,"title":{},"content":{"116":{}},"sidebarParentCategories":{}}],["websocket",{"_index":248,"title":{},"content":{"9":{},"34":{},"93":{},"137":{},"153":{},"156":{},"159":{},"163":{}},"sidebarParentCategories":{}}],["weekli",{"_index":274,"title":{},"content":{"15":{}},"sidebarParentCategories":{}}],["welcom",{"_index":1,"title":{},"content":{"23":{}},"sidebarParentCategories":{}}],["well",{"_index":63,"title":{},"content":{"23":{},"115":{},"192":{}},"sidebarParentCategories":{}}],["whether",{"_index":19,"title":{},"content":{"23":{},"53":{},"59":{},"65":{},"77":{},"121":{},"127":{},"130":{},"131":{},"132":{},"135":{},"139":{},"141":{},"184":{},"191":{},"197":{}},"sidebarParentCategories":{}}],["whose",{"_index":1630,"title":{},"content":{"221":{}},"sidebarParentCategories":{}}],["window",{"_index":424,"title":{"60":{},"145":{}},"content":{"45":{},"143":{},"146":{},"150":{},"151":{}},"sidebarParentCategories":{}}],["wire",{"_index":933,"title":{},"content":{"129":{}},"sidebarParentCategories":{}}],["without",{"_index":810,"title":{},"content":{"111":{},"165":{},"170":{},"191":{},"194":{},"226":{}},"sidebarParentCategories":{}}],["won't",{"_index":1024,"title":{},"content":{"100":{},"187":{},"192":{}},"sidebarParentCategories":{}}],["work",{"_index":8,"title":{},"content":{"1":{},"2":{},"9":{},"15":{},"17":{},"23":{},"41":{},"44":{},"45":{},"69":{},"83":{},"91":{},"100":{},"153":{},"159":{},"166":{},"168":{},"169":{},"171":{},"189":{},"191":{},"200":{},"216":{},"221":{},"223":{}},"sidebarParentCategories":{}}],["workflow",{"_index":1217,"title":{},"content":{"165":{},"184":{}},"sidebarParentCategories":{}}],["world",{"_index":188,"title":{},"content":{"20":{}},"sidebarParentCategories":{}}],["worri",{"_index":1406,"title":{},"content":{"191":{}},"sidebarParentCategories":{}}],["worth",{"_index":1724,"title":{},"content":{"225":{}},"sidebarParentCategories":{}}],["wrapper",{"_index":304,"title":{},"content":{"24":{},"100":{}},"sidebarParentCategories":{}}],["written",{"_index":60,"title":{},"content":{"23":{}},"sidebarParentCategories":{}}],["wrong",{"_index":1535,"title":{},"content":{"197":{}},"sidebarParentCategories":{}}],["wsoutboundtransport",{"_index":784,"title":{},"content":{"93":{},"95":{},"153":{},"156":{},"159":{},"163":{}},"sidebarParentCategories":{}}],["wsoutboundtransport())agent.registeroutboundtransport(new",{"_index":790,"title":{},"content":{"93":{}},"sidebarParentCategories":{}}],["x86",{"_index":642,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["x86.jar",{"_index":662,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["x86.zip",{"_index":644,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["x86_64",{"_index":647,"title":{},"content":{"83":{},"150":{}},"sidebarParentCategories":{}}],["x86_64.zip",{"_index":649,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["xf",{"_index":657,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["y",{"_index":504,"title":{},"content":{"71":{}},"sidebarParentCategories":{}}],["yarn",{"_index":329,"title":{"49":{},"57":{},"63":{},"73":{}},"content":{"31":{},"33":{},"36":{},"45":{},"49":{},"57":{},"63":{},"73":{},"90":{},"91":{},"159":{},"189":{},"216":{}},"sidebarParentCategories":{}}],["ye",{"_index":701,"title":{},"content":{"78":{},"220":{}},"sidebarParentCategories":{}}],["you'll",{"_index":83,"title":{},"content":{"23":{},"225":{}},"sidebarParentCategories":{}}],["you'r",{"_index":411,"title":{},"content":{"44":{},"69":{},"91":{},"166":{},"168":{},"169":{},"189":{},"192":{},"216":{}},"sidebarParentCategories":{}}],["yourself",{"_index":37,"title":{},"content":{"23":{},"184":{},"185":{},"193":{}},"sidebarParentCategories":{}}],["yum",{"_index":507,"title":{},"content":{"71":{},"74":{},"75":{}},"sidebarParentCategories":{}}],["zeromq",{"_index":463,"title":{},"content":{"51":{},"75":{},"177":{}},"sidebarParentCategories":{}}],["zip",{"_index":1241,"title":{},"content":{"102":{},"176":{}},"sidebarParentCategories":{}}]],"pipeline":["stemmer"]}} \ No newline at end of file +{"documents":[{"id":1,"pageTitle":"","sectionTitle":"Intro","sectionRoute":"/guides/0.3","type":"docs"},{"id":13,"pageTitle":"","sectionTitle":"Concepts","sectionRoute":"/guides/0.3/concepts","type":"docs"},{"id":14,"pageTitle":"","sectionTitle":"📄️ Agents","sectionRoute":"/guides/0.3/concepts","type":"docs"},{"id":15,"pageTitle":"","sectionTitle":"📄️ DIDs and DIDComm","sectionRoute":"/guides/0.3/concepts","type":"docs"},{"id":16,"pageTitle":"","sectionTitle":"📄️ Platform and Environment","sectionRoute":"/guides/0.3/concepts","type":"docs"},{"id":7,"pageTitle":"","sectionTitle":"Agents","sectionRoute":"/guides/0.3/concepts/agents","type":"docs"},{"id":8,"pageTitle":"","sectionTitle":"Characteristics","sectionRoute":"/guides/0.3/concepts/agents#characteristics","type":"docs"},{"id":9,"pageTitle":"","sectionTitle":"Categories","sectionRoute":"/guides/0.3/concepts/agents#categories","type":"docs"},{"id":10,"pageTitle":"","sectionTitle":"Examples","sectionRoute":"/guides/0.3/concepts/agents#examples","type":"docs"},{"id":11,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/0.3/concepts/agents#useful-resources","type":"docs"},{"id":2,"pageTitle":"","sectionTitle":"DIDs and DIDComm","sectionRoute":"/guides/0.3/concepts/did-and-didcomm","type":"docs"},{"id":3,"pageTitle":"","sectionTitle":"DIDs","sectionRoute":"/guides/0.3/concepts/did-and-didcomm#dids","type":"docs"},{"id":4,"pageTitle":"","sectionTitle":"DID Documents","sectionRoute":"/guides/0.3/concepts/did-and-didcomm#did-documents","type":"docs"},{"id":5,"pageTitle":"","sectionTitle":"DIDComm","sectionRoute":"/guides/0.3/concepts/did-and-didcomm#didcomm","type":"docs"},{"id":6,"pageTitle":"","sectionTitle":"Useful Resources","sectionRoute":"/guides/0.3/concepts/did-and-didcomm#useful-resources","type":"docs"},{"id":12,"pageTitle":"","sectionTitle":"Platform and Environment","sectionRoute":"/guides/0.3/concepts/platform-and-environment","type":"docs"},{"id":17,"pageTitle":"","sectionTitle":"The Aries JavaScript Ecosystem","sectionRoute":"/guides/0.3/ecosystem","type":"docs"},{"id":18,"pageTitle":"","sectionTitle":"Repositories","sectionRoute":"/guides/0.3/ecosystem#repositories","type":"docs"},{"id":19,"pageTitle":"","sectionTitle":"Documentation","sectionRoute":"/guides/0.3/ecosystem#documentation","type":"docs"},{"id":20,"pageTitle":"","sectionTitle":"Aries Framework JavaScript","sectionRoute":"/guides/0.3/ecosystem#aries-framework-javascript","type":"docs"},{"id":21,"pageTitle":"","sectionTitle":"Contributing in the Aries JS Ecosystem","sectionRoute":"/guides/0.3/ecosystem#contributing-in-the-aries-js-ecosystem","type":"docs"},{"id":22,"pageTitle":"","sectionTitle":"Developer Contributions","sectionRoute":"/guides/0.3/ecosystem#developer-contributions","type":"docs"},{"id":23,"pageTitle":"","sectionTitle":"Extensions","sectionRoute":"/guides/0.3/extensions","type":"docs"},{"id":24,"pageTitle":"","sectionTitle":"🗃️ REST API","sectionRoute":"/guides/0.3/extensions","type":"docs"},{"id":25,"pageTitle":"","sectionTitle":"🗃️ React Hooks","sectionRoute":"/guides/0.3/extensions","type":"docs"},{"id":26,"pageTitle":"","sectionTitle":"🗃️ Redux Store","sectionRoute":"/guides/0.3/extensions","type":"docs"},{"id":27,"pageTitle":"","sectionTitle":"🗃️ Push Notifications","sectionRoute":"/guides/0.3/extensions","type":"docs"},{"id":28,"pageTitle":"","sectionTitle":"Push Notifications","sectionRoute":"/guides/0.3/extensions/push-notifications","type":"docs"},{"id":29,"pageTitle":"","sectionTitle":"Setup","sectionRoute":"/guides/0.3/extensions/push-notifications/setup","type":"docs"},{"id":34,"pageTitle":"","sectionTitle":"React Hooks","sectionRoute":"/guides/0.3/extensions/react-hooks","type":"docs"},{"id":30,"pageTitle":"","sectionTitle":"Setup","sectionRoute":"/guides/0.3/extensions/react-hooks/setup","type":"docs"},{"id":31,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/0.3/extensions/react-hooks/setup#installation","type":"docs"},{"id":32,"pageTitle":"","sectionTitle":"Redux Store","sectionRoute":"/guides/0.3/extensions/redux-store","type":"docs"},{"id":39,"pageTitle":"","sectionTitle":"Setup","sectionRoute":"/guides/0.3/extensions/redux-store/setup","type":"docs"},{"id":40,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/0.3/extensions/redux-store/setup#installation","type":"docs"},{"id":33,"pageTitle":"","sectionTitle":"REST API","sectionRoute":"/guides/0.3/extensions/rest","type":"docs"},{"id":35,"pageTitle":"","sectionTitle":"Setup","sectionRoute":"/guides/0.3/extensions/rest/setup","type":"docs"},{"id":36,"pageTitle":"","sectionTitle":"Quick Setup","sectionRoute":"/guides/0.3/extensions/rest/setup#quick-setup","type":"docs"},{"id":37,"pageTitle":"","sectionTitle":"Directly on computer","sectionRoute":"/guides/0.3/extensions/rest/setup#directly-on-computer","type":"docs"},{"id":38,"pageTitle":"","sectionTitle":"Configuration","sectionRoute":"/guides/0.3/extensions/rest/setup#configuration","type":"docs"},{"id":51,"pageTitle":"","sectionTitle":"Getting started","sectionRoute":"/guides/0.3/getting-started","type":"docs"},{"id":52,"pageTitle":"","sectionTitle":"🗃️ Installation","sectionRoute":"/guides/0.3/getting-started","type":"docs"},{"id":53,"pageTitle":"","sectionTitle":"📄️ Setup","sectionRoute":"/guides/0.3/getting-started","type":"docs"},{"id":42,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/0.3/getting-started/installation","type":"docs"},{"id":41,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs","type":"docs"},{"id":43,"pageTitle":"","sectionTitle":"Apple (Arm)","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm","type":"docs"},{"id":44,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#nodejs","type":"docs"},{"id":45,"pageTitle":"","sectionTitle":"npm","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#npm","type":"docs"},{"id":46,"pageTitle":"","sectionTitle":"yarn","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#yarn","type":"docs"},{"id":47,"pageTitle":"","sectionTitle":"Libsodium","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#libsodium","type":"docs"},{"id":48,"pageTitle":"","sectionTitle":"Libzmq","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#libzmq","type":"docs"},{"id":49,"pageTitle":"","sectionTitle":"Indy-sdk","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#indy-sdk","type":"docs"},{"id":50,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#confirm-installation","type":"docs"},{"id":54,"pageTitle":"","sectionTitle":"Apple (Intel)","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel","type":"docs"},{"id":55,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel","type":"docs"},{"id":56,"pageTitle":"","sectionTitle":"npm","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel#npm","type":"docs"},{"id":57,"pageTitle":"","sectionTitle":"yarn","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel#yarn","type":"docs"},{"id":58,"pageTitle":"","sectionTitle":"Indy-sdk","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel#indy-sdk","type":"docs"},{"id":59,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel#confirm-installation","type":"docs"},{"id":69,"pageTitle":"","sectionTitle":"Linux","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux","type":"docs"},{"id":70,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#nodejs","type":"docs"},{"id":71,"pageTitle":"","sectionTitle":"npm","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#npm","type":"docs"},{"id":72,"pageTitle":"","sectionTitle":"yarn","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#yarn","type":"docs"},{"id":73,"pageTitle":"","sectionTitle":"Libsodium","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#libsodium","type":"docs"},{"id":74,"pageTitle":"","sectionTitle":"Libzmq","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#libzmq","type":"docs"},{"id":75,"pageTitle":"","sectionTitle":"Indy-sdk","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#indy-sdk","type":"docs"},{"id":76,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#confirm-installation","type":"docs"},{"id":60,"pageTitle":"","sectionTitle":"Windows","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows","type":"docs"},{"id":61,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#nodejs","type":"docs"},{"id":62,"pageTitle":"","sectionTitle":"npm","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#npm","type":"docs"},{"id":63,"pageTitle":"","sectionTitle":"yarn","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#yarn","type":"docs"},{"id":64,"pageTitle":"","sectionTitle":"Indy-sdk","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#indy-sdk","type":"docs"},{"id":65,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#confirm-installation","type":"docs"},{"id":66,"pageTitle":"","sectionTitle":"React Native","sectionRoute":"/guides/0.3/getting-started/installation/react-native","type":"docs"},{"id":67,"pageTitle":"","sectionTitle":"Known Errors","sectionRoute":"/guides/0.3/getting-started/installation/react-native#known-errors","type":"docs"},{"id":68,"pageTitle":"","sectionTitle":"Add setup of external storage permissions (Android)","sectionRoute":"/guides/0.3/getting-started/installation/react-native#add-setup-of-external-storage-permissions-android","type":"docs"},{"id":87,"pageTitle":"","sectionTitle":"Android","sectionRoute":"/guides/0.3/getting-started/installation/react-native/android","type":"docs"},{"id":88,"pageTitle":"","sectionTitle":"Set the minimum SDK version","sectionRoute":"/guides/0.3/getting-started/installation/react-native/android#set-the-minimum-sdk-version","type":"docs"},{"id":89,"pageTitle":"","sectionTitle":"Add the Sovrin maven repository","sectionRoute":"/guides/0.3/getting-started/installation/react-native/android#add-the-sovrin-maven-repository","type":"docs"},{"id":90,"pageTitle":"","sectionTitle":"Adding the JNA library dependency","sectionRoute":"/guides/0.3/getting-started/installation/react-native/android#adding-the-jna-library-dependency","type":"docs"},{"id":91,"pageTitle":"","sectionTitle":"Adding the Android indy-sdk libaries","sectionRoute":"/guides/0.3/getting-started/installation/react-native/android#adding-the-android-indy-sdk-libaries","type":"docs"},{"id":77,"pageTitle":"","sectionTitle":"iOS","sectionRoute":"/guides/0.3/getting-started/installation/react-native/ios","type":"docs"},{"id":78,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/0.3/getting-started/prerequisites","type":"docs"},{"id":79,"pageTitle":"","sectionTitle":"Setup","sectionRoute":"/guides/0.3/getting-started/set-up","type":"docs"},{"id":80,"pageTitle":"","sectionTitle":"Installing the required dependencies","sectionRoute":"/guides/0.3/getting-started/set-up#installing-the-required-dependencies","type":"docs"},{"id":81,"pageTitle":"","sectionTitle":"Additional setup","sectionRoute":"/guides/0.3/getting-started/set-up#additional-setup","type":"docs"},{"id":82,"pageTitle":"","sectionTitle":"Setting up the agent","sectionRoute":"/guides/0.3/getting-started/set-up#setting-up-the-agent","type":"docs"},{"id":83,"pageTitle":"","sectionTitle":"Setting up the transports","sectionRoute":"/guides/0.3/getting-started/set-up#setting-up-the-transports","type":"docs"},{"id":84,"pageTitle":"","sectionTitle":"Initializing the agent","sectionRoute":"/guides/0.3/getting-started/set-up#initializing-the-agent","type":"docs"},{"id":85,"pageTitle":"","sectionTitle":"Full code snippet","sectionRoute":"/guides/0.3/getting-started/set-up#full-code-snippet","type":"docs"},{"id":86,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/0.3/getting-started/set-up#useful-resources","type":"docs"},{"id":92,"pageTitle":"","sectionTitle":"Tutorials","sectionRoute":"/guides/0.3/tutorials","type":"docs"},{"id":93,"pageTitle":"","sectionTitle":"🗃️ Agent Config","sectionRoute":"/guides/0.3/tutorials","type":"docs"},{"id":94,"pageTitle":"","sectionTitle":"📄️ Create a connection","sectionRoute":"/guides/0.3/tutorials","type":"docs"},{"id":95,"pageTitle":"","sectionTitle":"📄️ Issue a credential","sectionRoute":"/guides/0.3/tutorials","type":"docs"},{"id":96,"pageTitle":"","sectionTitle":"🗃️ Postgres Database","sectionRoute":"/guides/0.3/tutorials","type":"docs"},{"id":97,"pageTitle":"","sectionTitle":"Agent Config","sectionRoute":"/guides/0.3/tutorials/agent-config","type":"docs"},{"id":98,"pageTitle":"","sectionTitle":"label*","sectionRoute":"/guides/0.3/tutorials/agent-config#label","type":"docs"},{"id":99,"pageTitle":"","sectionTitle":"walletConfig","sectionRoute":"/guides/0.3/tutorials/agent-config#walletconfig","type":"docs"},{"id":100,"pageTitle":"","sectionTitle":"walletConfig.id*","sectionRoute":"/guides/0.3/tutorials/agent-config#walletconfigid","type":"docs"},{"id":101,"pageTitle":"","sectionTitle":"walletConfig.key*","sectionRoute":"/guides/0.3/tutorials/agent-config#walletconfigkey","type":"docs"},{"id":102,"pageTitle":"","sectionTitle":"walletConfig.keyDerivationMethod","sectionRoute":"/guides/0.3/tutorials/agent-config#walletconfigkeyderivationmethod","type":"docs"},{"id":103,"pageTitle":"","sectionTitle":"walletConfig.storage","sectionRoute":"/guides/0.3/tutorials/agent-config#walletconfigstorage","type":"docs"},{"id":104,"pageTitle":"","sectionTitle":"endpoints","sectionRoute":"/guides/0.3/tutorials/agent-config#endpoints","type":"docs"},{"id":105,"pageTitle":"","sectionTitle":"publicDidSeed","sectionRoute":"/guides/0.3/tutorials/agent-config#publicdidseed","type":"docs"},{"id":106,"pageTitle":"","sectionTitle":"indyLedgers","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgers","type":"docs"},{"id":107,"pageTitle":"","sectionTitle":"indyLedgers.id*","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgersid","type":"docs"},{"id":108,"pageTitle":"","sectionTitle":"indyLedgers.indyNamespace","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgersindynamespace","type":"docs"},{"id":109,"pageTitle":"","sectionTitle":"indyLedgers.isProduction*","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgersisproduction","type":"docs"},{"id":110,"pageTitle":"","sectionTitle":"indyLedgers.genesisPath","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgersgenesispath","type":"docs"},{"id":111,"pageTitle":"","sectionTitle":"indyLedgers.genesisTransactions","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgersgenesistransactions","type":"docs"},{"id":112,"pageTitle":"","sectionTitle":"indyLedgers.transactionAuthorAgreement","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgerstransactionauthoragreement","type":"docs"},{"id":113,"pageTitle":"","sectionTitle":"indyLedgers.transactionAuthorAgreement.version","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgerstransactionauthoragreementversion","type":"docs"},{"id":114,"pageTitle":"","sectionTitle":"indyLedgers.transactionAuthorAgreement.acceptanceMechanism","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgerstransactionauthoragreementacceptancemechanism","type":"docs"},{"id":115,"pageTitle":"","sectionTitle":"connectToIndyLedgerOnStartup","sectionRoute":"/guides/0.3/tutorials/agent-config#connecttoindyledgeronstartup","type":"docs"},{"id":116,"pageTitle":"","sectionTitle":"logger","sectionRoute":"/guides/0.3/tutorials/agent-config#logger","type":"docs"},{"id":117,"pageTitle":"","sectionTitle":"didCommMimeType","sectionRoute":"/guides/0.3/tutorials/agent-config#didcommmimetype","type":"docs"},{"id":118,"pageTitle":"","sectionTitle":"autoAcceptCredentials","sectionRoute":"/guides/0.3/tutorials/agent-config#autoacceptcredentials","type":"docs"},{"id":119,"pageTitle":"","sectionTitle":"autoAcceptProofs","sectionRoute":"/guides/0.3/tutorials/agent-config#autoacceptproofs","type":"docs"},{"id":120,"pageTitle":"","sectionTitle":"autoAcceptMediationRequests","sectionRoute":"/guides/0.3/tutorials/agent-config#autoacceptmediationrequests","type":"docs"},{"id":121,"pageTitle":"","sectionTitle":"mediatorConnectionsInvite","sectionRoute":"/guides/0.3/tutorials/agent-config#mediatorconnectionsinvite","type":"docs"},{"id":122,"pageTitle":"","sectionTitle":"defaultMediatorId","sectionRoute":"/guides/0.3/tutorials/agent-config#defaultmediatorid","type":"docs"},{"id":123,"pageTitle":"","sectionTitle":"clearDefaultMediator","sectionRoute":"/guides/0.3/tutorials/agent-config#cleardefaultmediator","type":"docs"},{"id":124,"pageTitle":"","sectionTitle":"mediatorPollingInterval","sectionRoute":"/guides/0.3/tutorials/agent-config#mediatorpollinginterval","type":"docs"},{"id":125,"pageTitle":"","sectionTitle":"mediatorPickupStratery","sectionRoute":"/guides/0.3/tutorials/agent-config#mediatorpickupstratery","type":"docs"},{"id":126,"pageTitle":"","sectionTitle":"maximumMessagePickup (subject to change)","sectionRoute":"/guides/0.3/tutorials/agent-config#maximummessagepickup-subject-to-change","type":"docs"},{"id":127,"pageTitle":"","sectionTitle":"useLegacyDidSovPrefix","sectionRoute":"/guides/0.3/tutorials/agent-config#uselegacydidsovprefix","type":"docs"},{"id":128,"pageTitle":"","sectionTitle":"connectionImageUrl","sectionRoute":"/guides/0.3/tutorials/agent-config#connectionimageurl","type":"docs"},{"id":129,"pageTitle":"","sectionTitle":"autoUpdateStorageOnStartup","sectionRoute":"/guides/0.3/tutorials/agent-config#autoupdatestorageonstartup","type":"docs"},{"id":130,"pageTitle":"","sectionTitle":"Logging","sectionRoute":"/guides/0.3/tutorials/agent-config/logging","type":"docs"},{"id":131,"pageTitle":"","sectionTitle":"Using the Default ConsoleLogger","sectionRoute":"/guides/0.3/tutorials/agent-config/logging#using-the-default-consolelogger","type":"docs"},{"id":132,"pageTitle":"","sectionTitle":"Creating your own Logger","sectionRoute":"/guides/0.3/tutorials/agent-config/logging#creating-your-own-logger","type":"docs"},{"id":133,"pageTitle":"","sectionTitle":"Indy Logs","sectionRoute":"/guides/0.3/tutorials/agent-config/logging#indy-logs","type":"docs"},{"id":168,"pageTitle":"","sectionTitle":"Create a connection","sectionRoute":"/guides/0.3/tutorials/create-a-connection","type":"docs"},{"id":169,"pageTitle":"","sectionTitle":"1. Setting up the agents","sectionRoute":"/guides/0.3/tutorials/create-a-connection#1-setting-up-the-agents","type":"docs"},{"id":170,"pageTitle":"","sectionTitle":"3. Receiving the invitation","sectionRoute":"/guides/0.3/tutorials/create-a-connection#3-receiving-the-invitation","type":"docs"},{"id":171,"pageTitle":"","sectionTitle":"4. (additional) listen to incoming connection responses","sectionRoute":"/guides/0.3/tutorials/create-a-connection#4-additional-listen-to-incoming-connection-responses","type":"docs"},{"id":172,"pageTitle":"","sectionTitle":"5. Full code snippets","sectionRoute":"/guides/0.3/tutorials/create-a-connection#5-full-code-snippets","type":"docs"},{"id":173,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/0.3/tutorials/create-a-connection#useful-resources","type":"docs"},{"id":174,"pageTitle":"","sectionTitle":"Issue a credential","sectionRoute":"/guides/0.3/tutorials/issue-a-credential","type":"docs"},{"id":175,"pageTitle":"","sectionTitle":"1. Setting up the agents","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#1-setting-up-the-agents","type":"docs"},{"id":176,"pageTitle":"","sectionTitle":"2. Registering the schema and credential definition","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#2-registering-the-schema-and-credential-definition","type":"docs"},{"id":177,"pageTitle":"","sectionTitle":"3. Listening for incoming credentials","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#3-listening-for-incoming-credentials","type":"docs"},{"id":178,"pageTitle":"","sectionTitle":"4. Issuing a credential","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#4-issuing-a-credential","type":"docs"},{"id":179,"pageTitle":"","sectionTitle":"5. Full code snippets","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#5-full-code-snippets","type":"docs"},{"id":180,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#useful-resources","type":"docs"},{"id":181,"pageTitle":"","sectionTitle":"Side notes","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#side-notes","type":"docs"},{"id":134,"pageTitle":"","sectionTitle":"Using PostgreSQL as Database in Node.js","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs","type":"docs"},{"id":135,"pageTitle":"","sectionTitle":"Installation of the Postgres Plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs#installation-of-the-postgres-plugin","type":"docs"},{"id":136,"pageTitle":"","sectionTitle":"Using the Postgres Plugin in AFJ","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs#using-the-postgres-plugin-in-afj","type":"docs"},{"id":137,"pageTitle":"","sectionTitle":"Postgres Setup for Linux","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux","type":"docs"},{"id":138,"pageTitle":"","sectionTitle":"Prerequisites","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux#prerequisites","type":"docs"},{"id":139,"pageTitle":"","sectionTitle":"Step 1: installing the dependencies using apt","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux#step-1-installing-the-dependencies-using-apt","type":"docs"},{"id":140,"pageTitle":"","sectionTitle":"Debian based (Ubuntu, Mint, Kali, Deepin, etc.)","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux#debian-based-ubuntu-mint-kali-deepin-etc","type":"docs"},{"id":141,"pageTitle":"","sectionTitle":"Step 2: Build Postgres plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux#step-2-build-postgres-plugin","type":"docs"},{"id":142,"pageTitle":"","sectionTitle":"Step 2.1: Cloning the indy-sdk","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux#step-21-cloning-the-indy-sdk","type":"docs"},{"id":143,"pageTitle":"","sectionTitle":"Step 2.2: Building Postgres plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux#step-22-building-postgres-plugin","type":"docs"},{"id":144,"pageTitle":"","sectionTitle":"Step 2.3: Moving the file","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux#step-23-moving-the-file","type":"docs"},{"id":152,"pageTitle":"","sectionTitle":"Postgres Setup for macOS","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos","type":"docs"},{"id":153,"pageTitle":"","sectionTitle":"Prerequisites","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos#prerequisites","type":"docs"},{"id":154,"pageTitle":"","sectionTitle":"Step 1: installing the dependencies using brew","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos#step-1-installing-the-dependencies-using-brew","type":"docs"},{"id":155,"pageTitle":"","sectionTitle":"Step 2: Build Postgres plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos#step-2-build-postgres-plugin","type":"docs"},{"id":156,"pageTitle":"","sectionTitle":"Step 2.1: Cloning the indy-sdk","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos#step-21-cloning-the-indy-sdk","type":"docs"},{"id":157,"pageTitle":"","sectionTitle":"Step 2.2: Building Postgres plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos#step-22-building-postgres-plugin","type":"docs"},{"id":158,"pageTitle":"","sectionTitle":"Step 2.3: Moving the file","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos#step-23-moving-the-file","type":"docs"},{"id":145,"pageTitle":"","sectionTitle":"Postgres Setup for windows","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows","type":"docs"},{"id":146,"pageTitle":"","sectionTitle":"Build Environment Prerequisites","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#build-environment-prerequisites","type":"docs"},{"id":147,"pageTitle":"","sectionTitle":"Step 1: Getting dependencies","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#step-1-getting-dependencies","type":"docs"},{"id":148,"pageTitle":"","sectionTitle":"Step 2: Build Postgres plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#step-2-build-postgres-plugin","type":"docs"},{"id":149,"pageTitle":"","sectionTitle":"Step 2.1: Cloning the indy-sdk","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#step-21-cloning-the-indy-sdk","type":"docs"},{"id":150,"pageTitle":"","sectionTitle":"Step 2.2: Building Postgres plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#step-22-building-postgres-plugin","type":"docs"},{"id":151,"pageTitle":"","sectionTitle":"Step 2.3: Setting the file to PATH","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#step-23-setting-the-file-to-path","type":"docs"},{"id":159,"pageTitle":"","sectionTitle":"Updating AFJ","sectionRoute":"/guides/0.3/updating","type":"docs"},{"id":160,"pageTitle":"","sectionTitle":"📄️ Update Assistant","sectionRoute":"/guides/0.3/updating","type":"docs"},{"id":161,"pageTitle":"","sectionTitle":"📄️ Migrating from AFJ 0.1.0 to 0.2.x","sectionRoute":"/guides/0.3/updating","type":"docs"},{"id":162,"pageTitle":"","sectionTitle":"📄️ Migrating from AFJ 0.2.x to 0.3.x","sectionRoute":"/guides/0.3/updating","type":"docs"},{"id":163,"pageTitle":"","sectionTitle":"Versioning","sectionRoute":"/guides/0.3/updating#versioning","type":"docs"},{"id":164,"pageTitle":"","sectionTitle":"Types of breaking changes","sectionRoute":"/guides/0.3/updating#types-of-breaking-changes","type":"docs"},{"id":165,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/0.3/updating#breaking-code-changes","type":"docs"},{"id":166,"pageTitle":"","sectionTitle":"Breaking Storage Changes","sectionRoute":"/guides/0.3/updating#breaking-storage-changes","type":"docs"},{"id":167,"pageTitle":"","sectionTitle":"Migration Guides","sectionRoute":"/guides/0.3/updating#migration-guides","type":"docs"},{"id":182,"pageTitle":"","sectionTitle":"Update Assistant","sectionRoute":"/guides/0.3/updating/update-assistant","type":"docs"},{"id":183,"pageTitle":"","sectionTitle":"Update Strategies","sectionRoute":"/guides/0.3/updating/update-assistant#update-strategies","type":"docs"},{"id":184,"pageTitle":"","sectionTitle":"Manually instantiating the update assistant on agent startup","sectionRoute":"/guides/0.3/updating/update-assistant#manually-instantiating-the-update-assistant-on-agent-startup","type":"docs"},{"id":185,"pageTitle":"","sectionTitle":"Storing the agent storage version outside of the agent storage","sectionRoute":"/guides/0.3/updating/update-assistant#storing-the-agent-storage-version-outside-of-the-agent-storage","type":"docs"},{"id":186,"pageTitle":"","sectionTitle":"Automatically update on agent startup","sectionRoute":"/guides/0.3/updating/update-assistant#automatically-update-on-agent-startup","type":"docs"},{"id":187,"pageTitle":"","sectionTitle":"Backups","sectionRoute":"/guides/0.3/updating/update-assistant#backups","type":"docs"},{"id":210,"pageTitle":"","sectionTitle":"Migrating from AFJ 0.1.0 to 0.2.x","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2","type":"docs"},{"id":211,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#breaking-code-changes","type":"docs"},{"id":212,"pageTitle":"","sectionTitle":"Credentials Module","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#credentials-module","type":"docs"},{"id":213,"pageTitle":"","sectionTitle":"Connections Module","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#connections-module","type":"docs"},{"id":214,"pageTitle":"","sectionTitle":"Updating Custom Messages to the New Message Type Objects","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#updating-custom-messages-to-the-new-message-type-objects","type":"docs"},{"id":215,"pageTitle":"","sectionTitle":"Breaking Storage Changes","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#breaking-storage-changes","type":"docs"},{"id":216,"pageTitle":"","sectionTitle":"Credential Metadata","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#credential-metadata","type":"docs"},{"id":217,"pageTitle":"","sectionTitle":"Migrate Credential Record Properties","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#migrate-credential-record-properties","type":"docs"},{"id":218,"pageTitle":"","sectionTitle":"Mediation Record Role","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#mediation-record-role","type":"docs"},{"id":219,"pageTitle":"","sectionTitle":"Extracting Did Documents to Did Repository","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#extracting-did-documents-to-did-repository","type":"docs"},{"id":220,"pageTitle":"","sectionTitle":"Migrating to the Out of Band Record","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#migrating-to-the-out-of-band-record","type":"docs"},{"id":221,"pageTitle":"","sectionTitle":"Unifying Connection States and Roles","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#unifying-connection-states-and-roles","type":"docs"},{"id":290,"pageTitle":"","sectionTitle":"Migrating from AFJ 0.2.x to 0.3.x","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3","type":"docs"},{"id":291,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#breaking-code-changes","type":"docs"},{"id":292,"pageTitle":"","sectionTitle":"Agent creation","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#agent-creation","type":"docs"},{"id":293,"pageTitle":"","sectionTitle":"did:key usage in protocols","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#didkey-usage-in-protocols","type":"docs"},{"id":294,"pageTitle":"","sectionTitle":"Modules extracted from the core","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#modules-extracted-from-the-core","type":"docs"},{"id":295,"pageTitle":"","sectionTitle":"Discover Features Module","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#discover-features-module","type":"docs"},{"id":296,"pageTitle":"","sectionTitle":"Ledger Module","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#ledger-module","type":"docs"},{"id":297,"pageTitle":"","sectionTitle":"Proofs Module","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#proofs-module","type":"docs"},{"id":298,"pageTitle":"","sectionTitle":"Out Of Band Proofs and Credentials","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#out-of-band-proofs-and-credentials","type":"docs"},{"id":299,"pageTitle":"","sectionTitle":"Updating Custom Modules to the new Plugin API","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#updating-custom-modules-to-the-new-plugin-api","type":"docs"},{"id":300,"pageTitle":"","sectionTitle":"Breaking Storage Changes","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#breaking-storage-changes","type":"docs"},{"id":301,"pageTitle":"","sectionTitle":"Migrate Proof Record Properties","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#migrate-proof-record-properties","type":"docs"},{"id":302,"pageTitle":"","sectionTitle":"Migrate Connection Record properties","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#migrate-connection-record-properties","type":"docs"},{"id":303,"pageTitle":"","sectionTitle":"Migrate Did Record properties","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#migrate-did-record-properties","type":"docs"}],"index":{"version":"2.3.9","fields":["title","content","sidebarParentCategories"],"fieldVectors":[["title/1",[0,6.518]],["content/1",[1,2.968,2,1.605,3,2.025,4,5.09,5,2.311,6,1.498,7,2.663,8,2.001,9,2.461,10,2.663,11,2.005,12,2.968,13,2.663,14,2.968,15,4.667,16,2.968,17,1.375,18,1.93,19,1.533,20,3.287,21,4.667,22,2.304,23,2.968,24,3.287,25,2.574,26,2.461,27,2.968,28,2.968,29,3.399,30,2.122,31,0.648,32,2.162,33,3.505,34,1.521,35,1.864,36,4.782,37,2.311,38,4.257,39,2.663,40,2.091,41,1.571,42,4.782,43,1.498,44,2.461,45,2.968,46,2.311,47,2.311,48,2.968,49,2.663,50,1.375,51,2.663,52,2.663,53,1.228,54,2.968,55,0.542,56,2.968,57,2.968,58,0.938,59,1.653,60,4.667,61,4.667,62,2.119,63,2.461,64,2.968,65,2.461,66,1.611,67,2.533,68,1.611,69,1.533,70,0.996,71,1.042,72,2.461,73,1.804,74,2.968,75,2.663,76,2.968,77,1.804,78,2.005,79,2.663,80,2.663,81,2.005,82,2.968,83,4.186,84,1.7,85,2.968,86,1.611,87,0.549,88,2.663,89,1.571,90,2.461,91,1.7,92,2.005,93,1.533,94,2.968,95,1.533,96,1.092,97,2.968,98,2.968,99,2.968,100,2.968,101,2.311,102,0.682]],["sidebarParentCategories/1",[]],["title/13",[86,3.537]],["content/13",[2,1.87,3,2.732,8,2.12,22,1.975,24,3.482,25,2.464,29,2.913,31,1.079,33,3.004,55,1.421,58,1.266,66,2.682,67,2.682,68,2.682,69,3.515,70,2.283,71,2.389,84,2.83,86,3.692,103,2.29,104,3.482,105,3.104,106,3.79,107,4.943,108,2.754,109,4.943,110,3.339,111,2.754,112,2.554,113,4.597,114,2.83,115,3.03,116,5.297,117,2.495,118,3.104,119,3.004]],["sidebarParentCategories/13",[]],["title/14",[31,1.162,55,0.973]],["content/14",[2,1.949,8,3.385,111,4.397,112,4.078]],["sidebarParentCategories/14",[]],["title/15",[55,0.822,113,3.042,114,2.579]],["content/15",[113,5.6]],["sidebarParentCategories/15",[]],["title/16",[55,0.822,66,2.444,115,2.005]],["content/16",[2,1.701,3,2.808,22,2.521,24,4.446,25,2.896,29,3.72,58,1.301,67,3.425,68,3.425,69,4.132,70,2.684,71,2.808,106,3.516,115,2.811,116,6.226,117,3.186,118,3.963,119,3.836]],["sidebarParentCategories/16",[]],["title/7",[31,1.422]],["content/7",[2,1.972,8,3.057,25,2.581,31,1.555,111,3.971,112,3.682,120,4.815,121,4.332,122,4.937,123,3.995]],["sidebarParentCategories/7",[86,3.267]],["title/8",[124,5.846]],["content/8",[2,1.697,3,1.55,11,2.983,29,2.602,30,1.624,31,1.84,34,1.439,46,3.437,58,0.718,106,2.459,112,3.248,114,3.6,121,2.683,124,3.96,125,3.661,126,3.96,127,5.639,128,4.415,129,6.287,130,4.247,131,3.96,132,4.894,133,4.415,134,3.437,135,4.415,136,4.415,137,3.437,138,3.437,139,6.287,140,2.045,141,4.894,142,4.415,143,4.415,144,3.661,145,2.973,146,1.705,147,4.428,148,2.459,149,2.855,150,1.624,151,2.396,152,1.893,153,2.772,154,3.96,155,3.437,156,3.437,157,3.661,158,4.415,159,2.871,160,3.96,161,4.415,162,3.437,163,2.683]],["sidebarParentCategories/8",[86,3.267]],["title/9",[164,5.846]],["content/9",[2,1.723,3,1.876,31,2.134,34,1.741,35,4.504,106,2.976,164,7.264,165,4.159,166,7.264,167,3.943,168,4.395,169,6.435,170,4.504,171,2.827,172,2.475,173,3.247,174,4.792,175,5.342,176,5.342,177,5.342,178,6.435,179,3.247,180,3.706,181,5.342]],["sidebarParentCategories/9",[86,3.267]],["title/10",[96,2.398]],["content/10",[2,1.39,11,4.415,30,1.716,31,1.426,33,2.835,34,1.52,44,3.867,53,1.929,55,0.852,58,1.063,70,1.565,71,1.638,96,2.404,108,2.598,131,4.184,132,3.631,134,3.631,137,3.631,138,3.631,146,1.802,150,1.716,151,2.531,152,2,153,2.929,155,3.631,162,3.631,168,4.094,172,3.027,180,2.41,182,2.671,183,3.867,184,4.664,185,4.664,186,4.664,187,4.664,188,4.664,189,2.749,190,2.749,191,5.316,192,4.664,193,4.664,194,4.664,195,6.535,196,4.184,197,3.867,198,3.033,199,4.664,200,2,201,4.184,202,2.929,203,4.184]],["sidebarParentCategories/10",[86,3.267]],["title/11",[40,3.752,58,0.866]],["content/11",[2,1.883,3,2.615,25,2.698,31,1.625,42,6.177,102,1.711,204,5.247,205,6.682,206,2.054]],["sidebarParentCategories/11",[86,3.267]],["title/2",[113,3.598,114,3.05]],["content/2",[]],["sidebarParentCategories/2",[86,3.267]],["title/3",[113,4.403]],["content/3",[11,5.503,29,3.829,43,3.28,113,5.503,144,5.388,153,4.08,196,5.828,203,5.828,207,5.828,208,8.145,209,6.012,210,1.972,211,4.389,212,4.577,213,5.828,214,6.497,215,6.497,216,5.388,217,6.497]],["sidebarParentCategories/3",[86,3.267]],["title/4",[32,3.019]],["content/4",[20,4.404,32,3.683,59,4.428,140,2.896,148,3.483,151,3.392,152,2.681,190,3.685,191,4.066,218,4.614,219,4.867,220,4.066,221,4.614,222,5.184,223,5.608,224,3.685,225,3.392,226,4.404,227,5.6,228,4.552,229,4.404,230,4.066,231,5.184]],["sidebarParentCategories/4",[86,3.267]],["title/5",[114,3.732]],["content/5",[2,1.101,3,1.817,8,3.011,46,4.029,47,4.029,49,4.642,103,2.397,104,3.645,105,3.25,106,2.883,114,4.562,121,3.145,146,1.999,148,2.883,151,3.81,152,3.011,153,3.25,155,6.204,182,2.963,227,3.645,228,2.963,232,3.25,233,4.029,234,5.175,235,3.145,236,5.175,237,3.05,238,2.305,239,3.496,240,4.642,241,3.366,242,4.291,243,3.25,244,5.175,245,3.82,246,5.175,247,3.145,248,3.366,249,3.496,250,4.642,251,4.029,252,1.966]],["sidebarParentCategories/5",[86,3.267]],["title/6",[40,3.752,58,0.866]],["content/6",[114,4.63,253,8.333]],["sidebarParentCategories/6",[86,3.267]],["title/12",[66,2.89,115,2.372]],["content/12",[2,1.701,3,2.808,22,2.521,24,4.446,25,2.896,29,3.72,58,1.301,67,3.425,68,3.425,69,4.132,70,2.684,71,2.808,106,3.516,115,2.811,116,6.226,117,3.186,118,3.963,119,3.836]],["sidebarParentCategories/12",[86,3.267]],["title/17",[2,0.958,3,1.581,106,2.509]],["content/17",[2,1.469,3,2.424,59,3.846,92,4.664,93,3.567,103,3.198,106,3.846,159,4.49,202,4.335,254,3.953,255,6.905,256,8.458,257,6.905,258,5.375,259,4.864,260,4.335]],["sidebarParentCategories/17",[]],["title/18",[93,3.367]],["content/18",[2,1.998,3,3.152,25,2.987,31,1.446,70,2.224,71,2.327,93,3.424,125,5.496,168,3.597,261,3.795,262,6.628,263,3.597,264,4.028,265,3.07,266,5.16]],["sidebarParentCategories/18",[]],["title/19",[32,3.019]],["content/19",[2,1.954,3,2.989,25,3.083,31,1.522,32,3.232,38,5.15,70,2.342,71,2.45,168,3.786,238,3.107,265,3.232,266,5.432]],["sidebarParentCategories/19",[]],["title/20",[2,0.958,3,1.581,25,1.631]],["content/20",[2,1.799,3,2.97,25,2.5,43,3.485,92,4.664,106,3.846,146,2.667,152,2.961,163,4.196,200,2.961,252,2.623,267,2.838,268,5.096,269,5.096]],["sidebarParentCategories/20",[]],["title/21",[2,0.83,106,2.173,270,3.235,271,3.235]],["content/21",[2,1.918,8,2.871,25,2.425,67,3.633,166,6.005,261,3.833,266,5.212,271,5.551,272,5.212,273,6.695,274,6.695,275,9.428,276,6.695,277,4.716,278,6.695]],["sidebarParentCategories/21",[]],["title/22",[67,2.89,270,4.417]],["content/22",[2,1.247,43,2.96,67,3.182,75,5.26,91,4.368,149,2.663,232,3.682,266,4.565,267,2.56,270,7.031,272,4.565,279,5.153,280,7.628,281,7.628,282,5.26,283,5.864,284,2.059,285,5.864,286,5.864,287,5.864,288,4.862,289,5.864,290,4.862,291,5.864,292,4.328,293,5.864,294,4.13]],["sidebarParentCategories/22",[]],["title/23",[265,3.019]],["content/23",[2,1.917,3,2.776,7,3.375,25,2.864,31,1.221,53,2.314,55,1.351,58,0.612,70,2.242,79,3.375,91,2.154,93,2.89,96,1.384,112,1.943,122,3.825,123,2.592,154,3.375,191,2.446,228,2.154,247,2.286,254,2.154,260,2.362,261,2.154,265,3.427,267,1.878,268,2.777,295,3.119,296,3.4,297,3.375,298,2.777,299,3.762,300,3.762,301,3.762,302,2.646,303,4.811,304,5.992,305,1.341,306,3.119,307,3.375,308,3.639,309,3.119,310,2.154,311,2.777,312,3.375,313,4.706,314,3.941,315,1.708,316,3.498,317,4.014]],["sidebarParentCategories/23",[]],["title/24",[55,0.822,122,2.579,123,2.086]],["content/24",[316,3.871,317,4.443]],["sidebarParentCategories/24",[]],["title/25",[55,0.822,70,1.511,303,2.929]],["content/25",[316,3.871,317,4.443]],["sidebarParentCategories/25",[]],["title/26",[53,1.863,55,0.822,308,2.929]],["content/26",[316,3.871,317,4.443]],["sidebarParentCategories/26",[]],["title/27",[55,0.822,313,3.172,314,3.172]],["content/27",[316,3.871,317,4.443]],["sidebarParentCategories/27",[]],["title/28",[313,3.752,314,3.752]],["content/28",[6,3.414,31,1.476,43,3.414,58,1.1,120,4.569,180,3.494,267,2.27,302,3.198,313,6.382,314,6.382,315,3.071,318,3.768,319,6.763,320,6.763,321,6.763]],["sidebarParentCategories/28",[265,2.789]],["title/29",[322,2.696]],["content/29",[2,1.804,3,2.059,25,2.124,58,0.954,91,3.357,93,3.029,102,1.347,103,2.716,206,1.617,267,1.968,284,2.059,302,3.607,312,6.843,313,6.325,314,5.373,315,2.663,323,2.342,324,2.562,325,4.13,326,2.716,327,3.765,328,3.85,329,3.85]],["sidebarParentCategories/29",[265,1.782,313,2.709,314,2.709]],["title/34",[70,1.788,303,3.464]],["content/34",[6,3.155,31,1.364,43,3.155,58,1.017,70,2.933,78,4.223,112,3.23,180,4.107,189,4.685,191,4.066,267,2.098,302,2.956,303,5.684,330,4.614,331,4.867,332,7.131,333,4.066,334,5.184,335,6.252,336,4.404]],["sidebarParentCategories/34",[265,2.789]],["title/30",[322,2.696]],["content/30",[2,1.469,3,2.424,25,2.5,58,1.123,70,2.317,93,3.567,102,1.586,103,3.198,206,1.904,267,2.317,284,2.424,302,3.265,303,4.49,323,2.758,324,3.017,325,4.864,326,3.198]],["sidebarParentCategories/30",[70,1.291,265,1.782,303,2.501]],["title/31",[337,1.046]],["content/31",[2,1.743,70,2.202,91,3.757,198,4.267,302,3.103,303,5.812,310,4.693,322,2.714,327,4.045,328,4.137,329,4.137,338,2.621,339,4.622,340,4.267,341,3.473]],["sidebarParentCategories/31",[70,1.291,265,1.782,303,2.501]],["title/32",[53,2.203,308,3.464]],["content/32",[22,2.205,24,3.889,25,1.999,30,2.031,31,1.6,53,3.033,55,1.008,58,1.339,70,2.461,71,1.938,111,3.075,112,2.852,150,2.031,180,3.788,189,3.254,225,2.996,267,2.461,308,4.768,332,6.577,342,6.179,343,4.322,344,4.578,345,2.168,346,4.298,347,2.852,348,5.521,349,5.521,350,3.73]],["sidebarParentCategories/32",[265,2.789]],["title/39",[322,2.696]],["content/39",[2,1.469,3,2.424,25,2.5,53,2.856,58,1.123,93,3.567,102,1.586,103,3.198,206,1.904,267,2.317,284,2.424,302,3.265,308,4.49,323,2.758,324,3.017,325,4.864,326,3.198]],["sidebarParentCategories/39",[53,1.591,265,1.782,308,2.501]],["title/40",[337,1.046]],["content/40",[2,1.743,53,3.697,91,3.757,198,4.267,302,3.103,307,7.352,308,4.267,322,2.714,327,4.045,328,4.137,329,4.137,338,2.621,339,4.622,340,4.267,341,3.473]],["sidebarParentCategories/40",[53,1.591,265,1.782,308,2.501]],["title/33",[122,3.05,123,2.467]],["content/33",[2,1.363,3,1.593,4,3.532,6,2.29,9,3.761,10,4.069,11,3.064,17,2.101,18,2.95,24,4.514,25,1.643,30,1.669,31,1.762,34,1.478,43,3.235,46,3.532,55,1.357,67,2.462,102,1.042,111,2.527,112,3.311,122,4.877,123,3.442,149,2.06,150,1.669,180,3.311,225,2.462,228,4.255,247,2.757,248,2.95,260,4.024,267,2.494,324,1.982,333,2.95,340,2.95,351,2.343,352,4.536,353,4.536,354,4.536,355,2.145,356,3.761,357,2.674,358,3.761,359,4.536,360,2.597,361,4.069]],["sidebarParentCategories/33",[265,2.789]],["title/35",[322,2.696]],["content/35",[25,2.554,66,3.827,69,3.643,91,4.038,102,1.619,103,3.267,206,1.944,230,4.586,322,2.917,326,3.267,337,1.132,362,3.674,363,3.732,364,2.438]],["sidebarParentCategories/35",[122,2.202,123,1.782,265,1.782]],["title/36",[322,2.203,365,5.327]],["content/36",[6,3.803,58,1.225,102,1.73,120,5.09,122,4.314,123,3.49,358,6.247,366,6.247,367,7.534]],["sidebarParentCategories/36",[122,2.202,123,1.782,265,1.782]],["title/37",[120,3.598,368,4.147]],["content/37",[2,1.021,32,2.223,43,3.365,55,1.686,58,0.781,72,5.528,81,3.242,102,1.102,122,4.386,123,2.223,140,2.223,171,2.54,172,3.088,173,2.917,228,4.386,241,4.336,247,4.052,267,2.237,309,3.98,331,3.737,337,1.07,340,3.121,341,2.54,369,3.542,370,3.737,371,3.381,372,3.381,373,2.604,374,2.318,375,4.305,376,4.8,377,4.8,378,4.8,379,3.121,380,3.737,381,3.121,382,3.381,383,4.305,384,4.8,385,3.121,386,4.8,387,4.8]],["sidebarParentCategories/37",[122,2.202,123,1.782,265,1.782]],["title/38",[355,3.082]],["content/38",[2,1.382,33,4.95,38,4.796,102,1.492,122,3.72,249,5.503,263,3.526,267,2.18,309,5.388,341,3.438,355,3.072,358,6.754,371,4.577,372,4.577,388,4.664,389,3.619,390,6.497,391,4.577,392,4.389]],["sidebarParentCategories/38",[122,2.202,123,1.782,265,1.782]],["title/51",[102,1.223,206,1.469]],["content/51",[2,0.992,3,1.638,8,2,25,1.689,29,2.749,34,1.52,50,2.161,55,1.193,58,0.759,62,2.118,70,2.193,71,2.295,89,2.468,102,1.071,103,2.161,110,3.151,118,2.929,119,2.835,168,2.531,173,2.835,189,3.852,198,3.033,232,2.929,258,3.631,259,3.285,260,2.929,317,2.531,322,2.703,323,1.863,337,1.382,350,3.151,362,3.506,363,2.468,364,2.26,393,2.929,394,4.664,395,2.161,396,1.983,397,3.225,398,3.442,399,6.535,400,2.835,401,3.867,402,1.589,403,3.285,404,4.664,405,2.929]],["sidebarParentCategories/51",[]],["title/52",[55,0.973,337,0.855]],["content/52",[317,4.443,405,5.14]],["sidebarParentCategories/52",[]],["title/53",[55,0.973,322,2.203]],["content/53",[232,4.898,337,1.252,362,3.902,363,4.128,364,2.697]],["sidebarParentCategories/53",[]],["title/42",[337,1.046]],["content/42",[2,1.028,3,1.697,8,2.874,18,3.144,22,2.677,34,1.575,62,2.195,70,1.622,71,1.697,73,2.938,106,3.733,115,2.153,168,2.624,173,2.938,220,3.144,284,2.353,290,4.009,322,2.772,324,2.928,326,2.24,337,1.235,340,3.144,350,3.266,362,3.74,364,2.871,395,2.24,396,1.467,398,3.568,401,5.556,403,3.406,406,4.337,407,4.337,408,3.568,409,3.568,410,3.764,411,3.036,412,4.337,413,2.849,414,3.568,415,4.009,416,3.837]],["sidebarParentCategories/42",[102,1.078,206,1.294]],["title/41",[396,1.978]],["content/41",[2,1.127,3,1.861,8,2.273,25,1.919,62,3.24,66,2.876,102,1.217,197,4.394,238,2.36,259,3.733,260,3.328,279,3.58,323,2.117,324,2.315,328,2.675,329,2.675,337,1.446,362,2.273,364,1.833,396,1.608,402,2.43,417,4.126,418,5.3,419,5.3,420,4.126,421,4.394,422,4.754,423,3.328,424,3.58,425,5.026,426,4.126,427,4.754,428,3.912,429,5.3,430,5.3,431,3.446,432,3.912,433,1.461,434,1.861]],["sidebarParentCategories/41",[102,0.883,206,1.06,337,0.617]],["title/43",[425,3.752,427,4.778]],["content/43",[58,1.007,62,2.812,103,2.869,104,4.362,121,3.764,337,1.472,363,3.277,368,4.822,389,3.45,402,2.11,425,4.362,435,6.193,436,5.555,437,8.702,438,6.193,439,6.193,440,3.889,441,4.028,442,5.555,443,5.555,444,4.571,445,5.135,446,5.555]],["sidebarParentCategories/43",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/44",[396,1.978]],["content/44",[3,2.503,115,3.174,173,4.332,337,1.144,341,3.772,396,2.617,440,4.476,447,5.261,448,5.549,449,5.549,450,5.549,451,5.549,452,5.261]],["sidebarParentCategories/44",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/45",[328,3.29]],["content/45",[302,3.562,337,1.21,339,5.307,343,4.44,396,2.286,428,5.561,453,4.899,454,5.307,455,5.561]],["sidebarParentCategories/45",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/46",[329,3.29]],["content/46",[58,1.198,66,3.997,252,2.799,328,4.439,329,4.439,337,1.412,456,4.218,457,5.437]],["sidebarParentCategories/46",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/47",[431,4.238]],["content/47",[58,1.198,231,6.108,337,1.183,431,5.72,433,2.031,434,2.586,440,4.625,458,6.607,459,6.607,460,6.108]],["sidebarParentCategories/47",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/48",[432,4.81]],["content/48",[58,1.212,152,3.194,337,1.196,432,5.498,433,2.054,434,2.615,440,4.677,461,6.682,462,6.682,463,6.177]],["sidebarParentCategories/48",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/49",[433,1.469,434,1.87]],["content/49",[2,0.958,3,1.582,22,1.8,25,1.632,58,0.733,110,3.044,112,2.327,146,1.74,157,3.736,159,2.93,163,2.738,170,2.829,238,2.006,243,2.829,249,3.044,269,3.325,296,5.163,327,2.224,338,1.8,346,3.507,364,1.558,389,2.51,395,2.954,410,3.507,423,2.829,433,2.041,434,2.599,441,4.147,460,3.736,464,3.325,465,2.384,466,3.325,467,4.147,468,3.507,469,3.736,470,4.648,471,4.041,472,3.325,473,3.173,474,3.507,475,4.308,476,4.505,477,4.505,478,3.325,479,3.173,480,2.58,481,3.325,482,2.829,483,3.325,484,1.74,485,3.325,486,3.325,487,4.505,488,4.505]],["sidebarParentCategories/49",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/50",[337,0.855,369,3.931]],["content/50",[2,1.484,19,3.605,326,3.232,337,1.367,341,3.692,364,2.413,371,4.915,372,4.915,389,3.887,433,2.347,434,2.45,467,4.538,489,3.995,490,5.432]],["sidebarParentCategories/50",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/54",[425,3.752,426,4.147]],["content/54",[62,2.98,103,3.04,104,4.622,121,3.988,337,1.503,363,3.473,368,5.109,389,3.655,402,2.235,425,4.622,426,5.109,440,4.12,441,4.267,442,5.886,443,5.886,444,4.843,445,5.441,446,5.886,491,6.562]],["sidebarParentCategories/54",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/55",[396,1.978]],["content/55",[3,2.503,115,3.174,173,4.332,337,1.144,341,3.772,396,2.617,440,4.476,447,5.261,448,5.549,449,5.549,450,5.549,451,5.549,452,5.261]],["sidebarParentCategories/55",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/56",[328,3.29]],["content/56",[302,3.562,337,1.21,339,5.307,343,4.44,396,2.286,428,5.561,453,4.899,454,5.307,455,5.561]],["sidebarParentCategories/56",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/57",[329,3.29]],["content/57",[58,1.198,66,3.997,252,2.799,328,4.439,329,4.439,337,1.412,456,4.218,457,5.437]],["sidebarParentCategories/57",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/58",[433,1.469,434,1.87]],["content/58",[2,1.305,3,2.154,25,2.222,58,0.998,110,4.145,112,3.17,146,2.37,163,3.729,243,3.853,252,2.331,269,4.529,337,1.261,370,4.777,402,2.09,433,2.166,434,2.758,440,4.932,464,4.529,465,3.247,466,4.529,467,3.99,468,4.777,492,3.99,493,6.136,494,6.136]],["sidebarParentCategories/58",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/59",[337,0.855,369,3.931]],["content/59",[2,1.484,19,3.605,326,3.232,337,1.367,341,3.692,364,2.413,371,4.915,372,4.915,389,3.887,433,2.347,434,2.45,467,4.538,489,3.995,490,5.432]],["sidebarParentCategories/59",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/69",[423,4.092]],["content/69",[62,3.421,103,3.49,104,5.307,146,2.91,337,1.21,402,2.566,423,4.73,447,5.561,466,5.561]],["sidebarParentCategories/69",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/70",[396,1.978]],["content/70",[3,2.005,55,1.369,115,2.543,173,3.471,328,2.883,337,1.204,341,3.023,396,2.697,423,3.586,444,5.535,445,4.736,447,4.216,448,4.447,449,4.447,450,4.447,451,4.447,452,4.216,495,4.736,496,4.447,497,4.736,498,4.736,499,4.447,500,4.736,501,5.712,502,7.499,503,4.023,504,5.712,505,5.712,506,5.712,507,4.736]],["sidebarParentCategories/70",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/71",[328,3.29]],["content/71",[302,3.562,337,1.21,339,5.307,343,4.44,396,2.286,428,5.561,453,4.899,454,5.307,455,5.561]],["sidebarParentCategories/71",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/72",[329,3.29]],["content/72",[58,1.198,66,3.997,252,2.799,328,4.439,329,4.439,337,1.412,456,4.218,457,5.437]],["sidebarParentCategories/72",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/73",[431,4.238]],["content/73",[58,1.036,231,5.284,337,1.292,423,4.001,431,6.212,433,1.757,434,2.237,458,5.716,459,5.716,460,5.284,495,5.284,496,4.961,497,5.284,498,5.284,499,4.961,500,5.284,503,4.489,507,5.284,508,5.284,509,5.716]],["sidebarParentCategories/73",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/74",[432,4.81]],["content/74",[58,1.047,152,2.759,337,1.3,423,4.04,431,4.184,432,4.749,433,1.774,434,2.259,461,5.772,462,5.772,463,6.713,495,5.335,496,5.009,497,5.335,498,5.335,499,5.009,500,5.335,503,4.532,507,5.335,508,5.335,509,5.772,510,5.772]],["sidebarParentCategories/74",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/75",[433,1.469,434,1.87]],["content/75",[2,0.848,3,1.4,18,2.594,22,3.04,25,1.445,55,0.728,58,0.649,93,2.061,110,2.695,112,2.061,146,1.541,148,2.222,157,3.308,163,2.424,165,3.105,170,2.505,233,3.105,238,1.776,243,2.505,247,2.424,252,1.516,259,2.81,269,2.944,296,3.55,337,0.938,338,1.593,364,1.379,389,2.222,395,1.848,413,2.351,433,2.098,434,2.672,444,2.944,464,2.944,465,2.111,466,4.312,467,2.594,470,2.505,472,4.312,480,2.284,481,4.312,483,4.312,485,2.944,486,2.944,511,3.989,512,2.351,513,3.989,514,6.31,515,3.578,516,3.989,517,3.989,518,3.989,519,3.989,520,3.989,521,3.989,522,1.776,523,3.668,524,3.989,525,2.695,526,2.944,527,3.989,528,2.944,529,3.989,530,3.578,531,2.505,532,2.424,533,3.989,534,3.989]],["sidebarParentCategories/75",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/76",[337,0.855,369,3.931]],["content/76",[2,1.484,19,3.605,326,3.232,337,1.367,341,3.692,364,2.413,371,4.915,372,4.915,389,3.887,433,2.347,434,2.45,467,4.538,489,3.995,490,5.432]],["sidebarParentCategories/76",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/60",[424,4.403]],["content/60",[]],["sidebarParentCategories/60",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/61",[396,1.978]],["content/61",[3,2.53,115,3.209,173,4.379,238,3.209,341,3.813,396,2.186,447,5.318,448,5.61,449,5.61,450,5.61,451,5.61,452,5.318,470,4.524]],["sidebarParentCategories/61",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/62",[328,3.29]],["content/62",[302,3.562,337,1.21,339,5.307,343,4.44,396,2.286,428,5.561,453,4.899,454,5.307,455,5.561]],["sidebarParentCategories/62",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/63",[329,3.29]],["content/63",[58,1.198,66,3.997,252,2.799,328,4.439,329,4.439,337,1.412,456,4.218,457,5.437]],["sidebarParentCategories/63",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/64",[433,1.469,434,1.87]],["content/64",[2,1.215,3,2.005,25,2.068,58,0.929,110,3.859,112,2.951,115,2.543,146,2.206,163,3.471,170,3.586,238,2.543,243,3.586,259,4.023,269,4.216,296,4.557,410,4.447,421,6.218,433,1.575,434,2.005,464,4.216,465,3.023,469,4.736,470,3.586,535,5.124,536,4.42,537,5.712,538,5.124,539,6.727,540,2.135,541,3.586,542,5.712,543,2.951,544,3.859]],["sidebarParentCategories/64",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/65",[337,0.855,369,3.931]],["content/65",[2,1.484,19,3.605,326,3.232,337,1.367,341,3.692,364,2.413,371,4.915,372,4.915,389,3.887,433,2.347,434,2.45,467,4.538,489,3.995,490,5.432]],["sidebarParentCategories/65",[102,0.748,206,0.898,337,0.523,396,0.988]],["title/66",[70,1.788,71,1.87]],["content/66",[22,2.758,66,3.747,69,3.567,70,2.317,71,2.424,295,5.725,322,2.856,337,1.109,402,2.352,433,1.904,434,2.424,545,4.196,546,4.864,547,5.714,548,6.585]],["sidebarParentCategories/66",[102,0.883,206,1.06,337,0.617]],["title/67",[489,3.05,549,5.327]],["content/67",[]],["sidebarParentCategories/67",[102,0.883,206,1.06,337,0.617]],["title/68",[200,1.32,322,1.273,327,1.519,547,2.079,550,3.077,551,2.76]],["content/68",[6,2.05,38,2.998,55,1.813,58,0.963,91,2.326,95,2.099,149,1.845,152,1.742,222,3.368,224,2.394,296,2.469,302,1.921,351,2.099,364,2.047,416,2.326,482,2.551,489,2.326,543,2.099,544,4.719,551,5.311,552,4.062,553,4.062,554,4.062,555,4.062,556,4.062,557,4.062,558,4.062,559,4.062,560,4.062,561,4.062,562,2.394,563,4.062,564,4.062,565,4.062,566,4.062,567,4.062,568,4.062,569,4.062,570,4.062,571,4.062,572,4.062,573,5.311,574,2.744,575,3.163,576,3.644,577,3.163,578,3.644,579,2.998,580,3.644,581,3.644,582,4.062,583,4.062,584,1.921,585,4.062,586,4.062,587,2.862,588,3.644,589,2.05,590,3.644,591,3.644,592,3.644,593,3.644]],["sidebarParentCategories/68",[102,0.883,206,1.06,337,0.617]],["title/87",[547,4.403]],["content/87",[70,2.472,71,2.586,117,3.718,183,6.108,284,2.586,324,3.218,338,2.943,364,2.547,413,4.341,547,4.976,594,6.108]],["sidebarParentCategories/87",[70,0.948,71,0.992,102,0.649,206,0.779,337,0.454]],["title/88",[284,1.37,305,1.391,434,1.37,595,3.499]],["content/88",[55,1.832,105,4.247,282,6.067,305,2.411,327,3.338,434,2.375,595,6.067,596,7.491,597,8.351,598,6.763,599,6.763]],["sidebarParentCategories/88",[70,0.948,71,0.992,102,0.649,206,0.779,337,0.454]],["title/89",[93,2.015,327,1.925,600,3.499,601,3.499]],["content/89",[55,1.809,93,4.01,105,3.782,170,3.782,224,3.55,327,2.973,364,2.083,481,4.446,596,6.963,600,5.404,601,7.705,602,4.874,603,3.661,604,6.024,605,3.112,606,6.024,607,5.404,608,6.024,609,6.024]],["sidebarParentCategories/89",[70,0.948,71,0.992,102,0.649,206,0.779,337,0.454]],["title/90",[296,2.371,402,1.329,605,2.015,610,3.235]],["content/90",[4,5.32,55,1.734,71,2.399,73,4.153,111,3.806,220,4.444,296,4.153,402,2.328,433,1.884,434,2.399,605,3.53,610,5.666,611,6.833,612,6.129,613,6.833]],["sidebarParentCategories/90",[70,0.948,71,0.992,102,0.649,206,0.779,337,0.454]],["title/91",[433,0.949,434,1.208,547,2.324,605,1.777,614,3.44]],["content/91",[8,0.811,34,1.05,55,1.556,58,0.307,62,0.858,70,1.67,71,2.4,91,1.082,105,1.187,146,0.73,149,0.858,156,1.472,170,2.024,211,1.277,220,1.229,224,1.114,252,1.224,296,2.56,305,0.674,326,0.876,327,1.591,338,0.755,345,1.954,362,0.811,364,1.114,389,1.053,393,1.187,402,0.644,433,1.161,434,1.479,444,5.045,465,1,467,1.229,470,1.187,481,3.109,483,2.379,484,0.73,486,5.045,515,1.696,547,4.618,573,1.696,574,1.277,575,1.472,576,1.696,577,1.472,578,1.696,579,1.395,580,1.696,581,1.696,587,1.332,588,1.696,589,1.627,590,1.696,591,1.696,592,1.696,593,1.696,610,1.568,612,1.696,615,1.89,616,1.696,617,1.89,618,5.583,619,1.89,620,1.696,621,1.89,622,4.212,623,4.212,624,4.212,625,4.212,626,1.89,627,1.89,628,1.89,629,3.223,630,1.89,631,3.673,632,4.212,633,4.976,634,1.89,635,1.89,636,6.835,637,3.223,638,1.89,639,4.212,640,1.89,641,1.89,642,5.583,643,1.89,644,4.212,645,1.89,646,1.89,647,2.891,648,1.89,649,4.212,650,1.89,651,1.89,652,4.976,653,4.976,654,4.976,655,4.212,656,4.976,657,4.976,658,6.835,659,1.89,660,4.212,661,1.89,662,4.212,663,1.89,664,4.212,665,1.89,666,1.696,667,3.223,668,1.89,669,1.89,670,1.89,671,1.89,672,1.89,673,1.89,674,1.89,675,4.464,676,1.696,677,1.395,678,1.696,679,0.782,680,1.89,681,1.696,682,1.696,683,1.89,684,1.89,685,1.89,686,1.89,687,1.89,688,1.696]],["sidebarParentCategories/91",[70,0.948,71,0.992,102,0.649,206,0.779,337,0.454]],["title/77",[548,5.074]],["content/77",[22,1.247,55,1.595,68,1.694,70,2.443,71,2.556,91,2.78,102,0.717,189,2.862,211,4.025,239,3.28,252,1.845,261,1.788,284,1.096,294,2.199,296,1.898,305,1.731,323,1.247,327,2.396,337,0.957,355,1.476,364,1.679,397,2.396,402,1.064,433,1.339,434,1.705,466,2.305,472,5.373,484,1.206,526,2.305,528,2.305,540,1.167,544,2.109,546,3.42,548,5.232,589,3.007,620,4.356,675,6.914,676,2.801,678,2.801,679,2.464,681,2.801,682,2.801,688,2.801,689,2.801,690,3.122,691,4.856,692,1.541,693,3.122,694,2.109,695,2.431,696,3.122,697,3.122,698,5.958,699,0.69,700,3.122,701,2.801,702,3.122,703,3.122,704,3.122,705,2.305,706,1.84,707,3.122,708,2.801,709,3.122,710,4.026,711,2.199,712,2.589,713,4.856,714,3.122,715,2.705,716,2.589,717,3.122,718,1.84,719,2.199,720,4.856,721,4.856]],["sidebarParentCategories/77",[70,0.948,71,0.992,102,0.649,206,0.779,337,0.454]],["title/78",[337,1.046]],["content/78",[2,1.35,3,1.571,8,2.722,18,2.91,22,2.535,34,1.458,62,2.032,70,1.502,71,1.571,73,2.719,106,3.536,115,1.993,168,2.428,173,2.719,220,2.91,284,2.228,290,3.71,302,2.116,322,2.625,323,1.788,324,2.773,326,2.073,337,1.361,340,2.91,350,3.023,362,3.775,364,2.93,395,2.073,396,2.238,398,3.303,401,5.263,403,3.152,406,4.014,407,4.014,408,3.303,409,3.303,410,3.484,411,2.81,412,4.014,413,2.637,414,3.303,415,3.71,416,3.634,722,4.475,723,3.023]],["sidebarParentCategories/78",[]],["title/79",[322,2.696]],["content/79",[66,3.868,69,3.682,70,2.392,71,2.503,91,4.081,103,3.302,230,4.635,232,4.476,322,2.948,337,1.144,362,3.698,363,3.772,364,2.465]],["sidebarParentCategories/79",[102,1.078,206,1.294]],["title/80",[252,1.711,337,0.723,402,1.534]],["content/80",[2,1.969,58,0.937,69,2.976,70,2.993,71,2.952,106,3.209,252,2.189,310,3.299,327,3.722,329,3.806,337,0.925,395,2.669,402,1.962,433,1.589,434,2.023,543,2.976,724,4.777,725,5.168,726,6.765,727,5.168,728,5.168,729,5.761,730,5.168,731,5.761]],["sidebarParentCategories/80",[102,1.078,206,1.294]],["title/81",[322,2.203,512,3.139]],["content/81",[8,2.023,17,2.185,34,1.537,36,2.495,55,1.696,58,1.071,68,3.574,69,1.554,70,2.21,71,2.665,91,1.723,93,1.554,111,1.676,189,2.78,222,3.911,252,1.143,254,1.723,265,2.185,271,2.495,292,2.221,322,1.951,323,2.324,327,2.328,328,2.937,329,2.937,345,1.182,388,2.701,402,1.607,408,2.221,409,2.221,411,2.962,456,1.723,475,2.033,482,1.889,483,4.862,512,2.78,543,1.554,545,1.828,577,2.342,616,4.231,692,1.485,719,2.119,730,2.699,732,3.009,733,3.009,734,3.009,735,3.009,736,3.009,737,1.394,738,5.818,739,3.009,740,1.828,741,3.009,742,3.009,743,3.009,744,1.223,745,2.701,746,3.009,747,2.342,748,2.699,749,3.009,750,3.009,751,3.009,752,5.818,753,3.009,754,2.699,755,2.033,756,3.009,757,4.717,758,4.231,759,4.717,760,3.009,761,5.818,762,3.009,763,3.009,764,4.717,765,3.009,766,3.009,767,2.495,768,3.009]],["sidebarParentCategories/81",[102,1.078,206,1.294]],["title/82",[31,0.983,284,1.581,324,1.968]],["content/82",[2,1.685,31,1.975,50,1.549,55,1.79,58,1.012,62,2.324,69,1.727,70,1.122,71,1.174,81,3.458,84,1.914,87,0.618,89,2.709,103,1.549,104,2.355,117,1.688,140,2.371,146,1.291,172,2.371,189,1.971,210,1.553,212,2.355,220,2.174,238,1.489,251,2.603,284,1.174,310,1.914,322,1.383,345,2.01,355,3.295,363,1.769,364,1.156,373,2.778,374,3.365,396,1.015,402,1.744,441,2.174,540,1.914,744,2.832,769,2.999,770,1.914,771,3.343,772,3.343,773,4.376,774,5.143,775,3.782,776,2.999,777,3.214,778,4.244,779,2.195,780,3.343,781,2.999]],["sidebarParentCategories/82",[102,1.078,206,1.294]],["title/83",[241,2.929,284,1.581,324,1.968]],["content/83",[2,1.575,6,2.274,31,1.615,34,1.468,55,1.656,69,2.327,70,1.512,71,1.582,103,2.954,117,2.274,146,1.74,168,2.445,241,5.525,247,2.738,248,2.93,252,2.423,259,3.173,284,2.599,297,4.041,311,3.325,324,1.968,345,2.505,347,3.295,360,2.58,379,2.93,380,3.507,381,4.814,382,4.492,456,2.58,473,3.173,769,4.041,774,3.325,782,4.505,783,5.215,784,4.492,785,4.492,786,4.505,787,4.041,788,3.736,789,4.505,790,4.505]],["sidebarParentCategories/83",[102,1.078,206,1.294]],["title/84",[31,1.162,50,2.467]],["content/84",[31,1.857,50,3.232,55,1.791,402,2.377,540,2.608,744,2.836,779,2.992,791,6.977,792,3.995,793,3.444,794,6.259]],["sidebarParentCategories/84",[102,1.078,206,1.294]],["title/85",[95,2.327,391,3.172,795,3.324]],["content/85",[2,1.633,31,1.967,34,1.571,50,3.557,55,1.833,69,1.598,70,1.038,71,1.692,81,3.256,140,2.233,163,2.929,172,2.233,210,1.463,252,1.831,310,1.771,318,2.685,345,1.893,373,2.616,374,3.229,379,2.012,380,2.408,381,3.135,396,0.939,402,1.642,540,1.802,723,2.09,744,2.718,773,4.199,774,4.935,775,3.629,777,3.027,778,3.997,781,2.775,783,3.395,784,3.395,785,3.395,787,2.775,792,2.76,793,2.379,794,4.324,796,4.82,797,4.82,798,3.093,799,4.82,800,3.093,801,3.093]],["sidebarParentCategories/85",[102,1.078,206,1.294]],["title/86",[40,3.752,58,0.866]],["content/86",[2,1.679,31,1.722,42,6.545,204,5.56,205,7.081]],["sidebarParentCategories/86",[102,1.078,206,1.294]],["title/92",[87,1.205]],["content/92",[2,1.56,29,3.254,30,2.698,31,1.796,34,2.389,55,1.602,58,1.193,103,3.397,149,3.329,150,2.698,201,4.952,225,2.996,235,3.355,254,3.161,284,1.938,316,2.611,317,4.468,324,2.412,363,2.922,364,1.909,705,4.075,744,2.244,802,4.298,803,4.298,804,1.748,805,2.284,806,4.298]],["sidebarParentCategories/92",[]],["title/93",[31,0.983,55,0.822,744,1.83]],["content/93",[316,3.871,317,4.443]],["sidebarParentCategories/93",[]],["title/94",[34,1.468,55,0.822,150,1.657]],["content/94",[103,3.701,317,4.335,363,4.228,364,2.763]],["sidebarParentCategories/94",[]],["title/95",[30,1.657,55,0.822,149,2.045]],["content/95",[58,1.332,803,6.374]],["sidebarParentCategories/95",[]],["title/96",[55,0.822,804,1.426,805,1.863]],["content/96",[317,4.443,806,6.374]],["sidebarParentCategories/96",[]],["title/97",[31,1.162,744,2.165]],["content/97",[2,1.859,3,2.558,25,2.638,31,1.59,43,3.677,207,6.535,265,3.375,306,6.041,355,3.445,388,4.171,414,5.377]],["sidebarParentCategories/97",[87,1.114]],["title/98",[373,3.537]],["content/98",[31,1.491,34,2.227,35,4.291,58,1.111,78,5.677,96,2.514,116,5.32,150,2.514,210,2.073,284,2.399,324,2.985,373,4.561,584,3.231,807,5.666,808,6.129,809,4.813]],["sidebarParentCategories/98",[87,1.114]],["title/99",[777,4.092]],["content/99",[2,1.076,17,2.342,31,1.718,50,3.92,55,1.741,96,1.86,117,2.552,140,2.342,147,3.562,172,3.92,189,2.98,200,2.964,210,2.389,252,1.921,254,2.895,264,3.073,322,2.091,345,1.986,355,3.268,374,2.442,402,1.722,777,4.339,788,4.193,810,3.562,811,4.193,812,6.199,813,2.744,814,5.057,815,5.057,816,4.536,817,4.536]],["sidebarParentCategories/99",[87,1.114]],["title/100",[818,5.846]],["content/100",[58,1.198,159,4.79,172,3.412,209,5.437,210,2.235,238,3.28,475,4.976,540,2.754,543,3.805,584,4.159]],["sidebarParentCategories/100",[87,1.114]],["title/101",[819,4.81]],["content/101",[140,3.451,172,3.451,210,2.26,543,3.848,584,3.522,820,7.449,821,7.449,822,7.449,823,7.449,824,5.799]],["sidebarParentCategories/101",[87,1.114]],["title/102",[825,6.518]],["content/102",[58,1.471,62,2.211,84,3.856,111,2.713,121,2.96,140,4.05,155,5.243,210,1.478,238,2.169,252,1.85,351,3.479,388,2.789,679,2.014,711,4.744,812,4.369,816,6.041,819,3.595,826,6.735,827,6.735,828,4.87,829,4.87,830,6.735,831,4.87,832,4.369,833,4.038,834,4.87,835,4.87,836,4.369,837,4.87,838,6.735,839,3.792,840,3.595,841,4.87,842,4.87,843,4.87,844,4.87,845,4.87,846,3.792,847,4.87]],["sidebarParentCategories/102",[87,1.114]],["title/103",[848,6.518]],["content/103",[58,1.341,63,5.496,172,3.07,200,3.537,210,2.011,212,4.669,441,4.31,473,4.669,679,3.411,694,4.477,804,2.098,805,3.714,849,5.496,850,7.398,851,3.201]],["sidebarParentCategories/103",[87,1.114]],["title/104",[228,3.732]],["content/104",[31,1.377,55,1.46,58,1.301,96,2.942,172,2.924,210,1.915,228,4.579,250,5.661,295,6.631,379,4.104,385,4.104,392,4.264,474,4.914,584,2.984,852,4.34,853,4.914,854,6.311,855,6.311,856,3.425,857,6.311]],["sidebarParentCategories/104",[87,1.114]],["title/105",[858,5.074]],["content/105",[31,1.432,50,3.04,58,1.067,84,3.757,96,2.414,210,1.991,224,3.867,318,3.655,433,1.809,465,3.473,543,3.39,584,3.103,788,5.441,858,5.109,859,6.562,860,6.796,861,5.886,862,6.562,863,6.562,864,5.886,865,6.562]],["sidebarParentCategories/105",[87,1.114]],["title/106",[866,4.591]],["content/106",[30,1.805,55,1.696,58,0.798,96,2.491,150,1.805,153,3.081,182,2.809,190,2.892,210,1.489,238,2.185,254,2.809,305,1.749,316,2.32,318,2.733,345,1.927,364,1.697,374,2.369,385,3.191,392,4.573,395,2.273,433,1.353,465,4.102,679,2.029,715,2.733,851,2.369,866,3.456,867,4.068,868,6.769,869,5.613,870,2.733,871,3.82,872,4.906,873,6.769,874,5.27,875,4.068,876,3.82,877,4.068,878,4.906,879,4.906,880,4.401,881,4.906,882,4.401]],["sidebarParentCategories/106",[87,1.114]],["title/107",[883,6.518]],["content/107",[78,5.09,141,6.94,209,5.561,210,2.286,420,5.865,465,3.987,584,3.562,864,6.758]],["sidebarParentCategories/107",[87,1.114]],["title/108",[884,6.518]],["content/108",[150,2.71,209,5.437,210,2.235,326,3.412,433,2.031,541,5.523,584,3.483,885,6.108,886,7.366,887,7.366]],["sidebarParentCategories/108",[87,1.114]],["title/109",[888,6.518]],["content/109",[19,3.722,58,1.172,80,6.463,210,2.186,324,3.148,420,5.61,465,4.93,889,4.868,890,6.758,891,7.205]],["sidebarParentCategories/109",[87,1.114]],["title/110",[892,6.518]],["content/110",[170,4.677,210,2.26,544,5.032,584,3.522,747,5.799,851,3.597,893,7.449,894,7.449,895,6.177,896,6.682]],["sidebarParentCategories/110",[87,1.114]],["title/111",[896,5.846]],["content/111",[210,2.367,584,3.688,747,6.073,851,3.767,895,6.468,897,7.801]],["sidebarParentCategories/111",[87,1.114]],["title/112",[898,6.518]],["content/112",[81,3.997,141,4.606,144,4.906,146,2.285,210,1.795,212,4.167,226,6.347,305,3.036,317,3.21,373,3.21,392,3.997,433,1.631,453,3.847,694,3.997,747,4.606,856,4.89,880,5.307,895,4.906,899,5.307,900,5.916,901,7.061,902,4.367,903,5.307]],["sidebarParentCategories/112",[87,1.114]],["title/113",[904,6.518]],["content/113",[171,3.813,210,2.186,226,5.076,305,3.095,316,3.407,584,4.104,856,3.91,899,6.463,901,5.975,905,5.076,906,7.205]],["sidebarParentCategories/113",[87,1.114]],["title/114",[907,6.518]],["content/114",[59,3.887,140,3.232,171,3.692,210,2.117,226,5.996,249,4.714,373,3.786,543,3.605,584,3.299,856,4.619,882,6.259,901,5.786,908,6.977,909,6.977]],["sidebarParentCategories/114",[87,1.114]],["title/115",[910,6.518]],["content/115",[17,3.07,19,3.424,96,2.438,112,3.424,150,2.438,210,2.011,364,2.292,433,1.827,464,4.892,465,4.364,589,3.345,679,2.741,715,3.692,889,4.477,911,5.571,912,5.16,913,6.628,914,6.628,915,6.628]],["sidebarParentCategories/115",[87,1.114]],["title/116",[916,4.591]],["content/116",[2,1.604,3,2.023,25,2.087,33,3.501,34,1.877,55,1.377,58,0.937,96,2.12,111,3.209,146,2.225,210,1.748,326,2.669,330,4.252,333,3.747,336,4.058,345,2.263,360,4.318,540,2.154,813,3.126,902,4.252,916,6.521,917,5.761,918,5.761,919,6.253,920,5.566,921,4.777,922,5.168]],["sidebarParentCategories/116",[87,1.114]],["title/117",[923,5.846]],["content/117",[2,1.194,31,1.225,55,1.354,58,1.206,62,2.55,96,2.066,146,2.169,151,3.047,152,2.408,210,2.25,243,3.525,345,2.205,679,2.322,813,3.047,839,4.371,840,4.144,846,4.371,923,7.447,924,5.615,925,3.412,926,5.615,927,5.615,928,5.615,929,5.615,930,5.036,931,8.302,932,5.615,933,5.615,934,5.615,935,5.615,936,5.615,937,5.615]],["sidebarParentCategories/117",[87,1.114]],["title/118",[938,4.81]],["content/118",[2,0.945,19,2.296,22,1.776,26,3.686,30,3.231,31,1.378,55,1.153,58,0.723,59,2.476,62,2.018,96,1.635,121,2.701,146,1.717,180,2.296,189,2.62,210,1.349,219,3.46,230,2.89,252,1.689,323,1.776,331,3.46,338,2.523,345,1.746,364,1.537,400,2.701,473,3.131,484,1.717,679,1.838,692,2.194,740,2.701,813,2.412,840,3.281,856,4.766,871,3.46,890,3.46,938,5.424,939,6.093,940,5.906,941,3.281,942,5.666,943,3.281,944,3.987,945,4.918,946,6.317,947,5.238,948,3.686]],["sidebarParentCategories/118",[87,1.114]],["title/119",[949,5.846]],["content/119",[2,0.939,19,2.281,22,1.764,26,3.661,30,1.624,31,1.372,55,1.148,58,0.718,59,2.459,62,2.005,96,1.624,121,2.683,146,1.705,180,2.281,189,2.602,210,1.34,219,3.437,225,4.575,230,2.871,252,1.677,323,1.764,331,3.437,338,2.511,345,1.734,357,2.602,364,1.527,400,2.683,473,3.11,484,1.705,679,1.826,692,2.179,740,2.683,813,2.396,840,3.259,856,4.755,871,3.437,890,3.437,939,6.071,940,5.888,941,3.259,943,3.259,944,3.96,945,4.894,948,3.661,949,6.567,950,4.415,951,6.287,952,6.287,953,4.415]],["sidebarParentCategories/119",[87,1.114]],["title/120",[954,5.846]],["content/120",[19,3.494,96,2.488,121,4.11,210,2.052,347,4.314,357,4.922,589,3.414,679,2.797,710,5.608,715,3.768,718,3.986,740,4.11,856,4.532,889,4.569,954,6.067,955,6.763]],["sidebarParentCategories/120",[87,1.114]],["title/121",[956,5.074]],["content/121",[31,1.377,34,2.057,53,2.611,58,1.027,96,2.322,150,3.23,210,1.915,347,4.535,357,3.72,584,2.984,679,3.308,694,4.264,852,3.425,956,4.914,957,3.048,958,5.233,959,4.914,960,4.914,961,6.311,962,6.311,963,6.311]],["sidebarParentCategories/121",[87,1.114]],["title/122",[959,5.074]],["content/122",[58,1.078,96,2.438,210,2.011,347,4.638,374,3.201,577,5.16,584,3.134,679,3.411,956,5.16,957,3.201,958,5.496,959,5.16,960,5.16,964,6.628,965,6.628,966,6.628,967,6.628,968,6.628]],["sidebarParentCategories/122",[87,1.114]],["title/123",[960,5.074]],["content/123",[19,3.643,96,2.594,210,2.14,347,3.643,589,3.559,679,3.544,715,3.928,889,4.764,956,5.49,957,3.405,958,5.847,959,5.49,960,5.49,969,7.052]],["sidebarParentCategories/123",[87,1.114]],["title/124",[970,5.846]],["content/124",[96,2.651,210,2.186,284,2.53,347,3.722,383,6.463,679,3.59,905,5.076,970,6.463,971,7.205,972,7.205,973,7.205,974,7.205]],["sidebarParentCategories/124",[87,1.114]],["title/125",[975,6.518]],["content/125",[2,1.37,31,0.997,55,1.176,58,1.047,96,1.68,145,3.045,152,3.474,169,4.097,204,4.536,210,1.386,235,3.914,248,2.97,261,2.615,324,2.814,325,4.536,345,1.794,347,4.412,420,5.014,471,4.097,475,3.086,679,1.889,694,3.086,695,5.014,813,2.479,839,3.556,840,3.371,925,2.776,941,5.505,976,7.459,977,4.568,978,3.787,979,7.459,980,4.568,981,4.568,982,4.568,983,6.44,984,5.777,985,3.086,986,4.568,987,4.568,988,4.568]],["sidebarParentCategories/125",[87,1.114]],["title/126",[213,4.04,484,1.739,989,4.04]],["content/126",[58,1.159,96,2.622,165,5.549,197,5.91,210,2.163,347,3.682,679,2.948,905,5.021,984,6.394,989,6.394,990,7.128,991,7.128,992,7.128,993,7.128]],["sidebarParentCategories/126",[87,1.114]],["title/127",[994,5.846]],["content/127",[19,3.567,58,1.123,96,2.54,114,3.953,210,2.095,540,2.581,589,3.485,679,2.856,715,3.846,755,4.664,889,4.664,994,6.194,995,6.905,996,7.013,997,6.905,998,6.905]],["sidebarParentCategories/127",[87,1.114]],["title/128",[999,5.846]],["content/128",[31,1.491,35,4.291,58,1.367,78,4.616,96,2.514,198,4.444,210,2.073,239,4.616,324,2.985,373,3.708,584,3.231,602,4.291,808,6.129,999,6.129,1000,6.833,1001,6.129,1002,6.833]],["sidebarParentCategories/128",[87,1.114]],["title/129",[1003,5.404]],["content/129",[2,1.469,3,2.424,19,3.567,25,2.5,58,1.123,96,2.54,200,2.961,210,2.095,305,2.462,589,3.485,679,2.856,699,1.526,715,3.846,740,4.196,889,4.664,1003,5.725,1004,5.096]],["sidebarParentCategories/129",[87,1.114]],["title/130",[920,4.81]],["content/130",[]],["sidebarParentCategories/130",[31,0.839,87,0.711,744,1.563]],["title/131",[58,0.733,679,1.863,919,3.734]],["content/131",[2,1.568,25,2.67,31,1.215,55,1.818,105,3.496,210,1.689,211,3.761,333,3.621,345,3.247,540,2.081,744,2.997,773,4.63,779,2.388,813,4.001,916,5.194,919,6.114,920,4.109,921,4.616,922,4.994,957,2.689,1005,4.334,1006,4.616]],["sidebarParentCategories/131",[31,0.839,87,0.711,744,1.563]],["title/132",[34,1.736,916,3.752]],["content/132",[2,0.761,55,1.823,58,0.582,89,1.894,96,1.317,111,3.002,146,1.382,191,6.191,224,5.239,326,1.658,336,2.521,345,1.406,413,2.109,574,2.418,579,6.231,584,3.992,813,1.942,836,3.21,916,4.567,921,6.418,1007,3.579,1008,3.579,1009,3.579,1010,3.579,1011,3.579,1012,8.442,1013,8.442,1014,3.579,1015,3.579,1016,3.579,1017,3.579,1018,3.579,1019,3.579]],["sidebarParentCategories/132",[31,0.839,87,0.711,744,1.563]],["title/133",[433,1.469,920,3.931]],["content/133",[2,1.259,6,2.05,8,1.742,25,1.471,55,1.556,69,2.099,71,1.426,110,4,111,2.263,115,1.809,146,1.569,152,2.539,211,2.744,219,3.163,238,1.809,267,1.363,284,2.453,304,3.644,310,2.326,326,1.882,345,2.325,350,2.744,351,2.099,366,3.368,370,3.163,397,2.005,402,1.384,433,1.926,434,1.426,482,3.718,484,1.569,514,3.368,539,3.644,546,4.171,562,3.49,689,5.311,694,2.744,723,2.744,775,3.213,807,3.368,916,2.862,920,5.156,957,1.962,1020,4.062,1021,5.921,1022,5.921,1023,4.062,1024,4.909,1025,4.062,1026,4.062,1027,5.921,1028,4.062,1029,4.062,1030,4.37,1031,4.062,1032,4.062,1033,3.368,1034,4.062,1035,4.062]],["sidebarParentCategories/133",[31,0.839,87,0.711,744,1.563]],["title/168",[34,1.736,150,1.96]],["content/168",[29,2.935,30,1.832,31,1.492,34,2.229,50,2.307,67,2.703,87,1.265,102,1.144,103,2.307,108,3.81,115,2.218,149,2.261,150,2.516,151,3.711,152,2.136,153,3.127,162,3.877,225,2.703,230,3.239,245,5.765,251,3.877,252,2.599,260,3.127,279,3.364,284,1.749,317,2.703,324,2.176,355,2.355,363,2.636,364,2.365,397,2.458,724,4.13,744,2.024,770,2.852,852,3.711,853,3.877,856,2.703,870,2.774,1036,5.325,1037,6.135,1038,4.13]],["sidebarParentCategories/168",[87,1.114]],["title/169",[31,0.851,284,1.37,316,1.844,324,1.704]],["content/169",[8,0.761,31,1.945,34,1.913,50,1.86,55,1.81,58,0.496,69,1.576,70,1.024,71,1.071,87,0.328,108,2.657,115,1.788,140,1.414,145,1.443,150,0.653,168,0.963,172,2.209,228,1.016,238,1.359,241,4.088,245,3.967,247,2.441,248,1.985,252,0.674,263,0.963,284,1.41,318,2.994,322,1.973,323,1.219,325,2.15,333,4.088,347,1.576,351,2.464,355,2.255,360,1.747,373,2.588,374,1.474,379,1.154,381,3.818,382,2.15,395,0.822,397,1.506,402,1.368,405,1.114,522,0.79,540,2.009,546,1.249,589,1.54,602,1.114,744,1.938,755,2.713,770,1.747,773,1.916,775,1.656,777,1.916,779,3.089,783,2.15,784,2.15,785,1.249,792,2.731,793,2.354,809,2.15,852,3.186,1036,5.168,1037,2.737,1039,1.591,1040,1.591,1041,1.591,1042,1.591,1043,2.252,1044,3.713,1045,2.062,1046,2.524,1047,1.591,1048,1.591,1049,1.591,1050,1.381,1051,1.381,1052,1.381,1053,1.591,1054,1.078,1055,1.471,1056,1.471,1057,1.985,1058,1.471,1059,1.249,1060,1.381,1061,2.252,1062,2.53,1063,1.471,1064,1.471,1065,1.471,1066,1.471]],["sidebarParentCategories/169",[87,1.114]],["title/170",[806,3.506,852,2.444,925,2.737]],["content/170",[31,1.76,34,1.727,52,4.754,55,1.731,88,4.754,89,2.805,95,3.686,105,3.328,119,4.336,150,1.95,151,2.876,245,5.266,284,1.861,397,2.616,584,2.506,589,2.675,602,3.328,779,3.06,792,3.034,793,2.616,852,2.876,1038,4.394,1043,3.912,1046,2.805,1057,4.64,1059,3.733,1067,5.3,1068,5.3,1069,7.135,1070,5.3,1071,4.126,1072,4.394]],["sidebarParentCategories/170",[87,1.114]],["title/171",[150,1.132,512,1.814,940,2.271,1073,2.76,1074,2.168,1075,2.552]],["content/171",[6,1.846,29,2.156,30,1.346,31,1.592,34,1.192,55,1.795,58,0.891,89,1.936,96,1.346,101,2.848,102,0.84,108,2.038,117,1.846,126,3.281,145,1.73,149,1.661,150,2.684,151,1.985,152,1.569,159,2.379,191,2.379,198,2.379,225,1.985,238,1.629,254,2.094,263,1.985,351,1.89,357,2.156,374,1.766,414,2.7,416,2.094,417,2.848,473,4.628,522,1.629,579,2.7,692,1.805,779,1.569,852,2.973,870,2.038,925,3.33,945,4.266,1036,2.848,1046,1.936,1054,2.223,1057,3.563,1074,2.577,1075,3.033,1076,3.658,1077,5.893,1078,2.577,1079,3.658,1080,3.033,1081,4.543,1082,3.033,1083,3.033,1084,2.577,1085,3.033,1086,4.266,1087,3.033,1088,2.848,1089,2.7,1090,2.848,1091,3.033,1092,2.848,1093,2.848,1094,2.848,1095,3.033,1096,2.848]],["sidebarParentCategories/171",[87,1.114]],["title/172",[95,2.015,391,2.748,795,2.879,1097,3.499]],["content/172",[2,0.541,31,1.868,34,0.828,35,0.903,50,1.177,55,1.853,58,0.555,87,0.266,89,0.761,95,0.743,96,0.529,101,1.12,108,1.902,115,0.64,117,0.726,140,1.177,145,0.68,150,1.517,151,0.78,152,0.617,168,0.78,172,1.582,198,0.935,228,0.823,238,1.521,241,3.062,245,2.52,247,2.075,248,1.653,252,0.546,254,0.823,263,0.78,279,0.972,284,1.199,318,2.623,333,3.656,341,1.345,345,0.565,347,0.743,355,1.949,360,1.455,364,0.497,373,2.237,374,1.649,379,0.935,381,2.681,382,1.013,397,0.71,402,0.866,413,0.848,484,0.982,522,1.132,540,1.541,579,1.061,584,0.68,589,1.283,602,0.903,679,0.595,692,0.71,744,1.676,770,1.455,773,2.144,774,1.061,775,1.853,776,1.29,777,1.596,779,3.106,783,2.405,784,2.405,785,1.79,792,2.978,793,3.11,795,1.061,809,1.79,819,1.061,824,1.12,852,2.237,870,0.801,912,1.12,1036,2.658,1040,2.28,1041,1.29,1042,1.29,1043,1.876,1044,3.21,1045,1.717,1046,2.753,1047,2.28,1048,1.29,1049,1.29,1050,1.12,1051,1.12,1052,1.12,1054,0.874,1056,1.193,1057,3.892,1058,1.193,1059,2.405,1060,1.12,1061,1.876,1062,2.107,1064,1.193,1065,1.193,1066,1.193,1071,1.12,1072,1.193,1080,1.193,1081,2.107,1082,1.193,1083,1.193,1084,1.013,1085,1.193,1086,1.979,1087,1.193,1088,1.12,1089,1.061,1090,1.12,1091,1.193,1092,1.12,1093,1.12,1094,1.12,1095,1.193,1096,1.12,1098,1.193,1099,1.29,1100,1.193,1101,1.29,1102,1.29,1103,1.12,1104,2.28,1105,1.29,1106,2.28,1107,1.438,1108,1.438,1109,1.438,1110,1.438,1111,1.438,1112,1.438,1113,1.438,1114,1.438,1115,1.438,1116,1.438,1117,1.438,1118,1.438]],["sidebarParentCategories/172",[87,1.114]],["title/173",[40,3.752,58,0.866]],["content/173",[145,4.244,150,2.804,263,4.135,1053,6.836,1054,4.631,1055,6.319,1063,6.319]],["sidebarParentCategories/173",[87,1.114]],["title/174",[30,1.96,149,2.419]],["content/174",[30,3.397,31,1.455,34,1.564,50,2.223,53,1.985,58,0.781,67,2.604,87,1.233,102,1.102,103,2.223,108,2.674,115,2.137,118,4.81,119,5.03,145,3.152,149,3.478,150,1.766,151,2.604,172,2.223,182,2.748,230,3.121,237,2.829,251,3.737,252,2.533,260,3.014,284,1.685,317,2.604,324,2.097,355,2.269,363,2.54,364,2.305,385,3.121,397,2.369,705,3.542,724,3.98,740,2.917,744,1.951,770,2.748,803,3.737,856,2.604,985,3.242]],["sidebarParentCategories/174",[87,1.114]],["title/175",[31,0.851,284,1.37,316,1.844,324,1.704]],["content/175",[2,0.292,8,0.589,17,0.636,30,0.505,31,1.789,34,0.795,50,1.524,55,1.745,58,0.891,67,1.323,68,0.745,69,1.7,70,0.461,71,0.856,87,0.608,96,0.505,105,0.862,108,1.833,115,2.033,118,3.866,119,3.328,121,0.834,132,1.069,140,1.524,168,2.163,172,1.847,180,0.709,182,0.786,211,0.927,220,0.893,224,2.691,227,1.718,228,2.282,238,1.465,241,3.561,247,4.064,248,1.586,252,0.521,260,0.862,284,1.155,310,0.786,318,3.05,322,1.361,323,0.974,327,1.624,328,1.231,329,1.231,330,2.428,333,3.797,337,0.391,345,0.958,347,1.7,355,1.885,360,1.396,364,1.138,373,2.163,374,1.925,379,3.288,380,1.069,381,2.969,382,1.718,389,0.765,392,0.927,393,0.862,395,0.636,397,0.677,402,1.121,413,0.809,414,1.8,416,1.396,456,1.396,457,1.8,465,0.726,540,1.49,545,0.834,546,0.967,547,0.927,548,1.069,589,1.231,602,0.862,603,0.834,679,1.009,711,1.718,715,1.358,744,1.856,745,0.786,770,1.884,773,1.531,775,1.785,777,1.531,779,2.504,783,1.718,784,1.718,785,2.317,792,1.396,793,1.967,809,3.216,852,0.745,853,1.898,856,0.745,858,1.898,861,2.187,866,1.718,869,2.022,874,2.561,875,2.022,876,1.898,877,2.022,938,1.8,947,2.022,1039,1.231,1043,1.8,1044,3.103,1045,1.647,1046,1.29,1050,1.069,1051,1.898,1052,1.069,1119,1.231,1120,3.576,1121,2.187,1122,1.231,1123,2.951,1124,2.187,1125,1.231,1126,1.231,1127,1.231,1128,1.372,1129,1.231,1130,2.438,1131,1.138,1132,2.438,1133,5.476,1134,1.231,1135,1.372,1136,1.069,1137,1.231,1138,1.231,1139,1.231]],["sidebarParentCategories/175",[87,1.114]],["title/176",[30,1.266,182,1.97,318,1.916,385,2.237,405,2.16]],["content/176",[11,3.315,17,2.273,29,2.892,30,3.074,31,1.477,34,1.599,55,1.655,62,3.074,118,5.247,149,3.074,182,2.809,305,1.749,357,2.892,385,5.434,395,2.273,416,3.876,541,4.25,679,2.029,715,2.733,745,2.809,779,2.903,792,3.876,1127,6.072,1140,4.906,1141,4.401,1142,4.401,1143,4.401,1144,3.621,1145,3.82,1146,4.068,1147,4.401,1148,4.401,1149,4.401,1150,4.068]],["sidebarParentCategories/176",[87,1.114]],["title/177",[30,1.435,806,3.037,940,2.879,1074,2.748]],["content/177",[30,3.246,31,0.983,55,1.796,78,4.308,89,3.375,96,1.658,112,2.327,119,3.876,189,2.655,238,2.84,311,3.325,336,3.173,374,2.176,416,2.58,543,2.327,692,2.224,779,1.932,792,2.58,793,2.224,809,3.173,856,3.461,925,2.738,940,3.325,1001,4.041,1074,3.173,1084,3.173,1092,3.507,1094,3.507,1096,3.507,1131,3.736,1151,4.041,1152,3.736,1153,4.505,1154,4.041,1155,4.041,1156,4.041,1157,4.041,1158,4.041,1159,4.041,1160,4.041,1161,3.736,1162,5.721,1163,4.041,1164,4.041,1165,4.041]],["sidebarParentCategories/177",[87,1.114]],["title/178",[30,1.657,149,2.045,1073,4.04]],["content/178",[30,1.728,31,1.025,34,1.531,55,1.809,59,2.617,96,1.728,118,4.755,119,2.855,150,2.786,212,3.309,237,2.768,322,1.943,362,2.014,363,2.486,393,2.949,397,2.318,398,3.467,433,1.295,441,3.055,522,2.925,541,4.755,543,3.393,584,3.105,779,2.014,792,2.69,1144,3.467,1145,3.657,1152,3.895,1166,3.309,1167,5.334,1168,4.214,1169,4.847,1170,4.214,1171,3.055,1172,3.895,1173,4.214,1174,4.214,1175,4.214]],["sidebarParentCategories/178",[87,1.114]],["title/179",[95,2.015,391,2.748,795,2.879,1097,3.499]],["content/179",[2,0.385,11,0.666,30,1.332,31,1.677,34,0.589,35,0.619,50,0.838,55,1.852,58,0.294,89,1.326,95,0.934,96,0.363,101,0.767,108,1.395,115,0.439,117,0.498,118,3.414,119,2.476,140,0.838,145,0.466,149,0.448,150,0.922,151,0.535,152,0.423,168,0.535,172,1.16,182,0.564,198,0.641,228,1.035,237,0.581,238,1.612,241,2.65,247,1.885,248,1.176,252,0.375,254,0.564,263,0.535,279,0.666,284,0.879,305,0.351,318,2.27,333,3.142,341,0.957,345,0.387,347,0.509,355,1.467,360,1.035,373,1.684,374,1.968,379,1.176,381,2.018,382,1.274,385,2.91,397,0.487,402,0.616,413,0.581,433,0.499,453,1.176,484,0.381,522,0.439,540,1.16,541,2.273,543,0.934,562,0.581,584,1.712,589,0.913,602,1.135,679,0.408,692,0.892,715,1.395,744,1.261,748,0.884,755,0.666,770,1.035,773,1.573,774,0.728,775,1.359,777,1.135,779,3.113,783,1.764,784,1.764,785,1.764,792,3.397,793,3.382,795,0.728,809,2.55,819,0.728,824,0.767,852,0.535,856,0.535,858,0.767,866,1.274,869,1.499,870,0.549,874,1.408,875,1.499,876,1.408,877,1.499,912,0.767,938,1.849,947,1.499,1043,1.335,1044,2.415,1045,1.222,1046,2.156,1050,0.767,1051,1.408,1052,0.767,1054,0.599,1056,0.817,1057,3.142,1059,1.764,1060,0.767,1061,0.728,1062,0.817,1071,0.767,1074,0.694,1075,0.817,1080,0.817,1081,0.817,1082,0.817,1084,1.274,1085,0.817,1086,1.408,1087,0.817,1088,0.767,1089,0.728,1090,0.767,1091,0.817,1092,1.408,1093,0.767,1094,0.767,1095,0.817,1096,0.767,1098,0.817,1099,0.884,1100,0.817,1101,0.884,1102,0.884,1103,0.767,1104,1.622,1105,0.884,1106,2.783,1119,1.622,1120,2.783,1121,1.622,1122,0.884,1123,1.622,1124,1.622,1125,0.884,1126,0.884,1131,0.817,1137,1.622,1138,0.884,1139,0.884,1142,0.884,1143,0.884,1144,1.335,1145,1.408,1146,0.817,1147,0.884,1148,0.884,1149,0.884,1150,0.817,1154,0.884,1155,0.884,1156,0.884,1157,0.884,1158,0.884,1159,0.884,1160,0.884,1161,0.817,1162,1.622,1163,0.884,1164,0.884,1165,0.884,1167,1.764,1168,0.884,1169,1.335,1170,0.884,1171,0.641,1172,0.817,1173,0.884,1174,0.884,1175,0.884,1176,0.986,1177,0.986,1178,0.986,1179,0.986,1180,0.986,1181,1.808,1182,0.986,1183,0.986,1184,0.986,1185,0.986,1186,0.986,1187,0.986,1188,0.986,1189,0.986,1190,0.986,1191,0.986,1192,0.986,1193,0.986,1194,1.808,1195,0.986,1196,0.884,1197,0.986,1198,0.986,1199,0.986,1200,0.986,1201,0.986,1202,0.986,1203,0.986,1204,0.986,1205,0.986,1206,0.986,1207,0.986]],["sidebarParentCategories/179",[87,1.114]],["title/180",[40,3.752,58,0.866]],["content/180",[30,3.28,145,4.215,149,4.048,237,4.44,803,5.865,985,5.09]],["sidebarParentCategories/180",[87,1.114]],["title/181",[398,3.931,603,3.237]],["content/181",[30,3.134,53,2.124,77,3.121,89,3.696,172,3.235,182,4.544,267,2.344,305,1.831,316,2.428,318,4.745,363,3.696,405,3.224,422,4.606,465,4.507,489,2.94,540,1.92,810,3.617,1046,3.696,1208,5.135,1209,4.606,1210,7.119,1211,5.437,1212,3.998,1213,3.617,1214,5.135,1215,5.135,1216,5.135,1217,4.606,1218,5.135,1219,4.606,1220,5.135]],["sidebarParentCategories/181",[87,1.114]],["title/134",[58,0.634,69,2.015,805,1.613,1221,3.499]],["content/134",[32,2.475,36,5.948,58,1.317,77,3.247,115,3.194,134,4.159,146,2.064,168,2.899,173,3.247,179,3.247,180,2.76,200,3.712,267,1.793,315,3.257,323,2.134,337,0.858,355,2.526,416,3.059,417,4.159,433,1.978,434,2.519,679,2.21,706,3.149,804,1.691,805,2.21,850,6.435,1134,4.792,1221,6.435,1222,5.342,1223,5.342,1224,5.342,1225,3.763,1226,5.342]],["sidebarParentCategories/134",[87,1.114]],["title/135",[315,2.045,337,0.723,804,1.426]],["content/135",[62,3.345,66,3.997,212,5.189,315,3.345,337,1.183,362,3.159,423,4.625,424,4.976,441,4.79,468,5.735,804,2.332]],["sidebarParentCategories/135",[87,1.114]],["title/136",[58,0.634,267,1.309,315,1.771,804,1.235]],["content/136",[2,1.185,30,1.376,31,1.721,50,1.733,55,1.833,140,1.733,172,1.733,200,2.389,210,1.135,239,3.764,252,1.421,315,3.023,336,2.635,345,2.188,355,2.634,373,2.03,374,1.806,375,3.355,402,1.274,540,1.398,602,2.349,605,1.932,666,3.355,723,2.527,744,2.264,773,3.498,775,3.023,777,2.349,778,3.102,779,2.855,804,2.712,813,2.03,817,3.355,818,3.355,819,2.761,824,2.912,943,2.761,1006,4.62,1227,6.658,1228,3.741,1229,3.741,1230,5.572,1231,3.741,1232,3.741,1233,3.741,1234,2.349,1235,3.741,1236,3.741,1237,3.741,1238,3.741,1239,3.102]],["sidebarParentCategories/136",[87,1.114]],["title/137",[322,1.863,423,2.828,804,1.426]],["content/137",[]],["sidebarParentCategories/137",[87,0.711,804,1.218,805,1.591]],["title/138",[403,4.591]],["content/138",[22,2.702,153,4.247,302,3.198,315,3.071,343,3.986,421,5.608,470,4.247,472,4.992,479,4.764,499,5.265,503,4.764,523,4.247,525,4.569,531,4.247,804,2.141,1240,4.992,1241,6.067,1242,6.067,1243,5.608]],["sidebarParentCategories/138",[87,0.711,804,1.218,805,1.591]],["title/139",[58,0.501,316,1.455,337,0.494,338,1.229,402,1.048,503,2.168]],["content/139",[]],["sidebarParentCategories/139",[87,0.711,804,1.218,805,1.591]],["title/140",[35,1.748,153,1.748,496,2.167,1244,2.783,1245,2.783,1246,2.783,1247,2.783]],["content/140",[337,1.21,431,4.899,485,5.561,503,5.307,508,7.872,510,6.758,1248,7.534]],["sidebarParentCategories/140",[87,0.711,804,1.218,805,1.591]],["title/141",[22,1.374,315,1.562,338,1.374,405,2.16,804,1.089]],["content/141",[22,3.08,315,3.501,433,2.126,434,2.707,531,4.841,804,2.441,1240,5.69]],["sidebarParentCategories/141",[87,0.711,804,1.218,805,1.591]],["title/142",[338,1.374,433,0.949,434,1.208,523,2.16,1249,2.853]],["content/142",[433,2.126,523,4.841,525,5.208,526,5.69,528,5.69,1250,6.393,1251,5.431]],["sidebarParentCategories/142",[87,0.711,804,1.218,805,1.591]],["title/143",[22,1.374,315,1.562,338,1.374,804,1.089,1252,2.853]],["content/143",[22,2.451,43,3.097,55,1.12,67,3.33,108,3.418,252,2.331,302,4.319,316,2.901,337,1.261,338,3.138,343,3.616,362,2.631,363,3.247,402,2.09,433,1.692,489,3.513,531,3.853,532,3.729,631,4.529,1213,4.322,1251,4.322,1253,7.046,1254,4.777]],["sidebarParentCategories/143",[87,0.711,804,1.218,805,1.591]],["title/144",[338,1.558,480,2.233,482,2.449,1255,3.235]],["content/144",[55,1.376,433,2.077,485,5.561,486,5.561,631,5.561,1251,5.307,1254,5.865,1256,7.534,1257,7.534]],["sidebarParentCategories/144",[87,0.711,804,1.218,805,1.591]],["title/152",[322,1.863,468,3.506,804,1.426]],["content/152",[22,3.08,397,3.805,425,5.431,426,6.002,436,6.916,587,5.431,603,4.685]],["sidebarParentCategories/152",[87,0.711,804,1.218,805,1.591]],["title/153",[403,4.591]],["content/153",[22,2.847,315,3.237,470,4.476,472,5.261,479,5.021,523,4.476,525,4.815,531,4.476,804,2.257,1240,5.261,1241,6.394,1242,6.394,1243,5.91,1258,7.128]],["sidebarParentCategories/153",[87,0.711,804,1.218,805,1.591]],["title/154",[58,0.501,316,1.455,337,0.494,338,1.229,402,1.048,440,1.932]],["content/154",[337,1.283,431,5.195,440,5.016,463,6.624]],["sidebarParentCategories/154",[87,0.711,804,1.218,805,1.591]],["title/155",[22,1.374,315,1.562,338,1.374,405,2.16,804,1.089]],["content/155",[22,3.08,315,3.501,433,2.126,434,2.707,531,4.841,804,2.441,1240,5.69]],["sidebarParentCategories/155",[87,0.711,804,1.218,805,1.591]],["title/156",[338,1.374,433,0.949,434,1.208,523,2.16,1249,2.853]],["content/156",[433,2.126,523,4.841,525,5.208,526,5.69,528,5.69,1250,6.393,1251,5.431]],["sidebarParentCategories/156",[87,0.711,804,1.218,805,1.591]],["title/157",[22,1.374,315,1.562,338,1.374,804,1.089,1252,2.853]],["content/157",[22,2.451,43,3.097,55,1.12,67,3.33,108,3.418,252,2.331,302,4.319,316,2.901,337,1.261,338,3.138,343,3.616,362,2.631,363,3.247,402,2.09,433,1.692,489,3.513,531,3.853,532,3.729,631,4.529,1213,4.322,1251,4.322,1253,7.046,1254,4.777]],["sidebarParentCategories/157",[87,0.711,804,1.218,805,1.591]],["title/158",[338,1.558,480,2.233,482,2.449,1255,3.235]],["content/158",[55,1.376,433,2.077,485,5.561,486,5.561,631,5.561,1251,5.307,1254,5.865,1259,7.534,1260,7.534]],["sidebarParentCategories/158",[87,0.711,804,1.218,805,1.591]],["title/145",[322,1.863,424,3.042,804,1.426]],["content/145",[]],["sidebarParentCategories/145",[87,0.711,804,1.218,805,1.591]],["title/146",[22,1.799,115,2.005,403,3.172]],["content/146",[4,5.16,17,3.07,238,3.672,322,2.741,337,1.324,370,5.16,424,6.065,470,5.178,514,5.496,525,4.477,745,3.795,1098,5.496,1211,5.16,1261,6.628,1262,6.628,1263,6.628]],["sidebarParentCategories/146",[87,0.711,804,1.218,805,1.591]],["title/147",[206,1.076,316,1.844,338,1.558,402,1.329]],["content/147",[58,0.921,115,2.522,162,4.409,238,2.522,284,3.319,402,1.929,434,3.383,469,4.696,470,3.556,483,4.18,536,3.338,544,3.825,1264,5.663,1265,5.663,1266,9.452,1267,5.663,1268,5.663,1269,5.663,1270,5.663,1271,5.663,1272,5.663,1273,5.663]],["sidebarParentCategories/147",[87,0.711,804,1.218,805,1.591]],["title/148",[22,1.374,315,1.562,338,1.374,405,2.16,804,1.089]],["content/148",[22,3.08,315,3.501,433,2.126,434,2.707,531,4.841,804,2.441,1240,5.69]],["sidebarParentCategories/148",[87,0.711,804,1.218,805,1.591]],["title/149",[338,1.374,433,0.949,434,1.208,523,2.16,1249,2.853]],["content/149",[433,2.126,523,4.841,525,5.208,526,5.69,528,5.69,1250,6.393,1274,7.71]],["sidebarParentCategories/149",[87,0.711,804,1.218,805,1.591]],["title/150",[22,1.374,315,1.562,338,1.374,804,1.089,1252,2.853]],["content/150",[22,2.497,43,3.155,115,2.784,170,3.925,252,2.375,296,3.799,316,2.956,338,3.176,362,2.681,402,2.129,424,5.37,433,1.724,482,3.925,489,3.58,531,3.925,532,3.799,546,4.404,647,5.608,1213,4.404,1275,7.131,1276,6.252,1277,5.608,1278,6.252,1279,5.608]],["sidebarParentCategories/150",[87,0.711,804,1.218,805,1.591]],["title/151",[284,1.208,338,1.374,482,2.16,544,2.324,1255,2.853]],["content/151",[284,2.586,424,4.976,482,4.625,1275,6.607,1277,6.607,1279,6.607,1280,7.366,1281,7.366,1282,7.366,1283,7.366,1284,7.366]],["sidebarParentCategories/151",[87,0.711,804,1.218,805,1.591]],["title/159",[267,1.788,699,1.177]],["content/159",[2,0.848,3,1.4,6,2.013,8,2.505,17,2.706,25,1.445,32,3.202,33,2.424,41,3.658,55,1.262,103,1.848,146,1.541,200,1.711,267,3.07,277,4.115,305,2.083,323,2.762,343,2.351,362,2.505,393,4.341,395,2.706,411,3.668,545,2.424,699,2.083,706,4.074,718,2.351,745,3.345,851,1.926,870,3.851,1004,4.312,1225,2.81,1285,3.578,1286,2.944,1287,2.695,1288,2.46,1289,2.949,1290,3.148,1291,4.115,1292,3.092]],["sidebarParentCategories/159",[]],["title/160",[41,2.383,55,0.822,699,0.995]],["content/160",[6,3.345,32,3.07,33,4.028,41,4.364,146,2.56,200,2.842,267,2.224,305,2.363,343,3.906,545,4.028,699,1.984,706,3.906,718,3.906,851,3.201,1004,4.892,1225,4.669,1286,4.892,1287,4.477]],["sidebarParentCategories/160",[]],["title/161",[55,0.628,267,1.155,1288,1.449,1289,1.737,1290,1.423]],["content/161",[8,2.842,17,3.07,32,3.07,267,3.013,277,4.669,323,2.648,362,2.842,393,4.162,395,3.07,411,4.162,699,1.984,706,3.906,745,3.795,870,3.692,1289,3.345,1290,2.741,1291,4.669]],["sidebarParentCategories/161",[]],["title/162",[55,0.628,267,1.155,1288,1.449,1290,1.423,1292,1.821]],["content/162",[8,2.842,17,3.07,32,3.07,267,3.013,277,4.669,323,2.648,362,2.842,393,4.162,395,3.07,411,4.162,699,1.984,706,3.906,745,3.795,870,3.692,1290,2.741,1291,4.669,1292,3.507]],["sidebarParentCategories/162",[]],["title/163",[305,2.324]],["content/163",[2,0.829,3,1.367,25,2.079,39,3.494,58,0.634,67,2.114,77,2.367,78,2.631,146,1.504,148,3.798,149,1.769,210,1.182,235,2.367,267,1.307,272,3.032,305,3.297,323,1.556,361,5.15,364,1.347,400,2.367,413,2.296,454,2.744,479,2.744,484,3.665,522,2.556,530,3.494,605,2.012,699,1.507,810,2.744,853,3.032,903,3.494,905,4.044,1211,3.032,1239,4.76,1243,3.23,1289,3.441,1293,3.895,1294,7.524,1295,2.833,1296,6.116,1297,3.895,1298,3.895,1299,5.741,1300,6.818,1301,3.895,1302,3.032,1303,3.895,1304,3.23,1305,3.494,1306,3.494,1307,3.494]],["sidebarParentCategories/163",[]],["title/164",[210,1.367,484,1.739,1295,2.223]],["content/164",[5,4.69,8,2.583,17,2.791,25,2.811,95,3.112,167,4.446,200,2.583,235,4.718,267,2.605,346,4.69,484,3.504,540,2.902,699,1.716,712,6.437,758,5.404,1295,4.478,1308,6.024,1309,4.995,1310,6.024]],["sidebarParentCategories/164",[]],["title/165",[95,2.327,484,1.739,1295,2.223]],["content/165",[2,1.051,3,1.736,34,1.611,77,3.004,81,4.597,93,2.554,95,2.554,112,2.554,120,3.339,148,2.754,149,2.245,159,3.215,163,3.004,233,3.848,235,3.004,254,2.83,258,3.848,267,1.659,292,3.648,305,1.762,323,1.975,344,4.099,351,2.554,362,2.12,441,3.215,456,2.83,475,3.339,480,2.83,484,3.395,540,2.544,575,3.848,587,3.482,677,3.648,699,1.092,706,2.913,737,2.29,849,4.099,870,2.754,1285,4.434,1288,2.865,1295,3.84,1309,4.099,1311,3.848,1312,4.943,1313,4.943,1314,4.099]],["sidebarParentCategories/165",[]],["title/166",[200,1.931,484,1.739,1295,2.223]],["content/166",[13,4.369,18,3.167,31,1.063,32,2.256,41,4.408,58,1.095,95,3.479,117,2.458,146,1.881,178,4.369,183,4.038,200,3.75,233,3.792,252,1.85,305,2.401,323,1.946,326,2.256,360,2.789,362,2.089,484,3.217,492,4.38,695,3.792,699,2.049,851,2.352,902,3.595,1030,3.595,1288,2.836,1295,3.81,1304,4.038,1307,4.369,1315,4.87,1316,3.792,1317,4.87,1318,4.87]],["sidebarParentCategories/166",[]],["title/167",[362,2.284,1288,2.243]],["content/167",[249,4.868,261,4.126,267,2.913,362,3.09,364,2.492,1288,3.923,1289,3.637,1290,3.59,1292,3.813]],["sidebarParentCategories/167",[]],["title/182",[41,2.819,699,1.177]],["content/182",[6,2.81,31,1.92,32,2.579,33,3.383,41,4.375,53,2.303,146,2.15,200,3.545,267,1.868,305,2.629,343,3.281,545,3.383,699,2.079,706,3.281,718,3.281,740,3.383,851,2.689,911,4.981,1004,4.109,1166,3.922,1225,3.922,1286,4.109,1287,3.761,1319,5.567,1320,4.334,1321,4.616]],["sidebarParentCategories/182",[699,1.331]],["title/183",[699,1.177,941,3.931]],["content/183",[31,2.09,41,4.284,53,2.661,125,5.335,200,3.472,305,2.294,388,3.684,699,1.958,718,3.792,740,3.91,911,5.984,1166,4.532,1225,4.532,1320,5.009]],["sidebarParentCategories/183",[699,1.331]],["title/184",[31,0.671,41,1.628,699,0.68,718,1.814,911,2.079,1166,2.168]],["content/184",[2,1.291,19,1.66,31,1.921,34,1.047,37,2.502,41,3.612,50,3.613,53,2.054,55,1.797,71,1.128,105,2.018,137,2.502,148,1.79,172,2.3,200,2.927,229,4.274,258,2.502,260,2.018,261,1.84,298,2.372,305,1.77,310,1.84,323,1.983,324,2.169,345,1.95,391,2.264,395,1.489,402,1.095,540,1.856,562,2.926,699,1.797,718,1.894,723,2.171,744,2.018,775,2.694,779,2.129,793,3.641,813,1.744,911,2.171,1030,2.372,1045,2.171,1093,2.502,1217,2.883,1287,2.171,1291,2.264,1322,3.664,1323,2.502,1324,4.117,1325,2.883,1326,2.665,1327,2.665,1328,2.883,1329,3.213,1330,3.213,1331,2.883,1332,3.213,1333,2.883,1334,2.883,1335,2.883]],["sidebarParentCategories/184",[699,1.331]],["title/185",[31,0.968,53,1.151,200,1.902,305,0.992,1320,2.167]],["content/185",[2,1.074,31,1.808,34,0.793,37,3.098,41,2.106,50,3.198,53,2.855,55,1.772,71,0.854,89,1.288,134,1.894,147,1.714,148,1.355,168,1.32,171,1.288,172,1.843,200,3.124,229,1.714,232,1.528,249,1.644,261,2.278,294,1.714,298,4.746,305,2.955,310,1.393,316,1.15,323,1.589,324,1.063,345,1.983,351,2.056,395,1.127,400,2.418,402,0.829,405,1.528,456,1.393,532,1.479,535,2.182,538,2.182,540,1.887,562,3.79,603,1.479,699,1.116,718,1.434,723,1.644,744,0.989,775,2.159,779,1.706,793,2.878,813,1.32,911,3.41,941,1.796,943,2.937,1030,1.796,1045,1.644,1078,1.714,1166,2.803,1225,1.714,1287,1.644,1320,1.894,1322,1.796,1323,3.098,1324,6.303,1325,2.182,1326,2.017,1327,2.017,1331,3.569,1333,2.182,1334,2.182,1335,2.182,1336,2.182,1337,2.182,1338,2.433,1339,3.979,1340,2.433,1341,5.048,1342,2.433,1343,2.182,1344,2.182,1345,2.433,1346,3.979,1347,2.182,1348,2.433,1349,2.433,1350,2.433,1351,1.894]],["sidebarParentCategories/185",[699,1.331]],["title/186",[31,0.851,699,0.862,740,2.371,911,2.635]],["content/186",[2,1.513,6,2.115,31,1.879,34,1.366,38,3.093,41,2.218,50,1.942,55,1.739,58,0.682,71,1.472,148,2.335,171,2.218,200,2.597,284,1.472,305,1.494,310,2.4,345,2.379,355,1.982,362,1.797,366,3.475,388,3.468,395,1.942,402,1.428,540,1.567,562,3.569,589,3.057,679,2.505,699,1.903,723,2.831,725,3.76,744,2.89,775,3.286,779,1.797,793,2.068,813,2.274,1003,5.022,1045,2.831,1129,3.76,1288,1.765,1322,3.093,1324,3.475,1343,3.76,1352,4.191,1353,3.76,1354,3.76,1355,3.76,1356,4.191]],["sidebarParentCategories/186",[699,1.331]],["title/187",[1321,5.404]],["content/187",[17,2.131,34,1.499,35,2.888,41,3.425,58,0.748,84,3.705,102,1.486,159,2.991,170,2.888,172,2.998,190,2.711,209,3.395,254,2.633,261,2.633,364,1.59,417,5.038,489,3.705,492,2.991,541,2.888,544,4.372,699,1.796,712,3.814,740,2.795,851,2.221,871,3.581,905,3.24,943,3.395,1024,3.814,1046,2.434,1213,3.24,1288,3.153,1321,8.045,1357,4.599,1358,6.471,1359,4.599,1360,4.599,1361,4.599,1362,6.471,1363,3.814,1364,4.599,1365,4.599]],["sidebarParentCategories/187",[699,1.331]],["title/210",[267,1.309,1288,1.643,1289,1.969,1290,1.613]],["content/210",[2,1.911,8,1.721,17,2.718,32,1.859,55,1.072,70,2.328,71,1.409,265,1.859,267,2.561,277,2.827,294,2.827,302,1.898,305,2.092,310,3.36,323,2.771,324,1.753,327,2.896,328,3.501,329,2.962,337,0.942,362,1.721,389,2.236,393,2.52,395,2.718,402,1.367,411,2.52,433,1.618,434,2.06,453,2.61,699,1.936,706,2.365,718,2.365,745,3.36,870,2.236,1289,2.026,1290,2.427,1291,2.827,1322,2.962,1366,3.328,1367,3.6,1368,3.6,1369,7.632,1370,7.632,1371,3.6,1372,5.868]],["sidebarParentCategories/210",[699,1.331]],["title/211",[95,2.327,484,1.739,1295,2.223]],["content/211",[17,2.342,20,3.562,32,3.647,103,2.342,117,2.552,123,3.201,146,1.953,152,2.964,171,2.676,210,1.534,224,2.98,238,3.506,267,1.697,292,3.732,305,1.803,326,2.342,392,3.416,408,3.732,409,3.732,475,3.416,484,3.269,492,3.288,540,1.89,587,3.562,677,3.732,692,3.411,699,1.117,705,3.732,737,2.342,745,2.895,851,2.442,1234,3.175,1289,2.552,1295,4.177,1314,4.193,1373,3.175,1374,3.562,1375,4.536,1376,3.562]],["sidebarParentCategories/211",[699,1.331]],["title/212",[30,1.96,737,2.467]],["content/212",[8,0.735,17,0.794,19,0.481,30,2.775,33,0.565,43,0.47,44,0.771,50,0.431,51,0.834,53,1.619,55,1.752,58,0.701,59,1.328,62,0.778,68,0.93,72,1.422,73,1.042,77,0.565,89,0.907,90,1.977,92,0.628,95,1.232,102,0.394,108,0.518,114,0.982,120,0.628,123,1.105,130,1.158,138,0.724,140,1.373,145,2.354,147,0.655,148,0.955,149,0.778,150,0.342,151,0.505,152,2.991,156,0.724,159,0.605,163,0.565,171,0.907,179,0.565,180,0.481,182,0.982,190,1.405,191,3.592,202,1.076,204,2.087,210,0.52,218,0.687,221,0.687,223,0.834,229,1.208,235,0.565,237,2.747,242,0.771,252,0.353,264,0.565,267,0.575,294,0.655,298,1.265,305,1.057,330,0.687,338,0.372,345,0.365,346,0.724,350,0.628,351,2.408,357,1.405,360,0.533,364,0.322,374,1.431,385,1.115,391,0.655,395,0.431,397,0.459,400,0.565,433,1.648,456,0.533,478,0.687,480,0.533,484,1.34,492,0.605,512,1.405,522,1.32,532,0.565,536,1.405,540,1.463,541,1.861,543,3.375,562,0.548,574,0.628,605,1.232,699,0.865,706,1.747,737,1.996,770,0.533,779,2.932,792,0.533,793,2.457,807,0.771,810,0.655,833,0.771,851,1.431,856,1.608,925,1.801,930,0.834,938,1.265,939,0.771,942,1.538,948,1.422,957,1.431,985,3.149,996,1.977,1005,1.856,1046,1.836,1078,1.208,1084,1.208,1136,0.724,1144,4.077,1152,4.128,1167,1.208,1169,3.44,1171,1.115,1172,0.771,1234,0.584,1286,0.687,1287,0.628,1289,1.203,1290,0.986,1295,0.459,1302,0.724,1305,0.834,1306,0.834,1316,1.335,1323,0.724,1351,0.724,1373,0.584,1374,1.68,1376,0.655,1377,0.93,1378,2.139,1379,2.757,1380,0.93,1381,0.771,1382,0.834,1383,1.265,1384,3.865,1385,1.714,1386,2.658,1387,0.93,1388,1.422,1389,1.714,1390,1.714,1391,0.93,1392,0.93,1393,2.559,1394,1.158,1395,1.68,1396,1.977,1397,0.93,1398,0.93,1399,0.771,1400,1.538,1401,0.834,1402,0.93,1403,1.714,1404,0.771,1405,0.93,1406,0.93,1407,1.714,1408,1.714,1409,2.963,1410,0.93,1411,0.834,1412,0.93,1413,0.93,1414,0.93,1415,0.93,1416,0.93,1417,0.93,1418,0.93,1419,0.93,1420,1.714,1421,1.714,1422,1.714,1423,1.714,1424,2.963,1425,0.834,1426,2.307,1427,2.139,1428,1.68,1429,2.139,1430,0.834,1431,1.714,1432,0.93,1433,0.834,1434,0.834,1435,1.714,1436,0.93,1437,0.93,1438,0.93,1439,0.93,1440,0.93,1441,0.93,1442,0.93,1443,0.93,1444,0.834,1445,0.834,1446,0.771,1447,1.538,1448,0.724]],["sidebarParentCategories/212",[699,1.331]],["title/213",[150,1.96,737,2.467]],["content/213",[34,1.601,55,1.758,58,1.024,62,0.595,63,1.086,65,1.94,68,2.091,73,1.422,89,1.238,117,0.661,120,1.58,130,0.885,132,1.02,145,2.323,150,3.132,179,1.422,180,0.677,190,0.772,202,0.823,204,2.714,238,0.583,263,4.273,264,0.796,267,1.063,305,0.467,311,0.967,323,0.523,342,3.117,345,0.514,351,2.286,357,0.772,364,0.453,368,1.02,374,1.53,397,1.154,400,1.926,411,0.823,416,0.75,452,0.967,474,1.02,480,1.339,484,1.488,492,0.852,522,1.042,540,0.874,543,1.208,602,1.469,603,0.796,605,0.677,607,1.175,699,0.29,716,3.194,737,2.05,744,1.996,754,1.175,755,2.989,767,1.086,779,2.993,793,2.968,846,1.821,852,4.759,925,3.655,945,2.467,957,0.633,1024,1.086,1046,1.677,1054,4.786,1057,1.521,1059,2.714,1061,1.726,1063,2.628,1064,1.086,1065,1.086,1066,1.94,1071,1.02,1072,1.086,1074,1.648,1077,3.969,1078,1.648,1083,1.086,1086,1.821,1088,1.02,1090,1.02,1103,2.467,1136,1.02,1219,1.175,1239,1.086,1289,1.181,1290,0.968,1302,1.02,1311,1.02,1351,1.02,1363,1.086,1373,0.823,1376,2.232,1393,2.917,1394,0.885,1395,1.648,1399,1.086,1449,1.31,1450,1.31,1451,1.31,1452,1.175,1453,1.31,1454,1.31,1455,2.098,1456,1.31,1457,1.31,1458,1.31,1459,0.923,1460,3.969,1461,1.31,1462,1.31,1463,1.31,1464,1.31,1465,1.31,1466,1.086,1467,2.339,1468,1.31,1469,2.339,1470,2.339,1471,1.31,1472,1.31,1473,1.31,1474,1.31,1475,1.31,1476,1.175,1477,1.31,1478,2.843,1479,1.31,1480,1.31,1481,1.31,1482,1.31,1483,1.31,1484,1.31,1485,1.31,1486,1.31,1487,1.31,1488,1.31]],["sidebarParentCategories/213",[699,1.331]],["title/214",[152,1.902,210,0.845,540,1.041,692,1.374,699,0.615,851,1.344]],["content/214",[2,1.014,6,1.54,25,1.105,33,1.854,34,0.994,37,2.375,55,1.755,58,0.776,68,2.587,102,0.7,123,1.413,152,3.274,171,1.614,174,4.277,179,1.854,210,2.633,224,4.244,230,3.101,267,1.024,305,1.7,311,2.251,323,1.219,345,2.607,351,1.576,478,2.251,484,1.842,522,2.123,545,1.854,574,4.483,575,3.712,605,1.576,692,1.505,711,2.149,737,1.413,813,2.587,851,2.835,925,1.854,1055,2.529,1146,2.529,1166,2.149,1234,1.915,1289,1.54,1290,1.262,1295,1.505,1296,2.736,1316,2.375,1344,5.265,1373,1.915,1374,2.149,1489,2.736,1490,2.736,1491,4.768,1492,3.05,1493,5.87,1494,3.05,1495,6.637,1496,4.277,1497,3.05,1498,5.953,1499,3.05,1500,2.736,1501,4.768,1502,4.768,1503,3.05,1504,3.05,1505,3.05,1506,2.736,1507,3.05,1508,3.05,1509,3.05]],["sidebarParentCategories/214",[699,1.331]],["title/215",[200,1.931,484,1.739,1295,2.223]],["content/215",[5,3.305,20,4.306,25,1.537,32,1.966,41,4.147,43,3.085,47,3.305,55,1.431,58,0.994,59,2.365,77,2.58,96,1.562,117,2.143,123,1.966,140,2.832,165,3.305,200,2.621,243,2.665,323,1.696,326,1.966,345,1.667,362,1.82,364,1.468,413,2.502,455,3.133,484,3.341,532,4.353,594,3.52,699,1.732,744,1.725,802,3.305,810,2.99,811,3.52,870,2.365,890,3.305,902,3.133,1100,3.52,1288,2.574,1289,2.143,1295,3.535,1326,3.52,1327,5.068,1373,3.838,1379,2.99,1382,3.808,1393,1.966,1401,3.808,1510,4.245,1511,4.245,1512,3.808,1513,3.808]],["sidebarParentCategories/215",[699,1.331]],["title/216",[30,1.96,221,3.931]],["content/216",[30,2.635,53,1.756,55,1.666,73,2.58,84,2.431,123,1.966,140,1.966,147,2.99,180,2.193,182,3.5,190,2.502,200,1.82,221,5.287,374,2.952,388,2.431,397,2.095,454,2.99,479,2.99,480,2.431,522,1.89,543,4.468,545,2.58,605,2.193,692,2.095,779,1.82,851,2.05,957,4.01,1078,2.99,1169,5.287,1196,3.808,1289,3.085,1290,1.756,1381,3.52,1393,1.966,1396,7.172,1411,3.808,1514,7.836,1515,3.808,1516,4.245,1517,4.245,1518,4.245,1519,4.245,1520,4.245,1521,4.245]],["sidebarParentCategories/216",[699,1.331]],["title/217",[30,1.435,957,1.884,1288,1.643,1393,1.807]],["content/217",[30,3.207,53,1.496,55,1.81,58,0.884,68,2.949,114,2.071,145,2.57,149,2.468,152,2.33,190,2.132,202,2.272,237,3.203,261,2.071,263,1.963,264,2.199,305,1.938,400,2.199,433,1.8,480,3.111,512,3.203,522,1.611,536,2.132,545,2.199,719,2.548,851,1.747,867,4.506,985,2.444,1030,2.67,1161,4.506,1171,2.353,1234,2.272,1288,1.523,1289,1.826,1290,1.496,1373,2.272,1379,2.548,1393,3.023,1426,4.231,1427,4.875,1428,3.828,1429,4.875,1522,4.875,1523,2.444,1524,5.434,1525,6.526,1526,5.434,1527,5.434,1528,5.434,1529,5.434,1530,5.434]],["sidebarParentCategories/217",[699,1.331]],["title/218",[347,2.327,1393,2.086,1459,3.172]],["content/218",[17,1.467,19,1.636,31,1.071,43,1.599,58,0.515,59,1.764,89,2.598,117,1.599,127,4.404,148,2.735,149,1.438,171,1.676,228,3.442,229,2.231,284,3.013,288,2.626,341,1.676,347,4.612,355,3.202,388,3.442,397,3.342,400,2.984,484,1.223,489,2.811,605,1.636,679,1.31,699,0.7,711,2.231,745,1.813,767,2.626,849,2.626,905,2.231,912,2.466,1033,2.626,1046,1.676,1213,2.231,1287,2.14,1328,4.404,1347,4.404,1355,2.841,1393,2.785,1404,2.626,1459,6.47,1506,4.404,1531,6.012,1532,8.581,1533,3.167,1534,3.167,1535,3.167,1536,4.91,1537,4.91,1538,2.841,1539,3.167,1540,4.91,1541,4.91,1542,3.167,1543,3.167,1544,3.167,1545,3.167,1546,3.167,1547,2.841,1548,4.91,1549,4.91]],["sidebarParentCategories/218",[699,1.331]],["title/219",[32,2.086,93,2.327,536,2.654]],["content/219",[32,4.092,53,2.772,55,1.355,58,0.615,59,2.108,62,1.718,81,2.556,84,3.217,93,1.955,113,3.796,147,2.665,150,2.916,200,2.41,218,2.792,221,2.792,226,2.665,239,2.556,253,3.394,268,2.792,305,1.349,351,1.955,397,1.867,433,1.043,434,1.328,481,2.792,536,2.23,605,1.955,699,1.242,755,3.796,770,2.166,957,1.827,1089,2.792,1234,2.376,1286,2.792,1288,2.366,1289,1.91,1290,1.565,1366,4.659,1373,2.376,1393,3.672,1394,2.556,1448,2.946,1523,2.556,1550,3.783,1551,5.619,1552,5.619,1553,5.619,1554,3.783,1555,6.703,1556,3.783,1557,5.619,1558,3.394,1559,3.394,1560,3.783,1561,3.783,1562,3.783,1563,3.783,1564,3.783,1565,3.783,1566,3.783,1567,3.783,1568,3.783,1569,3.783]],["sidebarParentCategories/219",[699,1.331]],["title/220",[263,2.117,1054,2.371,1288,1.643,1393,1.807]],["content/220",[34,2.362,35,3.027,53,1.279,55,1.402,58,1.179,65,5.545,84,1.771,90,2.565,145,2.279,148,1.723,150,3.135,152,1.327,179,1.88,180,1.598,190,1.823,191,2.012,210,0.939,227,3.395,263,3.629,264,1.88,284,1.086,342,2.179,357,2.841,373,1.679,374,1.494,400,1.88,512,3.491,522,1.377,536,1.823,540,2.214,589,1.561,605,1.598,715,1.723,716,2.565,737,1.433,770,1.771,852,4.958,874,2.408,925,1.88,1054,4.064,1057,3.135,1212,2.408,1288,1.303,1289,1.561,1290,1.279,1351,2.408,1393,3.557,1394,2.09,1448,2.408,1455,2.775,1466,2.565,1523,2.09,1559,2.775,1570,5.922,1571,3.093,1572,3.093,1573,4.82,1574,3.093,1575,3.093,1576,4.82,1577,3.093,1578,4.82,1579,4.82,1580,4.82,1581,4.82,1582,4.82,1583,3.093,1584,3.093,1585,3.093,1586,3.093]],["sidebarParentCategories/220",[699,1.331]],["title/221",[150,1.435,342,2.748,1459,2.748,1587,3.499]],["content/221",[8,1.972,18,2.991,55,1.484,77,2.795,92,3.107,145,3.54,150,3.15,167,3.395,342,6.031,356,3.814,512,2.711,522,2.048,543,4.197,605,2.376,699,1.016,839,5.038,852,4.063,957,2.221,1046,2.434,1103,5.038,1288,1.937,1289,2.321,1354,4.126,1373,2.888,1393,3.764,1395,4.558,1399,3.814,1452,4.126,1459,6.031,1478,4.126,1523,3.107,1588,4.599,1589,6.471,1590,4.599,1591,4.599,1592,4.599]],["sidebarParentCategories/221",[699,1.331]],["title/290",[267,1.309,1288,1.643,1290,1.613,1292,2.064]],["content/290",[2,1.911,8,1.721,17,2.718,32,1.859,55,1.072,70,2.328,71,1.409,265,1.859,267,2.561,277,2.827,294,2.827,302,1.898,305,2.092,310,3.36,323,2.771,324,1.753,327,2.896,328,3.501,329,2.962,337,0.942,362,1.721,389,2.236,393,2.52,395,2.718,402,1.367,411,2.52,433,1.618,434,2.06,453,2.61,699,1.936,706,2.365,718,2.365,726,6.846,727,5.264,728,6.846,745,3.36,870,2.236,1290,1.66,1291,2.827,1292,3.106,1322,2.962,1366,3.328,1367,3.6,1368,3.6,1371,3.6]],["sidebarParentCategories/290",[699,1.331]],["title/291",[95,2.327,484,1.739,1295,2.223]],["content/291",[17,2.379,20,3.617,32,3.676,103,2.379,117,2.592,123,3.676,146,1.983,171,2.717,224,3.026,238,3.534,267,1.723,292,3.79,305,1.831,315,2.332,326,2.379,392,3.469,408,3.79,409,3.79,475,3.469,484,3.29,492,3.339,587,3.617,677,3.79,692,3.447,699,1.135,705,3.79,737,3.235,745,2.94,1234,3.224,1290,2.124,1295,4.204,1314,4.258,1374,3.617,1375,4.606,1376,3.617,1593,3.998]],["sidebarParentCategories/291",[699,1.331]],["title/292",[31,1.162,1594,4.778]],["content/292",[18,2.852,31,1.908,50,2.032,55,1.332,62,1.991,66,2.38,87,0.811,130,2.963,140,2.898,190,3.688,239,2.963,261,2.511,284,1.54,340,2.852,355,3.449,388,2.511,402,2.865,415,3.637,465,2.321,540,2.339,603,2.665,692,2.165,699,0.969,737,3.379,744,3.418,770,2.511,773,2.754,775,3.958,779,2.683,802,3.414,851,3.022,866,3.089,876,3.414,957,2.118,1006,3.637,1288,1.847,1290,1.814,1292,2.321,1376,3.089,1595,3.637,1596,6.257,1597,4.386,1598,3.934,1599,4.386,1600,4.386]],["sidebarParentCategories/292",[699,1.331]],["title/293",[145,2.129,1089,3.324,1601,4.04]],["content/293",[2,1.051,31,1.698,58,1.107,77,3.004,102,1.135,112,2.554,140,2.29,145,2.337,149,2.245,171,2.616,179,3.004,204,3.482,211,4.597,232,3.104,267,1.659,284,2.389,325,3.482,355,2.337,522,2.201,562,2.913,679,2.045,695,3.848,699,1.092,710,4.099,715,2.754,832,6.104,833,4.099,860,4.099,1004,3.648,1141,4.434,1209,4.434,1304,4.099,1363,4.099,1379,3.482,1383,5.022,1394,3.339,1547,4.434,1601,6.104,1602,4.943,1603,6.804,1604,4.943,1605,4.943,1606,4.943,1607,4.943,1608,4.943,1609,4.943]],["sidebarParentCategories/293",[699,1.331]],["title/294",[268,3.324,536,2.654,737,2.086]],["content/294",[2,1.494,31,1.37,55,1.836,58,0.552,73,2.063,123,1.573,167,2.506,264,2.063,268,2.506,272,2.643,302,1.605,327,1.676,344,2.815,345,2.034,360,1.944,364,1.174,388,1.944,402,1.156,416,3.595,480,2.965,522,1.512,532,2.063,536,2.001,540,2.347,562,2.001,692,2.556,701,6.301,708,4.646,737,3.504,744,2.105,775,1.842,779,1.456,793,3.467,885,2.815,1290,1.404,1292,1.797,1595,2.815,1610,3.395,1611,5.179,1612,5.179,1613,5.179,1614,5.179,1615,5.179,1616,3.045,1617,5.179,1618,5.179,1619,3.395,1620,5.179,1621,5.179,1622,5.179,1623,7.024,1624,3.395,1625,3.395,1626,3.395]],["sidebarParentCategories/294",[699,1.331]],["title/295",[235,2.737,737,2.086,978,3.734]],["content/295",[8,1.163,31,0.592,34,0.884,55,1.592,58,0.707,68,3.373,84,2.488,111,1.511,130,2.935,141,2.112,145,3.745,146,1.678,179,2.641,202,1.703,216,2.249,218,2.002,235,4.41,237,3.204,252,1.031,284,0.952,305,0.967,316,1.283,318,1.511,323,1.084,334,6.32,340,1.764,351,2.245,356,2.249,388,1.553,397,1.339,479,1.911,522,1.208,540,1.624,589,1.369,603,1.648,677,2.002,692,1.339,694,1.832,719,3.061,737,2.879,770,2.488,779,2.331,793,3.068,851,3.002,856,1.472,867,2.249,889,1.832,957,1.31,978,4.507,985,1.832,1046,2.299,1136,2.112,1167,3.829,1171,2.826,1290,1.797,1292,2.299,1337,2.433,1379,1.911,1383,2.002,1388,3.603,1404,5.154,1466,2.249,1538,3.898,1587,2.433,1627,2.713,1628,4.345,1629,2.433,1630,4.345,1631,5.436,1632,2.713,1633,4.345,1634,4.345,1635,2.713,1636,2.713,1637,2.713,1638,4.345,1639,4.345,1640,2.713,1641,2.713,1642,2.713,1643,2.713,1644,2.713,1645,2.713,1646,2.713,1647,2.433,1648,2.713,1649,2.713,1650,2.713,1651,2.433,1652,2.433]],["sidebarParentCategories/295",[699,1.331]],["title/296",[465,2.819,737,2.467]],["content/296",[30,2.567,172,3.232,182,3.995,318,3.887,355,3.299,465,3.692,484,2.695,603,4.24,866,4.915,1210,6.259,1211,5.432,1212,5.432,1653,6.259,1654,6.977,1655,6.977,1656,6.977]],["sidebarParentCategories/296",[699,1.331]],["title/297",[225,2.89,737,2.467]],["content/297",[6,0.91,8,1.327,17,0.835,30,0.663,34,0.587,43,0.91,50,0.835,53,0.746,55,1.679,58,0.784,62,1.405,68,1.679,73,1.096,77,1.096,95,0.931,108,1.004,114,1.772,123,0.835,130,2.09,140,1.433,145,2.801,149,0.819,152,3.207,153,1.132,156,1.404,163,1.096,171,0.954,179,1.096,190,1.063,202,1.132,210,0.547,225,3.793,229,1.27,237,3.491,242,1.495,243,1.132,264,1.096,267,0.605,305,1.449,323,0.72,330,1.331,338,0.72,350,1.218,351,2.491,357,1.063,360,1.032,364,0.623,433,1.121,456,1.032,478,1.331,480,1.032,484,1.195,512,1.063,522,2.417,532,1.096,536,1.824,540,1.52,541,3.028,543,2.491,574,1.218,605,0.931,699,0.898,737,2.514,779,2.868,793,3.128,851,2.861,957,0.871,985,4.002,996,3.371,1005,3.165,1046,0.954,1078,1.27,1144,3.559,1145,2.409,1167,2.18,1169,2.284,1171,2.012,1234,1.132,1290,1.28,1292,1.638,1302,1.404,1373,1.132,1374,2.864,1376,1.27,1383,2.284,1384,2.776,1386,2.776,1388,2.566,1393,2.234,1394,1.218,1395,2.18,1425,1.617,1426,3.754,1428,2.864,1430,1.617,1433,1.617,1434,1.617,1444,1.617,1445,1.617,1446,1.495,1447,2.776,1657,4.822,1658,1.404,1659,1.803,1660,1.803,1661,1.803,1662,1.803,1663,3.094,1664,1.803,1665,3.094,1666,1.803,1667,1.803,1668,4.822,1669,1.803,1670,3.094,1671,3.094,1672,3.094,1673,1.617,1674,1.617,1675,3.647,1676,3.094,1677,1.803,1678,2.776,1679,3.094,1680,1.803,1681,1.803,1682,1.803,1683,1.803,1684,1.803,1685,1.803]],["sidebarParentCategories/297",[699,1.331]],["title/298",[30,1.435,225,2.117,263,2.117,1054,2.371]],["content/298",[5,1.944,6,2.052,20,1.759,34,1.93,55,1.818,58,0.963,89,1.322,96,0.919,137,1.944,146,0.965,150,2.825,151,1.355,152,3.654,167,1.843,180,1.29,202,1.568,225,2.206,227,1.759,232,1.568,237,1.472,263,3.214,284,0.877,326,1.157,338,0.998,351,2.1,357,2.396,395,1.157,416,2.327,433,0.689,512,1.472,522,2.289,540,1.52,541,2.552,562,1.472,589,1.261,715,1.391,719,1.759,737,1.883,755,1.687,779,2.796,793,2.923,846,4.001,852,2.789,1038,2.071,1054,3.6,1057,1.624,1058,2.071,1059,2.863,1060,1.944,1061,3,1171,1.624,1290,1.033,1292,1.322,1309,2.071,1353,2.24,1378,2.24,1395,2.863,1396,3.37,1428,1.759,1476,2.24,1594,5.313,1674,2.24,1678,3.646,1686,4.065,1687,4.065,1688,4.065,1689,4.065,1690,4.065,1691,2.24,1692,2.497,1693,4.065,1694,4.065,1695,4.065,1696,4.065,1697,4.065,1698,2.497,1699,2.497,1700,2.497,1701,2.497,1702,2.497,1703,2.497,1704,2.497,1705,2.497]],["sidebarParentCategories/298",[699,1.331]],["title/299",[123,1.425,315,1.397,540,1.15,692,1.519,699,0.68,737,1.425]],["content/299",[2,0.754,6,0.483,17,0.443,25,0.347,31,0.661,34,0.312,53,0.396,55,1.815,58,0.649,59,0.533,62,0.435,73,0.582,83,0.859,84,0.548,92,1.189,93,1.83,111,1.974,123,2.198,138,0.745,145,1.433,146,0.68,148,0.533,150,0.352,151,0.519,152,2.507,160,1.579,171,0.931,179,1.07,210,0.92,216,0.794,220,1.145,224,3.446,226,1.24,227,2.496,232,0.601,235,1.485,240,2.719,254,0.548,261,0.548,267,0.321,279,0.647,288,0.794,298,0.707,306,0.794,315,0.799,318,1.689,323,0.703,327,2.167,336,0.674,342,0.674,345,1.392,351,1.566,360,1.399,364,0.331,374,0.462,381,0.623,388,1.008,395,0.815,402,0.6,416,1.008,474,0.745,478,0.707,484,0.68,492,0.623,522,1.578,540,2.473,562,2.088,574,3.42,603,0.582,692,1.206,699,0.54,711,0.674,719,0.674,737,2.901,744,0.715,775,0.519,779,2.406,792,2.286,793,2.342,813,1.923,851,0.85,860,0.794,885,0.794,925,0.582,1005,2.36,1033,0.794,1046,1.604,1084,1.24,1151,0.859,1167,2.135,1212,0.745,1234,0.601,1290,1.011,1292,1.293,1295,0.472,1311,2.36,1316,0.745,1323,0.745,1336,2.719,1374,1.24,1381,0.794,1393,2.985,1428,1.24,1446,1.459,1448,1.37,1459,0.674,1460,0.859,1489,0.859,1490,0.859,1496,1.579,1498,0.859,1500,0.859,1515,0.859,1593,0.745,1595,2.026,1598,0.859,1616,3.178,1647,1.579,1651,0.859,1652,2.192,1658,0.745,1673,1.579,1691,0.859,1706,0.957,1707,0.957,1708,4.39,1709,2.443,1710,0.957,1711,0.957,1712,0.957,1713,0.957,1714,0.957,1715,0.957,1716,3.031,1717,0.957,1718,1.76,1719,1.76,1720,1.76,1721,0.957,1722,0.957,1723,5.846,1724,0.957,1725,0.957,1726,0.957,1727,0.957,1728,0.957,1729,2.443,1730,0.957,1731,0.957,1732,0.957,1733,1.76,1734,3.992,1735,3.031,1736,3.992,1737,1.76,1738,3.031,1739,1.76,1740,0.957,1741,0.957,1742,1.76,1743,1.76,1744,1.76,1745,0.957,1746,1.76,1747,1.76,1748,0.957,1749,0.957,1750,0.957,1751,0.957,1752,0.957,1753,0.957,1754,3.031,1755,0.957,1756,3.992,1757,0.957,1758,1.76,1759,0.957,1760,0.957,1761,0.957,1762,0.957,1763,0.957,1764,0.957,1765,0.957,1766,0.957,1767,1.76,1768,0.957,1769,0.957,1770,0.957,1771,0.957,1772,3.992,1773,2.443,1774,3.543,1775,3.543,1776,0.957,1777,0.957,1778,0.957,1779,0.957,1780,1.76,1781,0.957,1782,0.957,1783,0.957,1784,0.957,1785,0.957,1786,0.957,1787,0.957,1788,0.957,1789,0.957,1790,0.957,1791,0.957]],["sidebarParentCategories/299",[699,1.331]],["title/300",[200,1.931,484,1.739,1295,2.223]],["content/300",[32,2.325,41,4.464,43,3.47,47,3.907,58,0.816,92,3.39,96,1.846,117,2.533,140,3.185,200,2.948,225,2.723,243,3.151,326,2.325,345,1.971,362,2.152,413,2.958,484,3.258,532,3.05,594,4.161,699,1.864,744,2.039,802,3.907,810,3.535,811,4.161,870,2.795,902,3.704,1288,2.895,1290,2.076,1292,2.656,1295,3.393,1379,3.535,1383,3.704,1393,2.325,1395,3.535,1512,4.501,1513,4.501,1593,3.907,1658,3.907,1792,5.018]],["sidebarParentCategories/300",[699,1.331]],["title/301",[225,2.117,957,1.884,1288,1.643,1393,1.807]],["content/301",[53,2.091,55,1.83,58,0.822,68,2.744,114,2.895,145,3.268,152,2.964,225,3.75,237,4.073,263,2.744,264,3.073,305,2.464,480,3.957,512,2.98,522,2.252,536,2.98,545,3.073,1171,3.288,1288,2.129,1290,2.091,1292,2.676,1393,3.647,1426,5.38,1428,4.868,1522,6.199,1523,3.416,1593,3.937,1675,6.199]],["sidebarParentCategories/301",[699,1.331]],["title/302",[150,1.435,957,1.884,1288,1.643,1393,1.807]],["content/302",[58,0.898,59,3.075,130,3.73,146,2.132,150,3.227,171,2.922,210,2.225,239,3.73,249,3.73,284,1.938,327,2.725,334,4.578,347,2.852,522,2.459,957,2.666,1150,6.08,1288,2.325,1311,4.298,1393,2.558,1400,4.952,1523,3.73,1558,4.952,1629,6.577,1653,4.952,1658,4.298,1793,5.521,1794,8.233,1795,5.521,1796,5.521,1797,5.521,1798,5.521,1799,5.521,1800,5.521]],["sidebarParentCategories/302",[699,1.331]],["title/303",[957,2.175,1288,1.896,1393,2.086]],["content/303",[9,4.777,34,1.877,53,2.383,55,1.629,84,3.299,150,2.12,180,2.976,202,3.618,218,4.252,264,3.501,279,3.892,374,4.307,456,3.299,522,2.566,540,2.154,605,2.976,957,4.06,1288,2.426,1290,2.383,1292,3.049,1393,3.494,1394,3.892,1523,3.892,1801,5.761,1802,7.541,1803,5.761]],["sidebarParentCategories/303",[699,1.331]]],"invertedIndex":[["",{"_index":55,"title":{"14":{},"15":{},"16":{},"24":{},"25":{},"26":{},"27":{},"52":{},"53":{},"93":{},"94":{},"95":{},"96":{},"160":{},"161":{},"162":{}},"content":{"1":{},"10":{},"13":{},"23":{},"32":{},"33":{},"37":{},"51":{},"68":{},"70":{},"75":{},"77":{},"81":{},"82":{},"83":{},"84":{},"85":{},"88":{},"89":{},"90":{},"91":{},"92":{},"99":{},"104":{},"106":{},"116":{},"117":{},"118":{},"119":{},"125":{},"131":{},"132":{},"133":{},"136":{},"143":{},"144":{},"157":{},"158":{},"159":{},"169":{},"170":{},"171":{},"172":{},"175":{},"176":{},"177":{},"178":{},"179":{},"184":{},"185":{},"186":{},"210":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"290":{},"292":{},"294":{},"295":{},"297":{},"298":{},"299":{},"301":{},"303":{}},"sidebarParentCategories":{}}],["0.0.1",{"_index":1300,"title":{},"content":{"163":{}},"sidebarParentCategories":{}}],["0.1",{"_index":1343,"title":{},"content":{"185":{},"186":{}},"sidebarParentCategories":{}}],["0.1.0",{"_index":1289,"title":{"161":{},"210":{}},"content":{"159":{},"161":{},"163":{},"167":{},"210":{},"211":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{}},"sidebarParentCategories":{}}],["0.2",{"_index":1355,"title":{},"content":{"186":{},"218":{}},"sidebarParentCategories":{}}],["0.2.0",{"_index":1373,"title":{},"content":{"211":{},"212":{},"213":{},"214":{},"215":{},"217":{},"219":{},"221":{},"297":{}},"sidebarParentCategories":{}}],["0.2.5",{"_index":1603,"title":{},"content":{"293":{}},"sidebarParentCategories":{}}],["0.2.x",{"_index":1290,"title":{"161":{},"162":{},"210":{},"290":{}},"content":{"159":{},"161":{},"162":{},"167":{},"210":{},"212":{},"213":{},"214":{},"216":{},"217":{},"219":{},"220":{},"290":{},"291":{},"292":{},"294":{},"295":{},"297":{},"298":{},"299":{},"300":{},"301":{},"303":{}},"sidebarParentCategories":{}}],["0.3.0",{"_index":1593,"title":{},"content":{"291":{},"299":{},"300":{},"301":{}},"sidebarParentCategories":{}}],["0.3.x",{"_index":1292,"title":{"162":{},"290":{}},"content":{"159":{},"162":{},"167":{},"290":{},"292":{},"294":{},"295":{},"297":{},"298":{},"299":{},"300":{},"301":{},"303":{}},"sidebarParentCategories":{}}],["0.61.5",{"_index":687,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["0.62.0",{"_index":680,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["0.64.0",{"_index":713,"title":{},"content":{"77":{}},"sidebarParentCategories":{}}],["0.69.5",{"_index":681,"title":{},"content":{"77":{},"91":{}},"sidebarParentCategories":{}}],["0.70.0",{"_index":678,"title":{},"content":{"77":{},"91":{}},"sidebarParentCategories":{}}],["0023",{"_index":1479,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["004",{"_index":205,"title":{},"content":{"11":{},"86":{}},"sidebarParentCategories":{}}],["01",{"_index":553,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["0160",{"_index":1063,"title":{},"content":{"169":{},"173":{},"213":{}},"sidebarParentCategories":{}}],["0212",{"_index":983,"title":{},"content":{"125":{}},"sidebarParentCategories":{}}],["0360",{"_index":1602,"title":{},"content":{"293":{}},"sidebarParentCategories":{}}],["040e96c3c539",{"_index":1530,"title":{},"content":{"217":{}},"sidebarParentCategories":{}}],["0434",{"_index":1053,"title":{},"content":{"169":{},"173":{}},"sidebarParentCategories":{}}],["04a2c382",{"_index":1578,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["0592",{"_index":1424,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["09e46da9",{"_index":1526,"title":{},"content":{"217":{}},"sidebarParentCategories":{}}],["1",{"_index":316,"title":{"139":{},"147":{},"154":{},"169":{},"175":{}},"content":{"23":{},"24":{},"25":{},"26":{},"27":{},"92":{},"93":{},"106":{},"113":{},"143":{},"150":{},"157":{},"181":{},"185":{},"295":{}},"sidebarParentCategories":{}}],["1.0",{"_index":1146,"title":{},"content":{"176":{},"179":{},"214":{}},"sidebarParentCategories":{}}],["1.0.0",{"_index":1294,"title":{},"content":{"163":{}},"sidebarParentCategories":{}}],["1.1",{"_index":1055,"title":{},"content":{"169":{},"173":{},"214":{}},"sidebarParentCategories":{}}],["1.4",{"_index":906,"title":{},"content":{"113":{}},"sidebarParentCategories":{}}],["10",{"_index":992,"title":{},"content":{"126":{}},"sidebarParentCategories":{}}],["10000",{"_index":974,"title":{},"content":{"124":{}},"sidebarParentCategories":{}}],["10044/com.usereactnativeindysdk",{"_index":557,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["13",{"_index":566,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["16:25:02.300",{"_index":555,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["2",{"_index":405,"title":{"141":{},"148":{},"155":{},"176":{}},"content":{"51":{},"52":{},"169":{},"181":{},"185":{}},"sidebarParentCategories":{}}],["2.1",{"_index":1249,"title":{"142":{},"149":{},"156":{}},"content":{},"sidebarParentCategories":{}}],["2.2",{"_index":1252,"title":{"143":{},"150":{},"157":{}},"content":{},"sidebarParentCategories":{}}],["2.3",{"_index":1255,"title":{"144":{},"151":{},"158":{}},"content":{},"sidebarParentCategories":{}}],["20",{"_index":993,"title":{},"content":{"126":{}},"sidebarParentCategories":{}}],["2020",{"_index":552,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["2022",{"_index":1263,"title":{},"content":{"146":{}},"sidebarParentCategories":{}}],["21",{"_index":597,"title":{},"content":{"88":{}},"sidebarParentCategories":{}}],["23",{"_index":1175,"title":{},"content":{"178":{},"179":{}},"sidebarParentCategories":{}}],["27",{"_index":554,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["3",{"_index":806,"title":{"170":{},"177":{}},"content":{"92":{},"96":{}},"sidebarParentCategories":{}}],["3000",{"_index":380,"title":{},"content":{"37":{},"83":{},"85":{},"175":{}},"sidebarParentCategories":{}}],["3001",{"_index":1052,"title":{},"content":{"169":{},"172":{},"175":{},"179":{}},"sidebarParentCategories":{}}],["3002",{"_index":1126,"title":{},"content":{"175":{},"179":{}},"sidebarParentCategories":{}}],["32",{"_index":862,"title":{},"content":{"105":{}},"sidebarParentCategories":{}}],["3b6f131af5e",{"_index":968,"title":{},"content":{"122":{}},"sidebarParentCategories":{}}],["4",{"_index":1073,"title":{"171":{},"178":{}},"content":{},"sidebarParentCategories":{}}],["40c4",{"_index":966,"title":{},"content":{"122":{}},"sidebarParentCategories":{}}],["4909",{"_index":1528,"title":{},"content":{"217":{}},"sidebarParentCategories":{}}],["4baf",{"_index":965,"title":{},"content":{"122":{}},"sidebarParentCategories":{}}],["4de9",{"_index":1580,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["5",{"_index":1097,"title":{"172":{},"179":{}},"content":{},"sidebarParentCategories":{}}],["50",{"_index":1672,"title":{},"content":{"297":{}},"sidebarParentCategories":{}}],["5000",{"_index":383,"title":{},"content":{"37":{},"124":{}},"sidebarParentCategories":{}}],["64.jar",{"_index":664,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["7000",{"_index":1645,"title":{},"content":{"295":{}},"sidebarParentCategories":{}}],["9955",{"_index":556,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["999e",{"_index":1579,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["9dec0b2fa5e4",{"_index":1582,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["_before_",{"_index":1329,"title":{},"content":{"184":{}},"sidebarParentCategories":{}}],["_internal/indycredenti",{"_index":1517,"title":{},"content":{"216":{}},"sidebarParentCategories":{}}],["_internal/indyrequest",{"_index":1516,"title":{},"content":{"216":{}},"sidebarParentCategories":{}}],["a1d2",{"_index":1581,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["a575",{"_index":1527,"title":{},"content":{"217":{}},"sidebarParentCategories":{}}],["aarch64.jar",{"_index":655,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["abov",{"_index":339,"title":{},"content":{"31":{},"40":{},"45":{},"56":{},"62":{},"71":{}},"sidebarParentCategories":{}}],["accept",{"_index":856,"title":{},"content":{"104":{},"112":{},"113":{},"114":{},"118":{},"119":{},"120":{},"168":{},"174":{},"175":{},"177":{},"179":{},"212":{},"295":{}},"sidebarParentCategories":{}}],["acceptancemechan",{"_index":881,"title":{},"content":{"106":{}},"sidebarParentCategories":{}}],["acceptpresent",{"_index":1662,"title":{},"content":{"297":{}},"sidebarParentCategories":{}}],["acceptpropos",{"_index":1660,"title":{},"content":{"297":{}},"sidebarParentCategories":{}}],["acceptxxx",{"_index":1402,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["acces",{"_index":1730,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["access",{"_index":73,"title":{},"content":{"1":{},"42":{},"78":{},"90":{},"212":{},"213":{},"216":{},"294":{},"297":{},"299":{}},"sidebarParentCategories":{}}],["access/jna/raw/5.5.0/lib/native/android",{"_index":654,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["accord",{"_index":325,"title":{},"content":{"29":{},"30":{},"39":{},"125":{},"169":{},"293":{}},"sidebarParentCategories":{}}],["accordingli",{"_index":1151,"title":{},"content":{"177":{},"299":{}},"sidebarParentCategories":{}}],["account",{"_index":1234,"title":{},"content":{"136":{},"211":{},"212":{},"214":{},"217":{},"219":{},"291":{},"297":{},"299":{}},"sidebarParentCategories":{}}],["acm",{"_index":1036,"title":{},"content":{"168":{},"169":{},"171":{},"172":{}},"sidebarParentCategories":{}}],["acmeag",{"_index":1108,"title":{},"content":{"172":{}},"sidebarParentCategories":{}}],["act",{"_index":127,"title":{},"content":{"8":{},"218":{}},"sidebarParentCategories":{}}],["action",{"_index":288,"title":{},"content":{"22":{},"218":{},"299":{}},"sidebarParentCategories":{}}],["actionmenu",{"_index":1611,"title":{},"content":{"294":{}},"sidebarParentCategories":{}}],["actionmenumodul",{"_index":1617,"title":{},"content":{"294":{}},"sidebarParentCategories":{}}],["activ",{"_index":1114,"title":{},"content":{"172":{}},"sidebarParentCategories":{}}],["actual",{"_index":1506,"title":{},"content":{"214":{},"218":{}},"sidebarParentCategories":{}}],["ad",{"_index":605,"title":{"90":{},"91":{}},"content":{"89":{},"90":{},"136":{},"163":{},"212":{},"213":{},"214":{},"216":{},"218":{},"219":{},"220":{},"221":{},"297":{},"303":{}},"sidebarParentCategories":{}}],["adapt",{"_index":758,"title":{},"content":{"81":{},"164":{}},"sidebarParentCategories":{}}],["add",{"_index":327,"title":{"68":{},"89":{}},"content":{"29":{},"31":{},"40":{},"49":{},"77":{},"80":{},"81":{},"88":{},"89":{},"91":{},"175":{},"210":{},"290":{},"294":{},"299":{},"302":{}},"sidebarParentCategories":{}}],["addit",{"_index":512,"title":{"81":{},"171":{}},"content":{"75":{},"81":{},"212":{},"217":{},"220":{},"221":{},"297":{},"298":{},"301":{}},"sidebarParentCategories":{}}],["adjust",{"_index":682,"title":{},"content":{"77":{},"91":{}},"sidebarParentCategories":{}}],["admin",{"_index":378,"title":{},"content":{"37":{}},"sidebarParentCategories":{}}],["admin_account",{"_index":1235,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["admin_password",{"_index":1236,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["advanc",{"_index":836,"title":{},"content":{"102":{},"132":{}},"sidebarParentCategories":{}}],["advantag",{"_index":1323,"title":{},"content":{"184":{},"185":{},"212":{},"299":{}},"sidebarParentCategories":{}}],["afj",{"_index":267,"title":{"136":{},"159":{},"161":{},"162":{},"210":{},"290":{}},"content":{"20":{},"22":{},"23":{},"28":{},"29":{},"30":{},"32":{},"33":{},"34":{},"37":{},"38":{},"39":{},"133":{},"134":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"167":{},"181":{},"182":{},"210":{},"211":{},"212":{},"213":{},"214":{},"290":{},"291":{},"293":{},"297":{},"299":{}},"sidebarParentCategories":{}}],["afj'",{"_index":739,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["aforement",{"_index":1654,"title":{},"content":{"296":{}},"sidebarParentCategories":{}}],["afterward",{"_index":535,"title":{},"content":{"64":{},"185":{}},"sidebarParentCategories":{}}],["ag",{"_index":1145,"title":{},"content":{"176":{},"178":{},"179":{},"297":{}},"sidebarParentCategories":{}}],["again",{"_index":1350,"title":{},"content":{"185":{}},"sidebarParentCategories":{}}],["agent",{"_index":31,"title":{"7":{},"14":{},"82":{},"84":{},"93":{},"97":{},"169":{},"175":{},"184":{},"185":{},"186":{},"292":{}},"content":{"1":{},"7":{},"8":{},"9":{},"10":{},"11":{},"13":{},"18":{},"19":{},"23":{},"28":{},"32":{},"33":{},"34":{},"82":{},"83":{},"84":{},"85":{},"86":{},"92":{},"97":{},"98":{},"99":{},"104":{},"105":{},"117":{},"118":{},"119":{},"121":{},"125":{},"128":{},"131":{},"136":{},"166":{},"168":{},"169":{},"170":{},"171":{},"172":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"182":{},"183":{},"184":{},"185":{},"186":{},"218":{},"292":{},"293":{},"294":{},"295":{},"299":{}},"sidebarParentCategories":{"130":{},"131":{},"132":{},"133":{}}}],["agent'",{"_index":1598,"title":{},"content":{"292":{},"299":{}},"sidebarParentCategories":{}}],["agent(agentconfig",{"_index":1597,"title":{},"content":{"292":{}},"sidebarParentCategories":{}}],["agent.config.filesystem.basepath}/afj/migration/backup/${backupidentifi",{"_index":1362,"title":{},"content":{"187":{}},"sidebarParentCategories":{}}],["agent.connections.createinvit",{"_index":1454,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["agent.connections.findallbyoutofbandid(id",{"_index":1079,"title":{},"content":{"171":{}},"sidebarParentCategories":{}}],["agent.connections.findallbyoutofbandid(outofbandrecord.id",{"_index":1464,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["agent.connections.receiveinvitation(parsedinvit",{"_index":1472,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["agent.connections.receiveinvitationfromurl(invitationurl",{"_index":1468,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["agent.credentials.findcredentialmessage('credentialrecordid",{"_index":1443,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["agent.credentials.findoffermessage('credentialrecordid",{"_index":1441,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["agent.credentials.findproposalmessage('credentialrecordid",{"_index":1440,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["agent.credentials.findrequestmessage('credentialrecordid",{"_index":1442,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["agent.credentials.getbyid('credentialrecordid",{"_index":1435,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["agent.credentials.getformatdata(credentialrecord.id",{"_index":1416,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["agent.credentials.offercredenti",{"_index":1392,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["agent.credentials.offercredential('connectionid",{"_index":1387,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["agent.discovery.isprotocolsupported(connectionid",{"_index":1640,"title":{},"content":{"295":{}},"sidebarParentCategories":{}}],["agent.discovery.queryfeatur",{"_index":1634,"title":{},"content":{"295":{}},"sidebarParentCategories":{}}],["agent.discovery.queryfeatures(connectionid",{"_index":1632,"title":{},"content":{"295":{}},"sidebarParentCategories":{}}],["agent.events.on(connectioneventtypes.connectionstatechang",{"_index":1083,"title":{},"content":{"171":{},"172":{},"213":{}},"sidebarParentCategories":{}}],["agent.events.on(credentialeventtypes.credentialstatechang",{"_index":1155,"title":{},"content":{"177":{},"179":{}},"sidebarParentCategories":{}}],["holder.oob.receiveinvitationfromurl(invitationurl",{"_index":1190,"title":{},"content":{"179":{}},"sidebarParentCategories":{}}],["homebrew",{"_index":1258,"title":{},"content":{"153":{}},"sidebarParentCategories":{}}],["hood",{"_index":1356,"title":{},"content":{"186":{}},"sidebarParentCategories":{}}],["hook",{"_index":303,"title":{"25":{},"34":{}},"content":{"23":{},"30":{},"31":{},"34":{}},"sidebarParentCategories":{"30":{},"31":{}}}],["host",{"_index":295,"title":{},"content":{"23":{},"66":{},"104":{}},"sidebarParentCategories":{}}],["hous",{"_index":435,"title":{},"content":{"43":{}},"sidebarParentCategories":{}}],["http",{"_index":247,"title":{},"content":{"5":{},"23":{},"33":{},"37":{},"75":{},"83":{},"169":{},"172":{},"175":{},"179":{}},"sidebarParentCategories":{}}],["http://localhost:3000/doc",{"_index":387,"title":{},"content":{"37":{}},"sidebarParentCategories":{}}],["http://localhost:3001",{"_index":1050,"title":{},"content":{"169":{},"172":{},"175":{},"179":{}},"sidebarParentCategories":{}}],["http://localhost:3002",{"_index":1125,"title":{},"content":{"175":{},"179":{}},"sidebarParentCategories":{}}],["http://localhost:5000",{"_index":377,"title":{},"content":{"37":{}},"sidebarParentCategories":{}}],["httpinboundtransport",{"_index":785,"title":{},"content":{"83":{},"85":{},"169":{},"172":{},"175":{},"179":{}},"sidebarParentCategories":{}}],["httpoutboundtransport",{"_index":783,"title":{},"content":{"83":{},"85":{},"169":{},"172":{},"175":{},"179":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())agent.registerinboundtransport(new",{"_index":787,"title":{},"content":{"83":{},"85":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())agent.registeroutboundtransport(new",{"_index":801,"title":{},"content":{"85":{}},"sidebarParentCategories":{}}],["https://afj.com",{"_index":1703,"title":{},"content":{"298":{}},"sidebarParentCategories":{}}],["https://cdn.cocoapods.org",{"_index":696,"title":{},"content":{"77":{}},"sidebarParentCategories":{}}],["https://crates.io/crates/env_logg",{"_index":1035,"title":{},"content":{"133":{}},"sidebarParentCategories":{}}],["https://deb.nodesource.com/setup_18.x",{"_index":501,"title":{},"content":{"70":{}},"sidebarParentCategories":{}}],["https://didcomm.agent.community.animo.id?c_i=ey....(mani",{"_index":961,"title":{},"content":{"121":{}},"sidebarParentCategories":{}}],["https://didcomm.org",{"_index":998,"title":{},"content":{"127":{}},"sidebarParentCategories":{}}],["https://didcomm.org/connections/1.0/invit",{"_index":1577,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["https://didcomm.org/messagepickup/2.0",{"_index":1633,"title":{},"content":{"295":{}},"sidebarParentCategories":{}}],["https://didcomm.org/mi",{"_index":1500,"title":{},"content":{"214":{},"299":{}},"sidebarParentCategories":{}}],["https://example.com",{"_index":1455,"title":{},"content":{"213":{},"220":{}},"sidebarParentCategories":{}}],["https://example.com?c_i=eyxxx",{"_index":1467,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["https://example.org",{"_index":1062,"title":{},"content":{"169":{},"172":{},"179":{}},"sidebarParentCategories":{}}],["https://example.org:3000",{"_index":857,"title":{},"content":{"104":{}},"sidebarParentCategories":{}}],["https://github.com/hyperledger/indi",{"_index":526,"title":{},"content":{"75":{},"77":{},"142":{},"149":{},"156":{}},"sidebarParentCategories":{}}],["https://github.com/java",{"_index":653,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["https://google.com",{"_index":1701,"title":{},"content":{"298":{}},"sidebarParentCategories":{}}],["https://picsum.photos/200",{"_index":1002,"title":{},"content":{"128":{}},"sidebarParentCategories":{}}],["https://raw.githubusercontent.com/homebrew/install/head/install.sh",{"_index":446,"title":{},"content":{"43":{},"54":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_arm64_1.16.0.zip",{"_index":630,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_armv7_1.16.0.zip",{"_index":638,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_x86_1.16.0.zip",{"_index":643,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_x86_64_1.16.0.zip",{"_index":648,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/repository/maven",{"_index":609,"title":{},"content":{"89":{}},"sidebarParentCategories":{}}],["https://rpm.nodesource.com/setup_18.x",{"_index":506,"title":{},"content":{"70":{}},"sidebarParentCategories":{}}],["https://sh.rustup.r",{"_index":519,"title":{},"content":{"75":{}},"sidebarParentCategories":{}}],["hub",{"_index":195,"title":{},"content":{"10":{}},"sidebarParentCategories":{}}],["hyperledg",{"_index":42,"title":{},"content":{"1":{},"11":{},"86":{}},"sidebarParentCategories":{}}],["i.",{"_index":1664,"title":{},"content":{"297":{}},"sidebarParentCategories":{}}],["id",{"_index":374,"title":{},"content":{"37":{},"82":{},"85":{},"99":{},"106":{},"122":{},"136":{},"169":{},"171":{},"172":{},"175":{},"177":{},"179":{},"212":{},"213":{},"216":{},"220":{},"299":{},"303":{}},"sidebarParentCategories":{}}],["ident",{"_index":11,"title":{},"content":{"1":{},"3":{},"8":{},"10":{},"33":{},"176":{},"179":{}},"sidebarParentCategories":{}}],["identifi",{"_index":209,"title":{},"content":{"3":{},"100":{},"107":{},"108":{},"187":{}},"sidebarParentCategories":{}}],["ignor",{"_index":1186,"title":{},"content":{"179":{}},"sidebarParentCategories":{}}],["imag",{"_index":1000,"title":{},"content":{"128":{}},"sidebarParentCategories":{}}],["implement",{"_index":111,"title":{},"content":{"7":{},"13":{},"14":{},"32":{},"33":{},"81":{},"90":{},"102":{},"116":{},"132":{},"133":{},"295":{},"299":{}},"sidebarParentCategories":{}}],["impli",{"_index":1220,"title":{},"content":{"181":{}},"sidebarParentCategories":{}}],["implicit",{"_index":693,"title":{},"content":{"77":{}},"sidebarParentCategories":{}}],["implicitli",{"_index":987,"title":{},"content":{"125":{}},"sidebarParentCategories":{}}],["import",{"_index":345,"title":{},"content":{"32":{},"81":{},"82":{},"83":{},"85":{},"91":{},"99":{},"106":{},"116":{},"117":{},"118":{},"119":{},"125":{},"131":{},"132":{},"133":{},"136":{},"172":{},"175":{},"179":{},"184":{},"185":{},"186":{},"212":{},"213":{},"214":{},"215":{},"294":{},"299":{},"300":{}},"sidebarParentCategories":{}}],["improv",{"_index":712,"title":{},"content":{"77":{},"164":{},"187":{}},"sidebarParentCategories":{}}],["inbound",{"_index":382,"title":{},"content":{"37":{},"83":{},"169":{},"172":{},"175":{},"179":{}},"sidebarParentCategories":{}}],["inboundtransport",{"_index":1130,"title":{},"content":{"175":{}},"sidebarParentCategories":{}}],["includ",{"_index":254,"title":{},"content":{"17":{},"23":{},"81":{},"92":{},"99":{},"106":{},"165":{},"171":{},"172":{},"179":{},"187":{},"299":{}},"sidebarParentCategories":{}}],["incom",{"_index":940,"title":{"171":{},"177":{}},"content":{"118":{},"119":{},"177":{}},"sidebarParentCategories":{}}],["independ",{"_index":511,"title":{},"content":{"75":{}},"sidebarParentCategories":{}}],["index.(js|ts|jsx|tsx",{"_index":735,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["index.tsx",{"_index":736,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["indi",{"_index":433,"title":{"49":{},"58":{},"64":{},"75":{},"91":{},"133":{},"142":{},"149":{},"156":{}},"content":{"41":{},"47":{},"48":{},"49":{},"50":{},"58":{},"59":{},"64":{},"65":{},"66":{},"73":{},"74":{},"75":{},"76":{},"77":{},"80":{},"90":{},"91":{},"105":{},"106":{},"108":{},"112":{},"115":{},"133":{},"134":{},"141":{},"142":{},"143":{},"144":{},"148":{},"149":{},"150":{},"155":{},"156":{},"157":{},"158":{},"178":{},"179":{},"210":{},"212":{},"217":{},"219":{},"290":{},"297":{},"298":{}},"sidebarParentCategories":{}}],["indic",{"_index":1302,"title":{},"content":{"163":{},"212":{},"213":{},"297":{}},"sidebarParentCategories":{}}],["indicio",{"_index":873,"title":{},"content":{"106":{}},"sidebarParentCategories":{}}],["indy_crypto_prebuilt_deps_dir=c:\\users\\{windows_user}\\downloads\\indi",{"_index":1267,"title":{},"content":{"147":{}},"sidebarParentCategories":{}}],["indy_generate_wallet_key",{"_index":830,"title":{},"content":{"102":{}},"sidebarParentCategories":{}}],["indy_prebuilt_deps_dir=c:\\users\\{windows_user}\\downloads\\indi",{"_index":1265,"title":{},"content":{"147":{}},"sidebarParentCategories":{}}],["indy_set_default_logg",{"_index":1031,"title":{},"content":{"133":{}},"sidebarParentCategories":{}}],["indy_set_logg",{"_index":1032,"title":{},"content":{"133":{}},"sidebarParentCategories":{}}],["indycredenti",{"_index":1519,"title":{},"content":{"216":{}},"sidebarParentCategories":{}}],["indycredential?.credentialdefinitionid",{"_index":1520,"title":{},"content":{"216":{}},"sidebarParentCategories":{}}],["indycredential?.schemaid",{"_index":1521,"title":{},"content":{"216":{}},"sidebarParentCategories":{}}],["indycredentialmetadata",{"_index":1410,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["indycredentialmetadata?.credentialdefinitionid",{"_index":1412,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["indycredentialmetadata?.schemaid",{"_index":1413,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["indyledg",{"_index":866,"title":{"106":{}},"content":{"106":{},"175":{},"179":{},"292":{},"296":{}},"sidebarParentCategories":{}}],["indyledgers.genesispath",{"_index":892,"title":{"110":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.genesistransact",{"_index":896,"title":{"111":{}},"content":{"110":{}},"sidebarParentCategories":{}}],["indyledgers.id",{"_index":883,"title":{"107":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.indynamespac",{"_index":884,"title":{"108":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.isproduct",{"_index":888,"title":{"109":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.transactionauthoragr",{"_index":898,"title":{"112":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.transactionauthoragreement.acceptancemechan",{"_index":907,"title":{"114":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.transactionauthoragreement.vers",{"_index":904,"title":{"113":{}},"content":{},"sidebarParentCategories":{}}],["indynamespac",{"_index":876,"title":{},"content":{"106":{},"175":{},"179":{},"292":{}},"sidebarParentCategories":{}}],["indypoolconfig",{"_index":872,"title":{},"content":{"106":{}},"sidebarParentCategories":{}}],["indypostgresstorageconfig",{"_index":1227,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["indysdk",{"_index":1226,"title":{},"content":{"134":{}},"sidebarParentCategories":{}}],["indystrgpostgres.dl",{"_index":1277,"title":{},"content":{"150":{},"151":{}},"sidebarParentCategories":{}}],["infer",{"_index":980,"title":{},"content":{"125":{}},"sidebarParentCategories":{}}],["info",{"_index":677,"title":{},"content":{"91":{},"165":{},"211":{},"291":{},"295":{}},"sidebarParentCategories":{}}],["info(messag",{"_index":1016,"title":{},"content":{"132":{}},"sidebarParentCategories":{}}],["inform",{"_index":219,"title":{},"content":{"4":{},"118":{},"119":{},"133":{}},"sidebarParentCategories":{}}],["initconfig",{"_index":773,"title":{},"content":{"82":{},"85":{},"131":{},"136":{},"169":{},"172":{},"175":{},"179":{},"292":{}},"sidebarParentCategories":{}}],["initi",{"_index":50,"title":{"84":{}},"content":{"1":{},"51":{},"82":{},"84":{},"85":{},"99":{},"105":{},"136":{},"168":{},"169":{},"172":{},"174":{},"175":{},"179":{},"184":{},"185":{},"186":{},"212":{},"292":{},"297":{}},"sidebarParentCategories":{}}],["initializeacmeag",{"_index":1047,"title":{},"content":{"169":{},"172":{}},"sidebarParentCategories":{}}],["initializebobag",{"_index":1040,"title":{},"content":{"169":{},"172":{}},"sidebarParentCategories":{}}],["initializeholderag",{"_index":1119,"title":{},"content":{"175":{},"179":{}},"sidebarParentCategories":{}}],["initializeissuerag",{"_index":1137,"title":{},"content":{"175":{},"179":{}},"sidebarParentCategories":{}}],["inject",{"_index":1616,"title":{},"content":{"294":{},"299":{}},"sidebarParentCategories":{}}],["insid",{"_index":105,"title":{},"content":{"5":{},"13":{},"88":{},"89":{},"91":{},"131":{},"170":{},"175":{},"184":{}},"sidebarParentCategories":{}}],["insight",{"_index":430,"title":{},"content":{"41":{}},"sidebarParentCategories":{}}],["instal",{"_index":337,"title":{"31":{},"40":{},"42":{},"50":{},"52":{},"59":{},"65":{},"76":{},"78":{},"80":{},"135":{},"139":{},"154":{}},"content":{"35":{},"37":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"50":{},"51":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"62":{},"63":{},"65":{},"66":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"134":{},"135":{},"140":{},"143":{},"146":{},"154":{},"157":{},"175":{},"210":{},"290":{}},"sidebarParentCategories":{"41":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"87":{},"88":{},"89":{},"90":{},"91":{}}}],["instanc",{"_index":360,"title":{},"content":{"33":{},"83":{},"116":{},"166":{},"169":{},"172":{},"175":{},"179":{},"212":{},"294":{},"297":{},"299":{}},"sidebarParentCategories":{}}],["instanceconst",{"_index":797,"title":{},"content":{"85":{}},"sidebarParentCategories":{}}],["instanceof",{"_index":1447,"title":{},"content":{"212":{},"297":{}},"sidebarParentCategories":{}}],["instanti",{"_index":1166,"title":{"184":{}},"content":{"178":{},"182":{},"183":{},"185":{},"214":{}},"sidebarParentCategories":{}}],["instantli",{"_index":354,"title":{},"content":{"33":{}},"sidebarParentCategories":{}}],["instead",{"_index":179,"title":{},"content":{"9":{},"134":{},"212":{},"213":{},"214":{},"220":{},"293":{},"295":{},"297":{},"299":{}},"sidebarParentCategories":{}}],["instruct",{"_index":1307,"title":{},"content":{"163":{},"166":{}},"sidebarParentCategories":{}}],["integ",{"_index":845,"title":{},"content":{"102":{}},"sidebarParentCategories":{}}],["integr",{"_index":344,"title":{},"content":{"32":{},"165":{},"294":{}},"sidebarParentCategories":{}}],["intel",{"_index":426,"title":{"54":{}},"content":{"41":{},"54":{},"152":{}},"sidebarParentCategories":{}}],["intend",{"_index":1511,"title":{},"content":{"215":{}},"sidebarParentCategories":{}}],["intent",{"_index":1216,"title":{},"content":{"181":{}},"sidebarParentCategories":{}}],["interact",{"_index":112,"title":{},"content":{"7":{},"8":{},"13":{},"14":{},"23":{},"32":{},"33":{},"34":{},"49":{},"58":{},"64":{},"75":{},"115":{},"165":{},"177":{},"293":{}},"sidebarParentCategories":{}}],["interfac",{"_index":336,"title":{},"content":{"34":{},"116":{},"132":{},"136":{},"177":{},"299":{}},"sidebarParentCategories":{}}],["intern",{"_index":1376,"title":{},"content":{"211":{},"212":{},"213":{},"291":{},"292":{},"297":{}},"sidebarParentCategories":{}}],["internet",{"_index":353,"title":{},"content":{"33":{}},"sidebarParentCategories":{}}],["interoper",{"_index":46,"title":{},"content":{"1":{},"5":{},"8":{},"33":{}},"sidebarParentCategories":{}}],["interv",{"_index":971,"title":{},"content":{"124":{}},"sidebarParentCategories":{}}],["intro",{"_index":0,"title":{"1":{}},"content":{},"sidebarParentCategories":{}}],["introduc",{"_index":1658,"title":{},"content":{"297":{},"299":{},"300":{},"302":{}},"sidebarParentCategories":{}}],["invit",{"_index":852,"title":{"170":{}},"content":{"104":{},"121":{},"168":{},"169":{},"170":{},"171":{},"172":{},"175":{},"179":{},"213":{},"220":{},"221":{},"298":{}},"sidebarParentCategories":{}}],["invitation.tourl",{"_index":1066,"title":{},"content":{"169":{},"172":{},"213":{}},"sidebarParentCategories":{}}],["invitationdid",{"_index":1570,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["invitationurl",{"_index":1059,"title":{},"content":{"169":{},"170":{},"172":{},"179":{},"213":{},"298":{}},"sidebarParentCategories":{}}],["invitationurl)}export",{"_index":1117,"title":{},"content":{"172":{}},"sidebarParentCategories":{}}],["invitationurl)}void",{"_index":1207,"title":{},"content":{"179":{}},"sidebarParentCategories":{}}],["invite",{"_index":1458,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["io",{"_index":548,"title":{"77":{}},"content":{"66":{},"77":{},"175":{}},"sidebarParentCategories":{}}],["ios/podfil",{"_index":691,"title":{},"content":{"77":{}},"sidebarParentCategories":{}}],["iot",{"_index":133,"title":{},"content":{"8":{}},"sidebarParentCategories":{}}],["isn't",{"_index":1490,"title":{},"content":{"214":{},"299":{}},"sidebarParentCategories":{}}],["ispickupv2support",{"_index":1639,"title":{},"content":{"295":{}},"sidebarParentCategories":{}}],["isproduct",{"_index":877,"title":{},"content":{"106":{},"175":{},"179":{}},"sidebarParentCategories":{}}],["isprotocolsupport",{"_index":1635,"title":{},"content":{"295":{}},"sidebarParentCategories":{}}],["issu",{"_index":149,"title":{"95":{},"174":{},"178":{}},"content":{"8":{},"22":{},"33":{},"68":{},"91":{},"92":{},"163":{},"165":{},"168":{},"171":{},"174":{},"176":{},"179":{},"180":{},"212":{},"217":{},"218":{},"293":{},"297":{}},"sidebarParentCategories":{}}],["issuecredenti",{"_index":1168,"title":{},"content":{"178":{},"179":{}},"sidebarParentCategories":{}}],["issuecredential(issu",{"_index":1199,"title":{},"content":{"179":{}},"sidebarParentCategories":{}}],["issuer",{"_index":118,"title":{},"content":{"12":{},"13":{},"16":{},"51":{},"174":{},"175":{},"176":{},"178":{},"179":{}},"sidebarParentCategories":{}}],["issuer.credentials.offercredenti",{"_index":1170,"title":{},"content":{"178":{},"179":{}},"sidebarParentCategories":{}}],["issuer.events.on(connectioneventtypes.connectionstatechang",{"_index":1192,"title":{},"content":{"179":{}},"sidebarParentCategories":{}}],["issuer.ledger.registercredentialdefinit",{"_index":1148,"title":{},"content":{"176":{},"179":{}},"sidebarParentCategories":{}}],["issuer.ledger.registerschema",{"_index":1143,"title":{},"content":{"176":{},"179":{}},"sidebarParentCategories":{}}],["issuer.oob.createinvit",{"_index":1189,"title":{},"content":{"179":{}},"sidebarParentCategories":{}}],["isvalidmessagetyp",{"_index":1502,"title":{},"content":{"214":{}},"sidebarParentCategories":{}}],["isvalidmessagetype(mymessage.typ",{"_index":1503,"title":{},"content":{"214":{}},"sidebarParentCategories":{}}],["it'",{"_index":1033,"title":{},"content":{"133":{},"218":{},"299":{}},"sidebarParentCategories":{}}],["item",{"_index":317,"title":{},"content":{"23":{},"24":{},"25":{},"26":{},"27":{},"51":{},"52":{},"92":{},"93":{},"94":{},"96":{},"112":{},"168":{},"174":{}},"sidebarParentCategories":{}}],["itself",{"_index":218,"title":{},"content":{"4":{},"212":{},"219":{},"295":{},"303":{}},"sidebarParentCategories":{}}],["jane",{"_index":1173,"title":{},"content":{"178":{},"179":{}},"sidebarParentCategories":{}}],["jar",{"_index":656,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["java",{"_index":611,"title":{},"content":{"90":{}},"sidebarParentCategories":{}}],["java.io.fil",{"_index":671,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["javascript",{"_index":3,"title":{"17":{},"20":{}},"content":{"1":{},"5":{},"8":{},"9":{},"11":{},"12":{},"13":{},"16":{},"17":{},"18":{},"19":{},"20":{},"23":{},"29":{},"30":{},"33":{},"39":{},"41":{},"42":{},"44":{},"49":{},"51":{},"55":{},"58":{},"61":{},"64":{},"70":{},"75":{},"78":{},"97":{},"116":{},"129":{},"159":{},"163":{},"165":{}},"sidebarParentCategories":{}}],["jna",{"_index":610,"title":{"90":{}},"content":{"90":{},"91":{}},"sidebarParentCategories":{}}],["jnilib",{"_index":617,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["js",{"_index":271,"title":{"21":{}},"content":{"21":{},"81":{}},"sidebarParentCategories":{}}],["json",{"_index":747,"title":{},"content":{"81":{},"110":{},"111":{},"112":{}},"sidebarParentCategories":{}}],["kali",{"_index":1246,"title":{"140":{}},"content":{},"sidebarParentCategories":{}}],["keep",{"_index":77,"title":{},"content":{"1":{},"134":{},"163":{},"165":{},"181":{},"212":{},"215":{},"221":{},"293":{},"297":{}},"sidebarParentCategories":{}}],["kept",{"_index":821,"title":{},"content":{"101":{}},"sidebarParentCategories":{}}],["key",{"_index":140,"title":{},"content":{"4":{},"8":{},"37":{},"82":{},"85":{},"99":{},"101":{},"102":{},"114":{},"136":{},"169":{},"172":{},"175":{},"179":{},"212":{},"215":{},"216":{},"292":{},"293":{},"297":{},"300":{}},"sidebarParentCategories":{}}],["keyderivationmethod",{"_index":812,"title":{},"content":{"99":{},"102":{}},"sidebarParentCategories":{}}],["keyderivationmethod.argon2imod",{"_index":816,"title":{},"content":{"99":{},"102":{}},"sidebarParentCategories":{}}],["keyderivationmethod.argon2int",{"_index":844,"title":{},"content":{"102":{}},"sidebarParentCategories":{}}],["keyderivationmethod.raw",{"_index":827,"title":{},"content":{"102":{}},"sidebarParentCategories":{}}],["kind",{"_index":567,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["kit",{"_index":48,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["know",{"_index":870,"title":{},"content":{"106":{},"159":{},"161":{},"162":{},"165":{},"168":{},"171":{},"172":{},"179":{},"210":{},"215":{},"290":{},"300":{}},"sidebarParentCategories":{}}],["knowledg",{"_index":251,"title":{},"content":{"5":{},"82":{},"168":{},"174":{}},"sidebarParentCategories":{}}],["known",{"_index":549,"title":{"67":{}},"content":{},"sidebarParentCategories":{}}],["label",{"_index":373,"title":{"98":{}},"content":{"37":{},"82":{},"85":{},"98":{},"112":{},"114":{},"128":{},"136":{},"169":{},"172":{},"175":{},"179":{},"220":{}},"sidebarParentCategories":{}}],["lack",{"_index":236,"title":{},"content":{"5":{}},"sidebarParentCategories":{}}],["larg",{"_index":407,"title":{},"content":{"42":{},"78":{}},"sidebarParentCategories":{}}],["lastli",{"_index":157,"title":{},"content":{"8":{},"49":{},"75":{}},"sidebarParentCategories":{}}],["later",{"_index":147,"title":{},"content":{"8":{},"99":{},"185":{},"212":{},"216":{},"219":{}},"sidebarParentCategories":{}}],["latest",{"_index":294,"title":{},"content":{"22":{},"77":{},"185":{},"210":{},"212":{},"290":{}},"sidebarParentCategories":{}}],["launch",{"_index":1335,"title":{},"content":{"184":{},"185":{}},"sidebarParentCategories":{}}],["ld_library_path",{"_index":542,"title":{},"content":{"64":{}},"sidebarParentCategories":{}}],["lead",{"_index":912,"title":{},"content":{"115":{},"172":{},"179":{},"218":{}},"sidebarParentCategories":{}}],["ledger",{"_index":465,"title":{"296":{}},"content":{"49":{},"58":{},"64":{},"75":{},"91":{},"105":{},"106":{},"107":{},"109":{},"115":{},"175":{},"181":{},"292":{},"296":{}},"sidebarParentCategories":{}}],["legaci",{"_index":755,"title":{},"content":{"81":{},"127":{},"169":{},"179":{},"213":{},"219":{},"298":{}},"sidebarParentCategories":{}}],["legacydiddoc",{"_index":1566,"title":{},"content":{"219":{}},"sidebarParentCategories":{}}],["legacytheirdiddoc",{"_index":1567,"title":{},"content":{"219":{}},"sidebarParentCategories":{}}],["less",{"_index":846,"title":{},"content":{"102":{},"117":{},"213":{},"298":{}},"sidebarParentCategories":{}}],["level",{"_index":110,"title":{},"content":{"13":{},"49":{},"51":{},"58":{},"64":{},"75":{},"133":{}},"sidebarParentCategories":{}}],["leverag",{"_index":1225,"title":{},"content":{"134":{},"159":{},"160":{},"182":{},"183":{},"185":{}},"sidebarParentCategories":{}}],["lib_indy_strg_postgres=c:\\users\\{windows_user}\\downloads\\indi",{"_index":1280,"title":{},"content":{"151":{}},"sidebarParentCategories":{}}],["libari",{"_index":614,"title":{"91":{}},"content":{},"sidebarParentCategories":{}}],["libcore/result.rs:945",{"_index":570,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["libindi",{"_index":370,"title":{},"content":{"37":{},"58":{},"133":{},"146":{}},"sidebarParentCategories":{}}],["libindy_arm64/lib/libindy.so",{"_index":634,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["libindy_armv7/lib/libindy.so",{"_index":640,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["libindy_x86/lib/libindy.so",{"_index":645,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["libindy_x86_64/lib/libindy.so",{"_index":650,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["libjnidispatch.so",{"_index":658,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["librari",{"_index":296,"title":{"90":{}},"content":{"23":{},"49":{},"64":{},"68":{},"75":{},"77":{},"90":{},"91":{},"150":{}},"sidebarParentCategories":{}}],["libsodium",{"_index":431,"title":{"47":{},"73":{}},"content":{"41":{},"47":{},"73":{},"74":{},"140":{},"154":{}},"sidebarParentCategories":{}}],["libssl",{"_index":1248,"title":{},"content":{"140":{}},"sidebarParentCategories":{}}],["libzmq",{"_index":432,"title":{"48":{},"74":{}},"content":{"41":{},"48":{},"74":{}},"sidebarParentCategories":{}}],["libzmq3",{"_index":510,"title":{},"content":{"74":{},"140":{}},"sidebarParentCategories":{}}],["libzmq_prefix=c:\\users\\{windows_user}\\downloads\\indi",{"_index":1269,"title":{},"content":{"147":{}},"sidebarParentCategories":{}}],["licens",{"_index":194,"title":{},"content":{"10":{}},"sidebarParentCategories":{}}],["lightweight",{"_index":461,"title":{},"content":{"48":{},"74":{}},"sidebarParentCategories":{}}],["line",{"_index":689,"title":{},"content":{"77":{},"133":{}},"sidebarParentCategories":{}}],["link",{"_index":474,"title":{},"content":{"49":{},"104":{},"213":{},"299":{}},"sidebarParentCategories":{}}],["linux",{"_index":423,"title":{"69":{},"137":{}},"content":{"41":{},"49":{},"69":{},"70":{},"73":{},"74":{},"135":{}},"sidebarParentCategories":{}}],["list",{"_index":392,"title":{},"content":{"38":{},"104":{},"106":{},"112":{},"175":{},"211":{},"291":{}},"sidebarParentCategories":{}}],["listen",{"_index":1074,"title":{"171":{},"177":{}},"content":{"171":{},"177":{},"179":{},"213":{}},"sidebarParentCategories":{}}],["lo",{"_index":652,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["load",{"_index":666,"title":{},"content":{"91":{},"136":{}},"sidebarParentCategories":{}}],["loadpostgresplugin",{"_index":1228,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["loadpostgresplugin(storageconfig.config",{"_index":1237,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["local",{"_index":1134,"title":{},"content":{"134":{},"175":{}},"sidebarParentCategories":{}}],["localhost:5432",{"_index":1231,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["locat",{"_index":170,"title":{},"content":{"9":{},"49":{},"64":{},"75":{},"89":{},"91":{},"110":{},"150":{},"187":{}},"sidebarParentCategories":{}}],["log",{"_index":920,"title":{"130":{},"133":{}},"content":{"116":{},"131":{},"133":{}},"sidebarParentCategories":{}}],["logger",{"_index":916,"title":{"116":{},"132":{}},"content":{"116":{},"131":{},"132":{},"133":{}},"sidebarParentCategories":{}}],["logic",{"_index":1092,"title":{},"content":{"171":{},"172":{},"177":{},"179":{}},"sidebarParentCategories":{}}],["loglevel",{"_index":921,"title":{},"content":{"116":{},"131":{},"132":{}},"sidebarParentCategories":{}}],["loglevel.off",{"_index":1009,"title":{},"content":{"132":{}},"sidebarParentCategories":{}}],["long",{"_index":864,"title":{},"content":{"105":{},"107":{}},"sidebarParentCategories":{}}],["look",{"_index":290,"title":{},"content":{"22":{},"42":{},"78":{}},"sidebarParentCategories":{}}],["loos",{"_index":184,"title":{},"content":{"10":{}},"sidebarParentCategories":{}}],["lot",{"_index":20,"title":{},"content":{"1":{},"4":{},"211":{},"215":{},"291":{},"298":{}},"sidebarParentCategories":{}}],["lower",{"_index":464,"title":{},"content":{"49":{},"58":{},"64":{},"75":{},"115":{}},"sidebarParentCategories":{}}],["luckili",{"_index":13,"title":{},"content":{"1":{},"166":{}},"sidebarParentCategories":{}}],["m1",{"_index":437,"title":{},"content":{"43":{}},"sidebarParentCategories":{}}],["machin",{"_index":367,"title":{},"content":{"36":{}},"sidebarParentCategories":{}}],["maco",{"_index":468,"title":{"152":{}},"content":{"49":{},"58":{},"135":{}},"sidebarParentCategories":{}}],["made",{"_index":492,"title":{},"content":{"58":{},"166":{},"187":{},"211":{},"212":{},"213":{},"291":{},"299":{}},"sidebarParentCategories":{}}],["main",{"_index":15,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["mainacm",{"_index":1048,"title":{},"content":{"169":{},"172":{}},"sidebarParentCategories":{}}],["mainact",{"_index":573,"title":{},"content":{"68":{},"91":{}},"sidebarParentCategories":{}}],["mainactivity.java",{"_index":667,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["mainbob",{"_index":1041,"title":{},"content":{"169":{},"172":{}},"sidebarParentCategories":{}}],["mainli",{"_index":1792,"title":{},"content":{"300":{}},"sidebarParentCategories":{}}],["maintain",{"_index":75,"title":{},"content":{"1":{},"22":{}},"sidebarParentCategories":{}}],["major",{"_index":361,"title":{},"content":{"33":{},"163":{}},"sidebarParentCategories":{}}],["make",{"_index":17,"title":{},"content":{"1":{},"33":{},"81":{},"99":{},"115":{},"146":{},"159":{},"161":{},"162":{},"164":{},"175":{},"176":{},"187":{},"210":{},"211":{},"212":{},"218":{},"290":{},"291":{},"297":{},"299":{}},"sidebarParentCategories":{}}],["manag",{"_index":343,"title":{},"content":{"32":{},"45":{},"56":{},"62":{},"71":{},"138":{},"143":{},"157":{},"159":{},"160":{},"182":{}},"sidebarParentCategories":{}}],["mani",{"_index":165,"title":{},"content":{"9":{},"75":{},"126":{},"215":{}},"sidebarParentCategories":{}}],["manual",{"_index":718,"title":{"184":{}},"content":{"77":{},"120":{},"159":{},"160":{},"182":{},"183":{},"184":{},"185":{},"210":{},"290":{}},"sidebarParentCategories":{}}],["mark",{"_index":1715,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["match",{"_index":1404,"title":{},"content":{"212":{},"218":{},"295":{}},"sidebarParentCategories":{}}],["maven",{"_index":601,"title":{"89":{}},"content":{"89":{}},"sidebarParentCategories":{}}],["max",{"_index":439,"title":{},"content":{"43":{}},"sidebarParentCategories":{}}],["maximummessagepickup",{"_index":989,"title":{"126":{}},"content":{"126":{}},"sidebarParentCategories":{}}],["mean",{"_index":148,"title":{},"content":{"4":{},"5":{},"8":{},"75":{},"163":{},"165":{},"184":{},"185":{},"186":{},"212":{},"218":{},"220":{},"299":{}},"sidebarParentCategories":{}}],["mechan",{"_index":226,"title":{},"content":{"4":{},"112":{},"113":{},"114":{},"219":{},"299":{}},"sidebarParentCategories":{}}],["mediat",{"_index":347,"title":{"218":{}},"content":{"32":{},"83":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"169":{},"172":{},"175":{},"179":{},"218":{},"302":{}},"sidebarParentCategories":{}}],["mediationrole.medi",{"_index":1531,"title":{},"content":{"218":{}},"sidebarParentCategories":{}}],["mediationrole.recipi",{"_index":1541,"title":{},"content":{"218":{}},"sidebarParentCategories":{}}],["mediationroleupdatestrategi",{"_index":1327,"title":{},"content":{"184":{},"185":{},"215":{}},"sidebarParentCategories":{}}],["mediatorconnectionsinvit",{"_index":956,"title":{"121":{}},"content":{"121":{},"122":{},"123":{}},"sidebarParentCategories":{}}],["mediatormodul",{"_index":955,"title":{},"content":{"120":{}},"sidebarParentCategories":{}}],["mediatorpickupstrategi",{"_index":979,"title":{},"content":{"125":{}},"sidebarParentCategories":{}}],["mediatorpickupstrategy.implicit",{"_index":986,"title":{},"content":{"125":{}},"sidebarParentCategories":{}}],["mediatorpickupstrategy.pickupv1",{"_index":982,"title":{},"content":{"125":{}},"sidebarParentCategories":{}}],["mediatorpickupstrategy.pickupv2",{"_index":984,"title":{},"content":{"125":{},"126":{}},"sidebarParentCategories":{}}],["mediatorpickupstrateri",{"_index":975,"title":{"125":{}},"content":{},"sidebarParentCategories":{}}],["mediatorpollinginterv",{"_index":970,"title":{"124":{}},"content":{"124":{}},"sidebarParentCategories":{}}],["meet",{"_index":275,"title":{},"content":{"21":{}},"sidebarParentCategories":{}}],["member",{"_index":840,"title":{},"content":{"102":{},"117":{},"118":{},"119":{},"125":{}},"sidebarParentCategories":{}}],["mention",{"_index":233,"title":{},"content":{"5":{},"75":{},"165":{},"166":{}},"sidebarParentCategories":{}}],["menu",{"_index":1613,"title":{},"content":{"294":{}},"sidebarParentCategories":{}}],["mere",{"_index":1451,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["messag",{"_index":152,"title":{"214":{}},"content":{"4":{},"5":{},"8":{},"10":{},"20":{},"48":{},"68":{},"74":{},"117":{},"125":{},"133":{},"168":{},"171":{},"172":{},"179":{},"211":{},"212":{},"214":{},"217":{},"220":{},"297":{},"298":{},"299":{},"301":{}},"sidebarParentCategories":{}}],["message.id",{"_index":1739,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["messagecontext",{"_index":1729,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["messagecontext.agentcontext",{"_index":1731,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["messagecontext.message.id",{"_index":1746,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["messagecontext.message.thread?.parentthreadid",{"_index":1747,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["messagehandl",{"_index":1709,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["messagehandlerinboundmessag",{"_index":1712,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["messagehandlerinboundmessage(agentcontext",{"_index":1751,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["this.loglevel",{"_index":1010,"title":{},"content":{"132":{}},"sidebarParentCategories":{}}],["this.messagesend",{"_index":1776,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessag",{"_index":1765,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessagecontext",{"_index":1769,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(agentcontext",{"_index":1750,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(record",{"_index":1740,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["this.myrepository.save(messagecontext.agentcontext",{"_index":1753,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["this.myrepository.save(record",{"_index":1748,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["this.myservic",{"_index":1777,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["this.registerhandlers(messagehandlerregistri",{"_index":1779,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["those",{"_index":1588,"title":{},"content":{"221":{}},"sidebarParentCategories":{}}],["though",{"_index":1477,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["thread",{"_index":559,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["threadid",{"_index":1738,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["three",{"_index":125,"title":{},"content":{"8":{},"18":{},"183":{}},"sidebarParentCategories":{}}],["threshold",{"_index":1671,"title":{},"content":{"297":{}},"sidebarParentCategories":{}}],["through",{"_index":350,"title":{},"content":{"32":{},"42":{},"51":{},"78":{},"133":{},"212":{},"297":{}},"sidebarParentCategories":{}}],["throughout",{"_index":1433,"title":{},"content":{"212":{},"297":{}},"sidebarParentCategories":{}}],["throw",{"_index":1213,"title":{},"content":{"143":{},"150":{},"157":{},"181":{},"187":{},"218":{}},"sidebarParentCategories":{}}],["thrown",{"_index":1760,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["thu",{"_index":766,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["ti",{"_index":1689,"title":{},"content":{"298":{}},"sidebarParentCategories":{}}],["time",{"_index":1705,"title":{},"content":{"298":{}},"sidebarParentCategories":{}}],["timestamp",{"_index":1361,"title":{},"content":{"187":{}},"sidebarParentCategories":{}}],["tlsv1.2",{"_index":517,"title":{},"content":{"75":{}},"sidebarParentCategories":{}}],["todo",{"_index":473,"title":{},"content":{"49":{},"83":{},"103":{},"118":{},"119":{},"171":{}},"sidebarParentCategories":{}}],["togeth",{"_index":100,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["token",{"_index":321,"title":{},"content":{"28":{}},"sidebarParentCategories":{}}],["tool",{"_index":47,"title":{},"content":{"1":{},"5":{},"215":{},"300":{}},"sidebarParentCategories":{}}],["toolkit",{"_index":154,"title":{},"content":{"8":{},"23":{}},"sidebarParentCategories":{}}],["top",{"_index":79,"title":{},"content":{"1":{},"23":{}},"sidebarParentCategories":{}}],["trace(messag",{"_index":1014,"title":{},"content":{"132":{}},"sidebarParentCategories":{}}],["traffic",{"_index":782,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["transact",{"_index":895,"title":{},"content":{"110":{},"111":{},"112":{}},"sidebarParentCategories":{}}],["transactionauthoragr",{"_index":880,"title":{},"content":{"106":{},"112":{}},"sidebarParentCategories":{}}],["transform",{"_index":1452,"title":{},"content":{"213":{},"221":{}},"sidebarParentCategories":{}}],["transmit",{"_index":52,"title":{},"content":{"1":{},"170":{}},"sidebarParentCategories":{}}],["transport",{"_index":241,"title":{"83":{}},"content":{"5":{},"37":{},"83":{},"169":{},"172":{},"175":{},"179":{}},"sidebarParentCategories":{}}],["transportagent.registeroutboundtransport(new",{"_index":800,"title":{},"content":{"85":{}},"sidebarParentCategories":{}}],["transportsagent.registeroutboundtransport(new",{"_index":798,"title":{},"content":{"85":{}},"sidebarParentCategories":{}}],["tri",{"_index":587,"title":{},"content":{"68":{},"91":{},"152":{},"165":{},"211":{},"291":{}},"sidebarParentCategories":{}}],["trick",{"_index":768,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["true",{"_index":589,"title":{},"content":{"68":{},"77":{},"91":{},"115":{},"120":{},"123":{},"127":{},"129":{},"169":{},"170":{},"172":{},"175":{},"179":{},"186":{},"220":{},"295":{},"298":{}},"sidebarParentCategories":{}}],["ts",{"_index":748,"title":{},"content":{"81":{},"179":{}},"sidebarParentCategories":{}}],["tsx",{"_index":749,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["tunnel",{"_index":1132,"title":{},"content":{"175":{}},"sidebarParentCategories":{}}],["tutori",{"_index":87,"title":{"92":{}},"content":{"1":{},"82":{},"168":{},"169":{},"172":{},"174":{},"175":{},"292":{}},"sidebarParentCategories":{"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"134":{},"135":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{}}}],["two",{"_index":167,"title":{},"content":{"9":{},"164":{},"221":{},"294":{},"298":{}},"sidebarParentCategories":{}}],["type",{"_index":210,"title":{"164":{},"214":{}},"content":{"3":{},"82":{},"85":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"131":{},"136":{},"163":{},"211":{},"212":{},"214":{},"220":{},"297":{},"299":{},"302":{}},"sidebarParentCategories":{}}],["typescript",{"_index":61,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["ubuntu",{"_index":1244,"title":{"140":{}},"content":{},"sidebarParentCategories":{}}],["ui",{"_index":349,"title":{},"content":{"32":{}},"sidebarParentCategories":{}}],["under",{"_index":1129,"title":{},"content":{"175":{},"186":{}},"sidebarParentCategories":{}}],["underli",{"_index":1020,"title":{},"content":{"133":{}},"sidebarParentCategories":{}}],["understand",{"_index":107,"title":{},"content":{"13":{}},"sidebarParentCategories":{}}],["unifi",{"_index":1587,"title":{"221":{}},"content":{"295":{}},"sidebarParentCategories":{}}],["unimodul",{"_index":756,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["unimodules/cor",{"_index":759,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["unimodules/react",{"_index":757,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["uniqu",{"_index":141,"title":{},"content":{"8":{},"107":{},"112":{},"295":{}},"sidebarParentCategories":{}}],["unless",{"_index":1605,"title":{},"content":{"293":{}},"sidebarParentCategories":{}}],["unlock",{"_index":820,"title":{},"content":{"101":{}},"sidebarParentCategories":{}}],["unnam",{"_index":560,"title":{},"content":{"68":{}},"sidebarParentCategories":{}}],["unqualifi",{"_index":1554,"title":{},"content":{"219":{}},"sidebarParentCategories":{}}],["unrel",{"_index":1513,"title":{},"content":{"215":{},"300":{}},"sidebarParentCategories":{}}],["until",{"_index":1351,"title":{},"content":{"185":{},"212":{},"213":{},"220":{}},"sidebarParentCategories":{}}],["unzip",{"_index":633,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["up",{"_index":324,"title":{"82":{},"83":{},"169":{},"175":{}},"content":{"29":{},"30":{},"33":{},"39":{},"41":{},"42":{},"78":{},"83":{},"87":{},"92":{},"98":{},"109":{},"125":{},"128":{},"168":{},"174":{},"184":{},"185":{},"210":{},"290":{}},"sidebarParentCategories":{}}],["updat",{"_index":699,"title":{"159":{},"160":{},"182":{},"183":{},"184":{},"186":{},"214":{},"299":{}},"content":{"77":{},"129":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"210":{},"211":{},"212":{},"213":{},"215":{},"218":{},"219":{},"221":{},"290":{},"291":{},"292":{},"293":{},"297":{},"299":{},"300":{}},"sidebarParentCategories":{"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"210":{},"211":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"290":{},"291":{},"292":{},"293":{},"294":{},"295":{},"296":{},"297":{},"298":{},"299":{},"300":{},"301":{},"302":{},"303":{}}}],["updateassist",{"_index":1324,"title":{},"content":{"184":{},"185":{},"186":{}},"sidebarParentCategories":{}}],["updateassistant(ag",{"_index":1325,"title":{},"content":{"184":{},"185":{}},"sidebarParentCategories":{}}],["updateassistant.frameworkstoragevers",{"_index":1346,"title":{},"content":{"185":{}},"sidebarParentCategories":{}}],["updateassistant.getcurrentagentstoragevers",{"_index":1338,"title":{},"content":{"185":{}},"sidebarParentCategories":{}}],["updateassistant.initi",{"_index":1331,"title":{},"content":{"184":{},"185":{}},"sidebarParentCategories":{}}],["updateassistant.isuptod",{"_index":1332,"title":{},"content":{"184":{}},"sidebarParentCategories":{}}],["updateassistant.upd",{"_index":1333,"title":{},"content":{"184":{},"185":{}},"sidebarParentCategories":{}}],["upgrad",{"_index":1706,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["uppcj5apts7ot5wx25943f",{"_index":1563,"title":{},"content":{"219":{}},"sidebarParentCategories":{}}],["uri",{"_index":1507,"title":{},"content":{"214":{}},"sidebarParentCategories":{}}],["url",{"_index":602,"title":{},"content":{"89":{},"128":{},"136":{},"169":{},"170":{},"172":{},"175":{},"179":{},"213":{}},"sidebarParentCategories":{}}],["us",{"_index":58,"title":{"6":{},"11":{},"86":{},"131":{},"134":{},"136":{},"139":{},"154":{},"173":{},"180":{}},"content":{"1":{},"8":{},"10":{},"12":{},"13":{},"16":{},"23":{},"28":{},"29":{},"30":{},"32":{},"34":{},"36":{},"37":{},"39":{},"43":{},"46":{},"47":{},"48":{},"49":{},"51":{},"57":{},"58":{},"63":{},"64":{},"68":{},"72":{},"73":{},"74":{},"75":{},"80":{},"81":{},"82":{},"91":{},"92":{},"95":{},"98":{},"100":{},"102":{},"103":{},"104":{},"105":{},"106":{},"109":{},"116":{},"117":{},"118":{},"119":{},"121":{},"122":{},"125":{},"126":{},"127":{},"128":{},"129":{},"132":{},"134":{},"147":{},"163":{},"166":{},"169":{},"171":{},"172":{},"174":{},"175":{},"179":{},"186":{},"187":{},"212":{},"213":{},"214":{},"215":{},"217":{},"218":{},"219":{},"220":{},"293":{},"294":{},"295":{},"297":{},"298":{},"299":{},"300":{},"301":{},"302":{}},"sidebarParentCategories":{}}],["usag",{"_index":1089,"title":{"293":{}},"content":{"171":{},"172":{},"179":{},"219":{}},"sidebarParentCategories":{}}],["usedidkeyinprotocol",{"_index":1604,"title":{},"content":{"293":{}},"sidebarParentCategories":{}}],["uselegacydidsovprefix",{"_index":994,"title":{"127":{}},"content":{"127":{}},"sidebarParentCategories":{}}],["user",{"_index":78,"title":{},"content":{"1":{},"34":{},"98":{},"107":{},"128":{},"163":{},"177":{}},"sidebarParentCategories":{}}],["usr/lib/libindy.so",{"_index":534,"title":{},"content":{"75":{}},"sidebarParentCategories":{}}],["usr/local/lib",{"_index":488,"title":{},"content":{"49":{}},"sidebarParentCategories":{}}],["usr/local/lib/libindystrgpostgres.dylib",{"_index":1260,"title":{},"content":{"158":{}},"sidebarParentCategories":{}}],["usr/local/lib/libindystrgpostgres.so",{"_index":1257,"title":{},"content":{"144":{}},"sidebarParentCategories":{}}],["util",{"_index":1494,"title":{},"content":{"214":{}},"sidebarParentCategories":{}}],["uuid",{"_index":1802,"title":{},"content":{"303":{}},"sidebarParentCategories":{}}],["v0.3.0",{"_index":1208,"title":{},"content":{"181":{}},"sidebarParentCategories":{}}],["v0_1tov0_2",{"_index":1326,"title":{},"content":{"184":{},"185":{},"215":{}},"sidebarParentCategories":{}}],["v0_1tov0_2.mediationroleupdatestrategi",{"_index":1539,"title":{},"content":{"218":{}},"sidebarParentCategories":{}}],["v1",{"_index":237,"title":{},"content":{"5":{},"174":{},"178":{},"179":{},"180":{},"212":{},"217":{},"295":{},"297":{},"298":{},"301":{}},"sidebarParentCategories":{}}],["v1proposecredentialmessag",{"_index":1431,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["v1requestpresentationmessag",{"_index":1676,"title":{},"content":{"297":{}},"sidebarParentCategories":{}}],["v1xxxmessag",{"_index":1444,"title":{},"content":{"212":{},"297":{}},"sidebarParentCategories":{}}],["v2",{"_index":985,"title":{},"content":{"125":{},"174":{},"180":{},"212":{},"217":{},"295":{},"297":{}},"sidebarParentCategories":{}}],["v2proposecredentialmessag",{"_index":1432,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["v2requestpresentationmessag",{"_index":1677,"title":{},"content":{"297":{}},"sidebarParentCategories":{}}],["v2xxxmessag",{"_index":1445,"title":{},"content":{"212":{},"297":{}},"sidebarParentCategories":{}}],["v7a",{"_index":625,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["v7a/libindy.so",{"_index":641,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["v7a/libjnidispatch.so",{"_index":661,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["v8a",{"_index":623,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["v8a/libindy.so",{"_index":635,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["v8a/libjnidispatch.so",{"_index":659,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["valid",{"_index":230,"title":{},"content":{"4":{},"35":{},"79":{},"118":{},"119":{},"168":{},"174":{},"214":{}},"sidebarParentCategories":{}}],["validrespons",{"_index":1622,"title":{},"content":{"294":{}},"sidebarParentCategories":{}}],["valu",{"_index":543,"title":{},"content":{"64":{},"68":{},"80":{},"81":{},"100":{},"101":{},"105":{},"114":{},"177":{},"178":{},"179":{},"212":{},"213":{},"216":{},"221":{},"297":{}},"sidebarParentCategories":{}}],["vari",{"_index":1039,"title":{},"content":{"169":{},"175":{}},"sidebarParentCategories":{}}],["variabl",{"_index":539,"title":{},"content":{"64":{},"133":{}},"sidebarParentCategories":{}}],["variables:set",{"_index":1264,"title":{},"content":{"147":{}},"sidebarParentCategories":{}}],["variant",{"_index":1135,"title":{},"content":{"175":{}},"sidebarParentCategories":{}}],["variou",{"_index":255,"title":{},"content":{"17":{}},"sidebarParentCategories":{}}],["veri",{"_index":414,"title":{},"content":{"42":{},"78":{},"97":{},"171":{},"175":{}},"sidebarParentCategories":{}}],["verifi",{"_index":29,"title":{},"content":{"1":{},"3":{},"8":{},"12":{},"13":{},"16":{},"51":{},"92":{},"168":{},"171":{},"176":{}},"sidebarParentCategories":{}}],["verkey",{"_index":1564,"title":{},"content":{"219":{}},"sidebarParentCategories":{}}],["version",{"_index":305,"title":{"88":{},"163":{},"185":{}},"content":{"23":{},"77":{},"88":{},"91":{},"106":{},"112":{},"113":{},"129":{},"159":{},"160":{},"163":{},"165":{},"166":{},"176":{},"179":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"210":{},"211":{},"212":{},"213":{},"214":{},"217":{},"219":{},"290":{},"291":{},"295":{},"297":{},"301":{}},"sidebarParentCategories":{}}],["versionstr",{"_index":1342,"title":{},"content":{"185":{}},"sidebarParentCategories":{}}],["via",{"_index":121,"title":{},"content":{"5":{},"7":{},"8":{},"43":{},"54":{},"102":{},"118":{},"119":{},"120":{},"175":{}},"sidebarParentCategories":{}}],["view",{"_index":72,"title":{},"content":{"1":{},"37":{},"212":{}},"sidebarParentCategories":{}}],["visual",{"_index":1261,"title":{},"content":{"146":{}},"sidebarParentCategories":{}}],["void",{"_index":579,"title":{},"content":{"68":{},"91":{},"132":{},"171":{},"172":{}},"sidebarParentCategories":{}}],["walk",{"_index":404,"title":{},"content":{"51":{}},"sidebarParentCategories":{}}],["wallet",{"_index":172,"title":{},"content":{"9":{},"10":{},"37":{},"82":{},"85":{},"99":{},"100":{},"101":{},"103":{},"104":{},"136":{},"169":{},"172":{},"174":{},"175":{},"179":{},"181":{},"184":{},"185":{},"187":{},"296":{}},"sidebarParentCategories":{}}],["wallet_schem",{"_index":1232,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["walletconfig",{"_index":777,"title":{"99":{}},"content":{"82":{},"85":{},"99":{},"136":{},"169":{},"172":{},"175":{},"179":{}},"sidebarParentCategories":{}}],["walletconfig.id",{"_index":818,"title":{"100":{}},"content":{"136":{}},"sidebarParentCategories":{}}],["walletconfig.key",{"_index":819,"title":{"101":{}},"content":{"102":{},"136":{},"172":{},"179":{}},"sidebarParentCategories":{}}],["walletconfig.keyderivationmethod",{"_index":825,"title":{"102":{}},"content":{},"sidebarParentCategories":{}}],["walletconfig.storag",{"_index":848,"title":{"103":{}},"content":{},"sidebarParentCategories":{}}],["walletid",{"_index":375,"title":{},"content":{"37":{},"136":{}},"sidebarParentCategories":{}}],["walletkey",{"_index":376,"title":{},"content":{"37":{}},"sidebarParentCategories":{}}],["walletschem",{"_index":1229,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["walletscheme.databaseperwallet",{"_index":1233,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["want",{"_index":416,"title":{},"content":{"42":{},"68":{},"78":{},"134":{},"171":{},"175":{},"176":{},"177":{},"213":{},"294":{},"298":{},"299":{}},"sidebarParentCategories":{}}],["warn",{"_index":1029,"title":{},"content":{"133":{}},"sidebarParentCategories":{}}],["warn(messag",{"_index":1017,"title":{},"content":{"132":{}},"sidebarParentCategories":{}}],["way",{"_index":6,"title":{},"content":{"1":{},"28":{},"33":{},"34":{},"36":{},"68":{},"83":{},"133":{},"159":{},"160":{},"171":{},"182":{},"186":{},"214":{},"297":{},"298":{},"299":{}},"sidebarParentCategories":{}}],["we'll",{"_index":258,"title":{},"content":{"17":{},"51":{},"165":{},"184":{}},"sidebarParentCategories":{}}],["we'v",{"_index":1316,"title":{},"content":{"166":{},"212":{},"214":{},"299":{}},"sidebarParentCategories":{}}],["websit",{"_index":854,"title":{},"content":{"104":{}},"sidebarParentCategories":{}}],["websocket",{"_index":248,"title":{},"content":{"5":{},"33":{},"83":{},"125":{},"169":{},"172":{},"175":{},"179":{}},"sidebarParentCategories":{}}],["weekli",{"_index":274,"title":{},"content":{"21":{}},"sidebarParentCategories":{}}],["welcom",{"_index":1,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["well",{"_index":63,"title":{},"content":{"1":{},"103":{},"213":{}},"sidebarParentCategories":{}}],["whether",{"_index":19,"title":{},"content":{"1":{},"50":{},"59":{},"65":{},"76":{},"109":{},"115":{},"118":{},"119":{},"120":{},"123":{},"127":{},"129":{},"184":{},"212":{},"218":{}},"sidebarParentCategories":{}}],["whose",{"_index":1630,"title":{},"content":{"295":{}},"sidebarParentCategories":{}}],["window",{"_index":424,"title":{"60":{},"145":{}},"content":{"41":{},"135":{},"146":{},"150":{},"151":{}},"sidebarParentCategories":{}}],["wire",{"_index":933,"title":{},"content":{"117":{}},"sidebarParentCategories":{}}],["without",{"_index":810,"title":{},"content":{"99":{},"163":{},"181":{},"212":{},"215":{},"300":{}},"sidebarParentCategories":{}}],["won't",{"_index":1024,"title":{},"content":{"133":{},"187":{},"213":{}},"sidebarParentCategories":{}}],["work",{"_index":8,"title":{},"content":{"1":{},"5":{},"7":{},"13":{},"14":{},"21":{},"41":{},"42":{},"51":{},"78":{},"81":{},"91":{},"133":{},"159":{},"161":{},"162":{},"164":{},"169":{},"175":{},"210":{},"212":{},"221":{},"290":{},"295":{},"297":{}},"sidebarParentCategories":{}}],["workflow",{"_index":1217,"title":{},"content":{"181":{},"184":{}},"sidebarParentCategories":{}}],["world",{"_index":188,"title":{},"content":{"10":{}},"sidebarParentCategories":{}}],["worri",{"_index":1406,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["worth",{"_index":1724,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["wrapper",{"_index":304,"title":{},"content":{"23":{},"133":{}},"sidebarParentCategories":{}}],["written",{"_index":60,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["wrong",{"_index":1535,"title":{},"content":{"218":{}},"sidebarParentCategories":{}}],["wsoutboundtransport",{"_index":784,"title":{},"content":{"83":{},"85":{},"169":{},"172":{},"175":{},"179":{}},"sidebarParentCategories":{}}],["wsoutboundtransport())agent.registeroutboundtransport(new",{"_index":790,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["x86",{"_index":642,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["x86.jar",{"_index":662,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["x86.zip",{"_index":644,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["x86_64",{"_index":647,"title":{},"content":{"91":{},"150":{}},"sidebarParentCategories":{}}],["x86_64.zip",{"_index":649,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["xf",{"_index":657,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["y",{"_index":504,"title":{},"content":{"70":{}},"sidebarParentCategories":{}}],["yarn",{"_index":329,"title":{"46":{},"57":{},"63":{},"72":{}},"content":{"29":{},"31":{},"40":{},"41":{},"46":{},"57":{},"63":{},"72":{},"80":{},"81":{},"175":{},"210":{},"290":{}},"sidebarParentCategories":{}}],["ye",{"_index":701,"title":{},"content":{"77":{},"294":{}},"sidebarParentCategories":{}}],["you'll",{"_index":83,"title":{},"content":{"1":{},"299":{}},"sidebarParentCategories":{}}],["you'r",{"_index":411,"title":{},"content":{"42":{},"78":{},"81":{},"159":{},"161":{},"162":{},"210":{},"213":{},"290":{}},"sidebarParentCategories":{}}],["yourself",{"_index":37,"title":{},"content":{"1":{},"184":{},"185":{},"214":{}},"sidebarParentCategories":{}}],["yum",{"_index":507,"title":{},"content":{"70":{},"73":{},"74":{}},"sidebarParentCategories":{}}],["zeromq",{"_index":463,"title":{},"content":{"48":{},"74":{},"154":{}},"sidebarParentCategories":{}}],["zip",{"_index":1241,"title":{},"content":{"138":{},"153":{}},"sidebarParentCategories":{}}]],"pipeline":["stemmer"]}} \ No newline at end of file diff --git a/search-index-docs-default-0.4.json b/search-index-docs-default-0.4.json index 688fe82b..cde19894 100644 --- a/search-index-docs-default-0.4.json +++ b/search-index-docs-default-0.4.json @@ -1 +1 @@ -{"documents":[{"id":442,"pageTitle":"","sectionTitle":"Intro","sectionRoute":"/guides","type":"docs"},{"id":455,"pageTitle":"","sectionTitle":"Concepts","sectionRoute":"/guides/concepts","type":"docs"},{"id":456,"pageTitle":"","sectionTitle":"📄️ Agents","sectionRoute":"/guides/concepts","type":"docs"},{"id":457,"pageTitle":"","sectionTitle":"📄️ DIDs and DIDComm","sectionRoute":"/guides/concepts","type":"docs"},{"id":458,"pageTitle":"","sectionTitle":"📄️ Platform and Environment","sectionRoute":"/guides/concepts","type":"docs"},{"id":477,"pageTitle":"","sectionTitle":"Agents","sectionRoute":"/guides/concepts/agents","type":"docs"},{"id":478,"pageTitle":"","sectionTitle":"Characteristics","sectionRoute":"/guides/concepts/agents#characteristics","type":"docs"},{"id":479,"pageTitle":"","sectionTitle":"Categories","sectionRoute":"/guides/concepts/agents#categories","type":"docs"},{"id":480,"pageTitle":"","sectionTitle":"Examples","sectionRoute":"/guides/concepts/agents#examples","type":"docs"},{"id":481,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/concepts/agents#useful-resources","type":"docs"},{"id":482,"pageTitle":"","sectionTitle":"DIDs and DIDComm","sectionRoute":"/guides/concepts/did-and-didcomm","type":"docs"},{"id":483,"pageTitle":"","sectionTitle":"DIDs","sectionRoute":"/guides/concepts/did-and-didcomm#dids","type":"docs"},{"id":484,"pageTitle":"","sectionTitle":"DID Documents","sectionRoute":"/guides/concepts/did-and-didcomm#did-documents","type":"docs"},{"id":485,"pageTitle":"","sectionTitle":"DIDComm","sectionRoute":"/guides/concepts/did-and-didcomm#didcomm","type":"docs"},{"id":486,"pageTitle":"","sectionTitle":"Useful Resources","sectionRoute":"/guides/concepts/did-and-didcomm#useful-resources","type":"docs"},{"id":487,"pageTitle":"","sectionTitle":"Platform and Environment","sectionRoute":"/guides/concepts/platform-and-environment","type":"docs"},{"id":493,"pageTitle":"","sectionTitle":"The Aries JavaScript Ecosystem","sectionRoute":"/guides/ecosystem","type":"docs"},{"id":494,"pageTitle":"","sectionTitle":"Repositories","sectionRoute":"/guides/ecosystem#repositories","type":"docs"},{"id":495,"pageTitle":"","sectionTitle":"Documentation","sectionRoute":"/guides/ecosystem#documentation","type":"docs"},{"id":496,"pageTitle":"","sectionTitle":"Aries Framework JavaScript","sectionRoute":"/guides/ecosystem#aries-framework-javascript","type":"docs"},{"id":497,"pageTitle":"","sectionTitle":"Contributing in the Aries JS Ecosystem","sectionRoute":"/guides/ecosystem#contributing-in-the-aries-js-ecosystem","type":"docs"},{"id":498,"pageTitle":"","sectionTitle":"Developer Contributions","sectionRoute":"/guides/ecosystem#developer-contributions","type":"docs"},{"id":488,"pageTitle":"","sectionTitle":"Extensions","sectionRoute":"/guides/extensions","type":"docs"},{"id":489,"pageTitle":"","sectionTitle":"📄️ REST API","sectionRoute":"/guides/extensions","type":"docs"},{"id":490,"pageTitle":"","sectionTitle":"📄️ React Hooks","sectionRoute":"/guides/extensions","type":"docs"},{"id":491,"pageTitle":"","sectionTitle":"📄️ Redux Store","sectionRoute":"/guides/extensions","type":"docs"},{"id":492,"pageTitle":"","sectionTitle":"📄️ Push Notifications","sectionRoute":"/guides/extensions","type":"docs"},{"id":499,"pageTitle":"","sectionTitle":"Push Notifications","sectionRoute":"/guides/extensions/push-notifications","type":"docs"},{"id":500,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/extensions/push-notifications#installation","type":"docs"},{"id":506,"pageTitle":"","sectionTitle":"React Hooks","sectionRoute":"/guides/extensions/react-hooks","type":"docs"},{"id":507,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/extensions/react-hooks#installation","type":"docs"},{"id":508,"pageTitle":"","sectionTitle":"Usage","sectionRoute":"/guides/extensions/react-hooks#usage","type":"docs"},{"id":501,"pageTitle":"","sectionTitle":"Redux Store","sectionRoute":"/guides/extensions/redux-store","type":"docs"},{"id":502,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/extensions/redux-store#installation","type":"docs"},{"id":509,"pageTitle":"","sectionTitle":"REST API","sectionRoute":"/guides/extensions/rest","type":"docs"},{"id":510,"pageTitle":"","sectionTitle":"Quick Setup","sectionRoute":"/guides/extensions/rest#quick-setup","type":"docs"},{"id":511,"pageTitle":"","sectionTitle":"Directly on computer","sectionRoute":"/guides/extensions/rest#directly-on-computer","type":"docs"},{"id":512,"pageTitle":"","sectionTitle":"Configuration","sectionRoute":"/guides/extensions/rest#configuration","type":"docs"},{"id":503,"pageTitle":"","sectionTitle":"Getting started","sectionRoute":"/guides/getting-started","type":"docs"},{"id":504,"pageTitle":"","sectionTitle":"📄️ Prerequisites","sectionRoute":"/guides/getting-started","type":"docs"},{"id":505,"pageTitle":"","sectionTitle":"🗃️ Agent Setup","sectionRoute":"/guides/getting-started","type":"docs"},{"id":513,"pageTitle":"","sectionTitle":"Prerequisites","sectionRoute":"/guides/getting-started/prerequisites","type":"docs"},{"id":514,"pageTitle":"","sectionTitle":"Node.JS","sectionRoute":"/guides/getting-started/prerequisites#nodejs","type":"docs"},{"id":515,"pageTitle":"","sectionTitle":"NPM","sectionRoute":"/guides/getting-started/prerequisites#npm","type":"docs"},{"id":516,"pageTitle":"","sectionTitle":"Yarn","sectionRoute":"/guides/getting-started/prerequisites#yarn","type":"docs"},{"id":517,"pageTitle":"","sectionTitle":"Project Setup","sectionRoute":"/guides/getting-started/prerequisites#project-setup","type":"docs"},{"id":518,"pageTitle":"","sectionTitle":"Agent Setup","sectionRoute":"/guides/getting-started/set-up","type":"docs"},{"id":519,"pageTitle":"","sectionTitle":"Installing the required dependencies","sectionRoute":"/guides/getting-started/set-up#installing-the-required-dependencies","type":"docs"},{"id":520,"pageTitle":"","sectionTitle":"Additional setup","sectionRoute":"/guides/getting-started/set-up#additional-setup","type":"docs"},{"id":521,"pageTitle":"","sectionTitle":"Setting up the agent","sectionRoute":"/guides/getting-started/set-up#setting-up-the-agent","type":"docs"},{"id":522,"pageTitle":"","sectionTitle":"Adding a wallet and storage implementation","sectionRoute":"/guides/getting-started/set-up#adding-a-wallet-and-storage-implementation","type":"docs"},{"id":523,"pageTitle":"","sectionTitle":"📄️ Aries Askar","sectionRoute":"/guides/getting-started/set-up","type":"docs"},{"id":524,"pageTitle":"","sectionTitle":"📄️ Indy SDK","sectionRoute":"/guides/getting-started/set-up","type":"docs"},{"id":525,"pageTitle":"","sectionTitle":"Setting up the transports","sectionRoute":"/guides/getting-started/set-up#setting-up-the-transports","type":"docs"},{"id":526,"pageTitle":"","sectionTitle":"Initializing the agent","sectionRoute":"/guides/getting-started/set-up#initializing-the-agent","type":"docs"},{"id":527,"pageTitle":"","sectionTitle":"Next Steps","sectionRoute":"/guides/getting-started/set-up#next-steps","type":"docs"},{"id":528,"pageTitle":"","sectionTitle":"📄️ Tutorials","sectionRoute":"/guides/getting-started/set-up","type":"docs"},{"id":529,"pageTitle":"","sectionTitle":"📄️ Create a Connection","sectionRoute":"/guides/getting-started/set-up","type":"docs"},{"id":530,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/getting-started/set-up#useful-resources","type":"docs"},{"id":535,"pageTitle":"","sectionTitle":"AnonCreds RS","sectionRoute":"/guides/getting-started/set-up/anoncreds-rs","type":"docs"},{"id":536,"pageTitle":"","sectionTitle":"Installing AnonCreds RS","sectionRoute":"/guides/getting-started/set-up/anoncreds-rs#installing-anoncreds-rs","type":"docs"},{"id":537,"pageTitle":"","sectionTitle":"Adding AnonCreds RS to the agent","sectionRoute":"/guides/getting-started/set-up/anoncreds-rs#adding-anoncreds-rs-to-the-agent","type":"docs"},{"id":538,"pageTitle":"","sectionTitle":"Configuration","sectionRoute":"/guides/getting-started/set-up/anoncreds-rs#configuration","type":"docs"},{"id":539,"pageTitle":"","sectionTitle":"Supported Node.JS versions for AnonCreds RS","sectionRoute":"/guides/getting-started/set-up/anoncreds-rs#supported-nodejs-versions-for-anoncreds-rs","type":"docs"},{"id":531,"pageTitle":"","sectionTitle":"Aries Askar","sectionRoute":"/guides/getting-started/set-up/aries-askar","type":"docs"},{"id":532,"pageTitle":"","sectionTitle":"Installing Aries Askar","sectionRoute":"/guides/getting-started/set-up/aries-askar#installing-aries-askar","type":"docs"},{"id":533,"pageTitle":"","sectionTitle":"Adding Aries Askar to the Agent","sectionRoute":"/guides/getting-started/set-up/aries-askar#adding-aries-askar-to-the-agent","type":"docs"},{"id":534,"pageTitle":"","sectionTitle":"Supported Node.JS versions for Aries Askar","sectionRoute":"/guides/getting-started/set-up/aries-askar#supported-nodejs-versions-for-aries-askar","type":"docs"},{"id":540,"pageTitle":"","sectionTitle":"cheqd","sectionRoute":"/guides/getting-started/set-up/cheqd","type":"docs"},{"id":541,"pageTitle":"","sectionTitle":"Installing cheqd","sectionRoute":"/guides/getting-started/set-up/cheqd#installing-cheqd","type":"docs"},{"id":542,"pageTitle":"","sectionTitle":"Adding the cheqd to the Agent","sectionRoute":"/guides/getting-started/set-up/cheqd#adding-the-cheqd-to-the-agent","type":"docs"},{"id":543,"pageTitle":"","sectionTitle":"Indy SDK","sectionRoute":"/guides/getting-started/set-up/indy-sdk","type":"docs"},{"id":544,"pageTitle":"","sectionTitle":"Installing the Indy SDK","sectionRoute":"/guides/getting-started/set-up/indy-sdk#installing-the-indy-sdk","type":"docs"},{"id":545,"pageTitle":"","sectionTitle":"📄️ Linux","sectionRoute":"/guides/getting-started/set-up/indy-sdk","type":"docs"},{"id":546,"pageTitle":"","sectionTitle":"📄️ Windows","sectionRoute":"/guides/getting-started/set-up/indy-sdk","type":"docs"},{"id":547,"pageTitle":"","sectionTitle":"📄️ macOS (Intel)","sectionRoute":"/guides/getting-started/set-up/indy-sdk","type":"docs"},{"id":548,"pageTitle":"","sectionTitle":"📄️ macOS (ARM)","sectionRoute":"/guides/getting-started/set-up/indy-sdk","type":"docs"},{"id":549,"pageTitle":"","sectionTitle":"📄️ React Native","sectionRoute":"/guides/getting-started/set-up/indy-sdk","type":"docs"},{"id":550,"pageTitle":"","sectionTitle":"Adding the Indy SDK to the Agent","sectionRoute":"/guides/getting-started/set-up/indy-sdk#adding-the-indy-sdk-to-the-agent","type":"docs"},{"id":551,"pageTitle":"","sectionTitle":"Linux","sectionRoute":"/guides/getting-started/set-up/indy-sdk/linux","type":"docs"},{"id":552,"pageTitle":"","sectionTitle":"Libsodium","sectionRoute":"/guides/getting-started/set-up/indy-sdk/linux#libsodium","type":"docs"},{"id":553,"pageTitle":"","sectionTitle":"Libzmq","sectionRoute":"/guides/getting-started/set-up/indy-sdk/linux#libzmq","type":"docs"},{"id":554,"pageTitle":"","sectionTitle":"Indy SDK","sectionRoute":"/guides/getting-started/set-up/indy-sdk/linux#indy-sdk","type":"docs"},{"id":555,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/getting-started/set-up/indy-sdk/linux#confirm-installation","type":"docs"},{"id":556,"pageTitle":"","sectionTitle":"macOS (ARM)","sectionRoute":"/guides/getting-started/set-up/indy-sdk/macos-arm","type":"docs"},{"id":557,"pageTitle":"","sectionTitle":"Libsodium","sectionRoute":"/guides/getting-started/set-up/indy-sdk/macos-arm#libsodium","type":"docs"},{"id":558,"pageTitle":"","sectionTitle":"Libzmq","sectionRoute":"/guides/getting-started/set-up/indy-sdk/macos-arm#libzmq","type":"docs"},{"id":559,"pageTitle":"","sectionTitle":"Indy SDK","sectionRoute":"/guides/getting-started/set-up/indy-sdk/macos-arm#indy-sdk","type":"docs"},{"id":560,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/getting-started/set-up/indy-sdk/macos-arm#confirm-installation","type":"docs"},{"id":564,"pageTitle":"","sectionTitle":"macOS (Intel)","sectionRoute":"/guides/getting-started/set-up/indy-sdk/macos-intel","type":"docs"},{"id":565,"pageTitle":"","sectionTitle":"Indy SDK","sectionRoute":"/guides/getting-started/set-up/indy-sdk/macos-intel#indy-sdk","type":"docs"},{"id":566,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/getting-started/set-up/indy-sdk/macos-intel#confirm-installation","type":"docs"},{"id":561,"pageTitle":"","sectionTitle":"React Native","sectionRoute":"/guides/getting-started/set-up/indy-sdk/react-native","type":"docs"},{"id":562,"pageTitle":"","sectionTitle":"Expo","sectionRoute":"/guides/getting-started/set-up/indy-sdk/react-native#expo","type":"docs"},{"id":563,"pageTitle":"","sectionTitle":"Without Expo","sectionRoute":"/guides/getting-started/set-up/indy-sdk/react-native#without-expo","type":"docs"},{"id":567,"pageTitle":"","sectionTitle":"Windows","sectionRoute":"/guides/getting-started/set-up/indy-sdk/windows","type":"docs"},{"id":568,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/getting-started/set-up/indy-sdk/windows#confirm-installation","type":"docs"},{"id":577,"pageTitle":"","sectionTitle":"Indy VDR","sectionRoute":"/guides/getting-started/set-up/indy-vdr","type":"docs"},{"id":578,"pageTitle":"","sectionTitle":"Installing Indy VDR","sectionRoute":"/guides/getting-started/set-up/indy-vdr#installing-indy-vdr","type":"docs"},{"id":579,"pageTitle":"","sectionTitle":"Adding Indy VDR to the agent","sectionRoute":"/guides/getting-started/set-up/indy-vdr#adding-indy-vdr-to-the-agent","type":"docs"},{"id":580,"pageTitle":"","sectionTitle":"Configuration","sectionRoute":"/guides/getting-started/set-up/indy-vdr#configuration","type":"docs"},{"id":581,"pageTitle":"","sectionTitle":"Supported Node.JS versions for Indy VDR","sectionRoute":"/guides/getting-started/set-up/indy-vdr#supported-nodejs-versions-for-indy-vdr","type":"docs"},{"id":569,"pageTitle":"","sectionTitle":"Tutorials","sectionRoute":"/guides/tutorials","type":"docs"},{"id":570,"pageTitle":"","sectionTitle":"🗃️ Agent Config","sectionRoute":"/guides/tutorials","type":"docs"},{"id":571,"pageTitle":"","sectionTitle":"📄️ Create a connection","sectionRoute":"/guides/tutorials","type":"docs"},{"id":572,"pageTitle":"","sectionTitle":"📄️ Cheqd Did Module","sectionRoute":"/guides/tutorials","type":"docs"},{"id":573,"pageTitle":"","sectionTitle":"📄️ Registering a schema and credential definition on an AnonCreds Registry","sectionRoute":"/guides/tutorials","type":"docs"},{"id":574,"pageTitle":"","sectionTitle":"📄️ Issue a credential","sectionRoute":"/guides/tutorials","type":"docs"},{"id":575,"pageTitle":"","sectionTitle":"📄️ Mediation","sectionRoute":"/guides/tutorials","type":"docs"},{"id":576,"pageTitle":"","sectionTitle":"🗃️ Using PostgreSQL with the Indy SDK","sectionRoute":"/guides/tutorials","type":"docs"},{"id":582,"pageTitle":"","sectionTitle":"Agent Config","sectionRoute":"/guides/tutorials/agent-config","type":"docs"},{"id":583,"pageTitle":"","sectionTitle":"label*","sectionRoute":"/guides/tutorials/agent-config#label","type":"docs"},{"id":584,"pageTitle":"","sectionTitle":"walletConfig","sectionRoute":"/guides/tutorials/agent-config#walletconfig","type":"docs"},{"id":585,"pageTitle":"","sectionTitle":"walletConfig.id*","sectionRoute":"/guides/tutorials/agent-config#walletconfigid","type":"docs"},{"id":586,"pageTitle":"","sectionTitle":"walletConfig.key*","sectionRoute":"/guides/tutorials/agent-config#walletconfigkey","type":"docs"},{"id":587,"pageTitle":"","sectionTitle":"walletConfig.keyDerivationMethod","sectionRoute":"/guides/tutorials/agent-config#walletconfigkeyderivationmethod","type":"docs"},{"id":588,"pageTitle":"","sectionTitle":"walletConfig.storage","sectionRoute":"/guides/tutorials/agent-config#walletconfigstorage","type":"docs"},{"id":589,"pageTitle":"","sectionTitle":"endpoints","sectionRoute":"/guides/tutorials/agent-config#endpoints","type":"docs"},{"id":590,"pageTitle":"","sectionTitle":"logger","sectionRoute":"/guides/tutorials/agent-config#logger","type":"docs"},{"id":591,"pageTitle":"","sectionTitle":"didCommMimeType","sectionRoute":"/guides/tutorials/agent-config#didcommmimetype","type":"docs"},{"id":592,"pageTitle":"","sectionTitle":"useDidSovPrefixWhereAllowed","sectionRoute":"/guides/tutorials/agent-config#usedidsovprefixwhereallowed","type":"docs"},{"id":593,"pageTitle":"","sectionTitle":"useDidKeyInProtocols","sectionRoute":"/guides/tutorials/agent-config#usedidkeyinprotocols","type":"docs"},{"id":594,"pageTitle":"","sectionTitle":"connectionImageUrl","sectionRoute":"/guides/tutorials/agent-config#connectionimageurl","type":"docs"},{"id":595,"pageTitle":"","sectionTitle":"autoUpdateStorageOnStartup","sectionRoute":"/guides/tutorials/agent-config#autoupdatestorageonstartup","type":"docs"},{"id":602,"pageTitle":"","sectionTitle":"Logging","sectionRoute":"/guides/tutorials/agent-config/logging","type":"docs"},{"id":603,"pageTitle":"","sectionTitle":"Using the Default ConsoleLogger","sectionRoute":"/guides/tutorials/agent-config/logging#using-the-default-consolelogger","type":"docs"},{"id":604,"pageTitle":"","sectionTitle":"Creating your own Logger","sectionRoute":"/guides/tutorials/agent-config/logging#creating-your-own-logger","type":"docs"},{"id":605,"pageTitle":"","sectionTitle":"Indy Logs","sectionRoute":"/guides/tutorials/agent-config/logging#indy-logs","type":"docs"},{"id":596,"pageTitle":"","sectionTitle":"Cheqd Did Module","sectionRoute":"/guides/tutorials/cheqd","type":"docs"},{"id":597,"pageTitle":"","sectionTitle":"DID Module","sectionRoute":"/guides/tutorials/cheqd#did-module","type":"docs"},{"id":598,"pageTitle":"","sectionTitle":"Create DID","sectionRoute":"/guides/tutorials/cheqd#create-did","type":"docs"},{"id":599,"pageTitle":"","sectionTitle":"Update DID","sectionRoute":"/guides/tutorials/cheqd#update-did","type":"docs"},{"id":600,"pageTitle":"","sectionTitle":"Deactivate DID","sectionRoute":"/guides/tutorials/cheqd#deactivate-did","type":"docs"},{"id":601,"pageTitle":"","sectionTitle":"Types","sectionRoute":"/guides/tutorials/cheqd#types","type":"docs"},{"id":624,"pageTitle":"","sectionTitle":"Create a connection","sectionRoute":"/guides/tutorials/create-a-connection","type":"docs"},{"id":625,"pageTitle":"","sectionTitle":"1. Setting up the agents","sectionRoute":"/guides/tutorials/create-a-connection#1-setting-up-the-agents","type":"docs"},{"id":626,"pageTitle":"","sectionTitle":"3. Receiving the invitation","sectionRoute":"/guides/tutorials/create-a-connection#3-receiving-the-invitation","type":"docs"},{"id":627,"pageTitle":"","sectionTitle":"4. (additional) listen to incoming connection responses","sectionRoute":"/guides/tutorials/create-a-connection#4-additional-listen-to-incoming-connection-responses","type":"docs"},{"id":628,"pageTitle":"","sectionTitle":"5. Full code snippets","sectionRoute":"/guides/tutorials/create-a-connection#5-full-code-snippets","type":"docs"},{"id":629,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/tutorials/create-a-connection#useful-resources","type":"docs"},{"id":606,"pageTitle":"","sectionTitle":"Using PostgreSQL as Database for Indy SDK in Node.js","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs","type":"docs"},{"id":607,"pageTitle":"","sectionTitle":"Installation of the Postgres Plugin","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs#installation-of-the-postgres-plugin","type":"docs"},{"id":608,"pageTitle":"","sectionTitle":"Using the Postgres Plugin in AFJ","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs#using-the-postgres-plugin-in-afj","type":"docs"},{"id":609,"pageTitle":"","sectionTitle":"Postgres Setup for Linux","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/linux","type":"docs"},{"id":610,"pageTitle":"","sectionTitle":"Prerequisites","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/linux#prerequisites","type":"docs"},{"id":611,"pageTitle":"","sectionTitle":"Step 1: installing the dependencies using apt","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/linux#step-1-installing-the-dependencies-using-apt","type":"docs"},{"id":612,"pageTitle":"","sectionTitle":"Debian based (Ubuntu, Mint, Kali, Deepin, etc.)","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/linux#debian-based-ubuntu-mint-kali-deepin-etc","type":"docs"},{"id":613,"pageTitle":"","sectionTitle":"Step 2: Build Postgres plugin","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/linux#step-2-build-postgres-plugin","type":"docs"},{"id":614,"pageTitle":"","sectionTitle":"Step 2.1: Cloning the indy-sdk","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/linux#step-21-cloning-the-indy-sdk","type":"docs"},{"id":615,"pageTitle":"","sectionTitle":"Step 2.2: Building Postgres plugin","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/linux#step-22-building-postgres-plugin","type":"docs"},{"id":616,"pageTitle":"","sectionTitle":"Step 2.3: Moving the file","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/linux#step-23-moving-the-file","type":"docs"},{"id":630,"pageTitle":"","sectionTitle":"Postgres Setup for macOS","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/macos","type":"docs"},{"id":631,"pageTitle":"","sectionTitle":"Prerequisites","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/macos#prerequisites","type":"docs"},{"id":632,"pageTitle":"","sectionTitle":"Step 1: installing the dependencies using brew","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/macos#step-1-installing-the-dependencies-using-brew","type":"docs"},{"id":633,"pageTitle":"","sectionTitle":"Step 2: Build Postgres plugin","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/macos#step-2-build-postgres-plugin","type":"docs"},{"id":634,"pageTitle":"","sectionTitle":"Step 2.1: Cloning the indy-sdk","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/macos#step-21-cloning-the-indy-sdk","type":"docs"},{"id":635,"pageTitle":"","sectionTitle":"Step 2.2: Building Postgres plugin","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/macos#step-22-building-postgres-plugin","type":"docs"},{"id":636,"pageTitle":"","sectionTitle":"Step 2.3: Moving the file","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/macos#step-23-moving-the-file","type":"docs"},{"id":617,"pageTitle":"","sectionTitle":"Postgres Setup for windows","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/windows","type":"docs"},{"id":618,"pageTitle":"","sectionTitle":"Build Environment Prerequisites","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/windows#build-environment-prerequisites","type":"docs"},{"id":619,"pageTitle":"","sectionTitle":"Step 1: Getting dependencies","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/windows#step-1-getting-dependencies","type":"docs"},{"id":620,"pageTitle":"","sectionTitle":"Step 2: Build Postgres plugin","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/windows#step-2-build-postgres-plugin","type":"docs"},{"id":621,"pageTitle":"","sectionTitle":"Step 2.1: Cloning the indy-sdk","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/windows#step-21-cloning-the-indy-sdk","type":"docs"},{"id":622,"pageTitle":"","sectionTitle":"Step 2.2: Building Postgres plugin","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/windows#step-22-building-postgres-plugin","type":"docs"},{"id":623,"pageTitle":"","sectionTitle":"Step 2.3: Setting the file to PATH","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/windows#step-23-setting-the-file-to-path","type":"docs"},{"id":637,"pageTitle":"","sectionTitle":"Issue a credential","sectionRoute":"/guides/tutorials/issue-a-credential","type":"docs"},{"id":638,"pageTitle":"","sectionTitle":"1. Setting up the agents","sectionRoute":"/guides/tutorials/issue-a-credential#1-setting-up-the-agents","type":"docs"},{"id":639,"pageTitle":"","sectionTitle":"3. Listening for incoming credentials","sectionRoute":"/guides/tutorials/issue-a-credential#3-listening-for-incoming-credentials","type":"docs"},{"id":640,"pageTitle":"","sectionTitle":"4. Issuing a credential","sectionRoute":"/guides/tutorials/issue-a-credential#4-issuing-a-credential","type":"docs"},{"id":641,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/tutorials/issue-a-credential#useful-resources","type":"docs"},{"id":642,"pageTitle":"","sectionTitle":"Mediation","sectionRoute":"/guides/tutorials/mediation","type":"docs"},{"id":643,"pageTitle":"","sectionTitle":"What is a mediator, and Why should I use one?","sectionRoute":"/guides/tutorials/mediation#what-is-a-mediator-and-why-should-i-use-one","type":"docs"},{"id":644,"pageTitle":"","sectionTitle":"1. Mediator setup","sectionRoute":"/guides/tutorials/mediation#1-mediator-setup","type":"docs"},{"id":645,"pageTitle":"","sectionTitle":"2. Recipient (Alice) setup","sectionRoute":"/guides/tutorials/mediation#2-recipient-alice-setup","type":"docs"},{"id":646,"pageTitle":"","sectionTitle":"3. Message exchange","sectionRoute":"/guides/tutorials/mediation#3-message-exchange","type":"docs"},{"id":647,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/tutorials/mediation#useful-resources","type":"docs"},{"id":648,"pageTitle":"","sectionTitle":"Registering a schema and credential definition on an AnonCreds Registry","sectionRoute":"/guides/tutorials/registering-schema-and-credential-definition","type":"docs"},{"id":649,"pageTitle":"","sectionTitle":"1. Setting up the agent","sectionRoute":"/guides/tutorials/registering-schema-and-credential-definition#1-setting-up-the-agent","type":"docs"},{"id":650,"pageTitle":"","sectionTitle":"2. Importing a DID (optional)","sectionRoute":"/guides/tutorials/registering-schema-and-credential-definition#2-importing-a-did-optional","type":"docs"},{"id":651,"pageTitle":"","sectionTitle":"3. Registering a schema","sectionRoute":"/guides/tutorials/registering-schema-and-credential-definition#3-registering-a-schema","type":"docs"},{"id":652,"pageTitle":"","sectionTitle":"3. Registering a credential definition","sectionRoute":"/guides/tutorials/registering-schema-and-credential-definition#3-registering-a-credential-definition","type":"docs"},{"id":653,"pageTitle":"","sectionTitle":"Using it","sectionRoute":"/guides/tutorials/registering-schema-and-credential-definition#using-it","type":"docs"},{"id":654,"pageTitle":"","sectionTitle":"Useful Resources","sectionRoute":"/guides/tutorials/registering-schema-and-credential-definition#useful-resources","type":"docs"},{"id":655,"pageTitle":"","sectionTitle":"Updating AFJ","sectionRoute":"/guides/updating","type":"docs"},{"id":656,"pageTitle":"","sectionTitle":"📄️ Update Assistant","sectionRoute":"/guides/updating","type":"docs"},{"id":657,"pageTitle":"","sectionTitle":"📄️ Migrating from an Indy SDK Wallet to Aries Askar","sectionRoute":"/guides/updating","type":"docs"},{"id":658,"pageTitle":"","sectionTitle":"📄️ Migrating from AFJ 0.1.0 to 0.2.x","sectionRoute":"/guides/updating","type":"docs"},{"id":659,"pageTitle":"","sectionTitle":"📄️ Migrating from AFJ 0.2.x to 0.3.x","sectionRoute":"/guides/updating","type":"docs"},{"id":660,"pageTitle":"","sectionTitle":"📄️ Migrating from AFJ 0.3.x to 0.4.x","sectionRoute":"/guides/updating","type":"docs"},{"id":661,"pageTitle":"","sectionTitle":"Versioning","sectionRoute":"/guides/updating#versioning","type":"docs"},{"id":662,"pageTitle":"","sectionTitle":"Types of breaking changes","sectionRoute":"/guides/updating#types-of-breaking-changes","type":"docs"},{"id":663,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/updating#breaking-code-changes","type":"docs"},{"id":664,"pageTitle":"","sectionTitle":"Breaking Storage Changes","sectionRoute":"/guides/updating#breaking-storage-changes","type":"docs"},{"id":665,"pageTitle":"","sectionTitle":"Migration Guides","sectionRoute":"/guides/updating#migration-guides","type":"docs"},{"id":666,"pageTitle":"","sectionTitle":"Update Assistant","sectionRoute":"/guides/updating/update-assistant","type":"docs"},{"id":667,"pageTitle":"","sectionTitle":"Update Strategies","sectionRoute":"/guides/updating/update-assistant#update-strategies","type":"docs"},{"id":668,"pageTitle":"","sectionTitle":"Manually instantiating the update assistant on agent startup","sectionRoute":"/guides/updating/update-assistant#manually-instantiating-the-update-assistant-on-agent-startup","type":"docs"},{"id":669,"pageTitle":"","sectionTitle":"Storing the agent storage version outside of the agent storage","sectionRoute":"/guides/updating/update-assistant#storing-the-agent-storage-version-outside-of-the-agent-storage","type":"docs"},{"id":670,"pageTitle":"","sectionTitle":"Automatically update on agent startup","sectionRoute":"/guides/updating/update-assistant#automatically-update-on-agent-startup","type":"docs"},{"id":671,"pageTitle":"","sectionTitle":"Backups","sectionRoute":"/guides/updating/update-assistant#backups","type":"docs"},{"id":672,"pageTitle":"","sectionTitle":"Migrating from an Indy SDK Wallet to Aries Askar","sectionRoute":"/guides/updating/update-indy-sdk-to-askar","type":"docs"},{"id":673,"pageTitle":"","sectionTitle":"What does the migration do internally?","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#what-does-the-migration-do-internally","type":"docs"},{"id":674,"pageTitle":"","sectionTitle":"Create a backup","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#create-a-backup","type":"docs"},{"id":675,"pageTitle":"","sectionTitle":"Migrate the database to an Aries Askar structure","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#migrate-the-database-to-an-aries-askar-structure","type":"docs"},{"id":676,"pageTitle":"","sectionTitle":"Try to open the wallet in the new Aries Askar structure","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#try-to-open-the-wallet-in-the-new-aries-askar-structure","type":"docs"},{"id":677,"pageTitle":"","sectionTitle":"Update the keys","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#update-the-keys","type":"docs"},{"id":678,"pageTitle":"","sectionTitle":"Update the DIDs","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#update-the-dids","type":"docs"},{"id":679,"pageTitle":"","sectionTitle":"Update the credential definitions","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#update-the-credential-definitions","type":"docs"},{"id":680,"pageTitle":"","sectionTitle":"Update the link secret(s) (master secret)","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#update-the-link-secrets-master-secret","type":"docs"},{"id":681,"pageTitle":"","sectionTitle":"Update the credentials","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#update-the-credentials","type":"docs"},{"id":682,"pageTitle":"","sectionTitle":"All the other records","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#all-the-other-records","type":"docs"},{"id":683,"pageTitle":"","sectionTitle":"How to update","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#how-to-update","type":"docs"},{"id":684,"pageTitle":"","sectionTitle":"add the required dependencies:","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#add-the-required-dependencies","type":"docs"},{"id":685,"pageTitle":"","sectionTitle":"Getting the database path","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#getting-the-database-path","type":"docs"},{"id":686,"pageTitle":"","sectionTitle":"Migrating from AFJ 0.1.0 to 0.2.x","sectionRoute":"/guides/updating/versions/0.1-to-0.2","type":"docs"},{"id":687,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/updating/versions/0.1-to-0.2#breaking-code-changes","type":"docs"},{"id":688,"pageTitle":"","sectionTitle":"Credentials Module","sectionRoute":"/guides/updating/versions/0.1-to-0.2#credentials-module","type":"docs"},{"id":689,"pageTitle":"","sectionTitle":"Connections Module","sectionRoute":"/guides/updating/versions/0.1-to-0.2#connections-module","type":"docs"},{"id":690,"pageTitle":"","sectionTitle":"Updating Custom Messages to the New Message Type Objects","sectionRoute":"/guides/updating/versions/0.1-to-0.2#updating-custom-messages-to-the-new-message-type-objects","type":"docs"},{"id":691,"pageTitle":"","sectionTitle":"Breaking Storage Changes","sectionRoute":"/guides/updating/versions/0.1-to-0.2#breaking-storage-changes","type":"docs"},{"id":692,"pageTitle":"","sectionTitle":"Credential Metadata","sectionRoute":"/guides/updating/versions/0.1-to-0.2#credential-metadata","type":"docs"},{"id":693,"pageTitle":"","sectionTitle":"Migrate Credential Record Properties","sectionRoute":"/guides/updating/versions/0.1-to-0.2#migrate-credential-record-properties","type":"docs"},{"id":694,"pageTitle":"","sectionTitle":"Mediation Record Role","sectionRoute":"/guides/updating/versions/0.1-to-0.2#mediation-record-role","type":"docs"},{"id":695,"pageTitle":"","sectionTitle":"Extracting Did Documents to Did Repository","sectionRoute":"/guides/updating/versions/0.1-to-0.2#extracting-did-documents-to-did-repository","type":"docs"},{"id":696,"pageTitle":"","sectionTitle":"Migrating to the Out of Band Record","sectionRoute":"/guides/updating/versions/0.1-to-0.2#migrating-to-the-out-of-band-record","type":"docs"},{"id":697,"pageTitle":"","sectionTitle":"Unifying Connection States and Roles","sectionRoute":"/guides/updating/versions/0.1-to-0.2#unifying-connection-states-and-roles","type":"docs"},{"id":698,"pageTitle":"","sectionTitle":"Migrating from AFJ 0.2.x to 0.3.x","sectionRoute":"/guides/updating/versions/0.2-to-0.3","type":"docs"},{"id":699,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/updating/versions/0.2-to-0.3#breaking-code-changes","type":"docs"},{"id":700,"pageTitle":"","sectionTitle":"Agent creation","sectionRoute":"/guides/updating/versions/0.2-to-0.3#agent-creation","type":"docs"},{"id":701,"pageTitle":"","sectionTitle":"did:key usage in protocols","sectionRoute":"/guides/updating/versions/0.2-to-0.3#didkey-usage-in-protocols","type":"docs"},{"id":702,"pageTitle":"","sectionTitle":"Modules extracted from the core","sectionRoute":"/guides/updating/versions/0.2-to-0.3#modules-extracted-from-the-core","type":"docs"},{"id":703,"pageTitle":"","sectionTitle":"Discover Features Module","sectionRoute":"/guides/updating/versions/0.2-to-0.3#discover-features-module","type":"docs"},{"id":704,"pageTitle":"","sectionTitle":"Ledger Module","sectionRoute":"/guides/updating/versions/0.2-to-0.3#ledger-module","type":"docs"},{"id":705,"pageTitle":"","sectionTitle":"Proofs Module","sectionRoute":"/guides/updating/versions/0.2-to-0.3#proofs-module","type":"docs"},{"id":706,"pageTitle":"","sectionTitle":"Out Of Band Proofs and Credentials","sectionRoute":"/guides/updating/versions/0.2-to-0.3#out-of-band-proofs-and-credentials","type":"docs"},{"id":707,"pageTitle":"","sectionTitle":"Updating Custom Modules to the new Plugin API","sectionRoute":"/guides/updating/versions/0.2-to-0.3#updating-custom-modules-to-the-new-plugin-api","type":"docs"},{"id":708,"pageTitle":"","sectionTitle":"Breaking Storage Changes","sectionRoute":"/guides/updating/versions/0.2-to-0.3#breaking-storage-changes","type":"docs"},{"id":709,"pageTitle":"","sectionTitle":"Migrate Proof Record Properties","sectionRoute":"/guides/updating/versions/0.2-to-0.3#migrate-proof-record-properties","type":"docs"},{"id":710,"pageTitle":"","sectionTitle":"Migrate Connection Record properties","sectionRoute":"/guides/updating/versions/0.2-to-0.3#migrate-connection-record-properties","type":"docs"},{"id":711,"pageTitle":"","sectionTitle":"Migrate Did Record properties","sectionRoute":"/guides/updating/versions/0.2-to-0.3#migrate-did-record-properties","type":"docs"},{"id":712,"pageTitle":"","sectionTitle":"Migrating from AFJ 0.3.x to 0.4.x","sectionRoute":"/guides/updating/versions/0.3-to-0.4","type":"docs"},{"id":713,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/updating/versions/0.3-to-0.4#breaking-code-changes","type":"docs"},{"id":714,"pageTitle":"","sectionTitle":"Agent Creation","sectionRoute":"/guides/updating/versions/0.3-to-0.4#agent-creation","type":"docs"},{"id":715,"pageTitle":"","sectionTitle":"Indy Network Configuration","sectionRoute":"/guides/updating/versions/0.3-to-0.4#indy-network-configuration","type":"docs"},{"id":716,"pageTitle":"","sectionTitle":"Changes to wallet","sectionRoute":"/guides/updating/versions/0.3-to-0.4#changes-to-wallet","type":"docs"},{"id":717,"pageTitle":"","sectionTitle":"Did Resolver and Registrar","sectionRoute":"/guides/updating/versions/0.3-to-0.4#did-resolver-and-registrar","type":"docs"},{"id":718,"pageTitle":"","sectionTitle":"Removal of publicDidSeed and publicDid","sectionRoute":"/guides/updating/versions/0.3-to-0.4#removal-of-publicdidseed-and-publicdid","type":"docs"},{"id":719,"pageTitle":"","sectionTitle":"More Granular Usage of Legacy did:sov Prefix in DIDComm Messages","sectionRoute":"/guides/updating/versions/0.3-to-0.4#more-granular-usage-of-legacy-didsov-prefix-in-didcomm-messages","type":"docs"},{"id":720,"pageTitle":"","sectionTitle":"Removal of injectionContainer property from the agent","sectionRoute":"/guides/updating/versions/0.3-to-0.4#removal-of-injectioncontainer-property-from-the-agent","type":"docs"},{"id":721,"pageTitle":"","sectionTitle":"connection has been updated to connectionId in TransportSession","sectionRoute":"/guides/updating/versions/0.3-to-0.4#connection-has-been-updated-to-connectionid-in-transportsession","type":"docs"},{"id":722,"pageTitle":"","sectionTitle":"Replacement of Ledger Module with new AnonCreds Module","sectionRoute":"/guides/updating/versions/0.3-to-0.4#replacement-of-ledger-module-with-new-anoncreds-module","type":"docs"},{"id":723,"pageTitle":"","sectionTitle":"Changes to the Credentials and Proofs modules","sectionRoute":"/guides/updating/versions/0.3-to-0.4#changes-to-the-credentials-and-proofs-modules","type":"docs"},{"id":724,"pageTitle":"","sectionTitle":"Changes to the AnonCreds Credential and Proof Format","sectionRoute":"/guides/updating/versions/0.3-to-0.4#changes-to-the-anoncreds-credential-and-proof-format","type":"docs"},{"id":725,"pageTitle":"","sectionTitle":"Removal of AnonCreds Master Secret management from Wallet","sectionRoute":"/guides/updating/versions/0.3-to-0.4#removal-of-anoncreds-master-secret-management-from-wallet","type":"docs"},{"id":726,"pageTitle":"","sectionTitle":"Default Outbound DIDComm Content Type now application/didcomm-envelope-enc","sectionRoute":"/guides/updating/versions/0.3-to-0.4#default-outbound-didcomm-content-type-now-applicationdidcomm-envelope-enc","type":"docs"},{"id":727,"pageTitle":"","sectionTitle":"Generalizing Indy properties in CredentialExchangeRecord","sectionRoute":"/guides/updating/versions/0.3-to-0.4#generalizing-indy-properties-in-credentialexchangerecord","type":"docs"},{"id":728,"pageTitle":"","sectionTitle":"More paths in FileSystem","sectionRoute":"/guides/updating/versions/0.3-to-0.4#more-paths-in-filesystem","type":"docs"},{"id":729,"pageTitle":"","sectionTitle":"Breaking Storage Changes","sectionRoute":"/guides/updating/versions/0.3-to-0.4#breaking-storage-changes","type":"docs"}],"index":{"version":"2.3.9","fields":["title","content","sidebarParentCategories"],"fieldVectors":[["title/442",[0,6.993]],["content/442",[1,3.633,2,1.257,3,2.3,4,5.299,5,2.409,6,1.581,7,3.035,8,2.036,9,2.498,10,2.599,11,2.331,12,3.633,13,3.272,14,3.633,15,5.502,16,3.633,17,1.308,18,2.498,19,2.083,20,3.237,21,4.328,22,2.801,23,3.633,24,3.53,25,2.526,26,3.272,27,3.633,28,3.035,29,3.334,30,1.963,31,0.337,32,2.122,33,4.132,34,1.607,35,1.635,36,5.548,37,2.599,38,5.224,39,3.272,40,2.26,41,1.9,42,3.63,43,1.274,44,2.716,45,3.633,46,2.599,47,2.716,48,3.633,49,3.272,50,1.692,51,2.858,52,3.272,53,1.442,54,3.633,55,0.5,56,2.858,57,3.633,58,0.691,59,1.789,60,4.956,61,5.502,62,2.036,63,2.409,64,3.633,65,2.716,66,1.789,67,2.878,68,1.344,69,1.242,70,1.037,71,1.061,72,3.035,73,2.137,74,3.272,75,3.035,76,3.633,77,2.137,78,2.599,79,3.272,80,3.272,81,2.498,82,3.633,83,4.597,84,1.789,85,3.633,86,1.986,87,0.689,88,2.716,89,1.755,90,2.716,91,1.789,92,2.498,93,1.824,94,3.633,95,1.789,96,1.508,97,3.633,98,3.633,99,3.633,100,3.633,101,2.858,102,0.749]],["sidebarParentCategories/442",[]],["title/455",[86,3.822]],["content/455",[2,1.419,3,2.947,8,2.102,22,2.396,24,3.645,25,2.402,29,2.852,31,0.528,33,3.535,55,1.171,58,0.886,66,2.797,67,2.971,68,2.102,69,2.588,70,2.161,71,2.211,84,2.797,86,4.137,103,2.359,104,4.248,105,3.768,106,4.575,107,5.681,108,3.179,109,5.681,110,4.469,111,2.223,112,2.852,113,3.959,114,3.036,115,3.295,116,5.659,117,2.646,118,3.036,119,3.258]],["sidebarParentCategories/455",[]],["title/456",[31,0.542,55,0.803]],["content/456",[2,1.44,8,3.076,111,3.253,112,4.174]],["sidebarParentCategories/456",[]],["title/457",[55,0.689,113,2.621,114,2.678]],["content/457",[113,4.516]],["sidebarParentCategories/457",[]],["title/458",[55,0.689,66,2.467,115,2.181]],["content/458",[2,1.295,3,2.986,22,2.935,24,4.465,25,2.737,29,3.494,58,0.898,67,3.64,68,2.575,69,2.948,70,2.462,71,2.519,106,4.207,115,3.03,116,6.448,117,3.242,118,3.72,119,3.991]],["sidebarParentCategories/458",[]],["title/477",[31,0.65]],["content/477",[2,1.468,8,2.839,25,2.435,31,0.713,111,3.003,112,3.853,120,4.294,121,5.09,122,5.872,123,4.34]],["sidebarParentCategories/477",[86,3.509]],["title/478",[124,6.299]],["content/478",[2,1.31,3,1.786,11,3.31,29,2.59,30,1.524,31,0.849,34,1.507,46,3.69,58,0.537,106,3.118,112,3.559,114,3.789,121,3.421,124,4.646,125,3.857,126,4.646,127,6.386,128,5.158,129,6.386,130,4.549,131,4.646,132,4.874,133,5.158,134,3.857,135,5.158,136,4.646,137,3.421,138,3.69,139,5.577,140,2.078,141,5.923,142,5.158,143,5.158,144,4.309,145,3.245,146,1.698,147,4.874,148,2.59,149,2.774,150,1.72,151,2.642,152,2.109,153,3.31,154,4.646,155,3.421,156,4.058,157,4.309,158,5.158,159,3.118,160,4.058,161,5.158,162,3.421,163,3.31]],["sidebarParentCategories/478",[86,3.509]],["title/479",[164,5.229]],["content/479",[2,1.32,3,2.1,31,0.96,34,1.772,35,3.556,106,3.667,164,6.572,165,4.771,166,7.917,167,4.023,168,4.804,169,6.602,170,5.433,171,2.986,172,1.948,173,4.338,174,5.463,175,6.065,176,6.065,177,6.065,178,6.602,179,3.242,180,3.332,181,6.065]],["sidebarParentCategories/479",[86,3.509]],["title/480",[96,2.904]],["content/480",[2,1.099,11,4.698,30,1.598,31,0.68,33,3.364,34,1.58,44,4.043,53,2.147,55,0.744,58,0.762,70,1.544,71,1.58,96,3.04,108,3.025,131,4.87,132,3.717,134,4.043,137,3.586,138,3.868,146,1.78,150,1.802,151,2.77,152,2.211,153,3.469,155,3.586,162,3.586,168,4.537,172,2.352,180,2.28,182,2.475,183,4.517,184,5.407,185,5.407,186,5.407,187,5.407,188,5.407,189,3.181,190,2.955,191,4.863,192,5.407,193,5.407,194,5.407,195,7.321,196,4.87,197,4.87,198,4.043,199,5.407,200,2.057,201,4.254,202,3.025,203,4.87]],["sidebarParentCategories/480",[86,3.509]],["title/481",[40,3.632,58,0.608]],["content/481",[2,1.403,3,2.752,25,2.522,31,0.738,42,4.343,102,1.639,204,4.944,205,7.157,206,2.097]],["sidebarParentCategories/481",[86,3.509]],["title/482",[113,3.054,114,3.12]],["content/482",[]],["sidebarParentCategories/482",[86,3.509]],["title/483",[113,3.658]],["content/483",[11,5.614,29,3.577,43,2.5,113,4.577,144,5.953,153,4.572,196,6.418,203,6.418,207,6.418,208,8.749,209,5.29,210,2.566,211,4.726,212,3.65,213,7.125,214,7.125,215,7.125,216,3.727,217,7.125]],["sidebarParentCategories/483",[86,3.509]],["title/484",[32,2.698]],["content/484",[20,4.063,32,3.311,59,4.225,140,2.782,148,3.467,151,3.538,152,2.824,190,3.775,191,3.775,218,4.58,219,4.431,220,5.164,221,4.94,222,3.775,223,4.175,224,4.063,225,3.467,226,5.433,227,5.188,228,4.802,229,4.431,230,4.748,231,4.748]],["sidebarParentCategories/484",[86,3.509]],["title/485",[114,3.738]],["content/485",[2,0.887,3,2.045,8,2.873,46,4.224,47,4.416,49,5.319,103,2.452,104,4.416,105,3.917,106,3.57,114,4.637,121,3.917,146,1.944,148,2.965,151,3.978,152,3.176,153,3.789,155,5.754,182,2.703,227,3.57,228,3.304,232,3.789,233,4.416,234,5.905,235,3.304,236,5.905,237,3.475,238,2.853,239,3.228,240,4.416,241,3.789,242,4.224,243,4.06,244,4.224,245,3.475,246,5.905,247,3.57,248,3.789,249,3.674,250,5.319,251,4.224,252,1.994]],["sidebarParentCategories/485",[86,3.509]],["title/486",[40,3.632,58,0.608]],["content/486",[114,4.528,253,8.734]],["sidebarParentCategories/486",[86,3.509]],["title/487",[66,2.874,115,2.541]],["content/487",[2,1.295,3,2.986,22,2.935,24,4.465,25,2.737,29,3.494,58,0.898,67,3.64,68,2.575,69,2.948,70,2.462,71,2.519,106,4.207,115,3.03,116,6.448,117,3.242,118,3.72,119,3.991]],["sidebarParentCategories/487",[86,3.509]],["title/493",[2,0.752,3,1.735,106,3.029]],["content/493",[2,1.123,3,2.591,59,3.684,92,5.144,93,3.756,103,3.107,106,4.523,159,4.523,202,4.187,254,4.29,255,6.739,256,7.091,257,7.481,258,6.251,259,4.962,260,4.29]],["sidebarParentCategories/493",[]],["title/494",[93,3.511]],["content/494",[2,1.491,3,3.303,25,2.804,31,0.673,70,2.067,71,2.115,93,3.635,125,5.414,168,3.958,261,3.565,262,7.24,263,3.565,264,4.051,265,3.258,266,5.696]],["sidebarParentCategories/494",[]],["title/495",[32,2.698]],["content/495",[2,1.458,3,3.137,25,2.875,31,0.701,32,2.91,38,5.935,70,2.154,71,2.204,168,4.124,238,3.645,265,3.395,266,5.935]],["sidebarParentCategories/495",[]],["title/496",[2,0.752,3,1.735,25,1.59]],["content/496",[2,1.353,3,3.121,25,2.374,43,2.625,92,5.144,106,4.523,146,2.463,152,3.06,163,4.801,200,2.846,252,2.526,267,2.695,268,4.29,269,7.481]],["sidebarParentCategories/496",[]],["title/497",[2,0.659,106,2.653,270,3.666,271,3.666]],["content/497",[2,1.437,8,2.701,25,2.316,67,3.818,166,6.575,261,3.594,266,5.742,271,6.098,272,5.742,273,7.299,274,7.299,275,9.957,276,6.575,277,4.841,278,7.299]],["sidebarParentCategories/497",[]],["title/498",[67,3.054,270,4.877]],["content/498",[2,0.984,43,2.299,67,3.427,75,5.474,91,4.088,149,2.564,232,4.204,266,5.155,267,2.483,270,7.616,272,5.155,279,4.886,280,8.304,281,8.304,282,6.552,283,6.552,284,2.03,285,6.552,286,6.552,287,6.552,288,5.474,289,6.552,290,5.902,291,5.902,292,4.9,293,5.902,294,4.346]],["sidebarParentCategories/498",[]],["title/488",[265,3.147]],["content/488",[2,1.368,3,2.792,4,2.36,6,1.436,7,2.756,22,1.391,24,2.117,25,2.558,31,0.749,43,2.194,53,2.483,55,1.048,58,0.793,70,2.481,71,0.964,79,2.971,91,1.624,93,2.566,96,1.37,111,1.291,112,3.14,120,1.846,122,5.172,123,2.967,154,2.971,180,2.971,189,1.941,191,1.803,228,3.5,247,3.089,248,2.117,254,1.892,260,3.587,261,1.624,265,3.17,267,2.514,268,1.892,295,2.467,296,3.18,297,2.36,298,2.36,299,3.299,300,3.299,301,2.971,302,2.838,303,5.542,304,4.921,305,1.073,306,2.756,307,2.756,308,4.474,309,2.595,310,1.391,311,2.36,312,2.756,313,5.766,314,5.24,315,2.339,316,2.117,317,1.349,318,2.756,319,1.237,320,2.756,321,2.756,322,2.117,323,1.204,324,2.188,325,2.36,326,3.513,327,1.941,328,1.846,329,1.188,330,2.595,331,2.756,332,2.36]],["sidebarParentCategories/488",[]],["title/489",[55,0.689,122,3.215,123,2.376]],["content/489",[2,0.998,3,2.303,4,4.757,25,2.11,31,0.853,43,2.94,112,3.338,122,5.889,123,3.154,180,3.535,228,4.69,247,4.02,248,4.267,260,4.806,267,2.506,316,4.267,317,2.719,318,5.556,319,2.494,320,5.556,321,5.556,322,4.267,323,2.427]],["sidebarParentCategories/489",[]],["title/490",[55,0.689,70,1.43,303,3.445]],["content/490",[58,0.799,70,2.792,112,3.853,180,3.236,189,4.515,267,2.295,302,3.092,303,6.292,324,5.09,325,5.489,326,5.276]],["sidebarParentCategories/490",[]],["title/491",[53,1.989,55,0.689,308,3.584]],["content/491",[22,3.209,24,4.882,53,3.021,55,1.047,58,0.948,70,2.6,71,2.223,111,2.977,267,2.275,308,5.443,326,5.231,327,4.477,328,4.258]],["sidebarParentCategories/491",[]],["title/492",[55,0.689,313,3.584,314,3.445]],["content/492",[6,3.204,31,0.684,43,2.582,58,0.766,120,4.118,180,3.103,267,2.2,302,2.965,313,6.87,314,6.603,315,3.369,329,2.651,330,5.789,331,6.148,332,5.264]],["sidebarParentCategories/492",[]],["title/499",[313,4.176,314,4.014]],["content/499",[2,1.208,6,2.714,8,2.307,31,0.579,32,2.405,43,2.187,58,0.649,120,3.488,180,2.629,223,3.769,264,3.488,265,2.805,267,1.864,268,3.575,302,3.791,305,2.896,312,5.208,313,6.967,314,6.469,315,2.853,329,2.245,330,4.904,331,5.208,332,4.459,333,3.332,334,5.615,335,2.758,336,2.904]],["sidebarParentCategories/499",[265,2.889]],["title/500",[337,1.747]],["content/500",[2,1.138,31,0.821,55,1.453,58,0.593,91,1.872,134,6.371,150,2.527,151,3.883,159,3.442,227,3.442,230,5.212,302,1.532,312,5.703,313,5.422,314,2.614,315,1.74,322,2.44,329,1.369,330,2.991,332,4.073,335,1.683,338,2.701,339,2.366,340,1.872,341,2.859,342,2.606,343,2.522,344,1.743,345,5.694,346,5.694,347,1.388,348,1.842,349,1.192,350,1.644,351,3.802,352,3.802,353,3.478,354,2.522,355,2.522,356,3.732,357,5.694,358,3.802,359,2.439,360,5.694,361,5.694,362,4.757,363,3.802,364,5.694,365,3.777,366,3.425,367,3.802,368,3.802]],["sidebarParentCategories/500",[265,2.889]],["title/506",[70,1.667,303,4.014]],["content/506",[2,1.166,6,2.571,8,2.185,31,0.549,32,2.278,43,2.072,58,0.615,70,2.631,78,4.224,112,2.965,180,3.274,189,4.569,191,3.228,223,3.57,264,3.304,265,2.657,267,1.766,268,3.386,302,3.713,303,6.582,305,2.821,310,2.49,316,3.789,324,3.917,325,4.224,326,5.339,333,3.156,334,5.319,335,2.613,336,2.751,369,4.646,370,5.319,371,3.089]],["sidebarParentCategories/506",[265,2.889]],["title/507",[337,1.747]],["content/507",[2,1.34,70,2.101,91,3.623,302,2.965,303,5.06,310,3.763,322,4.722,338,4.232,339,4.579,340,3.623,341,4.48,342,4.085,372,8.923]],["sidebarParentCategories/507",[265,2.889]],["title/508",[343,4.638]],["content/508",[2,0.829,8,1.009,30,0.806,31,0.726,35,3.126,43,0.957,50,1.27,55,1.448,58,0.458,62,1.009,63,2.916,70,0.779,73,1.605,83,2.278,96,2.293,112,1.369,116,2.039,125,2.039,146,0.898,150,1.841,180,1.15,191,3.019,238,1.317,256,2.145,267,0.815,279,1.605,284,0.845,290,2.456,302,1.099,303,6.055,305,1.43,310,2.329,317,1.115,319,1.023,324,1.809,325,1.951,327,1.605,344,1.691,347,2.967,348,0.736,353,1.168,373,1.526,374,2.278,375,6.948,376,5.523,377,6.948,378,2.727,379,4.396,380,2.727,381,2.727,382,4.396,383,2.727,384,2.727,385,1.168,386,1.15,387,2.456,388,5.313,389,1.564,390,1.875,391,2.727,392,2.727,393,4.396,394,1.875,395,2.727,396,1.187,397,2.727,398,2.727,399,2.727,400,4.156,401,2.727,402,2.727,403,2.456,404,1.605,405,2.456,406,1.447,407,0.982,408,2.727,409,1.132,410,2.039,411,4.975,412,2.727,413,2.456,414,2.727,415,0.957,416,2.727,417,2.039,418,2.735,419,2.456,420,2.727,421,2.145,422,1.248,423,1.951,424,2.727,425,2.727,426,2.727,427,1.649,428,2.727,429,2.727,430,2.456,431,1.564,432,2.727,433,1.697,434,1.809,435,2.727,436,2.727,437,1.825,438,2.403,439,2.278,440,2.727,441,2.727,442,2.145,443,2.456,444,2.727,445,2.727,446,2.727]],["sidebarParentCategories/508",[265,2.889]],["title/501",[53,2.318,308,4.176]],["content/501",[2,1.099,8,2.001,22,2.28,24,3.469,25,1.716,30,1.598,31,0.68,32,2.086,53,3.532,55,0.744,58,0.864,70,2.09,71,1.58,111,2.116,112,2.715,150,1.802,180,3.087,189,3.181,223,3.269,225,2.715,264,3.025,265,2.433,267,2.189,268,3.1,302,3.344,305,2.699,307,4.517,308,5.938,326,5.033,327,5.234,328,4.097,333,2.89,335,2.393,336,3.41,344,1.655,434,3.586,447,4.043,448,3.469,449,2.715,450,5.407,451,5.407]],["sidebarParentCategories/501",[265,2.889]],["title/502",[337,1.747]],["content/502",[2,1.34,53,3.813,91,3.623,302,2.965,307,7.456,308,5.264,322,4.722,338,4.232,339,4.579,340,3.623,341,4.48,342,4.085]],["sidebarParentCategories/502",[265,2.889]],["title/509",[122,3.746,123,2.769]],["content/509",[2,1.352,3,1.539,4,3.178,6,1.934,8,2.362,9,3.054,10,3.178,11,2.851,17,1.6,18,3.054,24,4.096,25,1.41,30,1.313,31,0.759,32,1.714,34,1.298,43,2.239,46,3.178,55,1.028,67,2.324,102,0.916,103,1.845,111,1.738,112,3.205,122,5.778,123,3.873,149,1.738,150,1.481,180,2.692,223,2.686,225,2.23,228,4.18,247,2.686,248,2.851,260,3.66,264,2.486,265,1.999,267,2.234,268,2.548,294,2.947,302,3.29,305,2.656,309,5.022,316,2.851,317,1.817,318,3.712,319,1.667,320,3.712,321,3.712,322,2.851,323,1.622,335,2.825,336,2.07,452,3.495,453,2.548,454,3.712,455,4.442,456,2.686,457,3.712,458,3.712,459,0.618,460,4.442,461,1.903]],["sidebarParentCategories/509",[265,2.889]],["title/510",[462,5.837,463,1.367]],["content/510",[6,3.053,25,2.226,58,0.73,66,3.453,69,2.398,91,3.453,102,1.787,103,2.912,120,3.925,122,4.5,123,3.326,206,1.851,230,4.822,337,1.752,356,3.453,409,2.912,415,2.461,454,5.86,463,1.643,464,3.296,465,3.669,466,5.518,467,7.013]],["sidebarParentCategories/510",[265,2.889]],["title/511",[120,3.267,468,5.259]],["content/511",[2,0.832,32,2.137,43,2.611,55,1.357,58,0.577,72,6.218,81,3.809,102,1.143,122,5.393,123,2.628,140,2.232,171,2.728,172,2.391,173,3.963,228,4.703,241,4.776,247,4.5,267,2.225,309,4.359,322,3.555,325,3.963,337,1.86,340,2.728,359,2.373,469,4.143,470,4.359,471,3.963,472,3.963,473,3.26,474,4.359,475,5.54,476,5.54,477,5.54,478,3.809,479,4.991,480,3.675,481,4.143,482,5.54,483,5.54,484,2.677,485,5.54,486,5.54]],["sidebarParentCategories/511",[265,2.889]],["title/512",[323,2.553]],["content/512",[2,1.07,33,5.444,38,5.605,102,1.47,122,4.572,249,5.444,263,3.508,267,2.131,309,5.605,323,2.601,340,3.508,396,3.809,417,5.328,418,4.433,454,7.31,471,5.097,472,5.097,487,3.727,488,7.125]],["sidebarParentCategories/512",[265,2.889]],["title/503",[102,1.204,206,1.541]],["content/503",[2,0.938,3,2.164,8,2.719,22,2.635,25,1.983,29,2.166,31,0.794,34,2.147,35,1.941,55,0.86,62,1.596,66,3.077,69,2.512,70,1.784,71,1.826,84,2.124,102,1.289,103,1.791,110,3.394,115,1.878,118,2.306,119,2.474,168,4.017,173,4.47,189,3.677,259,4.874,260,3.584,279,2.538,284,1.337,319,1.618,337,2.013,373,2.414,385,1.848,386,1.819,388,5.256,406,2.419,415,3,427,2.608,438,4.017,442,4.917,463,1.721,464,2.795,489,3.605,490,5.539,491,1.848,492,5.63,493,2.768,494,2.306,495,2.21,496,1.177,497,3.086,498,2.685,499,3.605,500,3.394,501,2.538,502,3.394,503,3.394]],["sidebarParentCategories/503",[]],["title/504",[55,0.803,490,4.014]],["content/504",[2,0.991,3,2.286,8,2.442,25,2.095,34,1.928,62,2.442,66,3.25,69,2.852,70,1.885,71,1.928,102,1.361,115,2.873,168,3.608,259,5.533,260,3.785,279,3.884,284,2.045,319,2.476,337,2.285,388,4.722,406,2.747,496,1.801,497,4.722,498,4.107,499,5.515,500,5.193,501,3.884,502,5.193]],["sidebarParentCategories/504",[]],["title/505",[31,0.465,55,0.689,463,1.173]],["content/505",[427,5.17,503,6.728]],["sidebarParentCategories/505",[]],["title/513",[490,4.808]],["content/513",[2,0.905,3,2.086,8,2.229,25,1.912,34,1.76,62,2.911,66,2.966,69,3.175,70,2.246,71,2.298,91,2.966,102,1.243,115,2.623,168,3.293,259,5.218,260,3.455,279,3.545,284,2.437,319,2.951,337,2.189,341,3.025,342,2.758,388,4.309,406,2.59,427,3.642,496,1.644,497,4.309,498,3.748,499,5.033,500,4.739,501,3.545,502,4.739,504,6.024,505,6.024]],["sidebarParentCategories/513",[102,1.048,206,1.341]],["title/514",[69,2.391]],["content/514",[3,1.717,17,1.786,55,0.949,59,2.441,62,1.835,69,3.082,115,2.159,120,2.775,173,3.547,337,2.392,340,2.441,341,2.489,386,2.091,415,2.783,487,3.608,497,3.547,506,6.198,507,3.901,508,4.958,509,4.958,510,4.467,511,4.958,512,2.775,513,2.775,514,4.936,515,4.796,516,7.146,517,2.194,518,4.467,519,4.143,520,4.143,521,6.241,522,5.764,523,4.143,524,3.289,525,4.467,526,2.594,527,4.143,528,3.901,529,4.143,530,3.901,531,4.958,532,5.427,533,3.547,534,4.958,535,4.143,536,4.143,537,4.958,538,4.958,539,4.143]],["sidebarParentCategories/514",[102,1.048,206,1.341]],["title/515",[341,3.511]],["content/515",[302,3.23,328,4.486,337,2.003,430,7.221,506,5.512,540,5.734,541,7.221,542,5.317,543,7.221]],["sidebarParentCategories/515",[102,1.048,206,1.341]],["title/516",[342,3.201]],["content/516",[58,0.82,66,3.878,252,2.659,337,2.322,341,4.666,342,4.254,494,4.21,544,7.095]],["sidebarParentCategories/516",[102,1.048,206,1.341]],["title/517",[91,2.874,463,1.367]],["content/517",[17,2.546,58,0.736,69,2.977,70,2.486,71,2.544,91,4.287,284,2.698,319,3.266,406,2.327,415,2.48,464,2.689,517,3.128,545,5.561,546,3.549,547,7.069,548,7.069,549,7.069,550,7.069]],["sidebarParentCategories/517",[102,1.048,206,1.341]],["title/518",[31,0.542,463,1.367]],["content/518",[2,1.422,3,1.523,17,1.584,25,1.396,29,2.209,30,1.3,44,3.289,58,0.986,65,3.289,67,2.301,69,1.504,70,1.256,71,1.285,91,2.166,111,2.48,123,2.086,179,2.351,223,2.659,227,2.659,230,3.024,235,4.549,256,3.461,267,1.895,294,2.918,296,2.737,305,1.431,326,3.024,336,2.049,350,2.489,356,2.166,415,2.224,463,1.03,464,1.673,465,2.301,490,3.024,517,1.947,546,2.209,551,2.405,552,4.067,553,3.963,554,6.079,555,3.963,556,4.928,557,5.295,558,3.675,559,4.399,560,1.947,561,1.523,562,2.659,563,4.399,564,3.147,565,1.673,566,3.963,567,1.721,568,2.254,569,2.166,570,2.823,571,2.823,572,3.963,573,3.963,574,3.675,575,3.675,576,3.963,577,3.963,578,4.399,579,6.338,580,4.399,581,2.166,582,3.963]],["sidebarParentCategories/518",[102,1.048,206,1.341]],["title/519",[252,1.691,337,1.252,496,1.367]],["content/519",[2,1.482,3,2.253,25,2.064,31,0.604,69,2.224,70,2.594,71,2.654,252,2.196,267,1.945,310,2.743,323,2.375,337,1.625,338,3.92,342,3.784,385,2.787,496,1.775,583,4.653,584,5.86,585,7.446,586,5.86,587,5.86,588,5.435,589,5.86,590,3.332]],["sidebarParentCategories/519",[102,1.048,206,1.341]],["title/520",[463,1.367,591,2.931]],["content/520",[8,2.048,17,1.994,34,1.617,36,3.06,55,1.368,58,0.774,68,2.752,69,1.893,70,2.124,71,2.454,91,1.803,93,1.839,111,1.433,189,3.257,222,3.026,252,1.236,254,2.1,265,2.491,271,3.06,292,2.739,338,2.626,341,3.351,342,3.055,344,1.121,349,1.148,350,1.058,396,2.41,406,2.197,463,1.297,494,1.958,495,1.876,496,1.511,517,2.45,545,2.881,546,2.779,589,3.299,590,1.876,591,2.779,592,3.662,593,3.299,594,3.662,595,3.662,596,5.536,597,3.662,598,6.674,599,3.662,600,2.049,601,3.662,602,3.662,603,3.662,604,3.662,605,3.06,606,3.662,607,3.662,608,2.739,609,1.876,610,4.774,611,3.662,612,2.155,613,2.049,614,3.662,615,1.839,616,5.536,617,4.987,618,5.536,619,3.662,620,5.562,621,6.674,622,3.662,623,2.214,624,3.662,625,4.139,626,3.662,627,2.518,628,2.62,629,2.881,630,3.662,631,2.881,632,2.881,633,2.002]],["sidebarParentCategories/520",[102,1.048,206,1.341]],["title/521",[31,0.465,284,1.552,319,1.879]],["content/521",[2,1.302,31,0.913,50,1.858,55,1.428,58,0.731,62,2.183,69,1.364,70,1.685,71,1.724,81,4.057,84,1.964,87,1.119,89,2.85,103,1.656,104,2.982,117,1.858,140,2.377,146,1.313,172,1.895,189,2.347,210,2.125,212,2.043,220,2.982,251,2.853,284,1.236,310,1.682,323,2.833,344,1.806,347,2.154,348,1.592,349,2.597,359,3.324,415,1.399,463,0.934,465,2.086,473,3.472,496,1.61,506,2.742,634,3.332,635,2.232,636,3.988,637,3.988,638,1.964,639,5.147,640,4.829,641,3.222,642,3.988,643,3.786,644,5.315,645,3.332]],["sidebarParentCategories/521",[102,1.048,206,1.341]],["title/522",[111,1.717,172,1.41,200,1.669,646,1.975]],["content/522",[2,1.147,6,2.014,9,3.18,10,3.309,11,2.968,29,2.322,31,0.773,34,1.351,35,2.082,43,3.202,55,0.904,56,3.639,62,2.431,63,3.068,68,2.431,111,3.754,112,2.322,139,3.639,155,3.068,172,2.822,191,2.529,200,3.164,231,4.517,261,2.278,263,3.235,267,1.383,284,1.433,319,1.735,406,1.523,415,2.305,456,2.797,464,1.76,491,1.982,502,3.639,565,1.76,567,2.99,613,3.676,647,2.878,648,6.57,649,2.42,650,0.887,651,1.172,652,3.639,653,3.309,654,3.309,655,3.18,656,4.913,657,2.968,658,3.299,659,3.865]],["sidebarParentCategories/522",[102,1.048,206,1.341]],["title/523",[2,0.752,55,0.689,567,1.96]],["content/523",[2,1.105,29,3.695,31,0.684,43,3.131,68,2.723,111,2.88,139,5.789,155,4.881,172,2.364,191,4.023,200,2.799,231,6.135,491,3.153,567,2.88,654,5.264,655,5.06,656,5.503]],["sidebarParentCategories/523",[102,1.048,206,1.341]],["title/524",[55,0.689,650,0.534,651,0.769]],["content/524",[6,3.053,9,4.822,10,5.017,11,4.5,31,0.651,35,3.156,43,3.04,56,5.518,62,2.595,63,4.652,111,3.391,112,3.521,172,2.253,565,2.668,613,3.925,650,0.924,651,1.076,656,5.244,657,4.5,658,4.35,659,5.86]],["sidebarParentCategories/524",[102,1.048,206,1.341]],["title/525",[241,3.215,284,1.552,319,1.879]],["content/525",[2,1.198,6,2.183,31,0.801,55,1.368,69,1.714,70,1.432,71,1.465,103,3.314,117,2.336,146,1.651,168,2.741,241,5.808,247,3.031,248,3.217,252,1.693,259,3.325,284,2.472,311,3.586,319,1.881,335,2.219,344,2.128,449,2.517,463,1.628,478,3.447,479,4.516,480,5.716,481,5.198,494,2.68,545,3.944,634,4.189,640,3.12,660,5.014,661,5.014,662,5.469,663,5.967,664,5.198,665,2.806,666,6.952,667,5.808,668,6.952,669,5.014,670,4.516]],["sidebarParentCategories/525",[102,1.048,206,1.341]],["title/526",[31,0.542,50,2.719]],["content/526",[31,0.893,50,4.479,55,1.451,58,0.623,69,2.046,70,1.709,71,1.748,101,4.708,152,3.203,284,2.427,319,2.938,545,4.708,671,3.969,672,7.832,673,7.832,674,7.832,675,7.832,676,6.544,677,7.832]],["sidebarParentCategories/526",[102,1.048,206,1.341]],["title/527",[386,2.462,678,4.176]],["content/527",[22,2.868,31,0.632,34,2.483,55,1.169,58,0.708,87,1.759,102,1.753,103,2.824,150,2.834,189,4.001,201,5.35,235,3.806,245,4.001,260,3.9,407,2.45,463,1.593,671,4.511,679,4.676,680,6.801,681,5.35,682,3.718,683,4.511,684,4.865]],["sidebarParentCategories/527",[102,1.048,206,1.341]],["title/528",[55,0.803,87,1.107]],["content/528",[58,0.865,103,3.452,201,6.541,235,4.652,682,4.545]],["sidebarParentCategories/528",[102,1.048,206,1.341]],["title/529",[34,1.464,55,0.689,150,1.67]],["content/529",[34,2.407,87,1.562,150,2.746,245,4.847,683,5.464,684,5.893]],["sidebarParentCategories/529",[102,1.048,206,1.341]],["title/530",[40,3.632,58,0.608]],["content/530",[2,1.248,31,0.772,42,4.545,204,5.173,205,7.489]],["sidebarParentCategories/530",[102,1.048,206,1.341]],["title/535",[565,2.22,571,3.746]],["content/535",[2,0.657,3,1.516,21,3.444,25,1.389,29,2.198,30,1.867,34,2.165,43,1.536,58,0.771,62,1.62,66,2.155,68,2.741,69,2.533,91,3.648,102,0.903,111,1.713,146,1.441,149,2.899,163,2.809,171,2.155,182,2.004,225,2.198,243,3.01,261,3.11,279,2.576,284,1.356,296,2.724,305,1.424,323,1.598,337,1.094,339,2.724,340,2.155,341,3.171,342,2.004,348,1.181,349,1.373,407,1.577,409,1.818,422,2.891,484,2.115,487,2.29,501,2.576,512,2.45,532,4.969,551,2.393,554,3.273,565,3.513,571,5.518,633,2.393,638,2.155,647,2.724,649,2.29,650,0.467,651,0.672,685,3.943,686,3.657,687,3.273,688,1.356,689,3.273,690,3.273,691,3.131,692,3.235,693,3.273,694,3.657,695,3.657,696,3.01,697,3.657,698,2.903,699,2.903,700,3.444,701,5.277,702,3.657,703,3.657]],["sidebarParentCategories/535",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/536",[337,1.252,565,1.906,571,3.215]],["content/536",[2,1.387,3,1.839,25,1.685,58,0.553,62,1.965,66,3.561,69,2.473,70,2.521,71,2.58,111,2.078,190,2.903,261,2.615,302,2.914,304,4.178,337,1.807,338,3.901,342,3.311,371,2.778,406,2.708,496,1.974,506,3.651,565,2.751,570,4.641,571,5.277,647,3.304,704,3.971,705,7.964,706,3.971,707,4.5,708,5.311,709,6.515,710,7.232,711,4.437,712,4.437]],["sidebarParentCategories/536",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/537",[31,0.408,565,1.669,571,2.816,646,1.975]],["content/537",[2,1.38,31,0.839,55,1.479,58,0.491,69,1.019,70,1.673,71,0.871,96,1.96,172,1.516,216,4.041,238,2.28,254,2.707,310,1.257,329,2.111,337,0.745,338,2.239,344,1.445,348,2.389,349,1.48,350,2.098,406,1.554,491,1.277,496,1.599,565,3.287,567,3.023,568,2.418,569,2.324,570,3.029,640,2.937,641,2.767,650,0.504,705,3.944,713,4.896,714,2.049,715,4.276,716,3.376,717,4.276,718,3.131,719,3.713,720,4.42,721,4.252,722,5.568,723,4.252,724,5.243,725,4.252,726,4.382]],["sidebarParentCategories/537",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/538",[323,2.553]],["content/538",[42,3.895,58,0.911,216,4.577,222,3.895,350,2.735,389,4.086,409,2.959,418,4.433,422,3.262,565,3.602,569,3.508,649,3.727,650,1.01,651,1.093,727,3.65]],["sidebarParentCategories/538",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/539",[68,1.444,69,1.335,305,1.269,565,1.485,571,2.505]],["content/539",[8,1.644,17,1.6,55,1.306,58,0.9,69,2.957,146,1.463,149,2.923,162,4.955,219,2.851,302,3.01,305,1.445,341,3.205,342,2.922,356,2.187,409,1.845,415,1.559,517,1.966,546,2.23,565,2.842,571,4.794,610,4.566,625,3.322,627,4.389,691,4.566,707,2.764,728,3.178,729,7.751,730,8.385,731,5.022,732,3.054,733,5.022,734,3.322,735,3.495,736,3.712,737,6.242,738,5.333,739,4.442,740,3.712,741,3.712,742,5.333,743,5.333,744,5.333,745,3.712,746,3.712]],["sidebarParentCategories/539",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/531",[2,0.877,567,2.284]],["content/531",[2,1.456,3,1.375,21,3.124,25,1.26,29,1.993,31,0.651,43,2.063,58,0.806,66,1.955,68,2.865,69,2.395,91,3.448,102,0.819,111,1.554,139,3.124,149,2.741,155,2.633,169,3.317,171,1.955,172,1.889,191,2.17,200,1.51,223,2.4,231,4.043,261,2.895,279,2.336,284,1.23,305,1.291,323,1.449,337,0.992,339,2.471,340,1.955,341,2.953,342,1.818,348,1.071,349,1.245,407,1.43,409,2.442,487,2.077,491,1.701,501,2.336,512,2.222,532,4.626,546,1.993,551,2.17,554,2.969,567,3.677,633,2.17,638,1.955,647,2.471,649,2.077,650,0.627,651,0.902,654,2.84,655,2.73,656,2.969,688,1.822,689,2.969,690,2.969,691,2.84,692,3.013,693,2.969,694,3.317,695,3.317,696,2.73,697,3.317,698,2.633,699,2.633,700,3.124,701,4.913,702,3.317,703,3.317,747,3.317,748,3.97,749,2.548,750,2.969,751,3.97,752,3.577,753,3.124]],["sidebarParentCategories/531",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/532",[2,0.752,337,1.252,567,1.96]],["content/532",[2,1.404,3,1.907,25,1.747,31,0.511,58,0.573,62,2.037,66,3.649,69,2.534,70,2.559,71,2.618,111,2.155,261,2.711,302,2.219,337,1.852,338,3.974,342,3.393,371,2.88,406,2.951,496,1.503,506,3.786,567,3.77,647,3.426,704,4.117,706,4.117,707,4.612,711,4.6,712,4.6,718,5.944,754,4.96,755,5.506,756,7.411]],["sidebarParentCategories/532",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/533",[2,0.659,31,0.408,567,1.717,646,1.975]],["content/533",[2,1.361,31,0.902,55,1.474,69,1.55,70,1.849,71,1.324,310,1.911,329,2.721,337,1.132,344,1.982,348,2.224,349,2.03,350,2.518,496,2.062,567,3.652,640,4.029,641,3.422,645,3.787,714,3.116,715,5.288,716,4.632,717,5.288,718,4.295,726,3.389,757,4.083]],["sidebarParentCategories/533",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/534",[2,0.586,68,1.444,69,1.335,305,1.269,567,1.527]],["content/534",[2,1.122,8,1.644,17,1.6,55,1.306,58,0.9,69,2.957,146,1.463,149,2.923,162,4.955,219,2.851,302,3.01,305,1.445,341,3.205,342,2.922,356,2.187,409,1.845,415,1.559,517,1.966,546,2.23,567,2.923,610,4.566,625,3.322,627,4.389,691,4.566,707,2.764,728,3.178,729,7.751,730,8.385,731,5.022,732,3.054,733,5.022,734,3.322,735,3.495,736,3.712,737,6.242,738,5.333,740,3.712,741,3.712,742,5.333,743,5.333,744,5.333,745,3.712,746,3.712,758,4.002]],["sidebarParentCategories/534",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/540",[581,3.443]],["content/540",[9,3.609,10,3.754,11,4.604,24,3.368,25,1.666,29,3.602,30,1.551,32,2.025,40,3.266,58,0.747,60,4.728,62,1.942,63,4.759,68,1.942,71,1.533,106,3.173,118,2.805,119,3.01,137,3.481,211,3.481,242,3.754,255,4.728,297,3.754,317,3.343,332,3.754,422,2.403,434,4.759,562,3.173,565,2.729,575,4.385,581,4.53,605,4.385,658,2.635,686,4.385,727,4.713,759,5.248,760,4.385,761,3.609,762,4.129,763,4.385,764,3.088,765,5.248,766,5.248,767,4.385,768,5.248,769,4.728,770,5.248,771,5.248,772,5.248,773,5.248,774,4.385,775,3.173]],["sidebarParentCategories/540",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/541",[337,1.459,581,2.874]],["content/541",[2,0.799,3,1.204,5,2.307,25,1.104,31,0.323,34,1.016,55,1.294,58,0.673,68,1.287,70,1.52,71,1.555,95,2.62,111,1.361,162,3.53,211,2.307,302,2.918,337,1.33,338,3.066,341,2.672,342,2.96,344,1.979,371,1.819,386,1.467,388,2.488,406,2.57,415,1.867,496,1.452,526,3.382,581,1.712,582,3.133,593,3.133,610,3.807,615,1.746,623,4.379,625,2.601,627,3.659,647,2.164,655,3.659,704,2.601,776,3.807,777,8.233,778,3.478,779,6.465,780,5.322,781,9.931,782,5.322,783,5.322,784,5.322,785,5.322,786,5.322,787,5.322,788,5.322,789,5.322,790,5.322,791,5.322,792,5.322,793,5.322,794,5.322,795,5.322,796,5.322,797,5.322,798,5.322,799,5.322,800,7.032,801,5.322,802,3.478]],["sidebarParentCategories/541",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/542",[31,0.465,581,2.467,646,2.254]],["content/542",[2,1.166,30,1.559,31,0.721,34,1.004,55,1.433,58,0.549,70,0.982,87,1,95,1.693,111,1.345,113,1.798,149,1.345,153,2.206,168,1.879,172,2.062,180,1.45,182,1.574,183,2.872,200,1.308,216,1.798,222,1.879,265,1.547,310,1.45,328,1.924,329,1.9,332,2.459,337,1.318,338,1.63,344,1.052,348,2.437,349,1.078,350,2.079,396,1.497,415,1.206,419,3.097,463,0.805,484,1.661,496,1.44,510,3.097,526,1.798,565,2.007,567,2.512,569,1.693,581,3.824,590,1.761,640,2.139,641,2.191,646,1.547,650,0.367,715,3.385,716,2.459,717,3.385,718,2.28,720,3.499,726,3.945,727,2.702,760,2.872,776,2.459,803,2.571,804,3.774,805,2.571,806,2.872,807,4.752,808,4.752,809,4.752,810,4.752,811,4.752,812,3.438,813,3.438,814,3.097,815,2.28,816,2.28,817,2.571,818,4.752,819,3.097,820,3.945,821,4.752,822,3.438,823,5.275,824,3.438,825,3.438,826,2.023,827,2.023]],["sidebarParentCategories/542",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/543",[650,0.623,651,0.896]],["content/543",[2,1.317,3,2.267,6,2.003,9,3.164,10,3.292,11,2.953,25,2.077,31,0.427,35,2.071,42,2.516,43,2.297,56,3.621,58,0.681,62,2.422,63,3.052,68,3.071,91,3.223,102,0.949,111,3.431,112,2.311,172,1.478,235,2.575,242,3.292,261,2.266,296,2.864,317,1.882,339,2.864,348,2.239,447,3.441,542,3.052,551,3.578,565,3.335,567,2.981,569,2.266,613,3.663,615,2.311,649,2.407,650,1,651,1.273,656,3.441,657,2.953,658,3.825,659,3.845,686,3.845,688,1.426,828,4.602,829,4.146,830,4.602,831,3.845,832,3.621,833,4.602,834,4.602,835,3.441]],["sidebarParentCategories/543",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/544",[337,1.252,650,0.534,651,0.769]],["content/544",[2,0.958,3,0.956,5,1.831,22,1.164,25,0.876,31,0.256,35,1.998,55,1.027,58,0.462,62,1.021,66,3.141,69,1.904,70,2.331,71,2.526,91,1.359,93,1.386,102,0.569,111,1.08,146,0.909,210,1.599,212,2.274,252,1.88,261,1.359,295,2.064,296,3.97,297,1.975,302,1.112,337,2.394,338,3.316,342,2.921,355,2.945,365,2.945,371,1.444,406,2.585,415,0.968,463,1.304,464,2.841,491,1.902,495,1.414,496,2.038,507,2.172,512,2.484,513,4.179,514,3.465,515,1.669,526,1.444,542,1.831,568,2.853,638,2.186,647,1.718,650,1.039,651,1.532,657,1.771,696,1.898,704,2.064,706,2.064,707,2.763,836,1.975,837,3.829,838,3.754,839,1.898,840,4.387,841,4.771,842,3.32,843,4.387,844,1.831,845,3.999,846,3.32,847,3.999,848,2.487]],["sidebarParentCategories/544",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/545",[55,0.803,514,3.632]],["content/545",[146,2.526,252,2.591,337,2.286,464,2.919,496,2.094,507,6.037,514,5.694,650,0.819,651,1.177,657,4.924,837,5.276,838,4.515]],["sidebarParentCategories/545",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/546",[55,0.803,512,3.267]],["content/546",[93,3.989,297,5.684,337,1.985,512,4.446,515,4.804,542,5.27,650,0.848,651,1.219,696,5.463,839,5.463]],["sidebarParentCategories/546",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/547",[55,0.689,513,2.803,840,3.445]],["content/547",[35,3.084,212,3.511,252,2.313,337,2.325,464,3.249,496,1.87,513,4.779,638,3.374,650,1.039,651,1.495,837,4.712,838,4.032,840,4.712,841,6.387,842,5.124,843,5.872]],["sidebarParentCategories/547",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/548",[55,0.689,513,2.803,843,3.445]],["content/548",[35,3.084,212,3.511,252,2.313,337,2.325,464,3.249,496,1.87,513,4.779,638,3.374,650,1.039,651,1.495,837,4.712,838,4.032,840,5.872,841,6.387,842,5.124,843,4.712]],["sidebarParentCategories/548",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/549",[55,0.689,70,1.43,71,1.464]],["content/549",[22,2.825,55,0.922,66,3.298,69,2.29,70,2.63,71,2.691,91,3.298,295,5.009,337,1.674,355,5.585,365,5.585,406,2.206,463,1.972,464,2.548,491,3.607,495,3.432,496,1.828,650,0.898,651,1.292,838,3.942,844,4.443]],["sidebarParentCategories/549",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/550",[31,0.408,646,1.975,650,0.468,651,0.673]],["content/550",[2,1.361,31,0.902,55,1.46,69,1.55,70,1.849,71,1.324,310,1.911,329,2.721,337,1.132,344,1.982,348,2.224,349,2.03,350,2.518,496,2.062,568,3.317,640,4.029,641,3.422,645,3.787,650,0.93,651,1.264,714,3.116,726,3.389,849,4.849,850,5.833,851,5.481,852,4.532]],["sidebarParentCategories/550",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/551",[514,4.351]],["content/551",[146,2.526,252,2.591,337,2.286,464,2.919,496,2.094,507,6.037,514,5.694,650,0.819,651,1.177,657,4.924,837,5.276,838,4.515]],["sidebarParentCategories/551",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/552",[853,4.808]],["content/552",[58,0.73,231,4.822,337,2.165,514,4.364,527,5.86,528,5.518,529,5.86,530,5.518,533,5.017,535,5.86,536,5.86,539,5.86,650,0.748,651,1.076,654,5.017,655,4.822,846,5.244,853,6.938,854,6.318,855,6.318]],["sidebarParentCategories/552",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/553",[856,5.501]],["content/553",[58,0.736,152,2.891,337,2.175,514,4.398,527,5.906,528,5.561,529,5.906,530,5.561,533,5.056,535,5.906,536,5.906,539,5.906,650,0.754,651,1.085,846,5.286,853,4.86,855,6.368,856,5.561,857,6.368,858,6.368,859,7.275,860,6.368]],["sidebarParentCategories/553",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/554",[650,0.623,651,0.896]],["content/554",[18,3.486,22,3.652,43,1.779,55,0.698,93,2.546,148,2.546,157,4.236,165,3.989,170,3.486,233,3.791,238,2.45,247,3.065,252,1.712,259,3.363,296,4.36,337,1.751,385,2.172,386,2.138,405,4.568,407,1.826,415,1.779,487,2.652,515,3.065,521,3.989,591,2.546,620,5.239,650,0.856,651,1.232,657,3.254,696,3.486,706,3.791,831,4.236,832,6.812,861,4.568,862,4.018,863,5.512,864,5.07,865,5.07,866,5.07,867,5.07,868,5.07,869,5.07,870,5.07,871,4.496,872,4.236,873,3.486,874,3.791,875,5.239,876,3.989,877,5.07,878,3.791,879,3.254,880,2.908,881,3.791,882,3.989,883,5.07,884,5.07]],["sidebarParentCategories/554",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/555",[337,1.459,469,4.365]],["content/555",[2,1.123,19,4.29,337,2.252,340,3.684,409,3.107,415,2.625,471,5.352,472,5.352,487,3.913,501,4.402,650,0.961,651,1.148,885,5.144,886,4.29,887,5.886]],["sidebarParentCategories/555",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/556",[513,3.267,843,4.014]],["content/556",[35,2.786,121,4.106,212,3.171,252,2.09,337,2.487,356,3.048,464,3.046,465,3.238,487,3.238,496,1.689,513,4.481,519,5.172,520,5.172,521,4.87,522,5.172,523,5.172,524,4.106,638,3.942,650,1.001,651,1.44,837,4.256,838,3.642,840,5.505,841,5.987,842,4.629,843,4.256]],["sidebarParentCategories/556",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/557",[853,4.808]],["content/557",[58,0.82,231,5.415,337,1.968,524,5.224,650,0.84,651,1.208,654,5.634,655,5.415,853,6.39,854,7.095]],["sidebarParentCategories/557",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/558",[856,5.501]],["content/558",[58,0.827,152,3.25,337,1.985,524,5.27,650,0.848,651,1.219,856,6.251,857,7.157,858,7.157,859,6.638]],["sidebarParentCategories/558",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/559",[650,0.623,651,0.896]],["content/559",[22,2.396,93,2.852,157,4.746,159,3.434,170,3.906,249,3.535,296,5.882,297,5.414,385,3.242,390,3.906,415,1.993,448,3.645,487,2.971,513,3.179,515,5.145,542,5.02,551,3.105,561,1.967,620,4.248,623,3.434,633,4.137,638,2.797,650,0.807,651,1.161,655,3.906,657,3.645,836,4.064,863,4.469,875,4.248,880,3.258,881,4.248,882,4.469,888,6.323,889,5.681,890,5.681,891,5.681,892,5.681,893,5.681,894,5.117,895,3.342,896,5.681,897,5.681]],["sidebarParentCategories/559",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/560",[337,1.459,469,4.365]],["content/560",[2,1.123,19,4.29,337,2.252,340,3.684,409,3.107,415,2.625,471,5.352,472,5.352,487,3.913,501,4.402,650,0.961,651,1.148,885,5.144,886,4.29,887,5.886]],["sidebarParentCategories/560",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/564",[513,3.267,840,4.014]],["content/564",[35,2.786,121,4.106,212,3.171,252,2.09,337,2.487,356,3.048,464,3.046,465,3.238,487,3.238,496,1.689,513,4.481,519,5.172,520,5.172,521,4.87,522,5.172,523,5.172,524,4.106,638,3.942,650,1.001,651,1.44,837,4.256,838,3.642,840,4.256,841,5.987,842,4.629,843,5.505]],["sidebarParentCategories/564",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/565",[650,0.623,651,0.896]],["content/565",[252,2.569,337,2.275,470,5.986,496,2.076,513,4.258,524,6.039,650,0.812,651,1.167,657,4.882,888,6.357,898,4.6,899,7.608,900,7.608]],["sidebarParentCategories/565",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/566",[337,1.459,469,4.365]],["content/566",[2,1.123,19,4.29,337,2.252,340,3.684,409,3.107,415,2.625,471,5.352,472,5.352,487,3.913,501,4.402,650,0.961,651,1.148,885,5.144,886,4.29,887,5.886]],["sidebarParentCategories/566",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/561",[70,1.667,71,1.705]],["content/561",[22,2.825,55,0.922,66,3.298,69,2.29,70,2.63,71,2.691,91,3.298,295,5.009,337,1.674,355,5.585,365,5.585,406,2.206,463,1.972,464,2.548,491,3.607,495,3.432,496,1.828,650,0.898,651,1.292,838,3.942,844,4.443]],["sidebarParentCategories/561",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/562",[608,5.229]],["content/562",[6,2.852,58,0.949,91,3.226,93,3.29,212,3.357,284,2.03,315,4.173,319,2.458,337,2.075,349,2.054,355,4.346,365,4.346,491,2.807,546,3.29,608,7.167,649,3.427,650,1.022,651,1.471,836,4.687,901,6.552]],["sidebarParentCategories/562",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/563",[608,4.365,902,3.746]],["content/563",[58,0.902,70,2.474,71,2.531,93,3.521,120,3.925,212,3.593,284,2.173,302,2.826,319,2.631,337,1.752,355,4.652,365,4.652,406,2.309,491,3.005,608,5.244,650,1.003,651,1.443,836,5.017]],["sidebarParentCategories/563",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/567",[512,3.913]],["content/567",[93,3.363,115,2.916,170,4.606,259,4.443,296,4.168,297,4.792,337,1.674,348,1.808,501,4.955,512,3.749,515,5.091,542,4.443,590,3.432,650,0.715,651,1.028,678,4.792,696,4.606,839,4.606,894,6.035,903,4.443,904,4.829,905,5.597,906,6.699,907,7.036,908,3.749,909,6.699,910,4.443]],["sidebarParentCategories/567",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/568",[337,1.459,469,4.365]],["content/568",[2,1.123,19,4.29,337,2.252,340,3.684,409,3.107,415,2.625,471,5.352,472,5.352,487,3.913,501,4.402,650,0.961,651,1.148,885,5.144,886,4.29,887,5.886]],["sidebarParentCategories/568",[31,0.257,102,0.571,206,0.731,463,0.649,650,0.295,651,0.425]],["title/577",[569,2.874,650,0.623]],["content/577",[2,0.886,3,2.043,21,3.138,25,1.872,29,2.002,30,1.179,42,2.18,43,1.399,58,0.808,59,1.964,66,1.964,68,2.598,69,2.401,91,3.457,102,0.823,113,2.086,146,1.313,149,2.748,150,1.33,151,2.043,160,3.138,171,1.964,182,1.826,191,2.18,216,2.086,222,2.18,230,2.742,261,2.905,279,2.347,284,1.828,305,1.297,317,1.631,323,1.456,329,1.436,337,0.996,339,2.482,340,1.964,341,2.962,342,1.826,348,1.076,349,1.25,407,1.436,409,1.656,453,2.287,484,1.927,487,2.086,501,2.347,512,2.232,532,4.642,540,4.22,551,2.18,554,2.982,562,2.411,569,4.27,633,2.18,638,1.964,647,2.482,649,2.086,650,0.983,651,0.612,658,2.962,688,1.236,689,2.982,690,2.982,691,2.853,692,3.023,693,2.982,694,3.332,695,3.332,696,2.742,697,3.332,698,2.645,699,2.645,700,3.138,701,4.929,702,3.332,703,3.332,775,2.411,911,3.988,912,3.593,913,3.138,914,2.853,915,2.853,916,3.988,917,3.593,918,3.988,919,3.988,920,3.593]],["sidebarParentCategories/577",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/578",[337,1.252,569,2.467,650,0.534]],["content/578",[2,1.242,3,1.861,25,1.706,42,2.938,58,0.559,62,1.989,66,3.59,69,2.493,70,2.534,71,2.592,163,3.449,190,2.938,261,2.646,329,1.936,337,1.822,338,3.925,342,3.338,406,2.724,422,2.46,496,1.467,506,3.695,568,3.735,569,4.901,647,3.344,650,0.778,704,4.019,706,4.019,707,4.537,711,4.49,712,4.49,921,7.298,922,5.374,923,7.291]],["sidebarParentCategories/578",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/579",[31,0.408,569,2.16,646,1.975,650,0.468]],["content/579",[2,1.338,31,0.759,55,1.479,58,0.501,69,1.043,70,1.699,71,0.892,111,1.882,172,1.545,200,1.829,216,2.515,310,1.287,329,1.099,337,0.762,344,1.472,348,2.406,349,1.508,350,1.719,396,2.093,496,1.624,565,1.829,567,3.054,568,2.463,569,3.617,640,2.992,641,2.804,650,0.635,714,2.098,715,4.333,716,3.44,717,4.333,718,3.189,719,3.783,720,4.478,724,5.312,726,4.45,727,2.463,814,4.332,921,3.783,924,5.312,925,4.332,926,6.139,927,3.189,928,2.992,929,3.086,930,3.783,931,3.783,932,4.332,933,3.596,934,2.24]],["sidebarParentCategories/579",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/580",[323,2.553]],["content/580",[2,0.449,19,2.714,55,1.244,58,0.611,59,1.472,70,0.854,71,1.716,80,2.694,81,2.056,89,1.445,111,1.17,140,1.907,141,2.499,144,2.499,146,0.985,150,1.958,171,2.33,190,1.635,209,3.55,210,3.116,212,1.532,222,1.635,226,6.375,249,1.861,302,1.907,305,2.366,317,1.223,329,1.077,344,0.916,348,0.807,350,1.367,389,2.714,409,1.965,415,1.049,418,4.155,421,2.353,422,2.688,423,3.385,427,1.808,473,2.785,506,2.056,526,1.564,540,2.139,568,1.532,569,3.582,590,1.532,605,3.954,650,0.825,658,3.652,707,2.945,719,2.353,725,2.694,727,3.963,750,3.539,908,2.648,914,3.385,921,4.62,924,3.723,926,6.086,927,3.139,928,2.945,929,3.037,930,2.353,931,4.62,932,2.694,933,3.539,934,1.393,935,1.861,936,2.991,937,2.991,938,4.28,939,2.353,940,2.694,941,2.056,942,2.353,943,2.991,944,1.919,945,1.302,946,4.732,947,4.732,948,2.056,949,4.768,950,2.991,951,7.274,952,1.919,953,2.694,954,2.991,955,2.236,956,1.502,957,2.991,958,2.991,959,2.991,960,2.991,961,2.991]],["sidebarParentCategories/580",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/581",[68,1.444,69,1.335,305,1.269,569,1.922,650,0.416]],["content/581",[8,1.644,17,1.6,55,1.306,58,0.9,69,2.957,146,1.463,149,2.923,162,4.955,219,2.851,302,3.01,305,1.445,341,3.205,342,2.922,356,2.187,409,1.845,415,1.559,517,1.966,546,2.23,569,3.678,610,4.566,625,3.322,627,4.389,650,0.797,691,4.566,707,2.764,728,3.178,729,7.751,730,8.385,731,5.022,732,3.054,733,5.022,734,3.322,735,3.495,736,3.712,737,6.242,738,5.333,740,3.712,741,3.712,742,5.333,743,5.333,744,5.333,745,3.712,746,3.712,758,4.002]],["sidebarParentCategories/581",[31,0.333,102,0.739,206,0.946,463,0.84]],["title/569",[87,1.326]],["content/569",[2,0.919,29,2.105,30,2.762,31,0.738,34,2.112,42,2.292,50,1.953,53,1.665,55,1.254,58,0.753,87,1.603,102,0.865,103,2.542,118,4.249,119,4.146,149,2.829,150,2.65,151,2.148,171,2.065,172,1.347,182,3.31,201,3.299,216,2.193,225,2.105,235,2.346,245,2.467,252,1.416,254,2.405,284,1.897,319,2.296,323,1.531,329,2.604,349,1.315,350,1.768,409,1.741,415,1.471,427,3.701,449,2.105,465,3.202,484,3.493,491,1.796,564,3,565,1.595,569,2.065,581,3.56,583,3,600,2.346,650,0.771,651,0.643,658,2.105,682,2.292,683,2.781,684,3,775,3.701,949,2.467,952,2.691,956,2.105,962,1.856,963,2.781]],["sidebarParentCategories/569",[]],["title/570",[31,0.465,55,0.689,349,1.571]],["content/570",[427,5.17,956,4.294]],["sidebarParentCategories/570",[]],["title/571",[34,1.464,55,0.689,150,1.67]],["content/571",[34,2.407,87,1.562,150,2.746,245,4.847,683,5.464,684,5.893]],["sidebarParentCategories/571",[]],["title/572",[55,0.689,350,1.447,581,2.467]],["content/572",[58,0.857,87,1.562,350,2.379,409,3.421,581,4.056,952,5.286]],["sidebarParentCategories/572",[]],["title/573",[30,0.945,55,0.44,182,1.463,216,1.672,329,1.152,484,1.545,565,1.216]],["content/573",[30,2.288,42,4.231,87,1.468,171,3.811,182,3.543,329,2.788,484,3.739,564,5.537,569,3.811,581,3.811,650,0.981,658,3.886]],["sidebarParentCategories/573",[]],["title/574",[30,1.481,55,0.689,149,1.96]],["content/574",[30,2.825,31,0.604,50,3.03,53,2.583,87,1.568,102,1.342,118,5.109,119,5.21,149,2.545,150,2.169,151,3.332,172,2.09,182,2.978,252,2.196,284,2.015,319,2.44,323,2.375,329,2.343,415,2.282,465,3.402,484,3.143,491,2.787,583,4.653,600,3.64,775,3.933,949,3.827]],["sidebarParentCategories/574",[]],["title/575",[55,0.803,449,2.931]],["content/575",[103,3.551,465,4.473]],["sidebarParentCategories/575",[]],["title/576",[55,0.537,58,0.406,650,0.416,651,0.599,962,1.727]],["content/576",[427,5.17,963,5.672]],["sidebarParentCategories/576",[]],["title/582",[31,0.542,349,1.83]],["content/582",[2,1.388,3,2.704,25,2.478,31,0.725,43,2.739,207,7.033,265,3.513,306,6.523,323,2.85,396,3.399,964,5.368]],["sidebarParentCategories/582",[87,1.218]],["title/583",[473,4.114]],["content/583",[31,0.689,34,2.168,35,3.339,58,0.772,78,6.415,96,3.081,116,5.548,150,2.474,210,2.672,284,2.299,319,2.783,473,5.277,938,4.366,965,5.837,966,5.837,967,5.548]],["sidebarParentCategories/583",[87,1.218]],["title/584",[643,4.487]],["content/584",[2,0.869,17,2.086,31,0.798,50,4.26,55,1.393,96,2.405,117,2.698,140,2.333,147,3.981,172,2.938,189,3.407,200,2.916,210,3.095,252,1.955,254,3.321,264,3.24,323,2.798,335,2.563,344,1.773,359,2.481,463,1.356,496,1.58,643,4.918,670,5.216,902,3.716,968,4.33,969,6.905,970,5.791,971,5.791,972,5.216,973,5.216]],["sidebarParentCategories/584",[87,1.218]],["title/585",[974,5.842]],["content/585",[58,0.82,159,4.762,172,2.53,209,4.762,210,2.837,238,3.805,348,2.125,590,4.035,633,4.305,938,5.468]],["sidebarParentCategories/585",[87,1.218]],["title/586",[975,5.501]],["content/586",[140,3.201,172,2.552,210,2.862,590,4.07,938,4.675,976,7.945,977,7.157,978,5.27,979,7.945,980,6.638]],["sidebarParentCategories/586",[87,1.218]],["title/587",[981,6.993]],["content/587",[58,1.008,62,2.076,84,3.695,111,2.195,121,3.721,140,3.792,155,4.978,210,2.021,238,2.71,252,1.894,317,3.069,396,2.442,649,3.926,945,2.442,969,5.053,972,6.76,975,4.413,982,7.504,983,7.504,984,4.687,985,5.609,986,7.504,987,5.609,988,5.053,989,4.195,990,5.609,991,5.609,992,4.413,993,5.609,994,7.504,995,4.687,996,4.687,997,5.609,998,5.609,999,5.609,1000,5.609,1001,5.609,1002,4.195,1003,5.609]],["sidebarParentCategories/587",[87,1.218]],["title/588",[1004,6.993]],["content/588",[58,0.938,63,4.962,172,2.403,200,2.846,210,2.695,422,3.425,945,3.924,948,5.144,1005,5.594,1006,7.53,1007,6.416,1008,3.614]],["sidebarParentCategories/588",[87,1.218]],["title/589",[228,3.913]],["content/589",[31,0.646,55,1.186,58,0.898,96,3.581,172,2.236,210,2.507,228,4.825,250,6.269,295,6.448,418,4.33,478,4.785,484,3.362,516,6.269,761,4.785,938,4.095,949,4.095,1009,4.945,1010,5.475,1011,6.959,1012,6.959]],["sidebarParentCategories/589",[87,1.218]],["title/590",[1013,4.638]],["content/590",[2,1.235,3,2.237,25,2.049,33,4.018,34,1.887,55,1.132,58,0.672,96,2.682,111,2.527,146,2.126,210,2.326,316,4.144,324,4.283,335,2.858,344,1.977,348,1.743,371,3.378,409,2.682,456,4.974,952,4.144,1013,6.531,1014,6.458,1015,6.458,1016,6.874,1017,6.152,1018,5.396,1019,5.817]],["sidebarParentCategories/590",[87,1.218]],["title/591",[1020,5.842]],["content/591",[2,0.949,31,0.587,55,1.117,58,0.845,62,2.339,96,2.625,146,2.081,151,3.238,152,2.585,210,2.923,243,4.346,335,2.797,344,1.935,404,3.719,945,2.752,995,5.281,996,5.281,1002,4.727,1020,7.49,1021,6.321,1022,6.321,1023,6.321,1024,6.321,1025,6.321,1026,4.973,1027,8.075,1028,5.694,1029,5.694,1030,5.694,1031,5.281,1032,5.281,1033,5.281]],["sidebarParentCategories/591",[87,1.218]],["title/592",[1034,5.842]],["content/592",[19,3.6,31,0.583,46,4.49,89,3.033,96,2.606,117,2.924,152,4.086,180,3.768,210,3.218,239,3.431,268,3.6,284,1.945,423,4.49,613,4.521,688,1.945,928,3.906,934,2.924,935,3.906,945,2.733,1034,5.245,1035,7.278,1036,4.938,1037,6.041,1038,5.654,1039,6.277,1040,4.028,1041,5.654,1042,4.938]],["sidebarParentCategories/592",[87,1.218]],["title/593",[1043,5.842]],["content/593",[19,4.551,25,2.519,31,0.737,58,0.918,68,2.259,89,3.834,96,2.536,145,2.795,204,5.486,210,2.199,239,3.338,343,4.05,423,4.368,560,2.702,600,3.417,629,4.804,934,3.697,941,4.198,945,3.455,1042,4.804,1043,5.102,1044,7.8,1045,5.5,1046,7.149,1047,6.106,1048,5.5,1049,5.102,1050,5.102,1051,3.593,1052,6.106]],["sidebarParentCategories/593",[87,1.218]],["title/594",[1053,6.299]],["content/594",[31,0.689,35,3.339,58,0.934,78,5.307,96,3.081,198,5.548,210,2.672,239,4.056,319,2.783,473,4.366,938,4.366,966,5.837,1053,6.684,1054,5.101,1055,7.419,1056,6.684,1057,7.419]],["sidebarParentCategories/594",[87,1.218]],["title/595",[1058,5.842]],["content/595",[2,1.123,3,2.591,19,4.29,25,2.374,58,0.779,96,3.107,200,2.846,210,2.695,305,2.433,423,5.352,459,1.041,600,4.187,928,4.655,934,3.485,945,3.257,1058,6.251,1059,5.594]],["sidebarParentCategories/595",[87,1.218]],["title/602",[1017,5.229]],["content/602",[]],["sidebarParentCategories/602",[31,0.39,87,0.797,349,1.318]],["title/603",[58,0.522,945,2.181,1016,4.186]],["content/603",[2,1.213,25,2.564,31,0.583,55,1.443,105,4.163,210,2.261,211,4.163,316,4.028,335,3.575,344,2.735,347,2.291,348,1.694,349,2.533,433,3.906,639,5.359,1013,5.359,1016,6.75,1017,4.694,1018,5.245,1019,5.654,1060,4.49,1061,2.647]],["sidebarParentCategories/603",[31,0.39,87,0.797,349,1.318]],["title/604",[34,1.705,1013,3.872]],["content/604",[2,0.645,55,1.451,58,0.447,89,2.074,96,1.783,111,2.437,146,1.414,191,5.546,224,5.641,335,1.9,344,1.315,371,2.246,409,1.783,526,2.246,935,2.672,938,5.403,992,3.378,1013,4.861,1018,7.131,1062,4.294,1063,4.294,1064,4.294,1065,4.294,1066,4.294,1067,9.182,1068,7.672,1069,9.182,1070,4.294,1071,4.294,1072,4.294,1073,4.294,1074,4.294,1075,4.294]],["sidebarParentCategories/604",[31,0.39,87,0.797,349,1.318]],["title/605",[650,0.623,1017,4.365]],["content/605",[2,1.012,6,2.089,8,1.776,25,1.523,55,1.271,69,1.641,71,1.402,110,5.305,111,1.878,115,2.089,146,1.58,152,2.758,211,3.183,219,3.079,238,2.319,267,1.435,284,2.415,304,3.776,310,2.024,317,1.963,344,2.064,409,1.993,431,3.867,434,3.183,466,3.776,470,3.776,491,2.056,496,1.31,551,2.623,561,1.662,623,4.077,641,2.8,650,0.832,651,0.736,665,2.685,671,3.183,832,3.776,844,4.472,903,4.472,907,4.01,948,3.3,965,3.776,1013,3.183,1017,5.829,1061,2.024,1076,4.799,1077,6.743,1078,6.743,1079,5.634,1080,4.799,1081,4.799,1082,6.743,1083,6.743,1084,4.799,1085,4.799,1086,4.799,1087,4.799,1088,4.799,1089,4.799]],["sidebarParentCategories/605",[31,0.39,87,0.797,349,1.318]],["title/596",[350,1.686,581,2.874]],["content/596",[58,0.772,87,1.407,103,3.081,115,3.23,284,2.299,319,2.783,350,2.59,356,3.653,409,3.081,463,2.1,465,3.881,581,4.746,952,4.761,1090,6.684]],["sidebarParentCategories/596",[87,1.218]],["title/597",[350,2.02]],["content/597",[34,2.186,62,2.768,146,2.463,156,5.886,209,4.523,212,3.833,350,2.161,459,1.041,581,3.684,638,3.684,1091,7.481,1092,4.655,1093,5.594,1094,7.481,1095,9.013,1096,7.481]],["sidebarParentCategories/597",[87,1.218]],["title/598",[34,2.043]],["content/598",[6,1.538,32,2.817,34,2.133,43,1.89,55,1.397,62,1.307,117,1.646,137,3.572,140,3.167,167,2.343,172,1.135,190,1.931,210,2.351,224,2.079,252,1.193,268,2.026,291,3.182,317,3.215,348,0.953,353,2.307,359,3.128,396,3.606,433,2.198,453,2.026,495,1.81,574,2.951,581,3.214,727,2.759,749,2.267,763,5.454,805,2.641,806,5.454,815,2.343,817,4.028,915,2.527,956,3.666,966,2.779,978,5.214,989,2.641,1051,3.841,1097,2.527,1098,4.237,1099,3.182,1100,3.532,1101,3.532,1102,2.951,1103,3.532,1104,5.386,1105,3.532,1106,3.532,1107,3.532,1108,7.861,1109,7.861,1110,7.861,1111,7.861,1112,6.528,1113,5.136,1114,5.386,1115,3.182,1116,3.532,1117,2.198,1118,3.182,1119,2.779,1120,4.852,1121,2.779]],["sidebarParentCategories/598",[87,1.218]],["title/599",[459,0.973]],["content/599",[17,1.525,32,3.274,43,1.485,55,1.402,90,3.165,137,4.088,140,1.705,210,2.618,222,2.314,227,3.726,317,1.731,348,1.142,353,1.813,359,3.421,396,1.843,433,2.634,438,2.314,459,1.18,561,1.466,591,2.125,763,3.537,806,5.15,956,3.095,966,3.33,978,4.088,1051,3.627,1099,3.813,1113,4.849,1117,2.634,1119,3.33,1122,3.813,1123,4.233,1124,8.236,1125,8.236,1126,8.236,1127,8.236,1128,7.193,1129,3.813,1130,6.163,1131,4.233,1132,4.233,1133,4.233,1134,4.233,1135,4.233,1136,4.233,1137,3.813,1138,4.233]],["sidebarParentCategories/599",[87,1.218]],["title/600",[1139,6.299]],["content/600",[55,1.312,222,3.958,353,3.102,396,4.151,552,4.646,1051,5.199,1124,6.522,1125,6.522,1126,6.522,1127,6.522,1128,6.522,1139,6.522,1140,7.24,1141,8.835,1142,7.24]],["sidebarParentCategories/600",[87,1.218]],["title/601",[210,2.519]],["content/601",[32,2.234,62,2.143,209,3.501,210,3.646,305,1.883,317,2.368,406,1.907,581,2.851,727,2.967,734,5.732,816,3.841,817,5.732,908,3.24,938,5.751,945,3.74,948,5.907,996,7.179,1113,4.556,1115,5.216,1119,6.03,1121,6.03,1129,5.216,1143,5.791,1144,5.791,1145,5.791,1146,5.791,1147,5.791,1148,5.791,1149,5.791,1150,5.791]],["sidebarParentCategories/601",[87,1.218]],["title/624",[34,1.705,150,1.946]],["content/624",[29,2.87,30,1.69,31,0.706,34,2.22,50,2.663,67,2.99,87,1.441,102,1.179,103,2.374,108,4.253,115,2.489,149,2.237,150,2.534,151,3.893,152,2.338,153,3.668,162,3.792,225,2.87,245,5.023,251,4.089,252,2.566,260,3.278,279,3.364,284,2.355,319,2.851,323,2.087,349,1.793,356,2.815,415,2.006,465,2.99,491,2.449,583,4.089,635,3.199,683,5.041,684,5.437,949,3.364,1009,4.358,1010,4.498,1151,4.498,1152,3.199]],["sidebarParentCategories/624",[87,1.218]],["title/625",[31,0.408,284,1.359,319,1.646,956,2.203]],["content/625",[8,0.767,31,0.881,34,1.897,50,2.12,55,1.453,58,0.365,69,1.198,70,1,71,1.023,87,0.393,108,2.995,115,1.981,140,1.411,145,1.604,150,1.517,168,1.133,172,1.719,228,1.159,238,1.692,241,4.438,245,3.521,247,2.752,248,2.248,252,1.536,263,1.02,284,1.41,316,4.438,317,2.189,323,1.954,329,2.155,347,2.859,348,2.043,349,1.678,350,1.012,353,2.293,354,2.323,359,1.501,385,0.888,394,3.68,400,2.995,406,1.153,407,0.746,449,1.759,456,2.118,463,1.254,473,3.149,478,1.424,480,4.308,481,2.62,491,1.501,496,1.242,567,2.094,613,2.547,615,1.759,635,1.96,639,2.323,641,1.455,643,2.248,650,0.374,651,0.537,662,2.756,663,2.62,664,1.549,667,4.472,683,4.822,684,2.506,715,2.248,717,2.248,844,1.374,934,1.632,967,2.62,1009,3.724,1054,1.424,1098,2.756,1117,1.289,1153,1.731,1154,1.866,1155,1.866,1156,1.866,1157,2.756,1158,2.756,1159,1.866,1160,1.866,1161,1.866,1162,1.866,1163,1.866,1164,1.731,1165,1.866,1166,1.289,1167,1.731,1168,1.866,1169,2.409,1170,1.731,1171,1.482,1172,1.731,1173,2.62,1174,3.156,1175,1.731,1176,1.731,1177,1.731,1178,1.731]],["sidebarParentCategories/625",[87,1.218]],["title/626",[404,2.948,963,3.323,1009,2.873]],["content/626",[31,0.814,34,1.76,52,5.427,55,1.385,88,4.505,89,2.91,95,3.873,105,3.996,119,4.511,150,2.008,151,3.086,245,4.629,284,1.866,347,2.872,353,2.581,394,4.142,400,3.371,491,2.581,934,2.806,938,3.545,1009,3.455,1054,4.142,1151,4.739,1158,4.739,1169,5.409,1171,4.309,1179,6.024,1180,6.024,1181,7.867,1182,6.024,1183,5.033,1184,5.033]],["sidebarParentCategories/626",[87,1.218]],["title/627",[150,1.172,591,1.765,1185,3.166,1186,2.628,1187,2.937,1188,3.166]],["content/627",[6,1.906,29,2.198,30,1.294,31,0.753,34,1.279,55,1.433,58,0.657,89,2.115,96,1.818,101,3.444,102,0.903,108,2.45,117,2.039,126,3.943,145,2.004,149,1.713,150,2.704,151,2.243,152,1.79,159,2.647,191,2.393,198,3.273,225,2.198,238,2.115,254,2.51,263,2.155,317,1.79,343,2.903,347,1.598,359,1.875,400,2.45,404,3.716,407,1.577,438,2.393,439,6.19,453,2.51,498,2.724,609,2.243,683,2.903,774,3.657,964,3.01,1009,3.622,1068,3.657,1097,3.131,1152,2.45,1166,2.724,1169,4.342,1186,3.273,1188,3.943,1189,4.377,1190,5.689,1191,6.674,1192,3.01,1193,4.377,1194,3.943,1195,5.689,1196,3.943,1197,3.657,1198,3.943,1199,5.277,1200,3.943,1201,3.657,1202,3.657,1203,3.943,1204,3.444,1205,3.444,1206,3.657,1207,3.657]],["sidebarParentCategories/627",[87,1.218]],["title/628",[95,2.16,417,3.281,503,3.452,776,3.139]],["content/628",[2,0.585,31,0.85,34,0.858,35,0.759,50,1.368,55,1.476,58,0.406,87,0.32,89,0.815,95,0.83,96,0.7,101,1.327,108,2.181,115,0.734,117,0.785,140,1.183,145,0.772,150,1.934,151,0.864,152,0.69,168,0.922,172,1.252,198,1.261,228,0.944,238,1.883,241,3.391,245,2.294,247,2.357,248,1.884,252,1.316,254,0.967,263,0.83,279,0.992,284,1.208,316,4.002,323,1.702,329,1.904,340,1.445,343,1.118,344,0.516,347,2.873,348,1.783,349,1.462,350,0.848,353,2.968,354,1.947,359,1.67,394,3.989,400,3.246,407,1.057,415,0.592,449,0.847,456,1.775,473,2.744,478,1.159,480,3.093,481,1.261,491,0.722,496,0.801,526,0.882,553,1.519,561,1.017,567,2.068,609,0.864,615,1.474,635,1.643,639,2.586,640,1.049,641,1.619,643,1.884,650,0.313,651,0.45,662,3.067,663,2.915,664,2.195,667,3.896,683,2.586,714,1.159,715,2.501,716,1.206,717,2.501,718,1.118,757,1.519,774,1.409,776,1.206,934,1.368,938,0.992,945,0.734,967,2.195,975,1.327,980,1.409,1009,2.674,1054,1.159,1068,1.409,1097,1.206,1152,0.944,1154,2.644,1155,1.519,1156,1.519,1157,3.067,1158,2.309,1159,2.644,1160,1.519,1161,1.519,1162,1.519,1163,1.519,1164,1.409,1166,1.049,1168,1.519,1169,4.543,1170,1.409,1171,2.789,1172,1.409,1173,2.195,1174,2.644,1176,1.409,1177,1.409,1178,1.409,1183,1.409,1184,1.409,1194,1.519,1195,2.644,1196,1.519,1197,1.409,1198,1.519,1199,2.453,1200,1.519,1201,1.409,1202,1.409,1203,1.519,1204,1.327,1205,1.327,1206,1.409,1207,1.409,1208,1.519,1209,1.686,1210,1.409,1211,1.519,1212,1.686,1213,1.686,1214,1.409,1215,2.935,1216,1.686,1217,2.935,1218,1.686,1219,1.686,1220,1.686,1221,1.686,1222,1.686,1223,1.686,1224,1.686,1225,1.686,1226,1.686,1227,1.686,1228,1.686]],["sidebarParentCategories/628",[87,1.218]],["title/629",[40,3.632,58,0.608]],["content/629",[145,4.321,150,2.697,263,3.983,1165,7.287,1166,5.033,1167,6.758,1175,6.758]],["sidebarParentCategories/629",[87,1.218]],["title/606",[58,0.366,69,1.202,650,0.375,651,0.539,962,1.555,1007,2.331]],["content/606",[32,2.34,36,6.602,58,0.915,77,3.569,115,3.44,134,4.535,146,1.997,168,3.315,173,4.338,179,3.242,180,2.558,200,3.542,267,1.814,315,3.617,323,2.214,337,1.515,406,1.997,438,3.315,498,3.774,562,3.667,650,0.843,651,1.212,851,3.667,945,2.64,962,3.497,1006,6.602,1007,4.023,1008,2.93,1229,6.065,1230,5.463,1231,6.065,1232,6.065,1233,3.394]],["sidebarParentCategories/606",[87,1.218]],["title/607",[315,2.293,337,1.252,1008,2.42]],["content/607",[62,2.914,66,3.878,212,4.035,315,3.605,337,1.968,464,2.996,512,4.407,513,4.407,514,4.901,638,3.878,1008,3.805]],["sidebarParentCategories/607",[87,1.218]],["title/608",[58,0.457,267,1.312,315,2.009,1008,2.12]],["content/608",[2,1.103,30,1.275,31,0.794,55,1.442,140,1.738,172,1.386,200,2.377,210,1.554,239,3.416,252,1.456,315,3.364,323,1.575,344,1.321,347,1.575,348,1.686,349,1.96,350,1.246,359,1.848,371,2.257,411,3.886,473,2.538,474,3.394,496,1.177,552,2.768,568,2.21,639,4.145,640,2.685,641,2.595,643,2.768,644,3.886,646,1.941,650,0.46,651,0.662,714,2.966,826,2.538,849,3.677,850,3.886,851,4.443,973,3.886,974,3.605,975,3.394,980,3.605,1008,4.443,1040,2.768,1054,2.966,1060,4.47,1234,7.348,1235,4.314,1236,4.314,1237,4.314,1238,6.249,1239,4.314,1240,4.314,1241,4.314,1242,4.314,1243,4.314,1244,4.314,1245,4.314,1246,4.314]],["sidebarParentCategories/608",[87,1.218]],["title/609",[463,1.173,514,3.117,1008,2.42]],["content/609",[]],["sidebarParentCategories/609",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/610",[490,4.808]],["content/610",[22,3.103,153,4.722,302,2.965,315,3.369,328,4.118,501,4.33,515,4.449,528,5.789,533,5.264,681,5.789,863,5.789,871,4.722,873,5.06,879,4.722,895,4.33,905,6.148,1008,3.555,1247,5.503,1248,5.789]],["sidebarParentCategories/610",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/611",[58,0.366,337,0.878,386,1.482,496,0.959,533,2.514,956,1.765]],["content/611",[]],["sidebarParentCategories/611",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/612",[35,1.439,153,2.051,530,2.515,1249,3.197,1250,3.197,1251,3.197,1252,3.197]],["content/612",[337,2.003,533,5.734,846,7.447,853,5.512,860,7.221,881,5.994,1253,8.016]],["sidebarParentCategories/612",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/613",[22,1.646,315,1.787,386,1.646,1008,1.886,1117,2.429]],["content/613",[22,3.442,315,3.736,650,0.871,651,1.252,879,5.238,1008,3.943,1247,6.104]],["sidebarParentCategories/613",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/614",[386,1.646,650,0.416,651,0.599,871,2.505,1254,3.261]],["content/614",[650,0.871,871,5.238,873,5.612,874,6.104,876,6.422,1255,6.82,1256,5.839]],["sidebarParentCategories/614",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/615",[22,1.646,315,1.787,386,1.646,1008,1.886,1257,3.261]],["content/615",[22,2.868,43,2.386,55,0.936,67,3.557,108,3.806,252,2.296,302,3.914,328,3.806,337,2.124,386,3.585,464,2.587,465,3.557,496,1.856,650,0.725,862,3.9,879,4.364,886,3.9,956,3.414,1256,4.865,1258,4.511,1259,7.657,1260,5.35,1261,5.35]],["sidebarParentCategories/615",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/616",[386,1.85,623,2.653,880,2.516,1262,3.666]],["content/616",[55,1.103,650,0.855,881,5.994,882,6.307,1256,5.734,1260,6.307,1261,6.307,1263,8.016,1264,8.016]],["sidebarParentCategories/616",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/630",[463,1.173,513,2.803,1008,2.42]],["content/630",[]],["sidebarParentCategories/630",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/631",[490,4.808]],["content/631",[22,3.236,315,3.513,515,4.639,518,6.912,681,6.037,863,6.037,871,4.924,873,5.276,879,4.924,895,4.515,905,6.411,1008,3.707,1247,5.738,1248,6.037]],["sidebarParentCategories/631",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/632",[58,0.366,337,0.878,386,1.482,496,0.959,524,2.331,956,1.765]],["content/632",[337,2.097,524,5.566,853,5.77,859,7.011]],["sidebarParentCategories/632",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/633",[22,1.646,315,1.787,386,1.646,1008,1.886,1117,2.429]],["content/633",[22,3.442,315,3.736,650,0.871,651,1.252,879,5.238,1008,3.943,1247,6.104]],["sidebarParentCategories/633",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/634",[386,1.646,650,0.416,651,0.599,871,2.505,1254,3.261]],["content/634",[650,0.871,871,5.238,873,5.612,874,6.104,876,6.422,1255,6.82,1256,5.839]],["sidebarParentCategories/634",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/635",[22,1.646,315,1.787,386,1.646,1008,1.886,1257,3.261]],["content/635",[22,2.868,43,2.386,55,0.936,67,3.557,108,3.806,252,2.296,302,3.914,328,3.806,337,2.124,386,3.585,464,2.587,465,3.557,496,1.856,650,0.725,862,3.9,879,4.364,886,3.9,956,3.414,1256,4.865,1258,4.511,1259,7.657,1260,5.35,1261,5.35]],["sidebarParentCategories/635",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/636",[386,1.85,623,2.653,880,2.516,1262,3.666]],["content/636",[55,1.103,650,0.855,881,5.994,882,6.307,1256,5.734,1260,6.307,1261,6.307,1265,8.016,1266,8.016]],["sidebarParentCategories/636",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/617",[463,1.173,512,2.803,1008,2.42]],["content/617",[]],["sidebarParentCategories/617",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/618",[22,2.113,115,2.181,490,3.445]],["content/618",[4,5.179,17,2.608,238,4.269,337,2.208,463,1.696,470,5.696,512,5.336,515,5.342,517,3.204,749,4.646,832,5.696,873,4.978,1208,6.522,1267,7.24,1268,7.24,1269,7.24]],["sidebarParentCategories/618",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/619",[206,1.158,386,1.85,496,1.197,956,2.203]],["content/619",[58,0.663,115,2.771,162,4.222,238,3.076,284,3.107,496,1.737,515,3.849,620,4.76,651,1.564,904,3.651,910,4.222,1270,6.366,1271,6.366,1272,6.366,1273,10.029,1274,6.366,1275,6.366,1276,6.366,1277,6.366,1278,6.366,1279,6.366,1280,6.366]],["sidebarParentCategories/619",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/620",[22,1.646,315,1.787,386,1.646,1008,1.886,1117,2.429]],["content/620",[22,3.442,315,3.736,650,0.871,651,1.252,879,5.238,1008,3.943,1247,6.104]],["sidebarParentCategories/620",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/621",[386,1.646,650,0.416,651,0.599,871,2.505,1254,3.261]],["content/621",[650,0.871,871,5.238,873,5.612,874,6.104,876,6.422,1255,6.82,1281,8.162]],["sidebarParentCategories/621",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/622",[22,1.646,315,1.787,386,1.646,1008,1.886,1257,3.261]],["content/622",[22,2.912,43,2.423,115,3.006,170,4.748,252,2.331,296,4.297,386,3.619,464,2.627,496,1.884,512,4.802,623,4.175,650,0.737,844,4.58,862,3.96,879,4.431,886,3.96,956,3.467,1258,4.58,1282,6.905,1283,7.731,1284,6.905,1285,6.221,1286,6.905,1287,6.221]],["sidebarParentCategories/622",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/623",[284,1.209,386,1.646,623,2.36,910,2.589,1262,3.261]],["content/623",[284,2.44,512,4.407,525,7.095,623,4.762,1283,7.095,1285,7.095,1287,7.095,1288,7.876,1289,7.876,1290,7.095,1291,7.876]],["sidebarParentCategories/623",[58,0.325,87,0.593,650,0.333,651,0.479,962,1.383]],["title/637",[30,1.725,149,2.284]],["content/637",[30,2.86,31,0.659,34,1.507,50,2.403,53,2.048,58,0.537,87,1.536,102,1.064,103,2.142,108,2.886,115,2.245,118,4.662,119,4.645,145,3.245,149,3.17,150,2.363,151,2.642,172,1.657,182,3.245,198,3.857,216,2.698,237,3.035,251,3.69,252,2.393,284,2.196,319,2.659,323,1.883,329,2.918,349,1.617,356,2.54,415,2.487,465,3.708,484,3.425,491,2.21,565,2.697,583,3.69,600,2.886,635,2.886,775,3.118,895,3.035,949,3.035,1090,4.646,1292,3.421]],["sidebarParentCategories/637",[87,1.218]],["title/638",[31,0.408,284,1.359,319,1.646,956,2.203]],["content/638",[2,0.286,8,0.705,17,0.686,30,1.264,31,0.617,50,0.887,55,1.361,58,0.691,67,1.706,68,0.705,69,1.462,70,0.544,71,0.953,87,0.811,96,1.354,105,1.263,108,1.066,113,1.706,114,1.018,115,2.703,118,3.548,119,3.807,121,1.263,132,1.309,140,0.767,146,0.627,148,0.956,152,0.779,168,2.769,172,1.048,173,1.362,180,0.803,182,0.872,211,1.263,216,1.706,220,1.424,222,1.783,224,3.351,227,1.972,228,1.825,238,0.92,241,1.222,247,4.725,248,2.093,252,0.643,260,1.092,310,0.803,316,3.985,324,2.836,329,2.391,333,1.018,337,0.815,338,2.028,341,1.637,342,1.493,344,0.998,347,1.19,348,2.553,349,1.341,350,0.942,355,1.263,365,1.263,373,1.066,385,0.816,404,1.121,406,1.074,415,1.5,418,1.185,438,1.783,442,2.566,449,2.147,463,1.002,478,4.269,480,3.777,481,2.439,487,0.996,491,1.397,494,1.743,496,1.167,517,0.843,526,0.996,544,2.938,565,1.927,567,1.276,635,1.066,641,1.776,649,1.706,658,0.956,662,2.566,663,2.439,664,2.439,699,1.263,707,1.185,713,2.725,715,2.093,717,2.093,720,2.163,722,2.725,724,2.566,727,1.671,804,2.333,815,1.263,820,2.439,844,1.263,913,2.566,914,2.333,924,2.566,926,3.985,927,2.163,928,2.029,929,2.093,930,2.566,931,2.566,933,2.439,934,1.519,945,1.42,949,1.121,964,2.242,967,1.424,1010,2.566,1153,1.591,1230,1.716,1293,1.905,1294,1.716,1295,1.716,1296,1.591,1297,1.498,1298,3.261,1299,4.276,1300,1.424,1301,3.261,1302,5.98,1303,1.716,1304,1.362,1305,1.905,1306,1.716,1307,2.938,1308,2.938,1309,2.938,1310,2.938,1311,2.566,1312,2.938,1313,2.938,1314,3.261,1315,1.905,1316,1.905,1317,3.261,1318,1.905]],["sidebarParentCategories/638",[87,1.218]],["title/639",[30,1.297,963,2.91,1186,3.281,1187,3.666]],["content/639",[30,2.847,55,1.395,78,5.302,89,3.581,96,2.286,112,2.765,119,3.158,189,3.24,238,3.581,311,3.939,353,2.359,359,2.359,371,2.88,394,3.786,404,3.24,438,3.01,590,2.821,609,2.821,835,4.117,949,4.361,967,4.117,1056,4.96,1097,3.939,1186,4.117,1187,4.6,1204,4.332,1206,4.6,1207,4.6,1300,4.117,1319,4.96,1320,5.506,1321,5.506,1322,5.506,1323,5.506,1324,5.506,1325,5.506,1326,5.506,1327,4.6,1328,7.411,1329,5.506,1330,5.506,1331,5.506]],["sidebarParentCategories/639",[87,1.218]],["title/640",[30,1.481,149,1.96,1185,4.513]],["content/640",[30,2.22,34,1.311,55,1.458,59,2.209,96,1.863,118,4.015,119,2.573,150,2.895,182,2.943,212,2.299,347,2.347,353,1.922,359,3.515,373,2.511,407,2.316,463,1.051,464,1.707,465,2.347,491,1.922,492,4.042,565,2.445,590,4.203,638,2.209,650,0.686,835,3.355,908,5.056,1292,4.264,1311,5.058,1332,3.21,1333,5.165,1334,4.487,1335,6.429,1336,4.42,1337,4.807,1338,5.058,1339,6.429,1340,6.429,1341,5.791,1342,6.429,1343,4.487]],["sidebarParentCategories/640",[87,1.218]],["title/641",[40,3.632,58,0.608]],["content/641",[30,2.776,145,4.299,149,3.675,237,4.717,565,3.049,1292,5.317]],["sidebarParentCategories/641",[87,1.218]],["title/642",[449,3.511]],["content/642",[31,0.889,58,0.759,67,2.811,69,2.493,70,1.534,71,1.57,86,2.938,87,1.383,103,2.232,108,3.007,115,3.602,152,2.982,230,3.695,244,3.844,245,3.162,251,3.844,252,1.814,284,2.564,319,3.104,323,1.962,349,1.685,385,2.302,449,4.803,463,1.259,465,3.814,496,1.467,635,3.007,682,3.986,775,3.249,827,4.29,844,3.565,878,4.019,1153,4.49,1344,5.374,1345,3.695,1346,6.092,1347,5.374,1348,5.374,1349,3.695,1350,5.374]],["sidebarParentCategories/642",[87,1.218]],["title/643",[58,0.522,59,2.467,449,2.515]],["content/643",[4,2.325,17,1.171,28,2.716,31,0.911,40,2.023,58,0.9,59,2.488,68,1.203,96,2.573,104,2.431,110,2.557,112,1.632,115,2.2,129,2.928,132,2.235,151,3.175,152,3.536,159,1.965,168,4.138,169,2.716,172,1.044,179,1.738,180,1.371,202,1.819,204,2.023,210,1.171,223,1.965,224,2.973,232,2.086,238,1.571,241,3.242,244,5,245,1.913,247,1.965,248,3.242,314,2.235,323,1.187,329,1.171,356,1.601,396,1.415,403,2.928,404,2.973,433,2.023,434,3.351,449,4.832,452,2.557,489,2.716,541,2.928,628,2.325,649,2.643,663,2.431,679,3.474,727,1.665,750,2.431,752,2.928,940,2.928,955,2.431,965,2.557,992,2.557,1046,2.928,1233,1.819,1302,2.928,1351,3.251,1352,3.251,1353,4.551,1354,5.583,1355,3.251,1356,5.052,1357,3.251,1358,3.251,1359,3.251,1360,3.251,1361,3.251,1362,2.928,1363,2.235,1364,4.551,1365,6.819,1366,2.325,1367,2.928,1368,3.251,1369,3.251,1370,3.251,1371,3.251,1372,3.251,1373,2.928,1374,2.716,1375,3.251,1376,3.975,1377,3.251,1378,3.251,1379,2.928,1380,3.251,1381,2.928,1382,3.251,1383,3.251,1384,3.251,1385,3.251,1386,3.251,1387,2.716,1388,2.928,1389,3.251]],["sidebarParentCategories/643",[87,1.218]],["title/644",[449,2.515,463,1.173,956,2.515]],["content/644",[2,0.596,3,1.375,6,1.728,25,1.26,31,0.719,34,1.16,51,3.124,55,1.365,58,0.413,84,1.955,96,1.649,103,1.649,140,1.6,150,1.96,167,2.633,180,1.674,202,2.222,228,2.222,263,1.955,284,2.399,319,2.627,323,1.449,347,2.147,348,2.09,349,1.245,350,1.147,353,2.519,359,1.701,385,1.701,448,2.548,449,4.718,453,2.277,473,2.336,478,4.816,496,1.083,600,2.222,639,2.633,641,1.649,643,2.548,664,2.969,764,2.336,849,2.336,851,3.555,878,2.969,908,4.333,934,3.607,949,2.336,1009,2.277,1060,4.207,1157,3.124,1158,3.124,1164,3.317,1166,2.471,1173,2.969,1345,2.73,1390,3.97,1391,5.881,1392,3.317,1393,3.97,1394,3.97,1395,3.577,1396,5.881,1397,5.881,1398,3.97,1399,3.97,1400,3.97,1401,3.97,1402,3.97,1403,3.97,1404,3.97,1405,3.97,1406,3.97,1407,3.577,1408,3.97,1409,3.97,1410,3.97]],["sidebarParentCategories/644",[87,1.218]],["title/645",[244,3.139,463,1.028,1117,2.73,1411,3.666]],["content/645",[2,0.559,3,1.289,6,1.621,19,2.135,25,1.182,31,0.521,34,1.088,37,2.663,43,1.306,55,1.295,58,0.913,59,1.833,88,2.784,89,1.799,140,1.5,150,2.247,223,2.251,224,3.298,228,2.083,238,1.799,244,4.009,252,1.257,261,1.833,276,3.354,284,1.154,319,1.397,323,1.359,340,1.833,347,1.359,348,2.024,349,1.167,350,1.619,356,1.833,359,1.595,373,2.083,415,1.306,448,3.597,449,4.637,463,1.313,466,2.929,473,2.191,494,1.99,496,1.016,600,2.083,628,2.663,639,2.469,641,1.546,643,2.389,764,2.191,776,4.009,849,2.191,851,3.389,878,4.191,895,2.191,908,4.197,915,2.663,944,2.389,949,2.191,1009,3.214,1013,2.469,1054,3.854,1060,4.009,1122,3.354,1157,2.929,1171,4.009,1300,2.784,1345,2.56,1349,2.56,1374,3.111,1392,4.683,1411,3.111,1412,6.072,1413,6.757,1414,5.605,1415,3.723,1416,3.723,1417,3.723,1418,3.723,1419,3.354,1420,3.723,1421,3.723,1422,3.723,1423,3.723,1424,3.723,1425,3.723,1426,3.723,1427,3.723]],["sidebarParentCategories/645",[87,1.218]],["title/646",[152,2.049,827,2.948,963,3.323]],["content/646",[31,0.806,58,0.838,59,2.511,87,0.967,102,1.052,103,2.117,120,2.853,150,2.345,152,3.293,159,3.083,167,4.665,244,6.209,245,4.738,284,1.58,319,1.913,434,3.382,448,4.513,449,4.727,453,2.924,495,2.612,498,3.173,526,2.667,600,2.853,682,2.787,731,4.012,775,4.252,827,3,915,3.648,948,3.506,956,2.56,963,3.382,1117,3.173,1151,5.534,1345,3.506,1346,4.26,1353,4.593,1354,4.593,1365,6.336,1412,4.593,1413,4.593,1428,5.099,1429,5.099,1430,4.593,1431,5.099,1432,5.099,1433,5.099,1434,5.099,1435,5.099,1436,5.099,1437,5.099]],["sidebarParentCategories/646",[87,1.218]],["title/647",[40,3.632,58,0.608]],["content/647",[2,1.452,31,0.695,42,4.09,145,3.425,146,2.463,204,4.655,212,3.833,219,4.801,449,5.041,1364,6.739,1373,6.739,1438,7.481]],["sidebarParentCategories/647",[87,1.218]],["title/648",[30,1.039,182,1.609,216,1.839,329,1.266,484,1.698,565,1.337]],["content/648",[30,2.057,31,0.646,42,3.804,67,3.64,87,1.32,103,2.89,108,3.894,115,3.03,171,3.426,182,3.186,251,4.978,252,2.349,284,2.156,319,2.611,329,2.507,349,2.182,356,3.426,465,3.64,484,3.362,564,4.978,569,3.426,581,3.426,635,3.894,650,0.92,658,3.494]],["sidebarParentCategories/648",[87,1.218]],["title/649",[31,0.408,284,1.359,319,1.646,956,2.203]],["content/649",[2,1.271,31,0.714,55,1.468,58,0.35,69,1.149,73,1.977,95,1.655,96,1.395,113,1.758,115,1.463,118,1.796,172,1.665,216,1.758,222,1.837,329,1.21,344,1.029,348,2.615,349,1.054,350,1.828,385,1.44,463,0.787,496,0.917,565,2.407,567,2.476,568,1.722,569,2.552,570,2.156,581,2.552,640,2.091,641,2.153,650,0.358,705,2.808,713,2.808,714,2.31,715,3.326,716,2.404,717,3.326,718,2.229,719,4.979,720,3.438,721,3.027,722,4.331,723,3.027,724,4.078,727,3.242,760,2.808,804,2.404,807,4.67,808,4.67,809,4.67,810,4.67,811,4.67,815,2.229,816,2.229,817,2.513,818,3.027,819,3.027,820,2.513,821,3.027,913,2.644,914,2.404,921,2.644,924,4.078,925,3.027,926,4.979,927,2.229,928,2.091,929,2.156,930,2.644,931,2.644,933,2.513,934,1.565,1306,4.67,1307,4.67,1439,3.36]],["sidebarParentCategories/649",[87,1.218]],["title/650",[344,1.534,396,2.181,1117,3.117]],["content/650",[18,2.488,30,1.621,31,0.51,34,1.057,42,1.978,55,1.365,58,0.77,67,2.869,68,1.339,87,0.686,103,1.502,113,1.893,118,1.934,140,2.669,147,2.488,155,2.4,165,2.846,172,1.162,180,1.526,182,2.511,210,1.303,220,2.705,240,4.102,252,1.221,317,1.48,325,2.588,329,3.012,344,1.108,347,1.321,350,1.045,353,2.35,356,1.781,359,1.55,385,1.55,396,1.575,400,2.025,415,1.269,431,2.075,447,2.705,463,1.285,484,2.65,526,1.893,569,1.781,581,3.912,613,2.025,646,1.628,649,1.893,650,0.585,651,0.555,658,2.754,687,2.705,727,3.394,749,3.52,750,2.705,762,2.846,776,2.588,805,2.705,816,2.4,817,4.102,820,5.941,895,2.129,913,2.846,914,2.588,934,1.685,956,1.817,964,2.488,968,2.705,977,3.259,978,2.4,1102,3.023,1113,2.846,1118,4.941,1119,2.846,1120,3.259,1121,2.846,1192,2.488,1295,4.941,1296,3.023,1300,2.705,1440,3.618,1441,5.535,1442,3.023,1443,3.259,1444,3.618,1445,3.618,1446,3.618,1447,3.618,1448,5.485,1449,3.618,1450,3.618,1451,3.618,1452,3.618,1453,3.259,1454,3.618]],["sidebarParentCategories/650",[87,1.218]],["title/651",[329,1.805,484,2.42,963,3.323]],["content/651",[34,1.737,55,1.32,96,2.468,118,3.177,172,2.505,252,2.007,301,5.355,305,2.536,329,3.328,333,3.177,344,1.82,347,2.17,348,1.604,353,2.547,396,2.588,484,4.635,494,3.177,635,3.326,727,3.045,908,4.87,1258,3.943,1455,7.272,1456,7.025,1457,5.355,1458,5.355,1459,4.966,1460,5.355,1461,4.966,1462,5.355,1463,5.944]],["sidebarParentCategories/651",[87,1.218]],["title/652",[30,1.297,182,2.009,329,1.58,963,2.91]],["content/652",[30,2.765,34,1.609,35,2.478,55,1.325,62,2.742,103,2.286,118,4.79,132,3.786,146,1.813,182,4.282,259,3.652,329,2.67,347,2.01,348,1.486,353,2.359,396,2.397,484,4.33,634,4.6,707,3.426,775,3.329,886,4.25,945,2.397,948,3.786,1258,3.652,1294,4.96,1455,4.6,1461,4.6,1464,4.96,1465,7.411,1466,4.96,1467,4.96,1468,4.6,1469,4.332,1470,3.939,1471,4.96,1472,5.506,1473,5.506]],["sidebarParentCategories/652",[87,1.218]],["title/653",[58,0.728]],["content/653",[30,2.733,58,0.813,87,1.481,149,3.618,329,2.812,373,4.369,463,1.829,564,5.585,565,2.97,678,5.585]],["sidebarParentCategories/653",[87,1.218]],["title/654",[40,3.632,58,0.608]],["content/654",[62,3.134,565,3.222,581,4.171]],["sidebarParentCategories/654",[87,1.218]],["title/655",[267,1.746,459,0.812]],["content/655",[2,1.035,3,1.339,6,1.684,8,2.552,17,2.484,25,1.227,32,3.154,33,2.407,41,3.607,55,1.125,103,1.606,146,1.273,172,1.853,200,1.471,267,2.951,277,4.574,305,1.876,328,2.164,336,2.687,373,4.278,385,2.954,406,2.517,422,1.77,459,1.385,461,3.275,464,2.623,495,1.981,498,2.407,517,3.052,546,3.462,562,2.338,567,2.257,650,0.615,651,0.885,682,2.114,688,2.533,764,2.276,838,2.276,1059,4.313,1092,4.291,1152,4.278,1233,4.278,1366,2.767,1474,2.276,1475,3.017,1476,3.08]],["sidebarParentCategories/655",[]],["title/656",[41,2.621,55,0.689,459,0.697]],["content/656",[6,3.152,32,2.793,33,4.505,41,4.622,146,2.384,200,2.754,267,2.165,305,2.354,328,4.051,422,3.314,459,1.326,495,3.709,562,4.377,764,4.26,1059,5.414,1233,4.051,1366,5.179,1474,4.26]],["sidebarParentCategories/656",[]],["title/657",[2,0.48,55,0.44,172,1.027,567,1.251,650,0.341,651,0.491,688,0.99]],["content/657",[2,1.204,32,3.093,172,2.575,498,4.988,567,3.137,650,0.855,651,1.23,682,4.382,688,2.484]],["sidebarParentCategories/657",[]],["title/658",[55,0.537,267,1.167,461,1.672,688,1.209,1475,2.042]],["content/658",[8,2.679,17,2.608,32,2.793,267,2.852,277,4.802,373,4.051,385,3.102,406,2.384,459,1.326,461,3.102,464,2.754,517,3.204,546,3.635,1092,4.505,1152,4.051,1233,4.051,1475,3.787]],["sidebarParentCategories/658",[]],["title/659",[55,0.537,267,1.167,461,1.672,688,1.209,1476,1.573]],["content/659",[8,2.679,17,2.608,32,2.793,267,2.852,277,4.802,373,4.051,385,3.102,406,2.384,459,1.326,461,3.102,464,2.754,517,3.204,546,3.635,1092,4.505,1152,4.051,1233,4.051,1476,2.917]],["sidebarParentCategories/659",[]],["title/660",[55,0.537,267,1.167,336,1.818,688,1.209,1476,1.573]],["content/660",[8,2.679,17,2.608,32,2.793,267,2.852,277,4.802,336,3.373,373,4.051,385,3.102,406,2.384,459,1.326,464,2.754,517,3.204,546,3.635,1092,4.505,1152,4.051,1233,4.051,1476,2.917]],["sidebarParentCategories/660",[]],["title/661",[305,2.274]],["content/661",[2,0.695,3,1.602,25,2.085,39,4.167,58,0.482,67,2.42,77,2.722,78,3.309,146,1.523,148,3.836,149,1.81,210,1.666,235,2.589,267,1.383,272,3.639,305,3.219,406,1.523,407,2.366,415,1.623,457,5.489,459,1.063,493,2.968,526,2.42,542,3.068,552,4.216,560,2.907,561,3.502,646,2.082,681,3.639,732,3.18,733,5.169,735,3.639,749,2.968,836,3.309,878,3.459,895,2.722,902,2.968,953,4.167,955,4.913,1010,3.639,1349,3.18,1459,6.95,1475,3.997,1477,4.626,1478,6.883,1479,4.626,1480,7.64,1481,4.626,1482,3.639,1483,4.626,1484,3.865]],["sidebarParentCategories/661",[]],["title/662",[210,1.805,560,2.217,561,1.735]],["content/662",[5,4.443,8,2.479,17,2.413,25,2.672,95,3.298,167,4.443,200,2.548,235,4.712,267,2.518,348,2.272,448,4.299,459,1.171,560,4.276,561,3.346,617,6.035,1485,6.699,1486,7.586,1487,5.27,1488,6.699]],["sidebarParentCategories/662",[]],["title/663",[95,2.467,560,2.217,561,1.735]],["content/663",[2,0.853,3,1.967,34,1.66,77,3.342,81,5.203,93,2.852,95,2.797,112,2.852,120,3.179,148,2.852,149,2.223,159,3.434,163,3.645,233,4.248,235,3.179,254,3.258,258,4.746,267,1.699,292,4.248,305,1.847,317,2.323,348,2.042,350,1.641,356,2.797,406,1.87,447,4.248,459,0.79,464,2.161,494,3.036,560,3.766,561,3.273,633,3.105,638,2.797,688,2.345,689,4.248,838,3.342,880,3.258,1005,4.248,1152,3.179,1233,3.179,1487,4.469,1489,4.064,1490,4.746,1491,4.248,1492,5.681,1493,4.469]],["sidebarParentCategories/663",[]],["title/664",[200,1.906,560,2.217,561,1.735]],["content/664",[13,5.053,18,3.857,31,0.521,32,2.164,41,4.723,58,0.781,95,3.695,117,2.613,146,1.847,178,4.687,183,4.687,200,3.58,233,4.195,252,1.894,305,2.441,406,1.847,409,2.329,422,2.568,456,3.391,459,1.376,464,2.134,560,3.742,561,3.127,688,2.325,732,3.857,836,4.013,898,4.537,903,3.721,952,3.599,1362,5.053,1494,5.609,1495,4.195,1496,5.609,1497,4.413]],["sidebarParentCategories/664",[]],["title/665",[464,2.22,688,1.809]],["content/665",[2,1.07,172,2.289,249,4.433,261,3.508,267,2.831,336,3.319,415,2.5,461,3.748,464,2.71,567,2.788,650,0.76,651,1.093,688,3.14,1475,3.727,1476,3.525]],["sidebarParentCategories/665",[]],["title/666",[41,3.054,459,0.812]],["content/666",[6,2.733,31,0.876,32,2.422,33,3.906,41,4.673,53,2.492,146,2.067,200,3.398,267,1.877,305,2.627,328,3.513,422,2.873,459,1.39,495,3.216,562,3.795,600,3.513,764,3.693,944,5.184,1059,4.694,1233,3.513,1332,4.49,1366,4.49,1474,3.693,1498,6.277,1499,4.938,1500,4.694]],["sidebarParentCategories/666",[459,0.893]],["title/667",[459,0.812,1501,5.259]],["content/667",[31,0.939,41,4.554,53,2.806,125,5.286,200,3.312,305,2.299,396,3.077,459,1.313,562,4.274,600,3.956,944,6.055,1332,5.056,1474,4.159,1499,5.561]],["sidebarParentCategories/667",[459,0.893]],["title/668",[31,0.327,41,1.839,459,0.489,944,2.255,1332,2.514,1474,2.068]],["content/668",[2,1.041,19,2.237,31,0.884,34,1.14,37,2.791,41,4.016,50,4.007,53,2.305,55,1.435,71,1.14,105,2.588,137,2.588,148,1.959,172,1.865,200,2.92,229,4.448,258,3.26,260,2.237,261,1.921,298,2.791,305,1.888,310,1.645,319,2.177,335,1.726,344,1.777,347,2.119,348,1.566,349,1.82,353,3.516,354,2.588,385,1.671,406,1.911,417,2.917,431,3.329,459,1.239,496,1.065,641,2.41,665,2.183,764,2.296,903,2.588,944,2.503,1092,2.428,1205,3.069,1474,2.296,1502,4.152,1503,3.069,1504,3.901,1505,4.85,1506,3.514,1507,3.26,1508,3.26,1509,3.514,1510,3.901,1511,3.901,1512,3.514,1513,3.901,1514,3.514,1515,3.069,1516,3.514]],["sidebarParentCategories/668",[459,0.893]],["title/669",[31,0.463,53,1.269,200,1.897,305,1.04,1499,2.515]],["content/669",[2,0.89,31,0.843,34,0.886,37,3.421,41,2.502,50,3.625,53,3.089,55,1.42,71,0.886,89,1.464,134,2.267,147,2.084,148,1.522,168,1.657,171,1.492,172,1.536,200,3.099,229,1.945,232,1.945,249,1.886,261,2.355,294,2.01,298,5.238,305,2.951,310,1.278,317,1.956,319,1.137,333,1.62,335,1.341,344,1.814,347,1.746,348,1.599,349,0.95,353,2.882,354,2.01,374,2.532,385,1.299,406,1.575,431,4.199,459,0.824,493,3.069,494,1.62,496,0.827,562,1.833,641,1.986,665,1.696,678,2.168,693,2.267,764,1.783,862,1.738,903,2.01,944,3.801,956,1.522,1040,3.069,1117,1.886,1192,2.084,1332,3.421,1474,1.783,1499,2.385,1501,2.73,1502,2.168,1503,3.763,1505,7.054,1506,2.73,1507,2.532,1508,2.532,1512,4.309,1514,2.73,1515,2.385,1516,2.73,1517,2.73,1518,3.031,1519,4.783,1520,2.73,1521,5.924,1522,3.031,1523,2.73,1524,2.73,1525,3.031,1526,4.783,1527,2.73,1528,2.73,1529,2.73,1530,2.73,1531,2.385]],["sidebarParentCategories/669",[459,0.893]],["title/670",[31,0.408,459,0.61,600,2.455,944,2.816]],["content/670",[2,1.188,6,2.147,31,0.865,34,1.441,38,3.879,41,2.579,50,2.297,55,1.395,58,0.513,71,1.441,148,2.476,171,2.428,200,2.614,284,1.528,305,1.604,310,2.079,323,1.8,335,2.182,344,2.104,347,1.8,348,1.331,349,2.48,353,2.112,354,3.271,385,2.112,396,2.992,431,3.941,459,1.296,464,1.876,466,3.879,496,1.346,584,4.442,641,2.854,665,2.759,688,1.528,699,3.271,934,3.201,945,2.992,1058,5.742,1502,3.527,1505,4.12,1523,4.442,1532,4.931,1533,4.12,1534,4.442,1535,4.442,1536,4.931]],["sidebarParentCategories/670",[459,0.893]],["title/671",[1500,5.229]],["content/671",[17,1.924,34,1.561,35,2.404,41,3.798,58,0.556,84,3.575,102,1.498,159,3.23,170,3.673,172,2.333,190,2.92,209,3.23,254,3.064,261,2.63,400,2.989,415,1.874,422,2.445,459,1.231,498,4.518,600,2.989,653,3.822,688,2.556,886,4.164,898,3.23,908,2.989,910,4.816,955,3.995,1040,3.428,1079,4.463,1258,3.543,1376,4.203,1461,6.067,1486,4.812,1500,7.691,1537,5.342,1538,4.812,1539,5.342,1540,5.342,1541,7.261,1542,5.342,1543,5.342]],["sidebarParentCategories/671",[459,0.893]],["title/672",[2,0.528,172,1.129,567,1.375,650,0.375,651,0.539,688,1.089]],["content/672",[2,1.048,8,1.866,30,2.063,32,1.945,58,0.726,68,2.582,69,1.724,111,1.973,118,2.695,149,1.973,172,1.62,182,3.195,212,2.583,223,3.048,267,1.508,333,2.695,336,4.024,340,2.482,344,1.544,406,1.66,437,2.094,458,4.213,459,0.971,484,2.436,489,4.213,498,4.343,551,3.815,567,2.731,633,2.756,638,3.436,650,0.744,651,1.071,682,2.756,688,2.98,692,4.1,895,2.967,941,3.467,984,4.213,1008,3.372,1040,4.478,1248,3.967,1476,3.481,1517,4.542,1544,4.213,1545,4.213,1546,5.042,1547,5.042]],["sidebarParentCategories/672",[459,0.893]],["title/673",[688,1.809,1548,3.872]],["content/673",[8,2.815,17,2.741,327,4.477,362,6.357,373,4.258,415,2.669,517,3.367,676,6.357,688,2.821,692,3.898,888,6.357,1205,5.986,1545,6.357,1549,7.608]],["sidebarParentCategories/673",[459,0.893]],["title/674",[34,1.705,1500,4.365]],["content/674",[2,1.061,3,2.448,25,2.243,34,2.065,319,2.652,327,4.159,348,1.908,362,7.275,620,6.511,872,5.906,886,4.993,1093,5.286,1500,6.511,1545,5.906,1550,7.069,1551,5.056,1552,8.5,1553,7.069]],["sidebarParentCategories/674",[459,0.893]],["title/675",[2,0.586,567,1.527,688,1.209,1007,2.589,1554,2.792]],["content/675",[2,1.289,53,2.742,105,4.58,140,3.458,231,4.748,348,2.316,385,2.958,406,2.274,427,5.188,495,3.538,561,2.391,567,3.358,650,0.915,651,1.059,654,4.94,908,3.864,1007,4.58,1554,6.139,1555,6.905,1556,5.433]],["sidebarParentCategories/675",[459,0.893]],["title/676",[2,0.48,172,1.027,348,0.863,567,1.251,633,1.748,1491,2.391,1554,2.287]],["content/676",[172,3.065,633,4.503,885,5.664,1557,6.481,1558,7.42]],["sidebarParentCategories/676",[459,0.893]],["title/677",[140,2.352,459,0.812]],["content/677",[2,1.183,6,3.429,53,3.127,62,2.914,140,3.744,164,5.889,239,4.305,567,3.082,688,2.44,1559,7.876]],["sidebarParentCategories/677",[459,0.893]],["title/678",[113,3.054,459,0.812]],["content/678",[113,3.757,146,2.365,149,2.81,219,4.608,229,4.608,263,3.536,267,2.148,336,3.346,390,4.938,437,2.982,459,0.999,551,3.926,638,3.536,650,0.766,688,2.225,692,3.679,1476,2.894,1557,5.65,1560,6.001,1561,6.47,1562,6.47,1563,6.47]],["sidebarParentCategories/678",[459,0.893]],["title/679",[30,1.481,182,2.293,459,0.697]],["content/679",[30,2.328,68,2.914,69,2.693,115,3.429,182,3.605,340,3.878,458,6.58,459,1.096,692,4.035,984,6.58,1544,6.58]],["sidebarParentCategories/679",[459,0.893]],["title/680",[459,0.543,761,2.684,978,2.589,1564,3.903,1565,3.261]],["content/680",[35,2.948,53,2.601,105,4.346,164,4.9,209,3.961,284,2.03,348,1.768,437,2.721,459,0.911,474,6.533,551,3.582,591,3.29,646,2.948,650,0.699,678,4.687,688,2.03,761,5.709,803,4.9,886,3.757,941,4.505,945,2.852,978,5.508,1051,3.855,1204,5.155,1538,5.902,1566,6.552,1567,5.902,1568,6.552,1569,6.552,1570,6.552,1571,5.902]],["sidebarParentCategories/680",[459,0.893]],["title/681",[30,1.725,459,0.812]],["content/681",[17,2.608,20,4.26,30,2.14,53,2.874,59,4.35,68,2.679,146,2.384,148,3.635,164,5.414,209,4.377,348,1.954,369,5.696,407,2.608,459,1.007,1290,6.522,1469,5.696,1572,7.24,1573,7.24,1574,7.24,1575,6.049]],["sidebarParentCategories/681",[459,0.893]],["title/682",[437,2.904]],["content/682",[62,3.048,437,3.421,459,1.146,650,0.879,902,5.286,1576,8.237]],["sidebarParentCategories/682",[459,0.893]],["title/683",[459,0.973]],["content/683",[6,2.537,20,3.429,41,3.049,43,2.045,53,3.056,88,4.358,95,2.87,146,1.919,200,2.217,219,3.74,229,3.74,252,1.968,263,2.87,327,3.429,333,3.115,340,4.244,344,1.784,388,4.169,459,1.199,551,3.186,558,4.87,590,2.986,638,2.87,679,5.293,688,2.67,692,4.416,749,3.74,886,3.342,895,3.429,903,3.866,941,4.007,964,4.007,1007,3.866,1349,4.007,1374,4.87,1515,4.585,1520,5.25,1577,5.828,1578,4.87,1579,5.25,1580,5.828]],["sidebarParentCategories/683",[459,0.893]],["title/684",[252,1.691,338,2.376,496,1.367]],["content/684",[2,1.196,8,1.559,17,1.517,20,2.479,31,0.673,50,1.963,55,1.452,70,2.07,71,2.328,95,2.074,103,1.749,180,1.777,197,3.795,219,2.703,252,1.422,310,1.777,338,1.998,340,2.074,342,1.929,344,2.439,347,2.646,348,1.658,349,1.321,350,1.217,353,2.631,409,1.749,459,0.586,496,1.15,517,1.864,526,3.213,551,2.303,567,3.118,568,3.147,583,3.014,588,3.52,641,2.551,649,2.204,651,0.942,688,2.624,692,2.158,715,3.941,717,4.652,718,4.074,754,3.795,1013,2.794,1529,3.795,1578,3.52,1579,3.795,1581,4.213,1582,4.213,1583,4.213,1584,4.213,1585,5.533,1586,4.213,1587,4.213]],["sidebarParentCategories/684",[459,0.893]],["title/685",[206,1.322,910,3.323,1007,3.323]],["content/685",[35,3.271,55,1.368,70,2.28,71,2.333,95,2.084,103,1.758,115,1.843,170,4.238,172,2.565,229,2.716,263,2.084,284,1.91,344,1.887,347,3.63,355,4.821,365,4.821,386,1.785,415,1.485,442,4.849,463,1.444,474,4.849,495,2.168,503,3.33,526,2.214,561,1.466,588,6.671,623,3.726,650,0.657,651,0.946,699,4.088,907,3.537,910,2.807,945,2.683,1007,4.088,1551,4.409,1585,5.552,1588,4.233,1589,4.233,1590,6.163,1591,6.163,1592,6.163,1593,6.163,1594,6.163,1595,4.233,1596,4.233,1597,6.163,1598,4.233,1599,4.233,1600,4.233]],["sidebarParentCategories/685",[459,0.893]],["title/686",[267,1.312,461,1.88,688,1.359,1475,2.295]],["content/686",[2,1.45,8,1.757,17,2.411,32,1.832,55,0.921,70,2.213,71,1.387,265,2.137,267,2.516,277,3.149,294,3.149,302,1.913,305,2.176,310,2.822,319,1.781,337,1.672,338,3.174,341,3.891,342,3.064,373,2.657,385,2.867,406,2.552,459,1.316,461,2.867,464,1.806,487,2.484,496,1.296,517,2.962,540,3.397,546,2.384,650,0.714,651,1.027,1092,2.955,1152,2.657,1233,2.657,1474,2.794,1475,2.484,1502,3.397,1601,3.736,1602,4.277,1603,3.967,1604,8.415,1605,8.415,1606,3.967,1607,6.692]],["sidebarParentCategories/686",[459,0.893]],["title/687",[95,2.467,560,2.217,561,1.735]],["content/687",[17,2.086,20,3.407,32,3.315,103,2.405,117,2.698,123,3.635,146,1.907,152,3.135,171,2.851,210,2.086,224,3.407,238,4.151,267,1.732,292,4.33,305,1.883,348,1.563,350,1.672,356,2.851,389,3.321,409,2.405,418,3.603,422,2.651,459,0.806,517,2.563,560,4.047,561,3.167,609,3.927,631,4.556,632,4.556,633,3.165,775,3.501,826,3.407,898,3.501,1475,3.029,1491,4.33,1493,4.556,1548,3.841,1608,3.716,1609,4.838]],["sidebarParentCategories/687",[459,0.893]],["title/688",[30,1.725,350,1.686]],["content/688",[8,0.815,17,0.794,19,0.7,30,2.49,33,0.759,43,0.428,44,0.913,50,0.569,51,0.96,53,1.89,55,1.409,58,0.54,59,1.483,62,0.815,68,0.815,72,1.841,73,1.296,77,0.718,89,1.065,90,2.253,92,0.839,95,1.483,102,0.455,108,0.683,114,1.178,120,0.683,123,1.429,130,1.414,138,0.873,140,1.487,145,2.701,147,0.839,148,1.106,149,0.862,150,0.407,151,0.625,152,3.227,156,0.96,159,0.738,163,0.783,171,1.085,179,0.652,180,0.515,182,1.009,190,1.647,191,3.533,202,1.233,204,2.296,210,0.794,218,0.809,221,0.873,223,0.738,229,1.414,235,0.683,237,3.275,242,0.873,252,0.412,264,0.683,267,0.659,294,0.809,298,1.576,305,1.2,317,2.277,324,0.809,344,0.374,347,2.833,348,1.284,350,1.499,353,2.528,359,1.581,385,0.523,386,0.515,389,1.727,390,0.839,394,0.839,400,2.387,404,2.171,407,1.329,415,0.428,417,0.913,422,1.689,431,0.7,433,1.874,434,0.809,437,2.684,448,0.783,453,1.727,456,0.738,459,0.662,461,1.291,484,1.065,491,0.523,493,0.783,494,0.652,560,0.54,561,1.477,590,3.825,591,1.512,635,0.683,646,1.356,650,0.738,764,0.718,767,1.02,826,0.718,827,1.772,831,1.02,835,4.412,862,0.7,880,0.7,898,0.738,902,0.783,904,1.727,908,2.065,935,0.759,949,2.171,965,0.96,989,0.913,1026,0.96,1037,2.253,1051,1.296,1061,1.556,1097,1.576,1192,1.515,1233,2.065,1292,3.692,1304,0.873,1311,0.96,1333,1.515,1336,1.515,1337,4.163,1338,5.085,1349,0.839,1366,0.873,1470,2.155,1475,1.576,1482,0.96,1484,1.02,1495,1.648,1503,0.96,1531,0.96,1548,0.809,1554,0.873,1575,1.02,1608,0.783,1610,1.22,1611,2.714,1612,2.962,1613,1.099,1614,1.099,1615,4.336,1616,2.203,1617,3.083,1618,1.22,1619,2.203,1620,2.203,1621,1.841,1622,2.203,1623,2.203,1624,1.22,1625,1.22,1626,1.414,1627,1.22,1628,1.841,1629,1.22,1630,1.02,1631,1.985,1632,1.02,1633,1.22,1634,1.22,1635,2.203,1636,1.02,1637,1.099,1638,2.203,1639,2.203,1640,3.689,1641,1.22,1642,1.099,1643,1.22,1644,1.22,1645,1.22,1646,1.22,1647,1.22,1648,1.22,1649,1.22,1650,1.22,1651,2.203,1652,2.203,1653,2.203,1654,2.203,1655,3.324,1656,2.903,1657,2.714,1658,2.155,1659,2.714,1660,2.203,1661,1.22,1662,1.02,1663,1.099,1664,2.203,1665,1.22,1666,1.22,1667,1.22,1668,1.22,1669,1.22,1670,1.22,1671,1.22,1672,1.22,1673,1.099,1674,1.099,1675,1.02,1676,1.985,1677,0.96]],["sidebarParentCategories/688",[459,0.893]],["title/689",[150,1.946,350,1.686]],["content/689",[34,1.7,55,1.413,58,0.752,62,0.627,63,1.125,65,2.206,68,1.732,73,1.736,89,1.425,117,0.79,120,1.651,130,1.088,132,1.166,145,2.664,150,3.1,179,1.577,180,0.715,190,0.927,202,0.949,204,2.913,238,0.819,263,4.295,264,0.949,267,1.171,305,0.551,311,1.213,317,2.169,327,3.121,333,0.906,344,0.519,347,2.879,348,0.796,349,1.825,350,1.532,353,2.976,359,1.677,400,2.191,404,4.087,406,0.558,407,1.063,415,0.595,437,3.001,438,0.927,439,4.432,453,0.972,459,0.236,461,1.264,468,1.528,491,1.264,493,2.512,497,1.213,546,0.851,552,1.088,561,1.621,590,1.511,612,0.998,613,2.968,629,1.334,646,0.763,653,1.213,761,1.166,762,4.173,827,1.736,880,1.692,898,1.025,1002,2.206,1009,5.464,1054,2.028,1061,0.715,1079,1.417,1166,5.428,1169,2.028,1171,3.349,1173,2.206,1175,3.271,1176,1.417,1177,1.417,1178,2.465,1183,1.417,1184,1.417,1186,2.206,1190,3.527,1192,2.028,1197,1.417,1199,2.465,1201,1.417,1202,1.417,1214,3.271,1304,1.213,1363,1.166,1381,1.528,1387,1.417,1475,1.543,1482,1.334,1489,1.213,1531,1.334,1548,2.597,1556,3.683,1557,1.334,1608,1.088,1626,1.088,1630,1.417,1678,1.696,1679,1.696,1680,1.696,1681,1.696,1682,1.696,1683,1.696,1684,2.657,1685,1.696,1686,1.696,1687,1.696,1688,1.696,1689,1.696,1690,1.696,1691,1.696,1692,1.417,1693,2.95,1694,1.696,1695,2.95,1696,2.95,1697,1.696,1698,1.696,1699,1.696,1700,1.696,1701,1.696,1702,1.528,1703,1.696,1704,3.527,1705,1.696,1706,1.696,1707,1.696,1708,1.696,1709,1.696,1710,1.696,1711,1.696,1712,1.696,1713,1.696,1714,1.696]],["sidebarParentCategories/689",[459,0.893]],["title/690",[152,2.04,210,1.152,348,0.863,422,1.463,459,0.445,609,1.638]],["content/690",[2,0.842,6,1.621,25,1.182,33,2.317,34,1.088,37,2.663,55,1.408,58,0.583,68,2.074,102,0.768,123,1.766,152,3.457,171,1.833,174,5.049,179,1.99,210,3.389,224,4.733,230,3.854,267,1.113,305,1.823,311,2.663,317,1.523,335,2.48,344,2.296,350,1.075,389,2.135,390,2.56,404,2.191,406,1.226,407,2.019,410,2.784,422,3.086,461,1.595,495,1.907,560,1.648,561,1.941,609,1.907,646,1.675,649,1.948,747,3.111,826,2.191,935,4.667,1167,3.111,1332,2.663,1395,3.354,1475,1.948,1478,3.354,1490,4.683,1495,2.784,1524,6.072,1608,2.389,1715,3.354,1716,3.723,1717,5.605,1718,3.723,1719,6.741,1720,7.5,1721,5.049,1722,3.723,1723,6.757,1724,3.723,1725,3.354,1726,5.605,1727,5.605,1728,3.723,1729,3.723,1730,3.723,1731,3.723,1732,3.723,1733,3.723]],["sidebarParentCategories/690",[459,0.893]],["title/691",[200,1.906,560,2.217,561,1.735]],["content/691",[5,3.307,20,4.075,25,1.582,32,1.923,41,4.497,43,2.43,47,3.728,55,1.183,58,0.721,59,2.455,77,2.934,96,2.07,117,2.323,123,2.365,140,2.79,165,3.922,200,2.634,243,3.428,344,1.526,349,1.563,406,1.642,409,2.07,415,1.749,437,2.07,459,1.196,464,1.897,526,2.608,543,4.491,560,3.521,561,3.238,682,2.725,688,2.146,750,3.728,862,4.563,902,3.199,952,3.199,968,3.728,1152,2.79,1211,4.491,1345,3.428,1475,2.608,1507,4.166,1508,5.786,1608,4.444,1612,3.102,1614,4.491,1632,4.166,1734,4.986,1735,4.986,1736,4.166,1737,4.166]],["sidebarParentCategories/691",[459,0.893]],["title/692",[30,1.725,221,4.176]],["content/692",[30,2.352,53,1.98,55,1.345,73,2.934,84,2.455,123,2.365,140,2.009,147,3.428,180,2.103,182,3.17,190,2.725,200,1.897,221,5.692,347,1.82,359,2.967,396,2.171,407,1.796,422,2.282,437,2.07,461,2.136,491,2.136,495,2.554,542,3.307,590,4.79,609,2.554,646,2.244,698,3.307,880,2.859,895,2.934,1061,3.809,1192,3.428,1337,5.95,1468,4.166,1470,6.688,1475,3.622,1554,3.567,1642,4.491,1738,8.597,1739,4.491,1740,4.491,1741,4.986,1742,4.986,1743,4.986,1744,4.986]],["sidebarParentCategories/692",[459,0.893]],["title/693",[30,1.297,437,1.822,688,1.359,1061,1.85]],["content/693",[30,2.787,53,1.721,55,1.443,58,0.653,68,2.321,114,2.317,145,2.871,149,2.454,152,2.565,190,2.37,202,2.426,237,3.69,261,2.134,263,2.134,264,2.426,305,2.039,407,1.561,421,4.934,422,1.984,437,3.06,461,1.857,493,2.782,495,2.221,591,3.149,615,2.177,650,0.786,688,1.343,692,2.221,826,2.551,880,3.596,903,2.875,904,2.486,1292,2.875,1327,5.24,1336,2.981,1475,2.268,1608,2.782,1612,2.697,1656,4.934,1657,5.649,1658,4.486,1659,5.649,1745,5.649,1746,6.271,1747,6.638,1748,6.271,1749,6.271,1750,6.271,1751,6.271,1752,6.271]],["sidebarParentCategories/693",[459,0.893]],["title/694",[437,2.08,449,2.515,1363,3.445]],["content/694",[17,1.387,19,2.208,31,0.534,43,1.351,58,0.401,59,1.896,89,2.777,117,1.794,127,5.179,148,2.886,149,1.507,171,1.896,228,3.849,229,2.471,284,2.888,288,3.218,323,2.785,340,1.896,396,2.995,400,2.155,410,4.299,437,2.856,449,4.836,459,0.536,491,3.268,493,3.689,517,1.704,561,1.334,629,3.03,646,1.733,649,2.014,671,2.554,676,3.218,764,2.266,885,3.953,886,3.297,941,2.648,945,1.677,955,2.88,1005,2.88,1042,3.03,1210,3.218,1258,2.554,1363,6.779,1379,3.469,1411,7.788,1430,5.179,1509,5.179,1527,5.179,1535,3.469,1552,3.469,1562,3.469,1636,3.218,1753,6.878,1754,3.469,1755,3.851,1756,5.749,1757,5.749,1758,3.851,1759,3.851,1760,3.469,1761,5.749,1762,5.749]],["sidebarParentCategories/694",[459,0.893]],["title/695",[32,1.933,93,2.515,904,2.873]],["content/695",[32,3.677,53,2.991,55,1.131,58,0.469,59,2.22,62,1.669,81,3.101,84,3.177,93,2.264,113,3.375,147,3.101,150,2.9,200,2.454,218,2.991,221,3.226,226,3.548,239,2.465,253,4.062,268,2.586,305,1.466,317,1.844,343,2.991,437,3.613,459,0.897,461,1.932,491,1.932,613,3.61,635,2.523,646,2.029,650,0.481,651,0.692,688,1.999,692,2.31,700,5.076,826,2.653,875,3.372,904,2.586,942,3.548,1061,1.902,1093,3.372,1366,3.226,1475,2.359,1561,5.812,1601,5.076,1608,2.894,1626,2.894,1677,3.548,1763,4.509,1764,6.452,1765,6.452,1766,7.533,1767,4.509,1768,4.062,1769,4.509,1770,4.509,1771,4.509,1772,4.509,1773,4.509,1774,4.509,1775,4.509,1776,4.509,1777,4.509,1778,4.509]],["sidebarParentCategories/695",[459,0.893]],["title/696",[263,2.16,437,1.822,688,1.359,1166,2.73]],["content/696",[34,2.363,35,2.546,53,1.497,55,1.168,58,0.842,65,5.644,84,1.856,90,2.819,145,2.59,148,1.893,150,3.09,152,1.542,179,2.015,180,1.59,190,2.061,191,2.061,210,1.358,227,3.421,263,3.716,264,2.11,284,1.168,327,2.218,339,2.346,348,1.833,350,1.089,359,1.615,404,2.218,407,1.358,437,3.527,453,3.245,461,1.615,473,2.218,493,2.419,591,3.41,635,2.11,646,1.697,688,1.168,692,1.931,904,2.162,928,2.346,934,1.756,1009,5.63,1093,2.819,1137,3.396,1166,4.697,1169,3.89,1296,3.15,1407,5.097,1464,3.396,1475,1.972,1531,2.966,1556,2.966,1626,2.419,1677,2.966,1684,3.396,1692,3.15,1779,6.792,1780,3.77,1781,3.77,1782,3.77,1783,5.658,1784,3.77,1785,5.658,1786,5.658,1787,5.658,1788,5.658,1789,5.658,1790,3.77,1791,3.77,1792,3.77]],["sidebarParentCategories/696",[459,0.893]],["title/697",[150,1.463,327,2.582,1363,3.017,1793,3.953]],["content/697",[8,1.977,18,3.673,55,1.218,77,3.143,92,3.673,145,3.776,150,3.086,167,3.543,327,5.447,400,2.989,407,1.924,437,3.676,452,4.203,459,0.743,590,4.535,591,2.682,646,2.404,688,1.655,692,2.737,827,4.273,995,6.067,1009,4.731,1050,4.463,1061,2.253,1214,6.067,1363,6.365,1475,2.794,1534,4.812,1557,4.203,1608,3.428,1630,4.463,1704,4.812,1794,7.261,1795,5.342,1796,5.342,1797,5.342]],["sidebarParentCategories/697",[459,0.893]],["title/698",[267,1.312,461,1.88,688,1.359,1476,1.768]],["content/698",[2,1.45,8,1.757,17,2.411,32,1.832,55,0.921,70,2.213,71,1.387,265,2.137,267,2.516,277,3.149,294,3.149,302,1.913,305,2.176,310,2.822,319,1.781,337,1.672,338,3.174,341,3.891,342,3.064,373,2.657,385,2.867,406,2.552,459,1.316,461,2.034,464,1.806,487,2.484,496,1.296,517,2.962,540,3.397,546,2.384,650,0.714,651,1.027,1092,2.955,1152,2.657,1233,2.657,1474,2.794,1476,2.697,1502,3.397,1601,3.736,1602,4.277,1603,3.967,1606,3.967,1798,8.415,1799,8.415,1800,6.692]],["sidebarParentCategories/698",[459,0.893]],["title/699",[95,2.467,560,2.217,561,1.735]],["content/699",[17,2.113,20,3.452,32,3.336,103,2.436,117,2.733,123,4.101,146,1.932,171,2.888,224,3.452,238,4.178,267,1.754,292,4.387,305,1.908,315,2.685,350,2.233,356,2.888,389,3.364,409,2.436,418,3.65,459,0.816,461,2.513,517,2.596,560,4.068,561,3.183,609,3.961,631,4.615,632,4.615,633,3.207,775,3.547,826,3.452,898,3.547,1491,4.387,1493,4.615,1548,3.891,1609,4.901,1801,4.387]],["sidebarParentCategories/699",[459,0.893]],["title/700",[31,0.542,1802,4.176]],["content/700",[18,3.526,31,0.876,50,2.389,55,1.111,62,1.898,66,2.525,87,0.973,130,3.291,140,2.845,190,3.86,239,2.803,261,2.525,284,1.589,322,3.291,323,2.948,333,2.741,347,2.578,348,1.906,349,2.861,350,2.332,396,2.233,422,3.232,459,0.713,461,2.197,496,2.49,609,2.627,635,2.87,639,3.401,641,3.354,658,2.575,682,2.803,688,1.589,803,3.835,915,3.669,929,3.291,1060,3.669,1061,2.163,1476,2.066,1548,3.401,1803,7.061,1804,5.128,1805,4.62,1806,4.62,1807,5.128,1808,3.835]],["sidebarParentCategories/700",[459,0.893]],["title/701",[145,2.293,343,3.323,1044,4.186]],["content/701",[2,0.853,31,0.791,58,0.788,77,3.342,102,1.172,112,2.852,140,2.289,145,2.6,149,2.223,171,2.797,179,3.036,204,3.535,211,5.02,232,3.645,267,1.699,284,2.345,323,2.074,407,2.046,431,3.258,459,0.79,652,4.469,653,4.064,732,3.906,928,3.535,945,2.473,988,6.817,989,4.248,1043,4.746,1044,6.323,1045,5.117,1051,4.453,1059,4.248,1098,4.469,1392,4.746,1497,4.469,1612,3.535,1626,3.645,1760,5.117,1809,7.568,1810,5.681,1811,5.117,1812,5.681,1813,5.681,1814,5.681,1815,5.681,1816,5.681]],["sidebarParentCategories/701",[459,0.893]],["title/702",[268,2.873,350,1.447,904,2.873]],["content/702",[2,1.181,31,0.663,55,1.46,58,0.427,73,2.411,123,1.943,167,2.718,264,2.293,268,2.35,272,3.224,302,1.651,338,1.943,344,1.843,347,1.496,348,1.925,349,1.887,350,2.419,353,3.368,396,1.784,407,1.476,415,1.438,431,2.35,438,3.9,447,3.064,456,2.477,461,1.755,496,1.118,609,3.083,641,1.701,734,3.064,803,3.064,862,2.35,880,3.452,904,2.35,939,3.224,1476,1.651,1817,6.019,1818,6.019,1819,6.019,1820,6.019,1821,6.019,1822,6.019,1823,3.423,1824,6.019,1825,6.019,1826,4.097,1827,6.019,1828,6.019,1829,6.019,1830,7.862,1831,7.862,1832,4.097,1833,4.097,1834,4.097]],["sidebarParentCategories/702",[459,0.893]],["title/703",[235,2.803,350,1.447,1835,4.186]],["content/703",[8,1.239,31,0.311,34,0.978,55,1.301,58,0.538,68,2.627,84,2.545,111,1.31,130,3.317,141,2.797,145,3.996,146,1.702,179,2.763,202,1.873,216,1.751,218,2.221,235,4.538,237,3.715,252,1.13,284,1.037,305,1.089,317,2.114,322,2.148,329,1.206,333,1.789,347,2.305,348,1.395,350,2.05,353,3.042,356,1.648,369,6.65,396,1.457,400,2.892,406,1.102,407,1.206,421,2.634,422,3.25,423,2.395,452,2.634,461,2.214,491,1.434,609,1.715,615,2.595,635,2.892,693,2.503,829,3.016,895,1.97,934,1.56,941,3.554,948,2.302,949,1.97,956,1.681,1049,2.797,1051,1.97,1061,1.412,1292,2.221,1304,2.395,1333,4.341,1336,3.554,1476,2.083,1578,2.797,1612,2.083,1621,4.319,1636,5.932,1692,2.797,1793,3.016,1835,5.275,1836,5.169,1837,3.016,1838,5.169,1839,6.313,1840,3.348,1841,5.169,1842,5.169,1843,3.348,1844,3.348,1845,5.169,1846,5.169,1847,3.348,1848,3.348,1849,3.348,1850,3.348,1851,3.348,1852,3.348,1853,3.348,1854,3.016,1855,3.348,1856,3.348,1857,3.016,1858,3.016]],["sidebarParentCategories/703",[459,0.893]],["title/704",[350,1.686,658,2.931]],["content/704",[30,2.23,172,2.424,182,3.454,323,2.754,329,2.717,333,4.033,339,4.694,561,2.613,658,3.788,749,4.841,1558,6.796,1808,5.641,1859,6.796,1860,7.544,1861,7.544,1862,7.544]],["sidebarParentCategories/704",[459,0.893]],["title/705",[225,2.931,350,1.686]],["content/705",[6,0.999,8,1.412,17,0.826,30,0.678,34,0.67,43,0.805,50,1.069,53,0.911,55,1.361,58,0.594,62,1.412,68,1.412,73,1.35,77,1.35,95,1.13,108,1.284,114,2.04,123,1.088,130,2.449,140,1.538,145,3.132,149,0.898,152,3.413,153,1.472,156,1.805,163,1.472,171,1.13,179,1.226,190,1.254,202,1.284,210,0.826,225,3.958,229,1.472,237,4.025,242,1.641,243,1.578,264,1.284,267,0.686,305,1.593,317,2.335,324,1.522,347,2.772,348,1.322,350,1.831,353,3.107,386,0.968,389,2.81,390,1.578,400,1.284,406,0.755,407,2.283,415,0.805,422,3.132,433,3.049,434,1.522,437,2.371,453,1.316,456,1.387,459,0.682,461,1.635,494,1.226,561,1.322,590,2.925,591,1.152,646,1.032,650,0.523,687,4.27,767,1.917,826,1.35,827,2.245,862,1.316,880,1.316,904,2.188,908,3.195,935,1.428,1037,3.664,1051,2.245,1061,0.968,1192,1.578,1292,4.538,1333,2.624,1336,2.624,1337,2.854,1338,4.492,1341,3.438,1476,1.538,1482,1.805,1548,1.522,1575,1.917,1608,1.472,1615,3.188,1617,3.188,1621,3.188,1626,1.472,1656,4.492,1658,3.505,1662,1.917,1663,2.067,1673,2.067,1674,2.067,1675,1.917,1676,3.438,1863,1.641,1864,2.294,1865,2.294,1866,2.294,1867,2.294,1868,3.816,1869,2.294,1870,3.816,1871,2.294,1872,2.294,1873,5.71,1874,2.294,1875,3.816,1876,3.816,1877,3.816,1878,2.067,1879,1.917,1880,4.413,1881,3.816,1882,2.294,1883,3.438,1884,3.816,1885,2.294,1886,2.294,1887,2.294,1888,2.294,1889,2.294,1890,2.294]],["sidebarParentCategories/705",[459,0.893]],["title/706",[30,1.297,225,2.203,263,2.16,1166,2.73]],["content/706",[5,2.059,6,2.122,20,1.827,34,1.991,55,1.449,58,0.71,89,1.5,96,1.289,137,2.059,146,1.022,150,2.838,151,1.59,152,3.796,167,2.059,180,1.309,202,1.737,225,2.447,227,1.877,232,1.992,237,1.827,263,3.356,284,0.962,317,1.993,347,2.704,348,1.315,350,1.408,353,2.92,385,1.33,386,1.309,407,2.167,409,1.289,413,4.391,431,1.78,438,2.664,453,2.795,461,1.33,591,1.559,613,1.737,615,1.559,650,0.331,679,2.135,827,2.868,908,2.727,928,1.932,934,1.446,1002,4.499,1009,3.451,1151,2.442,1166,4.241,1169,2.135,1170,2.594,1171,3.486,1172,2.594,1173,3.645,1336,2.135,1470,3.486,1476,1.251,1487,2.442,1533,2.594,1611,2.797,1658,2.221,1702,2.797,1802,4.876,1879,2.594,1883,4.391,1891,4.874,1892,4.874,1893,4.874,1894,4.874,1895,2.797,1896,3.104,1897,4.874,1898,4.874,1899,4.874,1900,4.874,1901,4.874,1902,3.104,1903,3.104,1904,3.104,1905,3.104,1906,3.104,1907,3.104,1908,3.104]],["sidebarParentCategories/706",[459,0.893]],["title/707",[123,1.667,315,1.609,348,0.949,350,1.015,459,0.489,609,1.801]],["content/707",[2,0.653,6,0.546,17,0.452,25,0.398,31,0.35,34,0.367,53,0.498,55,1.449,58,0.504,59,0.618,62,0.464,73,0.738,83,1.048,84,0.618,92,1.553,93,2.183,111,1.701,123,2.682,138,0.897,145,1.724,146,0.744,148,0.63,150,0.418,151,0.643,152,2.776,160,1.777,171,1.112,179,1.207,210,1.357,216,0.656,220,1.689,224,3.994,226,1.777,227,2.628,232,0.805,235,1.724,240,2.817,254,0.719,261,0.618,267,0.375,279,0.738,288,1.048,298,0.897,306,1.048,315,1.034,317,1.541,327,0.738,329,1.357,333,0.671,335,1.924,338,2.503,339,0.781,344,1.331,347,2.391,348,2.036,349,0.708,350,2.08,353,2.422,359,0.537,371,0.656,374,3.147,385,0.968,389,1.295,390,0.863,394,3.331,396,0.983,400,2.108,404,0.738,406,0.744,407,1.566,415,0.44,422,1.034,431,2.493,433,2.344,437,3.065,438,1.235,456,1.863,459,0.429,461,1.32,480,0.832,496,0.616,560,0.555,561,0.782,609,1.579,615,0.63,641,0.521,649,0.656,652,0.987,671,0.832,698,0.832,747,1.048,753,0.987,761,0.863,762,0.987,803,2.304,826,0.738,898,0.758,935,3.726,939,0.987,1035,1.13,1097,1.616,1319,1.13,1333,2.59,1363,0.863,1442,1.048,1476,1.242,1489,2.695,1495,0.938,1503,0.987,1554,0.897,1571,1.13,1658,1.616,1675,1.887,1677,1.777,1715,1.13,1721,2.035,1723,1.13,1725,1.13,1801,0.938,1805,1.13,1823,3.632,1854,2.035,1857,1.13,1858,2.776,1863,0.897,1878,2.035,1895,1.13,1909,5.277,1910,3.081,1911,1.254,1912,1.254,1913,1.254,1914,1.254,1915,1.254,1916,1.254,1917,3.767,1918,1.254,1919,2.259,1920,2.259,1921,2.259,1922,1.254,1923,1.254,1924,6.788,1925,1.254,1926,1.254,1927,1.254,1928,1.254,1929,1.254,1930,3.081,1931,1.254,1932,1.254,1933,1.254,1934,2.259,1935,4.845,1936,3.767,1937,4.845,1938,2.259,1939,3.767,1940,2.259,1941,1.254,1942,1.254,1943,2.259,1944,2.259,1945,2.259,1946,1.254,1947,2.259,1948,2.259,1949,1.254,1950,1.254,1951,1.254,1952,1.254,1953,1.254,1954,1.254,1955,3.767,1956,1.254,1957,4.845,1958,1.254,1959,2.259,1960,1.254,1961,1.254,1962,1.254,1963,1.254,1964,1.254,1965,1.254,1966,2.259,1967,1.254,1968,1.254,1969,1.254,1970,1.254,1971,4.845,1972,3.081,1973,4.347,1974,4.347,1975,1.254,1976,1.254,1977,1.254,1978,1.254,1979,2.035,1980,1.254,1981,1.254,1982,1.254,1983,1.254,1984,1.254,1985,1.254,1986,1.254,1987,1.254,1988,1.254,1989,1.254,1990,1.254]],["sidebarParentCategories/707",[459,0.893]],["title/708",[200,1.906,560,2.217,561,1.735]],["content/708",[32,2.22,41,4.771,43,2.678,47,4.302,58,0.599,92,3.956,96,2.389,117,2.68,140,3.075,200,2.903,225,2.889,243,3.956,344,1.761,349,1.804,409,2.389,437,2.389,459,1.269,461,2.465,464,2.189,526,3.01,560,3.378,561,3.159,682,3.145,688,2.365,827,3.385,862,3.299,902,3.692,920,5.183,952,3.692,968,4.302,1051,3.385,1152,3.22,1345,3.956,1476,2.318,1612,3.58,1736,4.807,1737,4.807,1801,4.302,1863,4.116]],["sidebarParentCategories/708",[459,0.893]],["title/709",[225,2.203,437,1.822,688,1.359,1061,1.85]],["content/709",[53,2.299,55,1.452,58,0.603,68,2.143,114,3.095,145,3.509,152,3.135,225,3.848,237,4.51,263,2.851,264,3.24,305,2.493,407,2.086,437,3.568,461,2.481,495,2.967,591,2.907,688,1.794,692,2.967,880,4.396,904,3.321,1336,3.981,1476,2.333,1656,6.03,1658,5.483,1745,6.905,1801,4.33,1880,6.905]],["sidebarParentCategories/709",[459,0.893]],["title/710",[150,1.463,437,1.822,688,1.359,1061,1.85]],["content/710",[58,0.649,59,3.069,130,4,146,2.052,150,3.137,171,3.069,210,2.897,239,3.407,249,3.879,284,1.931,338,2.956,369,4.904,407,2.245,437,2.588,449,3.13,685,5.615,688,1.931,692,3.193,912,5.615,1061,2.629,1469,6.328,1489,4.459,1631,5.615,1768,5.615,1837,7.245,1859,5.615,1863,4.459,1991,5.615,1992,8.905,1993,6.233,1994,6.233,1995,6.233,1996,6.233]],["sidebarParentCategories/710",[459,0.893]],["title/711",[437,2.08,688,1.552,1061,2.113]],["content/711",[9,4.44,34,1.887,53,2.564,55,1.312,84,3.18,150,2.153,180,2.723,202,3.614,218,4.283,264,3.614,279,3.8,348,1.743,359,4.084,407,2.326,437,3.416,461,2.767,494,3.452,646,2.906,688,2.001,692,3.308,1061,3.818,1121,6.473,1476,2.602,1626,4.144,1997,6.458,1998,6.458]],["sidebarParentCategories/711",[459,0.893]],["title/712",[267,1.312,336,2.044,688,1.359,1476,1.768]],["content/712",[2,1.43,3,1.071,7,2.584,8,0.663,17,2.162,20,1.82,25,0.981,29,0.899,30,0.529,31,0.166,32,1.193,44,1.339,55,0.668,58,0.67,62,0.663,65,3.052,68,0.663,70,1.837,71,1.193,77,1.054,102,0.369,111,1.597,117,0.834,123,1.467,146,1.018,148,0.899,149,0.701,178,1.496,179,0.957,191,0.979,210,1.114,218,1.188,224,1.054,227,1.082,233,1.339,235,2.719,249,1.114,252,0.604,256,2.433,265,0.806,267,1.795,277,1.188,294,1.188,296,1.114,302,2.979,304,2.433,305,1.58,310,1.304,319,0.672,326,1.231,333,0.957,335,0.792,336,2.796,337,1.961,338,2.602,341,3.23,342,2.224,344,0.548,348,1.48,350,1.179,373,1.002,385,2.082,386,1.304,389,1.027,406,1.976,415,1.432,438,0.979,457,1.496,459,1.092,463,0.724,464,2.087,487,0.937,494,0.957,496,1.638,517,2.428,540,1.281,546,2.049,551,2.231,554,1.339,555,1.613,556,3.223,557,1.496,558,1.496,561,0.62,564,1.281,565,1.553,566,1.613,567,2.147,568,3.296,569,1.523,570,1.149,571,2.619,572,1.613,573,1.613,574,1.496,575,1.496,576,3.677,577,1.613,585,4.377,586,2.786,587,2.786,591,0.899,612,1.054,615,0.899,633,0.979,638,0.882,650,0.92,651,1.443,688,1.993,698,1.188,709,4.377,753,1.409,838,2.402,845,4.377,846,3.633,847,5.407,848,2.786,862,1.773,945,0.779,964,1.231,1092,1.114,1152,1.002,1233,1.002,1248,1.409,1376,1.409,1474,1.054,1476,2.21,1502,1.281,1533,1.496,1551,1.281,1560,1.496,1601,1.409,1603,1.496,1606,1.496,1863,2.212,1999,1.79,2000,1.79,2001,1.79,2002,1.79,2003,1.79,2004,3.092,2005,3.092]],["sidebarParentCategories/712",[459,0.893]],["title/713",[95,2.467,560,2.217,561,1.735]],["content/713",[17,2.199,20,3.593,32,3.401,103,2.536,117,2.845,123,3.764,146,2.01,224,3.593,238,4.26,267,1.826,305,1.986,350,1.764,356,3.006,389,3.502,418,3.799,453,3.502,517,2.702,556,4.05,560,4.131,561,3.233,609,3.128,631,4.804,632,4.804,633,3.338,775,3.692,826,3.593,898,3.692,1388,5.5,1476,2.46,1491,4.566,1493,4.804,1548,4.05,1609,5.102]],["sidebarParentCategories/713",[459,0.893]],["title/714",[31,0.542,1802,4.176]],["content/714",[2,1.39,31,0.811,43,2.098,55,1.474,70,2.235,71,2.55,163,2.605,302,1.636,310,2.521,329,2.153,335,3.14,336,1.892,344,2.894,347,2.182,348,1.915,349,1.875,350,1.173,406,1.337,407,1.463,496,2.136,552,2.605,562,2.455,568,2.08,612,2.389,641,3.25,650,0.835,651,1.28,665,3.346,849,4.606,851,4.733,1476,1.636]],["sidebarParentCategories/714",[459,0.893]],["title/715",[323,1.829,650,0.534,727,2.567]],["content/715",[2,1.244,31,0.737,43,1.112,55,1.46,70,1.969,71,2.317,137,2.103,146,1.044,150,1.057,179,1.695,180,1.337,249,3.083,260,1.818,263,1.561,268,1.818,310,2.089,323,2.226,329,1.142,335,2.193,336,1.477,338,1.504,344,2.698,347,1.809,348,1.861,349,1.554,350,0.916,359,2.123,371,1.658,396,2.157,407,1.142,496,1.664,568,1.624,591,1.592,612,1.865,615,1.592,641,2.863,650,0.651,651,1.058,665,2.773,727,3.832,816,3.286,839,4.741,849,4.057,851,4.169,904,1.818,927,3.286,929,3.179,933,4.561,934,3.212,944,2.034,1005,2.371,1060,2.268,1061,2.572,1476,1.277,1560,2.649,1808,4.561,2006,2.371,2007,4.955,2008,2.856,2009,3.17,2010,3.17,2011,3.898,2012,3.898,2013,3.898]],["sidebarParentCategories/715",[459,0.893]],["title/716",[172,1.875,561,2.022]],["content/716",[17,1.996,25,1.758,43,2.611,58,0.775,68,2.05,84,2.728,117,2.581,120,3.1,140,2.999,146,1.824,148,2.782,172,1.78,210,1.996,240,4.143,348,1.495,371,2.898,407,1.996,410,4.143,561,1.919,591,2.782,612,3.26,646,2.493,650,0.591,651,0.85,698,3.675,800,4.991,820,7.373,849,4.379,938,3.26,989,4.143,1026,4.359,1061,4.227,1303,4.991,1441,7.022,1662,4.629,1835,4.629,1991,4.991,2006,4.143,2014,5.54,2015,4.991]],["sidebarParentCategories/716",[459,0.893]],["title/717",[222,3.191,815,3.872]],["content/717",[2,1.243,8,1.061,17,1.032,31,0.769,34,0.837,43,1.006,55,1.424,58,0.594,68,1.061,70,1.306,71,1.905,77,1.687,113,2.987,132,1.971,136,2.582,150,0.956,222,4.664,232,1.839,239,1.567,252,0.968,254,1.644,263,1.411,284,0.888,302,1.155,310,1.93,317,1.172,323,1.67,329,2.981,333,3.052,335,2.025,336,1.335,344,2.44,347,1.67,348,2.151,349,1.435,350,1.321,409,1.9,438,1.567,493,1.839,494,1.532,496,1.249,517,1.268,552,1.839,556,1.901,562,1.733,568,2.344,591,1.439,612,1.687,615,1.439,627,1.971,628,3.273,641,2.707,650,0.488,651,0.876,665,2.56,727,3.34,804,4.085,815,5.49,849,3.836,880,1.644,934,1.335,945,3.306,1026,2.255,1036,3.6,1049,2.395,1061,1.209,1304,2.05,1476,1.844,1551,3.273,1802,2.05,2008,2.582,2016,2.866,2017,2.866,2018,4.575,2019,2.395,2020,4.575,2021,2.866,2022,2.866,2023,4.575,2024,2.866,2025,2.866,2026,2.866,2027,2.866,2028,2.866,2029,2.866,2030,2.395]],["sidebarParentCategories/717",[459,0.893]],["title/718",[612,2.948,1297,3.941,2031,4.513]],["content/718",[2,1.001,5,1.274,8,0.711,17,1.835,30,0.568,31,0.765,34,0.561,42,1.05,43,1.152,50,1.53,51,2.584,53,0.763,55,1.396,58,0.732,59,0.946,70,1.454,71,1.823,75,1.605,84,1.617,88,1.436,89,0.928,93,1.649,103,1.364,113,2.251,117,0.895,123,1.558,130,1.233,140,1.734,146,0.632,148,0.964,149,0.752,150,0.64,160,1.511,172,1.636,182,0.879,202,1.838,209,1.161,218,1.274,222,1.796,240,2.456,267,0.982,310,1.385,317,2.341,323,1.199,329,2.401,333,1.027,335,1.454,336,0.895,344,2.758,347,1.199,348,1.683,349,1.03,350,1.243,353,1.407,354,1.274,359,0.823,371,1.005,389,1.102,396,1.43,406,1.082,407,1.183,409,1.787,418,2.044,427,1.161,431,1.884,433,1.195,438,1.05,448,1.233,464,0.731,465,1.005,484,0.928,494,1.027,495,1.683,496,0.896,500,1.511,517,1.905,546,0.964,561,0.665,565,0.731,568,0.984,612,1.13,615,2.161,628,1.374,641,2.115,649,1.005,650,0.783,651,0.66,652,1.511,653,1.374,658,3.132,665,1.838,679,1.321,682,1.05,688,0.595,690,1.436,727,3.196,749,2.108,764,1.13,769,1.73,804,2.35,805,2.456,815,1.274,816,1.274,826,1.13,839,2.259,849,2.532,851,2.602,874,1.436,875,1.436,895,1.933,903,1.274,914,1.374,915,1.374,927,1.274,929,2.108,934,0.895,935,1.195,939,3.386,1002,1.436,1036,2.584,1040,2.108,1061,3.208,1092,1.195,1102,1.605,1297,4.503,1376,1.511,1441,3.596,1443,3.877,1453,1.73,1476,0.774,1563,1.73,1626,1.233,1754,1.73,1802,1.374,2006,1.436,2011,1.511,2012,1.511,2013,1.511,2019,2.745,2030,4.256,2031,5.62,2032,1.921,2033,1.921,2034,2.959,2035,1.921,2036,1.73,2037,1.73,2038,1.921,2039,1.73,2040,1.921]],["sidebarParentCategories/718",[459,0.893]],["title/719",[114,1.567,146,0.965,152,1.199,343,1.944,613,1.641,1036,2.306,1037,2.192,2041,2.932]],["content/719",[2,1.238,31,0.766,55,1.386,58,0.814,68,1.292,70,1.524,71,2.12,111,1.366,114,1.866,145,3.322,148,1.753,152,2.183,179,1.866,180,1.472,210,1.258,239,3.967,260,2.002,267,1.596,310,2.251,335,2.362,336,1.626,344,2.525,347,1.949,348,2.448,349,1.674,496,1.457,497,2.497,556,2.316,560,1.545,590,1.789,613,4.376,615,1.753,641,3.014,665,2.987,679,2.4,688,1.082,698,2.316,728,2.497,764,2.054,861,3.145,902,2.24,934,2.487,945,2.821,1034,5.415,1037,7.038,1038,3.145,1040,2.24,1041,3.145,1061,3.061,1210,2.917,1387,2.917,1442,2.917,1476,1.407,1551,2.497,1801,2.611,1811,3.145,2042,6.481,2043,3.491,2044,3.491,2045,3.491,2046,3.491,2047,3.491,2048,3.491,2049,3.491,2050,3.491]],["sidebarParentCategories/719",[459,0.893]],["title/720",[31,0.408,612,2.582,1061,1.85,2051,3.953]],["content/720",[31,0.571,43,2.157,58,0.83,73,3.617,104,4.597,120,4.461,121,4.078,149,2.406,163,5.115,190,4.836,387,5.538,406,2.913,456,4.819,615,3.087,638,3.027,646,2.767,649,3.216,935,4.96,1061,3.947,1823,7.391,1979,8.951,2051,5.538,2052,6.148,2053,6.148]],["sidebarParentCategories/720",[459,0.893]],["title/721",[150,1.463,459,0.61,1333,3.017,2054,3.953]],["content/721",[58,0.703,73,3.971,74,6.08,89,3.261,90,5.047,111,2.641,138,4.828,150,3.23,179,3.608,212,3.458,218,4.477,241,5.93,359,2.892,407,2.431,437,2.803,561,2.93,609,3.458,945,2.938,992,5.31,1061,2.846,1333,4.641,2054,6.08,2055,6.749,2056,6.749]],["sidebarParentCategories/721",[459,0.893]],["title/722",[348,0.949,350,1.55,565,1.337,615,1.765,658,1.765]],["content/722",[2,0.98,5,1.09,25,0.521,29,0.825,30,1.818,31,0.636,34,0.838,35,2.34,42,0.898,50,0.765,55,1.429,58,0.477,62,1.062,68,1.414,70,1.308,71,1.67,73,0.967,84,0.809,95,0.809,96,1.587,103,1.192,112,0.825,113,2.72,117,0.765,118,2.448,138,1.175,145,0.752,149,0.643,180,1.611,209,2.31,211,1.09,216,1.501,222,2.504,225,2.299,249,1.786,252,0.555,267,0.858,268,0.942,284,0.509,305,0.933,310,1.21,317,1.873,319,0.616,323,1.048,328,0.919,329,2.35,335,1.27,336,0.765,344,2.535,347,2.086,348,1.76,349,0.9,350,2.392,353,2.448,354,1.903,359,1.229,371,1.501,385,0.704,396,1.249,406,0.945,407,0.592,410,1.228,415,0.576,422,1.749,433,1.022,448,2.452,464,0.625,484,2.761,494,0.878,496,0.783,526,0.859,552,1.054,556,1.09,565,3.29,568,0.842,570,1.054,591,0.825,610,1.175,613,0.919,615,1.441,641,1.902,647,1.022,650,0.408,651,0.586,658,2.299,665,1.606,671,1.09,682,2.089,687,1.228,688,0.509,699,1.09,720,2.534,727,2.346,728,1.175,749,1.054,804,2.053,805,1.228,815,1.09,816,1.903,827,1.689,839,3.149,849,2.695,851,2.31,908,2.563,927,1.903,928,1.022,929,1.841,934,1.337,942,1.292,945,1.249,964,1.13,1040,1.054,1042,1.292,1061,0.693,1098,1.292,1233,0.919,1258,1.09,1297,1.292,1304,1.175,1338,1.292,1349,1.13,1367,1.48,1455,3.826,1456,1.48,1457,1.48,1458,1.48,1459,1.373,1460,1.48,1462,1.48,1466,1.48,1467,1.48,1468,2.398,1469,2.258,1470,1.175,1471,1.48,1474,2.695,1476,0.662,1515,1.292,1613,1.48,1806,2.585,1808,1.228,2011,2.258,2012,2.258,2013,2.258,2019,2.398,2030,3.192,2036,1.48,2037,1.48,2039,2.585,2057,1.643,2058,1.643,2059,1.643,2060,1.643,2061,1.643,2062,1.643,2063,1.643,2064,3.826,2065,1.643,2066,1.643,2067,1.643,2068,1.643,2069,1.643,2070,1.643,2071,1.643,2072,1.643]],["sidebarParentCategories/722",[459,0.893]],["title/723",[30,1.297,225,2.203,350,1.267,561,1.52]],["content/723",[2,0.627,3,1.445,17,1.503,20,2.456,30,2.344,37,2.986,58,0.751,62,1.544,81,2.87,84,2.055,89,2.947,93,2.096,102,0.861,103,1.733,119,2.393,145,1.911,146,2.009,149,1.633,189,2.456,212,2.138,225,4.237,237,2.456,254,2.393,317,3.244,323,1.524,329,1.503,344,1.278,349,1.309,350,2.291,366,3.76,370,3.76,371,3.191,396,1.817,407,1.503,443,3.76,491,1.788,552,2.678,557,3.487,560,1.847,561,2.747,565,1.588,612,4.667,615,2.096,633,2.282,638,3.004,646,1.878,650,0.651,671,2.768,678,2.986,682,2.282,687,5.392,689,3.121,690,3.121,728,2.986,898,3.688,908,3.414,1050,3.487,1051,2.456,1489,5.158,1495,3.121,1612,3.796,1615,3.487,1617,3.487,1632,3.487,2015,5.496,2073,4.174,2074,4.174,2075,4.174,2076,4.174,2077,6.101,2078,4.174,2079,4.174,2080,4.174,2081,4.174,2082,4.174,2083,4.174,2084,4.174]],["sidebarParentCategories/723",[459,0.893]],["title/724",[30,1.154,225,1.96,561,1.352,565,1.485,1612,2.429]],["content/724",[2,1.256,30,2.083,31,0.655,35,2.109,43,0.757,55,1.454,62,0.798,68,2.453,70,1.568,71,1.937,89,1.042,145,1.659,180,0.909,204,2.255,209,1.304,216,1.895,222,1.179,225,3.329,227,1.304,237,2.132,239,1.981,242,1.543,252,0.728,267,0.645,302,1.888,305,0.701,310,1.528,329,2.205,335,1.603,336,1.688,344,2.561,347,2.005,348,2.382,349,1.136,350,1.586,359,1.552,371,1.128,407,0.777,491,2.352,496,0.989,556,1.43,565,2.927,568,1.105,570,3.007,591,1.083,613,3.073,641,2.28,646,0.97,650,0.707,651,0.719,653,1.543,658,1.083,665,2.028,720,2.403,727,1.105,816,2.403,827,2.132,839,3.776,849,2.132,851,2.833,862,1.237,904,1.237,927,2.403,929,2.325,934,1.688,942,1.697,945,1.577,1292,2.403,1308,3.264,1309,1.943,1310,3.264,1311,1.697,1312,4.221,1313,1.943,1476,1.46,1497,1.697,1612,2.916,1655,1.943,1808,1.613,1879,1.802,2006,1.613,2011,2.851,2012,2.851,2013,2.851,2064,3.027,2085,2.156,2086,2.156,2087,2.156,2088,4.686,2089,2.156,2090,2.156,2091,4.686,2092,4.686,2093,3.623,2094,3.623,2095,4.686,2096,4.686,2097,2.156,2098,2.156,2099,2.156]],["sidebarParentCategories/724",[459,0.893]],["title/725",[172,1.129,328,1.967,565,1.337,612,2.068,978,2.331,1565,2.937]],["content/725",[2,1.134,30,0.837,31,0.658,34,2.068,35,2.038,43,1.589,50,1.318,55,1.433,58,0.471,59,1.393,62,1.047,70,1.617,71,1.891,84,1.393,89,1.367,140,1.825,172,1.819,200,1.077,216,1.48,284,0.877,310,1.194,317,1.157,328,1.584,335,1.252,344,2.522,347,2.067,348,1.91,349,0.887,350,1.308,353,2.773,359,2.773,385,1.212,406,1.864,407,1.631,431,2.597,437,1.175,453,1.623,496,0.772,546,1.421,551,1.547,565,2.462,567,1.108,568,1.45,570,2.906,600,2.535,609,2.901,627,1.946,641,1.881,643,2.906,650,0.604,651,0.993,665,1.584,688,2.005,692,2.901,720,3.004,761,4.867,835,2.116,849,2.665,851,3.423,875,3.387,934,1.318,935,1.761,945,1.232,974,3.784,978,5.009,1040,3.633,1048,2.549,1093,2.116,1474,1.665,1497,2.227,1528,2.549,1565,2.365,1567,5.101,1626,1.816,1802,2.025,2006,2.116,2064,3.784,2100,4.529,2101,2.83,2102,2.83,2103,4.529,2104,2.83,2105,2.83,2106,2.83,2107,5.662,2108,2.83,2109,2.83,2110,2.83,2111,2.83,2112,2.83]],["sidebarParentCategories/725",[459,0.893]],["title/726",[114,1.447,210,0.975,407,0.975,480,1.796,945,1.179,1031,2.262,1032,2.262,1033,2.262,1628,2.262]],["content/726",[2,1.355,17,1.463,31,0.878,46,2.904,55,1.437,58,0.423,70,1.707,71,2.287,77,2.389,114,3.196,204,2.526,210,1.463,237,4.175,239,2.22,293,3.658,310,2.521,323,2.59,335,2.646,336,1.892,344,2.672,347,2.182,348,1.613,349,1.875,438,2.22,480,2.693,496,1.632,561,2.071,590,2.08,641,3.25,665,3.346,917,3.658,945,3.632,1020,5.929,1027,3.658,1028,5.386,1029,3.658,1030,3.658,1031,3.392,1032,3.392,1033,3.392,1061,1.712,1419,3.658,1476,1.636,1487,3.194,1544,3.392,1551,4.277,1556,3.194,1628,3.392,2113,4.06,2114,4.06,2115,3.658]],["sidebarParentCategories/726",[459,0.893]],["title/727",[84,2.16,650,0.468,1061,1.85,2116,3.953]],["content/727",[2,0.497,17,1.193,30,2.386,42,1.81,53,1.314,55,1.449,58,0.345,62,2.32,68,1.225,84,3.087,140,1.334,200,1.259,202,1.853,212,1.696,221,5.049,239,1.81,302,1.334,336,2.387,344,1.014,359,3.908,385,1.418,389,1.899,406,1.09,407,1.846,459,0.713,484,2.476,517,1.465,565,3.071,570,2.124,590,1.696,615,1.662,650,0.814,658,1.662,688,1.026,692,1.696,732,2.276,938,5.118,1005,2.476,1061,2.161,1327,4.282,1337,3.832,1346,2.766,1349,2.276,1470,3.666,1476,2.065,1484,2.766,1489,3.666,1739,2.982,1740,2.982,1747,6.877,2116,6.358,2117,3.311,2118,3.311,2119,3.311,2120,3.311,2121,7.058,2122,5.124,2123,3.311,2124,7.058,2125,5.124,2126,3.311,2127,5.124,2128,5.124,2129,5.124,2130,5.124,2131,5.124,2132,3.311,2133,3.311,2134,3.311,2135,3.311]],["sidebarParentCategories/727",[459,0.893]],["title/728",[146,1.649,910,3.323,2136,4.513]],["content/728",[2,0.594,17,2.111,25,1.86,26,5.28,28,3.303,31,0.367,35,3.477,53,2.774,58,0.931,68,2.585,111,1.547,125,4.383,130,2.536,172,1.883,191,2.161,200,2.23,202,2.212,232,2.536,239,2.161,298,2.828,311,2.828,371,4.042,406,1.93,407,1.424,422,2.683,427,2.39,459,0.55,495,3.579,515,2.39,517,2.594,546,1.985,551,2.161,561,2.03,567,1.547,609,2.025,623,5.555,628,2.828,650,0.422,651,0.606,671,3.888,679,5.313,699,2.622,753,3.11,872,3.303,885,2.718,898,2.39,910,5.473,1006,4.897,1061,1.667,1300,5.224,1490,4.897,1530,3.561,1637,3.561,2034,3.561,2115,3.561,2136,6.96,2137,3.953,2138,3.953,2139,3.953,2140,3.953,2141,5.861,2142,7.727,2143,6.986,2144,3.953,2145,3.953,2146,3.953,2147,3.953,2148,3.953]],["sidebarParentCategories/728",[459,0.893]],["title/729",[200,1.906,560,2.217,561,1.735]],["content/729",[32,2.263,41,4.808,43,2.712,47,4.387,58,0.611,96,2.436,117,2.733,140,3.115,200,2.941,243,4.034,323,2.142,336,2.733,344,1.796,409,2.436,437,2.436,459,1.279,464,2.231,526,3.069,556,3.891,560,3.421,561,3.183,682,3.207,688,2.395,862,3.364,902,3.764,952,3.764,968,4.387,1051,3.452,1152,3.283,1191,5.285,1345,4.034,1476,2.364,1612,3.65,1736,4.901,1737,4.901,1863,4.196]],["sidebarParentCategories/729",[459,0.893]]],"invertedIndex":[["",{"_index":55,"title":{"456":{},"457":{},"458":{},"489":{},"490":{},"491":{},"492":{},"504":{},"505":{},"523":{},"524":{},"528":{},"529":{},"545":{},"546":{},"547":{},"548":{},"549":{},"570":{},"571":{},"572":{},"573":{},"574":{},"575":{},"576":{},"656":{},"657":{},"658":{},"659":{},"660":{}},"content":{"442":{},"455":{},"480":{},"488":{},"491":{},"500":{},"501":{},"503":{},"508":{},"509":{},"511":{},"514":{},"520":{},"521":{},"522":{},"525":{},"526":{},"527":{},"533":{},"534":{},"537":{},"539":{},"541":{},"542":{},"544":{},"549":{},"550":{},"554":{},"561":{},"569":{},"579":{},"580":{},"581":{},"584":{},"589":{},"590":{},"591":{},"598":{},"599":{},"600":{},"603":{},"604":{},"605":{},"608":{},"615":{},"616":{},"625":{},"626":{},"627":{},"628":{},"635":{},"636":{},"638":{},"639":{},"640":{},"644":{},"645":{},"649":{},"650":{},"651":{},"652":{},"655":{},"668":{},"669":{},"670":{},"684":{},"685":{},"686":{},"688":{},"689":{},"690":{},"691":{},"692":{},"693":{},"695":{},"696":{},"697":{},"698":{},"700":{},"702":{},"703":{},"705":{},"706":{},"707":{},"709":{},"711":{},"712":{},"714":{},"715":{},"717":{},"718":{},"719":{},"722":{},"724":{},"725":{},"726":{},"727":{}},"sidebarParentCategories":{}}],["0.0.1",{"_index":1480,"title":{},"content":{"661":{}},"sidebarParentCategories":{}}],["0.1",{"_index":1523,"title":{},"content":{"669":{},"670":{}},"sidebarParentCategories":{}}],["0.1.0",{"_index":1475,"title":{"658":{},"686":{}},"content":{"655":{},"658":{},"661":{},"665":{},"686":{},"687":{},"688":{},"689":{},"690":{},"691":{},"692":{},"693":{},"695":{},"696":{},"697":{}},"sidebarParentCategories":{}}],["0.2",{"_index":1535,"title":{},"content":{"670":{},"694":{}},"sidebarParentCategories":{}}],["0.2.0",{"_index":1608,"title":{},"content":{"687":{},"688":{},"689":{},"690":{},"691":{},"693":{},"695":{},"697":{},"705":{}},"sidebarParentCategories":{}}],["0.2.5",{"_index":1809,"title":{},"content":{"701":{}},"sidebarParentCategories":{}}],["0.2.x",{"_index":461,"title":{"658":{},"659":{},"686":{},"698":{}},"content":{"509":{},"655":{},"658":{},"659":{},"665":{},"686":{},"688":{},"689":{},"690":{},"692":{},"693":{},"695":{},"696":{},"698":{},"699":{},"700":{},"702":{},"703":{},"705":{},"706":{},"707":{},"708":{},"709":{},"711":{}},"sidebarParentCategories":{}}],["0.3.0",{"_index":1801,"title":{},"content":{"699":{},"707":{},"708":{},"709":{},"719":{}},"sidebarParentCategories":{}}],["0.3.x",{"_index":1476,"title":{"659":{},"660":{},"698":{},"712":{}},"content":{"655":{},"659":{},"660":{},"665":{},"672":{},"678":{},"698":{},"700":{},"702":{},"703":{},"705":{},"706":{},"707":{},"708":{},"709":{},"711":{},"712":{},"713":{},"714":{},"715":{},"717":{},"718":{},"719":{},"722":{},"724":{},"726":{},"727":{},"729":{}},"sidebarParentCategories":{}}],["0.4.0",{"_index":556,"title":{},"content":{"518":{},"712":{},"713":{},"717":{},"719":{},"722":{},"724":{},"729":{}},"sidebarParentCategories":{}}],["0.4.x",{"_index":336,"title":{"660":{},"712":{}},"content":{"499":{},"501":{},"506":{},"509":{},"518":{},"655":{},"660":{},"665":{},"672":{},"678":{},"712":{},"714":{},"715":{},"717":{},"718":{},"719":{},"722":{},"724":{},"726":{},"727":{},"729":{}},"sidebarParentCategories":{}}],["0.5.x",{"_index":334,"title":{},"content":{"499":{},"506":{}},"sidebarParentCategories":{}}],["0.9.x",{"_index":460,"title":{},"content":{"509":{}},"sidebarParentCategories":{}}],["0023",{"_index":1705,"title":{},"content":{"689":{}},"sidebarParentCategories":{}}],["004",{"_index":205,"title":{},"content":{"481":{},"530":{}},"sidebarParentCategories":{}}],["0044",{"_index":2113,"title":{},"content":{"726":{}},"sidebarParentCategories":{}}],["0046",{"_index":1373,"title":{},"content":{"643":{},"647":{}},"sidebarParentCategories":{}}],["0160",{"_index":1175,"title":{},"content":{"625":{},"629":{},"689":{}},"sidebarParentCategories":{}}],["01eafa4de4e22ed4fc2ee522b6ce2731",{"_index":2036,"title":{},"content":{"718":{},"722":{}},"sidebarParentCategories":{}}],["0360",{"_index":1045,"title":{},"content":{"593":{},"701":{}},"sidebarParentCategories":{}}],["040e96c3c539",{"_index":1752,"title":{},"content":{"693":{}},"sidebarParentCategories":{}}],["0434",{"_index":1165,"title":{},"content":{"625":{},"629":{}},"sidebarParentCategories":{}}],["04a2c382",{"_index":1785,"title":{},"content":{"696":{}},"sidebarParentCategories":{}}],["0592",{"_index":1655,"title":{},"content":{"688":{},"724":{}},"sidebarParentCategories":{}}],["0771",{"_index":2090,"title":{},"content":{"724":{}},"sidebarParentCategories":{}}],["09e46da9",{"_index":1748,"title":{},"content":{"693":{}},"sidebarParentCategories":{}}],["1",{"_index":956,"title":{"611":{},"619":{},"625":{},"632":{},"638":{},"644":{},"649":{}},"content":{"569":{},"570":{},"580":{},"598":{},"599":{},"615":{},"622":{},"635":{},"646":{},"650":{},"669":{},"703":{}},"sidebarParentCategories":{}}],["1.0",{"_index":1716,"title":{},"content":{"690":{}},"sidebarParentCategories":{}}],["1.0.0",{"_index":1459,"title":{},"content":{"651":{},"661":{},"722":{}},"sidebarParentCategories":{}}],["1.0.1",{"_index":2067,"title":{},"content":{"722":{}},"sidebarParentCategories":{}}],["1.1",{"_index":1167,"title":{},"content":{"625":{},"629":{},"690":{}},"sidebarParentCategories":{}}],["1.4",{"_index":957,"title":{},"content":{"580":{}},"sidebarParentCategories":{}}],["123",{"_index":361,"title":{},"content":{"500":{}},"sidebarParentCategories":{}}],["18",{"_index":691,"title":{},"content":{"531":{},"534":{},"535":{},"539":{},"577":{},"581":{}},"sidebarParentCategories":{}}],["2",{"_index":1117,"title":{"613":{},"620":{},"633":{},"645":{},"650":{}},"content":{"598":{},"599":{},"625":{},"646":{},"669":{}},"sidebarParentCategories":{}}],["2.1",{"_index":1254,"title":{"614":{},"621":{},"634":{}},"content":{},"sidebarParentCategories":{}}],["2.2",{"_index":1257,"title":{"615":{},"622":{},"635":{}},"content":{},"sidebarParentCategories":{}}],["2.3",{"_index":1262,"title":{"616":{},"623":{},"636":{}},"content":{},"sidebarParentCategories":{}}],["2022",{"_index":1269,"title":{},"content":{"618":{}},"sidebarParentCategories":{}}],["2060.io/ref",{"_index":737,"title":{},"content":{"534":{},"539":{},"581":{}},"sidebarParentCategories":{}}],["23",{"_index":1342,"title":{},"content":{"640":{}},"sidebarParentCategories":{}}],["3",{"_index":963,"title":{"626":{},"639":{},"646":{},"651":{},"652":{}},"content":{"569":{},"576":{},"646":{}},"sidebarParentCategories":{}}],["3.0",{"_index":1142,"title":{},"content":{"600":{}},"sidebarParentCategories":{}}],["3000",{"_index":479,"title":{},"content":{"511":{},"525":{}},"sidebarParentCategories":{}}],["3001",{"_index":1164,"title":{},"content":{"625":{},"628":{},"644":{}},"sidebarParentCategories":{}}],["3001const",{"_index":1400,"title":{},"content":{"644":{}},"sidebarParentCategories":{}}],["3002",{"_index":1299,"title":{},"content":{"638":{}},"sidebarParentCategories":{}}],["32",{"_index":822,"title":{},"content":{"542":{}},"sidebarParentCategories":{}}],["364a1ec9237d",{"_index":1112,"title":{},"content":{"598":{}},"sidebarParentCategories":{}}],["364a1ec9237d#key",{"_index":1114,"title":{},"content":{"598":{}},"sidebarParentCategories":{}}],["4",{"_index":1185,"title":{"627":{},"640":{}},"content":{},"sidebarParentCategories":{}}],["40ea",{"_index":1110,"title":{},"content":{"598":{}},"sidebarParentCategories":{}}],["43ee",{"_index":1125,"title":{},"content":{"599":{},"600":{}},"sidebarParentCategories":{}}],["4483",{"_index":1126,"title":{},"content":{"599":{},"600":{}},"sidebarParentCategories":{}}],["4909",{"_index":1750,"title":{},"content":{"693":{}},"sidebarParentCategories":{}}],["4de9",{"_index":1787,"title":{},"content":{"696":{}},"sidebarParentCategories":{}}],["5",{"_index":503,"title":{"628":{}},"content":{"503":{},"505":{},"685":{}},"sidebarParentCategories":{}}],["50",{"_index":1877,"title":{},"content":{"705":{}},"sidebarParentCategories":{}}],["5000",{"_index":482,"title":{},"content":{"511":{}},"sidebarParentCategories":{}}],["6",{"_index":1432,"title":{},"content":{"646":{}},"sidebarParentCategories":{}}],["7",{"_index":1434,"title":{},"content":{"646":{}},"sidebarParentCategories":{}}],["7000",{"_index":1852,"title":{},"content":{"703":{}},"sidebarParentCategories":{}}],["8",{"_index":1435,"title":{},"content":{"646":{}},"sidebarParentCategories":{}}],["8ae5",{"_index":1111,"title":{},"content":{"598":{}},"sidebarParentCategories":{}}],["9",{"_index":1436,"title":{},"content":{"646":{}},"sidebarParentCategories":{}}],["98c5",{"_index":1127,"title":{},"content":{"599":{},"600":{}},"sidebarParentCategories":{}}],["999e",{"_index":1786,"title":{},"content":{"696":{}},"sidebarParentCategories":{}}],["9dec0b2fa5e4",{"_index":1789,"title":{},"content":{"696":{}},"sidebarParentCategories":{}}],["_anoncreds/credenti",{"_index":2132,"title":{},"content":{"727":{}},"sidebarParentCategories":{}}],["_anoncreds/credentialrequest",{"_index":2135,"title":{},"content":{"727":{}},"sidebarParentCategories":{}}],["_before_",{"_index":1510,"title":{},"content":{"668":{}},"sidebarParentCategories":{}}],["_internal/indycredenti",{"_index":1740,"title":{},"content":{"692":{},"727":{}},"sidebarParentCategories":{}}],["_internal/indyrequest",{"_index":1739,"title":{},"content":{"692":{},"727":{}},"sidebarParentCategories":{}}],["a1d2",{"_index":1788,"title":{},"content":{"696":{}},"sidebarParentCategories":{}}],["a575",{"_index":1749,"title":{},"content":{"693":{}},"sidebarParentCategories":{}}],["abov",{"_index":430,"title":{},"content":{"508":{},"515":{}},"sidebarParentCategories":{}}],["abstract",{"_index":1359,"title":{},"content":{"643":{}},"sidebarParentCategories":{}}],["accept",{"_index":949,"title":{},"content":{"569":{},"574":{},"580":{},"589":{},"624":{},"637":{},"638":{},"639":{},"644":{},"645":{},"688":{},"703":{}},"sidebarParentCategories":{}}],["acceptpresent",{"_index":1867,"title":{},"content":{"705":{}},"sidebarParentCategories":{}}],["acceptpropos",{"_index":1865,"title":{},"content":{"705":{}},"sidebarParentCategories":{}}],["acceptxxx",{"_index":1634,"title":{},"content":{"688":{}},"sidebarParentCategories":{}}],["acces",{"_index":1931,"title":{},"content":{"707":{}},"sidebarParentCategories":{}}],["access",{"_index":73,"title":{},"content":{"442":{},"508":{},"649":{},"688":{},"689":{},"692":{},"702":{},"705":{},"707":{},"720":{},"721":{},"722":{}},"sidebarParentCategories":{}}],["accident",{"_index":559,"title":{},"content":{"518":{}},"sidebarParentCategories":{}}],["accord",{"_index":1098,"title":{},"content":{"598":{},"625":{},"701":{},"722":{}},"sidebarParentCategories":{}}],["accordingli",{"_index":1319,"title":{},"content":{"639":{},"707":{}},"sidebarParentCategories":{}}],["account",{"_index":826,"title":{},"content":{"542":{},"608":{},"687":{},"688":{},"690":{},"693":{},"695":{},"699":{},"705":{},"707":{},"713":{},"718":{}},"sidebarParentCategories":{}}],["acm",{"_index":683,"title":{},"content":{"527":{},"529":{},"569":{},"571":{},"624":{},"625":{},"627":{},"628":{}},"sidebarParentCategories":{}}],["acmeag",{"_index":1219,"title":{},"content":{"628":{}},"sidebarParentCategories":{}}],["acquir",{"_index":357,"title":{},"content":{"500":{}},"sidebarParentCategories":{}}],["act",{"_index":127,"title":{},"content":{"478":{},"694":{}},"sidebarParentCategories":{}}],["action",{"_index":288,"title":{},"content":{"498":{},"694":{},"707":{}},"sidebarParentCategories":{}}],["actionmenu",{"_index":1817,"title":{},"content":{"702":{}},"sidebarParentCategories":{}}],["actionmenumodul",{"_index":1824,"title":{},"content":{"702":{}},"sidebarParentCategories":{}}],["activ",{"_index":553,"title":{},"content":{"518":{},"628":{}},"sidebarParentCategories":{}}],["actual",{"_index":410,"title":{},"content":{"508":{},"690":{},"694":{},"716":{},"722":{}},"sidebarParentCategories":{}}],["ad",{"_index":646,"title":{"522":{},"533":{},"537":{},"542":{},"550":{},"579":{}},"content":{"542":{},"608":{},"650":{},"661":{},"680":{},"688":{},"689":{},"690":{},"692":{},"694":{},"695":{},"696":{},"697":{},"705":{},"711":{},"716":{},"720":{},"723":{},"724":{}},"sidebarParentCategories":{}}],["adapt",{"_index":617,"title":{},"content":{"520":{},"662":{}},"sidebarParentCategories":{}}],["add",{"_index":338,"title":{"684":{}},"content":{"500":{},"502":{},"507":{},"519":{},"520":{},"532":{},"536":{},"537":{},"541":{},"542":{},"544":{},"578":{},"638":{},"684":{},"686":{},"698":{},"702":{},"707":{},"710":{},"712":{},"715":{}},"sidebarParentCategories":{}}],["addit",{"_index":591,"title":{"520":{},"627":{}},"content":{"520":{},"554":{},"599":{},"680":{},"688":{},"693":{},"696":{},"697":{},"705":{},"706":{},"709":{},"712":{},"715":{},"716":{},"717":{},"722":{},"724":{}},"sidebarParentCategories":{}}],["admin",{"_index":477,"title":{},"content":{"511":{}},"sidebarParentCategories":{}}],["admin_account",{"_index":1242,"title":{},"content":{"608":{}},"sidebarParentCategories":{}}],["admin_password",{"_index":1243,"title":{},"content":{"608":{}},"sidebarParentCategories":{}}],["adopt",{"_index":1046,"title":{},"content":{"593":{},"643":{}},"sidebarParentCategories":{}}],["advanc",{"_index":992,"title":{},"content":{"587":{},"604":{},"643":{},"721":{}},"sidebarParentCategories":{}}],["advantag",{"_index":1503,"title":{},"content":{"668":{},"669":{},"688":{},"707":{}},"sidebarParentCategories":{}}],["advis",{"_index":1544,"title":{},"content":{"672":{},"679":{},"726":{}},"sidebarParentCategories":{}}],["affect",{"_index":2056,"title":{},"content":{"721":{}},"sidebarParentCategories":{}}],["afj",{"_index":267,"title":{"608":{},"655":{},"658":{},"659":{},"660":{},"686":{},"698":{},"712":{}},"content":{"488":{},"489":{},"490":{},"491":{},"492":{},"496":{},"498":{},"499":{},"501":{},"506":{},"508":{},"509":{},"511":{},"512":{},"518":{},"519":{},"522":{},"605":{},"606":{},"655":{},"656":{},"658":{},"659":{},"660":{},"661":{},"662":{},"663":{},"665":{},"666":{},"672":{},"678":{},"686":{},"687":{},"688":{},"689":{},"690":{},"698":{},"699":{},"701":{},"705":{},"707":{},"712":{},"713":{},"718":{},"719":{},"722":{},"724":{}},"sidebarParentCategories":{}}],["afj'",{"_index":599,"title":{},"content":{"520":{}},"sidebarParentCategories":{}}],["aforement",{"_index":1860,"title":{},"content":{"704":{}},"sidebarParentCategories":{}}],["afterward",{"_index":1517,"title":{},"content":{"669":{},"672":{}},"sidebarParentCategories":{}}],["ag",{"_index":1341,"title":{},"content":{"640":{},"705":{}},"sidebarParentCategories":{}}],["again",{"_index":1530,"title":{},"content":{"669":{},"728":{}},"sidebarParentCategories":{}}],["agent",{"_index":31,"title":{"456":{},"477":{},"505":{},"518":{},"521":{},"526":{},"533":{},"537":{},"542":{},"550":{},"570":{},"579":{},"582":{},"625":{},"638":{},"649":{},"668":{},"669":{},"670":{},"700":{},"714":{},"720":{}},"content":{"442":{},"455":{},"477":{},"478":{},"479":{},"480":{},"481":{},"488":{},"489":{},"492":{},"494":{},"495":{},"499":{},"500":{},"501":{},"503":{},"506":{},"508":{},"509":{},"519":{},"521":{},"522":{},"523":{},"524":{},"525":{},"526":{},"527":{},"530":{},"531":{},"532":{},"533":{},"537":{},"541":{},"542":{},"543":{},"544":{},"550":{},"569":{},"574":{},"579":{},"582":{},"583":{},"584":{},"589":{},"591":{},"592":{},"593":{},"594":{},"603":{},"608":{},"624":{},"625":{},"626":{},"627":{},"628":{},"637":{},"638":{},"642":{},"643":{},"644":{},"645":{},"646":{},"647":{},"648":{},"649":{},"650":{},"664":{},"666":{},"667":{},"668":{},"669":{},"670":{},"684":{},"694":{},"700":{},"701":{},"702":{},"703":{},"707":{},"712":{},"714":{},"715":{},"717":{},"718":{},"719":{},"720":{},"722":{},"724":{},"725":{},"726":{},"728":{}},"sidebarParentCategories":{"531":{},"532":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"551":{},"552":{},"553":{},"554":{},"555":{},"556":{},"557":{},"558":{},"559":{},"560":{},"561":{},"562":{},"563":{},"564":{},"565":{},"566":{},"567":{},"568":{},"577":{},"578":{},"579":{},"580":{},"581":{},"602":{},"603":{},"604":{},"605":{}}}],["agent'",{"_index":1805,"title":{},"content":{"700":{},"707":{}},"sidebarParentCategories":{}}],["agent(agentconfig",{"_index":1804,"title":{},"content":{"700":{}},"sidebarParentCategories":{}}],["agent.config.filesystem.basepath}/afj/migration/backup/${backupidentifi",{"_index":1541,"title":{},"content":{"671":{}},"sidebarParentCategories":{}}],["agent.config.walletconfig.id",{"_index":1592,"title":{},"content":{"685":{}},"sidebarParentCategories":{}}],["agent.connections.createinvit",{"_index":1683,"title":{},"content":{"689":{}},"sidebarParentCategories":{}}],["agent.connections.findallbyoutofbandid(id",{"_index":1193,"title":{},"content":{"627":{}},"sidebarParentCategories":{}}],["agent.connections.findallbyoutofbandid(outofbandrecord.id",{"_index":1690,"title":{},"content":{"689":{}},"sidebarParentCategories":{}}],["agent.connections.receiveinvitation(parsedinvit",{"_index":1698,"title":{},"content":{"689":{}},"sidebarParentCategories":{}}],["agent.connections.receiveinvitationfromurl(invitationurl",{"_index":1694,"title":{},"content":{"689":{}},"sidebarParentCategories":{}}],["agent.credentials.findcredentialmessage('credentialrecordid",{"_index":1672,"title":{},"content":{"688":{}},"sidebarParentCategories":{}}],["agent.credentials.findoffermessage('credentialrecordid",{"_index":1670,"title":{},"content":{"688":{}},"sidebarParentCategories":{}}],["agent.credentials.findproposalmessage('credentialrecordid",{"_index":1669,"title":{},"content":{"688":{}},"sidebarParentCategories":{}}],["agent.credentials.findrequestmessage('credentialrecordid",{"_index":1671,"title":{},"content":{"688":{}},"sidebarParentCategories":{}}],["agent.credentials.getbyid('credentialrecordid",{"_index":1664,"title":{},"content":{"688":{}},"sidebarParentCategories":{}}],["agent.credentials.getformatdata(credentialrecord.id",{"_index":1647,"title":{},"content":{"688":{}},"sidebarParentCategories":{}}],["agent.credentials.offercredenti",{"_index":1625,"title":{},"content":{"688":{}},"sidebarParentCategories":{}}],["agent.credentials.offercredential('connectionid",{"_index":1618,"title":{},"content":{"688":{}},"sidebarParentCategories":{}}],["agent.dependencymanager.resolve(anoncredslinksecretrepositori",{"_index":2106,"title":{},"content":{"725":{}},"sidebarParentCategories":{}}],["agent.dids.cr",{"_index":1118,"title":{},"content":{"598":{},"650":{}},"sidebarParentCategories":{}}],["agent.dids.create(connectioneventtypes.connectionstatechang",{"_index":1197,"title":{},"content":{"627":{},"628":{},"689":{}},"sidebarParentCategories":{}}],["agent.events.on(credentialeventtypes.credentialstatechang",{"_index":1321,"title":{},"content":{"639":{}},"sidebarParentCategories":{}}],["holderconfig",{"_index":1316,"title":{},"content":{"638":{}},"sidebarParentCategories":{}}],["home",{"_index":1597,"title":{},"content":{"685":{}},"sidebarParentCategories":{}}],["home/indy/docu",{"_index":1599,"title":{},"content":{"685":{}},"sidebarParentCategories":{}}],["homebrew",{"_index":518,"title":{},"content":{"514":{},"631":{}},"sidebarParentCategories":{}}],["hood",{"_index":1536,"title":{},"content":{"670":{}},"sidebarParentCategories":{}}],["hook",{"_index":303,"title":{"490":{},"506":{}},"content":{"488":{},"490":{},"506":{},"507":{},"508":{}},"sidebarParentCategories":{}}],["hooks@^0.5",{"_index":372,"title":{},"content":{"507":{}},"sidebarParentCategories":{}}],["hooray",{"_index":444,"title":{},"content":{"508":{}},"sidebarParentCategories":{}}],["hope",{"_index":2047,"title":{},"content":{"719":{}},"sidebarParentCategories":{}}],["host",{"_index":295,"title":{},"content":{"488":{},"544":{},"549":{},"561":{},"589":{}},"sidebarParentCategories":{}}],["http",{"_index":247,"title":{},"content":{"485":{},"488":{},"489":{},"509":{},"511":{},"525":{},"554":{},"625":{},"628":{},"638":{},"643":{}},"sidebarParentCategories":{}}],["http://localhost:${port}`,})console.log(mediatiorinvitationurl",{"_index":1410,"title":{},"content":{"644":{}},"sidebarParentCategories":{}}],["http://localhost:${port}`],}const",{"_index":1401,"title":{},"content":{"644":{}},"sidebarParentCategories":{}}],["http://localhost:3000/doc",{"_index":486,"title":{},"content":{"511":{}},"sidebarParentCategories":{}}],["http://localhost:3001",{"_index":1162,"title":{},"content":{"625":{},"628":{}},"sidebarParentCategories":{}}],["http://localhost:5000",{"_index":476,"title":{},"content":{"511":{}},"sidebarParentCategories":{}}],["httpinboundtransport",{"_index":664,"title":{},"content":{"525":{},"625":{},"628":{},"638":{},"644":{}},"sidebarParentCategories":{}}],["httpoutboundtransport",{"_index":662,"title":{},"content":{"525":{},"625":{},"628":{},"638":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())agent.registeroutboundtransport(new",{"_index":668,"title":{},"content":{"525":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())alice.registeroutboundtransport(new",{"_index":1425,"title":{},"content":{"645":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())mediator.registerinboundtransport(new",{"_index":1403,"title":{},"content":{"644":{}},"sidebarParentCategories":{}}],["https://afj.com",{"_index":1907,"title":{},"content":{"706":{}},"sidebarParentCategories":{}}],["https://crates.io/crates/env_logg",{"_index":1089,"title":{},"content":{"605":{}},"sidebarParentCategories":{}}],["https://deb.nodesource.com/setup_18.x",{"_index":531,"title":{},"content":{"514":{}},"sidebarParentCategories":{}}],["https://didcomm.org",{"_index":1041,"title":{},"content":{"592":{},"719":{}},"sidebarParentCategories":{}}],["https://didcomm.org/connections/1.0/invit",{"_index":1784,"title":{},"content":{"696":{}},"sidebarParentCategories":{}}],["https://didcomm.org/messagepickup/2.0",{"_index":1841,"title":{},"content":{"703":{}},"sidebarParentCategories":{}}],["https://didcomm.org/mi",{"_index":1725,"title":{},"content":{"690":{},"707":{}},"sidebarParentCategories":{}}],["https://example.com",{"_index":1684,"title":{},"content":{"689":{},"696":{}},"sidebarParentCategories":{}}],["https://example.com?c_i=eyxxx",{"_index":1693,"title":{},"content":{"689":{}},"sidebarParentCategories":{}}],["https://example.org",{"_index":1174,"title":{},"content":{"625":{},"628":{}},"sidebarParentCategories":{}}],["https://example.org:3000",{"_index":1012,"title":{},"content":{"589":{}},"sidebarParentCategories":{}}],["https://github.com/hyperledger/ari",{"_index":740,"title":{},"content":{"534":{},"539":{},"581":{}},"sidebarParentCategories":{}}],["https://github.com/hyperledger/indi",{"_index":874,"title":{},"content":{"554":{},"614":{},"621":{},"634":{},"718":{}},"sidebarParentCategories":{}}],["https://github.com/nod",{"_index":742,"title":{},"content":{"534":{},"539":{},"581":{}},"sidebarParentCategories":{}}],["https://google.com",{"_index":1905,"title":{},"content":{"706":{}},"sidebarParentCategories":{}}],["https://mediator.dev.animo.id/invite?oob=eyjadhlwzsi6imh0dhbzoi8vzglky29tbs5vcmcvb3v0lw9mlwjhbmqvms4xl2ludml0yxrpb24ilcjaawqioiiymdc1mdm4ys05zgu3ltrioditywuxyi1jnzbmndg4mjyzytcilcjsywjlbci6ikfuaw1vie1lzglhdg9yiiwiywnjzxb0ijpbimrpzgnvbw0vywlwmsisimrpzgnvbw0vywlwmjtlbny9cmzjmtkixswiagfuzhnoywtlx3byb3rvy29scyi6wyjodhrwczovl2rpzgnvbw0ub3jnl2rpzgv4y2hhbmdllzeumcisimh0dhbzoi8vzglky29tbs5vcmcvy29ubmvjdglvbnmvms4wil0sinnlcnzpy2vzijpbeyjpzci6iinpbmxpbmutmcisinnlcnzpy2vfbmrwb2ludci6imh0dhbzoi8vbwvkawf0b3iuzgv2lmfuaw1vlmlkiiwidhlwzsi6imrpzc1jb21tdw5py2f0aw9uiiwicmvjaxbpzw50s2v5cyi6wyjkawq6a2v5ono2twtvsg9rtuphdu5vue5ov1pqcew3rgs1szntq0ndmlbpndjgy3fwr25iampmcsjdlcjyb3v0aw5ns2v5cyi6w119lhsiawqioiijaw5saw5llteilcjzzxj2awnlrw5kcg9pbnqioij3c3m6ly9tzwrpyxrvci5kzxyuyw5pbw8uawqilcj0exblijoizglklwnvbw11bmljyxrpb24ilcjyzwnpcgllbnrlzxlzijpbimrpzdprzxk6ejzna29ib1fnsmf1tlvqtk5xwlbwtddeazvlm21dq0myugk0mkzjcxbhbmjqakxxil0sinjvdxrpbmdlzxlzijpbxx1dfq'const",{"_index":1421,"title":{},"content":{"645":{}},"sidebarParentCategories":{}}],["https://picsum.photos/200",{"_index":1057,"title":{},"content":{"594":{}},"sidebarParentCategories":{}}],["https://rand.in",{"_index":1138,"title":{},"content":{"599":{}},"sidebarParentCategories":{}}],["https://raw.githubusercontent.com/homebrew/install/head/install.sh",{"_index":523,"title":{},"content":{"514":{},"556":{},"564":{}},"sidebarParentCategories":{}}],["https://rpm.nodesource.com/setup_18.x",{"_index":538,"title":{},"content":{"514":{}},"sidebarParentCategories":{}}],["https://sh.rustup.r",{"_index":868,"title":{},"content":{"554":{}},"sidebarParentCategories":{}}],["hub",{"_index":195,"title":{},"content":{"480":{}},"sidebarParentCategories":{}}],["hyperledg",{"_index":42,"title":{},"content":{"442":{},"481":{},"530":{},"538":{},"543":{},"569":{},"573":{},"577":{},"578":{},"647":{},"648":{},"650":{},"718":{},"722":{},"727":{}},"sidebarParentCategories":{}}],["hyperledger/anoncr",{"_index":705,"title":{},"content":{"536":{},"537":{},"649":{}},"sidebarParentCategories":{}}],["hyperledger/ari",{"_index":718,"title":{},"content":{"532":{},"533":{},"537":{},"542":{},"579":{},"628":{},"649":{},"684":{}},"sidebarParentCategories":{}}],["hyperledger/indi",{"_index":921,"title":{},"content":{"578":{},"579":{},"580":{},"649":{}},"sidebarParentCategories":{}}],["hyperlegder/anoncr",{"_index":708,"title":{},"content":{"536":{}},"sidebarParentCategories":{}}],["hyperlegder/ari",{"_index":755,"title":{},"content":{"532":{}},"sidebarParentCategories":{}}],["hyperlegder/indi",{"_index":922,"title":{},"content":{"578":{}},"sidebarParentCategories":{}}],["i'd",{"_index":440,"title":{},"content":{"508":{}},"sidebarParentCategories":{}}],["i.",{"_index":1869,"title":{},"content":{"705":{}},"sidebarParentCategories":{}}],["id",{"_index":359,"title":{},"content":{"500":{},"511":{},"521":{},"584":{},"598":{},"599":{},"608":{},"625":{},"627":{},"628":{},"639":{},"640":{},"644":{},"645":{},"650":{},"688":{},"689":{},"692":{},"696":{},"707":{},"711":{},"715":{},"718":{},"721":{},"722":{},"724":{},"725":{},"727":{}},"sidebarParentCategories":{}}],["ident",{"_index":11,"title":{},"content":{"442":{},"478":{},"480":{},"483":{},"509":{},"522":{},"524":{},"540":{},"543":{}},"sidebarParentCategories":{}}],["identifi",{"_index":209,"title":{},"content":{"483":{},"580":{},"585":{},"597":{},"601":{},"671":{},"680":{},"681":{},"718":{},"722":{},"724":{}},"sidebarParentCategories":{}}],["illustr",{"_index":1428,"title":{},"content":{"646":{}},"sidebarParentCategories":{}}],["imag",{"_index":1055,"title":{},"content":{"594":{}},"sidebarParentCategories":{}}],["imoprt",{"_index":936,"title":{},"content":{"580":{}},"sidebarParentCategories":{}}],["implement",{"_index":111,"title":{"522":{}},"content":{"455":{},"456":{},"477":{},"488":{},"491":{},"501":{},"509":{},"518":{},"520":{},"522":{},"523":{},"524":{},"531":{},"532":{},"535":{},"536":{},"541":{},"542":{},"543":{},"544":{},"579":{},"580":{},"587":{},"590":{},"604":{},"605":{},"672":{},"703":{},"707":{},"712":{},"719":{},"721":{},"728":{}},"sidebarParentCategories":{}}],["import",{"_index":344,"title":{"650":{}},"content":{"500":{},"501":{},"508":{},"520":{},"521":{},"525":{},"533":{},"537":{},"541":{},"542":{},"550":{},"579":{},"580":{},"584":{},"590":{},"591":{},"603":{},"604":{},"605":{},"608":{},"628":{},"638":{},"649":{},"650":{},"651":{},"668":{},"669":{},"670":{},"672":{},"683":{},"684":{},"685":{},"688":{},"689":{},"690":{},"691":{},"702":{},"707":{},"708":{},"712":{},"714":{},"715":{},"717":{},"718":{},"719":{},"722":{},"723":{},"724":{},"725":{},"726":{},"727":{},"729":{}},"sidebarParentCategories":{}}],["imposs",{"_index":1377,"title":{},"content":{"643":{}},"sidebarParentCategories":{}}],["improv",{"_index":1486,"title":{},"content":{"662":{},"671":{}},"sidebarParentCategories":{}}],["inbound",{"_index":481,"title":{},"content":{"511":{},"525":{},"625":{},"628":{},"638":{}},"sidebarParentCategories":{}}],["inboundtransport",{"_index":1298,"title":{},"content":{"638":{}},"sidebarParentCategories":{}}],["includ",{"_index":254,"title":{},"content":{"488":{},"493":{},"520":{},"537":{},"569":{},"584":{},"627":{},"628":{},"663":{},"671":{},"707":{},"717":{},"723":{}},"sidebarParentCategories":{}}],["incom",{"_index":1187,"title":{"627":{},"639":{}},"content":{"639":{}},"sidebarParentCategories":{}}],["incorrect",{"_index":2102,"title":{},"content":{"725":{}},"sidebarParentCategories":{}}],["independ",{"_index":861,"title":{},"content":{"554":{},"719":{}},"sidebarParentCategories":{}}],["index.(js|ts|jsx|tsx",{"_index":595,"title":{},"content":{"520":{}},"sidebarParentCategories":{}}],["index.tsx",{"_index":597,"title":{},"content":{"520":{}},"sidebarParentCategories":{}}],["indi",{"_index":650,"title":{"524":{},"543":{},"544":{},"550":{},"554":{},"559":{},"565":{},"576":{},"577":{},"578":{},"579":{},"581":{},"605":{},"606":{},"614":{},"621":{},"634":{},"657":{},"672":{},"715":{},"727":{}},"content":{"522":{},"524":{},"531":{},"535":{},"537":{},"538":{},"542":{},"543":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"551":{},"552":{},"553":{},"554":{},"555":{},"556":{},"557":{},"558":{},"559":{},"560":{},"561":{},"562":{},"563":{},"564":{},"565":{},"566":{},"567":{},"568":{},"569":{},"573":{},"577":{},"578":{},"579":{},"580":{},"581":{},"605":{},"606":{},"608":{},"613":{},"614":{},"615":{},"616":{},"620":{},"621":{},"622":{},"625":{},"628":{},"633":{},"634":{},"635":{},"636":{},"640":{},"648":{},"649":{},"650":{},"655":{},"657":{},"665":{},"672":{},"675":{},"678":{},"680":{},"682":{},"685":{},"686":{},"688":{},"693":{},"695":{},"698":{},"705":{},"706":{},"712":{},"714":{},"715":{},"716":{},"717":{},"718":{},"722":{},"723":{},"724":{},"725":{},"727":{},"728":{}},"sidebarParentCategories":{"551":{},"552":{},"553":{},"554":{},"555":{},"556":{},"557":{},"558":{},"559":{},"560":{},"561":{},"562":{},"563":{},"564":{},"565":{},"566":{},"567":{},"568":{},"609":{},"610":{},"611":{},"612":{},"613":{},"614":{},"615":{},"616":{},"617":{},"618":{},"619":{},"620":{},"621":{},"622":{},"623":{},"630":{},"631":{},"632":{},"633":{},"634":{},"635":{},"636":{}}}],["indic",{"_index":1482,"title":{},"content":{"661":{},"688":{},"689":{},"705":{}},"sidebarParentCategories":{}}],["indy::credenti",{"_index":1572,"title":{},"content":{"681":{}},"sidebarParentCategories":{}}],["indy::key",{"_index":1559,"title":{},"content":{"677":{}},"sidebarParentCategories":{}}],["indy::mastersecret",{"_index":1566,"title":{},"content":{"680":{}},"sidebarParentCategories":{}}],["indy:(agentcontext",{"_index":1952,"title":{},"content":{"707":{}},"sidebarParentCategories":{}}],["this.loglevel",{"_index":1065,"title":{},"content":{"604":{}},"sidebarParentCategories":{}}],["this.messagesend",{"_index":1975,"title":{},"content":{"707":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessag",{"_index":1964,"title":{},"content":{"707":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessagecontext",{"_index":1968,"title":{},"content":{"707":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(agentcontext",{"_index":1951,"title":{},"content":{"707":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(record",{"_index":1941,"title":{},"content":{"707":{}},"sidebarParentCategories":{}}],["this.myrepository.save(messagecontext.agentcontext",{"_index":1954,"title":{},"content":{"707":{}},"sidebarParentCategories":{}}],["this.myrepository.save(record",{"_index":1949,"title":{},"content":{"707":{}},"sidebarParentCategories":{}}],["this.myservic",{"_index":1976,"title":{},"content":{"707":{}},"sidebarParentCategories":{}}],["this.registerhandlers(messagehandlerregistri",{"_index":1978,"title":{},"content":{"707":{}},"sidebarParentCategories":{}}],["those",{"_index":1050,"title":{},"content":{"593":{},"697":{},"723":{}},"sidebarParentCategories":{}}],["though",{"_index":1703,"title":{},"content":{"689":{}},"sidebarParentCategories":{}}],["threadid",{"_index":1939,"title":{},"content":{"707":{}},"sidebarParentCategories":{}}],["three",{"_index":125,"title":{},"content":{"478":{},"494":{},"508":{},"667":{},"728":{}},"sidebarParentCategories":{}}],["threshold",{"_index":1876,"title":{},"content":{"705":{}},"sidebarParentCategories":{}}],["through",{"_index":434,"title":{},"content":{"501":{},"508":{},"540":{},"605":{},"643":{},"646":{},"688":{},"705":{}},"sidebarParentCategories":{}}],["throughout",{"_index":1662,"title":{},"content":{"688":{},"705":{},"716":{}},"sidebarParentCategories":{}}],["throw",{"_index":1258,"title":{},"content":{"615":{},"622":{},"635":{},"651":{},"652":{},"671":{},"694":{},"722":{}},"sidebarParentCategories":{}}],["thrown",{"_index":1571,"title":{},"content":{"680":{},"707":{}},"sidebarParentCategories":{}}],["thu",{"_index":628,"title":{},"content":{"520":{},"643":{},"645":{},"717":{},"718":{},"728":{}},"sidebarParentCategories":{}}],["ti",{"_index":413,"title":{},"content":{"508":{},"706":{}},"sidebarParentCategories":{}}],["time",{"_index":679,"title":{},"content":{"527":{},"643":{},"683":{},"706":{},"718":{},"719":{},"728":{}},"sidebarParentCategories":{}}],["timestamp",{"_index":1540,"title":{},"content":{"671":{}},"sidebarParentCategories":{}}],["tip",{"_index":752,"title":{},"content":{"531":{},"643":{}},"sidebarParentCategories":{}}],["tlsv1.2",{"_index":866,"title":{},"content":{"554":{}},"sidebarParentCategories":{}}],["tmp",{"_index":1553,"title":{},"content":{"674":{}},"sidebarParentCategories":{}}],["todo",{"_index":1191,"title":{},"content":{"627":{},"729":{}},"sidebarParentCategories":{}}],["togeth",{"_index":100,"title":{},"content":{"442":{}},"sidebarParentCategories":{}}],["token",{"_index":332,"title":{},"content":{"488":{},"492":{},"499":{},"500":{},"540":{},"542":{}},"sidebarParentCategories":{}}],["tool",{"_index":47,"title":{},"content":{"442":{},"485":{},"691":{},"708":{},"729":{}},"sidebarParentCategories":{}}],["toolkit",{"_index":154,"title":{},"content":{"478":{},"488":{}},"sidebarParentCategories":{}}],["top",{"_index":79,"title":{},"content":{"442":{},"488":{}},"sidebarParentCategories":{}}],["topic",{"_index":1580,"title":{},"content":{"683":{}},"sidebarParentCategories":{}}],["toward",{"_index":736,"title":{},"content":{"534":{},"539":{},"581":{}},"sidebarParentCategories":{}}],["trace(messag",{"_index":1070,"title":{},"content":{"604":{}},"sidebarParentCategories":{}}],["traffic",{"_index":660,"title":{},"content":{"525":{}},"sidebarParentCategories":{}}],["transact",{"_index":914,"title":{},"content":{"577":{},"580":{},"638":{},"649":{},"650":{},"718":{}},"sidebarParentCategories":{}}],["transactionauthoragr",{"_index":946,"title":{},"content":{"580":{}},"sidebarParentCategories":{}}],["transactionauthoragreement.acceptancemechan",{"_index":958,"title":{},"content":{"580":{}},"sidebarParentCategories":{}}],["transactionauthoragreement.vers",{"_index":954,"title":{},"content":{"580":{}},"sidebarParentCategories":{}}],["transfer",{"_index":1576,"title":{},"content":{"682":{}},"sidebarParentCategories":{}}],["transform",{"_index":1557,"title":{},"content":{"676":{},"678":{},"689":{},"697":{}},"sidebarParentCategories":{}}],["transmit",{"_index":52,"title":{},"content":{"442":{},"626":{}},"sidebarParentCategories":{}}],["transport",{"_index":241,"title":{"525":{}},"content":{"485":{},"511":{},"525":{},"625":{},"628":{},"638":{},"643":{},"721":{}},"sidebarParentCategories":{}}],["transportholder.registerinboundtransport(new",{"_index":1318,"title":{},"content":{"638":{}},"sidebarParentCategories":{}}],["transportholder.registeroutboundtransport(new",{"_index":1317,"title":{},"content":{"638":{}},"sidebarParentCategories":{}}],["transportissuer.registerinboundtransport(new",{"_index":1315,"title":{},"content":{"638":{}},"sidebarParentCategories":{}}],["transportissuer.registeroutboundtransport(new",{"_index":1314,"title":{},"content":{"638":{}},"sidebarParentCategories":{}}],["transportsess",{"_index":2054,"title":{"721":{}},"content":{"721":{}},"sidebarParentCategories":{}}],["tri",{"_index":1491,"title":{"676":{}},"content":{"663":{},"687":{},"699":{},"713":{}},"sidebarParentCategories":{}}],["trick",{"_index":630,"title":{},"content":{"520":{}},"sidebarParentCategories":{}}],["true",{"_index":934,"title":{},"content":{"579":{},"580":{},"592":{},"593":{},"595":{},"625":{},"626":{},"628":{},"638":{},"644":{},"649":{},"650":{},"670":{},"696":{},"703":{},"706":{},"715":{},"717":{},"718":{},"719":{},"722":{},"724":{},"725":{}},"sidebarParentCategories":{}}],["ts",{"_index":606,"title":{},"content":{"520":{}},"sidebarParentCategories":{}}],["tsx",{"_index":607,"title":{},"content":{"520":{}},"sidebarParentCategories":{}}],["tsyring",{"_index":2052,"title":{},"content":{"720":{}},"sidebarParentCategories":{}}],["tunnel",{"_index":1301,"title":{},"content":{"638":{}},"sidebarParentCategories":{}}],["turn",{"_index":1581,"title":{},"content":{"684":{}},"sidebarParentCategories":{}}],["tutori",{"_index":87,"title":{"528":{},"569":{}},"content":{"442":{},"521":{},"527":{},"529":{},"542":{},"569":{},"571":{},"572":{},"573":{},"574":{},"596":{},"624":{},"625":{},"628":{},"637":{},"638":{},"642":{},"646":{},"648":{},"650":{},"653":{},"700":{}},"sidebarParentCategories":{"582":{},"583":{},"584":{},"585":{},"586":{},"587":{},"588":{},"589":{},"590":{},"591":{},"592":{},"593":{},"594":{},"595":{},"596":{},"597":{},"598":{},"599":{},"600":{},"601":{},"602":{},"603":{},"604":{},"605":{},"606":{},"607":{},"608":{},"609":{},"610":{},"611":{},"612":{},"613":{},"614":{},"615":{},"616":{},"617":{},"618":{},"619":{},"620":{},"621":{},"622":{},"623":{},"624":{},"625":{},"626":{},"627":{},"628":{},"629":{},"630":{},"631":{},"632":{},"633":{},"634":{},"635":{},"636":{},"637":{},"638":{},"639":{},"640":{},"641":{},"642":{},"643":{},"644":{},"645":{},"646":{},"647":{},"648":{},"649":{},"650":{},"651":{},"652":{},"653":{},"654":{}}}],["two",{"_index":167,"title":{},"content":{"479":{},"598":{},"644":{},"646":{},"662":{},"697":{},"702":{},"706":{}},"sidebarParentCategories":{}}],["type",{"_index":210,"title":{"601":{},"662":{},"690":{},"726":{}},"content":{"483":{},"521":{},"544":{},"580":{},"583":{},"584":{},"585":{},"586":{},"587":{},"588":{},"589":{},"590":{},"591":{},"592":{},"593":{},"594":{},"595":{},"598":{},"599":{},"601":{},"603":{},"608":{},"643":{},"650":{},"661":{},"687":{},"688":{},"690":{},"696":{},"705":{},"707":{},"710":{},"712":{},"716":{},"719":{},"726":{}},"sidebarParentCategories":{}}],["typedarrayencod",{"_index":2037,"title":{},"content":{"718":{},"722":{}},"sidebarParentCategories":{}}],["typedarrayencoder.fromstring('01eafa4de4e22ed4fc2ee522b6ce2731",{"_index":2040,"title":{},"content":{"718":{}},"sidebarParentCategories":{}}],["typedarrayencoder.fromstring(`(connectioneventtypes.connectionstatechang",{"_index":1197,"title":{},"content":{"633":{},"634":{},"658":{}},"sidebarParentCategories":{}}],["agent.events.on(credentialeventtypes.credentialstatechang",{"_index":1321,"title":{},"content":{"638":{}},"sidebarParentCategories":{}}],["holderconfig",{"_index":1316,"title":{},"content":{"637":{}},"sidebarParentCategories":{}}],["home",{"_index":1597,"title":{},"content":{"629":{}},"sidebarParentCategories":{}}],["home/indy/docu",{"_index":1599,"title":{},"content":{"629":{}},"sidebarParentCategories":{}}],["homebrew",{"_index":518,"title":{},"content":{"466":{},"567":{}},"sidebarParentCategories":{}}],["hood",{"_index":1536,"title":{},"content":{"614":{}},"sidebarParentCategories":{}}],["hook",{"_index":303,"title":{"451":{},"475":{}},"content":{"449":{},"451":{},"475":{},"476":{},"477":{}},"sidebarParentCategories":{}}],["hooks@^0.5",{"_index":372,"title":{},"content":{"476":{}},"sidebarParentCategories":{}}],["hooray",{"_index":444,"title":{},"content":{"477":{}},"sidebarParentCategories":{}}],["hope",{"_index":2047,"title":{},"content":{"674":{}},"sidebarParentCategories":{}}],["host",{"_index":295,"title":{},"content":{"449":{},"514":{},"519":{},"529":{},"543":{}},"sidebarParentCategories":{}}],["http",{"_index":247,"title":{},"content":{"408":{},"449":{},"450":{},"458":{},"460":{},"488":{},"502":{},"587":{},"631":{},"634":{},"637":{}},"sidebarParentCategories":{}}],["http://localhost:${port}`,})console.log(mediatiorinvitationurl",{"_index":1410,"title":{},"content":{"588":{}},"sidebarParentCategories":{}}],["http://localhost:${port}`],}const",{"_index":1401,"title":{},"content":{"588":{}},"sidebarParentCategories":{}}],["http://localhost:3000/doc",{"_index":486,"title":{},"content":{"460":{}},"sidebarParentCategories":{}}],["http://localhost:3001",{"_index":1162,"title":{},"content":{"631":{},"634":{}},"sidebarParentCategories":{}}],["http://localhost:5000",{"_index":476,"title":{},"content":{"460":{}},"sidebarParentCategories":{}}],["httpinboundtransport",{"_index":664,"title":{},"content":{"502":{},"588":{},"631":{},"634":{},"637":{}},"sidebarParentCategories":{}}],["httpoutboundtransport",{"_index":662,"title":{},"content":{"502":{},"631":{},"634":{},"637":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())agent.registeroutboundtransport(new",{"_index":668,"title":{},"content":{"502":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())alice.registeroutboundtransport(new",{"_index":1425,"title":{},"content":{"589":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())mediator.registerinboundtransport(new",{"_index":1403,"title":{},"content":{"588":{}},"sidebarParentCategories":{}}],["https://afj.com",{"_index":1907,"title":{},"content":{"649":{}},"sidebarParentCategories":{}}],["https://crates.io/crates/env_logg",{"_index":1089,"title":{},"content":{"535":{}},"sidebarParentCategories":{}}],["https://deb.nodesource.com/setup_18.x",{"_index":531,"title":{},"content":{"466":{}},"sidebarParentCategories":{}}],["https://didcomm.org",{"_index":1041,"title":{},"content":{"546":{},"674":{}},"sidebarParentCategories":{}}],["https://didcomm.org/connections/1.0/invit",{"_index":1784,"title":{},"content":{"665":{}},"sidebarParentCategories":{}}],["https://didcomm.org/messagepickup/2.0",{"_index":1841,"title":{},"content":{"646":{}},"sidebarParentCategories":{}}],["https://didcomm.org/mi",{"_index":1725,"title":{},"content":{"650":{},"659":{}},"sidebarParentCategories":{}}],["https://example.com",{"_index":1684,"title":{},"content":{"658":{},"665":{}},"sidebarParentCategories":{}}],["https://example.com?c_i=eyxxx",{"_index":1693,"title":{},"content":{"658":{}},"sidebarParentCategories":{}}],["https://example.org",{"_index":1174,"title":{},"content":{"631":{},"634":{}},"sidebarParentCategories":{}}],["https://example.org:3000",{"_index":1012,"title":{},"content":{"543":{}},"sidebarParentCategories":{}}],["https://github.com/hyperledger/ari",{"_index":740,"title":{},"content":{"474":{},"484":{},"557":{}},"sidebarParentCategories":{}}],["https://github.com/hyperledger/indi",{"_index":874,"title":{},"content":{"488":{},"563":{},"570":{},"583":{},"673":{}},"sidebarParentCategories":{}}],["https://github.com/nod",{"_index":742,"title":{},"content":{"474":{},"484":{},"557":{}},"sidebarParentCategories":{}}],["https://google.com",{"_index":1905,"title":{},"content":{"649":{}},"sidebarParentCategories":{}}],["https://mediator.dev.animo.id/invite?oob=eyjadhlwzsi6imh0dhbzoi8vzglky29tbs5vcmcvb3v0lw9mlwjhbmqvms4xl2ludml0yxrpb24ilcjaawqioiiymdc1mdm4ys05zgu3ltrioditywuxyi1jnzbmndg4mjyzytcilcjsywjlbci6ikfuaw1vie1lzglhdg9yiiwiywnjzxb0ijpbimrpzgnvbw0vywlwmsisimrpzgnvbw0vywlwmjtlbny9cmzjmtkixswiagfuzhnoywtlx3byb3rvy29scyi6wyjodhrwczovl2rpzgnvbw0ub3jnl2rpzgv4y2hhbmdllzeumcisimh0dhbzoi8vzglky29tbs5vcmcvy29ubmvjdglvbnmvms4wil0sinnlcnzpy2vzijpbeyjpzci6iinpbmxpbmutmcisinnlcnzpy2vfbmrwb2ludci6imh0dhbzoi8vbwvkawf0b3iuzgv2lmfuaw1vlmlkiiwidhlwzsi6imrpzc1jb21tdw5py2f0aw9uiiwicmvjaxbpzw50s2v5cyi6wyjkawq6a2v5ono2twtvsg9rtuphdu5vue5ov1pqcew3rgs1szntq0ndmlbpndjgy3fwr25iampmcsjdlcjyb3v0aw5ns2v5cyi6w119lhsiawqioiijaw5saw5llteilcjzzxj2awnlrw5kcg9pbnqioij3c3m6ly9tzwrpyxrvci5kzxyuyw5pbw8uawqilcj0exblijoizglklwnvbw11bmljyxrpb24ilcjyzwnpcgllbnrlzxlzijpbimrpzdprzxk6ejzna29ib1fnsmf1tlvqtk5xwlbwtddeazvlm21dq0myugk0mkzjcxbhbmjqakxxil0sinjvdxrpbmdlzxlzijpbxx1dfq'const",{"_index":1421,"title":{},"content":{"589":{}},"sidebarParentCategories":{}}],["https://picsum.photos/200",{"_index":1057,"title":{},"content":{"548":{}},"sidebarParentCategories":{}}],["https://rand.in",{"_index":1138,"title":{},"content":{"576":{}},"sidebarParentCategories":{}}],["https://raw.githubusercontent.com/homebrew/install/head/install.sh",{"_index":523,"title":{},"content":{"466":{},"490":{},"508":{}},"sidebarParentCategories":{}}],["https://rpm.nodesource.com/setup_18.x",{"_index":538,"title":{},"content":{"466":{}},"sidebarParentCategories":{}}],["https://sh.rustup.r",{"_index":868,"title":{},"content":{"488":{}},"sidebarParentCategories":{}}],["hub",{"_index":195,"title":{},"content":{"403":{}},"sidebarParentCategories":{}}],["hyperledg",{"_index":42,"title":{},"content":{"383":{},"404":{},"473":{},"507":{},"513":{},"521":{},"525":{},"553":{},"554":{},"591":{},"603":{},"605":{},"673":{},"677":{},"682":{}},"sidebarParentCategories":{}}],["hyperledger/anoncr",{"_index":705,"title":{},"content":{"471":{},"472":{},"604":{}},"sidebarParentCategories":{}}],["hyperledger/ari",{"_index":718,"title":{},"content":{"472":{},"480":{},"482":{},"483":{},"555":{},"604":{},"628":{},"634":{}},"sidebarParentCategories":{}}],["hyperledger/indi",{"_index":921,"title":{},"content":{"554":{},"555":{},"556":{},"604":{}},"sidebarParentCategories":{}}],["hyperlegder/anoncr",{"_index":708,"title":{},"content":{"471":{}},"sidebarParentCategories":{}}],["hyperlegder/ari",{"_index":755,"title":{},"content":{"482":{}},"sidebarParentCategories":{}}],["hyperlegder/indi",{"_index":922,"title":{},"content":{"554":{}},"sidebarParentCategories":{}}],["i'd",{"_index":440,"title":{},"content":{"477":{}},"sidebarParentCategories":{}}],["i.",{"_index":1869,"title":{},"content":{"648":{}},"sidebarParentCategories":{}}],["id",{"_index":359,"title":{},"content":{"455":{},"460":{},"498":{},"538":{},"552":{},"575":{},"576":{},"588":{},"589":{},"605":{},"631":{},"633":{},"634":{},"638":{},"639":{},"650":{},"654":{},"657":{},"658":{},"661":{},"665":{},"670":{},"673":{},"676":{},"677":{},"679":{},"680":{},"682":{}},"sidebarParentCategories":{}}],["ident",{"_index":11,"title":{},"content":{"383":{},"401":{},"403":{},"406":{},"458":{},"478":{},"499":{},"501":{},"513":{}},"sidebarParentCategories":{}}],["identifi",{"_index":209,"title":{},"content":{"406":{},"539":{},"556":{},"574":{},"578":{},"615":{},"624":{},"625":{},"673":{},"677":{},"679":{}},"sidebarParentCategories":{}}],["illustr",{"_index":1428,"title":{},"content":{"590":{}},"sidebarParentCategories":{}}],["imag",{"_index":1055,"title":{},"content":{"548":{}},"sidebarParentCategories":{}}],["imoprt",{"_index":936,"title":{},"content":{"556":{}},"sidebarParentCategories":{}}],["implement",{"_index":111,"title":{"499":{}},"content":{"396":{},"397":{},"400":{},"449":{},"452":{},"456":{},"458":{},"470":{},"471":{},"479":{},"480":{},"481":{},"482":{},"495":{},"497":{},"499":{},"500":{},"501":{},"513":{},"514":{},"534":{},"535":{},"541":{},"544":{},"555":{},"556":{},"616":{},"646":{},"650":{},"667":{},"674":{},"676":{},"683":{}},"sidebarParentCategories":{}}],["import",{"_index":344,"title":{"605":{}},"content":{"455":{},"456":{},"472":{},"477":{},"479":{},"480":{},"483":{},"497":{},"498":{},"502":{},"520":{},"533":{},"534":{},"535":{},"538":{},"544":{},"545":{},"552":{},"555":{},"556":{},"604":{},"605":{},"606":{},"612":{},"613":{},"614":{},"616":{},"627":{},"628":{},"629":{},"634":{},"637":{},"645":{},"650":{},"651":{},"657":{},"658":{},"659":{},"660":{},"667":{},"669":{},"670":{},"672":{},"673":{},"674":{},"677":{},"678":{},"679":{},"680":{},"681":{},"682":{},"684":{}},"sidebarParentCategories":{}}],["imposs",{"_index":1377,"title":{},"content":{"587":{}},"sidebarParentCategories":{}}],["improv",{"_index":1486,"title":{},"content":{"599":{},"615":{}},"sidebarParentCategories":{}}],["inbound",{"_index":481,"title":{},"content":{"460":{},"502":{},"631":{},"634":{},"637":{}},"sidebarParentCategories":{}}],["inboundtransport",{"_index":1298,"title":{},"content":{"637":{}},"sidebarParentCategories":{}}],["includ",{"_index":254,"title":{},"content":{"425":{},"449":{},"472":{},"497":{},"521":{},"538":{},"600":{},"615":{},"633":{},"634":{},"650":{},"672":{},"678":{}},"sidebarParentCategories":{}}],["incom",{"_index":1187,"title":{"633":{},"638":{}},"content":{"638":{}},"sidebarParentCategories":{}}],["incorrect",{"_index":2102,"title":{},"content":{"680":{}},"sidebarParentCategories":{}}],["independ",{"_index":861,"title":{},"content":{"488":{},"674":{}},"sidebarParentCategories":{}}],["index.(js|ts|jsx|tsx",{"_index":595,"title":{},"content":{"497":{}},"sidebarParentCategories":{}}],["index.tsx",{"_index":597,"title":{},"content":{"497":{}},"sidebarParentCategories":{}}],["indi",{"_index":650,"title":{"488":{},"493":{},"501":{},"509":{},"513":{},"514":{},"520":{},"528":{},"535":{},"550":{},"553":{},"554":{},"555":{},"557":{},"563":{},"570":{},"583":{},"594":{},"616":{},"670":{},"682":{}},"content":{"470":{},"472":{},"473":{},"480":{},"481":{},"485":{},"486":{},"487":{},"488":{},"489":{},"490":{},"491":{},"492":{},"493":{},"494":{},"499":{},"501":{},"508":{},"509":{},"510":{},"511":{},"512":{},"513":{},"514":{},"515":{},"516":{},"517":{},"518":{},"519":{},"520":{},"521":{},"525":{},"529":{},"530":{},"531":{},"535":{},"550":{},"552":{},"553":{},"554":{},"555":{},"556":{},"557":{},"562":{},"563":{},"564":{},"565":{},"569":{},"570":{},"571":{},"572":{},"582":{},"583":{},"584":{},"592":{},"594":{},"602":{},"603":{},"604":{},"605":{},"616":{},"619":{},"622":{},"624":{},"626":{},"629":{},"631":{},"634":{},"639":{},"641":{},"648":{},"649":{},"655":{},"657":{},"662":{},"664":{},"667":{},"669":{},"670":{},"671":{},"672":{},"673":{},"677":{},"678":{},"679":{},"680":{},"682":{},"683":{}},"sidebarParentCategories":{"485":{},"486":{},"487":{},"488":{},"489":{},"490":{},"491":{},"492":{},"493":{},"494":{},"508":{},"509":{},"510":{},"511":{},"512":{},"529":{},"530":{},"531":{},"558":{},"559":{},"560":{},"561":{},"562":{},"563":{},"564":{},"565":{},"566":{},"567":{},"568":{},"569":{},"570":{},"571":{},"572":{},"579":{},"580":{},"581":{},"582":{},"583":{},"584":{},"585":{}}}],["indic",{"_index":1482,"title":{},"content":{"598":{},"648":{},"657":{},"658":{}},"sidebarParentCategories":{}}],["indy::credenti",{"_index":1572,"title":{},"content":{"625":{}},"sidebarParentCategories":{}}],["indy::key",{"_index":1559,"title":{},"content":{"621":{}},"sidebarParentCategories":{}}],["indy::mastersecret",{"_index":1566,"title":{},"content":{"624":{}},"sidebarParentCategories":{}}],["indy:(agentcontext",{"_index":1952,"title":{},"content":{"650":{}},"sidebarParentCategories":{}}],["this.loglevel",{"_index":1065,"title":{},"content":{"534":{}},"sidebarParentCategories":{}}],["this.messagesend",{"_index":1975,"title":{},"content":{"650":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessag",{"_index":1964,"title":{},"content":{"650":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessagecontext",{"_index":1968,"title":{},"content":{"650":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(agentcontext",{"_index":1951,"title":{},"content":{"650":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(record",{"_index":1941,"title":{},"content":{"650":{}},"sidebarParentCategories":{}}],["this.myrepository.save(messagecontext.agentcontext",{"_index":1954,"title":{},"content":{"650":{}},"sidebarParentCategories":{}}],["this.myrepository.save(record",{"_index":1949,"title":{},"content":{"650":{}},"sidebarParentCategories":{}}],["this.myservic",{"_index":1976,"title":{},"content":{"650":{}},"sidebarParentCategories":{}}],["this.registerhandlers(messagehandlerregistri",{"_index":1978,"title":{},"content":{"650":{}},"sidebarParentCategories":{}}],["those",{"_index":1050,"title":{},"content":{"547":{},"666":{},"678":{}},"sidebarParentCategories":{}}],["though",{"_index":1703,"title":{},"content":{"658":{}},"sidebarParentCategories":{}}],["threadid",{"_index":1939,"title":{},"content":{"650":{}},"sidebarParentCategories":{}}],["three",{"_index":125,"title":{},"content":{"401":{},"426":{},"477":{},"611":{},"683":{}},"sidebarParentCategories":{}}],["threshold",{"_index":1876,"title":{},"content":{"648":{}},"sidebarParentCategories":{}}],["through",{"_index":434,"title":{},"content":{"456":{},"477":{},"478":{},"535":{},"587":{},"590":{},"648":{},"657":{}},"sidebarParentCategories":{}}],["throughout",{"_index":1662,"title":{},"content":{"648":{},"657":{},"671":{}},"sidebarParentCategories":{}}],["throw",{"_index":1258,"title":{},"content":{"564":{},"571":{},"584":{},"606":{},"607":{},"615":{},"663":{},"677":{}},"sidebarParentCategories":{}}],["thrown",{"_index":1571,"title":{},"content":{"624":{},"650":{}},"sidebarParentCategories":{}}],["thu",{"_index":628,"title":{},"content":{"497":{},"587":{},"589":{},"672":{},"673":{},"683":{}},"sidebarParentCategories":{}}],["ti",{"_index":413,"title":{},"content":{"477":{},"649":{}},"sidebarParentCategories":{}}],["time",{"_index":679,"title":{},"content":{"504":{},"587":{},"627":{},"649":{},"673":{},"674":{},"683":{}},"sidebarParentCategories":{}}],["timestamp",{"_index":1540,"title":{},"content":{"615":{}},"sidebarParentCategories":{}}],["tip",{"_index":752,"title":{},"content":{"481":{},"587":{}},"sidebarParentCategories":{}}],["tlsv1.2",{"_index":866,"title":{},"content":{"488":{}},"sidebarParentCategories":{}}],["tmp",{"_index":1553,"title":{},"content":{"618":{}},"sidebarParentCategories":{}}],["todo",{"_index":1191,"title":{},"content":{"633":{},"684":{}},"sidebarParentCategories":{}}],["togeth",{"_index":100,"title":{},"content":{"383":{}},"sidebarParentCategories":{}}],["token",{"_index":332,"title":{},"content":{"449":{},"453":{},"454":{},"455":{},"478":{},"480":{}},"sidebarParentCategories":{}}],["tool",{"_index":47,"title":{},"content":{"383":{},"408":{},"651":{},"660":{},"684":{}},"sidebarParentCategories":{}}],["toolkit",{"_index":154,"title":{},"content":{"401":{},"449":{}},"sidebarParentCategories":{}}],["top",{"_index":79,"title":{},"content":{"383":{},"449":{}},"sidebarParentCategories":{}}],["topic",{"_index":1580,"title":{},"content":{"627":{}},"sidebarParentCategories":{}}],["toward",{"_index":736,"title":{},"content":{"474":{},"484":{},"557":{}},"sidebarParentCategories":{}}],["trace(messag",{"_index":1070,"title":{},"content":{"534":{}},"sidebarParentCategories":{}}],["traffic",{"_index":660,"title":{},"content":{"502":{}},"sidebarParentCategories":{}}],["transact",{"_index":914,"title":{},"content":{"553":{},"556":{},"604":{},"605":{},"637":{},"673":{}},"sidebarParentCategories":{}}],["transactionauthoragr",{"_index":946,"title":{},"content":{"556":{}},"sidebarParentCategories":{}}],["transactionauthoragreement.acceptancemechan",{"_index":958,"title":{},"content":{"556":{}},"sidebarParentCategories":{}}],["transactionauthoragreement.vers",{"_index":954,"title":{},"content":{"556":{}},"sidebarParentCategories":{}}],["transfer",{"_index":1576,"title":{},"content":{"626":{}},"sidebarParentCategories":{}}],["transform",{"_index":1557,"title":{},"content":{"620":{},"622":{},"658":{},"666":{}},"sidebarParentCategories":{}}],["transmit",{"_index":52,"title":{},"content":{"383":{},"632":{}},"sidebarParentCategories":{}}],["transport",{"_index":241,"title":{"502":{}},"content":{"408":{},"460":{},"502":{},"587":{},"631":{},"634":{},"637":{},"676":{}},"sidebarParentCategories":{}}],["transportholder.registerinboundtransport(new",{"_index":1318,"title":{},"content":{"637":{}},"sidebarParentCategories":{}}],["transportholder.registeroutboundtransport(new",{"_index":1317,"title":{},"content":{"637":{}},"sidebarParentCategories":{}}],["transportissuer.registerinboundtransport(new",{"_index":1315,"title":{},"content":{"637":{}},"sidebarParentCategories":{}}],["transportissuer.registeroutboundtransport(new",{"_index":1314,"title":{},"content":{"637":{}},"sidebarParentCategories":{}}],["transportsess",{"_index":2054,"title":{"676":{}},"content":{"676":{}},"sidebarParentCategories":{}}],["tri",{"_index":1491,"title":{"620":{}},"content":{"600":{},"642":{},"656":{},"668":{}},"sidebarParentCategories":{}}],["trick",{"_index":630,"title":{},"content":{"497":{}},"sidebarParentCategories":{}}],["true",{"_index":934,"title":{},"content":{"546":{},"547":{},"549":{},"555":{},"556":{},"588":{},"604":{},"605":{},"614":{},"631":{},"632":{},"634":{},"637":{},"646":{},"649":{},"665":{},"670":{},"672":{},"673":{},"674":{},"677":{},"679":{},"680":{}},"sidebarParentCategories":{}}],["ts",{"_index":606,"title":{},"content":{"497":{}},"sidebarParentCategories":{}}],["tsx",{"_index":607,"title":{},"content":{"497":{}},"sidebarParentCategories":{}}],["tsyring",{"_index":2052,"title":{},"content":{"675":{}},"sidebarParentCategories":{}}],["tunnel",{"_index":1301,"title":{},"content":{"637":{}},"sidebarParentCategories":{}}],["turn",{"_index":1581,"title":{},"content":{"628":{}},"sidebarParentCategories":{}}],["tutori",{"_index":87,"title":{"505":{},"521":{}},"content":{"383":{},"480":{},"498":{},"504":{},"506":{},"521":{},"523":{},"524":{},"525":{},"526":{},"573":{},"586":{},"590":{},"603":{},"605":{},"608":{},"630":{},"631":{},"634":{},"636":{},"637":{},"643":{}},"sidebarParentCategories":{"532":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"551":{},"552":{},"558":{},"559":{},"560":{},"561":{},"562":{},"563":{},"564":{},"565":{},"566":{},"567":{},"568":{},"569":{},"570":{},"571":{},"572":{},"573":{},"574":{},"575":{},"576":{},"577":{},"578":{},"579":{},"580":{},"581":{},"582":{},"583":{},"584":{},"585":{},"586":{},"587":{},"588":{},"589":{},"590":{},"591":{},"603":{},"604":{},"605":{},"606":{},"607":{},"608":{},"609":{},"630":{},"631":{},"632":{},"633":{},"634":{},"635":{},"636":{},"637":{},"638":{},"639":{},"640":{}}}],["two",{"_index":167,"title":{},"content":{"402":{},"575":{},"588":{},"590":{},"599":{},"645":{},"649":{},"666":{}},"sidebarParentCategories":{}}],["type",{"_index":210,"title":{"578":{},"599":{},"659":{},"681":{}},"content":{"406":{},"498":{},"514":{},"533":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"552":{},"556":{},"575":{},"576":{},"578":{},"587":{},"598":{},"605":{},"648":{},"650":{},"653":{},"656":{},"657":{},"659":{},"665":{},"667":{},"671":{},"674":{},"681":{}},"sidebarParentCategories":{}}],["typedarrayencod",{"_index":2037,"title":{},"content":{"673":{},"677":{}},"sidebarParentCategories":{}}],["typedarrayencoder.fromstring('01eafa4de4e22ed4fc2ee522b6ce2731",{"_index":2040,"title":{},"content":{"673":{}},"sidebarParentCategories":{}}],["typedarrayencoder.fromstring(`(connectioneventtypes.connectionstatechang",{"_index":1208,"title":{},"content":{"376":{},"377":{},"446":{}},"sidebarParentCategories":{}}],["agent.events.on(credentialeventtypes.credentialstatechang",{"_index":1332,"title":{},"content":{"381":{}},"sidebarParentCategories":{}}],["holderconfig",{"_index":1327,"title":{},"content":{"380":{}},"sidebarParentCategories":{}}],["home",{"_index":1610,"title":{},"content":{"408":{}},"sidebarParentCategories":{}}],["home/indy/docu",{"_index":1612,"title":{},"content":{"408":{}},"sidebarParentCategories":{}}],["homebrew",{"_index":537,"title":{},"content":{"256":{},"357":{}},"sidebarParentCategories":{}}],["hood",{"_index":1549,"title":{},"content":{"413":{}},"sidebarParentCategories":{}}],["hook",{"_index":318,"title":{"238":{},"241":{}},"content":{"236":{},"238":{},"241":{},"242":{},"243":{}},"sidebarParentCategories":{}}],["hooks@^0.5",{"_index":389,"title":{},"content":{"242":{}},"sidebarParentCategories":{}}],["hooray",{"_index":460,"title":{},"content":{"243":{}},"sidebarParentCategories":{}}],["hope",{"_index":2059,"title":{},"content":{"466":{}},"sidebarParentCategories":{}}],["host",{"_index":311,"title":{},"content":{"236":{},"281":{},"286":{},"301":{},"331":{}},"sidebarParentCategories":{}}],["http",{"_index":259,"title":{},"content":{"213":{},"236":{},"237":{},"246":{},"248":{},"267":{},"291":{},"374":{},"377":{},"380":{},"416":{}},"sidebarParentCategories":{}}],["http://localhost:${port}`,})console.log(mediatiorinvitationurl",{"_index":1422,"title":{},"content":{"417":{}},"sidebarParentCategories":{}}],["http://localhost:${port}`],}const",{"_index":1413,"title":{},"content":{"417":{}},"sidebarParentCategories":{}}],["http://localhost:3000/doc",{"_index":505,"title":{},"content":{"248":{}},"sidebarParentCategories":{}}],["http://localhost:3001",{"_index":1173,"title":{},"content":{"374":{},"377":{}},"sidebarParentCategories":{}}],["http://localhost:5000",{"_index":495,"title":{},"content":{"248":{}},"sidebarParentCategories":{}}],["httpinboundtransport",{"_index":681,"title":{},"content":{"267":{},"374":{},"377":{},"380":{},"417":{}},"sidebarParentCategories":{}}],["httpoutboundtransport",{"_index":679,"title":{},"content":{"267":{},"374":{},"377":{},"380":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())agent.registeroutboundtransport(new",{"_index":685,"title":{},"content":{"267":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())alice.registeroutboundtransport(new",{"_index":1437,"title":{},"content":{"418":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())mediator.registerinboundtransport(new",{"_index":1415,"title":{},"content":{"417":{}},"sidebarParentCategories":{}}],["https://crates.io/crates/env_logg",{"_index":1101,"title":{},"content":{"347":{}},"sidebarParentCategories":{}}],["https://credo.com",{"_index":1919,"title":{},"content":{"436":{}},"sidebarParentCategories":{}}],["https://deb.nodesource.com/setup_18.x",{"_index":550,"title":{},"content":{"256":{}},"sidebarParentCategories":{}}],["https://didcomm.org",{"_index":1053,"title":{},"content":{"334":{},"466":{}},"sidebarParentCategories":{}}],["https://didcomm.org/connections/1.0/invit",{"_index":1796,"title":{},"content":{"453":{}},"sidebarParentCategories":{}}],["https://didcomm.org/messagepickup/2.0",{"_index":1853,"title":{},"content":{"433":{}},"sidebarParentCategories":{}}],["https://didcomm.org/mi",{"_index":1737,"title":{},"content":{"437":{},"447":{}},"sidebarParentCategories":{}}],["https://example.com",{"_index":1696,"title":{},"content":{"446":{},"453":{}},"sidebarParentCategories":{}}],["https://example.com?c_i=eyxxx",{"_index":1705,"title":{},"content":{"446":{}},"sidebarParentCategories":{}}],["https://example.org",{"_index":1185,"title":{},"content":{"374":{},"377":{}},"sidebarParentCategories":{}}],["https://example.org:3000",{"_index":1023,"title":{},"content":{"331":{}},"sidebarParentCategories":{}}],["https://github.com/hyperledger/ari",{"_index":755,"title":{},"content":{"276":{},"310":{},"323":{}},"sidebarParentCategories":{}}],["https://github.com/hyperledger/indi",{"_index":887,"title":{},"content":{"291":{},"353":{},"360":{},"370":{},"465":{}},"sidebarParentCategories":{}}],["https://github.com/nod",{"_index":757,"title":{},"content":{"276":{},"310":{},"323":{}},"sidebarParentCategories":{}}],["https://google.com",{"_index":1917,"title":{},"content":{"436":{}},"sidebarParentCategories":{}}],["https://mediator.dev.animo.id/invite?oob=eyjadhlwzsi6imh0dhbzoi8vzglky29tbs5vcmcvb3v0lw9mlwjhbmqvms4xl2ludml0yxrpb24ilcjaawqioiiymdc1mdm4ys05zgu3ltrioditywuxyi1jnzbmndg4mjyzytcilcjsywjlbci6ikfuaw1vie1lzglhdg9yiiwiywnjzxb0ijpbimrpzgnvbw0vywlwmsisimrpzgnvbw0vywlwmjtlbny9cmzjmtkixswiagfuzhnoywtlx3byb3rvy29scyi6wyjodhrwczovl2rpzgnvbw0ub3jnl2rpzgv4y2hhbmdllzeumcisimh0dhbzoi8vzglky29tbs5vcmcvy29ubmvjdglvbnmvms4wil0sinnlcnzpy2vzijpbeyjpzci6iinpbmxpbmutmcisinnlcnzpy2vfbmrwb2ludci6imh0dhbzoi8vbwvkawf0b3iuzgv2lmfuaw1vlmlkiiwidhlwzsi6imrpzc1jb21tdw5py2f0aw9uiiwicmvjaxbpzw50s2v5cyi6wyjkawq6a2v5ono2twtvsg9rtuphdu5vue5ov1pqcew3rgs1szntq0ndmlbpndjgy3fwr25iampmcsjdlcjyb3v0aw5ns2v5cyi6w119lhsiawqioiijaw5saw5llteilcjzzxj2awnlrw5kcg9pbnqioij3c3m6ly9tzwrpyxrvci5kzxyuyw5pbw8uawqilcj0exblijoizglklwnvbw11bmljyxrpb24ilcjyzwnpcgllbnrlzxlzijpbimrpzdprzxk6ejzna29ib1fnsmf1tlvqtk5xwlbwtddeazvlm21dq0myugk0mkzjcxbhbmjqakxxil0sinjvdxrpbmdlzxlzijpbxx1dfq'const",{"_index":1433,"title":{},"content":{"418":{}},"sidebarParentCategories":{}}],["https://picsum.photos/200",{"_index":1069,"title":{},"content":{"336":{}},"sidebarParentCategories":{}}],["https://rand.in",{"_index":1149,"title":{},"content":{"341":{}},"sidebarParentCategories":{}}],["https://raw.githubusercontent.com/homebrew/install/head/install.sh",{"_index":542,"title":{},"content":{"256":{},"277":{},"293":{}},"sidebarParentCategories":{}}],["https://rpm.nodesource.com/setup_18.x",{"_index":557,"title":{},"content":{"256":{}},"sidebarParentCategories":{}}],["https://sh.rustup.r",{"_index":881,"title":{},"content":{"291":{}},"sidebarParentCategories":{}}],["hub",{"_index":210,"title":{},"content":{"208":{}},"sidebarParentCategories":{}}],["hyperledg",{"_index":38,"title":{},"content":{"188":{},"209":{},"272":{},"280":{},"306":{},"307":{},"311":{},"315":{},"322":{},"421":{},"423":{},"465":{},"469":{},"474":{}},"sidebarParentCategories":{}}],["hyperledger/anoncr",{"_index":720,"title":{},"content":{"320":{},"321":{},"422":{}},"sidebarParentCategories":{}}],["hyperledger/ari",{"_index":733,"title":{},"content":{"274":{},"275":{},"300":{},"308":{},"321":{},"377":{},"407":{},"422":{}},"sidebarParentCategories":{}}],["hyperledger/indi",{"_index":932,"title":{},"content":{"307":{},"308":{},"309":{},"422":{}},"sidebarParentCategories":{}}],["hyperlegder/anoncr",{"_index":723,"title":{},"content":{"320":{}},"sidebarParentCategories":{}}],["hyperlegder/ari",{"_index":770,"title":{},"content":{"274":{}},"sidebarParentCategories":{}}],["hyperlegder/indi",{"_index":933,"title":{},"content":{"307":{}},"sidebarParentCategories":{}}],["i'd",{"_index":456,"title":{},"content":{"243":{}},"sidebarParentCategories":{}}],["i.",{"_index":1881,"title":{},"content":{"435":{}},"sidebarParentCategories":{}}],["id",{"_index":375,"title":{},"content":{"245":{},"248":{},"263":{},"326":{},"340":{},"341":{},"365":{},"374":{},"376":{},"377":{},"381":{},"382":{},"417":{},"418":{},"423":{},"437":{},"441":{},"445":{},"446":{},"449":{},"453":{},"462":{},"465":{},"468":{},"469":{},"471":{},"472":{},"474":{}},"sidebarParentCategories":{}}],["ident",{"_index":10,"title":{},"content":{"188":{},"206":{},"208":{},"211":{},"246":{},"264":{},"266":{},"280":{},"298":{}},"sidebarParentCategories":{}}],["identifi",{"_index":222,"title":{},"content":{"211":{},"309":{},"327":{},"339":{},"343":{},"403":{},"404":{},"414":{},"465":{},"469":{},"471":{}},"sidebarParentCategories":{}}],["illustr",{"_index":1440,"title":{},"content":{"419":{}},"sidebarParentCategories":{}}],["imag",{"_index":1067,"title":{},"content":{"336":{}},"sidebarParentCategories":{}}],["imoprt",{"_index":947,"title":{},"content":{"309":{}},"sidebarParentCategories":{}}],["implement",{"_index":126,"title":{"264":{}},"content":{"201":{},"202":{},"205":{},"236":{},"239":{},"246":{},"253":{},"260":{},"262":{},"264":{},"265":{},"266":{},"273":{},"274":{},"280":{},"281":{},"299":{},"300":{},"308":{},"309":{},"319":{},"320":{},"329":{},"332":{},"346":{},"347":{},"395":{},"433":{},"437":{},"459":{},"466":{},"468":{},"475":{}},"sidebarParentCategories":{}}],["import",{"_index":360,"title":{"423":{}},"content":{"243":{},"245":{},"253":{},"262":{},"263":{},"267":{},"275":{},"287":{},"299":{},"300":{},"308":{},"309":{},"321":{},"326":{},"332":{},"333":{},"345":{},"346":{},"347":{},"365":{},"377":{},"380":{},"395":{},"406":{},"407":{},"408":{},"411":{},"412":{},"413":{},"422":{},"423":{},"424":{},"432":{},"437":{},"438":{},"445":{},"446":{},"447":{},"448":{},"459":{},"461":{},"462":{},"464":{},"465":{},"466":{},"469":{},"470":{},"471":{},"472":{},"473":{},"474":{},"476":{}},"sidebarParentCategories":{}}],["imposs",{"_index":1389,"title":{},"content":{"416":{}},"sidebarParentCategories":{}}],["improv",{"_index":1499,"title":{},"content":{"391":{},"414":{}},"sidebarParentCategories":{}}],["inbound",{"_index":500,"title":{},"content":{"248":{},"267":{},"374":{},"377":{},"380":{}},"sidebarParentCategories":{}}],["inboundtransport",{"_index":1309,"title":{},"content":{"380":{}},"sidebarParentCategories":{}}],["includ",{"_index":266,"title":{},"content":{"230":{},"236":{},"262":{},"311":{},"321":{},"326":{},"376":{},"377":{},"392":{},"414":{},"437":{},"464":{},"470":{}},"sidebarParentCategories":{}}],["incom",{"_index":1198,"title":{"376":{},"381":{}},"content":{"381":{}},"sidebarParentCategories":{}}],["incorrect",{"_index":2114,"title":{},"content":{"472":{}},"sidebarParentCategories":{}}],["independ",{"_index":875,"title":{},"content":{"291":{},"466":{}},"sidebarParentCategories":{}}],["index.(js|ts|jsx|tsx",{"_index":613,"title":{},"content":{"262":{}},"sidebarParentCategories":{}}],["index.tsx",{"_index":615,"title":{},"content":{"262":{}},"sidebarParentCategories":{}}],["indi",{"_index":667,"title":{"266":{},"278":{},"280":{},"281":{},"287":{},"291":{},"296":{},"306":{},"307":{},"308":{},"310":{},"318":{},"347":{},"353":{},"360":{},"363":{},"370":{},"386":{},"395":{},"462":{},"474":{}},"content":{"264":{},"266":{},"273":{},"277":{},"278":{},"279":{},"280":{},"281":{},"282":{},"283":{},"284":{},"285":{},"286":{},"287":{},"288":{},"289":{},"290":{},"291":{},"292":{},"293":{},"294":{},"295":{},"296":{},"297":{},"300":{},"301":{},"302":{},"303":{},"304":{},"305":{},"306":{},"307":{},"308":{},"309":{},"310":{},"311":{},"315":{},"319":{},"321":{},"322":{},"347":{},"352":{},"353":{},"354":{},"355":{},"359":{},"360":{},"361":{},"362":{},"363":{},"365":{},"369":{},"370":{},"371":{},"374":{},"377":{},"382":{},"384":{},"386":{},"394":{},"395":{},"398":{},"401":{},"403":{},"405":{},"408":{},"421":{},"422":{},"423":{},"428":{},"435":{},"436":{},"443":{},"445":{},"450":{},"452":{},"459":{},"461":{},"462":{},"463":{},"464":{},"465":{},"469":{},"470":{},"471":{},"472":{},"474":{},"475":{}},"sidebarParentCategories":{"277":{},"278":{},"279":{},"288":{},"289":{},"290":{},"291":{},"292":{},"293":{},"294":{},"295":{},"296":{},"297":{},"301":{},"302":{},"303":{},"304":{},"305":{},"348":{},"349":{},"350":{},"351":{},"352":{},"353":{},"354":{},"355":{},"356":{},"357":{},"358":{},"359":{},"360":{},"361":{},"362":{},"366":{},"367":{},"368":{},"369":{},"370":{},"371":{},"372":{}}}],["indic",{"_index":1495,"title":{},"content":{"390":{},"435":{},"445":{},"446":{}},"sidebarParentCategories":{}}],["indicio",{"_index":1451,"title":{},"content":{"420":{}},"sidebarParentCategories":{}}],["indy::credenti",{"_index":1585,"title":{},"content":{"404":{}},"sidebarParentCategories":{}}],["indy::key",{"_index":1572,"title":{},"content":{"400":{}},"sidebarParentCategories":{}}],["indy::mastersecret",{"_index":1579,"title":{},"content":{"403":{}},"sidebarParentCategories":{}}],["indy:(agentcontext",{"_index":1964,"title":{},"content":{"437":{}},"sidebarParentCategories":{}}],["this.loglevel",{"_index":1077,"title":{},"content":{"346":{}},"sidebarParentCategories":{}}],["this.messagesend",{"_index":1987,"title":{},"content":{"437":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessag",{"_index":1976,"title":{},"content":{"437":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessagecontext",{"_index":1980,"title":{},"content":{"437":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(agentcontext",{"_index":1963,"title":{},"content":{"437":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(record",{"_index":1953,"title":{},"content":{"437":{}},"sidebarParentCategories":{}}],["this.myrepository.save(messagecontext.agentcontext",{"_index":1966,"title":{},"content":{"437":{}},"sidebarParentCategories":{}}],["this.myrepository.save(record",{"_index":1961,"title":{},"content":{"437":{}},"sidebarParentCategories":{}}],["this.myservic",{"_index":1988,"title":{},"content":{"437":{}},"sidebarParentCategories":{}}],["this.registerhandlers(messagehandlerregistri",{"_index":1990,"title":{},"content":{"437":{}},"sidebarParentCategories":{}}],["those",{"_index":1062,"title":{},"content":{"335":{},"454":{},"470":{}},"sidebarParentCategories":{}}],["though",{"_index":1715,"title":{},"content":{"446":{}},"sidebarParentCategories":{}}],["threadid",{"_index":1951,"title":{},"content":{"437":{}},"sidebarParentCategories":{}}],["three",{"_index":140,"title":{},"content":{"206":{},"243":{},"410":{},"475":{}},"sidebarParentCategories":{}}],["threshold",{"_index":1888,"title":{},"content":{"435":{}},"sidebarParentCategories":{}}],["through",{"_index":450,"title":{},"content":{"243":{},"253":{},"298":{},"347":{},"416":{},"419":{},"435":{},"445":{}},"sidebarParentCategories":{}}],["throughout",{"_index":1675,"title":{},"content":{"435":{},"445":{},"463":{}},"sidebarParentCategories":{}}],["throw",{"_index":1269,"title":{},"content":{"354":{},"361":{},"371":{},"414":{},"424":{},"425":{},"451":{},"469":{}},"sidebarParentCategories":{}}],["thrown",{"_index":1584,"title":{},"content":{"403":{},"437":{}},"sidebarParentCategories":{}}],["thu",{"_index":646,"title":{},"content":{"262":{},"416":{},"418":{},"464":{},"465":{},"475":{}},"sidebarParentCategories":{}}],["ti",{"_index":46,"title":{},"content":{"188":{},"243":{},"436":{}},"sidebarParentCategories":{}}],["time",{"_index":696,"title":{},"content":{"269":{},"406":{},"416":{},"436":{},"465":{},"466":{},"475":{}},"sidebarParentCategories":{}}],["timestamp",{"_index":1553,"title":{},"content":{"414":{}},"sidebarParentCategories":{}}],["tip",{"_index":767,"title":{},"content":{"273":{},"416":{}},"sidebarParentCategories":{}}],["tlsv1.2",{"_index":879,"title":{},"content":{"291":{}},"sidebarParentCategories":{}}],["tmp",{"_index":1566,"title":{},"content":{"397":{}},"sidebarParentCategories":{}}],["todo",{"_index":1202,"title":{},"content":{"376":{},"476":{}},"sidebarParentCategories":{}}],["togeth",{"_index":114,"title":{},"content":{"188":{}},"sidebarParentCategories":{}}],["token",{"_index":347,"title":{},"content":{"236":{},"240":{},"244":{},"245":{},"298":{},"300":{}},"sidebarParentCategories":{}}],["tool",{"_index":60,"title":{},"content":{"188":{},"213":{},"438":{},"448":{},"476":{}},"sidebarParentCategories":{}}],["toolkit",{"_index":169,"title":{},"content":{"206":{},"236":{}},"sidebarParentCategories":{}}],["top",{"_index":94,"title":{},"content":{"188":{},"231":{},"236":{}},"sidebarParentCategories":{}}],["topic",{"_index":1593,"title":{},"content":{"406":{}},"sidebarParentCategories":{}}],["toward",{"_index":751,"title":{},"content":{"276":{},"310":{},"323":{}},"sidebarParentCategories":{}}],["trace(messag",{"_index":1082,"title":{},"content":{"346":{}},"sidebarParentCategories":{}}],["traffic",{"_index":677,"title":{},"content":{"267":{}},"sidebarParentCategories":{}}],["transact",{"_index":926,"title":{},"content":{"306":{},"309":{},"380":{},"422":{},"423":{},"465":{}},"sidebarParentCategories":{}}],["transactionauthoragr",{"_index":957,"title":{},"content":{"309":{}},"sidebarParentCategories":{}}],["transactionauthoragreement.acceptancemechan",{"_index":969,"title":{},"content":{"309":{}},"sidebarParentCategories":{}}],["transactionauthoragreement.vers",{"_index":965,"title":{},"content":{"309":{}},"sidebarParentCategories":{}}],["transfer",{"_index":1589,"title":{},"content":{"405":{}},"sidebarParentCategories":{}}],["transform",{"_index":1570,"title":{},"content":{"399":{},"401":{},"446":{},"454":{}},"sidebarParentCategories":{}}],["transmit",{"_index":65,"title":{},"content":{"188":{},"375":{}},"sidebarParentCategories":{}}],["transport",{"_index":253,"title":{"267":{}},"content":{"213":{},"248":{},"267":{},"374":{},"377":{},"380":{},"416":{},"468":{}},"sidebarParentCategories":{}}],["transportholder.registerinboundtransport(new",{"_index":1329,"title":{},"content":{"380":{}},"sidebarParentCategories":{}}],["transportholder.registeroutboundtransport(new",{"_index":1328,"title":{},"content":{"380":{}},"sidebarParentCategories":{}}],["transportissuer.registerinboundtransport(new",{"_index":1326,"title":{},"content":{"380":{}},"sidebarParentCategories":{}}],["transportissuer.registeroutboundtransport(new",{"_index":1325,"title":{},"content":{"380":{}},"sidebarParentCategories":{}}],["transportsess",{"_index":2066,"title":{"468":{}},"content":{"468":{}},"sidebarParentCategories":{}}],["tri",{"_index":1504,"title":{"399":{}},"content":{"392":{},"429":{},"444":{},"460":{}},"sidebarParentCategories":{}}],["trick",{"_index":648,"title":{},"content":{"262":{}},"sidebarParentCategories":{}}],["true",{"_index":945,"title":{},"content":{"308":{},"309":{},"334":{},"335":{},"337":{},"374":{},"375":{},"377":{},"380":{},"413":{},"417":{},"422":{},"423":{},"433":{},"436":{},"453":{},"462":{},"464":{},"465":{},"466":{},"469":{},"471":{},"472":{}},"sidebarParentCategories":{}}],["ts",{"_index":625,"title":{},"content":{"262":{}},"sidebarParentCategories":{}}],["ts/core",{"_index":1030,"title":{},"content":{"332":{},"333":{}},"sidebarParentCategories":{}}],["ts/push",{"_index":327,"title":{},"content":{"236":{}},"sidebarParentCategories":{}}],["ts/react",{"_index":325,"title":{},"content":{"236":{}},"sidebarParentCategories":{}}],["ts/redux",{"_index":322,"title":{},"content":{"236":{}},"sidebarParentCategories":{}}],["ts/rest",{"_index":324,"title":{},"content":{"236":{}},"sidebarParentCategories":{}}],["tsx",{"_index":626,"title":{},"content":{"262":{}},"sidebarParentCategories":{}}],["tsyring",{"_index":2064,"title":{},"content":{"467":{}},"sidebarParentCategories":{}}],["tunnel",{"_index":1312,"title":{},"content":{"380":{}},"sidebarParentCategories":{}}],["turn",{"_index":1594,"title":{},"content":{"407":{}},"sidebarParentCategories":{}}],["tutori",{"_index":103,"title":{"270":{},"311":{}},"content":{"188":{},"263":{},"269":{},"271":{},"300":{},"311":{},"313":{},"314":{},"315":{},"316":{},"338":{},"373":{},"374":{},"377":{},"379":{},"380":{},"415":{},"419":{},"421":{},"423":{},"426":{},"430":{}},"sidebarParentCategories":{"324":{},"325":{},"326":{},"327":{},"328":{},"329":{},"330":{},"331":{},"332":{},"333":{},"334":{},"335":{},"336":{},"337":{},"338":{},"339":{},"340":{},"341":{},"342":{},"343":{},"344":{},"345":{},"346":{},"347":{},"348":{},"349":{},"350":{},"351":{},"352":{},"353":{},"354":{},"355":{},"356":{},"357":{},"358":{},"359":{},"360":{},"361":{},"362":{},"363":{},"364":{},"365":{},"366":{},"367":{},"368":{},"369":{},"370":{},"371":{},"372":{},"373":{},"374":{},"375":{},"376":{},"377":{},"378":{},"379":{},"380":{},"381":{},"382":{},"383":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{},"422":{},"423":{},"424":{},"425":{},"426":{},"427":{}}}],["two",{"_index":182,"title":{},"content":{"207":{},"231":{},"340":{},"391":{},"417":{},"419":{},"432":{},"436":{},"454":{}},"sidebarParentCategories":{}}],["type",{"_index":223,"title":{"343":{},"391":{},"447":{},"473":{}},"content":{"211":{},"263":{},"281":{},"309":{},"325":{},"326":{},"327":{},"328":{},"329":{},"330":{},"331":{},"332":{},"333":{},"334":{},"335":{},"336":{},"337":{},"340":{},"341":{},"343":{},"345":{},"365":{},"390":{},"416":{},"423":{},"435":{},"437":{},"440":{},"444":{},"445":{},"447":{},"453":{},"459":{},"463":{},"466":{},"473":{}},"sidebarParentCategories":{}}],["typedarrayencod",{"_index":2049,"title":{},"content":{"465":{},"469":{}},"sidebarParentCategories":{}}],["typedarrayencoder.fromstring('01eafa4de4e22ed4fc2ee522b6ce2731",{"_index":2052,"title":{},"content":{"465":{}},"sidebarParentCategories":{}}],["typedarrayencoder.fromstring(`(connectioneventtypes.connectionstatechang",{"_index":1160,"title":{},"content":{"332":{},"333":{},"387":{}},"sidebarParentCategories":{}}],["agent.events.on(credentialeventtypes.credentialstatechang",{"_index":1224,"title":{},"content":{"360":{}},"sidebarParentCategories":{}}],["holderconfig",{"_index":1218,"title":{},"content":{"359":{}},"sidebarParentCategories":{}}],["home",{"_index":1506,"title":{},"content":{"376":{}},"sidebarParentCategories":{}}],["home/indy/docu",{"_index":1509,"title":{},"content":{"376":{}},"sidebarParentCategories":{}}],["homebrew",{"_index":688,"title":{},"content":{"257":{}},"sidebarParentCategories":{}}],["hood",{"_index":1438,"title":{},"content":{"381":{}},"sidebarParentCategories":{}}],["hook",{"_index":318,"title":{"224":{},"229":{}},"content":{"222":{},"224":{},"229":{},"230":{},"231":{}},"sidebarParentCategories":{}}],["hooks@^0.5",{"_index":387,"title":{},"content":{"230":{}},"sidebarParentCategories":{}}],["hooray",{"_index":458,"title":{},"content":{"231":{}},"sidebarParentCategories":{}}],["hope",{"_index":1977,"title":{},"content":{"438":{}},"sidebarParentCategories":{}}],["host",{"_index":311,"title":{},"content":{"222":{},"315":{}},"sidebarParentCategories":{}}],["http",{"_index":259,"title":{},"content":{"202":{},"222":{},"223":{},"234":{},"236":{},"274":{},"330":{},"333":{},"336":{},"359":{}},"sidebarParentCategories":{}}],["http://localhost:${port}`,})console.log(mediatiorinvitationurl",{"_index":1307,"title":{},"content":{"337":{}},"sidebarParentCategories":{}}],["http://localhost:${port}`],}const",{"_index":1298,"title":{},"content":{"337":{}},"sidebarParentCategories":{}}],["http://localhost:3000/doc",{"_index":500,"title":{},"content":{"236":{}},"sidebarParentCategories":{}}],["http://localhost:3001",{"_index":1126,"title":{},"content":{"330":{},"333":{}},"sidebarParentCategories":{}}],["http://localhost:5000",{"_index":490,"title":{},"content":{"236":{}},"sidebarParentCategories":{}}],["httpinboundtransport",{"_index":797,"title":{},"content":{"274":{},"330":{},"333":{},"337":{},"359":{}},"sidebarParentCategories":{}}],["httpoutboundtransport",{"_index":795,"title":{},"content":{"274":{},"330":{},"333":{},"359":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())agent.registeroutboundtransport(new",{"_index":801,"title":{},"content":{"274":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())alice.registeroutboundtransport(new",{"_index":1322,"title":{},"content":{"338":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())mediator.registerinboundtransport(new",{"_index":1300,"title":{},"content":{"337":{}},"sidebarParentCategories":{}}],["https://credo.com",{"_index":1818,"title":{},"content":{"419":{}},"sidebarParentCategories":{}}],["https://deb.nodesource.com/setup_18.x",{"_index":700,"title":{},"content":{"257":{}},"sidebarParentCategories":{}}],["https://didcomm.org",{"_index":1028,"title":{},"content":{"318":{},"438":{}},"sidebarParentCategories":{}}],["https://didcomm.org/connections/1.0/invit",{"_index":1693,"title":{},"content":{"394":{}},"sidebarParentCategories":{}}],["https://didcomm.org/messagepickup/2.0",{"_index":1751,"title":{},"content":{"416":{}},"sidebarParentCategories":{}}],["https://didcomm.org/mi",{"_index":1632,"title":{},"content":{"388":{},"420":{}},"sidebarParentCategories":{}}],["https://example.com",{"_index":1592,"title":{},"content":{"387":{},"394":{}},"sidebarParentCategories":{}}],["https://example.com?c_i=eyxxx",{"_index":1601,"title":{},"content":{"387":{}},"sidebarParentCategories":{}}],["https://example.org",{"_index":1138,"title":{},"content":{"330":{},"333":{}},"sidebarParentCategories":{}}],["https://example.org:3000",{"_index":1000,"title":{},"content":{"315":{}},"sidebarParentCategories":{}}],["https://github.com/hyperledger/indi",{"_index":1966,"title":{},"content":{"437":{}},"sidebarParentCategories":{}}],["https://google.com",{"_index":1816,"title":{},"content":{"419":{}},"sidebarParentCategories":{}}],["https://mediator.dev.animo.id/invite?oob=eyjadhlwzsi6imh0dhbzoi8vzglky29tbs5vcmcvb3v0lw9mlwjhbmqvms4xl2ludml0yxrpb24ilcjaawqioiiymdc1mdm4ys05zgu3ltrioditywuxyi1jnzbmndg4mjyzytcilcjsywjlbci6ikfuaw1vie1lzglhdg9yiiwiywnjzxb0ijpbimrpzgnvbw0vywlwmsisimrpzgnvbw0vywlwmjtlbny9cmzjmtkixswiagfuzhnoywtlx3byb3rvy29scyi6wyjodhrwczovl2rpzgnvbw0ub3jnl2rpzgv4y2hhbmdllzeumcisimh0dhbzoi8vzglky29tbs5vcmcvy29ubmvjdglvbnmvms4wil0sinnlcnzpy2vzijpbeyjpzci6iinpbmxpbmutmcisinnlcnzpy2vfbmrwb2ludci6imh0dhbzoi8vbwvkawf0b3iuzgv2lmfuaw1vlmlkiiwidhlwzsi6imrpzc1jb21tdw5py2f0aw9uiiwicmvjaxbpzw50s2v5cyi6wyjkawq6a2v5ono2twtvsg9rtuphdu5vue5ov1pqcew3rgs1szntq0ndmlbpndjgy3fwr25iampmcsjdlcjyb3v0aw5ns2v5cyi6w119lhsiawqioiijaw5saw5llteilcjzzxj2awnlrw5kcg9pbnqioij3c3m6ly9tzwrpyxrvci5kzxyuyw5pbw8uawqilcj0exblijoizglklwnvbw11bmljyxrpb24ilcjyzwnpcgllbnrlzxlzijpbimrpzdprzxk6ejzna29ib1fnsmf1tlvqtk5xwlbwtddeazvlm21dq0myugk0mkzjcxbhbmjqakxxil0sinjvdxrpbmdlzxlzijpbxx1dfq'const",{"_index":1318,"title":{},"content":{"338":{}},"sidebarParentCategories":{}}],["https://picsum.photos/200",{"_index":1038,"title":{},"content":{"320":{}},"sidebarParentCategories":{}}],["https://rand.in",{"_index":1100,"title":{},"content":{"344":{}},"sidebarParentCategories":{}}],["https://raw.githubusercontent.com/homebrew/install/head/install.sh",{"_index":693,"title":{},"content":{"257":{}},"sidebarParentCategories":{}}],["https://rpm.nodesource.com/setup_18.x",{"_index":707,"title":{},"content":{"257":{}},"sidebarParentCategories":{}}],["hub",{"_index":210,"title":{},"content":{"196":{}},"sidebarParentCategories":{}}],["hyperledg",{"_index":38,"title":{"239":{},"261":{}},"content":{"188":{},"197":{},"238":{},"239":{},"261":{},"279":{},"283":{},"287":{},"307":{},"325":{},"326":{},"437":{},"441":{},"446":{},"685":{},"687":{}},"sidebarParentCategories":{}}],["hyperledger/anoncr",{"_index":823,"title":{},"content":{"282":{},"305":{},"306":{},"327":{},"686":{}},"sidebarParentCategories":{}}],["hyperledger/ari",{"_index":834,"title":{},"content":{"266":{},"267":{},"282":{},"306":{},"327":{},"333":{},"375":{},"686":{}},"sidebarParentCategories":{}}],["hyperledger/indi",{"_index":918,"title":{},"content":{"326":{},"327":{},"328":{},"686":{}},"sidebarParentCategories":{}}],["hyperlegder/anoncr",{"_index":825,"title":{},"content":{"305":{}},"sidebarParentCategories":{}}],["hyperlegder/ari",{"_index":846,"title":{},"content":{"266":{}},"sidebarParentCategories":{}}],["hyperlegder/indi",{"_index":919,"title":{},"content":{"326":{}},"sidebarParentCategories":{}}],["i'd",{"_index":454,"title":{},"content":{"231":{}},"sidebarParentCategories":{}}],["i.",{"_index":1780,"title":{},"content":{"418":{}},"sidebarParentCategories":{}}],["id",{"_index":374,"title":{},"content":{"228":{},"236":{},"246":{},"247":{},"271":{},"310":{},"330":{},"332":{},"333":{},"337":{},"338":{},"343":{},"344":{},"360":{},"361":{},"386":{},"387":{},"390":{},"394":{},"420":{},"424":{},"434":{},"437":{},"440":{},"441":{},"443":{},"444":{},"446":{},"687":{}},"sidebarParentCategories":{}}],["ideal",{"_index":581,"title":{},"content":{"264":{}},"sidebarParentCategories":{}}],["ident",{"_index":10,"title":{},"content":{"188":{},"194":{},"196":{},"200":{},"234":{},"261":{},"280":{}},"sidebarParentCategories":{}}],["identifi",{"_index":222,"title":{"241":{},"247":{}},"content":{"200":{},"238":{},"241":{},"247":{},"264":{},"311":{},"328":{},"342":{},"346":{},"371":{},"372":{},"382":{},"437":{},"441":{},"443":{}},"sidebarParentCategories":{}}],["ignor",{"_index":559,"title":{},"content":{"264":{}},"sidebarParentCategories":{}}],["illustr",{"_index":1325,"title":{},"content":{"339":{}},"sidebarParentCategories":{}}],["imag",{"_index":563,"title":{},"content":{"264":{},"320":{}},"sidebarParentCategories":{}}],["imageurl",{"_index":554,"title":{},"content":{"264":{}},"sidebarParentCategories":{}}],["immedi",{"_index":649,"title":{},"content":{"244":{}},"sidebarParentCategories":{}}],["imoprt",{"_index":932,"title":{},"content":{"328":{}},"sidebarParentCategories":{}}],["impact",{"_index":552,"title":{},"content":{"264":{}},"sidebarParentCategories":{}}],["implement",{"_index":126,"title":{"272":{}},"content":{"189":{},"190":{},"193":{},"222":{},"225":{},"232":{},"234":{},"238":{},"239":{},"245":{},"246":{},"247":{},"252":{},"261":{},"264":{},"265":{},"266":{},"270":{},"272":{},"273":{},"281":{},"282":{},"304":{},"305":{},"316":{},"324":{},"327":{},"328":{},"363":{},"416":{},"420":{},"431":{},"438":{},"440":{},"447":{}},"sidebarParentCategories":{}}],["import",{"_index":359,"title":{"687":{}},"content":{"228":{},"231":{},"232":{},"243":{},"247":{},"248":{},"267":{},"270":{},"271":{},"274":{},"281":{},"282":{},"306":{},"310":{},"316":{},"317":{},"323":{},"324":{},"327":{},"328":{},"333":{},"359":{},"363":{},"374":{},"375":{},"376":{},"379":{},"380":{},"381":{},"386":{},"387":{},"388":{},"389":{},"415":{},"420":{},"421":{},"431":{},"433":{},"434":{},"436":{},"437":{},"438":{},"441":{},"442":{},"443":{},"444":{},"445":{},"446":{},"448":{},"686":{},"687":{},"688":{}},"sidebarParentCategories":{}}],["imposs",{"_index":1277,"title":{},"content":{"336":{}},"sidebarParentCategories":{}}],["improv",{"_index":1387,"title":{},"content":{"354":{},"382":{}},"sidebarParentCategories":{}}],["inbound",{"_index":495,"title":{},"content":{"236":{},"274":{},"330":{},"333":{},"359":{}},"sidebarParentCategories":{}}],["inboundtransport",{"_index":1198,"title":{},"content":{"359":{}},"sidebarParentCategories":{}}],["includ",{"_index":266,"title":{},"content":{"204":{},"222":{},"264":{},"270":{},"283":{},"306":{},"310":{},"332":{},"333":{},"355":{},"382":{},"420":{},"436":{},"442":{}},"sidebarParentCategories":{}}],["incom",{"_index":1151,"title":{"332":{},"360":{}},"content":{"360":{}},"sidebarParentCategories":{}}],["incorrect",{"_index":2029,"title":{},"content":{"444":{}},"sidebarParentCategories":{}}],["independ",{"_index":1976,"title":{},"content":{"438":{}},"sidebarParentCategories":{}}],["index.(js|ts|jsx|tsx",{"_index":742,"title":{},"content":{"270":{}},"sidebarParentCategories":{}}],["index.tsx",{"_index":744,"title":{},"content":{"270":{}},"sidebarParentCategories":{}}],["indi",{"_index":526,"title":{"325":{},"326":{},"327":{},"349":{},"363":{},"434":{},"446":{}},"content":{"262":{},"265":{},"282":{},"283":{},"287":{},"306":{},"307":{},"325":{},"326":{},"327":{},"328":{},"347":{},"349":{},"357":{},"361":{},"363":{},"366":{},"369":{},"371":{},"373":{},"376":{},"384":{},"386":{},"391":{},"393":{},"411":{},"418":{},"419":{},"431":{},"433":{},"434":{},"435":{},"436":{},"437":{},"441":{},"442":{},"443":{},"444":{},"446":{},"447":{},"685":{},"686":{},"687":{}},"sidebarParentCategories":{}}],["indic",{"_index":1382,"title":{},"content":{"353":{},"386":{},"387":{},"418":{}},"sidebarParentCategories":{}}],["indicio",{"_index":1334,"title":{},"content":{"340":{}},"sidebarParentCategories":{}}],["indy::::(agentcontext",{"_index":1863,"title":{},"content":{"420":{}},"sidebarParentCategories":{}}],["this.loglevel",{"_index":1044,"title":{},"content":{"324":{}},"sidebarParentCategories":{}}],["this.messagesend",{"_index":1886,"title":{},"content":{"420":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessag",{"_index":1875,"title":{},"content":{"420":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessagecontext",{"_index":1879,"title":{},"content":{"420":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(agentcontext",{"_index":1862,"title":{},"content":{"420":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(record",{"_index":1852,"title":{},"content":{"420":{}},"sidebarParentCategories":{}}],["this.myrepository.save(messagecontext.agentcontext",{"_index":1865,"title":{},"content":{"420":{}},"sidebarParentCategories":{}}],["this.myrepository.save(record",{"_index":1860,"title":{},"content":{"420":{}},"sidebarParentCategories":{}}],["this.myservic",{"_index":1887,"title":{},"content":{"420":{}},"sidebarParentCategories":{}}],["this.registerhandlers(messagehandlerregistri",{"_index":1889,"title":{},"content":{"420":{}},"sidebarParentCategories":{}}],["those",{"_index":1033,"title":{},"content":{"319":{},"395":{},"442":{}},"sidebarParentCategories":{}}],["though",{"_index":572,"title":{},"content":{"264":{},"387":{}},"sidebarParentCategories":{}}],["thread_id",{"_index":575,"title":{},"content":{"264":{}},"sidebarParentCategories":{}}],["threadid",{"_index":1850,"title":{},"content":{"420":{}},"sidebarParentCategories":{}}],["three",{"_index":140,"title":{},"content":{"194":{},"231":{},"378":{},"447":{}},"sidebarParentCategories":{}}],["threshold",{"_index":1787,"title":{},"content":{"418":{}},"sidebarParentCategories":{}}],["through",{"_index":448,"title":{},"content":{"231":{},"232":{},"248":{},"280":{},"336":{},"339":{},"386":{},"418":{}},"sidebarParentCategories":{}}],["throughout",{"_index":1572,"title":{},"content":{"386":{},"418":{},"435":{}},"sidebarParentCategories":{}}],["throw",{"_index":1357,"title":{},"content":{"382":{},"392":{},"441":{},"688":{},"689":{}},"sidebarParentCategories":{}}],["thrown",{"_index":1479,"title":{},"content":{"371":{},"420":{}},"sidebarParentCategories":{}}],["thu",{"_index":516,"title":{},"content":{"243":{},"261":{},"270":{},"336":{},"338":{},"436":{},"437":{},"447":{}},"sidebarParentCategories":{}}],["ti",{"_index":46,"title":{},"content":{"188":{},"231":{},"419":{}},"sidebarParentCategories":{}}],["time",{"_index":811,"title":{},"content":{"276":{},"336":{},"374":{},"419":{},"437":{},"438":{},"447":{}},"sidebarParentCategories":{}}],["timestamp",{"_index":1443,"title":{},"content":{"382":{}},"sidebarParentCategories":{}}],["tip",{"_index":841,"title":{},"content":{"265":{},"336":{}},"sidebarParentCategories":{}}],["tmp",{"_index":1461,"title":{},"content":{"365":{}},"sidebarParentCategories":{}}],["todo",{"_index":1154,"title":{},"content":{"332":{},"448":{}},"sidebarParentCategories":{}}],["togeth",{"_index":114,"title":{},"content":{"188":{}},"sidebarParentCategories":{}}],["token",{"_index":347,"title":{},"content":{"222":{},"226":{},"227":{},"228":{},"246":{},"247":{},"250":{},"280":{},"282":{}},"sidebarParentCategories":{}}],["tool",{"_index":60,"title":{},"content":{"188":{},"202":{},"389":{},"421":{},"448":{}},"sidebarParentCategories":{}}],["toolkit",{"_index":169,"title":{},"content":{"194":{},"222":{}},"sidebarParentCategories":{}}],["top",{"_index":94,"title":{},"content":{"188":{},"205":{},"222":{}},"sidebarParentCategories":{}}],["topic",{"_index":1489,"title":{},"content":{"374":{}},"sidebarParentCategories":{}}],["trace(messag",{"_index":1049,"title":{},"content":{"324":{}},"sidebarParentCategories":{}}],["traffic",{"_index":793,"title":{},"content":{"274":{}},"sidebarParentCategories":{}}],["transact",{"_index":912,"title":{},"content":{"325":{},"328":{},"359":{},"437":{},"686":{},"687":{}},"sidebarParentCategories":{}}],["transactionauthoragr",{"_index":943,"title":{},"content":{"328":{}},"sidebarParentCategories":{}}],["transactionauthoragreement.acceptancemechan",{"_index":953,"title":{},"content":{"328":{}},"sidebarParentCategories":{}}],["transactionauthoragreement.vers",{"_index":950,"title":{},"content":{"328":{}},"sidebarParentCategories":{}}],["transfer",{"_index":1485,"title":{},"content":{"373":{}},"sidebarParentCategories":{}}],["transform",{"_index":1466,"title":{},"content":{"367":{},"369":{},"387":{},"395":{}},"sidebarParentCategories":{}}],["transmit",{"_index":65,"title":{},"content":{"188":{},"331":{}},"sidebarParentCategories":{}}],["transport",{"_index":253,"title":{"274":{}},"content":{"202":{},"236":{},"274":{},"330":{},"333":{},"336":{},"359":{},"440":{}},"sidebarParentCategories":{}}],["transportholder.registerinboundtransport(new",{"_index":1220,"title":{},"content":{"359":{}},"sidebarParentCategories":{}}],["transportholder.registeroutboundtransport(new",{"_index":1219,"title":{},"content":{"359":{}},"sidebarParentCategories":{}}],["transportissuer.registerinboundtransport(new",{"_index":1217,"title":{},"content":{"359":{}},"sidebarParentCategories":{}}],["transportissuer.registeroutboundtransport(new",{"_index":1216,"title":{},"content":{"359":{}},"sidebarParentCategories":{}}],["transportsess",{"_index":1984,"title":{"440":{}},"content":{"440":{}},"sidebarParentCategories":{}}],["tri",{"_index":504,"title":{"367":{}},"content":{"238":{},"264":{},"355":{},"385":{},"412":{},"432":{}},"sidebarParentCategories":{}}],["trick",{"_index":774,"title":{},"content":{"270":{}},"sidebarParentCategories":{}}],["true",{"_index":930,"title":{},"content":{"318":{},"319":{},"321":{},"327":{},"328":{},"330":{},"331":{},"333":{},"337":{},"359":{},"381":{},"394":{},"416":{},"419":{},"434":{},"436":{},"437":{},"438":{},"441":{},"443":{},"444":{},"686":{},"687":{}},"sidebarParentCategories":{}}],["trust",{"_index":567,"title":{},"content":{"264":{}},"sidebarParentCategories":{}}],["ts",{"_index":753,"title":{},"content":{"270":{}},"sidebarParentCategories":{}}],["ts/anoncr",{"_index":822,"title":{},"content":{"305":{}},"sidebarParentCategories":{}}],["ts/anoncreds'import",{"_index":836,"title":{},"content":{"282":{},"306":{},"327":{},"686":{}},"sidebarParentCategories":{}}],["ts/anoncreds@^0.5.0",{"_index":826,"title":{},"content":{"305":{}},"sidebarParentCategories":{}}],["ts/askar",{"_index":844,"title":{},"content":{"266":{},"375":{}},"sidebarParentCategories":{}}],["ts/askar'import",{"_index":832,"title":{},"content":{"267":{},"282":{},"306":{},"327":{},"333":{},"686":{}},"sidebarParentCategories":{}}],["ts/askar@^0.5.0",{"_index":847,"title":{},"content":{"266":{}},"sidebarParentCategories":{}}],["ts/bb",{"_index":729,"title":{},"content":{"268":{}},"sidebarParentCategories":{}}],["ts/cheqd",{"_index":625,"title":{},"content":{"248":{},"268":{},"281":{}},"sidebarParentCategories":{}}],["ts/cheqd'const",{"_index":1335,"title":{},"content":{"686":{}},"sidebarParentCategories":{}}],["ts/cheqd'import",{"_index":896,"title":{},"content":{"282":{}},"sidebarParentCategories":{}}],["ts/core",{"_index":350,"title":{},"content":{"227":{},"228":{},"229":{},"232":{},"234":{},"274":{},"310":{},"316":{},"317":{},"323":{},"324":{},"379":{},"380":{},"381":{}},"sidebarParentCategories":{}}],["ts/core'import",{"_index":783,"title":{},"content":{"267":{},"271":{},"274":{},"282":{},"306":{},"327":{},"333":{},"686":{}},"sidebarParentCategories":{}}],["ts/core@^0.5.0",{"_index":733,"title":{},"content":{"269":{}},"sidebarParentCategories":{}}],["ts/indi",{"_index":627,"title":{},"content":{"248":{},"306":{},"326":{},"327":{},"328":{},"375":{},"686":{}},"sidebarParentCategories":{}}],["ts/node",{"_index":798,"title":{},"content":{"274":{},"379":{},"380":{},"381":{}},"sidebarParentCategories":{}}],["ts/node'const",{"_index":785,"title":{},"content":{"271":{}},"sidebarParentCategories":{}}],["ts/node'import",{"_index":830,"title":{},"content":{"267":{},"306":{},"327":{},"333":{},"686":{}},"sidebarParentCategories":{}}],["ts/node@^0.5.0",{"_index":734,"title":{},"content":{"269":{}},"sidebarParentCategories":{}}],["ts/openid4vc",{"_index":725,"title":{},"content":{"268":{}},"sidebarParentCategories":{}}],["ts/push",{"_index":327,"title":{},"content":{"222":{},"227":{},"228":{}},"sidebarParentCategories":{}}],["ts/react",{"_index":325,"title":{},"content":{"222":{},"229":{},"230":{},"231":{},"267":{},"269":{},"271":{},"282":{},"306":{},"327":{},"359":{},"375":{},"379":{},"380":{},"381":{}},"sidebarParentCategories":{}}],["ts/redux",{"_index":322,"title":{},"content":{"222":{},"232":{},"233":{}},"sidebarParentCategories":{}}],["ts/rest",{"_index":324,"title":{},"content":{"222":{},"234":{},"236":{},"237":{}},"sidebarParentCategories":{}}],["ts/tenant",{"_index":727,"title":{},"content":{"268":{}},"sidebarParentCategories":{}}],["tsx",{"_index":754,"title":{},"content":{"270":{}},"sidebarParentCategories":{}}],["tsyring",{"_index":1982,"title":{},"content":{"439":{}},"sidebarParentCategories":{}}],["tunnel",{"_index":1202,"title":{},"content":{"359":{}},"sidebarParentCategories":{}}],["turn",{"_index":1490,"title":{},"content":{"375":{}},"sidebarParentCategories":{}}],["tutori",{"_index":103,"title":{"277":{},"283":{}},"content":{"188":{},"271":{},"276":{},"278":{},"282":{},"283":{},"285":{},"286":{},"287":{},"288":{},"329":{},"330":{},"333":{},"335":{},"339":{},"341":{},"358":{},"359":{},"413":{},"685":{},"687":{},"690":{}},"sidebarParentCategories":{"308":{},"309":{},"310":{},"311":{},"312":{},"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"321":{},"322":{},"323":{},"324":{},"329":{},"330":{},"331":{},"332":{},"333":{},"334":{},"335":{},"336":{},"337":{},"338":{},"339":{},"340":{},"341":{},"342":{},"343":{},"344":{},"345":{},"346":{},"358":{},"359":{},"360":{},"361":{},"362":{},"685":{},"686":{},"687":{},"688":{},"689":{},"690":{},"691":{}}}],["two",{"_index":182,"title":{},"content":{"195":{},"205":{},"337":{},"339":{},"343":{},"354":{},"395":{},"415":{},"419":{}},"sidebarParentCategories":{}}],["type",{"_index":223,"title":{"346":{},"354":{},"388":{},"445":{}},"content":{"200":{},"251":{},"271":{},"309":{},"310":{},"311":{},"312":{},"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"321":{},"323":{},"328":{},"336":{},"343":{},"344":{},"346":{},"353":{},"385":{},"386":{},"388":{},"394":{},"418":{},"420":{},"423":{},"431":{},"435":{},"438":{},"445":{},"687":{}},"sidebarParentCategories":{}}],["typedarrayencod",{"_index":1965,"title":{},"content":{"437":{},"441":{}},"sidebarParentCategories":{}}],["typedarrayencoder.fromstring('01eafa4de4e22ed4fc2ee522b6ce2731",{"_index":1969,"title":{},"content":{"437":{}},"sidebarParentCategories":{}}],["typedarrayencoder.fromstring(`https://credo.js.org/markdown-pageweekly0.5https://credo.js.org/guides/0.3weekly0.5https://credo.js.org/guides/0.3/conceptsweekly0.5https://credo.js.org/guides/0.3/concepts/agentsweekly0.5https://credo.js.org/guides/0.3/concepts/did-and-didcommweekly0.5https://credo.js.org/guides/0.3/concepts/platform-and-environmentweekly0.5https://credo.js.org/guides/0.3/ecosystemweekly0.5https://credo.js.org/guides/0.3/extensionsweekly0.5https://credo.js.org/guides/0.3/extensions/push-notificationsweekly0.5https://credo.js.org/guides/0.3/extensions/push-notifications/setupweekly0.5https://credo.js.org/guides/0.3/extensions/react-hooksweekly0.5https://credo.js.org/guides/0.3/extensions/react-hooks/setupweekly0.5https://credo.js.org/guides/0.3/extensions/redux-storeweekly0.5https://credo.js.org/guides/0.3/extensions/redux-store/setupweekly0.5https://credo.js.org/guides/0.3/extensions/restweekly0.5https://credo.js.org/guides/0.3/extensions/rest/setupweekly0.5https://credo.js.org/guides/0.3/getting-startedweekly0.5https://credo.js.org/guides/0.3/getting-started/installationweekly0.5https://credo.js.org/guides/0.3/getting-started/installation/nodejsweekly0.5https://credo.js.org/guides/0.3/getting-started/installation/nodejs/apple-armweekly0.5https://credo.js.org/guides/0.3/getting-started/installation/nodejs/apple-intelweekly0.5https://credo.js.org/guides/0.3/getting-started/installation/nodejs/linuxweekly0.5https://credo.js.org/guides/0.3/getting-started/installation/nodejs/windowsweekly0.5https://credo.js.org/guides/0.3/getting-started/installation/react-nativeweekly0.5https://credo.js.org/guides/0.3/getting-started/installation/react-native/androidweekly0.5https://credo.js.org/guides/0.3/getting-started/installation/react-native/iosweekly0.5https://credo.js.org/guides/0.3/getting-started/prerequisitesweekly0.5https://credo.js.org/guides/0.3/getting-started/set-upweekly0.5https://credo.js.org/guides/0.3/tutorialsweekly0.5https://credo.js.org/guides/0.3/tutorials/agent-configweekly0.5https://credo.js.org/guides/0.3/tutorials/agent-config/loggingweekly0.5https://credo.js.org/guides/0.3/tutorials/create-a-connectionweekly0.5https://credo.js.org/guides/0.3/tutorials/issue-a-credentialweekly0.5https://credo.js.org/guides/0.3/tutorials/postgres-database-nodejsweekly0.5https://credo.js.org/guides/0.3/tutorials/postgres-database-nodejs/linuxweekly0.5https://credo.js.org/guides/0.3/tutorials/postgres-database-nodejs/macosweekly0.5https://credo.js.org/guides/0.3/tutorials/postgres-database-nodejs/windowsweekly0.5https://credo.js.org/guides/0.3/updatingweekly0.5https://credo.js.org/guides/0.3/updating/update-assistantweekly0.5https://credo.js.org/guides/0.3/updating/versions/0.1-to-0.2weekly0.5https://credo.js.org/guides/0.3/updating/versions/0.2-to-0.3weekly0.5https://credo.js.org/guides/0.5weekly0.5https://credo.js.org/guides/0.5/conceptsweekly0.5https://credo.js.org/guides/0.5/concepts/agentsweekly0.5https://credo.js.org/guides/0.5/concepts/did-and-didcommweekly0.5https://credo.js.org/guides/0.5/concepts/platform-and-environmentweekly0.5https://credo.js.org/guides/0.5/ecosystemweekly0.5https://credo.js.org/guides/0.5/extensionsweekly0.5https://credo.js.org/guides/0.5/extensions/push-notificationsweekly0.5https://credo.js.org/guides/0.5/extensions/react-hooksweekly0.5https://credo.js.org/guides/0.5/extensions/redux-storeweekly0.5https://credo.js.org/guides/0.5/extensions/restweekly0.5https://credo.js.org/guides/0.5/getting-startedweekly0.5https://credo.js.org/guides/0.5/getting-started/prerequisitesweekly0.5https://credo.js.org/guides/0.5/getting-started/set-upweekly0.5https://credo.js.org/guides/0.5/getting-started/set-up/anoncreds-rsweekly0.5https://credo.js.org/guides/0.5/getting-started/set-up/aries-askarweekly0.5https://credo.js.org/guides/0.5/getting-started/set-up/cheqdweekly0.5https://credo.js.org/guides/0.5/getting-started/set-up/indy-sdkweekly0.5https://credo.js.org/guides/0.5/getting-started/set-up/indy-sdk/linuxweekly0.5https://credo.js.org/guides/0.5/getting-started/set-up/indy-sdk/macos-armweekly0.5https://credo.js.org/guides/0.5/getting-started/set-up/indy-sdk/macos-intelweekly0.5https://credo.js.org/guides/0.5/getting-started/set-up/indy-sdk/react-nativeweekly0.5https://credo.js.org/guides/0.5/getting-started/set-up/indy-sdk/windowsweekly0.5https://credo.js.org/guides/0.5/getting-started/set-up/indy-vdrweekly0.5https://credo.js.org/guides/0.5/tutorialsweekly0.5https://credo.js.org/guides/0.5/tutorials/agent-configweekly0.5https://credo.js.org/guides/0.5/tutorials/agent-config/loggingweekly0.5https://credo.js.org/guides/0.5/tutorials/cheqdweekly0.5https://credo.js.org/guides/0.5/tutorials/create-a-connectionweekly0.5https://credo.js.org/guides/0.5/tutorials/indy-sdk-postgres-database-nodejsweekly0.5https://credo.js.org/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/linuxweekly0.5https://credo.js.org/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/macosweekly0.5https://credo.js.org/guides/0.5/tutorials/indy-sdk-postgres-database-nodejs/windowsweekly0.5https://credo.js.org/guides/0.5/tutorials/issue-a-credentialweekly0.5https://credo.js.org/guides/0.5/tutorials/mediationweekly0.5https://credo.js.org/guides/0.5/tutorials/registering-schema-and-credential-definitionweekly0.5https://credo.js.org/guides/0.5/updatingweekly0.5https://credo.js.org/guides/0.5/updating/update-assistantweekly0.5https://credo.js.org/guides/0.5/updating/update-indy-sdk-to-askarweekly0.5https://credo.js.org/guides/0.5/updating/versions/0.1-to-0.2weekly0.5https://credo.js.org/guides/0.5/updating/versions/0.2-to-0.3weekly0.5https://credo.js.org/guides/0.5/updating/versions/0.3-to-0.4weekly0.5https://credo.js.org/guidesweekly0.5https://credo.js.org/guides/conceptsweekly0.5https://credo.js.org/guides/concepts/agentsweekly0.5https://credo.js.org/guides/concepts/did-and-didcommweekly0.5https://credo.js.org/guides/concepts/platform-and-environmentweekly0.5https://credo.js.org/guides/ecosystemweekly0.5https://credo.js.org/guides/extensionsweekly0.5https://credo.js.org/guides/extensions/push-notificationsweekly0.5https://credo.js.org/guides/extensions/react-hooksweekly0.5https://credo.js.org/guides/extensions/redux-storeweekly0.5https://credo.js.org/guides/extensions/restweekly0.5https://credo.js.org/guides/getting-startedweekly0.5https://credo.js.org/guides/getting-started/prerequisitesweekly0.5https://credo.js.org/guides/getting-started/set-upweekly0.5https://credo.js.org/guides/getting-started/set-up/anoncreds-rsweekly0.5https://credo.js.org/guides/getting-started/set-up/aries-askarweekly0.5https://credo.js.org/guides/getting-started/set-up/cheqdweekly0.5https://credo.js.org/guides/getting-started/set-up/indy-sdkweekly0.5https://credo.js.org/guides/getting-started/set-up/indy-sdk/linuxweekly0.5https://credo.js.org/guides/getting-started/set-up/indy-sdk/macos-armweekly0.5https://credo.js.org/guides/getting-started/set-up/indy-sdk/macos-intelweekly0.5https://credo.js.org/guides/getting-started/set-up/indy-sdk/react-nativeweekly0.5https://credo.js.org/guides/getting-started/set-up/indy-sdk/windowsweekly0.5https://credo.js.org/guides/getting-started/set-up/indy-vdrweekly0.5https://credo.js.org/guides/tutorialsweekly0.5https://credo.js.org/guides/tutorials/agent-configweekly0.5https://credo.js.org/guides/tutorials/agent-config/loggingweekly0.5https://credo.js.org/guides/tutorials/cheqdweekly0.5https://credo.js.org/guides/tutorials/create-a-connectionweekly0.5https://credo.js.org/guides/tutorials/indy-sdk-postgres-database-nodejsweekly0.5https://credo.js.org/guides/tutorials/indy-sdk-postgres-database-nodejs/linuxweekly0.5https://credo.js.org/guides/tutorials/indy-sdk-postgres-database-nodejs/macosweekly0.5https://credo.js.org/guides/tutorials/indy-sdk-postgres-database-nodejs/windowsweekly0.5https://credo.js.org/guides/tutorials/issue-a-credentialweekly0.5https://credo.js.org/guides/tutorials/mediationweekly0.5https://credo.js.org/guides/tutorials/registering-schema-and-credential-definitionweekly0.5https://credo.js.org/guides/updatingweekly0.5https://credo.js.org/guides/updating/update-assistantweekly0.5https://credo.js.org/guides/updating/update-indy-sdk-to-askarweekly0.5https://credo.js.org/guides/updating/versions/0.1-to-0.2weekly0.5https://credo.js.org/guides/updating/versions/0.2-to-0.3weekly0.5https://credo.js.org/guides/updating/versions/0.3-to-0.4weekly0.5https://credo.js.org/weekly0.5 \ No newline at end of file +https://credo.js.org/markdown-pageweekly0.5https://credo.js.org/guides/0.3weekly0.5https://credo.js.org/guides/0.3/conceptsweekly0.5https://credo.js.org/guides/0.3/concepts/agentsweekly0.5https://credo.js.org/guides/0.3/concepts/did-and-didcommweekly0.5https://credo.js.org/guides/0.3/concepts/platform-and-environmentweekly0.5https://credo.js.org/guides/0.3/ecosystemweekly0.5https://credo.js.org/guides/0.3/extensionsweekly0.5https://credo.js.org/guides/0.3/extensions/push-notificationsweekly0.5https://credo.js.org/guides/0.3/extensions/push-notifications/setupweekly0.5https://credo.js.org/guides/0.3/extensions/react-hooksweekly0.5https://credo.js.org/guides/0.3/extensions/react-hooks/setupweekly0.5https://credo.js.org/guides/0.3/extensions/redux-storeweekly0.5https://credo.js.org/guides/0.3/extensions/redux-store/setupweekly0.5https://credo.js.org/guides/0.3/extensions/restweekly0.5https://credo.js.org/guides/0.3/extensions/rest/setupweekly0.5https://credo.js.org/guides/0.3/getting-startedweekly0.5https://credo.js.org/guides/0.3/getting-started/installationweekly0.5https://credo.js.org/guides/0.3/getting-started/installation/nodejsweekly0.5https://credo.js.org/guides/0.3/getting-started/installation/nodejs/apple-armweekly0.5https://credo.js.org/guides/0.3/getting-started/installation/nodejs/apple-intelweekly0.5https://credo.js.org/guides/0.3/getting-started/installation/nodejs/linuxweekly0.5https://credo.js.org/guides/0.3/getting-started/installation/nodejs/windowsweekly0.5https://credo.js.org/guides/0.3/getting-started/installation/react-nativeweekly0.5https://credo.js.org/guides/0.3/getting-started/installation/react-native/androidweekly0.5https://credo.js.org/guides/0.3/getting-started/installation/react-native/iosweekly0.5https://credo.js.org/guides/0.3/getting-started/prerequisitesweekly0.5https://credo.js.org/guides/0.3/getting-started/set-upweekly0.5https://credo.js.org/guides/0.3/tutorialsweekly0.5https://credo.js.org/guides/0.3/tutorials/agent-configweekly0.5https://credo.js.org/guides/0.3/tutorials/agent-config/loggingweekly0.5https://credo.js.org/guides/0.3/tutorials/create-a-connectionweekly0.5https://credo.js.org/guides/0.3/tutorials/issue-a-credentialweekly0.5https://credo.js.org/guides/0.3/tutorials/postgres-database-nodejsweekly0.5https://credo.js.org/guides/0.3/tutorials/postgres-database-nodejs/linuxweekly0.5https://credo.js.org/guides/0.3/tutorials/postgres-database-nodejs/macosweekly0.5https://credo.js.org/guides/0.3/tutorials/postgres-database-nodejs/windowsweekly0.5https://credo.js.org/guides/0.3/updatingweekly0.5https://credo.js.org/guides/0.3/updating/update-assistantweekly0.5https://credo.js.org/guides/0.3/updating/versions/0.1-to-0.2weekly0.5https://credo.js.org/guides/0.3/updating/versions/0.2-to-0.3weekly0.5https://credo.js.org/guides/0.5weekly0.5https://credo.js.org/guides/0.5/conceptsweekly0.5https://credo.js.org/guides/0.5/concepts/agentsweekly0.5https://credo.js.org/guides/0.5/concepts/did-and-didcommweekly0.5https://credo.js.org/guides/0.5/concepts/platform-and-environmentweekly0.5https://credo.js.org/guides/0.5/ecosystemweekly0.5https://credo.js.org/guides/0.5/extensionsweekly0.5https://credo.js.org/guides/0.5/extensions/push-notificationsweekly0.5https://credo.js.org/guides/0.5/extensions/react-hooksweekly0.5https://credo.js.org/guides/0.5/extensions/redux-storeweekly0.5https://credo.js.org/guides/0.5/extensions/restweekly0.5https://credo.js.org/guides/0.5/featuresweekly0.5https://credo.js.org/guides/0.5/features/ariesweekly0.5https://credo.js.org/guides/0.5/features/credentialsweekly0.5https://credo.js.org/guides/0.5/features/didsweekly0.5https://credo.js.org/guides/0.5/features/openid4vcweekly0.5https://credo.js.org/guides/0.5/getting-startedweekly0.5https://credo.js.org/guides/0.5/getting-started/prerequisitesweekly0.5https://credo.js.org/guides/0.5/getting-started/set-upweekly0.5https://credo.js.org/guides/0.5/getting-started/set-up/anoncredsweekly0.5https://credo.js.org/guides/0.5/getting-started/set-up/aries-askarweekly0.5https://credo.js.org/guides/0.5/getting-started/set-up/cheqdweekly0.5https://credo.js.org/guides/0.5/getting-started/set-up/indy-vdrweekly0.5https://credo.js.org/guides/0.5/tutorialsweekly0.5https://credo.js.org/guides/0.5/tutorials/agent-configweekly0.5https://credo.js.org/guides/0.5/tutorials/agent-config/loggingweekly0.5https://credo.js.org/guides/0.5/tutorials/cheqdweekly0.5https://credo.js.org/guides/0.5/tutorials/create-a-connectionweekly0.5https://credo.js.org/guides/0.5/tutorials/issue-a-credentialweekly0.5https://credo.js.org/guides/0.5/tutorials/mediationweekly0.5https://credo.js.org/guides/0.5/tutorials/registering-schema-and-credential-definitionweekly0.5https://credo.js.org/guides/0.5/updatingweekly0.5https://credo.js.org/guides/0.5/updating/update-assistantweekly0.5https://credo.js.org/guides/0.5/updating/update-indy-sdk-to-askarweekly0.5https://credo.js.org/guides/0.5/updating/versions/0.1-to-0.2weekly0.5https://credo.js.org/guides/0.5/updating/versions/0.2-to-0.3weekly0.5https://credo.js.org/guides/0.5/updating/versions/0.3-to-0.4weekly0.5https://credo.js.org/guidesweekly0.5https://credo.js.org/guides/conceptsweekly0.5https://credo.js.org/guides/concepts/agentsweekly0.5https://credo.js.org/guides/concepts/did-and-didcommweekly0.5https://credo.js.org/guides/concepts/platform-and-environmentweekly0.5https://credo.js.org/guides/ecosystemweekly0.5https://credo.js.org/guides/extensionsweekly0.5https://credo.js.org/guides/extensions/push-notificationsweekly0.5https://credo.js.org/guides/extensions/react-hooksweekly0.5https://credo.js.org/guides/extensions/redux-storeweekly0.5https://credo.js.org/guides/extensions/restweekly0.5https://credo.js.org/guides/getting-startedweekly0.5https://credo.js.org/guides/getting-started/prerequisitesweekly0.5https://credo.js.org/guides/getting-started/set-upweekly0.5https://credo.js.org/guides/getting-started/set-up/anoncreds-rsweekly0.5https://credo.js.org/guides/getting-started/set-up/aries-askarweekly0.5https://credo.js.org/guides/getting-started/set-up/cheqdweekly0.5https://credo.js.org/guides/getting-started/set-up/indy-sdkweekly0.5https://credo.js.org/guides/getting-started/set-up/indy-sdk/linuxweekly0.5https://credo.js.org/guides/getting-started/set-up/indy-sdk/macos-armweekly0.5https://credo.js.org/guides/getting-started/set-up/indy-sdk/macos-intelweekly0.5https://credo.js.org/guides/getting-started/set-up/indy-sdk/react-nativeweekly0.5https://credo.js.org/guides/getting-started/set-up/indy-sdk/windowsweekly0.5https://credo.js.org/guides/getting-started/set-up/indy-vdrweekly0.5https://credo.js.org/guides/tutorialsweekly0.5https://credo.js.org/guides/tutorials/agent-configweekly0.5https://credo.js.org/guides/tutorials/agent-config/loggingweekly0.5https://credo.js.org/guides/tutorials/cheqdweekly0.5https://credo.js.org/guides/tutorials/create-a-connectionweekly0.5https://credo.js.org/guides/tutorials/indy-sdk-postgres-database-nodejsweekly0.5https://credo.js.org/guides/tutorials/indy-sdk-postgres-database-nodejs/linuxweekly0.5https://credo.js.org/guides/tutorials/indy-sdk-postgres-database-nodejs/macosweekly0.5https://credo.js.org/guides/tutorials/indy-sdk-postgres-database-nodejs/windowsweekly0.5https://credo.js.org/guides/tutorials/issue-a-credentialweekly0.5https://credo.js.org/guides/tutorials/mediationweekly0.5https://credo.js.org/guides/tutorials/registering-schema-and-credential-definitionweekly0.5https://credo.js.org/guides/updatingweekly0.5https://credo.js.org/guides/updating/update-assistantweekly0.5https://credo.js.org/guides/updating/update-indy-sdk-to-askarweekly0.5https://credo.js.org/guides/updating/versions/0.1-to-0.2weekly0.5https://credo.js.org/guides/updating/versions/0.2-to-0.3weekly0.5https://credo.js.org/guides/updating/versions/0.3-to-0.4weekly0.5https://credo.js.org/weekly0.5 \ No newline at end of file